「Xmonad」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(update Pkg/AUR templates)
(同期)
(同じ利用者による、間の1版が非表示)
4行目: 4行目:
 
[[fr:Xmonad]]
 
[[fr:Xmonad]]
 
[[ru:Xmonad]]
 
[[ru:Xmonad]]
[[tr:Xmonad Pencere Yöneticisi]]
 
 
[[zh-hans:Xmonad]]
 
[[zh-hans:Xmonad]]
 
{{Related articles start}}
 
{{Related articles start}}
  +
{{Related|xmobar}}
 
{{Related|dzen}}
 
{{Related|dzen}}
 
{{Related|dmenu}}
 
{{Related|dmenu}}
132行目: 132行目:
 
import XMonad.Config.Desktop
 
import XMonad.Config.Desktop
 
 
baseConfig = desktopConfig
+
main = xmonad desktopConfig
 
main = xmonad baseConfig
 
 
{ terminal = "urxvt"
 
{ terminal = "urxvt"
 
, modMask = mod4Mask
 
, modMask = mod4Mask
150行目: 148行目:
 
また、XMonad.Util.Paste に存在する "pasteSelection" 関数を以下のようにキーにバインドすることもできます:
 
また、XMonad.Util.Paste に存在する "pasteSelection" 関数を以下のようにキーにバインドすることもできます:
 
{{hc|xmonad.hs|
 
{{hc|xmonad.hs|
  +
import XMonad.Util.Paste -- Remember to include this line
 
-- X-selection-paste buffer
 
-- X-selection-paste buffer
 
, ((0, xK_Insert), pasteSelection)}}
 
, ((0, xK_Insert), pasteSelection)}}
 
"Insert" キーを押すとアクティブウィンドウにマウスバッファが貼り付けられるようになります。
 
"Insert" キーを押すとアクティブウィンドウにマウスバッファが貼り付けられるようになります。
 
=== 補助アプリケーション ===
 
 
xmonad を保管するユーティリティはいくつも存在します。以下は最もよく使われているユーティリティの一部です:
 
 
* {{App|[[xmobar]]|軽量な、テキストベースの、Haskell で書かれたステータスバー。|http://projects.haskell.org/xmobar/|{{Pkg|xmobar}}, {{AUR|xmobar-git}}}}
 
* {{App|xmonad-log-applet|GNOME, MATE, Xfce パネル用のアプレット。|https://github.com/alexkay/xmonad-log-applet|{{AUR|xmonad-log-applet-xfce4-git}}{{Broken package link|{{aur-mirror|xmonad-log-applet-xfce4-git}}}}, {{AUR|xmonad-log-applet-gnome-git}}{{Broken package link|{{aur-mirror|xmonad-log-applet-gnome-git}}}}}}
 
   
 
=== ワークスペースの数を増やす ===
 
=== ワークスペースの数を増やす ===
190行目: 182行目:
 
=== Conky やトレイアプリのための空間を作る ===
 
=== Conky やトレイアプリのための空間を作る ===
   
  +
ドックやパネル、トレイの空間を自動で調整するには XMonad.Hooks.ManageDocks の avoidStruts を使います:
Wrap your layouts with avoidStruts from XMonad.Hooks.ManageDocks for automatic dock/panel/trayer spacing:
 
   
 
import XMonad
 
import XMonad
203行目: 195行目:
 
}
 
}
   
  +
隙間を切り替えたい場合、以下のアクションをキーバインドに追加してください:
If you ever want to toggle the gaps, this action can be added to your key bindings:
 
 
,((modMask x, xK_b ), sendMessage ToggleStruts)
 
,((modMask x, xK_b ), sendMessage ToggleStruts)
   
210行目: 202行目:
 
[[xmobar]] は xmonad で使うことを想定して作られた軽量でミニマル、テキストベースのバーです。xmonad で xmobar を使うには、{{Pkg|xmonad}} パッケージに加えて2つのパッケージが必要になります: [[公式リポジトリ]]の {{Pkg|xmonad-contrib}} と {{Pkg|xmobar}} です。また、公式の {{Pkg|xmobar}} パッケージの代わりに [[AUR]] の {{AUR|xmobar-git}} を使うこともできます。
 
[[xmobar]] は xmonad で使うことを想定して作られた軽量でミニマル、テキストベースのバーです。xmonad で xmobar を使うには、{{Pkg|xmonad}} パッケージに加えて2つのパッケージが必要になります: [[公式リポジトリ]]の {{Pkg|xmonad-contrib}} と {{Pkg|xmobar}} です。また、公式の {{Pkg|xmobar}} パッケージの代わりに [[AUR]] の {{AUR|xmobar-git}} を使うこともできます。
   
  +
ここでは xmonad の中から xmobar を起動して、xmonad をリロードしたときに xmobar もリロードします。
Here we will start xmobar from within xmonad, which reloads xmobar whenever you reload xmonad.
 
   
 
{{ic|~/.xmonad/xmonad.hs}} をお好きなエディタで開いて、以下のどちらかの設定を行なってください:
 
{{ic|~/.xmonad/xmonad.hs}} をお好きなエディタで開いて、以下のどちらかの設定を行なってください:
216行目: 208行目:
 
==== クイック設定 ====
 
==== クイック設定 ====
   
{{Note|There is also {{Pkg|dzen2}} which you can substitute for {{Pkg|xmobar}} in either case.}}
+
{{Note|{{Pkg|xmobar}} の代わりに {{Pkg|dzen2}} を使うこともできます。}}
   
 
Common imports:
 
Common imports:
227行目: 219行目:
 
==== 複雑な設定 ====
 
==== 複雑な設定 ====
   
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:
+
xmonad(-contrib) 0.9 現在、[http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-DynamicLog.html XMonad.Hooks.DynamicLog] には新しい [https://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Hooks-DynamicLog.html#v:statusBar statusBar] 関数が存在します。以下のような設定が可能です:
  +
* バーを実行するのに使用するコマンド
* The command used to execute the bar
 
  +
* バーに書き込まれるものを決定する PP
* 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:
 
 
{{hc|~/.xmonad/xmonad.hs|<nowiki>
 
{{hc|~/.xmonad/xmonad.hs|<nowiki>
 
-- Imports.
 
-- Imports.
319行目: 311行目:
   
 
また、何らかの理由で xmonad が終了してしまったときのために、xmonad を起動するキーボードショートカットを KDE の中で設定しておくと良いでしょう。
 
また、何らかの理由で xmonad が終了してしまったときのために、xmonad を起動するキーボードショートカットを KDE の中で設定しておくと良いでしょう。
  +
  +
==== plasmashell の無効化 ====
  +
  +
デスクトップやタスクバー、トレイなどを管理する KDE5 の plasmashell を無効化すると良いでしょう:
  +
  +
$ cp /etc/xdg/autostart/plasmashell.desktop ~/.config/autostart/
  +
  +
以下のように {{ic|~/.config/autostart/plasmashell.desktop}} を編集して {{ic|1=Exec=plasmashell}} を {{ic|1=Exec=}} に置き換えてください:
  +
  +
{{hc|~/.config/autostart/plasmashell.desktop|<nowiki>
  +
[Desktop Entry]
  +
Exec=
  +
Name=Plasma Desktop Workspace
  +
... # more stuff
  +
</nowiki>}}
   
 
=== Skype 用の IM レイアウト ===
 
=== Skype 用の IM レイアウト ===
413行目: 420行目:
 
}}
 
}}
   
ログイン時のセッションリストから "Xmonad GNOME (Composite)" を選択するようにしてください。詳しくは {{ic|man xcompmgr}} を参照。
+
ログイン時のセッションリストから "Xmonad GNOME (Composite)" を選択するようにしてください。詳しくは {{man|1|xcompmgr}} を参照。
   
 
=== Xfce 4 と xmonad ===
 
=== Xfce 4 と xmonad ===
421行目: 428行目:
 
import XMonad
 
import XMonad
 
import XMonad.Config.Xfce
 
import XMonad.Config.Xfce
  +
 
 
main = xmonad xfceConfig
 
main = xmonad xfceConfig
 
{ terminal = "urxvt"
 
{ terminal = "urxvt"
440行目: 447行目:
 
=== Java アプリケーションの問題 ===
 
=== Java アプリケーションの問題 ===
   
標準の [[Java]] GUI ツールキットは、ハードコーディングされた "non-reparenting" ウィンドウマネージャのリストを持っています。 xmonad はそのリストに含まれておらず、稼働中にいくつかの問題が発生する Java アプリケーションがあります。 最も一般的な問題の一つは、Java アプリケーションが GUI をレンダリングする代わりに無地で灰色の box をレンダリングする、 "gray blobs" です。
+
標準の [[Java]] GUI ツールキットは、ハードコーディングされた "non-reparenting" ウィンドウマネージャのリストを持っています。xmonad はそのリストに含まれておらず、稼働中にいくつかの問題が発生する Java アプリケーションがあります。最も一般的な問題の一つは、Java アプリケーションが GUI をレンダリングする代わりに無地で灰色の box をレンダリングする、"gray blobs" です。
   
 
これを解決できる方法はいくつかあります。
 
これを解決できる方法はいくつかあります。
   
* {{Pkg|jre7-openjdk}} や {{Pkg|jre8-openjdk}} ならば、 {{ic|/etc/profile.d/jre.sh}} に {{Ic|1=export _JAVA_AWT_WM_NONREPARENTING=1}} を追記してください。 そして、そのファイル {{ic|/etc/profile.d/jre.sh}} を source するか、再ログインしてください。
+
* {{Pkg|jre7-openjdk}} や {{Pkg|jre8-openjdk}} ならば、 {{ic|/etc/profile.d/jre.sh}} に {{Ic|1=export _JAVA_AWT_WM_NONREPARENTING=1}} を追記してください。そして、そのファイル {{ic|/etc/profile.d/jre.sh}} を source するか、再ログインしてください。
* Oracle の JRE/JDK ならば、[http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-SetWMName.html SetWMName.] を使用してください。 しかし、その効果は {{ic|XMonad.Hooks.EwmhDesktops}} も使用すると打ち消されてしまうかもしれません。 この場合は、
+
* Oracle の JRE/JDK ならば、[https://wiki.haskell.org/Xmonad/Frequently_asked_questions#Using_SetWMName SetWMName] を使用してください。しかし、その効果は {{ic|XMonad.Hooks.EwmhDesktops}} も使用すると打ち消されてしまうかもしれません。この場合は、
   
 
>> setWMName "LG3D"
 
>> setWMName "LG3D"
451行目: 458行目:
 
を {{ic|LogHook}} に追記することで解決されるでしょう。
 
を {{ic|LogHook}} に追記することで解決されるでしょう。
   
より多くの情報を得るためには、 [http://haskell.org/haskellwiki/Xmonad/Frequently_asked_questions#Problems_with_Java_applications.2C_Applet_java_console] を参照してください。
+
より多くの情報を得るためには、[http://haskell.org/haskellwiki/Xmonad/Frequently_asked_questions#Problems_with_Java_applications.2C_Applet_java_console] を参照してください。
   
 
=== gvim やターミナルの底部の空きスペース ===
 
=== gvim やターミナルの底部の空きスペース ===
510行目: 517行目:
 
*[https://bbs.archlinux.org/viewtopic.php?id=94969 Share your xmonad desktop!]
 
*[https://bbs.archlinux.org/viewtopic.php?id=94969 Share your xmonad desktop!]
 
*[https://bbs.archlinux.org/viewtopic.php?id=40636 xmonad hacking thread]
 
*[https://bbs.archlinux.org/viewtopic.php?id=40636 xmonad hacking thread]
  +
*[https://github.com/alexkay/xmonad-log-applet xmonad-log-applet] - GNOME, MATE, Xfce パネルのアプレット

2017年9月23日 (土) 23:43時点における版

関連記事

xmonad は、X のタイル型ウィンドウマネージャです。画面を分割し、重なり合わないようにウィンドウを配置することで、画面を最大限に活用することができます。ウィンドウマネージャの機能はキーボードから利用することができます (マウスはオプションです)。

xmonad は Haskell で実装されており、設定や拡張も Haskell で書かれています。レイアウトやキーバインド、その他の設定はユーザーが設定ファイルに書き込むことで変更できます。

レイアウトは動的に適用され、各ワークスペース上で異なるレイアウトを使用することができます。Xinerama が完全にサポートされ、ウィンドウを複数のモニタで並べて表示することができます。

詳細は、xmonad のウェブサイトをご覧ください: http://xmonad.org/

インストール

xmonadxmonad-contrib (サードパーティ製のタイリングアルゴリズムや設定スクリプトなどが入っています) は公式リポジトリから利用可能です。

また、開発版の xmonad-gitAURxmonad-contrib-gitAUR をインストールすることもできます。

ノート: ArchHaskell リポジトリを使うことを選んだ場合は、xmonad の代わりに haskell-xmonad パッケージをインストールする必要があります (公式の community リポジトリにあるパッケージは依存パッケージが異なっています)。

Xmonad の起動

Xmonad を自動起動するには、起動スクリプトに xmonad コマンドを追加します (例えば、startx を使う場合 ~/.xinitrcXDM ログインマネージャを使う場合 ~/.xsession)。GDMKDM を使う場合は、新しいセッションファイルを作成し、セッションメニューから xmonad を選択します。

Xterm パッケージをインストールするか設定でターミナルエミュレータを変更しないと Xmonad の中で何もできなくなるので注意してください。

ノート: デフォルトではマウスカーソルは x です。left_ptr に設定するには起動スクリプト (例: ~/.xinitrc) に以下を追加します: xsetroot -cursor_name left_ptr

また、標準では 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 で書かれているため、プログラマーでないとなかなか設定が難しいと思われます。設定例や詳細方法は以下のページを参照して下さい:

最善の方法は組み込みの関数 defaultConfig を使用し、必要なところを ~/.xmonad/xmonad.hs で変更やカスタマイズをすることです。

次のように xmonad.hs を書くことによって設定します:

import XMonad

main = xmonad def
    { 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

main = xmonad desktopConfig
    { terminal    = "urxvt"
    , modMask     = mod4Mask
    }

Xmonad の終了

Mod+Shift+q で xmonad を終了させることができます。Mod はデフォルトでは Alt になっています。

Tips and tricks

X-Selection-Paste

Xmonad でのキーボードによる操作は X-Selection-Paste のキーボードショートカットを使うことで更に良くなります。

また、XMonad.Util.Paste に存在する "pasteSelection" 関数を以下のようにキーにバインドすることもできます:

xmonad.hs
  import XMonad.Util.Paste -- Remember to include this line
  -- X-selection-paste buffer
  , ((0, xK_Insert), pasteSelection)

"Insert" キーを押すとアクティブウィンドウにマウスバッファが貼り付けられるようになります。

ワークスペースの数を増やす

デフォルトでは、xmonad は9つのワークスペースを使います。以下のように拡張することでワークスペースの数を増やすことが可能です:

xmonad.hs
import XMonad
import XMonad.Util.EZConfig (additionalKeys)

main=do
  xmonad $ defaultConfig
    { ...
    , workspaces = myWorkspaces
    , ...
    } `additionalKeys` myAdditionalKeys

myWorkspaces = ["1","2","3","4","5","6","7","8","9"] ++ (map snd myExtraWorkspaces) -- you can customize the names of the default workspaces by changing the list

myExtraWorkspaces = [(xK_0, "0")] -- list of (key, name)

myAdditionalKeys =
    [ -- ... your other hotkeys ...
    ] ++ [
        ((myModMask, key), (windows $ W.greedyView ws))
        | (key, ws) <- myExtraWorkspaces
    ] ++ [
        ((myModMask .|. shiftMask, key), (windows $ W.shift ws))
        | (key, ws) <- myExtraWorkspaces
    ]

Conky やトレイアプリのための空間を作る

ドックやパネル、トレイの空間を自動で調整するには XMonad.Hooks.ManageDocks の avoidStruts を使います:

import XMonad
import XMonad.Hooks.ManageDocks

main=do
  xmonad $ defaultConfig
    { ...
    , layoutHook=avoidStruts $ layoutHook defaultConfig
    , manageHook=manageHook defaultConfig <+> manageDocks
    , ...
    }

隙間を切り替えたい場合、以下のアクションをキーバインドに追加してください:

,((modMask x, xK_b     ), sendMessage ToggleStruts)

xmonad で xmobar を使う

xmobar は xmonad で使うことを想定して作られた軽量でミニマル、テキストベースのバーです。xmonad で xmobar を使うには、xmonad パッケージに加えて2つのパッケージが必要になります: 公式リポジトリxmonad-contribxmobar です。また、公式の xmobar パッケージの代わりに AURxmobar-gitAUR を使うこともできます。

ここでは xmonad の中から xmobar を起動して、xmonad をリロードしたときに xmobar もリロードします。

~/.xmonad/xmonad.hs をお好きなエディタで開いて、以下のどちらかの設定を行なってください:

クイック設定

ノート: xmobar の代わりに dzen2 を使うこともできます。

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 ... -}}

複雑な設定

xmonad(-contrib) 0.9 現在、XMonad.Hooks.DynamicLog には新しい statusBar 関数が存在します。以下のような設定が可能です:

  • バーを実行するのに使用するコマンド
  • バーに書き込まれるものを決定する PP
  • バーの隙間を切り替えるキーバインド

使用例:

~/.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 }

XMobar の設定を確認

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.

外部スクリプトで xmonad を制御

複数の方法が存在します:

  • xmonad の拡張 XMonad.Hooks.ServerMode を使用する。
  • xdotool などのプログラムを使ってキーの押下をシミュレートする [1]。以下のコマンドは Super+n の押下をシミュレートします:
xdotool key Super+n
  • desktopConfig や EwmhDesktops を設定している場合、使いやすいユーティリティとして wmctrl が存在します。

xmonad の中で他のウィンドウマネージャを起動

xmonad-gitAUR を使用している場合、xmonad の中から他のウィンドウマネージャを再起動することができます (2011年1月現在)。小さなスクリプトを書いて ~/.xmonad/xmonad.hs に設定を追加するだけです。スクリプトは以下のようになります:

~/bin/obtoxmd
#!/bin/sh
openbox
xmonad

そして ~/.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
    }

以下のキーバインドも追加する必要があります:

~/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

xmonad の wiki には KDE で xmonad を実行 する方法が書かれています。

また、何らかの理由で xmonad が終了してしまったときのために、xmonad を起動するキーボードショートカットを KDE の中で設定しておくと良いでしょう。

plasmashell の無効化

デスクトップやタスクバー、トレイなどを管理する KDE5 の plasmashell を無効化すると良いでしょう:

$ cp /etc/xdg/autostart/plasmashell.desktop ~/.config/autostart/

以下のように ~/.config/autostart/plasmashell.desktop を編集して Exec=plasmashellExec= に置き換えてください:

~/.config/autostart/plasmashell.desktop
[Desktop Entry]
Exec=
Name=Plasma Desktop Workspace
... # more stuff

Skype 用の IM レイアウト

新しいバージョンの Skype 用に IM レイアウトを作成するには、以下のコードを使用:

xmonad.hs
myIMLayout = withIM (1%7) skype Grid
    where
      skype = And (ClassName "Skype") (Role "")

設定例

以下は xmonad ユーザーの設定例です。あなたの設定も自由に追加してください。

  • 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 :: Xfce の中で xmonad を使用するサンプル。GIMP 用の2つのレイアウト。 :: xmonad.hs, screenshot.

トラブルシューティング

GNOME 3 と xmonad

GNOME 3 から、GNOME で xmonad を使うには設定を追加する必要があります。

AUR から xmonad-gnome3AUR[リンク切れ: アーカイブ: aur-mirror] をインストールするか、手動で設定してください:

gnome-session で使用するための xmonad のセッションファイルを追加 (/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

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

以下のファイルを作成・編集 (/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

最後に、xmonad-contrib をインストールして ~/.xmonad/xmonad.hs を以下のように作成・編集:

import XMonad
import XMonad.Config.Gnome

main = xmonad gnomeConfig

これで GDM のセッションリストに Xmonad が表示され、gnome-session で扱えるようになります。

GNOME と Xmonad でコンポジット

コンポジットを有効にすることで一部のアプリケーション (例: GNOME Do) の見た目が良くなります。ただし Xmonad のデフォルト設定ではコンポジットが有効になっていません。有効にするには .desktop ファイルを作成してください (/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

そして /usr/sbin/gnome-xmonad-composite を作成して chmod +x /usr/sbin/gnome-xmonad-composite を実行:

xcompmgr &
gnome-session --session=xmonad

ログイン時のセッションリストから "Xmonad GNOME (Composite)" を選択するようにしてください。詳しくは xcompmgr(1) を参照。

Xfce 4 と xmonad

~/.xmonad/xmonad.hsXMonad.Config.Xfce をインポートしたら defaultConfig の代わりに xfceConfig を使ってください:

import XMonad
import XMonad.Config.Xfce

main = xmonad xfceConfig
    { terminal    = "urxvt"
    , modMask     = mod4Mask
    }

また、Settings > Session and Startup > Application Autostart から xmonad --replace を実行するエントリを追加してください。

xmonad-i386-linux や xmonad-x86_64-linux が存在しない

Xmonad は自動的に xmonad-i386-linux ファイルを (~/.xmonad/ の中に) 作成します。作成されない場合、xmonad wiki から設定を入手するか 自分で 設定を書いてください。.hs などのファイルを ~/.xmonad/ に配置したら、フォルダの中から以下のコマンドを実行:

xmonad --recompile

これでファイルが出来るはずです。

ノート: xmonad-contrib がインストールされていないために xmonad-x86_64-linux が見つからないというエラーメッセージが表示されることもあります。

Java アプリケーションの問題

標準の Java GUI ツールキットは、ハードコーディングされた "non-reparenting" ウィンドウマネージャのリストを持っています。xmonad はそのリストに含まれておらず、稼働中にいくつかの問題が発生する Java アプリケーションがあります。最も一般的な問題の一つは、Java アプリケーションが GUI をレンダリングする代わりに無地で灰色の box をレンダリングする、"gray blobs" です。

これを解決できる方法はいくつかあります。

  • jre7-openjdkjre8-openjdk ならば、 /etc/profile.d/jre.shexport _JAVA_AWT_WM_NONREPARENTING=1 を追記してください。そして、そのファイル /etc/profile.d/jre.sh を source するか、再ログインしてください。
  • Oracle の JRE/JDK ならば、SetWMName を使用してください。しかし、その効果は XMonad.Hooks.EwmhDesktops も使用すると打ち消されてしまうかもしれません。この場合は、
 >> setWMName "LG3D"

LogHook に追記することで解決されるでしょう。

より多くの情報を得るためには、[2] を参照してください。

gvim やターミナルの底部の空きスペース

スペースを背景色と合わせる方法は Vim#gVim ウィンドウの底部の空きスペースを見てください。

rxvt-unicode の場合、rxvt-unicode-patchedAUR が使えます。

サイズヒントを使うように xmonad を設定することもできます。ただし隙間は残ります。詳しくは Xmonad.Layout.LayoutHints のドキュメント を参照してください。

Chromium/Chrome がフルスクリーンにならない

F11 を押したときに Chrome がフルスクリーンにならない場合、xmonad-contrib パッケージに含まれている XMonad.Hooks.EwmhDesktops 拡張を使ってください。~/.xmonad/xmonad.hs に以下の import 文を追加するだけです:

import XMonad.Hooks.EwmhDesktops

それから適当な場所に handleEventHook = fullscreenEventHook を追加してください。例:

...
        xmonad $ defaultConfig
            { modMask            = mod4Mask
            , handleEventHook    = fullscreenEventHook
            }
...

xmonad の再コンパイル・再起動後に、Chromium で F11 (fullscreen) が使えるようになるはずです。

マルチタッチ / touchegg

Touchégg はウィンドウマネージャから _NET_CLIENT_LIST を定期的に取得します (マウスイベントを取得するウィンドウのリストを確認するため)。デフォルトでは xmonad はこのプロパティを提供していません。有効にするには、xmonad-contrib パッケージに含まれている XMonad.Hooks.EwmhDesktops 拡張を使ってください。

azerty キーボードレイアウトのキーバインドの問題

azerty レイアウトのキーボードを使っている場合、特定のキーバインドに問題が発生します。XMonad.Config.Azerty モジュールを使うことで問題は解決します。

GNOME 3 の mod4+p で dmenu が起動するかわりにディスプレイの設定が変更されてしまう

gnome-control-center のディスプレイ設定を切り替える必要がない場合、ユーザーで以下を実行することで xrandr プラグインで Super+p を使用するのを止めさせることができます:

$ dconf write /org/gnome/settings-daemon/plugins/xrandr/active false

VirtualBox でフォーカスしたボーダーの問題

Virtualbox には既知の問題 (Ticket #6479) が存在し、フォーカスされたウィンドウのボーダーに問題が発生します。xcompmgr などのコンポジットマネージャをインストールして vboxvideo の挙動を上書きすることで解決できます。

Steam のゲーム (Half-Life, Left 4 Dead, …) と xmonad

Source エンジンを使っているゲーム (Half-Life など) で問題が発生することがあります。ゲームが起動しなかったり黒い画面から進まないときは、ウィンドウモードで起動してみてください: ライブラリのゲームを右クリックして、起動オプションに以下のように入力 ([3] を参照):

-windowed

manage フックを使用してゲームのウィンドウをフロートさせる方法もあります。例えば、Half-Life の場合なら以下の行を使います:

className =? "hl_linux" --> doFloat

参照