xmobar

提供: ArchWiki
2021年4月24日 (土) 01:02時点におけるShota (トーク | 投稿記録)による版 (英語版 662632 への追従)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

xmobarHaskell で書かれた、軽量なテキストベースのステータスバーです。本来は Xmonad と一緒に使用するように作られていますが、他のウィンドウマネージャでも利用できます。xmobar は Haskell で書かれている一方、インストールしたり使ったりするのに Haskell 言語を学ぶ必要はありません。

インストール

公式リポジトリから xmobarインストールしてください。以下の亜種も利用できます:

実行

~/.xmobarrc に保存されている設定ファイルを使うには:

$ xmobar &

もしくは、設定ファイルのパスを指定することもできます:

$ xmobar /path/to/config &

以下はコマンドラインオプションを使って xmobar を設定する方法の例です:

$ xmobar -B white -a right -F blue -t '%LIPB%' -c '[Run Weather "LIPB" [] 36000]' &

上記のコマンドで実行される xmobar は右揃えで、白地に青字、そして Weather プラグインを使用します。出力テンプレートには最低でも一つコマンドを指定する必要があるので注意してください。オプションの詳しい説明は以下のセクションを参照してください。

また、フラグの -x number を用いて xmobar を実行する x ディスプレイを指定できます。このフラグは設定オプションの pickBroadestallDesktops を上書きして実行します。

設定

xmobar の設定は基本的に ~/.xmobarrc で定義するか、xmobar を実行するときにコマンドラインオプションを使って指定します。指定されたコマンドラインオプションは設定ファイルの同一の設定を上書きします。設定ファイルを編集しないで新しい設定をテストしたいときにコマンドラインオプションは有用です。

以下は ~/.xmobarrc のサンプルファイルです。オプションごとに説明が付いています。各オプションにはそれぞれ対応するコマンドラインオプションが存在します。

ノート: 設定ファイルは Haskell のソースコード (のサブセット) ではになっています。そのためコメント行を -- で示します。
Config { 

   -- appearance
     font =         "xft:Bitstream Vera Sans Mono:size=9:bold:antialias=true"
   , bgColor =      "black"
   , fgColor =      "#646464"
   , position =     Top
   , border =       BottomB
   , borderColor =  "#646464"

   -- layout
   , sepChar =  "%"   -- delineator between plugin names and straight text
   , alignSep = "}{"  -- separator between left-right alignment
   , template = "%battery% | %multicpu% | %coretemp% | %memory% | %dynnetwork% }{ %RJTT% | %date% || %kbd% "

   -- general behavior
   , lowerOnStart =     True    -- send to bottom of window stack on start
   , hideOnStart =      False   -- start with window unmapped (hidden)
   , allDesktops =      True    -- show on all desktops
   , overrideRedirect = True    -- set the Override Redirect flag (Xlib)
   , pickBroadest =     False   -- choose widest display (multi-monitor)
   , persistent =       True    -- enable/disable hiding (True = disabled)

   -- plugins
   --   Numbers can be automatically colored according to their value. xmobar
   --   decides color based on a three-tier/two-cutoff system, controlled by
   --   command options:
   --     --Low sets the low cutoff
   --     --High sets the high cutoff
   --
   --     --low sets the color below --Low cutoff
   --     --normal sets the color between --Low and --High cutoffs
   --     --High sets the color above --High cutoff
   --
   --   The --template option controls how the plugin is displayed. Text
   --   color can be set by enclosing in <fc></fc> tags. For more details
   --   see http://projects.haskell.org/xmobar/#system-monitor-plugins.
   , commands = 

        -- weather monitor
        [ Run Weather "RJTT" [ "--template", "<skyCondition> | <fc=#4682B4><tempC></fc>°C | <fc=#4682B4><rh></fc>% | <fc=#4682B4><pressure></fc>hPa"
                             ] 36000

        -- network activity monitor (dynamic interface resolution)
        , Run DynNetwork     [ "--template" , "<dev>: <tx>kB/s|<rx>kB/s"
                             , "--Low"      , "1000"       -- units: kB/s
                             , "--High"     , "5000"       -- units: kB/s
                             , "--low"      , "darkgreen"
                             , "--normal"   , "darkorange"
                             , "--high"     , "darkred"
                             ] 10

        -- cpu activity monitor
        , Run MultiCpu       [ "--template" , "Cpu: <total0>%|<total1>%"
                             , "--Low"      , "50"         -- units: %
                             , "--High"     , "85"         -- units: %
                             , "--low"      , "darkgreen"
                             , "--normal"   , "darkorange"
                             , "--high"     , "darkred"
                             ] 10

        -- cpu core temperature monitor
        , Run CoreTemp       [ "--template" , "Temp: <core0>°C|<core1>°C"
                             , "--Low"      , "70"        -- units: °C
                             , "--High"     , "80"        -- units: °C
                             , "--low"      , "darkgreen"
                             , "--normal"   , "darkorange"
                             , "--high"     , "darkred"
                             ] 50
                          
        -- memory usage monitor
        , Run Memory         [ "--template" ,"Mem: <usedratio>%"
                             , "--Low"      , "20"        -- units: %
                             , "--High"     , "90"        -- units: %
                             , "--low"      , "darkgreen"
                             , "--normal"   , "darkorange"
                             , "--high"     , "darkred"
                             ] 10

        -- battery monitor
        , Run Battery        [ "--template" , "Batt: <acstatus>"
                             , "--Low"      , "10"        -- units: %
                             , "--High"     , "80"        -- units: %
                             , "--low"      , "darkred"
                             , "--normal"   , "darkorange"
                             , "--high"     , "darkgreen"

                             , "--" -- battery specific options
                                       -- discharging status
                                       , "-o"	, "<left>% (<timeleft>)"
                                       -- AC "on" status
                                       , "-O"	, "<fc=#dAA520>Charging</fc>"
                                       -- charged status
                                       , "-i"	, "<fc=#006000>Charged</fc>"
                             ] 50

        -- time and date indicator 
        --   (%F = y-m-d date, %a = day of week, %T = h:m:s time)
        , Run Date           "<fc=#ABABAB>%F (%a) %T</fc>" "date" 10

        -- keyboard layout indicator
        , Run Kbd            [ ("us(dvorak)" , "<fc=#00008B>DV</fc>")
                             , ("us"         , "<fc=#8B0000>US</fc>")
                             ]
        ]
   }
  • font - 使用するフォントの名前。XFT フォントが有効になっている場合、XFT フォントの名前には前に xft: を付けます。例:
    font = "xft:Bitstream Vera Sans Mono:size=8:antialias=true"
  • additionalFonts - <fn=n>タグで使用するフォントのリスト。例:
    additionalFonts = [ "xft:Bitstream Vera Sans Mono:size=8:antialias=true", "xft:Source Code Pro:size=10:regular:antialias=true"]
  • fgColor - フォントの色。black と色の名前を使うことも #000000 と16進数で指定することもできます。
  • bgColor - バーの色。red と色の名前を使うことも #ff0000 と16進数で指定することもできます。
  • position - バーの位置。使用できるキーワード: Top/Bottom, TopW/BottomW, Static, OnScreen
    • Top/Bottom - 画面の上部と下部。
    • TopW/BottomW - 画面の上部と下部で固定幅を使用。TopW/BottomW には2つの引数を指定:
      • Alignment: 左 (Left), 中央 (Center), 右 (Right) に揃える。
      • Width: バーの横幅。パーセンテージで指定。
    • Static - 画面上の固定位置と固定幅。Static には4つの引数を指定:
      • xpos: 左上からの縦の位置 (ピクセル)。
      • ypos: 左上からの横の位置 (ピクセル)。
      • width: バーの横幅 (ピクセル)。
      • height: バーの高さ (ピクセル)。
    • OnScreen - バーを表示するスクリーンを指定。OnScreen には2つの引数を指定:
      • screenNr: バーを表示するスクリーンのインデックス。
      • position: バーの位置。上に挙げられたキーワードとそれらの引数を指定します。
例 - 画面下部の中央に、画面全体の 75% の横幅で表示:
position = BottomW C 75
例 - 画面上部の左側に、横幅1024ピクセル、高さ15ピクセルで表示:
position = Static { xpos = 0 , ypos = 0, width = 1024, height = 15 }
  • border - ボーダーの位置と外観。使用できるキーワード: TopB, TopBM, BottomB, BottomBM, FullB, FullBMNoBorder (デフォルト)。
    • TopB/BottomB - バーの上下。
    • FullB - バーの全周。
    • TopBM/BottomBM/FullBM - バーの縁とボーダーの表示を何ピクセル離すか指定できます。どのオプションも数字を一つ指定。
例 - バーの縁から3ピクセル離したところにボーターを表示:
border: BottomBM 3
  • sepChar - 出力テンプレートのコマンドを示すために使用する文字。デフォルトの文字は "%"
  • alignSep - 出力テンプレートのテキストを整列する文字列。最初の文字より前のテキストは左寄せになり、文字列の間のテキストは中央、最後の文字より右のテキストは右に寄せられます。デフォルトの文字列は "}{"
  • iconRoot - アイコンが保存されているルートフォルダ。
  • template - 出力テンプレートは表示するテキストやコマンドを含んだ文字列です。%command% のエイリアスを記述して、テキストを書き出したり色のタグでテキストの色を設定できます。タグはカスタムテンプレートのRun commandでも設定できます。テンプレートタグは次を含みます:
    • %command% - コマンドの出力をプリント.
    • <fc=#f0f0f0,#101010>string</fc> - フォアグラウンドに #f0f0f0, バックグラウンドに #101010 を使用して string をプリントします (どちらかを省略することも可能です)。
    • <fn=1>string</fn> - additionalFonts のフォントリストにあるn 番目(この場合1番目)のフォントで string をプリント。n=0 がデフォルトのフォントを示します。
    • <icon=/path/to/icon.xbm/> - パスが示す XBM や XPM アイコンをプリント。もし /, ./ や ../ の相対パスから始まる場合、icronRoot ++ path/to/icon のように iconRoot から探します。XBM アイコンが独自あるいはデフォルトのフォアグラウンドやバックグラウンドを使うのに対して、透明な XPM アイコンは fc タグを無視してデフォルトの bgcolor を使います。xmobar はサイズに関わらずアイコンを 20px の高さに揃えて bgcolorfgcolor でプリントします。横幅には制限はありません。
    • <action=`command` button=1>string</action> - string がボタン1 (左マウスボタン)でクリックされたときにコマンド `command` を実行します。
    • <raw=len:string/> - 長さ lenstring を出力します。

例:

template = "%StdinReader%}{%cpu% %memory% <fc=#ffaaff>battery:</fc> %battery% %date%"
  • commands - 実行するプログラムのオプションを設定。コマンドはカンマで区切って、任意でオプションを指定できます。
例 - Memory プラグイン (テンプレートを指定) と Swap プラグイン (デフォルト引数) を実行。どちらも1秒ごとに更新:
commands = [Run Memory ["-t","Mem: <usedratio>%"] 10, Run Swap [] 10]

最後に、バーの挙動を制御するオプション - どのオプションも TrueFalse の値で設定:

  • lowerOnStart - バーを他のウィンドウの下に表示するかどうか。
  • hideOnStart - 起動時にバーを非表示にするかどうか。
  • allDesktops - 全てのデスクトップでバーを表示するかどうか。
  • overrideRedirect - ウィンドウマネージャからバーを通常ウィンドウのように扱わせないようにするオプション。
  • pickBroadest - マルチモニターの場合に、一番広いモニターにバーを表示する。
  • persistent - バーの 'hidden' の状態にかかわらず、常時バーを表示するかどうか。

ヒントとテクニック

xmobar では様々なプラグインを使用することができます。いくつか例をあげると、ディスクの使用量、RAM や CPU、バッテリーの状態、天気予報、ネットワークの活動状況を表示するプラグインがあります。各プラグインの詳しい説明や、依存パッケージ、あるいは設定方法などはプロジェクトの ウェブサイト を見てください。

GMail の統合

xmobar-gmail-darcsxmobar-gmail をインストールしている場合、以下のように .xmobarrc を設定できます。commands リストに GMail プラグインを追加してください:

, Run GMail "gmail.username" "GmailPassword" ["-t", "Mail: <count>"] 3000

そしてコマンドを template に追加:

, template = "... %gmail.username% ..."

MPD の統合

ステータスバーに現在再生している曲を表示するプラグインがあります。再生中のトラックのアーティストと曲名を表示するプラグインを追加するには、以下の行を ~/.xmobarrc の commands リストに追加してください:

, Run MPD ["-t", "<state>: <artist> - <track>"] 10

そして、以下のように template のどこかにプラグインを記述してください:

, template = "%StdinReader% }{ ... %mpd% ..."

Conky-Cli の統合

conky-cliAUR の機能を利用して、ディスクの使用量や top やシステムメッセージなどの情報を conky からテキストファイルにパイプして、そこから情報を読み取ることができます。以下は xmobar を使ってそれを行う bash スクリプトです:

~/.xmonad/conkyscript
#!/bin/bash
conky -c ~/.conkyclirc -i1 -q > conkystat &
sleep 4
killall -q conky
cat conkystat
rm conkystat

~/.xmobarrc の commands セクションに以下の行を追加:

, Run Com ".xmonad/conkyscript" ["&"] "conky" 300

これでスクリプトが30秒ごとに実行されます。

そして以下を .xinitrcexec xmonad エントリの前に追加してください:

.xmonad/conkyscript &
sleep 6 && xmobar &

最後に %conky% を template セクションに追加します。

シンプルな conky-cli の統合

.xmobarrc に以下のコードを記述してください:

Run Com "conky" ["-q", "-i", "1"] "conky" 600

トラブルシューティング

フォーカス中のウィンドウ以外で xmonad が反応しない

フォーカスしているウィンドウでタイピングができるが、xmonadでクリックやホットキーが反応しない場合、読み込みできないハンドルへの logHook のパイプによるものの可能性があります。

これを解決するためにはコマンドセクションにそれぞれのコマンドを実行するとともに、%StdinReader%%UnsafeStdinReader%xmobar の template に追加してください。xmobar のインスタンスが複数ある場合には、パイプしている全てのバーで StdinReader があることを確認してください。そうでない場合はこれを追加するか、logHook から ppOutput からバーを削除してください。


参照