「Awesome」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎自動実行: 情報を更新)
 
(5人の利用者による、間の42版が非表示)
2行目: 2行目:
 
[[Category:動的ウィンドウマネージャ]]
 
[[Category:動的ウィンドウマネージャ]]
 
[[Category:タイル型ウィンドウマネージャ]]
 
[[Category:タイル型ウィンドウマネージャ]]
[[cs:Awesome]]
+
[[de:Awesome]]
 
[[en:Awesome]]
 
[[en:Awesome]]
[[es:Awesome]]
 
[[fr:Awesome3]]
 
[[it:Awesome]]
 
[[ko:Awesome]]
 
 
[[ru:Awesome]]
 
[[ru:Awesome]]
[[sv:Awesome]]
+
[[zh-hans:Awesome]]
  +
{{Related articles start}}
[[zh-CN:Awesome]]
 
  +
{{Related|ウィンドウマネージャ}}
[[Wikipedia:awesome (window manager)|awesome]] ウェブサイトより:
 
  +
{{Related|タイル型ウィンドウマネージャの比較}}
  +
{{Related|デスクトップ環境}}
  +
{{Related|ディスプレイマネージャ}}
  +
{{Related|ファイルマネージャの機能}}
  +
{{Related|Xdg-menu}}
  +
{{Related articles end}}
  +
[https://awesomewm.org/ awesome のウェブサイト] より:
   
"''[http://awesome.naquadah.org/ awesome] は高度に設定可能な、次世代の X フレームワークウィンドウマネージャです。高速に動作し、拡張しやすく、GNU GPLv2 ライセンスを使っています。''
+
:''awesome は高度に設定可能な、次世代の [[X]] フレームワークウィンドウマネージャです。高速に動作し、拡張しやすく、GNU GPLv2 ライセンスを使っています。awesome はパワーユーザーや開発者など、日常的に PC を使い、きめ細かいグラフィカル環境を求めている全ての人をターゲットにしています。''
 
''パワーユーザーや開発者など、日常的に PC を使い、きめ細かいグラフィカル環境を求めている全ての人をターゲットにしています。''"
 
   
 
==インストール==
 
==インストール==
   
  +
{{pkg|awesome}} パッケージを[[インストール]]してください。開発版を使うには、[[Arch User Repository|AUR]] の {{AUR|awesome-git}} をインストールしてください。開発版は不安定で、設定 API が異なっている可能性があります。
{{pkg|awesome}} は[[公式リポジトリ]]からインストールします。
 
   
  +
== 起動 ==
プレリリース版を使うには、[[Arch User Repository|AUR]] の {{AUR|awesome-git}} を使って下さい。安定していないと考えられるバージョンで、設定構文が異なっているかもしれません。
 
   
  +
[[xinit]] を使用して {{ic|awesome}} を実行します。付属の [[xsession]] ファイルを使用するには、[[ディスプレイマネージャ]] を参照してください。
== awesome を起動 ==
 
   
=== ログインマネージャを使わずに起動 ===
+
=== GNOME を使用する ===
ログインマネージャを使わずに awesome を起動するには、シンプルにスタートアップスクリプト (例: ~/.xinitrc) に {{Ic|exec awesome}} を追加してください。
 
   
  +
[[GNOME]] をセットアップして、awesome をビジュアルインターフェイスとして使用し、GNOME をバックグラウンドで動作させることができます。{{AUR|awesome-gnome}} を参照してください。
logind (または consolekit) セッションを維持する方法などについては [[xinitrc]] を見て下さい。
 
   
  +
=== XFCE ===
ログインさえせずに awesome を起動させることも可能です。[[Start X at Login]] を見て下さい。
 
   
=== ログインマネージャで起動 ===
+
[[Xfce#別のウィドウマネージャを使う]] を見てください。
ログインマネージャから awesome を起動するには、[[Display Manager|この記事]]を見て下さい。
 
 
==== KDM ====
 
root で作成:
 
 
{{hc|/usr/share/apps/kdm/sessions/awesome.desktop|
 
[Desktop Entry]
 
Name=Awesome
 
Comment=Tiling Window Manager
 
Type=Application
 
Exec=/usr/bin/awesome
 
TryExec=/usr/bin/awesome
 
}}
 
   
 
==設定==
 
==設定==
59行目: 46行目:
 
awesome がアップデートされると設定ファイルのシンタックスはしばしば変更されます。よって、awesome に問題が起こったり、設定を変更しようとする時は、上のコマンドを繰り返すことを覚えておいて下さい。
 
awesome がアップデートされると設定ファイルのシンタックスはしばしば変更されます。よって、awesome に問題が起こったり、設定を変更しようとする時は、上のコマンドを繰り返すことを覚えておいて下さい。
   
awesome の設定について詳しくは、[http://awesome.naquadah.org/wiki/Awesome_3_configuration awesome wikiフィグレーションページ]を見て下さい。
+
awesome の設定について詳しくは、[https://awesomewm.org/apidoc/documentation/90-FAQ.md.html#Configuration awesome のドキュメトの設定セクション] を見て下さい。
  +
  +
==== 設定のサンプル ====
   
===設定のサンプル===
 
 
{{Note|awesome の設定構文は定期的に変わるので、ダウンロードしたファイルに修正を入れる必要があるかもしれません。}}
 
{{Note|awesome の設定構文は定期的に変わるので、ダウンロードしたファイルに修正を入れる必要があるかもしれません。}}
   
rc.lua のサンプル以下にあります:
+
rc.lua のサンプル以下にあります:
   
* http://git.sysphere.org/awesome-configs/tree/ - Adrian C の Awesome 3.4 設定集 (anrxc)
+
* [https://github.com/awesomeWM/awesome/issues/1395 Awesome スクリーンショットスレッド]
* http://pastebin.com/f6e4b064e - Darthlukan の awesome 3.4 設定
+
* [https://github.com/setkeh/Awesome Setkeh's Awesome 設定]
  +
* [https://github.com/copycat-killer/awesome-copycats ステータスバーなど、さまざまなテーマをサポートするユーザー設定]
* http://www.ugolnik.info/downloads/awesome/rc.lua (screen) - 小さなタイトルバーとステータスバーが付いた Awesome 3
 
* https://github.com/setkeh/Awesome - [[User:Setkeh|Setkeh]] の 3.4 の設定
+
* [https://github.com/WillPower3309/awesome-dotfiles 2 モダンなテーマを備えた設定]
* https://github.com/setkeh/Awesome-Laptop-3.5 - [[User:Setkeh|Setkeh]] の 3.5 の設定
 
* ユーザによる設定ファイル http://awesome.naquadah.org/wiki/User_Configuration_Files
 
   
  +
=== 拡張 ===
===Xephyr を使って rc.lua をデバッグする===
 
   
  +
awesome にはいくつか拡張が存在します:
デスクトップを壊さずに rc.lua をデバッグする好ましい方法です。まず rc.lua をコピーして新しいファイル、rc.lua.new を作り、そのファイルに必要な修正を加えます。それから awesome の新しいインスタンスを rc.lua.new を設定ファイルとして Xephyr 内で実行します (X の中で他の X クライアントウィンドウを動かす):
 
   
  +
{| class="wikitable"
$ Xephyr :1 -ac -br -noreset -screen 1152x720 &
 
  +
! 拡張
$ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new
 
  +
! 機能性
  +
! バージョン
  +
|-
  +
|
  +
* [https://github.com/guotsuan/awesome-revelation Revelation]
  +
| 開いているすべてのクライアントのビューを表示する
  +
| Awesome 3.5+
  +
|-
  +
|
  +
* [https://github.com/bioe007/awesome-shifty Shifty]
  +
| 動的タグ付け
  +
| Awesome 3.5
  +
|-
  +
|
  +
* [https://awesomewm.org/apidoc/libraries/naughty.html Naughty]
  +
| ポップアップ通知
  +
| Awesome 3.5+
  +
|-
  +
|
  +
* [https://github.com/vicious-widgets/vicious Vicious]
  +
* [https://github.com/hoelzro/obvious Obvious]
  +
* [https://code.google.com/archive/p/bashets/ Bashets]
  +
| 追加 [https://awesomewm.org/recipes/ ウィジェット]
  +
| Awesome 3.5
  +
|-
  +
|}
   
  +
=== 自動実行 ===
このアプローチの有利な点は、もし rc.lua.new を破壊したときでも、現在の awesome デスクトップを破壊しないということです(全ての X アプリがクラッシュし保存していないファイルが失われることがない)。設定に満足したら、rc.lua.new を rc.lua に変えて awesome を再起動します。
 
   
  +
[[XDG Autostart]] 仕様を実装するには、{{Pkg|xorg-xrdb}} と {{Pkg|dex}} をインストールし、次の行を {{ic|~/.config/awesome/rc.lua}}に追加します:
2011年7月現在、以上のことは {{AUR|awmtt}} でも可能です。
 
   
  +
{{hc|~/.config/awesome/rc.lua|<nowiki>
==テーマ==
 
  +
awful.spawn.with_shell(
  +
'if (xrdb -query | grep -q "^awesome\\.started:\\s*true$"); then exit; fi;' ..
  +
'xrdb -merge <<< "awesome.started:true";' ..
  +
-- list each of your autostart commands, followed by ; inside single quotes, followed by ..
  +
'dex --environment Awesome --autostart'
  +
)
  +
</nowiki>}}
   
  +
あるいは、{{ic|autorun.sh}} を [[作成]] して以下を挿入し実行します:
[http://awesome.naquadah.org/wiki/Beautiful Beautiful] という lua ライブラリを使うことで awesome にテーマを適用するのに外部ファイルを使うことができるようになります。{{ic|rc.lua}} を修正せずに動的に awesome のカラーや壁紙を変更できるためとても便利です。
 
   
  +
{{hc|~/.config/awesome/autorun.sh|
デフォルトのテーマは {{ic|/usr/share/awesome/themes/default}} です。これを {{ic|~/.config/awesome/themes/default}} にコピーして {{ic|rc.lua}} の {{ic|theme_path}} を変更してください。
 
  +
#!/bin/sh
beautiful.init(awful.util.getdir("config") .. "/themes/default/theme.lua")
 
   
  +
run() {
詳しい説明は[http://awesome.naquadah.org/wiki/Beautiful こちら]。
 
  +
if ! pgrep -f "$1" ;
  +
then
  +
"$@"&
  +
fi
  +
}
  +
}}
   
  +
次に、それを [[ヘルプ:読み方#実行可能属性の付与|実行可能]] にします。
[http://awesome.naquadah.org/wiki/Beautiful_themes サンプルテーマ]。
 
   
  +
自動起動するプログラムを追加するには、{{ic|run "program [some argument]"}} を {{ic|autorun.sh}} に追加するだけです。{{ic|run}} 関数は、同じ引数を持つ {{ic|program}} のインスタンスがすでに存在するかどうかを確認し、存在しない場合にのみ {{ic|program}} を実行します。{{ic|autorun.sh}} を実行して確認できます。
===壁紙を設定する===
 
{{out of date|バージョン 3.5 の Awesome では awsetbg コマンドは提供されていません、かわりに gears モジュールを使います。使い方はデフォルトの設定に書かれています。}}
 
   
  +
$ ~/.config/awesome/autorun.sh
Beautiful が壁紙を管理できるので、{{ic|.xinitrc}} や {{ic|.xsession}} などのファイルで壁紙を設定する必要はありません。またテーマごとに特定の壁紙を使うようにすることもできます。デフォルトのテーマファイルには wallpaper_cmd キーがあり、{{ic|beautiful.init}}("path_to_theme_file") が起動したときに与えられたコマンドが実行されます。Beautiful に壁紙について関わって欲しくない場合はコマンドを変えたりキーを削除してください。
 
   
例えば、{{ic|awsetbg}} を使って壁紙を設定するには、{{ic|theme.lua}} に選択たものを書きます:
+
すべて問題なければ、次の行を {{ic|rc.lua}} に追加します:
   
theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }
+
{{hc|~/.config/awesome/rc.lua|
  +
awful.spawn.with_shell("~/.config/awesome/autorun.sh")
  +
}}
   
  +
=== キーボードレイアウトの変更 ===
{{Note|awsetbg を動かすにはデスクトップの壁紙を管理するプログラムをインストールする必要があります。'''[[Feh]]''' など。}}
 
   
  +
キーボードレイヤーを設定するには複数の方法があります。
====ランダム壁紙画像====
 
ランダムに壁紙をローテーションするには、{{ic|wallpaper_cmd}} を消去して、{{ic|.xinitrc}} に以下のスクリプトを追加してください:
 
{{bc|
 
while true;
 
do
 
awsetbg -r <path/to/the/directory/of/your/wallpapers>
 
sleep 15m
 
done &
 
}}
 
   
  +
==== setxkbmap キーボードレイアウトの方法 ====
==Tips & Tricks==
 
他の awesome ユーザーに役に立つと思われるものを自由に追加してください。
 
   
  +
awesome のデフォルト設定では、レイアウトウィジェットがすでに有効化されています。
===awesome を GNOME のウィンドウマネージャとして使う===
 
GNOME には"すぐに使える"というアドバンテージがあります。awesome をビジュアルインターフェースとして使うために GNOME をセットアップすることもできますが、GNOME がバックグラウンドで動いているということはあなたのプレッシャーになるかもしれません。GNOME 3 を使っているならば、シンプルに {{AUR|awesome-gnome}} をインストールして、GDM でログインするときに "Awesome GNOME" セッションを選ぶということもできます。詳しくは [http://awesome.naquadah.org/wiki/Quickly_Setting_up_Awesome_with_Gnome awesome wiki] を見て下さい。
 
   
  +
複数のレイヤーを一時的に設定するには、次を実行します。
===compiz のようなエフェクトを使う===
 
   
  +
$ setxkbmap -layout "us,de"
Revelation でクライアントの見た目を変えることができます; クライアントを左クリックすれば、表示されているクライアントの最初のタグが表示されクライアントが浮かび上がりフォーカスします。さらに Enter キーで現在フォーカスされているクライアントが表示され、Escape でアボートします。
 
   
  +
ウィジェットをクリックすると、レイアウトが切り替わります。キーコンボでレイアウトを変更したい場合は、{{ic|-option "grp:alt_shift_toggle"}} を追加します。たとえば、{{ic|Shift+Alt}} を押してレイアウトを変更できるようになります。完全なコマンドは次のようになります:
http://awesome.naquadah.org/wiki/Revelation
 
   
  +
$ setxkbmap -layout "us,de" -option "grp:alt_shift_toggle"
===awesome 3 で wibox を表示・隠す===
 
   
  +
EN および RU レイアウトを音声異体字で設定するには:
Modkey-b でデフォルトステータスバーの表示を切り替えるようマップするには (awesome 2.3 でのデフォルト)、rc.lua の ''globalkeys'' に以下を追加してください:
 
   
  +
$ setxkbmap -model pc105 -option "grp:shifts_toggle,compose:sclk" "us,ru(phonetic_YAZHERTY)"
awful.key({ modkey }, "b", function ()
 
mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
 
end),
 
   
  +
どこ
===printscreen を有効にする===
 
   
  +
* 作成キーは "Scroll Lock"、言語切り替えは 左Shift+右Shift に設定されています。
awesome で PrtScr ボタンを有効にするにはスクリーンキャプチャプログラムが必要です。Arch リポジトリから簡単に使える Scrot がいいでしょう。
 
  +
* キーボードは 105 キーです
   
  +
[[LightDM]] を使用してセッションを開始する場合は、上記のコマンドを [[LightDM#環境変数|.xprofile]] ファイルに追加します。
次を実行してください:
 
# pacman -S scrot
 
   
  +
==== rc.lua キーボードレイアウトの方法 (v.4 以降) ====
必要な依存ライブラリもインストールしてください。
 
   
  +
awesome 自体を使用して切り替えることができます (v.4 から) {{ic|Shift+Alt}} を押してレイアウトを変更するには、次の 2 行を {{ic|globalkeys}} に追加します。
次に PrtScr のキーの名前を調べます、ほとんど場合 "Print" ですが確認するに越したことはありません。
 
   
  +
{{hc|~/.config/awesome/rc.lua|<nowiki>
次を実行してください:
 
  +
-- {{{ Key bindings
# xev
 
  +
globalkeys = gears.table.join(
  +
-- ...
  +
awful.key({ "Shift" }, "Alt_L", function () mykeyboardlayout.next_layout(); end),
  +
awful.key({ "Mod1" }, "Shift_L", function () mykeyboardlayout.next_layout(); end)
  +
)
  +
</nowiki>}}
   
  +
これには、setxkbmap コマンドまたは X 設定ファイルで切り替えられるキーボードレイアウトをセットアップする必要があります。
PrtScr ボタンを押すと、次のように出力されるはずです:
 
KeyPress event ....
 
root 0x25c, subw 0x0, ...
 
state 0x0, keycode 107 (keysym 0xff61, '''Print'''), same_screen YES,
 
....
 
   
  +
レイアウトを設定するための適切なコマンドを見つけたら、それを [[Awesome#自動起動|自動起動]] に追加します。
上の場合、キーの名前は Print です。
 
   
  +
==== Xorg の方法 ====
さあ awesome の設定をしましょう!
 
   
globalkeys がある場所に次の Lua コードを加えさい:
+
[[Xorg/キーボード設定]] 参照しください
   
  +
=== テーマ ===
awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'") end),
 
   
  +
[https://awesomewm.org/apidoc/libraries/beautiful.html Beautiful] という lua ライブラリを使うことで awesome にテーマを適用するのに外部ファイルを使うことができるようになります。{{ic|rc.lua}} を修正せずに動的に awesome のカラーや壁紙を変更できるためとても便利です。
また、上のコードでは ~/screenshots/ にスクリーンショットを保存します、あなたが保存したい場所に編集してください。
 
   
  +
デフォルトテーマは {{ic|/usr/share/awesome/themes/default}} にあります。それを {{ic|~/.config/awesome/themes/default}} にコピーしてください。(オプションで全てコピーすることもできます)、{{ic|rc.lua}} を変更してください:
===動的タグ===
 
   
  +
-- beautiful.init(gears.filesystem.get_configuration_dir() .. "/themes/default/theme.lua")
[http://awesome.naquadah.org/wiki/Eminent Eminent] は小さな lua ライブラリで、wmii-スタイルの動的タグを簡単に使えるようにするためのモンキーパッチです。shifty とは違い、eminent は完全なタグシステムを提供することは目指しておらず、動的タグをできるだけシンプルに実装しています。実際、eminent ライブラリを使うのに、rc.lua を修正する必要は全くありません。eminent は自立して働きます。
 
  +
local theme_path = string.format("%s/.config/awesome/themes/%s/theme.lua", os.getenv("HOME"), "default")
  +
beautiful.init(theme_path)
   
  +
テーマオプションについては [https://awesomewm.org/apidoc/libraries/beautiful.html] を参照してください。例えばギャップを追加するには、{{ic|rc.lua}} のテーマセクションに以下を追加します:
[http://awesome.naquadah.org/wiki/Shifty Shifty] は動的タグ機能の Awesome 3 拡張です。また、2つのシンプルな設定変数とキーバインドを設定するだけで、あなたをデスクトップのマスターたらしめる、設定に匹敵する素晴らしいクライアントを実装しています。
 
   
  +
beautiful.useless_gap = 5
===スペースインベーダー===
 
[http://awesome.naquadah.org/wiki/Space_Invaders Space Invaders] は Awesome Lua API の可能性を示すためのデモです。
 
   
  +
{{ic|rc.lua}} のテーマセクションの下部にあります。
3.4-rc1 リリースからの Awesome パッケージには含まれていません。
 
   
  +
==== 壁紙 ====
===Naughty ポップアップ通知===
 
[http://awesome.naquadah.org/wiki/Naughty naughty についての awesome wiki ページ]を見て下さい。
 
   
  +
Beautiful が壁紙を管理できるので、{{ic|.xinitrc}} や {{ic|.xsession}} などのファイルで壁紙を設定する必要はありません。またテーマごとに特定の壁紙を使うようにすることもできます。
===ポップアップメニュー===
 
awesome3 ではデフォルトでシンプルなメニューがありますが、メニューをカスタマイズすることも簡単にできます。ただし、あなたが 2.x の awesome を使っている場合は、''[http://awesome.naquadah.org/wiki/Awful.menu awful.menu]'' を見て下さい。
 
   
  +
壁紙を指定するには 2 つの方法があります:
freedesktop.org メニューが作りたいのなら、''[https://github.com/terceiro/awesome-freedesktop awesome-freedesktop]'' を見て下さい。
 
   
  +
* あなたのテーマ.{{ic|theme.lua}}: {{bc|<nowiki>
サンプル:
 
  +
-- absolute path
{{bc|1=
 
  +
theme.wallpaper = "/path/to/wallpaper.png"
myawesomemenu = {
 
{ "lock", "xscreensaver-command -activate" },
 
{ "manual", terminal .. " -e man awesome" },
 
{ "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
 
{ "restart", awesome.restart },
 
{ "quit", awesome.quit }
 
}
 
   
  +
-- relative to your themes directory
mycommons = {
 
  +
theme.wallpaper = theme_path .. "path/to/wallpaper.png"
{ "pidgin", "pidgin" },
 
  +
</nowiki>}}
{ "OpenOffice", "soffice-dev" },
 
  +
* または、{{ic|rc.lua}} 内、{{ic|Beautiful.init}} と {{ic|local function set_wallpaper}} の間のどこか: {{bc|<nowiki>
{ "Graphic", "gimp" }
 
  +
-- absolute path
}
 
  +
beautiful.wallpaper = "/path/to/wallpaper.png"
   
  +
-- 設定ディレクトリからの相対パス
mymainmenu = awful.menu.new({ items = {
 
  +
beautiful.wallpaper = awful.util.get_configuration_dir() .. "path/to/wallpaper.png"
{ "terminal", terminal },
 
  +
</nowiki>}}
{ "icecat", "icecat" },
 
  +
{ "Editor", "gvim" },
 
  +
背景画像をランダムに表示するには、{{ic|rc.lua}} に [https://gist.github.com/anonymous/37f3b1c58d6616cab756] を追加します。(v3.5+) 指定したディレクトリから自動的に画像を取得するには、代わりに[https://gist.github.com/andreymal/500b96c3c9e63944007d4b9bd5c34e2e] を使用します。
{ "File Manager", "pcmanfm" },
 
  +
{ "VirtualBox", "VirtualBox" },
 
  +
== ヒントとテクニック ==
{ "Common App", mycommons, beautiful.awesome_icon },
 
  +
{ "awesome", myawesomemenu, beautiful.awesome_icon }
 
  +
=== wibox を表示・隠す===
}
 
  +
})
 
  +
awesome 4.0 の場合:
}}
 
  +
  +
awful.key({ modkey }, "b",
  +
function ()
  +
myscreen = awful.screen.focused()
  +
myscreen.mywibox.visible = not myscreen.mywibox.visible
  +
end,
  +
{description = "toggle statusbar"}
  +
),
  +
  +
ModKey が押されている間のみ Wibox を表示する (または他のアクションを実行する) ことは、awesome 内からは不可能ですが、それを行う Python スクリプトがあります: [https://github.com/grandchild/autohidewibox autohidewibox]
  +
  +
=== スクリーンショット ===
  +
  +
{{ic|PrtSc}} ボタンが正しく割り当てられていることを確認するには、[[キーボード入力]] を参照してください。次に、[[スクリーンキャプチャ#scrot|scrot]] などの [[スクリーンキャプチャ|スクリーンキャプチャプログラム]] をインストールします。
  +
  +
{{ic|globalkeys}} 配列に以下を追加します:
  +
  +
awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'", false) end),
  +
  +
この関数はスクリーンショットを {{ic|~/screenshots/}} 内に保存します、必要に応じて編集して下さい。
   
===awesome ウィジェ===
+
=== ウィンドウのギャプを無くす ===
''awesome において、ウィジェットとはウィジェットボックス (ステータスバーやタイトルバー) に追加することができるオブジェクトのことであり、システムに関する様々な情報を表示できます。ウィンドウマネージャから情報を読むのに便利です。ウィジェットは簡単に使うことが可能でありながら柔軟性があります。'' -- ソース [http://awesome.naquadah.org/wiki/Widgets_in_awesome Awesome Wiki: Widgets].
 
   
  +
awesome 3.4 では、ウィンドウ間の小さなギャップを取り除くことが可能です。''awful.rules.rules'' テーブルには ''properties'' セクションがあるので、それに追加します。
'''Wicked''' と呼ばれる広く使われているウィジェットライブラリがあり、MPD ウィジェット、CPU 使用量、メモリ使用量などの多くのウィジェットを提供します。詳しくは [http://awesome.naquadah.org/wiki/Wicked Wicked page] を見て下さい。
 
   
  +
size_hints_honor = false
awesome v3.4 で Wicked の代わりになるものとしては '''[http://awesome.naquadah.org/wiki/Vicious Vicious]''', '''[http://awesome.naquadah.org/wiki/Obvious Obvious]''', '''[http://awesome.naquadah.org/wiki/Bashets Bashets]''' などがあります。vicious を使うのなら、[http://git.sysphere.org/vicious/tree/README vicious documentation] も見るといいでしょう。
 
   
 
===透過===
 
===透過===
Awesome は {{Pkg|xcompmgr}} ({{AUR|xcompmgr-git}}) や compton({{AUR|compton-git}})、{{AUR|cairo-compmgr-git}} などの[[Xorg#コンポジット|コンポジットマネージャ]]を通して完全透過をサポートしています。git 版の xcompmgr を使いたいのなら、[https://aur.archlinux.org/packages.php?ID=16554 AUR] にあります。
 
   
  +
[[Xorg#コンポジット]]を見て下さい。
xcompmgr を使うには、次の一行を ~/.xinitrc に追加してください:
 
xcompmgr &
 
オプションについては ''man xcompmgr'' や [[xcompmgr]] を見て下さい。
 
   
  +
awesome 3.5 では、ウィンドウ透過はシグナルを使って動的に設定することもできます。例えば、あなたの {{ic|rc.lua}} に以下を加えることができます:
{{out of date|Awesome 3.5 は add_signal API を connect_signal に変更しています。}}
 
awesome 3.4 では、ウィンドウ透過はシグナルを使って動的に設定することもできます。例えば、あなたの rc.lua に以下を加えることができます:
 
   
client.add_signal("focus", function(c)
+
client.connect_signal("focus", function(c)
 
c.border_color = beautiful.border_focus
 
c.border_color = beautiful.border_focus
 
c.opacity = 1
 
c.opacity = 1
 
end)
 
end)
client.add_signal("unfocus", function(c)
+
client.connect_signal("unfocus", function(c)
 
c.border_color = beautiful.border_normal
 
c.border_color = beautiful.border_normal
 
c.opacity = 0.7
 
c.opacity = 0.7
 
end)
 
end)
'''add_signal のエラーが出た場合は、代わりに connect_signal を使って下さい。'''
 
   
  +
==== Conky ====
conky を使っていて、デスクトップの代わりに conky にウィンドウを持たせたい場合、~/.conkyrc を次のように編集してください:
 
  +
  +
conky を使っていて、デスクトップの代わりに conky にウィンドウを持たせたい場合、{{ic|~/.conkyrc}} を次のように編集してください:
   
 
own_window yes
 
own_window yes
246行目: 272行目:
 
own_window_type desktop
 
own_window_type desktop
   
  +
上記のように設定していないと、全てのウィンドウが完全に透過してしまうなどの不可思議な現象が発生します。また、conky がデスクトップ上に透過ウィンドウを作成すると、awesome の {{ic|rc.lua}} で定義したアクションは conky が存在する場所では動作しないので注意してください。
Otherwise strange behavior may be observed, such as all windows becoming fully transparent. Note also that since conky will be creating a transparent window on your desktop, any actions defined in awesome's rc.lua for the desktop will not work where conky is.
 
   
  +
==== wiboxes ====
Awesome 3.1 現在、wiboxes 用に擬似透過がビルドインされています。これを有効にするには、テーマファイルに (~/.config/awesome/themes/default, /usr/share/awesome/themes/default のコピー) 次のように色の部分に16進数の値を2つ加えて下さい:
 
  +
  +
Awesome 3.1 現在、wiboxes 用に擬似透過がビルドインされています。これを有効にするには、テーマファイルに ({{ic|~/.config/awesome/themes/default}}, {{ic|/usr/share/awesome/themes/default}} のコピー) 次のように色の部分に16進数の値を2つ加えて下さい:
   
 
bg_normal = #000000AA
 
bg_normal = #000000AA
254行目: 282行目:
 
"AA" が透明度になります。
 
"AA" が透明度になります。
   
Modkey + PageUp/PageDown によって選択されたウィンドウの透明度を変更するために、community パッケージリポジトリにある tansset-df を使って、以下のように rc.lua を修正することもできます:
+
{{ic|Modkey + PgUp/PgDown}} によって選択されたウィンドウの透明度を変更するために、community パッケージリポジトリにある {{AUR|transset-df}} を使って、以下のように {{ic|rc.lua}} を修正することもできます:
 
 
 
globalkeys = awful.util.table.join(
 
globalkeys = awful.util.table.join(
269行目: 297行目:
 
)
 
)
   
==== ImageMagick ====
+
=== Widget の間隔 ===
imagemagick の ''display'' コマンドで壁紙を設定すると問題が起こるかもしれません、xcompmgr との互換性に問題があるためです。awsetbg に ''display'' を使うのは他のオプションを設定していないときだけにしましょう。habak, feh, hsetroot などの代わりのプログラムをインストールしてください (''grep -A 1 wpsetters /usr/bin/awsetbg'' で他のオプションが見れます)。
 
   
  +
デフォルトの {{ic|rc.lua}} は、キーボードレイアウトや時計を含むウィジェットを Wibox 内にわずかな間隔で配置します。{{ic|spacing}} プロパティを使用して、ウィジェット間に余分な間隔を追加することができます。
===Autorun プログラム===
 
''[https://awesome.naquadah.org/wiki/Autostart Awesome wiki の Autostart ページ]も見て下さい。''
 
   
  +
{ -- Right widgets
GNOME や KDE とは異なり、awesome は Freedesktop の仕様による autostart にセットされたプログラムを起動しません。しかし、awesome にはプログラムを起動するための機能が (Lua の標準ライブラリの関数である {{Ic|os.execute}} に加えて) 少しばかりあります。GNOME や KDE のようにスタートアップで同じプログラムを起動するには、[[Arch User Repository|AUR]] から {{Pkg|dex}} をインストールして rc.lua から dex を実行してください:
 
  +
layout = wibox.layout.fixed.horizontal,
  +
spacing = 10,
  +
mykeyboardlayout,
  +
...
   
  +
=== ImageMagick ===
os.execute"dex -a -e Awesome"
 
   
  +
imagemagick の ''display'' コマンドで壁紙を設定すると問題が起こるかもしれません、xcompmgr との互換性に問題があるためです。awsetbg に ''display'' を使うのは他のオプションを設定していないときだけにしましょう。habak, feh, hsetroot などの代わりのプログラムをインストールしてください (''grep -A 1 wpsetters /usr/bin/awsetbg'' で他のオプションが見れます)。
スタートアップ時に awesome が起動するアプリケーションのリストをセットアップすることもできます。全てのコマンドの表を作成して、spawn をループで回します:
 
   
  +
=== テキストを awesome-client を使ってウィジェットに渡す ===
do
 
local cmds =
 
{
 
"swiftfox",
 
"mutt",
 
"consonance",
 
"linux-fetion",
 
"weechat-curses",
 
--and so on...
 
}
 
 
for _,i in pairs(cmds) do
 
awful.util.spawn(i)
 
end
 
end
 
 
({{Ic|os.execute}} コマンドに '{{Ic|&}}' を付けて実行呼び出しをすることもできますが、ちゃんとした spawn 関数を使ったほうがおそらくベターでしょう。)
 
 
実行していないプログラムだけを走らせるには、{{Ic|pgrep}} で実行中のプロセスに同じ名前がない見つからないときだけプログラムを走らせるシェルコマンドと spawn を使いましょう:
 
function run_once(prg)
 
awful.util.spawn_with_shell("pgrep -u $USER -x " .. prg .. " || (" .. prg .. ")")
 
end
 
 
例えば、{{Ic|parcellite}} プロセスが実行中でないときだけ {{Ic|parcellite}} を実行するには:
 
 
run_once("parcellite")
 
 
===テキストを awesome-client を使ってウィジェットに渡す===
 
   
 
簡単に awesome ウィジェットにテキストを送ることができます。次のように新しいウィジェットを作ります:
 
簡単に awesome ウィジェットにテキストを送ることができます。次のように新しいウィジェットを作ります:
321行目: 324行目:
 
ウィジェットを wibox に追加するのを忘れないで下さい。
 
ウィジェットを wibox に追加するのを忘れないで下さい。
   
===awesome のデフォルトと違うパネルを使う===
+
=== awesome のデフォルトと違うパネルを使う ===
  +
  +
あなたが awesome の軽量性と機能性を気に入っているが、そのデフォルトのパネルの見た目が気に入らないときは、{{Pkg|xfce4-panel}} など異なるパネルをインストールできます。
  +
  +
インストールしたら {{ic|rc.lua}} の [[#Autorun プログラム|autorun]] セクションに追加してください (方法は割愛) 画面ごとに wibox を作成しているセクション ({{ic|1=mywibox[s] = awful.wibox({ position = "top", screen = s })}} から始まっているところ) をコメントアウトすることもできますが、特にその必要はありません。ただし次を実行して {{ic|rc.lua}} にエラーがないかチェックすることは忘れずに行って下さい:
  +
  +
$ awesome -k rc.lua
  +
  +
また、組み込みの awesome のランチャーの代わりに他のアプリケーションランチャーを起動するには、{{ic|''modkey''+R}} キーバインドを変更する必要があります。例については、[[アプリケーション一覧#アプリケーションランチャー]] を参照してください。また以下を忘れずに追加してください。
   
あなたが awesome の軽量性と機能性を買ってはいるがそのデフォルトのパネルの見た目が気に入らないときは、異なるパネルをインストールできます。xfce4-panel をインストールするには:
 
{{bc|
 
sudo pacman -S xfce4-panel
 
}}
 
勿論、他のパネルも同じようにインストールできます。そして rc.lua の autorun セクションに追加してください(方法は割愛)。画面ごとに wibox を作成しているセクション ("mywibox[s] = awful.wibox({ position = "top", screen = s })" から始まっているところ) をコメントアウトすることもできますが、特にその必要はありません。ただし次を実行して rc.lua にエラーがないかチェックすることは忘れずに:
 
{{bc|
 
awesome -k rc.lua
 
}}
 
また、ビルトインでないアプリケーションランチャー、Xfrun4 や bashrun などを起動するために、"modkey+R" キーバインドを変えておくべきでしょう。[[Openbox_Themes_and_Apps#Application_launchers|Openbox]] のページのアプリケーションランチャーのところに例が載っています。rc.lua に以下を追加するのを忘れないで下さい:
 
 
{{bc|<nowiki>
 
{{bc|<nowiki>
 
properties = { floating = true } },
 
properties = { floating = true } },
337行目: 339行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
{{ic|rc.lua}} にコピーします。
===Java の修正 (GUI がグレーになる)===
 
[https://bbs.archlinux.org/viewtopic.php?pid=450870] からの手順。
 
#community から {{Pkg|wmname}} をインストール
 
#以下のコマンドを実行、もしくは {{ic|.xinitrc}} に追加する: {{bc|wmname LG3D}}
 
   
  +
=== メニューバーのアプリケーションディレクトリ ===
{{Note|
 
If you use a non-reparenting window manager and Java 6, you should uncomment the corresponding line in {{Ic|/etc/profile.d/openjdk6.sh}}
 
   
  +
{{Pkg|awesome}} には [https://awesomewm.org/apidoc/popups_and_bars/menubar.html メニューバー] が含まれます。デフォルトでは、{{ic|''Mod''+p}} を押すと、画面上部に dmenu のようなアプリケーションメニューが開きます。このメニューは、{{ic|$XDG_DATA_DIRS/applications/}} および {{ic|$XDG_DATA_HOME/applications/}} にある {{ic|.desktop}} ファイルを検索します。
If you use a non-reparenting window manager and Java 7, you should uncomment the corresponding line in
 
  +
{{Ic|/etc/profile.d/jre.sh}}
 
  +
{{ic|menubar.menu_gen.all_menu_dirs}} を変更することで、これらのディレクトリを拡張または置換できます:
  +
  +
{{hc|~/.config/awesome/rc.lua|2=
  +
table.insert(menubar.menu_gen.all_menu_dirs, "/path/to/custom/applications/")
 
}}
 
}}
   
  +
{ic|.desktop}} ファイルは awesome が起動するたびに再読み込みされるため、起動が遅くなることに注意してください。プログラムを起動する他の手段を好む場合、{{ic|1=local menubar = require("menubar")}} や{{ic|menubar}} 変数への参照を削除することで、{{ic|rc.lua}} でメニューバーを無効にすることができます。
===Nautilus をデスクトップに表示しないようにする (Gnome3)===
 
dconf-editor を起動してください。org->gnome->desktop->background と辿り "draw-background" と "show-desktop-icons" のチェックを外して下さい。以上です!
 
   
  +
=== ポップアップメニュー ===
他にも /usr/bin/nautilus を新しいロケーションに移動して 'nautilus --no-desktop' を実行するスクリプトで置き換えるという方法もあります。
 
   
  +
awesome 3 以降、デフォルトでシンプルなメニューがあり、カスタムメニューを簡素化しています。[https://awesomewm.org/doc/api/libraries/awful.menu.html] freedesktop.org のメニューが欲しければ、"[https://github.com/copycat-killer/awesome-freedesktop awesome-freedesktop]" を見てください。
#!/bin/sh
 
/usr/bin/nautilus-real --no-desktop $@
 
   
  +
awesome アイコンをクリックするか、デスクトップの空いている領域を右クリックするときに外部アプリケーションメニューを使用したい場合は、[[Xdg-menu#Awesome]] の手順に従ってください。ただし、プログラムを追加または削除しても、このメニューは更新されません。したがって、必ずコマンドを実行してメニューを更新してください。次のようになります:
===Gnome3 からの移行===
 
'gnome-session-properties' を起動しプログラム (例: Bluetooth Manager, Login Sounds, etc) を削除する以外に必要なことはありません。
 
   
  +
$ xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu >~/.config/awesome/archmenu.lua
If you'd like to get rid of GDM, make sure that your rc.conf DAEMONS list includes "dbus" (and "cupsd" if you have a printer). It's advisable to get a different login manager (like [[SLiM|SLiM]]), but you can do things manually if you wish. That entails setting up your [https://wiki.archlinux.org/index.php/Udev .xinitrc properly] and installing something like devmon ([https://aur.archlinux.org/packages.php?ID=45842 AUR]).
 
   
  +
=== タイトルバー ===
便利なシステムトレイアップレットや GTK テーマを残しておきたいのなら、rc.lua に以下を追加してください:
 
function start_daemon(dae)
 
daeCheck = os.execute("ps -eF | grep -v grep | grep -w " .. dae)
 
if (daeCheck ~= 0) then
 
os.execute(dae .. " &")
 
end
 
end
 
 
procs = {"gnome-settings-daemon", "nm-applet", "kupfer", "gnome-sound-applet", "gnome-power-manager"}
 
for k = 1, #procs do
 
start_daemon(procs[k])
 
end
 
   
  +
設定ファイルで変数 titlebars_enabled を true に設定するだけで、awesome でタイトルバーを有効にするのは簡単です。(ルールエリア内)
===マウススクロールがタグを変えるのを防ぐ===
 
  +
rc.lua の Mouse Bindings セクションを次のように変更してください:
 
  +
{ rule_any = {type = { "normal", "dialog" }
-- {{{ Mouse bindings
 
  +
}, properties = { titlebars_enabled = true }
root.buttons(awful.util.table.join(
 
  +
},
awful.button({ }, 3, function () mymainmenu:toggle() end)))
 
  +
-- }}}
 
  +
しかし、タイトルバーのオン・オフを切り替えたい場合もあるでしょう。その場合は、以下のようなコードをキーバインドに追加してください: (このコードは clientkeys エリアの最後には書かないでください)
  +
  +
-- working toggle titlebar
  +
awful.key({ modkey, "Control" }, "t", function (c) awful.titlebar.toggle(c) end,
  +
{description = "Show/Hide Titlebars", group="client"}),
  +
  +
最初にタイトルバーを非表示にしたい場合。タイトルバーが作成された直後 ("manage" signal handler の中) に、次のように追加して下さい:
  +
  +
awful.titlebar.hide(c)
  +
  +
=== バッテリー通知 ===
  +
  +
{{ic|rc.lua}} に追加する簡単なバッテリー通知については、[https://bpdp.blogspot.be/2013/06/battery-warning-notification-for.html このブログ投稿] を参照してください。通知には ''naughty'' が必要であることに注意してください (バージョン 3.5 ではデフォルトでインストールされます) 他の例は [https://awesomewm.org/recipes/awesome wiki] で入手できます。
  +
  +
=== メディアコントロール ===
  +
  +
({{pkg|alsa-utils}} パッケージに含まれている) amixer と {{Pkg|playerctl}} を組み合わせることでボリュームや再生をコントロールできます。{{ic|rc.lua}} 設定ファイルのキーバインドセクションに以下を追加してください:
  +
  +
-- Volume Keys
  +
awful.key({}, "XF86AudioLowerVolume", function ()
  +
awful.util.spawn("amixer -q -D pulse sset Master 5%-", false)
  +
end),
  +
awful.key({}, "XF86AudioRaiseVolume", function ()
  +
awful.util.spawn("amixer -q -D pulse sset Master 5%+", false)
  +
end),
  +
awful.key({}, "XF86AudioMute", function ()
  +
awful.util.spawn("amixer -D pulse set Master 1+ toggle", false)
  +
end),
  +
-- Media Keys
  +
awful.key({}, "XF86AudioPlay", function()
  +
awful.util.spawn("playerctl play-pause", false)
  +
end),
  +
awful.key({}, "XF86AudioNext", function()
  +
awful.util.spawn("playerctl next", false)
  +
end),
  +
awful.key({}, "XF86AudioPrev", function()
  +
awful.util.spawn("playerctl previous", false)
  +
end)
  +
  +
=== Steam キーボード ===
  +
  +
[[ゲームパッド#Steam コントローラー|Steam コントローラ]]から使用することができるオンスクリーンの Steam キーボードで文字を入力したときにフリーズすることがあります。入力を受け取るにはクライアントにフォーカスがあたっている必要があり、入力が正しく送信されるまでキーボードが待機するためです。手動で他のクライアントにフォーカスをあてるとそのクライアントに入力が送信され、次の文字が入力されるまでキーボードはフリーズした状態になります。
  +
  +
他のクライアントにフォーカスが移らないようにすることでキーボードを正しく動作させることができます。設定に以下のシグナルを追加してください (あるいは既存のクライアントのフォーカスシグナルに追記してください):
  +
  +
client.connect_signal("focus", function(c)
  +
if awful.rules.match(c, { name = "^Steam Keyboard$" }) then
  +
awful.client.focus.history.previous()
  +
end
  +
end)
  +
  +
上記のように設定することでキーボードがフォーカスを受け取ったときに最後のクライアントにフォーカスが移るようになります。キーボード入力は [[Steam]] クライアントによって処理されフォーカスは必要ないため、テキストの入力は問題なく行うことができます。
   
 
==トラブルシューティング==
 
==トラブルシューティング==
   
  +
=== rc.lua をデバッグする ===
===LibreOffice===
 
libreoffice の UI に問題がでる場合は libreoffice-gnome をインストールしてください。
 
   
  +
[Xephyr]] を使うと、他の X のクライアントウィンドウの中で X をネストして実行することができます。これにより、現在のデスクトップを壊すことなく {{ic|rc.lua}} をデバッグすることができます。まず、{{ic|rc.lua}} を新しいファイル (例えば {{ic|rc.lua.new}}) にコピーし、必要に応じて変更します。次に、Xephyr で awesome の新しいインスタンスを実行し、設定ファイルとして {{ic|rc.lua.new}} を以下のように指定します:
===Mod4 キー===
 
   
  +
$ Xephyr :1 -ac -br -noreset -screen 1152x720 &
デフォルトで Mod4 は '''Win キー''' です。何らかの理由でデフォルトでマップされていない場合、Mod4 キーのキーコードをチェックするには:
 
  +
$ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new
   
  +
このアプローチの利点は、バグが発生した場合でも、現在の awesome デスクトップを壊すことがなく、X アプリケーションがクラッシュして作業が失われる可能性がないことです。新しい設定に満足したら、{{ic|rc.lua.new}} を {{ic|rc.lua}} にコピーして、awesome を再起動します。
$ xev
 
   
  +
==== 自動リロード ====
左の Win キーは 115 のはずです。以下を ~/.xinitrc に追加してください
 
  +
  +
上記の方法に加えて、{{pkg|inotify-tools}} を使うことで、{{ic|~/.config/awesome}} ディレクトリ内の設定ファイルを更新した際に、自動的に [[Xephyr]] 内の Awesome インスタンスをリロードすることができます:
  +
  +
#!/usr/bin/env bash
  +
  +
Xephyr :1 -ac -br -noreset -screen 1920x1080 -dpi 96 &
  +
sleep 1
  +
DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new &
  +
instance=$!
  +
  +
while inotifywait -r -e close_write ~/.config/awesome; do
  +
kill -s SIGHUP $instance
  +
done
  +
  +
==== awmtt ====
  +
  +
{{AUR|awmtt}} (Awesome WM Testing Tool) は Xephyr の使いやすいラッパースクリプトです。デフォルトでは {{ic|~/.config/awesome/rc.lua.test}} を使用します。テストファイルが見つからない場合は、実際の {{ic|rc.lua}} を使用します。テストしたい設定ファイルの場所を指定することもできます:
  +
  +
$ awmtt start -C ~/.config/awesome/rc.lua.new
  +
  +
テストが完了したら、次のコマンドを実行してウィンドウを閉じます:
  +
  +
$ awmtt stop
  +
  +
または、次のコマンドを実行して、設定ファイルに加えた変更をすぐに確認します:
  +
  +
$ awmtt restart
  +
  +
==== aawmtt ====
  +
  +
{{AUR|aawmtt}} (別の awesome WM テストツール) は、{{AUR|awmtt}} の代替実装であり、デフォルトで Live-Reload が含まれています。
  +
これは [https://github.com/basaran/awmtt-ng awmtt-ng] に似ていますが、awmtt-ng を備えた一部のマシンでは機能しない XOrg ディスプレイ検出に対するいくつかの修正が含まれています。
  +
最初にテストファイルを実行しようとせず、デフォルトの設定を実行するだけであるという点で awmtt とは異なります。
  +
  +
Xephyrのウィンドウを開き、awesome を読み込む:
  +
  +
$ aawmtt
  +
  +
これで、awesome の出力がターミナルに出力され、設定フォルダー内のファイルを変更すると、awesomewm がリロードされます。
  +
  +
ファイルの変更を監視するディレクトリ、または設定ファイルの場所を変更する場合は、次のコマンドを実行します:
  +
  +
$ aawmtt --config "location_of_config_file" --watch "directory_to_watch_for_changes"
  +
  +
変更が監視されるディレクトリはデフォルトで設定ファイルの親ディレクトリになるため、デフォルトでは "~/.config/awesome" になります。
  +
  +
=== ログファイル ===
  +
  +
[[LightDM]] を使っている場合、awesome はエラーのログを {{ic|$HOME/.xsession-errors}} に出力します。{{ic|.xinitrc}} を使って awesome を起動している場合、[https://awesomewm.org/apidoc/documentation/90-FAQ.md.html FAQ のエントリ] の "Where are logs, error messages or something?" が参考になるはずです。
  +
  +
=== Mod4 キー ===
  +
  +
Awesome は {{ic|mod4}} を再マップすることを推奨しており、デフォルトでは {{ic|Super}} または "Windows" キーになっているはずです。何らかの理由で {{ic|mod4}} にマッピングされていない場合は、[[xmodmap]] を使ってマッピングを調べてください。マッピングを変更するには、{{ic|xev}} を使ってマッピングするキーのキーコードと名前を探します。そして、{{ic|~/.xinitrc}} に以下のような内容を追加します。
   
 
xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"
 
xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"
 
exec awesome
 
exec awesome
   
こでの問題は xorg インストールによってキーコード 115 が、間違って 'Select' キーとして認識されていることです。上記のコマンドはキーコード 115 を正しい 'Super_L' キーにマップし直します。
+
の場合の問題は、一部の xorg インストールではキーコード 115 が認識されるもののって ''選択'' キーとして認識されることです。上記のコマンドはキーコード 115 を正しい 'Super_L' キーに明示的に再マップします。
   
  +
{{ic|mod4}} を {{ic|setxkbmap}} で再マップするには ({{ic|xmodmap}} と競合) を参照してください:
====Mod4 キー vs. IBM ThinkPad====
 
   
  +
tail -50 /usr/share/X11/xkb/rules/evdev
IBM ThinkPad には Windows キーがありません (Lenovo は ThinkPad のこの伝統を変えたみたいですが)。これを書いている時点で、デフォルトの rc.lua では Alt キーはコマンドのコンビネーションとしては使われていません、したがって Alt キーを Super/Mod4/Win キーの代わりとして使うことができます。これをするには、rc.lua を編集して:
 
   
  +
Caps Lock キーを {{ic|mod4}} として設定するには、以下を {{ic|~/.xinitrc}} に追加します:
modkey = "Mod4"
 
   
  +
setxkbmap -option caps:hyper
を次のように変えて下さい:
 
   
  +
=== Java を修正 (GUI がグレーのみ表示される) ===
modkey = "Mod1"
 
   
  +
[[Java#灰色のウィンドウ、ウィンドウマネージャでアプリがリサイズされない、メニューがすぐに閉じる]] および [https://bbs.archlinux.org/viewtopic.php?pid=450870] を参照してください。
Note: Awesome には Mod4 とシングルレターを使うコマンドが少しだけあります。Mod4 を Mod1/Alt に変えるとキーコンビネーションが重複してしまうかもしれません。そうならないように rc.lua ファイルを修正する必要があるかもしれません。
 
   
  +
=== Eclipse: メインウィンドウをリサイズ・移動できない ===
awesome の標準を変えたくないならば、キーをリマップをするという方法もあります。例えば、caps lock キーをあまり使わないなら、以下を ~/.Xmodmap に加えます
 
   
  +
(mod4 + 右・左クリックを使って)メインウィンドウが移動・リサイズできない場合、workbench.xml を編集して fullscreen/maximized を false に設定し、幅と高さの数字をデスクトップ画面の大きさよりも小さくしてください。
clear lock
 
add mod4 = Caps_Lock
 
   
  +
{{ic|workbench.xml}} は、{{ic|''eclipse_workspace''/.metadata/.plugins/org.eclipse.ui.workbench/}} にあります。次の行を編集します。
そしてこのファイルを [[Xmodmap#Custom table|(リ)ロードしてください]]。
 
これで caps lock キーが mod4 キーになり、標準の awesome 設定でもうまく動くでしょう。さらに、他の X プログラムでも同じように mod4 キーが使えるはずです。
 
   
  +
<window height="xx" maximized="true" width="xx" x="xx" y="xx"
未確認ですが、最近の xorg のパッケージのアップデートで二行目のマッピングが破壊されるときは以下のように置き換えることができます (レフト Super キーのない DasKeyboard で検証):
 
   
  +
=== Netbeans: コード予測が間違ったスクリーンに表示される ===
keysym Caps_Lock = Super_L Caps_Lock
 
   
  +
ディスプレイをふたつ使っていて [[Netbeans]] でコード予測 (Ctrl + Space) を使用したときに、誤ったディスプレイのほうにコード予測が表示されることがあります。解決するには:
===Eclipse: メインウィンドウをリサイズ・移動できない===
 
  +
{{hc|head=.config/awesome/rc.lua|output=
(mod4 + 右・左クリックを使って)メインウィンドウが移動・リサイズできない場合、workbench.xml を編集して fullscreen/maximized を false に設定し、幅と高さの数字をデスクトップ画面の大きさよりも小さくしてください。
 
  +
awful.rules.rules = {
{{Note|workbench.xml は <eclipse_workspace>/.metadata/.plugins/org.eclipse.ui.workbench/ にあり、編集する行は <window height&#61;"xx" maximized&#61;"true" width&#61;"xx" x&#61;"xx" y&#61;"xx"> です。}}
 
  +
...
  +
{
  +
rule_matches = { -- Fix Netbeans
  +
class = {
  +
"sun-awt-X11-XWindowPeer", "NetBeans IDE 8.2"
  +
},
  +
name = {
  +
"win1"
  +
}
  +
}, properties = { screen = 1 } -- even with screen 1 here, this still works on the seccond screen, too (don't know why).
  +
},
  +
...
   
  +
}
===YouTube: フルスクリーンが裏に表示される===
 
  +
}}
[https://bbs.archlinux.org/viewtopic.php?pid=1085494#p1085494] フルスクリーンモードにするとビデオがウェブブラウザの下に表示される場合、rc.lua に以下を追加してください
 
   
  +
=== IntelliJ: メニューが間違った位置に表示されたりウィンドウが開かない ===
{ rule = { instance = "plugin-container" },
 
properties = { floating = true } },
 
   
  +
[https://github.com/awesomeWM/awesome/issues/2204 GitHub issue #2204] を見てください。
Chromium には
 
   
  +
解決方法:
{ rule = { instance = "exe" },
 
  +
{{hc|head=.config/awesome/rc.lua|output=
properties = { floating = true } },
 
  +
clientbuttons_jetbrains = gears.table.join(
  +
awful.button({ modkey }, 1, awful.mouse.client.move),
  +
awful.button({ modkey }, 3, awful.mouse.client.resize)
  +
)
  +
  +
...
  +
  +
awful.rules.rules = {
  +
...
  +
{
  +
rule = {
  +
class = "jetbrains-.*",
  +
}, properties = { focus = true, buttons = clientbuttons_jetbrains }
  +
},
  +
{
  +
rule = {
  +
class = "jetbrains-.*",
  +
name = "win.*"
  +
}, properties = { titlebars_enabled = false, focusable = false, focus = true, floating = true, placement = awful.placement.restore }
  +
},
  +
...
  +
}
  +
}}
  +
  +
=== scrot: キーボードショートカットを使ってマウスで選択した範囲のスクリーンショットが取れない ===
  +
  +
[[スクリーンショットの取得#scrot|scrot]] を使用する場合、キーボードショートカットにマウス選択オプション ({{ic|scrot -s}}) を割り当てられない問題がおきます。解決するには、以下の行を {{ic|rc.lua}} に追加してください:
  +
  +
awful.key( { modkey, }, <shortcut>, function () awful.util.spawn_with_shell("sleep 0.5 && scrot -s") end)
  +
  +
=== YouTube: バックグラウンドで全画面表示される ===
  +
  +
フルスクリーンモードで YouTube ビデオが Web ブラウザのバックグラウンドで表示される場合、またはコントロールが非表示になっている場合は、これを {{ic|rc.lua}} に追加します。
  +
  +
{ rule = { instance = "plugin-container" },
  +
properties = { floating = true } },
  +
  +
Chromium に追加
  +
  +
{ rule = { instance = "exe" },
  +
properties = { floating = true } },
  +
  +
もしくは:
  +
  +
{ rule = { role = "_NET_WM_STATE_FULLSCREEN" },
  +
properties = { floating = true } },
  +
  +
こちらも参照 [https://bbs.archlinux.org/viewtopic.php?pid=1085494#p1085494]
  +
  +
=== マウスのスクロールホイールでタグが変更されないようにする ===
  +
  +
{{ic|rc.lua}} で、Mouse Bindings セクションを次のように変更します:
  +
  +
-- {{{ Mouse bindings
  +
root.buttons(gears.table.join(
  +
awful.button({ }, 3, function () mymainmenu:toggle() end)
  +
))
  +
-- }}}
  +
  +
=== Xdg-menu によって生成されるメニューエントリが重複する ===
  +
  +
{{ic|/usr/share/applications}} から {{ic|~/.local/share/applications}} にデスクトップファイルをコピーすると、Xdg-menu は重複したエントリを生成します。awk を使って同じ名前のエントリを排除することで解決できます:
  +
  +
$ xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu | awk -F, '{if (a!=$1) print $a; a=$1}' >~/.config/awesome/archmenu.lua
  +
  +
=== Xfce4 で一部のショートカットキーが機能しない ===
   
  +
以下のコマンドを実行して、"Super L" などの Awesome によって実行されるキーが重なっていないか確認してください:
===コンソールクライアントを起動する===
 
  +
$ xfce4-keyboard-settings
GTK ターミナル (例: LXTerminal) から呼び出されたコンソールアプリケーションは動作しません。[[URxvt]] は動作します。
 
   
  +
=== メモリリーク ===
===コンソール出力をファイルに書き出す===
 
端末から GUI アプリケーションを起動すると、アプリケーションによっては端末に大変多くのデータを表示することがあります。結果として、Awesome から起動すると、全てを Awesome が起動している TTY に出力することになり、端末が汚くなることが多々あります。こういったゴミ・アウトプットを削除するには、リダイレクトさせなくてはなりません。しかし、[http://awesome.naquadah.org/wiki/FAQ#How_to_execute_a_shell_command.3F 公式 FAQ] で書かれているように {{ic|awful.util.spawn}} はパイプとリダイレクトをあまりうまく扱えません。
 
   
  +
[https://github.com/awesomeWM/awesome/issues/2798 メモリリーク] が発生します。多くのウィジェットを使用している場合、最大5MB/分の速度でメモリリークが発生する可能性があります。これを軽減するには、{{ic|~/.config/awesome/rc.lua}} にこれを追加することで、より頻繁なガベージコレクションを強制することができます:
例として、[[Luakit]] の出力をテンポラリファイルにリダイレクトしてみましょう:
 
   
  +
-- Run garbage collector regularly to prevent memory leaks
awful.key({ modkey, }, "w", function () awful.util.spawn_with_shell("luakit 2>>/tmp/luakit.log") end),
 
  +
gears.timer {
  +
timeout = 30,
  +
autostart = true,
  +
callback = function() collectgarbage() end
  +
}
   
==外部リンク==
+
==参照==
* http://awesome.naquadah.org/wiki/FAQ - FAQ
+
* https://awesomewm.org/apidoc/documentation/90-FAQ.md.html - FAQ
* http://www.lua.org/pil/ - Programming in Lua (first edition)
+
* http://www.lua.org/pil/ - Lua プログラミング (第1版)
* http://awesome.naquadah.org/ - The official awesome website
+
* https://awesomewm.org/ - awesome 公式ウェブサイト
  +
* https://awesomewm.org/apidoc/ - awesome API ドキュメント
* http://awesome.naquadah.org/wiki/Main_Page - the awesome wiki
 
* http://www.penguinsightings.org/desktop/awesome/ - A review
 
* http://compsoc.tardis.ed.ac.uk/wiki/AwesomeWM_guide - Awesome guide
 
 
* https://bbs.archlinux.org/viewtopic.php?id=88926 - share your awesome!
 
* https://bbs.archlinux.org/viewtopic.php?id=88926 - share your awesome!

2023年11月21日 (火) 18:02時点における最新版

関連記事

awesome のウェブサイト より:

awesome は高度に設定可能な、次世代の X フレームワークウィンドウマネージャです。高速に動作し、拡張しやすく、GNU GPLv2 ライセンスを使っています。awesome はパワーユーザーや開発者など、日常的に PC を使い、きめ細かいグラフィカル環境を求めている全ての人をターゲットにしています。

目次

インストール

awesome パッケージをインストールしてください。開発版を使うには、AURawesome-gitAUR をインストールしてください。開発版は不安定で、設定 API が異なっている可能性があります。

起動

xinit を使用して awesome を実行します。付属の xsession ファイルを使用するには、ディスプレイマネージャ を参照してください。

GNOME を使用する

GNOME をセットアップして、awesome をビジュアルインターフェイスとして使用し、GNOME をバックグラウンドで動作させることができます。awesome-gnomeAUR を参照してください。

XFCE

Xfce#別のウィンドウマネージャを使う を見てください。

設定

Awesome にはすぐに使えるデフォルト設定がありますが、遅かれ早かれあなたは設定を変更したくなるでしょう。lua ベースの設定ファイルが ~/.config/awesome/rc.lua にあります。

設定ファイルを作成

まず、以下を実行して次のステップで必要なディレクトリを作成します:

$ mkdir -p ~/.config/awesome/

コンパイルした時はいつでも、awesome は ~/.config/awesome/rc.lua に含まれている全てのカスタム設定を使おうとします。デフォルトではこのファイルは作られないので、最初にテンプレートファイルからコピーしてくる必要があります:

$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/

awesome がアップデートされると設定ファイルのシンタックスはしばしば変更されます。よって、awesome に問題が起こったり、設定を変更しようとする時は、上のコマンドを繰り返すことを覚えておいて下さい。

awesome の設定について詳しくは、awesome のドキュメントの設定セクション を見て下さい。

設定のサンプル

ノート: awesome の設定構文は定期的に変わるので、ダウンロードしたファイルに修正を入れる必要があるかもしれません。

rc.lua のサンプルは以下にあります:

拡張

awesome にはいくつか拡張が存在します:

拡張 機能性 バージョン
開いているすべてのクライアントのビューを表示する Awesome 3.5+
動的タグ付け Awesome 3.5
ポップアップ通知 Awesome 3.5+
追加 ウィジェット Awesome 3.5

自動実行

XDG Autostart 仕様を実装するには、xorg-xrdbdex をインストールし、次の行を ~/.config/awesome/rc.luaに追加します:

~/.config/awesome/rc.lua
awful.spawn.with_shell(
    'if (xrdb -query | grep -q "^awesome\\.started:\\s*true$"); then exit; fi;' ..
    'xrdb -merge <<< "awesome.started:true";' ..
    -- list each of your autostart commands, followed by ; inside single quotes, followed by ..
    'dex --environment Awesome --autostart'
    )

あるいは、autorun.sh作成 して以下を挿入し実行します:

~/.config/awesome/autorun.sh
#!/bin/sh

run() {
  if ! pgrep -f "$1" ;
  then
    "$@"&
  fi
}

次に、それを 実行可能 にします。

自動起動するプログラムを追加するには、run "program [some argument]"autorun.sh に追加するだけです。run 関数は、同じ引数を持つ program のインスタンスがすでに存在するかどうかを確認し、存在しない場合にのみ program を実行します。autorun.sh を実行して確認できます。

$ ~/.config/awesome/autorun.sh

すべて問題なければ、次の行を rc.lua に追加します:

~/.config/awesome/rc.lua
awful.spawn.with_shell("~/.config/awesome/autorun.sh")

キーボードレイアウトの変更

キーボードレイヤーを設定するには複数の方法があります。

setxkbmap キーボードレイアウトの方法

awesome のデフォルト設定では、レイアウトウィジェットがすでに有効化されています。

複数のレイヤーを一時的に設定するには、次を実行します。

$ setxkbmap -layout "us,de"

ウィジェットをクリックすると、レイアウトが切り替わります。キーコンボでレイアウトを変更したい場合は、-option "grp:alt_shift_toggle" を追加します。たとえば、Shift+Alt を押してレイアウトを変更できるようになります。完全なコマンドは次のようになります:

$ setxkbmap -layout "us,de" -option "grp:alt_shift_toggle"

EN および RU レイアウトを音声異体字で設定するには:

$ setxkbmap -model pc105 -option "grp:shifts_toggle,compose:sclk" "us,ru(phonetic_YAZHERTY)"

どこ

  • 作成キーは "Scroll Lock"、言語切り替えは 左Shift+右Shift に設定されています。
  • キーボードは 105 キーです

LightDM を使用してセッションを開始する場合は、上記のコマンドを .xprofile ファイルに追加します。

rc.lua キーボードレイアウトの方法 (v.4 以降)

awesome 自体を使用して切り替えることができます (v.4 から) Shift+Alt を押してレイアウトを変更するには、次の 2 行を globalkeys に追加します。

~/.config/awesome/rc.lua
-- {{{ Key bindings
globalkeys = gears.table.join(
    -- ...
    awful.key({ "Shift" }, "Alt_L", function () mykeyboardlayout.next_layout(); end),
    awful.key({ "Mod1" }, "Shift_L", function () mykeyboardlayout.next_layout(); end)
)

これには、setxkbmap コマンドまたは X 設定ファイルで切り替えられるキーボードレイアウトをセットアップする必要があります。

レイアウトを設定するための適切なコマンドを見つけたら、それを 自動起動 に追加します。

Xorg の方法

Xorg/キーボード設定 を参照してください。

テーマ

Beautiful という lua ライブラリを使うことで awesome にテーマを適用するのに外部ファイルを使うことができるようになります。rc.lua を修正せずに動的に awesome のカラーや壁紙を変更できるためとても便利です。

デフォルトテーマは /usr/share/awesome/themes/default にあります。それを ~/.config/awesome/themes/default にコピーしてください。(オプションで全てコピーすることもできます)、rc.lua を変更してください:

-- beautiful.init(gears.filesystem.get_configuration_dir() .. "/themes/default/theme.lua")
local theme_path = string.format("%s/.config/awesome/themes/%s/theme.lua", os.getenv("HOME"), "default")
beautiful.init(theme_path)

テーマオプションについては [1] を参照してください。例えばギャップを追加するには、rc.lua のテーマセクションに以下を追加します:

beautiful.useless_gap = 5

rc.lua のテーマセクションの下部にあります。

壁紙

Beautiful が壁紙を管理できるので、.xinitrc.xsession などのファイルで壁紙を設定する必要はありません。またテーマごとに特定の壁紙を使うようにすることもできます。

壁紙を指定するには 2 つの方法があります:

  • あなたのテーマ.theme.lua:
    -- absolute path
    theme.wallpaper = "/path/to/wallpaper.png"
    
    -- relative to your themes directory
    theme.wallpaper = theme_path .. "path/to/wallpaper.png"
    
  • または、rc.lua 内、Beautiful.initlocal function set_wallpaper の間のどこか:
    -- absolute path
    beautiful.wallpaper = "/path/to/wallpaper.png"
    
    -- 設定ディレクトリからの相対パス
    beautiful.wallpaper = awful.util.get_configuration_dir() .. "path/to/wallpaper.png"
    

背景画像をランダムに表示するには、rc.lua[2] を追加します。(v3.5+) 指定したディレクトリから自動的に画像を取得するには、代わりに[3] を使用します。

ヒントとテクニック

wibox を表示・隠す

awesome 4.0 の場合:

awful.key({ modkey }, "b",
          function ()
              myscreen = awful.screen.focused()
              myscreen.mywibox.visible = not myscreen.mywibox.visible
          end,
          {description = "toggle statusbar"}
),

ModKey が押されている間のみ Wibox を表示する (または他のアクションを実行する) ことは、awesome 内からは不可能ですが、それを行う Python スクリプトがあります: autohidewibox

スクリーンショット

PrtSc ボタンが正しく割り当てられていることを確認するには、キーボード入力 を参照してください。次に、scrot などの スクリーンキャプチャプログラム をインストールします。

globalkeys 配列に以下を追加します:

 awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'", false) end),

この関数はスクリーンショットを ~/screenshots/ 内に保存します、必要に応じて編集して下さい。

ウィンドウのギャップを無くす

awesome 3.4 では、ウィンドウ間の小さなギャップを取り除くことが可能です。awful.rules.rules テーブルには properties セクションがあるので、それに追加します。

 size_hints_honor = false

透過

Xorg#コンポジットを見て下さい。

awesome 3.5 では、ウィンドウ透過はシグナルを使って動的に設定することもできます。例えば、あなたの rc.lua に以下を加えることができます:

client.connect_signal("focus", function(c)
                              c.border_color = beautiful.border_focus
                              c.opacity = 1
                           end)
client.connect_signal("unfocus", function(c)
                                c.border_color = beautiful.border_normal
                                c.opacity = 0.7
                             end)

Conky

conky を使っていて、デスクトップの代わりに conky にウィンドウを持たせたい場合、~/.conkyrc を次のように編集してください:

own_window yes
own_window_transparent yes
own_window_type desktop

上記のように設定していないと、全てのウィンドウが完全に透過してしまうなどの不可思議な現象が発生します。また、conky がデスクトップ上に透過ウィンドウを作成すると、awesome の rc.lua で定義したアクションは conky が存在する場所では動作しないので注意してください。

wiboxes

Awesome 3.1 現在、wiboxes 用に擬似透過がビルドインされています。これを有効にするには、テーマファイルに (~/.config/awesome/themes/default, /usr/share/awesome/themes/default のコピー) 次のように色の部分に16進数の値を2つ加えて下さい:

bg_normal = #000000AA

"AA" が透明度になります。

Modkey + PgUp/PgDown によって選択されたウィンドウの透明度を変更するために、community パッケージリポジトリにある transset-dfAUR を使って、以下のように rc.lua を修正することもできます:

globalkeys = awful.util.table.join(
    -- your keybindings
    [...]
    awful.key({ modkey }, "Next", function (c)
        awful.util.spawn("transset-df --actual --inc 0.1")
    end),
    awful.key({ modkey }, "Prior", function (c)
        awful.util.spawn("transset-df --actual --dec 0.1")
    end),
    -- Your other key bindings
    [...]
)

Widget の間隔

デフォルトの rc.lua は、キーボードレイアウトや時計を含むウィジェットを Wibox 内にわずかな間隔で配置します。spacing プロパティを使用して、ウィジェット間に余分な間隔を追加することができます。

       { -- Right widgets
       layout = wibox.layout.fixed.horizontal,
       spacing = 10,
       mykeyboardlayout,
       ...

ImageMagick

imagemagick の display コマンドで壁紙を設定すると問題が起こるかもしれません、xcompmgr との互換性に問題があるためです。awsetbg に display を使うのは他のオプションを設定していないときだけにしましょう。habak, feh, hsetroot などの代わりのプログラムをインストールしてください (grep -A 1 wpsetters /usr/bin/awsetbg で他のオプションが見れます)。

テキストを awesome-client を使ってウィジェットに渡す

簡単に awesome ウィジェットにテキストを送ることができます。次のように新しいウィジェットを作ります:

 mywidget = widget({ type = "textbox", name = "mywidget" })
 mywidget.text = "initial text"

外部ソースからテキストをアップデートするには、awesome-client を使います:

 
 echo -e 'mywidget.text = "new text"' | awesome-client

ウィジェットを wibox に追加するのを忘れないで下さい。

awesome のデフォルトと違うパネルを使う

あなたが awesome の軽量性と機能性を気に入っているが、そのデフォルトのパネルの見た目が気に入らないときは、xfce4-panel など異なるパネルをインストールできます。

インストールしたら rc.luaautorun セクションに追加してください (方法は割愛) 画面ごとに wibox を作成しているセクション (mywibox[s] = awful.wibox({ position = "top", screen = s }) から始まっているところ) をコメントアウトすることもできますが、特にその必要はありません。ただし次を実行して rc.lua にエラーがないかチェックすることは忘れずに行って下さい:

$ awesome -k rc.lua

また、組み込みの awesome のランチャーの代わりに他のアプリケーションランチャーを起動するには、modkey+R キーバインドを変更する必要があります。例については、アプリケーション一覧#アプリケーションランチャー を参照してください。また以下を忘れずに追加してください。

      properties = { floating = true } },
    { rule = { instance = "$yourapplicationlauncher" },

rc.lua にコピーします。

メニューバーのアプリケーションディレクトリ

awesome には メニューバー が含まれます。デフォルトでは、Mod+p を押すと、画面上部に dmenu のようなアプリケーションメニューが開きます。このメニューは、$XDG_DATA_DIRS/applications/ および $XDG_DATA_HOME/applications/ にある .desktop ファイルを検索します。

menubar.menu_gen.all_menu_dirs を変更することで、これらのディレクトリを拡張または置換できます:

~/.config/awesome/rc.lua
table.insert(menubar.menu_gen.all_menu_dirs, "/path/to/custom/applications/")

{ic|.desktop}} ファイルは awesome が起動するたびに再読み込みされるため、起動が遅くなることに注意してください。プログラムを起動する他の手段を好む場合、local menubar = require("menubar")menubar 変数への参照を削除することで、rc.lua でメニューバーを無効にすることができます。

ポップアップメニュー

awesome 3 以降、デフォルトでシンプルなメニューがあり、カスタムメニューを簡素化しています。[4] freedesktop.org のメニューが欲しければ、"awesome-freedesktop" を見てください。

awesome アイコンをクリックするか、デスクトップの空いている領域を右クリックするときに外部アプリケーションメニューを使用したい場合は、Xdg-menu#Awesome の手順に従ってください。ただし、プログラムを追加または削除しても、このメニューは更新されません。したがって、必ずコマンドを実行してメニューを更新してください。次のようになります:

$ xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu >~/.config/awesome/archmenu.lua

タイトルバー

設定ファイルで変数 titlebars_enabled を true に設定するだけで、awesome でタイトルバーを有効にするのは簡単です。(ルールエリア内)

   { rule_any = {type = { "normal", "dialog" }
     }, properties = { titlebars_enabled = true }
   },

しかし、タイトルバーのオン・オフを切り替えたい場合もあるでしょう。その場合は、以下のようなコードをキーバインドに追加してください: (このコードは clientkeys エリアの最後には書かないでください)

   -- working toggle titlebar
   awful.key({ modkey, "Control" }, "t", function (c) awful.titlebar.toggle(c)         end,
             {description = "Show/Hide Titlebars", group="client"}),

最初にタイトルバーを非表示にしたい場合。タイトルバーが作成された直後 ("manage" signal handler の中) に、次のように追加して下さい:

awful.titlebar.hide(c)

バッテリー通知

rc.lua に追加する簡単なバッテリー通知については、このブログ投稿 を参照してください。通知には naughty が必要であることに注意してください (バージョン 3.5 ではデフォルトでインストールされます) 他の例は wiki で入手できます。

メディアコントロール

(alsa-utils パッケージに含まれている) amixer と playerctl を組み合わせることでボリュームや再生をコントロールできます。rc.lua 設定ファイルのキーバインドセクションに以下を追加してください:

-- Volume Keys
awful.key({}, "XF86AudioLowerVolume", function ()
  awful.util.spawn("amixer -q -D pulse sset Master 5%-", false)
end),
awful.key({}, "XF86AudioRaiseVolume", function ()
  awful.util.spawn("amixer -q -D pulse sset Master 5%+", false)
end),
awful.key({}, "XF86AudioMute", function ()
  awful.util.spawn("amixer -D pulse set Master 1+ toggle", false)
end),
-- Media Keys
awful.key({}, "XF86AudioPlay", function()
  awful.util.spawn("playerctl play-pause", false)
end),
awful.key({}, "XF86AudioNext", function()
  awful.util.spawn("playerctl next", false)
end),
awful.key({}, "XF86AudioPrev", function()
  awful.util.spawn("playerctl previous", false)
end)

Steam キーボード

Steam コントローラから使用することができるオンスクリーンの Steam キーボードで文字を入力したときにフリーズすることがあります。入力を受け取るにはクライアントにフォーカスがあたっている必要があり、入力が正しく送信されるまでキーボードが待機するためです。手動で他のクライアントにフォーカスをあてるとそのクライアントに入力が送信され、次の文字が入力されるまでキーボードはフリーズした状態になります。

他のクライアントにフォーカスが移らないようにすることでキーボードを正しく動作させることができます。設定に以下のシグナルを追加してください (あるいは既存のクライアントのフォーカスシグナルに追記してください):

client.connect_signal("focus", function(c)
    if awful.rules.match(c, { name = "^Steam Keyboard$" }) then
        awful.client.focus.history.previous()
    end
end)

上記のように設定することでキーボードがフォーカスを受け取ったときに最後のクライアントにフォーカスが移るようになります。キーボード入力は Steam クライアントによって処理されフォーカスは必要ないため、テキストの入力は問題なく行うことができます。

トラブルシューティング

rc.lua をデバッグする

[Xephyr]] を使うと、他の X のクライアントウィンドウの中で X をネストして実行することができます。これにより、現在のデスクトップを壊すことなく rc.lua をデバッグすることができます。まず、rc.lua を新しいファイル (例えば rc.lua.new) にコピーし、必要に応じて変更します。次に、Xephyr で awesome の新しいインスタンスを実行し、設定ファイルとして rc.lua.new を以下のように指定します:

$ Xephyr :1 -ac -br -noreset -screen 1152x720 &
$ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new

このアプローチの利点は、バグが発生した場合でも、現在の awesome デスクトップを壊すことがなく、X アプリケーションがクラッシュして作業が失われる可能性がないことです。新しい設定に満足したら、rc.lua.newrc.lua にコピーして、awesome を再起動します。

自動リロード

上記の方法に加えて、inotify-tools を使うことで、~/.config/awesome ディレクトリ内の設定ファイルを更新した際に、自動的に Xephyr 内の Awesome インスタンスをリロードすることができます:

#!/usr/bin/env bash

Xephyr :1 -ac -br -noreset -screen 1920x1080 -dpi 96 &
sleep 1
DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new &
instance=$!

while inotifywait -r -e close_write ~/.config/awesome; do
	kill -s SIGHUP $instance
done

awmtt

awmttAUR (Awesome WM Testing Tool) は Xephyr の使いやすいラッパースクリプトです。デフォルトでは ~/.config/awesome/rc.lua.test を使用します。テストファイルが見つからない場合は、実際の rc.lua を使用します。テストしたい設定ファイルの場所を指定することもできます:

$ awmtt start -C ~/.config/awesome/rc.lua.new

テストが完了したら、次のコマンドを実行してウィンドウを閉じます:

$ awmtt stop

または、次のコマンドを実行して、設定ファイルに加えた変更をすぐに確認します:

$ awmtt restart

aawmtt

aawmttAUR (別の awesome WM テストツール) は、awmttAUR の代替実装であり、デフォルトで Live-Reload が含まれています。 これは awmtt-ng に似ていますが、awmtt-ng を備えた一部のマシンでは機能しない XOrg ディスプレイ検出に対するいくつかの修正が含まれています。 最初にテストファイルを実行しようとせず、デフォルトの設定を実行するだけであるという点で awmtt とは異なります。

Xephyrのウィンドウを開き、awesome を読み込む:

$ aawmtt

これで、awesome の出力がターミナルに出力され、設定フォルダー内のファイルを変更すると、awesomewm がリロードされます。

ファイルの変更を監視するディレクトリ、または設定ファイルの場所を変更する場合は、次のコマンドを実行します:

$ aawmtt --config "location_of_config_file" --watch "directory_to_watch_for_changes"

変更が監視されるディレクトリはデフォルトで設定ファイルの親ディレクトリになるため、デフォルトでは "~/.config/awesome" になります。

ログファイル

LightDM を使っている場合、awesome はエラーのログを $HOME/.xsession-errors に出力します。.xinitrc を使って awesome を起動している場合、FAQ のエントリ の "Where are logs, error messages or something?" が参考になるはずです。

Mod4 キー

Awesome は mod4 を再マップすることを推奨しており、デフォルトでは Super または "Windows" キーになっているはずです。何らかの理由で mod4 にマッピングされていない場合は、xmodmap を使ってマッピングを調べてください。マッピングを変更するには、xev を使ってマッピングするキーのキーコードと名前を探します。そして、~/.xinitrc に以下のような内容を追加します。

xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"
exec awesome

この場合の問題は、一部の xorg インストールではキーコード 115 が認識されるものの、誤って 選択 キーとして認識されることです。上記のコマンドは、キーコード 115 を正しい 'Super_L' キーに明示的に再マップします。

mod4setxkbmap で再マップするには (xmodmap と競合) を参照してください:

tail -50 /usr/share/X11/xkb/rules/evdev

Caps Lock キーを mod4 として設定するには、以下を ~/.xinitrc に追加します:

setxkbmap -option caps:hyper

Java を修正 (GUI がグレーのみ表示される)

Java#灰色のウィンドウ、ウィンドウマネージャでアプリがリサイズされない、メニューがすぐに閉じる および [5] を参照してください。

Eclipse: メインウィンドウをリサイズ・移動できない

(mod4 + 右・左クリックを使って)メインウィンドウが移動・リサイズできない場合、workbench.xml を編集して fullscreen/maximized を false に設定し、幅と高さの数字をデスクトップ画面の大きさよりも小さくしてください。

workbench.xml は、eclipse_workspace/.metadata/.plugins/org.eclipse.ui.workbench/ にあります。次の行を編集します。

<window height="xx" maximized="true" width="xx" x="xx" y="xx"

Netbeans: コード予測が間違ったスクリーンに表示される

ディスプレイをふたつ使っていて Netbeans でコード予測 (Ctrl + Space) を使用したときに、誤ったディスプレイのほうにコード予測が表示されることがあります。解決するには:

.config/awesome/rc.lua
awful.rules.rules = {
        ...
	{
		rule_matches = { -- Fix Netbeans
			class = {
				"sun-awt-X11-XWindowPeer", "NetBeans IDE 8.2"
			},
			name = {
				"win1"
			}
		}, properties = { screen = 1 } -- even with screen 1 here, this still works on the seccond screen, too (don't know why).
	},
        ...

}

IntelliJ: メニューが間違った位置に表示されたりウィンドウが開かない

GitHub issue #2204 を見てください。

解決方法:

.config/awesome/rc.lua
clientbuttons_jetbrains = gears.table.join(
    awful.button({ modkey }, 1, awful.mouse.client.move),
    awful.button({ modkey }, 3, awful.mouse.client.resize)
)

...

awful.rules.rules = {
        ...
	{
            rule = {
                class = "jetbrains-.*",
            }, properties = { focus = true, buttons = clientbuttons_jetbrains }
        },
        {
            rule = {
                class = "jetbrains-.*",
                name = "win.*"
            }, properties = { titlebars_enabled = false, focusable = false, focus = true, floating = true, placement = awful.placement.restore }
        },
        ...
}

scrot: キーボードショートカットを使ってマウスで選択した範囲のスクリーンショットが取れない

scrot を使用する場合、キーボードショートカットにマウス選択オプション (scrot -s) を割り当てられない問題がおきます。解決するには、以下の行を rc.lua に追加してください:

awful.key( { modkey,	 }, <shortcut>, function () awful.util.spawn_with_shell("sleep 0.5 && scrot -s") end)

YouTube: バックグラウンドで全画面表示される

フルスクリーンモードで YouTube ビデオが Web ブラウザのバックグラウンドで表示される場合、またはコントロールが非表示になっている場合は、これを rc.lua に追加します。

{ rule = { instance = "plugin-container" },
  properties = { floating = true } },

Chromium に追加

{ rule = { instance = "exe" },
  properties = { floating = true } },

もしくは:

{ rule = { role = "_NET_WM_STATE_FULLSCREEN" },
  properties = { floating = true } },

こちらも参照 [6]

マウスのスクロールホイールでタグが変更されないようにする

rc.lua で、Mouse Bindings セクションを次のように変更します:

-- {{{ Mouse bindings
root.buttons(gears.table.join(
    awful.button({ }, 3, function () mymainmenu:toggle() end)
))
-- }}}

Xdg-menu によって生成されるメニューエントリが重複する

/usr/share/applications から ~/.local/share/applications にデスクトップファイルをコピーすると、Xdg-menu は重複したエントリを生成します。awk を使って同じ名前のエントリを排除することで解決できます:

$ xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu | awk -F, '{if (a!=$1) print $a; a=$1}' >~/.config/awesome/archmenu.lua

Xfce4 で一部のショートカットキーが機能しない

以下のコマンドを実行して、"Super L" などの Awesome によって実行されるキーが重なっていないか確認してください:

$ xfce4-keyboard-settings

メモリリーク

メモリリーク が発生します。多くのウィジェットを使用している場合、最大5MB/分の速度でメモリリークが発生する可能性があります。これを軽減するには、~/.config/awesome/rc.lua にこれを追加することで、より頻繁なガベージコレクションを強制することができます:

-- Run garbage collector regularly to prevent memory leaks
gears.timer {
       timeout = 30,
       autostart = true,
       callback = function() collectgarbage() end
}

参照