Jika Anda memiliki skrip shell untuk memulai XMobar maka Anda 'salah melakukannya'. Anda harus menjalankan xmobar menggunakan fungsi Haskell yang benar di file sumber konfigurasi xmonad.hs. Lihatlah fungsi utama konfigurasi saya:
-- 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
Garis yang menonjol adalah yang ini:
xmonad =<< xmobar myBaseConfig
Itu menjalankan xmobar sebagaimana mestinya dijalankan, bahkan ketika Anda memuat ulang xmonad. Anda mendapatkan fungsi 'xmobar' dari pernyataan:
import XMonad.Hooks.DynamicLog (xmobar)
Yang pada gilirannya berasal dari paket xmonad-contrib .
Jadi Anda tahu, sebagian besar hal yang ingin Anda lakukan dengan XMonad sudah merupakan masalah yang diselesaikan, Anda hanya perlu tahu ke mana harus mencari. Pada dasarnya, tinggalkan saja skrip Anda dan gunakan itu. Saya harap ini membantu.
spawnPipe
kode di situs web XMonad, benar-benar tidak mudah untuk mengetahui ke mana harus mencari! Tetapi pada akhirnya, saya lebih suka teknik yang saya gunakan karena lebih bersih, menggunakanDynamicLog
tidak membunuh proses lama dalam tes saya. Saya sangat suka XMonad, tetapi Haskell bukan bahasa konfigurasi yang baik.spawnPipe
akan melakukan proses di utas baru. Jika Anda ingin membuatspawnPipe
proses anak sebagai gantinya (yang ditutup ketika proses utama melakukannya), saya khawatir Anda harus menulisspawnPipe
fungsi Anda sendiri .