
Dies ist nur ein kleines Ärgernis, aber ich habe die XMonad-Konfigurationsdatei dazu gebracht, xmobar mit diesem Code zu laden:
xmproc <- spawnPipe "/use/bin/xmobar ~/.xmobarrc"
Es funktioniert gut, aber es erzeugt jedes Mal, wenn XMonad neu geladen wird, einen neuen xmobar-Prozess. Ich frage mich, ob es eine einfache Möglichkeit gibt, den alten zu beenden?
aktualisieren: Wie von Entropo vorgeschlagen, habe ich ein Bash-Skript wie dieses erstellt:
#!/bin/bash
for PID in `pgrep xmobar`; do
kill ${PID} > /dev/null &
done
/usr/bin/xmobar &
und rufen Sie dieses Skript aus der XMonad-Konfigurationsdatei auf.
Antwort1
Nicht xmonad-spezifisch, aber Sie können xmobar über ein Shell-Skript starten, das nach einem vorhandenen xmobar-Prozess sucht. Siehe z. B.http://bash.cyberciti.biz/web-server/restart-apache2-httpd-shell-script/
Antwort2
Wenn Sie ein Shell-Skript zum Starten von XMobar haben, dann machen Sie es „falsch“. Sie sollten xmobar mit den richtigen Haskell-Funktionen in der Konfigurationsquelldatei xmonad.hs starten. Sehen Sie sich die Hauptfunktion meiner Konfiguration an:
-- put it all together
main = do
nScreens <- countScreens -- just in case you are on a laptop like me count the screens so that you can go
xmonad =<< xmobar myBaseConfig
{ modMask = myModMask
, workspaces = withScreens nScreens myWorkspaces
, layoutHook = myLayoutHook nScreens
, manageHook = myManageHook
, borderWidth = myBorderWidth
, normalBorderColor = myNormalBorderColor
, focusedBorderColor = myFocusedBorderColor
, keys = myKeys
, mouseBindings = myMouseBindings
, logHook = myLogHook
}
where
myLogHook = dynamicLogXinerama
myBaseConfig = gnomeConfig
Die hervorstechendste Zeile ist diese:
xmonad =<< xmobar myBaseConfig
Dadurch wird xmobar wie vorgesehen ausgeführt, auch wenn Sie xmonad neu laden. Sie erhalten die Funktion „xmobar“ aus der Anweisung:
import XMonad.Hooks.DynamicLog (xmobar)
Das wiederum kommt von derxmonad-contrib-Paket.
Sie sehen also, dass die meisten Dinge, die Sie mit XMonad tun möchten, bereits ein gelöstes Problem sind. Sie müssen nur wissen, wo Sie suchen müssen. Im Grunde können Sie Ihr Skript einfach wegwerfen und stattdessen das verwenden. Ich hoffe, das hilft.