「Sway」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
2行目: 2行目:
 
[[Category:動的ウィンドウマネージャ]]
 
[[Category:動的ウィンドウマネージャ]]
 
[[en:Sway]]
 
[[en:Sway]]
''sway'' (SirCmpwn's Wayland window manager) は [[i3]] の [[Wayland]] を作成しようという試みです。
+
''sway'' (SirCmpwn's Wayland window manager) は [[i3]] と互換性ある [[Wayland]] コンポジタを作成しようという試みです。[https://swaywm.org 公式ウェブサイト] より:
  +
:Sway は Wayland において Xorg の i3 ウィンドウマネージャの代わりとなるウィンドウマネージャです。既存の i3 設定で動作し i3 の機能のほとんどをサポートしています。
   
  +
== 現状 ==
{{Note|開発途上なので注意して使って下さい。ただし、開発者はすでに常用できる状態だとしています。}}
 
  +
Sway は開発途上なので注意して使って下さい。ただし、開発者の [https://drewdevault.com/ Drew DeVault] (別名 SirCmpwn) はすでに常用できる状態だとしています。
  +
  +
既に実装されている機能と、まだ実装が進んでいない機能については以下のリンクを参照してください:
  +
*[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}} パッケージで[[インストール]]できます (最新の git 開発版は {{AUR|sway-git}} でインストールできます)。i3 を既に使っている場合、i3 の設定を {{ic|~/.config/sway/config}} にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを {{ic|~/.config/sway/config}} にコピーしてください。サンプル設定ファイルは {{ic|/etc/sway/config}} にあります。ただし {{ic|DFALLBACK_CONFIG_DIR}} フラグが設定されている場合は存在しません。設定方法は sway(5) の [[man ページ]]を見て下さい
+
''sway'' は {{Pkg|sway}} パッケージで[[インストール]]できます最新の git 開発版は {{AUR|sway-git}} でインストールできます。
   
 
== sway の起動 ==
 
== sway の起動 ==
  +
=== TTY から ===
 
  +
{{Tip|ウィンドウ装飾ライブラリなど設定する必要がある環境変数については [[Wayland#GUI ライブラリ]]を参照。}}
TTY に {{ic|sway}} と入力すれば sway が起動します。
 
  +
  +
=== ターミナルから ===
  +
ターミナルに {{ic|sway}} と入力すれば sway が起動します。
   
 
=== ディスプレイマネージャを使う ===
 
=== ディスプレイマネージャを使う ===
sway のセッションは {{ic|/usr/share/wayland-sessions/sway.desktop}} にあります。セッションは GDM によって自動的に認識されます。
+
sway のセッションは {{ic|/usr/share/wayland-sessions/sway.desktop}} にあります。[[GDM]] や [[SDDM]] などのディスプレイマネージャは自動的にセッションを認識ます。
   
 
=== X から ===
 
=== X から ===
21行目: 32行目:
   
 
== 設定 ==
 
== 設定 ==
  +
i3 を既に使っている場合、i3 の設定を {{ic|~/.config/sway/config}} にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを {{ic|~/.config/sway/config}} にコピーしてください。サンプル設定ファイルは {{ic|/etc/sway/config}} にあります。ただし {{ic|DFALLBACK_CONFIG_DIR}} フラグが設定されている場合は存在しません。設定方法は sway(5) の [[man ページ]]を見てください。
  +
 
=== キーマップ ===
 
=== キーマップ ===
 
デフォルトでは、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)
42行目: 55行目:
 
ステータスバーを表示したいときは {{Pkg|i3status}} プログラムをインストールするのが簡単です。sway の設定の末尾に以下のスニペットを追加するだけで表示できます:
 
ステータスバーを表示したいときは {{Pkg|i3status}} プログラムをインストールするのが簡単です。sway の設定の末尾に以下のスニペットを追加するだけで表示できます:
 
{{hc|~/.config/sway/config|<nowiki>
 
{{hc|~/.config/sway/config|<nowiki>
bar {
+
bar {
 
status_command i3status
 
status_command i3status
  +
}</nowiki>}}
}
 
</nowiki>}}
 
 
i3status をカラー出力させたい場合、i3status の設定の以下の部分を調整してください:
 
i3status をカラー出力させたい場合、i3status の設定の以下の部分を調整してください:
 
{{hc|~/.config/i3status/config|<nowiki>
 
{{hc|~/.config/i3status/config|<nowiki>
58行目: 70行目:
 
以下の行を sway の設定の最後に追加することで、全ての画面 ({{ic|"*"}} という名前にマッチする画面) で背景画像を設定できます:
 
以下の行を sway の設定の最後に追加することで、全ての画面 ({{ic|"*"}} という名前にマッチする画面) で背景画像を設定できます:
 
{{hc|~/.config/sway/config|<nowiki>
 
{{hc|~/.config/sway/config|<nowiki>
output "*" background /home/onny/pictures/fredwang_norway.jpg fill
+
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" {
+
input "2:14:ETPS/2_Elantech_Touchpad" {
tap enabled
+
tap enabled
  +
natural_scroll enabled
}
 
  +
}
 
</nowiki>}}
 
</nowiki>}}
 
デバイスの識別子は以下のコマンドで確認できます:
 
デバイスの識別子は以下のコマンドで確認できます:
73行目: 86行目:
 
上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: {{ic|"2:14:ETPS\/2_Elantech_Touchpad"}})。設定に追加するときはエスケープを取り除いてください。
 
上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: {{ic|"2:14:ETPS\/2_Elantech_Touchpad"}})。設定に追加するときはエスケープを取り除いてください。
   
アクセラレーションなど他のオプションについてはコマンドで詳細を確認できます:
+
アクセラレーションなど他のオプションについては {{ic|sway-input}} man ページで詳細を確認できます
  +
$ 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 0 +15%
+
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume 0 -15%
+
bindsym XF86AudioLowerVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5%
bindsym XF86AudioToggle exec pactl set-sink-mute 0 toggle
+
bindsym XF86AudioToggle exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle
bindsym XF86MonBrightnessDown exec dsplight down 5
+
bindsym XF86MonBrightnessDown exec dsplight down 5
bindsym XF86MonBrightnessUp exec dsplight up 5
+
bindsym XF86MonBrightnessUp exec dsplight up 5
 
</nowiki>}}
 
</nowiki>}}
  +
  +
輝度や色補正を制御するユーティリティについては[[バックライト]]を見てください。
  +
  +
== Tips and tricks ==
  +
  +
=== ログイン時に自動起動 ===
  +
  +
tty1 にログインしたときに起動するには、以下を {{ic|.bash_profile}} に追加してください:
  +
  +
<nowiki>if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
  +
exec sway
  +
fi</nowiki>
   
 
== 既知の問題 ==
 
== 既知の問題 ==
92行目: 123行目:
 
i3-dmenu-desktop を sway から直接使うことはできませんが、パッチが存在します: https://github.com/i3/i3/pull/2265/files 。残念ながら、特定の状況で i3 から使ったときにパッチが問題を起こすために、パッチがマージされることはありません。詳しくは次を参照: https://github.com/SirCmpwn/sway/issues/521 。
 
i3-dmenu-desktop を sway から直接使うことはできませんが、パッチが存在します: https://github.com/i3/i3/pull/2265/files 。残念ながら、特定の状況で i3 から使ったときにパッチが問題を起こすために、パッチがマージされることはありません。詳しくは次を参照: https://github.com/SirCmpwn/sway/issues/521 。
   
  +
{{AUR|sway-dmenu-desktop}} をインストールすることでパッチを手動で適用できます。パッケージは {{ic|sway-dmenu-desktop}} という新しい名前のバイナリを作成して sway で使用します。
パッチは手動で適用することができます:
 
  +
  +
=== 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|output "HDMI-A-1" res 1280x1024}} などの設定オプションで解像度が正しく設定できない場合があります。解像度の設定は {{Pkg|wlc}} コンポジタが受け持っており、TTY からディスプレイの解像度を認識します。
  +
  +
{{ic|1=video=HDMI-A-1:1280x1024:e}} などのカーネルパラメータを指定したりカスタム EDID バイナリ ([[Kernel Mode Setting]] を参照) を使用することで TTY の解像度を変えられる場合があります (WLC や Sway の解像度も変わります)。
  +
  +
=== GDM でログインすると余分なカーネルが表示される ===
  +
  +
ログインマネージャに GDM を使用していると、ログイン後に余分なカーソルが残ってしまうことがあります ([https://github.com/SirCmpwn/sway/issues/759 issue #759] を参照)。
   
  +
他の TTY に切り替えてから sway に戻ることで解決します。
<nowiki>$ wget 'https://patch-diff.githubusercontent.com/raw/i3/i3/pull/2265.patch'</nowiki>
 
# patch -p0 /usr/bin/i3-dmenu-desktop < 2265.patch
 
   
 
== 参照 ==
 
== 参照 ==

2017年3月18日 (土) 00:24時点における版

sway (SirCmpwn's Wayland window manager) は i3 と互換性のある Wayland コンポジタを作成しようという試みです。公式ウェブサイト より:

Sway は Wayland において Xorg の i3 ウィンドウマネージャの代わりとなるウィンドウマネージャです。既存の i3 設定で動作し i3 の機能のほとんどをサポートしています。

現状

Sway は開発途上なので注意して使って下さい。ただし、開発者の Drew DeVault (別名 SirCmpwn) はすでに常用できる状態だとしています。

既に実装されている機能と、まだ実装が進んでいない機能については以下のリンクを参照してください:

インストール

swaysway パッケージでインストールできます。最新の git 開発版は sway-gitAUR でインストールできます。

sway の起動

ヒント: ウィンドウ装飾ライブラリなど設定する必要がある環境変数については Wayland#GUI ライブラリを参照。

ターミナルから

ターミナルに sway と入力すれば sway が起動します。

ディスプレイマネージャを使う

sway のセッションは /usr/share/wayland-sessions/sway.desktop にあります。GDMSDDM などのディスプレイマネージャは自動的にセッションを認識します。

X から

X セッションの中で通常のプログラムと同じように sway を起動してテストすることも可能です。

設定

i3 を既に使っている場合、i3 の設定を ~/.config/sway/config にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを ~/.config/sway/config にコピーしてください。サンプル設定ファイルは /etc/sway/config にあります。ただし DFALLBACK_CONFIG_DIR フラグが設定されている場合は存在しません。設定方法は sway(5) の man ページを見てください。

キーマップ

デフォルトでは、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

ステータスバー

ステータスバーを表示したいときは i3status プログラムをインストールするのが簡単です。sway の設定の末尾に以下のスニペットを追加するだけで表示できます:

~/.config/sway/config
bar {
  status_command i3status
}

i3status をカラー出力させたい場合、i3status の設定の以下の部分を調整してください:

~/.config/i3status/config
general {
        colors = true
        interval = 5
}

どちらの例でも、システム全体にインストールされた設定ファイルはユーザーディレクトリにコピーされるので、それを修正してください。

壁紙

以下の行を 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 の man ページで詳細を確認できます。

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 XF86AudioToggle exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle
bindsym XF86MonBrightnessDown exec dsplight down 5
bindsym XF86MonBrightnessUp exec dsplight up 5

輝度や色補正を制御するユーティリティについてはバックライトを見てください。

Tips and tricks

ログイン時に自動起動

tty1 にログインしたときに起動するには、以下を .bash_profile に追加してください:

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
  exec sway
fi

既知の問題

i3-dmenu-desktop を使う

i3-dmenu-desktop を sway から直接使うことはできませんが、パッチが存在します: https://github.com/i3/i3/pull/2265/files 。残念ながら、特定の状況で i3 から使ったときにパッチが問題を起こすために、パッチがマージされることはありません。詳しくは次を参照: https://github.com/SirCmpwn/sway/issues/521

sway-dmenu-desktopAUR をインストールすることでパッチを手動で適用できます。パッケージは sway-dmenu-desktop という新しい名前のバイナリを作成して sway で使用します。

VirtualBox を使う

Sway は VirtualBox との相性があまり良くありません (あるいは全く動作しません)。

Sway Socket Not Detected

ターミナルマルチプレクサ (例: GNU Screen や tmux) の中で swaymsg -t get_outputs などのように swaymsg を使ったときに、以下のようなメッセージが返ってくることがあります:

sway socket not detected.
ERROR: Unable to connect to

上記のエラーを解決するには、マルチプレクサの外でコマンドを実行する必要があります。

ディスプレイの解像度が正しくない

output "HDMI-A-1" res 1280x1024 などの設定オプションで解像度が正しく設定できない場合があります。解像度の設定は wlc コンポジタが受け持っており、TTY からディスプレイの解像度を認識します。

video=HDMI-A-1:1280x1024:e などのカーネルパラメータを指定したりカスタム EDID バイナリ (Kernel Mode Setting を参照) を使用することで TTY の解像度を変えられる場合があります (WLC や Sway の解像度も変わります)。

GDM でログインすると余分なカーネルが表示される

ログインマネージャに GDM を使用していると、ログイン後に余分なカーソルが残ってしまうことがあります (issue #759 を参照)。

他の TTY に切り替えてから sway に戻ることで解決します。

参照