「Sway」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(→‎既知の問題: i3-dmenu-desktop は動作するようになった)
(4人の利用者による、間の11版が非表示)
2行目: 2行目:
 
[[Category:動的ウィンドウマネージャ]]
 
[[Category:動的ウィンドウマネージャ]]
 
[[en:Sway]]
 
[[en:Sway]]
''sway'' (SirCmpwn's Wayland window manager) は [[i3]] と互換性のある [[Wayland]] コンポジタを作成しようという試みです。[https://swaywm.org 公式ウェブサイト] より:
+
''sway'' (SirCmpwn's Wayland window manager) は [[i3]] と互換性のある [[Wayland]] コンポジタを作成しようという試みです。[http://swaywm.org 公式ウェブサイト] より:
 
:Sway は Wayland において Xorg の i3 ウィンドウマネージャの代わりとなるウィンドウマネージャです。既存の i3 設定で動作し i3 の機能のほとんどをサポートしています。
 
:Sway は Wayland において Xorg の i3 ウィンドウマネージャの代わりとなるウィンドウマネージャです。既存の i3 設定で動作し i3 の機能のほとんどをサポートしています。
   
 
== 現状 ==
 
== 現状 ==
  +
[https://github.com/swaywm/sway/releases/tag/1.0 Release sway 1.0] にあるように、Sway は基本的に100% i3 と互換です。実装された機能と、実装されていない機能については以下のリンクを参照してください:
Sway は開発途上なので注意して使って下さい。ただし、開発者の [https://drewdevault.com/ Drew DeVault] (別名 SirCmpwn) はすでに常用できる状態だとしています。
 
 
既に実装されている機能と、まだ実装が進んでいない機能については以下のリンクを参照してください:
 
 
*[https://github.com/SirCmpwn/sway/issues/2#issue-99897933 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/98 IPC 機能のサポート]
16行目: 14行目:
 
== インストール ==
 
== インストール ==
   
''sway'' は {{Pkg|sway}} パッケージで[[インストール]]できます。最新の git 開発版は {{AUR|sway-git}} でインストールできます。
+
''sway'' は {{Pkg|sway}} パッケージで[[インストール]]できます。最新の開発版は {{AUR|wlroots-git}} と {{AUR|sway-git}} でインストールできます。''sway'' は ''wlroots'' に緻密に依存しているので、''sway'' 更新時には ''wlroots'' も更新するのが望ましいです。
  +
  +
また、画面をロックする {{Pkg|swaylock}} や、アイドル時間管理デーモンの {{Pkg|swayidle}} もインストールできます。
   
 
== sway の起動 ==
 
== sway の起動 ==
26行目: 26行目:
   
 
=== ディスプレイマネージャを使う ===
 
=== ディスプレイマネージャを使う ===
  +
{{Note|Sway は公式にはディスプレイマネージャをサポートしていません。}}
 
sway のセッションは {{ic|/usr/share/wayland-sessions/sway.desktop}} にあります。[[GDM]] や [[SDDM]] などのディスプレイマネージャは自動的にセッションを認識します。
 
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}} フラグが設定されている場合は存在しません。設定方法は sway(5) の [[man ページ]]を見てください。
+
i3 を既に使っている場合、i3 の設定を {{ic|~/.config/sway/config}} にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを {{ic|~/.config/sway/config}} にコピーしてください。サンプル設定ファイルは {{ic|/etc/sway/config}} にあります。ただし {{ic|DFALLBACK_CONFIG_DIR}} フラグが設定されている場合は存在しません。設定方法は {{man|5|sway}} を見てください。
   
 
=== キーマップ ===
 
=== キーマップ ===
51行目: 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
   
 
=== ステータスバー ===
 
=== ステータスバー ===
68行目: 71行目:
   
 
=== 壁紙 ===
 
=== 壁紙 ===
  +
Sway 1.1 以降、壁紙機能は {{Pkg|swaybg}} に分割され、{{ic|output}} コマンドを動作させるのに必要です。
  +
 
以下の行を sway の設定の最後に追加することで、全ての画面 ({{ic|"*"}} という名前にマッチする画面) で背景画像を設定できます:
 
以下の行を sway の設定の最後に追加することで、全ての画面 ({{ic|"*"}} という名前にマッチする画面) で背景画像を設定できます:
 
{{hc|~/.config/sway/config|<nowiki>
 
{{hc|~/.config/sway/config|<nowiki>
86行目: 91行目:
 
上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: {{ic|"2:14:ETPS\/2_Elantech_Touchpad"}})。設定に追加するときはエスケープを取り除いてください。
 
上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: {{ic|"2:14:ETPS\/2_Elantech_Touchpad"}})。設定に追加するときはエスケープを取り除いてください。
   
アクセラレーションなど他のオプションについては {{ic|sway-input}} の man ページで詳細を確認できます。
+
アクセラレーションなど他のオプションについては {{man|5|sway-input}} で詳細を確認できます。
   
 
=== HiDPI ===
 
=== HiDPI ===
100行目: 105行目:
 
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5%
 
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 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 XF86AudioMute exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle
bindsym XF86MonBrightnessDown exec dsplight down 5
+
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec dsplight up 5
+
bindsym XF86MonBrightnessUp exec brightnessctl set +5%
 
</nowiki>}}
 
</nowiki>}}
   
輝度や色補正を制御するユーティリティについては[[バックライト]]を見てください。
+
{{Pkg|brightnessctl}} を使うことで輝度を制御できます。輝度や色補正を制御するユーティリティについては[[バックライト]]を見てください。
   
== Tips and tricks ==
+
=== .Xresources ===
  +
  +
sway で使用するには {{ic|.Xresources}} を {{ic|.Xdefaults}} にコピーしてください。
  +
  +
== ヒントとテクニック ==
   
 
=== ログイン時に自動起動 ===
 
=== ログイン時に自動起動 ===
117行目: 126行目:
 
fi</nowiki>
 
fi</nowiki>
   
  +
=== dmenu 代替 ===
== 既知の問題 ==
 
   
  +
[[dmenu]] は XWayland 上で動作するため、フォーカスが他のところへ移るとアプリケーションは反応しなくなります。反応しなくなった dmenu を元に戻すには sway を再起動する必要があります。[[rofi]] を使用するという案もありますが、rofi をメニューとして使用するには、urxvt など wayland ネイティブではない仮想端末から起動しなくてはなりません。Sway でメニューとして起動してもメニューにフォーカスが移りません (rofi にマウスを載せないと入力が通りません)。詳しくは https://github.com/swaywm/sway/issues/1367#issuecomment-332910152 を参照。
=== i3-dmenu-desktop を使う ===
 
   
  +
== 既知の問題 ==
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 を使う ===
 
=== VirtualBox を使う ===
   
Sway は VirtualBox との相性があまり良くありません (あるいは全く動作しません)。
+
Sway は [[VirtualBox]] との相性があまり良くありません (あるいは全く動作しません)。
   
 
=== Sway Socket Not Detected ===
 
=== Sway Socket Not Detected ===
134行目: 141行目:
 
sway socket not detected.
 
sway socket not detected.
 
ERROR: Unable to connect to
 
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 内のターミナルで実行してください。
   
 
=== ディスプレイの解像度が正しくない ===
 
=== ディスプレイの解像度が正しくない ===
141行目: 163行目:
   
 
{{ic|1=video=HDMI-A-1:1280x1024:e}} などのカーネルパラメータを指定したりカスタム EDID バイナリ ([[Kernel Mode Setting]] を参照) を使用することで TTY の解像度を変えられる場合があります (WLC や Sway の解像度も変わります)。
 
{{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 に戻ることで解決します。
 
   
 
== 参照 ==
 
== 参照 ==

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 と互換です。実装された機能と、実装されていない機能については以下のリンクを参照してください:

インストール

swaysway パッケージでインストールできます。最新の開発版は wlroots-gitAURsway-gitAUR でインストールできます。swaywlroots に緻密に依存しているので、sway 更新時には wlroots も更新するのが望ましいです。

また、画面をロックする swaylock や、アイドル時間管理デーモンの swayidle もインストールできます。

sway の起動

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

ターミナルから

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

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

ノート: Sway は公式にはディスプレイマネージャをサポートしていません。

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

あるいは、テキストベースのセッションマネージャを使うこともできます。ディスプレイマネージャ#コンソールを参照してください。

設定

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 代替

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

これは swaymsgSWAYSOCK のソケットに接続できないことを意味しています。

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 の解像度も変わります)。

参照