web-dev-qa-db-fra.com

L'utilisation de wmctrl avec zenity Prompt provoque une erreur de segmentation budgie-wm

J'essaie d'écrire un script bash qui bascule entre les espaces de travail avec des invites de dialogue en cours de route. Je suis sous Ubuntu 17.04 avec Budgie remix.

Lorsque vous utilisez wmctrl ou zenity séparément, ils fonctionnent correctement. Rassemblez-les cependant et le gestionnaire de fenêtres de perruche se bloque avec une erreur de segmentation.

Cela se produit avec wmctrl -s 0 et xdotool set_desktop 0. Ils fonctionnent bien seuls mais pas en combinaison avec zenity.

Voici mon code (induit une erreur de segmentation)

#!/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

Exemple de code de travail lorsque la commande wmctrl est utilisée seule

#!/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

Exemple de code de travail lorsque la commande zenity est utilisée seule

#!/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

Voici ce que j'ai trouvé dans 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

Quelle est la cause de l'erreur de segmentation lorsque zenity est utilisé pour déclencher le commutateur d'espace de travail alors que les deux composants fonctionnent correctement séparément?

3
Tom
0
Tom