awesome
awesome は、高度な設定が可能で、次世代の、X 向けの動的なウィンドウマネージャです。主なターゲットは、パワーユーザーや開発者、その他日常的にコンピュータを扱っていてGUI環境に細かい管理が欲しいと願うすべての人たちに設定されています。プログラミング言語 Lua を使って拡張されます。
前提条件
サービス
これらのうち1つだけを選択します:
- elogind: スタンドアロンな logind パッケージ。OpenRC またはその他の init システムとの併用のために、systemd プロジェクトから抽出されました。
- systemd: systemd のセッション追跡部分を利用します。systemd の利用者であればここで何らかの先陣に立ったりせずに済みます。
その他
- D-Bus: D-Bus メッセージバスシステムの使用を有効化します。
- polkit: システム全体のサービスへの権限を管理する polkit フレームワークを有功化します。
- udisks: ストレージ関係のいくつかのサービスのサポートを有効化します。
X サーバ
Xorg/Guide の指示に従って X 環境を構築してください。
X サーバを開始する
X を開始するためには、以下のいずれかの方法を利用することができます:
- ディスプレイマネージャ: ユーザにグラフィカルなログイン画面を提示します。
- ディスプレイマネージャを使わずに X を使う: シングルユーザシステムの場合、ディスプレイマネージャは不要な資源の浪費と思うことがあるかもしれません。
インストール
USE フラグ
USE flags for x11-wm/awesome Dynamic floating and tiling window manager
dbus
|
Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
gnome
|
Add GNOME support |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
Emerge
x11-wm/awesome のインストール:
root #
emerge --ask x11-wm/awesome
設定
起動
awesome を起動するには、X サーバを開始するの指示に従うか、または startx を利用します。
elogind サポートを使って startx を使うには、elogind を準備したうえで、以下のファイルを作成します:
exec dbus-launch --sh-syntax --exit-with-session awesome
設定ファイル
awesomeのデフォルトの設定ファイルは~/.config/awesome/rc.luaに置かれます。そのようなディレクトリファイルが存在しない場合は、自分で作成する必要があります。デフォルトの設定ファイルはawesomeといっしょに提供されていて、/etc/xdg/awesome/rc.luaにあります。この設定ファイルをユーザーのホームディレクトリにコピーしてください。
まずディレクトリawesome/を作成します:
user $
mkdir -p ~/.config/awesome/
次に設定ファイルrc.luaをコピーします:
user $
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
もしx11-terms/xtermがインストールされていないなら、それをインストールするか、デフォルトの端末エミュレータをシステムで利用可能な端末エミュレータに変更しましょう。デフォルトの端末エミュレータをkde-apps/konsoleに含まれるkonsoleに設定するには、次のようにします:
-- This is used later as the default terminal and editor to run.
terminal = "konsole"
設定ファイルを変更した後には、設定ファイルにエラーが無いかチェックするといいでしょう:
user $
awesome -k
✔ Configuration file syntax OK
media-gfx/feh パッケージを通じた壁紙サポートを追加:
root #
emerge --ask media-gfx/feh
例えば、awsetbgを使って壁紙を設定するには、~/.config/awesome/theme/theme.luaを編集します:
theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }
あるいは単純に theme の wallpaper プロパティを設定します:
theme.wallpaper = ".config/awesome/themes/awesome-wallpaper.png"
タグ
awesomeのタグとは、1個以上のアプリケーションが起動している仮想デスクトップに与えられる名前です。タグには好きな記号を付けることができます:
-- {{{ Tags
tags = {}
for s = 1, screen.count() do
tags[s] = awful.tag({ "➊", "➋", "➌", "➍" }, s, layouts[1])
end
-- }}}
メニュー
以下はawesomeメニューのカスタマイズ例です:
-- {{{ Menu
myawesomemenu = {
{ "manual", terminal .. " -e man awesome" },
{ "edit config", editor_cmd .. " " .. awesome.conffile },
{ "reload", awesome.restart },
{ "quit", awesome.quit },
{ "reboot", "reboot" },
{ "shutdown", "shutdown" }
}
appsmenu = {
{ "urxvt", "urxvt" },
{ "sakura", "sakura" },
{ "ncmpcpp", terminal .. " -e ncmpcpp" },
{ "luakit", "luakit" },
{ "uzbl", "uzbl-browser" },
{ "firefox", "firefox" },
{ "chromium", "chromium" },
{ "thunar", "thunar" },
{ "ranger", terminal .. " -e ranger" },
{ "gvim", "gvim" },
{ "leafpad", "leafpad" },
{ "htop", terminal .. " -e htop" },
{ "sysmonitor", "gnome-system-monitor" }
}
gamesmenu = {
{ "warsow", "warsow" },
{ "nexuiz", "nexuiz" },
{ "xonotic", "xonotic" },
{ "openarena", "openarena" },
{ "alienarena", "alienarena" },
{ "teeworlds", "teeworlds" },
{ "frozen-bubble", "frozen-bubble" },
{ "warzone2100", "warzone2100" },
{ "wesnoth", "wesnoth" },
{ "supertuxkart", "supertuxkart" },
{ "xmoto" , "xmoto" },
{ "flightgear", "flightgear" },
{ "snes9x" , "snes9x" }
}
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu },
{ "apps", appsmenu },
{ "games", gamesmenu },
{ "terminal", terminal },
{ "web browser", browser },
{ "text editor", geditor }
}
})
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
menu = mymainmenu })
-- }}}
日時
以下は日時フォーマットのカスタマイズ例です。フォーマット構文は>%Y-%m-%d %H:%M
です。2番目のオプション 60
は更新間隔(秒)です。
-- {{{ Wibox
-- テキスト時刻ウィジェットを作成する
mytextclock = wibox.widget.textclock(" %Y-%m-%d %H:%M ", 60)
-- }}}
フォーマットオプションについての詳しい情報はdate --helpを参照してください。
ボリューム制御
media-sound/volumeicon を使うと、自動で音量キーを扱うことができ、トレイ上のアイコンとして音量レベルを表示できます。
root #
emerge --ask media-sound/volumeicon
~/.xinitrcの中からvolumeiconを自動起動します:
volumeicon &
exec [...]
他に軽量な方法として、ボリュームキーの処理を直接awesome設定ファイルに追加することもできます:
awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -q sset Master 5%-") end)
awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -q sset Master 5%+") end)
MPD マルチメディアキー
MPD 向けのマルチメディアキーバインディングを追加するためには media-sound/mpc をインストールします:
root #
emerge --ask media-sound/mpc
次に、マルチメディアキーを適切なコマンドに割り当てるために、awesomeの設定を更新します。
awful.key({ }, "XF86AudioNext",function () awful.util.spawn( "mpc next" ) end),
awful.key({ }, "XF86AudioPrev",function () awful.util.spawn( "mpc prev" ) end),
awful.key({ }, "XF86AudioPlay",function () awful.util.spawn( "mpc play" ) end),
awful.key({ }, "XF86AudioStop",function () awful.util.spawn( "mpc pause" ) end),
ウィンドウの隙間をなくす
ターミナルのウィンドウ間では特に、ウィンドウ間の隙間が見えることがあるでしょう。これらは次のように size_hints_honor = false
プロパティを awful.rules.rules
テーブルの中に挿入することで消すことができます:
awful.rules.rules = {
{ rule = { },
properties = { size_hints_honor = false, -- Remove gaps
border_width = beautiful.border_width,
border_color = beautiful.border_normal,
...
Xephyr を使ってコンフィグをデバッグする
Xephyr は X サーバの実体をクライアントウィンドウの中に作成して、新しいコンフィグファイルをデバッグするのに有用なツールです。
user $
Xephyr -ac -nolisten tcp -br -noreset -screen 800x600 :1
このコマンドで 800x600 のウィンドウを開きます。awesome をこの中で動かすには、新しいターミナルで次のコマンドを実行します。
user $
DISPLAY=:1.0 awesome
これでウィンドウの中で awesome を起動できます。
キーボード・ショートカット
これらは最もよく使うデフォルトのキーボードショートカットです:
- Super+Mouse1 = マウスでクライアントを移動する
- Super+Mouse2 = マウスでクライアントをリサイズする
- Super+Enter = 端末を開く
- Super+r = コマンドを実行する
- Super+Shift+c = 終了
- Super+m = 最大化
- Super+n = 最小化
- Super+Ctrl+n = 最小化したクライアントを元に戻す
- Super+f = フルスクリーン
- Super+Tab = 前のクライアントに切り替える
- Super+Ctrl+space = フロート化
- Super+j = 左のクライアントをハイライト
- Super+k = 右のクライアントをハイライト
- Super+Shift+j = クライアントを右に動かす
- Super+Shift+k = クライアントを左に動かす
- Super+l = タイル型のクライアントをリサイズ
- Super+h = タイル型のクライアントをリサイズ
- Super+left / right = タグを切り替える
- Super+1-9 = タグを切り替える
- Super+Shift+1-9 = クライアントをタグへ移動
awesome をより使いやすくするため、Alt+Tab のようなカスタムキーバインディングを設定することもできます。例えば Alt+Tab で一つ前のウィンドウに切り替えられるようにする場合は次のようにします。
-- {{{ Key bindings
globalkeys = awful.util.table.join(
...
-- alt + tab
awful.key({ "Mod1", }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
-- }}}
外部資料
- awesome wiki の User Configuration Files (web.archive.org)
- Desktop profile switching USE default to elogind