Запуск xmobar с сочетанием клавиш после запуска xmonad

Я пытаюсь настроить xmonad снова без каких-либо знаний Haskell...

Я хотел бы найти способ запустить xmonad без какой-либо строки состояния в начале. Я хочу избежать запуска xmobar в фоновом режиме и разрядить аккумулятор. Затем при нажатии meta-b должен запускаться xmobar. Кто-нибудь знает определение сочетания клавиш для файла конфигурации xmonad, который запускает xmobar и соединяет каналы?

  ...  
  xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs"
  xmonad $ defaults  {
      logHook = dynamicLogWithPP $ xmobarPP {
            ppOutput = hPutStrLn xmproc
          , ppTitle = xmobarColor xmobarTitleColor "" . shorten 100
          , ppCurrent = xmobarColor xmobarCurrentWorkspaceColor ""
          , ppSep = "   "
      } 
  ...

это стандартный, но как я могу определить его как сочетание клавиш? При связывании простого "spawn xmobar" он не запускается (при запуске xmobar в оболочке появляется строка состояния). Однако у простого spawn xmobar, вероятно, не будет текста из xmonad, показывающего подключенные рабочие пространства.

1 ответ

Начиная с xmonad(-contrib) 0.9, в XMonad.Hooks.DynamicLog появилась новая функция statusBar. Это позволяет вам использовать вашу собственную конфигурацию для:

  • Команда, используемая для выполнения панели
  • ПП, определяющий, что записывается на панель
  • Связывание клавиш для переключения зазора для бара

Ниже приведен пример того, как его использовать:

~ /.Xmonad/xmonad.hs

-- Imports.
import XMonad
import XMonad.Hooks.DynamicLog

-- The main function.
main = xmonad =<< statusBar myBar myPP toggleStrutsKey myConfig

-- Command to launch the bar.
myBar = "xmobar"

-- Custom PP, configure it as you like. It determines what is being written to the bar.
myPP = xmobarPP { ppCurrent = xmobarColor "#429942" "" . wrap "<" ">" }

-- Key binding to toggle the gap for the bar.
toggleStrutsKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b)

-- Main configuration, override the defaults to your liking.
myConfig = defaultConfig { modMask = mod4Mask }

Для получения дополнительной информации см. Следующую ссылку: Источник

Другие вопросы по тегам