0

複数の物理画面を備えたセットアップで XMonad を使用しています。

ワークスペースが「現在」/「アクティブ」であるかどうかに関係なく、各物理画面 にその特定の画面に表示されているワークスペースxmobarを示すインスタンスが必要です。

例えば

+--------------+  +--------------+                                                      
|              |  |              |                                                      
|              |  |              |                                                      
|              |  |              |                                                      
|              |  |              |                                                      
+--------------+  +--------------+                                                      
|Workspace 3   |  |Workspace 5   |                                                      
+--------------+  +--------------+                                                      

私の現在(わかりやすくするために最小化)xmonad.hsは以下のとおりです。

import XMonad                                                                           
import XMonad.Layout.NoBorders                                                          
import XMonad.Hooks.ManageDocks                                                         
import XMonad.Hooks.DynamicLog                                                          
import XMonad.Util.Run                                                                  
import XMonad.Layout.IndependentScreens                                                 
                                                                                        
main = do                                                                               
    n <- countScreens                                                                   
    xmprocs <- mapM (\i -> spawnPipe $ "xmobar" ++ " -x " ++ show i) [0..n-1]           
                                                                                        
    xmonad $ docks def                                                                  
        { layoutHook = avoidStruts $ smartBorders $ layoutHook defaultConfig            
        , logHook = mapM_ (\xmobarPipe -> dynamicLogWithPP $ def                        
            { ppOutput = hPutStrLn xmobarPipe                                           
            , ppCurrent = \s -> s                                                       
            , ppVisible = \s -> ""                                                      
            , ppHidden = \s -> ""                                                       
            , ppLayout = \s -> ""                                                       
            , ppTitle = \s -> ""                                                        
            }) xmprocs                                                                  
        }                                                                               

つまり、各画面に 1 つずつ、xmobar の 2 つのインスタンスを生成することができました。ただし、両方の画面の xmobar に現在アクティブなワークスペース (複数の画面にわたって) を表示するだけです。たとえば、次のように表示されます。

+--------------+  +--------------+                                                      
|              |  |              |                                                      
|              |  |              |                                                      
|              |  |              |                                                      
|              |  |              |                                                      
+--------------+  +--------------+                                                      
|Workspace 3   |  |Workspace 3   |                                                      
+--------------+  +--------------+                                                      

では、実際に欲しいものをどのように達成するのでしょうか?

ここの構成https://github.com/nwf/xconfig/blob/208e6d6ce48fba45ec30bb1df1389f9ff2263edd/xmonad/lib/XMonad/Actions/XMobars.hs#L163には答えのヒントが含まれていると思います が、私は Haskell に十分に精通していません。 その例から、私が使用できる最小限のものに戻ります。

4

1 に答える 1