Führen Sie die wmctrl-Befehle in xinitrc aus

563
pmr

Ich verwende XMonad, das für die Annahme von Befehlen konfiguriert ist, wmctrlund möchte einige Anwendungen starten xinitrcund in einen bestimmten Arbeitsbereich verschieben.

Diese Befehle funktionieren, wenn ich das über das Terminal verwende:

# Launch a terminal with ncmpcpp and move it to workspace 9 urxvt -e ncmpcpp && wmctrl -r ncmpcpp -t 9  

Aber wenn ich versuche, sie in meine zu stecken .xinitrc, funktionieren sie nicht mehr. Die Anwendungen werden gestartet, aber nicht auf den richtigen Bildschirm verschoben. Ich vermute, das liegt daran, dass die Aufrufe ausgeführt werden, bevor xmonad ausgeführt wurde.

xinitrc:

(urxvt -e ncmpcpp && wmctrl -r ncmpcpp -t 9) & exec xmonad 

Ich habe bereits versucht, eine Schlafperiode hinzuzufügen, aber dies hat auch nicht geholfen und ich möchte, dass diese Funktion zuverlässig funktioniert:

(urxvt -e ncmpcpp && sleep 5 && wmctrl -r ncmpcpp -t 9) & exec xmonad 
2

1 Antwort auf die Frage

2

Sie müssen xmonad ausführen, bevor Sie Terminals starten und versuchen, sie zu verschieben.

xmonad & (urxvt -e ncmpcpp && wmctrl -r ncmpcpp -t 9) 
Ist es nicht Zweck von 'exec', den aktuellen Prozess durch den von den Argumenten gestarteten Prozess zu ersetzen, und wie werden danach Befehle ausgeführt? pmr vor 10 Jahren 0
Das ist mein schlechtes, ich bin zu müde, um jetzt nachzudenken. vor 10 Jahren 0