「Xmonad」の版間の差分
1行目: | 1行目: | ||
+ | {{Lowercase title}} |
||
[[Category:タイル型ウィンドウマネージャ]] |
[[Category:タイル型ウィンドウマネージャ]] |
||
[[en:Xmonad]] |
[[en:Xmonad]] |
||
[[fr:Xmonad]] |
[[fr:Xmonad]] |
||
+ | [[ru:Xmonad]] |
||
− | [[tr:Xmonad_Pencere_Yöneticisi]] |
||
+ | [[tr:Xmonad Pencere Yöneticisi]] |
||
[[zh-CN:Xmonad]] |
[[zh-CN:Xmonad]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
20行目: | 22行目: | ||
==インストール== |
==インストール== |
||
− | {{Pkg|xmonad}} と {{Pkg|xmonad-contrib}} は[[公式リポジトリ]]から利用可能 |
+ | {{Pkg|xmonad}} と {{Pkg|xmonad-contrib}} (サードパーティ製のタイリングアルゴリズムや設定スクリプトなどが入っています) は[[公式リポジトリ]]から利用可能です。 |
+ | |||
+ | また、開発版の {{AUR|xmonad-git}} や {{AUR|xmonad-contrib-git}} をインストールすることもできます。 |
||
{{Note|[[ArchHaskell]] リポジトリを使うことを選んだ場合は、{{Pkg|xmonad}} の代わりに ''haskell-xmonad'' パッケージをインストールする必要があります (公式の community リポジトリにあるパッケージは依存パッケージが異なっています)。}} |
{{Note|[[ArchHaskell]] リポジトリを使うことを選んだ場合は、{{Pkg|xmonad}} の代わりに ''haskell-xmonad'' パッケージをインストールする必要があります (公式の community リポジトリにあるパッケージは依存パッケージが異なっています)。}} |
||
+ | ==Xmonad の起動== |
||
− | === 開発版 (xmonad-darcs) === |
||
+ | Xmonad を自動起動するには、起動スクリプトに {{Ic|xmonad}} コマンドを追加します (例えば、startx を使う場合 {{ic|~/.xinitrc}}、[[XDM]] ログインマネージャを使う場合 {{ic|~/.xsession}})。[[GDM]] や [[KDM]] を使う場合は、新しいセッションファイルを作成し、セッションメニューから xmonad を選択します。 |
||
− | |||
− | xmonad-darcs 開発版は [[Arch User Repository|AUR]] からインストールでき、[[公式リポジトリ]]に多少の依存パッケージがあります。以下の順番で[[インストール]]してください: |
||
− | |||
− | * {{AUR|xmonad-darcs}} -- コアのウィンドウマネージャ |
||
− | * {{AUR|xmonad-contrib-darcs}} -- カスタムレイアウトや設定などの機能を提供する拡張 |
||
− | |||
− | ==設定== |
||
− | |||
− | ===Xmonad の起動=== |
||
− | Xmonad を自動起動するには、起動スクリプトに {{Ic|xmonad}} コマンドを追加します (例えば、startx を使う場合 {{ic|~/.xinitrc}}、[[XDM|XDM]] ログインマネージャを使う場合 {{ic|~/.xsession}})。[[GDM|GDM]] や [[KDM|KDM]] を使う場合は、新しいセッションファイルを作成し、セッションメニューから xmonad を選択します。 |
||
{{Note|デフォルトではマウスカーソルは x です。left_ptr に設定するには起動スクリプトに以下を追加します (例: {{ic|~/.xinitrc}}):<br> |
{{Note|デフォルトではマウスカーソルは x です。left_ptr に設定するには起動スクリプトに以下を追加します (例: {{ic|~/.xinitrc}}):<br> |
||
53行目: | 48行目: | ||
$ mkdir ~/.xmonad |
$ mkdir ~/.xmonad |
||
− | 詳細については、[[ |
+ | 詳細については、[[xinitrc]] を参照してください。 |
− | == |
+ | ==設定== |
Xmonad ユーザーは {{ic|~/.xmonad/xmonad.hs}} を修正することで Xmonad をカスタマイズすることができます。再コンパイルは {{ic|Mod+q}} ショートカットでその場で自動的にされます。 |
Xmonad ユーザーは {{ic|~/.xmonad/xmonad.hs}} を修正することで Xmonad をカスタマイズすることができます。再コンパイルは {{ic|Mod+q}} ショートカットでその場で自動的にされます。 |
||
129行目: | 124行目: | ||
パッケージにも {{ic|xmonad.hs}} が入っており、これは {{ic|xmonad.hs}} の最新の公式サンプルです。{{ic|/usr/share/}} の中にアーキテクチャとバージョン別に置かれています (例: {{ic|find /usr/share -name xmonad.hs}})。 |
パッケージにも {{ic|xmonad.hs}} が入っており、これは {{ic|xmonad.hs}} の最新の公式サンプルです。{{ic|/usr/share/}} の中にアーキテクチャとバージョン別に置かれています (例: {{ic|find /usr/share -name xmonad.hs}})。 |
||
+ | === デスクトップ設定のベース === |
||
− | ===Xmonad の終了=== |
||
+ | {{Pkg|xmonad-contrib}} にはデスクトップとして使うためのデフォルト設定があります。Chromium など新しいプログラムで発生する問題を解決します。 |
||
+ | |||
+ | 以下のように追加してください: |
||
+ | |||
+ | import XMonad |
||
+ | import XMonad.Config.Desktop |
||
+ | |||
+ | baseConfig = desktopConfig |
||
+ | |||
+ | main = xmonad baseConfig |
||
+ | { terminal = "urxvt" |
||
+ | , modMask = mod4Mask |
||
+ | } |
||
+ | |||
+ | ==Xmonad の終了== |
||
{{ic|Mod+Shift+q}} で xmonad を終了させることができます。{{ic|Mod}} はデフォルトでは {{ic|Alt}} になっています。 |
{{ic|Mod+Shift+q}} で xmonad を終了させることができます。{{ic|Mod}} はデフォルトでは {{ic|Alt}} になっています。 |
||
136行目: | 146行目: | ||
=== X-Selection-Paste === |
=== X-Selection-Paste === |
||
+ | Xmonad でのキーボードによる操作は [[キーボードショートカット#X-selection-paste のキーバインディング|X-Selection-Paste]] のキーボードショートカットを使うことで更に良くなります。 |
||
− | The keyboard-centered operation in Xmonad can be further supported with a keyboard shortcut for [[Keyboard shortcuts#Key_Binding_for_X-Selection-Paste|X-Selection-Paste]]. |
||
Also, there exists a function "pasteSelection" in XMonad.Util.Paste that can be bound to a key using a line like: |
Also, there exists a function "pasteSelection" in XMonad.Util.Paste that can be bound to a key using a line like: |
||
144行目: | 154行目: | ||
Pressing the "Insert" key will now paste the mouse buffer in the active window. |
Pressing the "Insert" key will now paste the mouse buffer in the active window. |
||
− | === |
+ | === 補助アプリケーション === |
There are number of complementary utilities that work well with xmonad. The most common of these include: |
There are number of complementary utilities that work well with xmonad. The most common of these include: |
||
− | * {{App|[[xmobar]]| |
+ | * {{App|[[xmobar]]|軽量な、テキストベースの、Haskell で書かれたステータスバー。|http://projects.haskell.org/xmobar/|{{Pkg|xmobar}}, {{AUR|xmobar-git}}}} |
− | * {{App|xmonad-log-applet|https://github.com/alexkay/xmonad-log-applet| |
+ | * {{App|xmonad-log-applet|https://github.com/alexkay/xmonad-log-applet|GNOME, MATE, Xfce パネル用のアプレット。|{{AUR|xmonad-log-applet-xfce4-git}}, {{AUR|xmonad-log-applet-gnome-git}}}} |
+ | === ワークスペースの数を増やす === |
||
− | === Increase the number of workspaces === |
||
+ | デフォルトでは、xmonad は9つのワークスペースを使います。以下のように拡張することでワークスペースの数を14まで増やすことが可能です: |
||
− | By default, xmonad uses 9 workspaces. You can increase this to 14 by extending the following line like this: |
||
{{hc|xmonad.hs| |
{{hc|xmonad.hs| |
||
-- (i, k) <- zip (XMonad.workspaces conf) [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9] |
-- (i, k) <- zip (XMonad.workspaces conf) [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9] |
||
(i, k) <- zip (XMonad.workspaces conf) [xK_grave, xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9, xK_0, xK_minus, xK_equal, xK_BackSpace]}} |
(i, k) <- zip (XMonad.workspaces conf) [xK_grave, xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9, xK_0, xK_minus, xK_equal, xK_BackSpace]}} |
||
+ | === Conky やトレイアプリのための空間を作る === |
||
− | === Making room for Conky or tray apps === |
||
Wrap your layouts with avoidStruts from XMonad.Hooks.ManageDocks for automatic dock/panel/trayer spacing: |
Wrap your layouts with avoidStruts from XMonad.Hooks.ManageDocks for automatic dock/panel/trayer spacing: |
||
176行目: | 186行目: | ||
,((modMask x, xK_b ), sendMessage ToggleStruts) |
,((modMask x, xK_b ), sendMessage ToggleStruts) |
||
− | === |
+ | === xmonad で xmobar を使う === |
+ | [[xmobar]] は xmonad で使うことを想定して作られた軽量でミニマル、テキストベースのバーです。xmonad で xmobar を使うには、{{Pkg|xmonad}} パッケージに加えて2つのパッケージが必要になります: [[公式リポジトリ]]の {{Pkg|xmonad-contrib}} と {{Pkg|xmobar}} です。また、公式の {{Pkg|xmobar}} パッケージの代わりに [[AUR]] の {{AUR|xmobar-git}} を使うこともできます。 |
||
− | '''[[xmobar]]''' is a light and minimalistic text-based bar, designed to work with xmonad. |
||
− | To use xmobar with xmonad, you will need two packages in addition to the {{Pkg|xmonad}} package. These packages are {{Pkg|xmonad-contrib}} and {{Pkg|xmobar}} from the [[official repositories]], or you can use {{AUR|xmobar-git}} from the [[Arch User Repository|AUR]] instead of the official {{Pkg|xmobar}} package. |
||
Here we will start xmobar from within xmonad, which reloads xmobar whenever you reload xmonad. |
Here we will start xmobar from within xmonad, which reloads xmobar whenever you reload xmonad. |
||
193行目: | 202行目: | ||
import XMonad.Hooks.DynamicLog |
import XMonad.Hooks.DynamicLog |
||
− | The xmobar action starts xmobar and returns a modified configuration that includes all of the options described in |
+ | The xmobar action starts xmobar and returns a modified configuration that includes all of the options described in [[#More configurable]]. |
main = xmonad =<< xmobar defaultConfig { modMask = mod4Mask {- or any other configurations here ... -}} |
main = xmonad =<< xmobar defaultConfig { modMask = mod4Mask {- or any other configurations here ... -}} |
||
− | ==== More |
+ | ==== More configurable ==== |
As of xmonad(-contrib) 0.9, there is a new [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-DynamicLog.html#v%3AstatusBar statusBar] function in [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-DynamicLog.html XMonad.Hooks.DynamicLog]. It allows you to use your own configuration for: |
As of xmonad(-contrib) 0.9, there is a new [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-DynamicLog.html#v%3AstatusBar statusBar] function in [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-DynamicLog.html XMonad.Hooks.DynamicLog]. It allows you to use your own configuration for: |
||
242行目: | 251行目: | ||
=== Controlling xmonad with external scripts === |
=== Controlling xmonad with external scripts === |
||
− | + | Here are a few ways to do it: |
|
− | + | * use the following xmonad extension, [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-ServerMode.html XMonad.Hooks.ServerMode]. |
|
+ | * simulate keypress events using {{Pkg|xdotool}} or similar programs. See this [http://ubuntuforums.org/archive/index.php/t-658040.html Ubuntu forums thread]. The following command would simulate the keypress {{ic|Super+n}}: |
||
− | |||
− | Secondly, you can simulate keypress events using {{Pkg|xdotool}} or similar programs. See this [http://ubuntuforums.org/archive/index.php/t-658040.html Ubuntu forums thread]. The following command would simulate the keypress {{ic|Super+n}}: |
||
xdotool key Super+n |
xdotool key Super+n |
||
+ | * {{Pkg|wmctrl}} -If you have desktopConfig or EwmhDesktops configured, this is a very easy to use and standard utility. |
||
− | === Launching another window manager within xmonad === |
||
+ | |||
+ | === xmonad の中で他のウィンドウマネージャを起動 === |
||
− | If you are using {{AUR|xmonad- |
+ | If you are using {{AUR|xmonad-git}}, as of January of 2011, you can restart to another window manager from within xmonad. You just need to write a small script, and add stuff to your {{ic|~/.xmonad/xmonad.hs}}. Here is the script. |
{{hc|~/bin/obtoxmd|<nowiki> |
{{hc|~/bin/obtoxmd|<nowiki> |
||
309行目: | 319行目: | ||
* vicfryzel :: Beautiful and usable xmonad configuration, along with xmobar configuration, xinitrc, dmenu, and other scripts that make xmonad more usable. :: [https://github.com/vicfryzel/xmonad-config git repository], [https://github.com/vicfryzel/xmonad-config/raw/master/screenshot.png screenshot]. |
* vicfryzel :: Beautiful and usable xmonad configuration, along with xmobar configuration, xinitrc, dmenu, and other scripts that make xmonad more usable. :: [https://github.com/vicfryzel/xmonad-config git repository], [https://github.com/vicfryzel/xmonad-config/raw/master/screenshot.png screenshot]. |
||
* vogt :: Check out adamvo's config and many others in the official [http://haskell.org/haskellwiki/Xmonad/Config_archive Xmonad/Config archive] |
* vogt :: Check out adamvo's config and many others in the official [http://haskell.org/haskellwiki/Xmonad/Config_archive Xmonad/Config archive] |
||
+ | * wulax :: Example of using xmonad inside Xfce. Contains two layouts for GIMP. :: [https://gist.github.com/jsjolund/94f6821b248ff79586ba xmonad.hs], [https://i.imgur.com/at9AbOl.png screenshot]. |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
424行目: | 435行目: | ||
=== gvim やターミナルの底部の空きスペース === |
=== gvim やターミナルの底部の空きスペース === |
||
− | スペースを背景色と合わせる方法は [[ |
+ | スペースを背景色と合わせる方法は [[Vim#gVim ウィンドウの底部の空きスペース]] を見て下さい。 |
[[rxvt-unicode]] の場合、{{AUR|rxvt-unicode-patched}} が使えます。 |
[[rxvt-unicode]] の場合、{{AUR|rxvt-unicode-patched}} が使えます。 |
2015年11月6日 (金) 19:43時点における版
xmonad は、Xのタイル型ウィンドウマネージャです。画面を分割し、重なり合わないようにウィンドウを配置することで、画面を最大限に活用することができます。ウィンドウマネージャの機能はキーボードから利用することができます (マウスはオプションです)。
xmonadは Haskell で実装されており、設定や拡張も Haskell で書かれています。レイアウトやキーバインド、その他の設定はユーザーが設定ファイルに書き込むことで変更できます。
レイアウトは動的に適用され、各ワークスペース上で異なるレイアウトを使用することができます。Xinerama が完全にサポートされ、ウィンドウを複数のモニタで並べて表示することができます。
詳細は、xmonad のウェブサイトをご覧ください: http://xmonad.org/
目次
- 1 インストール
- 2 Xmonad の起動
- 3 設定
- 4 Xmonad の終了
- 5 Tips and tricks
- 6 トラブルシューティング
- 6.1 GNOME 3 と xmonad
- 6.2 Xfce 4 と xmonad
- 6.3 Missing xmonad-i386-linux or xmonad-x86_64-linux
- 6.4 Java アプリケーションの問題
- 6.5 gvim やターミナルの底部の空きスペース
- 6.6 Chromium/Chrome がフルスクリーンにならない
- 6.7 Multitouch / touchegg
- 6.8 Keybinding issues with an azerty keyboard layout
- 6.9 GNOME 3 mod4+p changes display configuration instead of launching dmenu
- 6.10 Problems with focused border in VirtualBox
- 6.11 Steam のゲーム (Half-Life, Left 4 Dead, …) と xmonad
- 7 参照
インストール
xmonad と xmonad-contrib (サードパーティ製のタイリングアルゴリズムや設定スクリプトなどが入っています) は公式リポジトリから利用可能です。
また、開発版の xmonad-gitAUR や xmonad-contrib-gitAUR をインストールすることもできます。
Xmonad の起動
Xmonad を自動起動するには、起動スクリプトに xmonad
コマンドを追加します (例えば、startx を使う場合 ~/.xinitrc
、XDM ログインマネージャを使う場合 ~/.xsession
)。GDM や KDM を使う場合は、新しいセッションファイルを作成し、セッションメニューから xmonad を選択します。
また、標準では US キーボードレイアウトなので、必要に応じて変更します。例えば日本語キーボードレイアウトは ~/.xinitrc
に以下を追加します。キーボードレイアウトの設定についてはここを参照してください。:
$ setxkbmap -layout jp
例 ~/.xinitrc
:
# set the cursor xsetroot -cursor_name left_ptr # set Japanese keyboard layout setxkbmap -layout jp # start xmonad exec xmonad
もし、起動しない場合はホームディレクトリに .xmonad
ディレクトリがあるか確認してください。もしない場合は作成します。
$ mkdir ~/.xmonad
詳細については、xinitrc を参照してください。
設定
Xmonad ユーザーは ~/.xmonad/xmonad.hs
を修正することで Xmonad をカスタマイズすることができます。再コンパイルは Mod+q
ショートカットでその場で自動的にされます。
ディレクトリ ~/.xmonad
がない場合は xmonad --recompile
を実行してディレクトリを作成します。
Xmonad のデフォルトの設定は非常に優秀で、xmonad.hs
がなくても実行することができます。そのため、xmonad --recompile
を実行したあとでも ~/.xmonad/xmonad.hs
は多分無いでしょう。あなたがそれをカスタマイズしたいのならば、ファイルを作成しそれを編集していきましょう。
Xmonad の設定ファイルは Haskell で書かれているため、プログラマーでないとなかなか設定が難しいと思われます。設定例や詳細方法は以下のページを参照して下さい:
- xmonad wiki
- xmonad config archive
- xmonad FAQ
- Arch Linux フォーラムスレッド
最善の方法は組み込みの関数 defaultConfig を使用し、必要なところを ~/.xmonad/xmonad.hs
で変更やカスタマイズをすることです。
次のように xmonad.hs
を書くことによって設定します:
import XMonad
main = do xmonad $ defaultConfig { terminal = "urxvt" , modMask = mod4Mask , borderWidth = 3 }
デフォルトの設定に端末とボーダーの設定を上書きします (その他の設定は defaultConfig 関数から継承されます)。
より複雑になるにつれ、それぞれ別の関数で設定しメイン関数内でそれらの関数を呼び出したほうが便利です。これによって、大規模なカスタマイズをするときに保守が簡易になります。
上記の簡単な xmonad.hs
は次のように書くことができます:
import XMonad
main = do xmonad $ defaultConfig { terminal = myTerminal , modMask = myModMask , borderWidth = myBorderWidth }
myTerminal = "urxvt" myModMask = mod4Mask -- Win key or Super_L myBorderWidth = 3
また、Haskell では import が最初にあれば、関数や {} 内の順序は重要ではありません。
以下は この 設定ファイルの一部です。これは一般的な機能の一例です。
{ terminal = myTerminal, focusFollowsMouse = myFocusFollowsMouse, borderWidth = myBorderWidth, modMask = myModMask, -- numlockMask deprecated in 0.9.1 -- numlockMask = myNumlockMask, workspaces = myWorkspaces, normalBorderColor = myNormalBorderColor, focusedBorderColor = myFocusedBorderColor, -- key bindings keys = myKeys, mouseBindings = myMouseBindings, -- hooks, layouts layoutHook = myLayout, manageHook = myManageHook, handleEventHook = myEventHook, logHook = myLogHook, startupHook = myStartupHook }
パッケージにも xmonad.hs
が入っており、これは xmonad.hs
の最新の公式サンプルです。/usr/share/
の中にアーキテクチャとバージョン別に置かれています (例: find /usr/share -name xmonad.hs
)。
デスクトップ設定のベース
xmonad-contrib にはデスクトップとして使うためのデフォルト設定があります。Chromium など新しいプログラムで発生する問題を解決します。
以下のように追加してください:
import XMonad import XMonad.Config.Desktop baseConfig = desktopConfig main = xmonad baseConfig { terminal = "urxvt" , modMask = mod4Mask }
Xmonad の終了
Mod+Shift+q
で xmonad を終了させることができます。Mod
はデフォルトでは Alt
になっています。
Tips and tricks
X-Selection-Paste
Xmonad でのキーボードによる操作は X-Selection-Paste のキーボードショートカットを使うことで更に良くなります。
Also, there exists a function "pasteSelection" in XMonad.Util.Paste that can be bound to a key using a line like:
xmonad.hs
-- X-selection-paste buffer , ((0, xK_Insert), pasteSelection)
Pressing the "Insert" key will now paste the mouse buffer in the active window.
補助アプリケーション
There are number of complementary utilities that work well with xmonad. The most common of these include:
- xmobar — 軽量な、テキストベースの、Haskell で書かれたステータスバー。
- xmonad-log-applet — https://github.com/alexkay/xmonad-log-applet
- GNOME, MATE, Xfce パネル用のアプレット。 || xmonad-log-applet-xfce4-gitAUR, xmonad-log-applet-gnome-gitAUR
ワークスペースの数を増やす
デフォルトでは、xmonad は9つのワークスペースを使います。以下のように拡張することでワークスペースの数を14まで増やすことが可能です:
xmonad.hs
-- (i, k) <- zip (XMonad.workspaces conf) [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9] (i, k) <- zip (XMonad.workspaces conf) [xK_grave, xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9, xK_0, xK_minus, xK_equal, xK_BackSpace]
Conky やトレイアプリのための空間を作る
Wrap your layouts with avoidStruts from XMonad.Hooks.ManageDocks for automatic dock/panel/trayer spacing:
import XMonad import XMonad.Hooks.ManageDocks main=do xmonad $ defaultConfig { ... , layoutHook=avoidStruts $ layoutHook defaultConfig , manageHook=manageHook defaultConfig <+> manageDocks , ... }
If you ever want to toggle the gaps, this action can be added to your key bindings:
,((modMask x, xK_b ), sendMessage ToggleStruts)
xmonad で xmobar を使う
xmobar は xmonad で使うことを想定して作られた軽量でミニマル、テキストベースのバーです。xmonad で xmobar を使うには、xmonad パッケージに加えて2つのパッケージが必要になります: 公式リポジトリの xmonad-contrib と xmobar です。また、公式の xmobar パッケージの代わりに AUR の xmobar-gitAUR を使うこともできます。
Here we will start xmobar from within xmonad, which reloads xmobar whenever you reload xmonad.
Open ~/.xmonad/xmonad.hs
in your favorite editor, and choose one of the two following options:
Quick, less flexible
Common imports:
import XMonad import XMonad.Hooks.DynamicLog
The xmobar action starts xmobar and returns a modified configuration that includes all of the options described in #More configurable.
main = xmonad =<< xmobar defaultConfig { modMask = mod4Mask {- or any other configurations here ... -}}
More configurable
As of xmonad(-contrib) 0.9, there is a new statusBar function in XMonad.Hooks.DynamicLog. It allows you to use your own configuration for:
- The command used to execute the bar
- The PP that determines what is being written to the bar
- The key binding to toggle the gap for the bar
The following is an example of how to use it:
~/.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 }
Verify XMobar Config
The template and default xmobarrc contains this.
At last, open up ~/.xmobarrc
and make sure you have StdinReader
in the template and run the plugin. E.g.
~/.xmobarrc
Config { ... , commands = [ Run StdinReader .... ] ... , template = " %StdinReader% ... " }
Now, all you should have to do is either to start, or restart, xmonad.
Controlling xmonad with external scripts
Here are a few ways to do it:
- use the following xmonad extension, XMonad.Hooks.ServerMode.
- simulate keypress events using xdotool or similar programs. See this Ubuntu forums thread. The following command would simulate the keypress
Super+n
:
xdotool key Super+n
- wmctrl -If you have desktopConfig or EwmhDesktops configured, this is a very easy to use and standard utility.
xmonad の中で他のウィンドウマネージャを起動
If you are using xmonad-gitAUR, as of January of 2011, you can restart to another window manager from within xmonad. You just need to write a small script, and add stuff to your ~/.xmonad/xmonad.hs
. Here is the script.
~/bin/obtoxmd
#!/bin/sh openbox xmonad
And here are the modifications you need to add to your ~/.xmonad/xmonad.hs
:
~/.xmonad/xmonad.hs
import XMonad --You need to add this import import XMonad.Util.Replace main do -- And this "replace" replace xmonad $ defaultConfig { --Add the usual here }
You also need to add the following key binding:
~/xmonad/xmonad.hs
--Add a keybinding as follows: ((modm .|. shiftMask, xK_o ), restart "/home/abijr/bin/obtoxmd" True)
Just remember to add a comma before or after and change the path to your actual script path. Now just Mod+q
(restart xmonad to refresh the config), and then hit Mod+Shift+o
and you should have Openbox running with the same windows open as in xmonad. To return to xmonad you should just exit Openbox. Here is a link to adamvo's ~/.xmonad/xmonad.hs
which uses this setup Adamvo's xmonad.hs
KDE と xmonad
The xmonad wiki has instructions on how to run xmonad inside KDE
It also might be a good idea to set a global keyboard shortcut in KDE to start xmonad in case it is accidentally killed or closed.
Skype 用の IM レイアウト
In orded to create an IM layout for the newer versions of skype, the following code can be used:
xmonad.hs
myIMLayout = withIM (1%7) skype Grid where skype = And (ClassName "Skype") (Role "")
Example configurations
Below are some example configurations from fellow xmonad users. Feel free to add links to your own.
- brisbin33 :: simple, useful, readable :: config screenshot
- jelly :: Configuration with prompt, different layouts, twinview with xmobar :: xmonad.hs
- MrElendig :: Simple configuration, with xmobar :: xmonad.hs, .xmobarrc, screenshot.
- thayer :: A minimal mouse-friendly config ideal for netbooks :: configs screenshot
- vicfryzel :: Beautiful and usable xmonad configuration, along with xmobar configuration, xinitrc, dmenu, and other scripts that make xmonad more usable. :: git repository, screenshot.
- vogt :: Check out adamvo's config and many others in the official Xmonad/Config archive
- wulax :: Example of using xmonad inside Xfce. Contains two layouts for GIMP. :: xmonad.hs, screenshot.
トラブルシューティング
GNOME 3 と xmonad
With the release of GNOME 3, some additional steps are necessary to make GNOME play nicely with xmonad.
Either install xmonad-gnome3AUR from the AUR, or, manually:
Add an xmonad session file for use by gnome-session (/usr/share/gnome-session/sessions/xmonad.session
):
[GNOME Session] Name=Xmonad session RequiredComponents=gnome-panel;gnome-settings-daemon; RequiredProviders=windowmanager;notifications; DefaultProvider-windowmanager=xmonad DefaultProvider-notifications=notification-daemon
Create a desktop file for GDM (/usr/share/xsessions/xmonad-gnome-session.desktop
):
[Desktop Entry] Name=Xmonad GNOME Comment=Tiling window manager TryExec=/usr/bin/gnome-session Exec=gnome-session --session=xmonad Type=XSession
Create or edit this file (/usr/share/applications/xmonad.desktop
):
[Desktop Entry] Type=Application Encoding=UTF-8 Name=Xmonad Exec=xmonad NoDisplay=true X-GNOME-WMName=Xmonad X-GNOME-Autostart-Phase=WindowManager X-GNOME-Provides=windowmanager X-GNOME-Autostart-Notify=false
Finally, install xmonad-contrib and create or edit ~/.xmonad/xmonad.hs
to have the following
import XMonad import XMonad.Config.Gnome main = xmonad gnomeConfig
Xmonad should now appear in the list of GDM sessions and also play nicely with gnome-session itself.
GNOME と Xmonad でコンポジット
Some applications look better (e.g. GNOME Do) when composition is enabled. This is, however not, the case in the default Xmonad window manager. To enable it add an additional .desktop file /usr/share/xsessions/xmonad-gnome-session-composite.desktop
:
[Desktop Entry] Name=Xmonad GNOME (Composite) Comment=Tiling window manager TryExec=/usr/bin/gnome-session Exec=/usr/sbin/gnome-xmonad-composite Type=XSession
And create /usr/sbin/gnome-xmonad-composite
and chmod +x /usr/sbin/gnome-xmonad-composite
:
xcompmgr & gnome-session --session=xmonad
Now choose "Xmonad GNOME (Composite)" in the list of sessions during login. Reference man xcompmgr
for additional "eye candy".
Xfce 4 と xmonad
Use xfceConfig
instead of defaultConfig
after importing XMonad.Config.Xfce
in ~/.xmonad/xmonad.hs
, e.g. adapting the minimal config above:
import XMonad import XMonad.Config.Xfce
main = xmonad xfceConfig { terminal = "urxvt" , modMask = mod4Mask }
Also add an entry to Settings > Session and Startup > Application Autostart that runs xmonad --replace
.
Missing xmonad-i386-linux or xmonad-x86_64-linux
Xmonad should automatically create the xmonad-i386-linux
file (in ~/.xmonad/
). If this it not the case, grab a configuration file from the xmonad wiki or create your own. Put the .hs
and all others files in ~/.xmonad/
and run this command from the folder:
xmonad --recompile
Now you should see the file.
Java アプリケーションの問題
標準の Java GUI ツールキットは、ハードコーディングされた "non-reparenting" ウィンドウマネージャのリストを持っています。 xmonad はそのリストに含まれておらず、稼働中にいくつかの問題が発生する Java アプリケーションがあります。 最も一般的な問題の一つは、Java アプリケーションが GUI をレンダリングする代わりに無地で灰色の box をレンダリングする、 "gray blobs" です。
これを解決できる方法はいくつかあります。
- jre7-openjdk や jre8-openjdk ならば、
/etc/profile.d/jre.sh
にexport _JAVA_AWT_WM_NONREPARENTING=1
を追記してください。 そして、そのファイル/etc/profile.d/jre.sh
を source するか、再ログインしてください。 - Oracle の JRE/JDK ならば、 SetWMName. を使用してください。 しかし、その効果は
XMonad.Hooks.EwmhDesktops
も使用すると打ち消されてしまうかもしれません。 この場合は、
>> setWMName "LG3D"
を LogHook
に追記することで解決されるでしょう。
より多くの情報を得るためには、 [1] を参照してください。
gvim やターミナルの底部の空きスペース
スペースを背景色と合わせる方法は Vim#gVim ウィンドウの底部の空きスペース を見て下さい。
rxvt-unicode の場合、rxvt-unicode-patchedAUR が使えます。
You can also configure xmonad to respect size hints, but this will leave a gap instead. See the documentation on Xmonad.Layout.LayoutHints.
Chromium/Chrome がフルスクリーンにならない
If Chrome fails to go fullscreen when F11
is pressed, you can use the XMonad.Hooks.EwmhDesktops extension found in the xmonad-contrib package. Simply add the import
statement to your ~/.xmonad/xmonad.hs
:
import XMonad.Hooks.EwmhDesktops
and then add handleEventHook = fullscreenEventHook
to the appropriate place; for example:
... xmonad $ defaultConfig { modMask = mod4Mask , handleEventHook = fullscreenEventHook } ...
After a recompile/restart of xmonad, Chromium should now respond to F11
(fullscreen) as expected.
Multitouch / touchegg
Touchégg polls the window manager for the _NET_CLIENT_LIST
(in order to fetch a list of windows it should listen for mouse events on.) By default, xmonad does not supply this property. To enable this, use the XMonad.Hooks.EwmhDesktops extension found in the xmonad-contrib package.
Keybinding issues with an azerty keyboard layout
Users with a keyboard with azerty layout can run into issues with certain keybindings. Using the XMonad.Config.Azerty module will solve this.
If you do not need the capability to switch the display-setup in the gnome-control-center, just execute
dconf write /org/gnome/settings-daemon/plugins/xrandr/active false
as your user, to disable the xrandr plugin which grabs Super+p.
Problems with focused border in VirtualBox
A known issue with Virtualbox (Ticket #6479) can cause problems with the focused window border. A solution can be found by installing a compositing manager like xcompmgr which overrides the incorrect behavior of vboxvideo.
Steam のゲーム (Half-Life, Left 4 Dead, …) と xmonad
There seems to be some trouble with Source engine based game (like Half-Life). If they don't start or get stuck with a black screen a workaround it to start them in window mode: right click on the game in your library and choose properties, click on launch options and enter: [2]
-windowed
Another solution is to float the window of the game using the manage hook. For example, the following line can be used for Half-Life:
className =? "hl_linux" --> doFloat
参照
- xmonad - xmonad 公式ウェブサイト
- xmonad.hs - テンプレート xmonad.hs
- xmonad: a guided tour
- Share your xmonad desktop!
- xmonad hacking thread