Xmobar

提供: ArchWiki
2016年1月4日 (月) 19:16時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

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 プラグインを使用します。出力テンプレートには最低でも一つコマンドを指定する必要があるので注意してください。オプションの詳しい説明は以下のセクションを参照。

設定

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"
  • fgColor - フォントの色。black と色の名前を使うことも #000000 と16進数で指定することもできます。
  • bgColor - バーの色。red と色の名前を使うことも #ff0000 と16進数で指定することもできます。
  • position - バーの位置。使用できるキーワード: Top/Bottom, TopW/BottomW, Static
    • Top/Bottom - 画面の上部と下部。
    • TopW/BottomW - 画面の上部と下部で固定幅を使用。TopW/BottomW には2つの引数を指定:
      • Alignment: 左 (Left), 中央 (Center), 右 (Right) に揃える。
      • Width: バーの横幅。パーセンテージで指定。
    • Static - 画面上の固定位置と固定幅。Static には4つの引数を指定:
      • xpos: 左上からの縦の位置 (ピクセル)。
      • ypos: 左上からの横の位置 (ピクセル)。
      • width: バーの横幅 (ピクセル)。
      • height: バーの高さ (ピクセル)。
例 - 画面下部の中央に、画面全体の 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 - 出力テンプレートのテキストを整列する文字列。最初の文字より前のテキストは左寄せになり、文字列の間のテキストは中央、最後の文字より右のテキストは右に寄せられます。デフォルトの文字列は "}{"
  • template - 出力テンプレートは表示するテキストやコマンドを含んだ文字列です。%command% のエイリアスを記述して、テキストを書き出したり色のタグでテキストの色を設定できます。例:
    template = "%StdinReader%}{%cpu% %memory% <fc=#ffaaff>battery:</fc> %battery% %date%"
  • commands - 実行するプログラムのオプションを設定。コマンドはカンマで区切って、任意でオプションを指定できます。
例 - Memory プラグイン (テンプレートを指定) と Swap プラグイン (デフォルト引数) を実行。どちらも10秒ごとに更新:
commands = [Run Memory ["-t","Mem: <usedratio>%"] 10, Run Swap [] 10]

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

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

Tips and tricks

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 の統合

(haskell-libmpdAUR と) xmobar-gitAUR をインストールしている場合、ステータスバーに現在再生している曲を表示するプラグインがあります。再生中のトラックのアーティストと曲名を表示するプラグインを追加するには、以下の行を ~/.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

参照