「Sway」の版間の差分
(同期) |
(→既知の問題: i3-dmenu-desktop は動作するようになった) |
||
(4人の利用者による、間の13版が非表示) | |||
2行目: | 2行目: | ||
[[Category:動的ウィンドウマネージャ]] |
[[Category:動的ウィンドウマネージャ]] |
||
[[en:Sway]] |
[[en:Sway]] |
||
− | ''sway'' (SirCmpwn's Wayland window manager) は [[i3]] の [[Wayland]] |
+ | ''sway'' (SirCmpwn's Wayland window manager) は [[i3]] と互換性のある [[Wayland]] コンポジタを作成しようという試みです。[http://swaywm.org 公式ウェブサイト] より: |
+ | :Sway は Wayland において Xorg の i3 ウィンドウマネージャの代わりとなるウィンドウマネージャです。既存の i3 設定で動作し i3 の機能のほとんどをサポートしています。 |
||
+ | == 現状 == |
||
− | {{Note|開発途上なので注意して使って下さい。ただし、開発者はすでに常用できる状態だとしています。}} |
||
+ | [https://github.com/swaywm/sway/releases/tag/1.0 Release sway 1.0] にあるように、Sway は基本的に100% i3 と互換です。実装された機能と、実装されていない機能については以下のリンクを参照してください: |
||
+ | *[https://github.com/SirCmpwn/sway/issues/2#issue-99897933 i3 の機能のサポート] |
||
+ | *[https://github.com/SirCmpwn/sway/issues/98 IPC 機能のサポート] |
||
+ | *[https://github.com/SirCmpwn/sway/issues/343 i3bar の互換性] |
||
+ | *[https://github.com/SirCmpwn/sway/issues/307 Airblader のフォークの機能] |
||
== インストール == |
== インストール == |
||
− | ''sway'' は {{Pkg|sway}} パッケージで[[インストール]]できます |
+ | ''sway'' は {{Pkg|sway}} パッケージで[[インストール]]できます。最新の開発版は {{AUR|wlroots-git}} と {{AUR|sway-git}} でインストールできます。''sway'' は ''wlroots'' に緻密に依存しているので、''sway'' 更新時には ''wlroots'' も更新するのが望ましいです。 |
+ | |||
+ | また、画面をロックする {{Pkg|swaylock}} や、アイドル時間管理デーモンの {{Pkg|swayidle}} もインストールできます。 |
||
== sway の起動 == |
== sway の起動 == |
||
+ | |||
− | === TTY から === |
||
+ | {{Tip|ウィンドウ装飾ライブラリなど設定する必要がある環境変数については [[Wayland#GUI ライブラリ]]を参照。}} |
||
− | TTY と {{ic|sway}} と入力すれば sway が起動します。 |
||
+ | |||
+ | === ターミナルから === |
||
+ | ターミナルに {{ic|sway}} と入力すれば sway が起動します。 |
||
=== ディスプレイマネージャを使う === |
=== ディスプレイマネージャを使う === |
||
+ | {{Note|Sway は公式にはディスプレイマネージャをサポートしていません。}} |
||
− | sway のセッションは {{ic|/usr/share/wayland-sessions/sway.desktop}} にあります。セッションは GDM によって自動的に認識されます。 |
||
+ | sway のセッションは {{ic|/usr/share/wayland-sessions/sway.desktop}} にあります。[[GDM]] や [[SDDM]] などのディスプレイマネージャは自動的にセッションを認識します。 |
||
+ | あるいは、テキストベースのセッションマネージャを使うこともできます。[[ディスプレイマネージャ#コンソール]]を参照してください。 |
||
− | === X から === |
||
− | X セッションの中で通常のプログラムと同じように ''sway'' を起動してテストすることも可能です。 |
||
== 設定 == |
== 設定 == |
||
+ | i3 を既に使っている場合、i3 の設定を {{ic|~/.config/sway/config}} にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを {{ic|~/.config/sway/config}} にコピーしてください。サンプル設定ファイルは {{ic|/etc/sway/config}} にあります。ただし {{ic|DFALLBACK_CONFIG_DIR}} フラグが設定されている場合は存在しません。設定方法は {{man|5|sway}} を見てください。 |
||
+ | |||
=== キーマップ === |
=== キーマップ === |
||
デフォルトでは、sway は US QWERTY キーマップで起動します。次のようなコマンドで sway を起動することでキーマップを変更できます: |
デフォルトでは、sway は US QWERTY キーマップで起動します。次のようなコマンドで sway を起動することでキーマップを変更できます: |
||
− | $ XKB_DEFAULT_LAYOUT=gb XKB_DEFAULT_VARIANT=colemak XKB_DEFAULT_MODEL=pc101 sway |
+ | $ export XKB_DEFAULT_LAYOUT=gb; export XKB_DEFAULT_VARIANT=colemak; export XKB_DEFAULT_MODEL=pc101; sway |
上記のコマンドでは、101キーボードの英国キーマップの Colemak 配列に設定されます。 |
上記のコマンドでは、101キーボードの英国キーマップの Colemak 配列に設定されます。 |
||
31行目: | 44行目: | ||
XKB_DEFAULT_LAYOUT=gb XKB_DEFAULT_VARIANT=colemak XKB_DEFAULT_MODEL=pc101 sway}} |
XKB_DEFAULT_LAYOUT=gb XKB_DEFAULT_VARIANT=colemak XKB_DEFAULT_MODEL=pc101 sway}} |
||
それから、上記のスクリプトを呼び出す {{ic|sway-gb-ck.desktop}} ファイルを作成してください: |
それから、上記のスクリプトを呼び出す {{ic|sway-gb-ck.desktop}} ファイルを作成してください: |
||
− | {{hc|/usr/share/wayland-sessions/sway.desktop|2= |
+ | {{hc|/usr/share/wayland-sessions/sway-gb-ck.desktop|2= |
[Desktop Entry] |
[Desktop Entry] |
||
Name=Sway British(Colemak) |
Name=Sway British(Colemak) |
||
38行目: | 51行目: | ||
Type=Application |
Type=Application |
||
}} |
}} |
||
+ | |||
+ | 上記の方法が上手く行かない場合、{{ic|.bash_profile}} または {{ic|.zprofile}} に以下を追加してみてください: |
||
+ | $ export XKB_DEFAULT_LAYOUT=gb; export XKB_DEFAULT_VARIANT=colemak; export XKB_DEFAULT_MODEL=pc101 |
||
=== ステータスバー === |
=== ステータスバー === |
||
ステータスバーを表示したいときは {{Pkg|i3status}} プログラムをインストールするのが簡単です。sway の設定の末尾に以下のスニペットを追加するだけで表示できます: |
ステータスバーを表示したいときは {{Pkg|i3status}} プログラムをインストールするのが簡単です。sway の設定の末尾に以下のスニペットを追加するだけで表示できます: |
||
{{hc|~/.config/sway/config|<nowiki> |
{{hc|~/.config/sway/config|<nowiki> |
||
− | + | bar { |
|
status_command i3status |
status_command i3status |
||
+ | }</nowiki>}} |
||
− | } |
||
− | </nowiki>}} |
||
i3status をカラー出力させたい場合、i3status の設定の以下の部分を調整してください: |
i3status をカラー出力させたい場合、i3status の設定の以下の部分を調整してください: |
||
{{hc|~/.config/i3status/config|<nowiki> |
{{hc|~/.config/i3status/config|<nowiki> |
||
56行目: | 71行目: | ||
=== 壁紙 === |
=== 壁紙 === |
||
+ | Sway 1.1 以降、壁紙機能は {{Pkg|swaybg}} に分割され、{{ic|output}} コマンドを動作させるのに必要です。 |
||
+ | |||
以下の行を sway の設定の最後に追加することで、全ての画面 ({{ic|"*"}} という名前にマッチする画面) で背景画像を設定できます: |
以下の行を sway の設定の最後に追加することで、全ての画面 ({{ic|"*"}} という名前にマッチする画面) で背景画像を設定できます: |
||
{{hc|~/.config/sway/config|<nowiki> |
{{hc|~/.config/sway/config|<nowiki> |
||
− | + | output "*" background /home/onny/pictures/fredwang_norway.jpg fill |
|
</nowiki>}} |
</nowiki>}} |
||
ファイルの名前やパスは適当に置き換えて下さい。 |
ファイルの名前やパスは適当に置き換えて下さい。 |
||
=== 入力デバイス === |
=== 入力デバイス === |
||
− | 特定の入力デバイスの設定を調整することができます。例えば、タッチパッドの tap-to-click を有効にするには、以下の input ブロックを追加: |
+ | 特定の入力デバイスの設定を調整することができます。例えば、タッチパッドの tap-to-click とナチュナルスクロールを有効にするには、以下の input ブロックを追加: |
{{hc|~/.config/sway/config|<nowiki> |
{{hc|~/.config/sway/config|<nowiki> |
||
− | + | input "2:14:ETPS/2_Elantech_Touchpad" { |
|
− | + | tap enabled |
|
+ | natural_scroll enabled |
||
− | } |
||
+ | } |
||
</nowiki>}} |
</nowiki>}} |
||
デバイスの識別子は以下のコマンドで確認できます: |
デバイスの識別子は以下のコマンドで確認できます: |
||
73行目: | 91行目: | ||
上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: {{ic|"2:14:ETPS\/2_Elantech_Touchpad"}})。設定に追加するときはエスケープを取り除いてください。 |
上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: {{ic|"2:14:ETPS\/2_Elantech_Touchpad"}})。設定に追加するときはエスケープを取り除いてください。 |
||
− | アクセラレーションなど他のオプションについては |
+ | アクセラレーションなど他のオプションについては {{man|5|sway-input}} で詳細を確認できます。 |
+ | |||
− | $ man sway-input |
||
+ | === HiDPI === |
||
+ | |||
+ | 設定ファイルの {{ic|output}} コマンドでディスプレイのスケールファクタを設定してください。スケールファクタは整数で指定する必要があります。HiDPI ディスプレイの場合は 2 などに設定してください。 |
||
+ | output <name> scale <factor> |
||
+ | ディスプレイの名前は以下のコマンドで確認できます: |
||
+ | $ swaymsg -t get_outputs |
||
=== カスタムキーバインド === |
=== カスタムキーバインド === |
||
キーボードの[[特別なキーボードキー|特殊なキー]]を使ってコマンドを実行することができます。例えば、ボリュームや画面の明るさを制御するには: |
キーボードの[[特別なキーボードキー|特殊なキー]]を使ってコマンドを実行することができます。例えば、ボリュームや画面の明るさを制御するには: |
||
{{hc|~/.config/sway/config|<nowiki> |
{{hc|~/.config/sway/config|<nowiki> |
||
− | + | bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% |
|
− | + | bindsym XF86AudioLowerVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5% |
|
− | + | bindsym XF86AudioMute exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle |
|
− | + | bindsym XF86MonBrightnessDown exec brightnessctl set 5%- |
|
− | + | bindsym XF86MonBrightnessUp exec brightnessctl set +5% |
|
</nowiki>}} |
</nowiki>}} |
||
+ | |||
+ | {{Pkg|brightnessctl}} を使うことで輝度を制御できます。輝度や色補正を制御するユーティリティについては[[バックライト]]を見てください。 |
||
+ | |||
+ | === .Xresources === |
||
+ | |||
+ | sway で使用するには {{ic|.Xresources}} を {{ic|.Xdefaults}} にコピーしてください。 |
||
+ | |||
+ | == ヒントとテクニック == |
||
+ | |||
+ | === ログイン時に自動起動 === |
||
+ | |||
+ | tty1 にログインしたときに起動するには、以下を {{ic|.bash_profile}} に追加してください: |
||
+ | |||
+ | <nowiki>if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then |
||
+ | exec sway |
||
+ | fi</nowiki> |
||
+ | |||
+ | === dmenu 代替 === |
||
+ | |||
+ | [[dmenu]] は XWayland 上で動作するため、フォーカスが他のところへ移るとアプリケーションは反応しなくなります。反応しなくなった dmenu を元に戻すには sway を再起動する必要があります。[[rofi]] を使用するという案もありますが、rofi をメニューとして使用するには、urxvt など wayland ネイティブではない仮想端末から起動しなくてはなりません。Sway でメニューとして起動してもメニューにフォーカスが移りません (rofi にマウスを載せないと入力が通りません)。詳しくは https://github.com/swaywm/sway/issues/1367#issuecomment-332910152 を参照。 |
||
== 既知の問題 == |
== 既知の問題 == |
||
− | === |
+ | === VirtualBox を使う === |
+ | |||
+ | Sway は [[VirtualBox]] との相性があまり良くありません (あるいは全く動作しません)。 |
||
+ | |||
+ | === Sway Socket Not Detected === |
||
+ | |||
+ | ターミナルマルチプレクサ (例: GNU Screen や tmux) の中で {{ic|swaymsg -t get_outputs}} などのように {{ic|swaymsg}} を使ったときに、以下のようなメッセージが返ってくることがあります: |
||
+ | sway socket not detected. |
||
+ | ERROR: Unable to connect to |
||
+ | これは {{ic|swaymsg}} が {{ic|SWAYSOCK}} のソケットに接続できないことを意味しています。 |
||
+ | |||
+ | {{ic|SWAYSOCK}} の現在の値を確認するには: |
||
+ | $ env | fgrep SWAYSOCK |
||
+ | SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock |
||
+ | |||
+ | 最初の sway ソケットにアタッチしてみて、コマンドを再実行してみてください: |
||
+ | $ export SWAYSOCK=$(ls /run/user/*/sway-ipc.*.sock | head -n 1) |
||
+ | |||
+ | 上記のエラーを解決するには、マルチプレクサの外でコマンドを実行する必要があります。 |
||
+ | |||
+ | === Unable to retrieve socket path === |
||
+ | |||
+ | tty から {{ic|swaymsg -t}} を実行すると、 |
||
+ | Unable to retrieve socket path |
||
+ | というメッセージが表示されます。これは {{ic|SWAYLOCK}} 環境変数が Sway 起動後に設定されるためで、{{ic|swaymsg}} は Sway 内のターミナルで実行してください。 |
||
+ | === ディスプレイの解像度が正しくない === |
||
− | i3-dmenu-desktop を sway から直接使うことはできませんが、パッチが存在します: https://github.com/i3/i3/pull/2265/files 。残念ながら、特定の状況で i3 から使ったときにパッチが問題を起こすために、パッチがマージされることはありません。詳しくは次を参照: https://github.com/SirCmpwn/sway/issues/521 。 |
||
+ | {{ic|output "HDMI-A-1" res 1280x1024}} などの設定オプションで解像度が正しく設定できない場合があります。解像度の設定は {{Pkg|wlc}} コンポジタが受け持っており、TTY からディスプレイの解像度を認識します。 |
||
− | パッチは手動で適用することができます: |
||
+ | {{ic|1=video=HDMI-A-1:1280x1024:e}} などのカーネルパラメータを指定したりカスタム EDID バイナリ ([[Kernel Mode Setting]] を参照) を使用することで TTY の解像度を変えられる場合があります (WLC や Sway の解像度も変わります)。 |
||
− | <nowiki>$ wget 'https://patch-diff.githubusercontent.com/raw/i3/i3/pull/2265.patch'</nowiki> |
||
− | # patch -p0 /usr/bin/i3-dmenu-desktop < 2265.patch |
||
== 参照 == |
== 参照 == |
2019年12月2日 (月) 10:52時点における版
sway (SirCmpwn's Wayland window manager) は i3 と互換性のある Wayland コンポジタを作成しようという試みです。公式ウェブサイト より:
- Sway は Wayland において Xorg の i3 ウィンドウマネージャの代わりとなるウィンドウマネージャです。既存の i3 設定で動作し i3 の機能のほとんどをサポートしています。
目次
現状
Release sway 1.0 にあるように、Sway は基本的に100% i3 と互換です。実装された機能と、実装されていない機能については以下のリンクを参照してください:
インストール
sway は sway パッケージでインストールできます。最新の開発版は wlroots-gitAUR と sway-gitAUR でインストールできます。sway は wlroots に緻密に依存しているので、sway 更新時には wlroots も更新するのが望ましいです。
また、画面をロックする swaylock や、アイドル時間管理デーモンの swayidle もインストールできます。
sway の起動
ターミナルから
ターミナルに sway
と入力すれば sway が起動します。
ディスプレイマネージャを使う
sway のセッションは /usr/share/wayland-sessions/sway.desktop
にあります。GDM や SDDM などのディスプレイマネージャは自動的にセッションを認識します。
あるいは、テキストベースのセッションマネージャを使うこともできます。ディスプレイマネージャ#コンソールを参照してください。
設定
i3 を既に使っている場合、i3 の設定を ~/.config/sway/config
にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを ~/.config/sway/config
にコピーしてください。サンプル設定ファイルは /etc/sway/config
にあります。ただし DFALLBACK_CONFIG_DIR
フラグが設定されている場合は存在しません。設定方法は sway(5) を見てください。
キーマップ
デフォルトでは、sway は US QWERTY キーマップで起動します。次のようなコマンドで sway を起動することでキーマップを変更できます:
$ export XKB_DEFAULT_LAYOUT=gb; export XKB_DEFAULT_VARIANT=colemak; export XKB_DEFAULT_MODEL=pc101; sway
上記のコマンドでは、101キーボードの英国キーマップの Colemak 配列に設定されます。
ディスプレイマネージャを使用している場合、sway.desktop
ファイルに上記の行を追加することはできません。root で、以下のファイルを作成してください:
/usr/bin/sway-gb-ck
#!/bin/sh XKB_DEFAULT_LAYOUT=gb XKB_DEFAULT_VARIANT=colemak XKB_DEFAULT_MODEL=pc101 sway
それから、上記のスクリプトを呼び出す sway-gb-ck.desktop
ファイルを作成してください:
/usr/share/wayland-sessions/sway-gb-ck.desktop
[Desktop Entry] Name=Sway British(Colemak) Comment=SirCmpwn's Wayland window manager with the British Colemak keyboard layout Exec=sway-gb-ck Type=Application
上記の方法が上手く行かない場合、.bash_profile
または .zprofile
に以下を追加してみてください:
$ export XKB_DEFAULT_LAYOUT=gb; export XKB_DEFAULT_VARIANT=colemak; export XKB_DEFAULT_MODEL=pc101
ステータスバー
ステータスバーを表示したいときは i3status プログラムをインストールするのが簡単です。sway の設定の末尾に以下のスニペットを追加するだけで表示できます:
~/.config/sway/config
bar { status_command i3status }
i3status をカラー出力させたい場合、i3status の設定の以下の部分を調整してください:
~/.config/i3status/config
general { colors = true interval = 5 }
どちらの例でも、システム全体にインストールされた設定ファイルはユーザーディレクトリにコピーされるので、それを修正してください。
壁紙
Sway 1.1 以降、壁紙機能は swaybg に分割され、output
コマンドを動作させるのに必要です。
以下の行を sway の設定の最後に追加することで、全ての画面 ("*"
という名前にマッチする画面) で背景画像を設定できます:
~/.config/sway/config
output "*" background /home/onny/pictures/fredwang_norway.jpg fill
ファイルの名前やパスは適当に置き換えて下さい。
入力デバイス
特定の入力デバイスの設定を調整することができます。例えば、タッチパッドの tap-to-click とナチュナルスクロールを有効にするには、以下の input ブロックを追加:
~/.config/sway/config
input "2:14:ETPS/2_Elantech_Touchpad" { tap enabled natural_scroll enabled }
デバイスの識別子は以下のコマンドで確認できます:
$ swaymsg -t get_inputs
上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: "2:14:ETPS\/2_Elantech_Touchpad"
)。設定に追加するときはエスケープを取り除いてください。
アクセラレーションなど他のオプションについては sway-input(5) で詳細を確認できます。
HiDPI
設定ファイルの output
コマンドでディスプレイのスケールファクタを設定してください。スケールファクタは整数で指定する必要があります。HiDPI ディスプレイの場合は 2 などに設定してください。
output <name> scale <factor>
ディスプレイの名前は以下のコマンドで確認できます:
$ swaymsg -t get_outputs
カスタムキーバインド
キーボードの特殊なキーを使ってコマンドを実行することができます。例えば、ボリュームや画面の明るさを制御するには:
~/.config/sway/config
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% bindsym XF86AudioLowerVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5% bindsym XF86AudioMute exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle bindsym XF86MonBrightnessDown exec brightnessctl set 5%- bindsym XF86MonBrightnessUp exec brightnessctl set +5%
brightnessctl を使うことで輝度を制御できます。輝度や色補正を制御するユーティリティについてはバックライトを見てください。
.Xresources
sway で使用するには .Xresources
を .Xdefaults
にコピーしてください。
ヒントとテクニック
ログイン時に自動起動
tty1 にログインしたときに起動するには、以下を .bash_profile
に追加してください:
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec sway fi
dmenu は XWayland 上で動作するため、フォーカスが他のところへ移るとアプリケーションは反応しなくなります。反応しなくなった dmenu を元に戻すには sway を再起動する必要があります。rofi を使用するという案もありますが、rofi をメニューとして使用するには、urxvt など wayland ネイティブではない仮想端末から起動しなくてはなりません。Sway でメニューとして起動してもメニューにフォーカスが移りません (rofi にマウスを載せないと入力が通りません)。詳しくは https://github.com/swaywm/sway/issues/1367#issuecomment-332910152 を参照。
既知の問題
VirtualBox を使う
Sway は VirtualBox との相性があまり良くありません (あるいは全く動作しません)。
Sway Socket Not Detected
ターミナルマルチプレクサ (例: GNU Screen や tmux) の中で swaymsg -t get_outputs
などのように swaymsg
を使ったときに、以下のようなメッセージが返ってくることがあります:
sway socket not detected. ERROR: Unable to connect to
これは swaymsg
が SWAYSOCK
のソケットに接続できないことを意味しています。
SWAYSOCK
の現在の値を確認するには:
$ env | fgrep SWAYSOCK SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock
最初の sway ソケットにアタッチしてみて、コマンドを再実行してみてください:
$ export SWAYSOCK=$(ls /run/user/*/sway-ipc.*.sock | head -n 1)
上記のエラーを解決するには、マルチプレクサの外でコマンドを実行する必要があります。
Unable to retrieve socket path
tty から swaymsg -t
を実行すると、
Unable to retrieve socket path
というメッセージが表示されます。これは SWAYLOCK
環境変数が Sway 起動後に設定されるためで、swaymsg
は Sway 内のターミナルで実行してください。
ディスプレイの解像度が正しくない
output "HDMI-A-1" res 1280x1024
などの設定オプションで解像度が正しく設定できない場合があります。解像度の設定は wlc コンポジタが受け持っており、TTY からディスプレイの解像度を認識します。
video=HDMI-A-1:1280x1024:e
などのカーネルパラメータを指定したりカスタム EDID バイナリ (Kernel Mode Setting を参照) を使用することで TTY の解像度を変えられる場合があります (WLC や Sway の解像度も変わります)。