Sto tentando di scrivere uno script bash che passa da un'area di lavoro ad alcune istruzioni di dialogo lungo la strada. Sto eseguendo Ubuntu 17.04 con il remix di Budgie.
Quando si usano wmctrl
o zenity
separatamente, entrambi funzionano bene. Mettili insieme comunque e budgie window manager si arresta in modo anomalo con un errore di segmentazione.
Questo succede usando entrambi wmctrl -s 0
e xdotool set_desktop 0
. Funzionano bene da soli ma non in combinazione con zenity
.
Ecco il mio codice (induce un errore di segmentazione)
#!/bin/bash
desktop=$(xdotool get_desktop) #Get current workspace id
if [ "${desktop}" -eq 0 ] #If workspace == 0
then
wmctrl -s 3 #Switch to workspace 3
firefox --new-window "http://www.reddit.com"
else
zenity --question --title "Switch Workspace?" --text "Are you sure you wish to return to previous workspace?"
if ! $? #If response Yes
then
wmctrl -s 0 #Switch back
else
notify-send "Operation Aborted" "User canceled workspace return."
fi
fi
Esempio di codice funzionante quando il wmctrl
comando viene utilizzato da solo
#!/bin/bash
desktop=$(xdotool get_desktop) #Get current workspace id
if [ "${desktop}" -eq 0 ] #If workspace == 0
then
wmctrl -s 3 #Switch to workspace 3
firefox --new-window "http://www.reddit.com"
else
wmctrl -s 0 #Switch back
fi
Esempio di codice funzionante quando il zenity
comando viene utilizzato da solo
#!/bin/bash
desktop=$(xdotool get_desktop) #Get current workspace id
if [ "${desktop}" -eq 0 ] #If workspace == 0
then
wmctrl -s 3 #Switch to workspace 3
firefox --new-window "http://www.reddit.com"
else
zenity --question --title "Switch Workspace?" --text "Are you sure you wish to return to previous workspace?"
if ! $? #If response Yes
then
notify-send "Switch Workspace" "Operation placeholder."
else
notify-send "Operation Aborted" "User canceled workspace return."
fi
fi
Ecco cosa ho trovato dentro journalctl
Dec 02 11:17:54 main budgie-wm.desktop[20079]: Window manager warning: Received a NET_CURRENT_DESKTOP message from a broken (outdated) client who sent a 0 timestamp
Dec 02 11:17:54 main kernel: budgie-wm[20079]: segfault at 18 ip 00007fa255e8dfc1 sp 00007fff13189710 error 4 in libmutter-0.so.0.0.0[7fa255df0000+131000]
Dec 02 11:17:55 main gnome-session-binary[19810]: WARNING: Application 'budgie-wm.desktop' killed by signal 11
Dec 02 11:17:55 main gnome-session[19810]: gnome-session-binary[19810]: WARNING: Application 'budgie-wm.desktop' killed by signal 11
Dec 02 11:17:55 main ckb.desktop[20137]: QXcbConnection: XCB error: 148 (Unknown), sequence: 423, resource id: 0, major code: 140 (Unknown), minor code: 20
Dec 02 11:17:56 main budgie-wm[21537]: invalid (NULL) pointer instance
Dec 02 11:17:56 main budgie-wm[21537]: g_signal_connect_object: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
Cosa causa l'errore di segmentazione quando zenity
viene utilizzato per attivare l'interruttore dell'area di lavoro, ma entrambi i componenti funzionano correttamente separatamente?
xdotool set_desktop 3
(o meglio 0
).
zenity
. Suggerisco di cercarlo su bugs.launchpad.net/ubuntu/+source/zenity e di presentare un nuovo bug se non è già lì.