「Sway」の版間の差分
(5人の利用者による、間の167版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:Wayland コンポジタ]] |
+ | [[es:Sway]] |
||
− | [[Category:動的ウィンドウマネージャ]] |
||
[[en:Sway]] |
[[en:Sway]] |
||
+ | [[it:Sway]] |
||
− | ''sway'' (SirCmpwn's Wayland window manager) は [[i3]] と互換性のある [[Wayland]] コンポジタを作成しようという試みです。[http://swaywm.org 公式ウェブサイト] より: |
||
+ | [[pt:Sway]] |
||
− | :Sway は Wayland において Xorg の i3 ウィンドウマネージャの代わりとなるウィンドウマネージャです。既存の i3 設定で動作し i3 の機能のほとんどをサポートしています。 |
||
+ | [[zh-hans:Sway]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|ウィンドウマネージャ}} |
||
+ | {{Related articles end}} |
||
+ | sway ('''S'''irCmpwn's '''Way'''land compositor [https://github.com/swaywm/sway/blob/f0ddf6d74c98ba6c502783b8f41be859c56712c9/README.md] から派生) は [[i3]] と互換性を持つように設計された [[Wayland]] コンポジタです。[http://swaywm.org 公式ウェブサイト] より: |
||
+ | :Sway はタイリング Wayland コンポジタであり、X11 の i3 ウィンドウマネージャの代替品です。既存の i3 設定で動作し、i3 の機能に加えて、いくつかの追加機能をサポートしています。 |
||
+ | 見た目に興味がある場合は、Sway のフォークとして {{AUR|swayfx}} が存在します。 |
||
− | == 現状 == |
||
− | [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}} パッケージで[[インストール]]できます。最新の開発版は {{AUR|sway-git}} でインストールできます。''sway'' は ''wlroots'' に緻密に依存しているので、''sway'' 更新時には ''wlroots'' も更新するのが望ましいです。 |
|
+ | |||
+ | {{Note|[[NVIDIA]] を含む、すべてのプロプライエタリなグラフィックスドライバは [https://github.com/swaywm/sway/wiki#nvidia-users サポートされていません]。NVIDIA ドライババージョン 495 以降より、[[NVIDIA#DRM カーネルモード設定|カーネルモード設定]] を有効化して sway を {{ic|1=--unsupported-gpu}} 付きで実行すれば、sway は機能します。}} |
||
また、画面をロックする {{Pkg|swaylock}} や、アイドル時間管理デーモンの {{Pkg|swayidle}} もインストールできます。 |
また、画面をロックする {{Pkg|swaylock}} や、アイドル時間管理デーモンの {{Pkg|swayidle}} もインストールできます。 |
||
− | デフォルトのアプリケーションランチャーは {{Pkg|dmenu}} |
+ | デフォルトのアプリケーションランチャーは {{AUR|wmenu}} です。(ただし、デフォルトの設定はまだ {{Pkg|dmenu}} が提供する ''dmenu_path'' に依存しています)、デフォルトの[[ターミナルエミュレータ]] は {{Pkg|foot}} です。インストールするか、あるいは設定ファイルで別のアプリケーションに変更するかを、初回起動の前に行なうことが望ましいです。i3 パッケージの Wayland 対応版については、sway wiki の [https://github.com/swaywm/sway/wiki/i3-Migration-Guide migration guide] を参照してください。 |
== sway の起動 == |
== sway の起動 == |
||
+ | Sway を起動する前に、キーボード、マウス、グラフィックカードなどのハードウェアデバイスにアクセスする必要があります。 {{man|3|sd-login}} で説明されているように、これらのハードウェアデバイスのコレクションはシートと呼ばれます。 |
||
− | {{Tip|ウィンドウ装飾ライブラリなど設定する必要がある環境変数については [[Wayland#GUI ライブラリ]]を参照。}} |
||
+ | Arch Linux では、Sway は次のどちらかを使ってシートにアクセスすることができます。 |
||
− | === ターミナルから === |
||
+ | |||
− | ターミナルに {{ic|sway}} と入力すれば sway が起動します。 |
||
+ | * {{man|8|systemd-logind}} と {{Pkg|polkit}} または |
||
+ | * {{Pkg|seatd}} これは、{{Pkg|wlroots}} の依存関係として Sway と一緒にインストールされます。 |
||
+ | |||
+ | {{ic|polkit}} がすでにシステムにインストールされている場合、Sway は自動的にあなたのシートにアクセスできるはずです。 |
||
+ | |||
+ | また、{{ic|polkit}} がシステムにインストールされておらず、代わりに seatd を使用したい場合は、seat ユーザーグループに自分を追加し、{{ic|seatd.service}} を [[起動/有効化]]し、再ログインして、以下の方法のいずれかを選択して Sway を起動することができます。 |
||
+ | |||
+ | === 手動 === |
||
+ | |||
+ | Linux コンソールで {{ic|sway}} と入力すれば sway が起動します。 |
||
+ | |||
+ | === TTY ログイン時に自動起動 === |
||
+ | |||
+ | X と同様に、Sway はシェル初期化ファイルに以下を追加することで開始できます。([[コマンドシェル#ログインシェル]]を参照): |
||
+ | |||
+ | {{bc|1=<nowiki> |
||
+ | if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then |
||
+ | exec sway |
||
+ | fi |
||
+ | </nowiki>}} |
||
+ | |||
+ | 詳細については、[[xinitrc#ログイン時に X を自動起動]] を参照してください。 |
||
=== ディスプレイマネージャを使う === |
=== ディスプレイマネージャを使う === |
||
{{Note|Sway は公式にはディスプレイマネージャをサポートしていません。}} |
{{Note|Sway は公式にはディスプレイマネージャをサポートしていません。}} |
||
sway のセッションは {{ic|/usr/share/wayland-sessions/sway.desktop}} にあります。[[GDM]] や [[SDDM]] などのディスプレイマネージャは自動的にセッションを認識します。 |
sway のセッションは {{ic|/usr/share/wayland-sessions/sway.desktop}} にあります。[[GDM]] や [[SDDM]] などのディスプレイマネージャは自動的にセッションを認識します。 |
||
+ | |||
+ | ディスプレイマネージャを通して、[https://github.com/swaywm/sway/wiki/Systemd-integration#running-sway-itself-as-a---user-service systemd ユーザーサービス] として sway を開始することも可能です。 |
||
あるいは、テキストベースのセッションマネージャを使うこともできます。[[ディスプレイマネージャ#コンソール]]を参照してください。 |
あるいは、テキストベースのセッションマネージャを使うこともできます。[[ディスプレイマネージャ#コンソール]]を参照してください。 |
||
35行目: | 62行目: | ||
== 設定 == |
== 設定 == |
||
i3 を既に使っている場合、i3 の設定を {{ic|~/.config/sway/config}} にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを {{ic|~/.config/sway/config}} にコピーしてください。サンプル設定ファイルは {{ic|/etc/sway/config}} にあります。ただし {{ic|DFALLBACK_CONFIG_DIR}} フラグが設定されている場合は存在しません。設定方法は {{man|5|sway}} を見てください。 |
i3 を既に使っている場合、i3 の設定を {{ic|~/.config/sway/config}} にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを {{ic|~/.config/sway/config}} にコピーしてください。サンプル設定ファイルは {{ic|/etc/sway/config}} にあります。ただし {{ic|DFALLBACK_CONFIG_DIR}} フラグが設定されている場合は存在しません。設定方法は {{man|5|sway}} を見てください。 |
||
+ | |||
+ | {{Note|ドロップインファイルの設定スニペットを適用するために、ユーザの設定には {{ic|include /etc/sway/config.d/*}} が含まれていることが期待されます。{{Pkg|sway}} パッケージは、いくつかの環境変数を systemd ユーザセッションと dbus にインポートする {{ic|50-systemd-user.conf}} ドロップインファイルを提供しています。このドロップインファイルは、{{Pkg|xdg-desktop-portal-wlr}} などのいくつかのアプリケーションで必要です。}} |
||
=== キーマップ === |
=== キーマップ === |
||
47行目: | 76行目: | ||
input <identifier> xkb_model "pc101" |
input <identifier> xkb_model "pc101" |
||
}} |
}} |
||
− | |||
− | なお、Sway は起動時に {{ic|XKB_DEFAULT_LAYOUT}} や {{ic|XKB_DEFAULT_VARIANT}} などの[[環境変数]]を読み込みますが、環境変数よりも設定ファイルの内容が優先されます。 |
||
詳細は {{man|5|sway-input}} および {{man|7|xkeyboard-config}} を参照してください。 |
詳細は {{man|5|sway-input}} および {{man|7|xkeyboard-config}} を参照してください。 |
||
+ | |||
+ | なお、Sway は起動時に {{ic|XKB_DEFAULT_LAYOUT}} や {{ic|XKB_DEFAULT_VARIANT}} などの[[環境変数]]を読み込みますが、環境変数よりも設定ファイルの内容が優先されます。 |
||
=== キーのオートリピート設定 === |
=== キーのオートリピート設定 === |
||
61行目: | 90行目: | ||
=== ステータスバー === |
=== ステータスバー === |
||
+ | |||
− | ステータスバーを表示したいときは {{Pkg|i3status}} プログラムをインストールするのが簡単です。sway の設定の末尾に以下のスニペットを追加するだけで表示できます: |
||
+ | sway には pure Wayland 環境で動作する ''swaybar'' がデフォルトのステータスバーとして同梱されています。''swaybar'' はシェルスクリプトや他のプログラムを呼び出して、ステータスバーに情報を表示することができます。詳細については、{{man|5|sway-bar}} や {{man|7|swaybar-protocol}} を参照してください。 |
||
+ | |||
+ | {{Tip|{{Pkg|waybar}} は sway に含まれているバー (swaybar) の代替になります。}} |
||
+ | |||
+ | {{Pkg|i3status}} のインストールは、 Wayland で実用的なデフォルトのステータスバーを取得するためのオプションです。sway の設定の末尾に以下のスニペットを追加するだけで表示できます: |
||
{{hc|~/.config/sway/config|<nowiki> |
{{hc|~/.config/sway/config|<nowiki> |
||
bar { |
bar { |
||
87行目: | 121行目: | ||
{{bc|output * bg #000000 solid_color}} |
{{bc|output * bg #000000 solid_color}} |
||
− | + | {{Pkg|swaybg}} コマンドの GTK3 フロントエンドとして {{AUR|azote}} を使うことができます。 |
|
=== 入力デバイス === |
=== 入力デバイス === |
||
特定の入力デバイスの設定を調整することができます。例えば、タッチパッドの tap-to-click とナチュナルスクロールを有効にするには、以下の input ブロックを追加: |
特定の入力デバイスの設定を調整することができます。例えば、タッチパッドの tap-to-click とナチュナルスクロールを有効にするには、以下の input ブロックを追加: |
||
{{hc|~/.config/sway/config|<nowiki> |
{{hc|~/.config/sway/config|<nowiki> |
||
− | input |
+ | input type:touchpad { |
tap enabled |
tap enabled |
||
natural_scroll enabled |
natural_scroll enabled |
||
} |
} |
||
</nowiki>}} |
</nowiki>}} |
||
+ | |||
− | デバイスの識別子は以下のコマンドで確認できます: |
||
+ | 特定のタッチパッドの設定をセットするには、{{ic|swaymsg -t get_inputs}} を使用して、デバイスの Identifier を取得し、{{ic|type:touchpad}} の代わりにそれを使用します。 |
||
− | $ swaymsg -t get_inputs |
||
+ | |||
− | 上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: {{ic|"2:14:ETPS\/2_Elantech_Touchpad"}})。設定に追加するときはエスケープを取り除いてください。 |
||
+ | {{Note| |
||
+ | 上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: {{ic|"2:14:ETPS\/2_Elantech_Touchpad"}})。設定に追加するときはエスケープを取り除いてください。}} |
||
アクセラレーションなど他のオプションについては {{man|5|sway-input}} で詳細を確認できます。 |
アクセラレーションなど他のオプションについては {{man|5|sway-input}} で詳細を確認できます。 |
||
+ | |||
+ | グラフィックタブレットをお使いの方は、[[ペンタブレット#Sway]]をご覧ください。 |
||
+ | |||
+ | ==== タッチディスプレイのマッピング ==== |
||
+ | |||
+ | マルチディスプレイ環境で使用されるタッチディスプレイのタッチ入力ターゲットは、そのタッチディスプレイにのみマッピングできます。 |
||
+ | |||
+ | {{hc|~/.config/sway/config| |
||
+ | set $display1 "Dell Inc. DELL P2414H VHVTW542165L" |
||
+ | set $display2 "Dell Inc. DELL P2418HT MYDM775F152L" |
||
+ | set $display2-touch "8146:24835:Melfas_LGD_AIT_Touch_Controller" |
||
+ | |||
+ | input $display2-touch map_to_output $display2 |
||
+ | }} |
||
=== HiDPI === |
=== HiDPI === |
||
設定ファイルの {{ic|output}} コマンドでディスプレイのスケールファクタを設定してください。スケールファクタは小数でも指定できます。HiDPI ディスプレイの場合は 2 などに設定してください。 |
設定ファイルの {{ic|output}} コマンドでディスプレイのスケールファクタを設定してください。スケールファクタは小数でも指定できます。HiDPI ディスプレイの場合は 2 などに設定してください。 |
||
+ | |||
− | output <name> scale <factor> |
||
+ | {{hc|~/.config/sway/config| |
||
+ | output <name> scale <factor> |
||
+ | }} |
||
+ | |||
ディスプレイの名前は以下のコマンドで確認できます: |
ディスプレイの名前は以下のコマンドで確認できます: |
||
$ swaymsg -t get_outputs |
$ swaymsg -t get_outputs |
||
+ | |||
+ | === タッチディスプレイのマッピング === |
||
+ | |||
+ | マルチディスプレイ環境で使用するタッチディスプレイのタッチ入力のターゲットを、そのタッチディスプレイのみにマッピングすることができます。 |
||
+ | |||
+ | {{hc|~/.config/sway/config| |
||
+ | set $display1 "Dell Inc. DELL P2414H VHVTW542165L" |
||
+ | set $display2 "Dell Inc. DELL P2418HT MYDM775F152L" |
||
+ | set $display2-touch "8146:24835:Melfas_LGD_AIT_Touch_Controller" |
||
+ | |||
+ | input $display2-touch map_to_output $display2 |
||
+ | }} |
||
=== カスタムキーバインド === |
=== カスタムキーバインド === |
||
− | キーボードの[[ |
+ | キーボードの[[キーボード入力|特殊なキー]]を使ってコマンドを実行することができます。例えば、ボリュームや画面の明るさを制御するには: |
+ | |||
− | {{hc|~/.config/sway/config|<nowiki> |
||
+ | {{hc|~/.config/sway/config| |
||
− | bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% |
||
− | bindsym |
+ | bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% |
− | bindsym |
+ | bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% |
+ | bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle |
||
+ | bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle |
||
bindsym XF86MonBrightnessDown exec brightnessctl set 5%- |
bindsym XF86MonBrightnessDown exec brightnessctl set 5%- |
||
− | bindsym XF86MonBrightnessUp exec brightnessctl set |
+ | bindsym XF86MonBrightnessUp exec brightnessctl set 5%+ |
+ | bindsym XF86AudioPlay exec playerctl play-pause |
||
− | </nowiki>}} |
||
+ | bindsym XF86AudioNext exec playerctl next |
||
+ | bindsym XF86AudioPrev exec playerctl previous |
||
+ | bindsym XF86Search exec $menu |
||
+ | }} |
||
− | + | 詳細や代替ユーティリティについては、[[PulseAudio#キーボードのボリュームコントロール]]、[[Advanced Linux Sound Architecture#キーボードのボリュームコントロール]]、[[バックライト#バックライトユーティリティ]]、[[MPRIS]] を参照してください。 |
|
+ | ロック画面がアクティブなときにキーバインドを実行できるようにするには、{{ic|--locked}} パラメーターを bindsym に追加します。 |
||
− | === .Xresources === |
||
+ | bindsym --locked XF86AudioPlay exec playerctl play-pause |
||
+ | |||
+ | {{Tip|{{AUR|wev}} は、Wayland の {{Pkg|xorg-xev}} と同様の機能を提供するツールです。}} |
||
+ | |||
+ | {{Note|systemd は、電源キーやふたの開閉などの特別なキーや、閉じるイベントを処理します。これらは、sway で設定されたものと干渉する可能性があります。[[systemd]] での設定方法の詳細については、{{man|1|loginctl}} および {{man|5|logind.conf}}} を参照してください。}} |
||
+ | |||
+ | ==== グラフィカルインジケーターバー ==== |
||
+ | |||
+ | 明るさや音量などのパーセント値設定の現在のレベルを、調整時にグラフィカルなバーで表示することが望ましい場合があります。Sway でこの機能を提供する良い選択肢は {{AUR|wob}} (あるいは {{AUR|wob-git}}) です。これは、人気な X ツール {{AUR|xob}} の機能の一部を提供し、layer-shell プロトコルを実装している Wayland ネイティブなユーティリティです。使用例は[https://github.com/francma/wob プロジェクトのウェブサイト]を見てください。 |
||
+ | |||
+ | ==== ワークスペースの概要 ==== |
||
+ | |||
+ | たくさんのワークスペースをたくさんのウィンドウで使っていて、何がどこにあるかわからなくなったら、{{AUR|sov}} が便利です。これはすべてのワークスペースのスキーマを表示するオーバーレイで、sway のナビゲーションを容易にします。プログラム名、ウィンドウのタイトルを表示し、マルチ出力のセットアップをサポートします。詳しくは [https://github.com/milgra/sov プロジェクトページ]をご覧ください。 |
||
+ | |||
+ | === アイドリング === |
||
+ | |||
+ | Sway には、アイドルセッションを処理するための専用のアイドル管理デーモン {{pkg|swayidle}} があります。デーモンを起動してパラメータ化する方法はいくつかあります。最も簡単な方法は、sway 自体の設定を使用することです。{{ic|swayidle}} は、{{ic|timeout}} (別名 idling)、{{ic|resume}} (resume from sleep) 、{{ic|before-sleep}} などのイベントを構成するための多数の引数を受け取ります。イベントの詳細と詳細については、{{man|1|swayidle}} を参照してください。その後、各イベントにアクションを割り当てることができます。イベントに複数のアクションを割り当てるには、トリガーを繰り返すだけです。 |
||
+ | |||
+ | 次の例では、{{ic|swayidle}} 30分後に画面をロックし、5 秒後に画面をオフにします。 |
||
+ | |||
+ | {{hc|~/.config/sway/config| |
||
+ | exec swayidle -w \ |
||
+ | timeout 1800 'swaylock -f' \ |
||
+ | timeout 1805 'swaymsg "output * power off"' \ |
||
+ | resume 'swaymsg "output * power on"' |
||
+ | }} |
||
+ | |||
+ | ロックされたスクリーンをもっと早く、例えば10秒後にオフにするには、ロックマネージャのプロセスリストを grep し、以下のように {{ic|swaymsg "output * power off"}} を実行します。 |
||
+ | |||
+ | timeout 10 'if pgrep -x swaylock; then swaymsg "output * dpms off"; fi' |
||
+ | |||
+ | 再生中のメディアを一時停止または一時停止する前に画面をロックするには、swayidle コマンドの次の手順を修正します。 |
||
+ | |||
+ | before-sleep 'playerctl pause' |
||
+ | before-sleep 'swaylock' |
||
+ | |||
+ | {{note|systemd も sway で設定されたイベントと競合する可能性のあるアイドルイベントを処理します。構成方法の詳細については、{{man|1|loginctl}} および {{man|5|logind.conf}} を参照してください。}} |
||
+ | |||
+ | === フローティングウィンドウ === |
||
+ | |||
+ | フローティングウィンドウまたはウィンドウの割り当てを有効にするには、アプリケーションを開き、{{ic|app_id}}、{{ic|class}}、{{ic|instance}}、および {{ic|title}} 属性を使用して、フローティングウィンドウの割り当てを有効にします。次のコマンドは、開いているすべてのウィンドウのプロパティを一覧表示します。 |
||
+ | |||
+ | $ swaymsg -t get_tree |
||
+ | |||
+ | 開いているすべてのウィンドウの {{ic|app_id}} のみを取得するには、次を使用します。 |
||
+ | |||
+ | $ swaymsg -t get_tree | grep "app_id" |
||
+ | |||
+ | フォーカスのあるウィンドウの {{ic|app_id}} を取得するには、次を使用します。 |
||
+ | |||
+ | $ swaymsg -t get_tree | jq -r '..|try select(.focused == true)' |
||
+ | |||
+ | 一部のウィンドウで {{ic|app_id}} が null になる場合は、{{ic|class}} 属性または {{ic|instance}} 属性 (あるいはその両方) を使用して、フローティングモード/ウィンドウの割り当てを有効にする必要があります。出力を検索して、ウィンドウの細かいルールを作成できます。 |
||
+ | |||
+ | {{hc|~/.config/sway/config|2= |
||
+ | for_window [app_id="galculator"] floating enable |
||
+ | assign [class="firefox"] -> 3 |
||
+ | assign [class="^Urxvt$" instance="^htop$"] -> 9 |
||
+ | }} |
||
+ | |||
+ | これは、{{Pkg|xorg-xprop}} を使用して [[X11]] の {{ic|class}} または {{ic|wm_name}} 属性を検索するのと似ています。 |
||
+ | |||
+ | 複数のモニターを使用する場合、フローティングスクラッチパッドウィンドウが大きくなりすぎて、複数のモニターをカバーする可能性があります。このコマンドはフローティングウィンドウを中央に配置し、現在のモニターのサイズの 80% のサイズに変更します。 |
||
+ | |||
+ | $ swaymsg move position center; swaymsg resize set 80ppt 80ppt |
||
+ | |||
+ | === クリップボード === |
||
+ | |||
+ | デフォルトでは、ウィンドウを閉じるとクリップボードは空になります。これは意外なことにデフォルトの動作だったりします。 |
||
+ | |||
+ | クリップボードの内容をウィンドウ間で共有するには、 "クリップボードマネージャ" をインストールする必要があります。 |
||
+ | |||
+ | Wayland 用に設計されたクリップボードマネージャの一例は、{{AUR|clipman}} または {{AUR|clipman-git}} からインストールできる [https://github.com/yory8/clipman clipman] です。 |
||
+ | |||
+ | Sway で clipman を起動するには、設定ファイルに次の行を追加します。 |
||
+ | |||
+ | {{hc|~/.config/sway/config|2= |
||
+ | exec wl-paste -t text --watch clipman store --no-persist |
||
+ | }} |
||
+ | |||
+ | === Xresources === |
||
sway で使用するには {{ic|.Xresources}} を {{ic|.Xdefaults}} にコピーしてください。 |
sway で使用するには {{ic|.Xresources}} を {{ic|.Xdefaults}} にコピーしてください。 |
||
=== XWayland === |
=== XWayland === |
||
+ | |||
− | "cannot open display" というエラーでプログラムが起動しない場合、X上で動作するプログラムであることが考えられます。XWayland 互換レイヤーを使うと Wayland 上で動作させられます。{{Pkg|xorg-server-wayland}} パッケージをインストールしてください。 |
||
+ | 詳細と利用可能なパッケージの概要については、[[Wayland#Xwayland]] を参照してください。 |
||
+ | |||
+ | XWayland の使用はデフォルトで有効になっています。 |
||
一方、XWayland を無効化し、Sway の純粋な Wayland セッションを使うには次のようにします: |
一方、XWayland を無効化し、Sway の純粋な Wayland セッションを使うには次のようにします: |
||
133行目: | 289行目: | ||
xwayland disable |
xwayland disable |
||
}} |
}} |
||
− | {{Note| |
+ | {{Note|プログラムによっては Wayland でネイティブに動作させるために [[Wayland#GUI ライブラリ|特殊な環境変数や設定オプション]] を必要とするものもありますし、Wayland を全くサポートしていないプログラム(ほとんどの独自アプリケーションを含む)もあります。現在のところ、レガシーアプリケーションが使えるようにXWaylandをオンにしておくことが推奨されています。}} |
+ | |||
+ | === 別の wlroots レンダラーを使用する === |
||
+ | |||
+ | 環境変数 {{ic|WLR_RENDERER}} を指定することにより、別の [https://gitlab.freedesktop.org/wlroots/wlroots/-/tree/master/render wlroots レンダラー]を使用することができます。利用可能なレンダラーの一覧は、[https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env_vars.md wlroots のドキュメント]にあります。{{ic|vulkan}} レンダラを使用する場合は {{Pkg|vulkan-validation-layers}} をインストールする必要がある場合があります。さもないと、sway が起動に失敗するかもしれません。 |
||
+ | |||
+ | === 自動起動 === |
||
+ | |||
+ | [[i3#自動起動]] を参照して、sway の設定ファイル名を調整してください。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
+ | === 最初に CapsLock/NumLock を有効にする === |
||
− | === ログイン時に自動起動 === |
||
+ | デフォルトでは、sway は起動時に最初に {{ic|CapsLock}} と {{ic|NumLock}} キーを無効にします。代わりに、起動時にこれらを有効にするには、キーボード入力設定の {{ic|xkb_capslock}} または {{ic|xkb_numlock}} あるいはその両方を {{ic|enable}}に設定します。例えば、すべてのキーボードで有効にするには、sway 設定に次の行を追加します。 |
||
− | tty1 にログインしたときに起動するには、以下を {{ic|.bash_profile}} に追加してください: |
||
+ | {{hc|~/.config/sway/config| |
||
− | <nowiki>if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then |
||
+ | input type:keyboard xkb_capslock enabled |
||
− | exec sway |
||
+ | input type:keyboard xkb_numlock enabled |
||
− | fi</nowiki> |
||
+ | }} |
||
+ | いずれの場合も、キーボードの該当するキーを押すことで {{ic|CapsLock}} と {{ic|NumLock}} を切り替えることができます。 |
||
− | === CapsLock/NumLock の有効化 === |
||
+ | |||
+ | {{Note|1=これらのオプションを有効にすると、sway 設定ファイル [https://bugzilla.mozilla.org/show_bug.cgi?id=1652820 Bugzilla 1652820] をリロードしたときに Firefox がクラッシュする可能性があります。}} |
||
+ | |||
+ | === 現在のキーボードレイアウト === |
||
+ | |||
+ | 現在のキーボードレイアウトは、次のようにして取得できます。{{ic|''kbd_identifier''}} は、キーボードの識別子で置き換える必要があります。 |
||
+ | |||
+ | $ swaymsg -t get_inputs {{!}} jq -r '.[] {{!}} select(.identifier == "''kbd_identifier''") {{!}} .xkb_active_layout_name' |
||
+ | |||
+ | === コンポーズキー === |
||
+ | |||
+ | {{ic|PrintScreen}} を[[Xorg でのキーボード設定#コンポーズキーの設定|コンポーズキー]]として設定するには、 |
||
+ | |||
+ | $ swaymsg 'input * xkb_options compose:prsc' |
||
+ | |||
+ | コンポーズキーの組み合わせは、[[Xorg でのキーボード設定#キーの組み合わせ|XCompose ファイル]]で設定することもできます。この変更を有効にするには、アプリケーションを再起動する必要があります。 |
||
+ | |||
+ | {{ic|/usr/include/X11/keysymdef.h}} でキーの名前を調べたり、{{man|1|xev}} のようなデバッガ {{man|1|xkbcli-interactive-wayland}} ({{ic|/usr/lib/xkbcommon/}}フォルダ中) を使ったりすることができます。 |
||
+ | |||
+ | === バックライト切り替え === |
||
+ | |||
+ | ディスプレイの電源をオフ (またはオン) にするには (例:{{ic|Pause}})、次のスクリプトを Sway {{ic|config}} でバインドします。 |
||
+ | |||
+ | {{bc| |
||
+ | #!/bin/sh |
||
+ | read lcd < /tmp/lcd |
||
+ | if [ "$lcd" -eq "0" ]; then |
||
+ | swaymsg "output * power on" |
||
+ | echo 1 > /tmp/lcd |
||
+ | else |
||
+ | swaymsg "output * power off" |
||
+ | echo 0 > /tmp/lcd |
||
+ | fi |
||
+ | }} |
||
+ | |||
+ | または、[https://github.com/swaywm/sway/pull/6099 toggle] オプションを直接使用することもできますが、複数のモニターがある場合は出力を明示的に指定する必要があります。 |
||
+ | |||
+ | $ swaymsg "output ''output_name'' power toggle" |
||
+ | |||
+ | === 画面キャプチャと画面共有 === |
||
+ | |||
+ | こちらを参照 [[スクリーンショットの取得#Wayland]] |
||
+ | |||
+ | === 色温度調整 === |
||
+ | |||
+ | こちらを参照 [[バックライト#Wayland]]. |
||
+ | |||
+ | === キーボードを使用して swaynag を制御する === |
||
+ | |||
+ | 既定の警告/プロンプトプログラムである Swaynag は、sway に付属しており、ユーザーによるマウス操作のみをサポートしています。キーボードショートカットによる対話を有効にするには、{{AUR|swaynagmode}} などのヘルパープログラムを使用します。 |
||
+ | |||
+ | Swaynag モードは、まず swaynag を起動し、次のボタンの選択、プロンプトの削除、選択したボタンの受け入れなどのアクションをトリガーするシグナルを待機します。これらのシグナルは、制御引数 ({{ic|swaynagmode--select right}} や {{ic|swaynagmode--confirm}}など) を指定して swaynagmode スクリプト自体の別のインスタンスを起動することで送信されます。 |
||
+ | |||
+ | デフォルトでは、Swaynagmode は初期化時にスウェイモード {{ic|nag}} をトリガーし、終了時に {{ic|default}} をトリガーします。これにより、sway 構成でキーバインディングを簡単に定義できます。 |
||
− | CapsLock や NumLock を有効にするには: |
||
{{hc|~/.config/sway/config| |
{{hc|~/.config/sway/config| |
||
+ | set $nag exec swaynagmode |
||
− | input * xkb_capslock enable |
||
+ | mode "nag" { |
||
− | input * xkb_numlock enable |
||
+ | bindsym { |
||
+ | Ctrl+d mode "default" |
||
+ | |||
+ | Ctrl+c $nag --exit |
||
+ | q $nag --exit |
||
+ | Escape $nag --exit |
||
+ | |||
+ | Return $nag --confirm |
||
+ | |||
+ | Tab $nag --select prev |
||
+ | Shift+Tab $nag --select next |
||
+ | |||
+ | Left $nag --select next |
||
+ | Right $nag --select prev |
||
+ | |||
+ | Up $nag --select next |
||
+ | Down $nag --select prev |
||
+ | } |
||
+ | } |
||
}} |
}} |
||
+ | sway バージョン1.2以降では、モード名で大文字と小文字が区別されることに注意してください。 |
||
− | === dmenu 代替 === |
||
+ | swaynagmode を使用するように sway を設定するには、設定コマンド {{ic|swaynag_command swaynagmode}} を使用します。 |
||
− | [[dmenu]] は XWayland 上で動作するため、フォーカスが他のところへ移るとアプリケーションは反応しなくなります。反応しなくなった dmenu を元に戻すには sway を再起動する必要があります。[[rofi]] を使用するという案もありますが、rofi をメニューとして使用するには、urxvt など wayland ネイティブではない仮想端末から起動しなくてはなりません。Sway でメニューとして起動してもメニューにフォーカスが移りません (rofi にマウスを載せないと入力が通りません)。詳しくは https://github.com/swaywm/sway/issues/1367#issuecomment-332910152 を参照。 |
||
=== カーソルテーマとカーソルの大きさ === |
=== カーソルテーマとカーソルの大きさ === |
||
165行目: | 402行目: | ||
{{ic|''my_cursor_theme''}} は {{ic|Default}}, {{ic|Adwaita}}, {{ic|Simple-and-Soft}} などに置きかえ、{{ic|''my_cursor_size''}} は {{ic|48}} などに置きかえます。 |
{{ic|''my_cursor_theme''}} は {{ic|Default}}, {{ic|Adwaita}}, {{ic|Simple-and-Soft}} などに置きかえ、{{ic|''my_cursor_size''}} は {{ic|48}} などに置きかえます。 |
||
+ | |||
+ | {{ic|echo $XCURSOR_SIZE}} と {{ic|echo $XCURSOR_THEME}} でこれらの値を調べることができます。 |
||
+ | |||
変更を反映させるにはアプリケーションを再起動してください。 |
変更を反映させるにはアプリケーションを再起動してください。 |
||
− | さらなる詳細は[[カーソルテーマ]]と {{man|5|sway-input}} を参照。 |
||
{{Note|Wayland ではクライアント側でカーソルテーマが決定されます。アプリケーションが{{ic|$XCURSOR_SIZE}}, {{ic|$XCURSOR_THEME}} 環境変数を参照しないこともありえます。}} |
{{Note|Wayland ではクライアント側でカーソルテーマが決定されます。アプリケーションが{{ic|$XCURSOR_SIZE}}, {{ic|$XCURSOR_THEME}} 環境変数を参照しないこともありえます。}} |
||
+ | |||
+ | === systemd で sway 固有のデーモンを管理する === |
||
+ | |||
+ | 一部のサービス/デーモン ({{Pkg|swayidle}} や {{Pkg|kanshi}}など) は、現在のウィンドウマネージャが Sway の場合にのみ開始し、Sway が停止したときにこれらのサービスを停止したい場合があります。これを行うには、{{ic|sway-session.target}} を作成し、{{ic|sway-session.target}} が必要とするデーモン/サービスを作成します。この systemd ターゲットは、ユーザーターゲットである必要があります ([[systemd/ユーザー]] を参照) 例: |
||
+ | |||
+ | {{hc|1=~/.config/systemd/user/sway-session.target|2= |
||
+ | [Unit] |
||
+ | Description=Sway compositor session |
||
+ | Documentation=man:systemd.special |
||
+ | BindsTo=graphical-session.target |
||
+ | Wants=graphical-session-pre.target |
||
+ | After=graphical-session-pre.target |
||
+ | }} |
||
+ | |||
+ | 次に、Sway の設定ファイル(たとえば、{{ic|~/.config/sway/config}} に行を追加するか、{{ic|/etc/sway/config.d/}} に新しいファイルを追加して) 次の行を追加します。 |
||
+ | |||
+ | {{hc|1=~/.config/sway/config|2= |
||
+ | ... |
||
+ | ... |
||
+ | ... |
||
+ | exec_always "systemctl --user start sway-session.target" |
||
+ | }} |
||
+ | |||
+ | 設定ファイルの上記の行追加で、Sway が起動するたびに {{ic|sway-session.target}} もアクティブになります。 |
||
+ | |||
+ | 最後に、目的のサービスを {{ic|sway-session.target}} にリンクします。たとえば、{{Pkg|kanshi}} (または {{AUR|kanshi-git}}) サービスを追加するには、次のように入力します。 |
||
+ | |||
+ | {{hc|1=~/.config/systemd/user/kanshi.service|2= |
||
+ | [Unit] |
||
+ | Description=Dynamic output configuration for Wayland compositors |
||
+ | Documentation=https://sr.ht/~emersion/kanshi |
||
+ | BindsTo=sway-session.target |
||
+ | |||
+ | [Service] |
||
+ | Type=simple |
||
+ | ExecStart=/usr/bin/kanshi |
||
+ | |||
+ | [Install] |
||
+ | WantedBy=sway-session.target |
||
+ | }} |
||
+ | |||
+ | この[[ユーザーユニット]]を[[有効化]]は、Sway が動作している時のみ有効で、Sway が停止すると無効になります。 |
||
+ | |||
+ | {{ic|sway-session.target}} ファイルの作成と環境のインポートは、{{AUR|sway-systemd-git}} をインストールすることでも行うことができます。sway-systemd はサービスを cgroup に分けるだけでなく、各 GUI アプリケーションを独自の cgroup に配置します。これにより、個々のアプリケーションに対して cgroup 単位のリソース制約を課すことができます。[https://github.com/alebastr/sway-systemd sway-systemd README] を参照してください。 |
||
+ | |||
+ | === 起動後の画面解像度の変更 === |
||
+ | |||
+ | グラフィカルプログラム {{AUR|wdisplays}} またはターミナルプログラム {{AUR|wlr-randr}} |
||
+ | を使って、回転、解像度を変更し、ディスプレイを配置します。 |
||
+ | |||
+ | === ヘッドレス出力の作成 === |
||
+ | |||
+ | 物理的なビデオインターフェイスに関連しない出力を作成する、 HEADLESS-1、HEADLESS-2 など。 |
||
+ | |||
+ | $ swaymsg create_output |
||
+ | |||
+ | 新しい出力の説明を表示します。 |
||
+ | |||
+ | $ swaymsg -pt get_outputs | grep -A 10 HEADLESS |
||
+ | |||
+ | 新しい出力を、たとえば {{ic|output}} コマンドで設定します。 |
||
+ | |||
+ | {{hc|1=~/.config/sway/config|2= |
||
+ | output HEADLESS-1 { |
||
+ | pos 1920,0 |
||
+ | mode 1280x720@75Hz |
||
+ | } |
||
+ | }} |
||
== 既知の問題 == |
== 既知の問題 == |
||
+ | |||
+ | === アプリケーションランチャー === |
||
+ | |||
+ | {{Tip|Sway の wiki には [https://github.com/swaywm/sway/wiki#program-launchers 既知のアプリケーションランチャーのリスト] もあります。}} |
||
+ | |||
+ | i3-dmenu-desktop {{Pkg|dmenu}}、および {{Pkg|rofi}} はすべて Sway では比較的うまく機能しますが、すべて XWayland で実行されており、カーソルをネイティブの Wayland ウィンドウに移動すると応答しなくなるという同じ問題があります。この問題の理由は、Wayland のクライアント/ウィンドウが画面のフォーカスを持っていない限り、入力デバイスにアクセスできないためです。XWayland サーバ自体が Wayland コンポジタのクライアントであるためで、XWayland クライアントの1つは、ユーザ入力にアクセスするためのフォーカスを持っている必要があります。しかし、クライアントの1つがフォーカスを取得すると、入力を収集し、X11 プロトコルを介してすべての XWayland クライアントが利用できるようにします。そのため、XWayland のウィンドウにカーソルを移動して Esc キーを押すと問題が解決し、{{ic|pkill}} を実行しても問題が解決する場合があります。 |
||
+ | |||
+ | {{Pkg|bemenu}} は Wayland の dmenu をネイティブに置き換えたものです。どちらもオプションで {{Pkg|j4-dmenu-desktop}} と組み合わせることで、デスクトップファイルを起動するための Wayland ネイティブな組み合わせを提供できます (i3-dmenu-desktop がそうであるように)。例えば |
||
+ | |||
+ | j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite' |
||
+ | |||
+ | XWayland を無効にしない場合は、{{ic|BEMENU_BACKEND}} 環境変数を "wayland" に設定する必要があります。 |
||
+ | |||
+ | フローティングターミナルと fzf を使用して独自のビルドを行うこともできます ([https://github.com/swaywm/sway/issues/1367 GitHub の問題] を参照) |
||
+ | |||
+ | また、{{Pkg|plasma-workspace}} パッケージが提供する {{ic|krunner}} バイナリもランチャーとして機能し、XWayland とネイティブ Wayland の両方をサポートします。 |
||
+ | |||
+ | {{AUR|rofi-lbonn-wayland-git}} は {{Pkg|rofi}} の派生形で、Wayland で動作します。また、X11 セッションで起動する必要がある場合は {{ic|-x11}} フラグがあります。 |
||
+ | |||
+ | {{Pkg|wofi}} はコマンド・ランチャーで、rofi と同じ機能の一部を提供します、wofi には、SSH モードやウィンドウ切り替えモードなど、rofi の機能の一部が欠けています。これは {{Pkg|wlroutes}} ライブラリに基づいており、レンダリングには GTK3 を使用していて、sway にはとてもよく効きます。 |
||
=== 仮想環境で使う === |
=== 仮想環境で使う === |
||
− | Sway は [[VirtualBox]] や [[VMware]] ESXi |
+ | Sway は [[VirtualBox]] や [[VMware]] ESXi の両方で動作します。 |
+ | |||
+ | [[QEMU]] で Sway を機能させるには、{{ic|-vga qxl}} で QEMU を開始する必要があります。 [[QEMU#qxl]]も参照してください。 |
||
==== Sway を tty から起動できない ==== |
==== Sway を tty から起動できない ==== |
||
182行目: | 511行目: | ||
==== マウスカーソルが表示されない ==== |
==== マウスカーソルが表示されない ==== |
||
− | VMSVGA グラフィックコントローラーを使うとカーソルが表示されません。 |
+ | 特定のグラフィックスドライバー(VMSVGA グラフィックコントローラーやのプロプライエタリ NVIDIA ドライバーなど)を使うとカーソルが表示されません。これは、[https://github.com/swaywm/sway/issues/3814] で説明されているようにソフトウェアカーソルを使用して修正できます。 |
+ | |||
+ | $ export WLR_NO_HARDWARE_CURSORS=1 |
||
=== Sway Socket Not Detected === |
=== Sway Socket Not Detected === |
||
− | + | {{ic|swaymsg -t get_outputs}} などの {{ic|swaymsg}} 引数を使用すると、次のメッセージが返されることがあります。 |
|
+ | |||
sway socket not detected. |
sway socket not detected. |
||
ERROR: Unable to connect to |
ERROR: Unable to connect to |
||
+ | |||
− | これは {{ic|swaymsg}} が {{ic|SWAYSOCK}} のソケットに接続できないことを意味しています。 |
||
+ | ターミナルマルチプレクサ ([[GNU Screen]] や [[tmux]] など) 内で実行される場合。これは、{{ic|swaymsg}} が {{ic|SWAYSOCK}} で提供されたソケットに接続できなかったことを意味します。 |
||
{{ic|SWAYSOCK}} の現在の値を確認するには: |
{{ic|SWAYSOCK}} の現在の値を確認するには: |
||
− | $ env | fgrep SWAYSOCK |
||
− | SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock |
||
+ | {{hc|$ env {{!}} grep -F "SWAYSOCK"|2= |
||
− | 最初の sway ソケットにアタッチしてみて、コマンドを再実行してみてください: |
||
− | + | SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock |
|
+ | }} |
||
+ | |||
+ | この問題を回避するには、実行中の sway プロセスに基づいてソケットにアタッチしてみてください。 |
||
+ | |||
+ | $ export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock |
||
上記のエラーを解決するには、マルチプレクサの外でコマンドを実行する必要があります。 |
上記のエラーを解決するには、マルチプレクサの外でコマンドを実行する必要があります。 |
||
+ | |||
+ | === Wayland サーバーへの接続に失敗する === |
||
+ | |||
+ | Tmux はセッションごとにローカルな環境変数を作成します (確認するには {{ic|tmux show-environment}} と入力) そのため、[https://github.com/tmux-plugins/tmux-resurrect tmux-resurrect] や [https://github.com/tmux-plugins/tmux-continuum tmux-continuum] で以前の tmux セッションに再アタッチしたり、sway の起動前に tmux サーバを起動すると、環境変数は、古くなっています。 |
||
+ | |||
+ | {{ic|update-environment}} を使って、セッションにアタッチするたびにそれらを更新するように tmux に指示するには、以下を {{ic|.tmux.conf}} に追加してください。 |
||
+ | |||
+ | set-option -g update-environment "DISPLAY WAYLAND_DISPLAY SWAYSOCK SSH_AUTH_SOCK" |
||
=== Unable to retrieve socket path === |
=== Unable to retrieve socket path === |
||
206行目: | 550行目: | ||
というメッセージが表示されます。これは {{ic|SWAYLOCK}} 環境変数が Sway 起動後に設定されるためで、{{ic|swaymsg}} は Sway 内のターミナルで実行してください。 |
というメッセージが表示されます。これは {{ic|SWAYLOCK}} 環境変数が Sway 起動後に設定されるためで、{{ic|swaymsg}} は Sway 内のターミナルで実行してください。 |
||
+ | === キー割り当てとキーボードレイアウト === |
||
− | === ディスプレイの解像度が正しくない === |
||
+ | デフォルトでは、複数のキーボードレイアウト {{ic|<nowiki>input * xkb_layout "us,ru"</nowiki>}} を使用している場合、セカンダリレイアウトを切り替えたときにバインディングが壊れることがあります。 |
||
− | {{ic|output "HDMI-A-1" res 1280x1024}} などの設定オプションで解像度が正しく設定できない場合があります。解像度の設定は {{Pkg|wlc}} コンポジタが受け持っており、TTY からディスプレイの解像度を認識します。 |
||
+ | https://github.com/swaywm/sway/pull/3058, のおかげで、以下のように {{ic|--to-code}} 行に {{ic|--to-code}}キーを追加するだけで済みます。 |
||
− | {{ic|1=video=HDMI-A-1:1280x1024:e}} などのカーネルパラメータを指定したりカスタム EDID バイナリ ([[Kernel Mode Setting]] を参照) を使用することで TTY の解像度を変えられる場合があります (WLC や Sway の解像度も変わります)。 |
||
+ | |||
+ | {{bc|<nowiki> |
||
+ | bindsym --to-code { |
||
+ | $mod+$left focus left |
||
+ | $mod+$down focus down |
||
+ | $mod+$up focus up |
||
+ | $mod+$right focus right |
||
+ | }</nowiki> |
||
+ | }} |
||
+ | |||
+ | または、変数 {{ic|set$mybind bindsym--to-code}} を作成し、{{ic|bindsym}} のすべてのインスタンスを {{ic|$mybind}} で置き換えることもできます。{{ic|$mybind$mod+w thing}} |
||
+ | |||
+ | === Java アプリケーション === |
||
+ | |||
+ | 一部の Java ベースのアプリケーション (IntelliJ、CLion、PyCharm などの JetBrains エディタ) を開くと、空白の画面が表示されます。これを軽減するには、{{ic|_JAVA_AWT_WM_NONREPARENTING}} 環境変数を1に設定してアプリケーションを起動します。 |
||
+ | |||
+ | {{Pkg|rofi}} や {{Pkg|dmenu}} などのランチャーからアプリケーションを起動する場合は、 [[デスクトップエントリ#環境変数の修正]] に示すように、アプリケーションのデスクトップエントリを変更してください。 |
||
+ | |||
+ | Java アプリケーションに関するいくつかの問題は、OpenJDK11 および Sway 1.5 で修正されました。ただし、一部のアプリケーションでは、新しいバージョンの OpenJDK を使用するために追加の構成が必要です。Android Studio の場合は、{{ic|1=STUDIO_JDK=/usr/lib/jvm/java-11-openjdk/}} を設定する必要があります。 [https://github.com/swaywm/sway/issues/5414] |
||
+ | |||
+ | === ボーダーでスクロール === |
||
+ | |||
+ | アプリケーションのボーダー上でマウスのスクロールホイールを使用するとクラッシュする場合は、{{ic|app_id}} (例:Firefox) に {{ic|border none}} を設定してください。 |
||
+ | |||
+ | === Program cannot open display === |
||
+ | |||
+ | 起動時に ''Program cannot open display'' というエラーメッセージが表示されてプログラムがクラッシュする場合は、使用しているプログラムが X11 プログラムである可能性があります。XWayland 互換性レイヤを使って Wayland で X11 プログラムを実行することができます。詳細は [[Sway#Xwayland]] を参照してください。 |
||
+ | |||
+ | === Unable to open wayland socket === |
||
+ | |||
+ | sway が起動せず、"Unable to open wayland socket" というエラーメッセージが出力される場合は、`$XDG_RUNTIME_DIR` 環境変数が設定されているが、指定したディレクトリがないことを意味する場合があります。 |
||
+ | |||
+ | === WINE アプリケーションでマウスが動作しない === |
||
+ | |||
+ | プログラムを実行するとき、WINE はプライマリーモニターが設定されていることを期待しますが、Wayland にはプライマリーモニターの概念がないため、(クリックが認識されないなど) 問題を引き起こす可能性があります。代わりに、Sway の設定にこの行を追加することで、[[xrandr]] を介して XWayland が使用するプライマリモニタを指定することができます。 |
||
+ | |||
+ | {{hc|~/.config/sway/config|2= |
||
+ | ... |
||
+ | exec_always xrandr --output XWAYLAND0 --primary |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | For this to work your display position offset needs to be 0,0 because of a bug [https://github.com/swaywm/sway/issues/6651] in sway. |
||
+ | XWAYLAND0 (または任意の XWAYLAND ディスプレイ名) はあなたのモニターを表していない可能性があり、異なるセッションで変更される可能性があります。代わりに、次の行を使用して最初の XWAYLAND ディスプレイを指定することができます。: |
||
+ | |||
+ | exec_always xrandr --output $(xrandr | grep -m 1 XWAYLAND | awk '{print $1;}') --primary |
||
+ | |||
+ | これらの行は、あなたのニーズに合わせて調整する必要があるかもしれません。どのディスプレイがどの名前にマッピングされているかは、引数なしで {{ic|xrandr}} コマンドを使用することで確認できます。 |
||
+ | |||
+ | {{Note|XWayland は、新しく接続されたモニターを(電源を切って再び入れたものも含めて)まったく新しいディスプレイとして認識します。もしこれが "プライマリーモニター" に起こった場合、それはもはやプライマリーとはみなされていません。}} |
||
== 参照 == |
== 参照 == |
||
* [https://github.com/SirCmpwn/sway Github プロジェクト] |
* [https://github.com/SirCmpwn/sway Github プロジェクト] |
||
+ | * [https://github.com/swaywm/sway/wiki Sway user-maintained wiki] |
||
* [http://swaywm.org ウェブサイト] |
* [http://swaywm.org ウェブサイト] |
||
+ | * [https://drewdevault.com/2019/03/11/Sway-1.0-released.html Announcing the release of sway 1.0] |
||
+ | |||
+ | {{TranslationStatus|Sway|2023/4/11|775342}} |
2024年7月26日 (金) 11:21時点における最新版
関連記事
sway (SirCmpwn's Wayland compositor [1] から派生) は i3 と互換性を持つように設計された Wayland コンポジタです。公式ウェブサイト より:
- Sway はタイリング Wayland コンポジタであり、X11 の i3 ウィンドウマネージャの代替品です。既存の i3 設定で動作し、i3 の機能に加えて、いくつかの追加機能をサポートしています。
見た目に興味がある場合は、Sway のフォークとして swayfxAUR が存在します。
目次
- 1 インストール
- 2 sway の起動
- 3 設定
- 4 ヒントとテクニック
- 5 既知の問題
- 6 参照
インストール
sway は sway パッケージでインストールできます。最新の開発版は sway-gitAUR でインストールできます。sway は wlroots に緻密に依存しているので、sway 更新時には wlroots も更新するのが望ましいです。
また、画面をロックする swaylock や、アイドル時間管理デーモンの swayidle もインストールできます。
デフォルトのアプリケーションランチャーは wmenuAUR です。(ただし、デフォルトの設定はまだ dmenu が提供する dmenu_path に依存しています)、デフォルトのターミナルエミュレータ は foot です。インストールするか、あるいは設定ファイルで別のアプリケーションに変更するかを、初回起動の前に行なうことが望ましいです。i3 パッケージの Wayland 対応版については、sway wiki の migration guide を参照してください。
sway の起動
Sway を起動する前に、キーボード、マウス、グラフィックカードなどのハードウェアデバイスにアクセスする必要があります。 sd-login(3) で説明されているように、これらのハードウェアデバイスのコレクションはシートと呼ばれます。
Arch Linux では、Sway は次のどちらかを使ってシートにアクセスすることができます。
- systemd-logind(8) と polkit または
- seatd これは、wlroots の依存関係として Sway と一緒にインストールされます。
polkit
がすでにシステムにインストールされている場合、Sway は自動的にあなたのシートにアクセスできるはずです。
また、polkit
がシステムにインストールされておらず、代わりに seatd を使用したい場合は、seat ユーザーグループに自分を追加し、seatd.service
を 起動/有効化し、再ログインして、以下の方法のいずれかを選択して Sway を起動することができます。
手動
Linux コンソールで sway
と入力すれば sway が起動します。
TTY ログイン時に自動起動
X と同様に、Sway はシェル初期化ファイルに以下を追加することで開始できます。(コマンドシェル#ログインシェルを参照):
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then exec sway fi
詳細については、xinitrc#ログイン時に X を自動起動 を参照してください。
ディスプレイマネージャを使う
sway のセッションは /usr/share/wayland-sessions/sway.desktop
にあります。GDM や SDDM などのディスプレイマネージャは自動的にセッションを認識します。
ディスプレイマネージャを通して、systemd ユーザーサービス として sway を開始することも可能です。
あるいは、テキストベースのセッションマネージャを使うこともできます。ディスプレイマネージャ#コンソールを参照してください。
設定
i3 を既に使っている場合、i3 の設定を ~/.config/sway/config
にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを ~/.config/sway/config
にコピーしてください。サンプル設定ファイルは /etc/sway/config
にあります。ただし DFALLBACK_CONFIG_DIR
フラグが設定されている場合は存在しません。設定方法は sway(5) を見てください。
キーマップ
デフォルトでは、sway は US QWERTY キーマップで起動します。キーマップを書き換えるには:
~/.config/sway/config
input * { xkb_layout "us,de,ru" xkb_variant "colemak,,typewriter" xkb_options "grp:win_space_toggle" } input <identifier> xkb_model "pc101"
詳細は sway-input(5) および xkeyboard-config(7) を参照してください。
なお、Sway は起動時に XKB_DEFAULT_LAYOUT
や XKB_DEFAULT_VARIANT
などの環境変数を読み込みますが、環境変数よりも設定ファイルの内容が優先されます。
キーのオートリピート設定
Typematic Delay (オートリピート開始までの時間) と Typematic Rate (1秒間のリピート回数) は、input
セクションに以下の行を加えると変更できます。設定項目について詳しくはコンソールでのキーボード設定#typematic delay と rate の調整を参照してください。
~/.config/sway/config
input <identifier> repeat_delay 300 input <identifier> repeat_rate 30
ステータスバー
sway には pure Wayland 環境で動作する swaybar がデフォルトのステータスバーとして同梱されています。swaybar はシェルスクリプトや他のプログラムを呼び出して、ステータスバーに情報を表示することができます。詳細については、sway-bar(5) や swaybar-protocol(7) を参照してください。
i3status のインストールは、 Wayland で実用的なデフォルトのステータスバーを取得するためのオプションです。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 /path/to/image.jpg fill
ファイルの名前やパスは適当に置き換えて下さい。
また、背景は単一色にもできます:
output * bg #000000 solid_color
swaybg コマンドの GTK3 フロントエンドとして azoteAUR を使うことができます。
入力デバイス
特定の入力デバイスの設定を調整することができます。例えば、タッチパッドの tap-to-click とナチュナルスクロールを有効にするには、以下の input ブロックを追加:
~/.config/sway/config
input type:touchpad { tap enabled natural_scroll enabled }
特定のタッチパッドの設定をセットするには、swaymsg -t get_inputs
を使用して、デバイスの Identifier を取得し、type:touchpad
の代わりにそれを使用します。
アクセラレーションなど他のオプションについては sway-input(5) で詳細を確認できます。
グラフィックタブレットをお使いの方は、ペンタブレット#Swayをご覧ください。
タッチディスプレイのマッピング
マルチディスプレイ環境で使用されるタッチディスプレイのタッチ入力ターゲットは、そのタッチディスプレイにのみマッピングできます。
~/.config/sway/config
set $display1 "Dell Inc. DELL P2414H VHVTW542165L" set $display2 "Dell Inc. DELL P2418HT MYDM775F152L" set $display2-touch "8146:24835:Melfas_LGD_AIT_Touch_Controller" input $display2-touch map_to_output $display2
HiDPI
設定ファイルの output
コマンドでディスプレイのスケールファクタを設定してください。スケールファクタは小数でも指定できます。HiDPI ディスプレイの場合は 2 などに設定してください。
~/.config/sway/config
output <name> scale <factor>
ディスプレイの名前は以下のコマンドで確認できます:
$ swaymsg -t get_outputs
タッチディスプレイのマッピング
マルチディスプレイ環境で使用するタッチディスプレイのタッチ入力のターゲットを、そのタッチディスプレイのみにマッピングすることができます。
~/.config/sway/config
set $display1 "Dell Inc. DELL P2414H VHVTW542165L" set $display2 "Dell Inc. DELL P2418HT MYDM775F152L" set $display2-touch "8146:24835:Melfas_LGD_AIT_Touch_Controller" input $display2-touch map_to_output $display2
カスタムキーバインド
キーボードの特殊なキーを使ってコマンドを実行することができます。例えば、ボリュームや画面の明るさを制御するには:
~/.config/sway/config
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle bindsym XF86MonBrightnessDown exec brightnessctl set 5%- bindsym XF86MonBrightnessUp exec brightnessctl set 5%+ bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous bindsym XF86Search exec $menu
詳細や代替ユーティリティについては、PulseAudio#キーボードのボリュームコントロール、Advanced Linux Sound Architecture#キーボードのボリュームコントロール、バックライト#バックライトユーティリティ、MPRIS を参照してください。
ロック画面がアクティブなときにキーバインドを実行できるようにするには、--locked
パラメーターを bindsym に追加します。
bindsym --locked XF86AudioPlay exec playerctl play-pause
グラフィカルインジケーターバー
明るさや音量などのパーセント値設定の現在のレベルを、調整時にグラフィカルなバーで表示することが望ましい場合があります。Sway でこの機能を提供する良い選択肢は wobAUR (あるいは wob-gitAUR) です。これは、人気な X ツール xobAUR の機能の一部を提供し、layer-shell プロトコルを実装している Wayland ネイティブなユーティリティです。使用例はプロジェクトのウェブサイトを見てください。
ワークスペースの概要
たくさんのワークスペースをたくさんのウィンドウで使っていて、何がどこにあるかわからなくなったら、sovAUR が便利です。これはすべてのワークスペースのスキーマを表示するオーバーレイで、sway のナビゲーションを容易にします。プログラム名、ウィンドウのタイトルを表示し、マルチ出力のセットアップをサポートします。詳しくは プロジェクトページをご覧ください。
アイドリング
Sway には、アイドルセッションを処理するための専用のアイドル管理デーモン swayidle があります。デーモンを起動してパラメータ化する方法はいくつかあります。最も簡単な方法は、sway 自体の設定を使用することです。swayidle
は、timeout
(別名 idling)、resume
(resume from sleep) 、before-sleep
などのイベントを構成するための多数の引数を受け取ります。イベントの詳細と詳細については、swayidle(1) を参照してください。その後、各イベントにアクションを割り当てることができます。イベントに複数のアクションを割り当てるには、トリガーを繰り返すだけです。
次の例では、swayidle
30分後に画面をロックし、5 秒後に画面をオフにします。
~/.config/sway/config
exec swayidle -w \ timeout 1800 'swaylock -f' \ timeout 1805 'swaymsg "output * power off"' \ resume 'swaymsg "output * power on"'
ロックされたスクリーンをもっと早く、例えば10秒後にオフにするには、ロックマネージャのプロセスリストを grep し、以下のように swaymsg "output * power off"
を実行します。
timeout 10 'if pgrep -x swaylock; then swaymsg "output * dpms off"; fi'
再生中のメディアを一時停止または一時停止する前に画面をロックするには、swayidle コマンドの次の手順を修正します。
before-sleep 'playerctl pause' before-sleep 'swaylock'
フローティングウィンドウ
フローティングウィンドウまたはウィンドウの割り当てを有効にするには、アプリケーションを開き、app_id
、class
、instance
、および title
属性を使用して、フローティングウィンドウの割り当てを有効にします。次のコマンドは、開いているすべてのウィンドウのプロパティを一覧表示します。
$ swaymsg -t get_tree
開いているすべてのウィンドウの app_id
のみを取得するには、次を使用します。
$ swaymsg -t get_tree | grep "app_id"
フォーカスのあるウィンドウの app_id
を取得するには、次を使用します。
$ swaymsg -t get_tree | jq -r '..|try select(.focused == true)'
一部のウィンドウで app_id
が null になる場合は、class
属性または instance
属性 (あるいはその両方) を使用して、フローティングモード/ウィンドウの割り当てを有効にする必要があります。出力を検索して、ウィンドウの細かいルールを作成できます。
~/.config/sway/config
for_window [app_id="galculator"] floating enable assign [class="firefox"] -> 3 assign [class="^Urxvt$" instance="^htop$"] -> 9
これは、xorg-xprop を使用して X11 の class
または wm_name
属性を検索するのと似ています。
複数のモニターを使用する場合、フローティングスクラッチパッドウィンドウが大きくなりすぎて、複数のモニターをカバーする可能性があります。このコマンドはフローティングウィンドウを中央に配置し、現在のモニターのサイズの 80% のサイズに変更します。
$ swaymsg move position center; swaymsg resize set 80ppt 80ppt
クリップボード
デフォルトでは、ウィンドウを閉じるとクリップボードは空になります。これは意外なことにデフォルトの動作だったりします。
クリップボードの内容をウィンドウ間で共有するには、 "クリップボードマネージャ" をインストールする必要があります。
Wayland 用に設計されたクリップボードマネージャの一例は、clipmanAUR または clipman-gitAUR からインストールできる clipman です。
Sway で clipman を起動するには、設定ファイルに次の行を追加します。
~/.config/sway/config
exec wl-paste -t text --watch clipman store --no-persist
Xresources
sway で使用するには .Xresources
を .Xdefaults
にコピーしてください。
XWayland
詳細と利用可能なパッケージの概要については、Wayland#Xwayland を参照してください。
XWayland の使用はデフォルトで有効になっています。
一方、XWayland を無効化し、Sway の純粋な Wayland セッションを使うには次のようにします:
~/.config/sway/config
xwayland disable
別の wlroots レンダラーを使用する
環境変数 WLR_RENDERER
を指定することにより、別の wlroots レンダラーを使用することができます。利用可能なレンダラーの一覧は、wlroots のドキュメントにあります。vulkan
レンダラを使用する場合は vulkan-validation-layers をインストールする必要がある場合があります。さもないと、sway が起動に失敗するかもしれません。
自動起動
i3#自動起動 を参照して、sway の設定ファイル名を調整してください。
ヒントとテクニック
最初に CapsLock/NumLock を有効にする
デフォルトでは、sway は起動時に最初に CapsLock
と NumLock
キーを無効にします。代わりに、起動時にこれらを有効にするには、キーボード入力設定の xkb_capslock
または xkb_numlock
あるいはその両方を enable
に設定します。例えば、すべてのキーボードで有効にするには、sway 設定に次の行を追加します。
~/.config/sway/config
input type:keyboard xkb_capslock enabled input type:keyboard xkb_numlock enabled
いずれの場合も、キーボードの該当するキーを押すことで CapsLock
と NumLock
を切り替えることができます。
現在のキーボードレイアウト
現在のキーボードレイアウトは、次のようにして取得できます。kbd_identifier
は、キーボードの識別子で置き換える必要があります。
$ swaymsg -t get_inputs | jq -r '.[] | select(.identifier == "kbd_identifier") | .xkb_active_layout_name'
コンポーズキー
PrintScreen
をコンポーズキーとして設定するには、
$ swaymsg 'input * xkb_options compose:prsc'
コンポーズキーの組み合わせは、XCompose ファイルで設定することもできます。この変更を有効にするには、アプリケーションを再起動する必要があります。
/usr/include/X11/keysymdef.h
でキーの名前を調べたり、xev(1) のようなデバッガ xkbcli-interactive-wayland(1) (/usr/lib/xkbcommon/
フォルダ中) を使ったりすることができます。
バックライト切り替え
ディスプレイの電源をオフ (またはオン) にするには (例:Pause
)、次のスクリプトを Sway config
でバインドします。
#!/bin/sh read lcd < /tmp/lcd if [ "$lcd" -eq "0" ]; then swaymsg "output * power on" echo 1 > /tmp/lcd else swaymsg "output * power off" echo 0 > /tmp/lcd fi
または、toggle オプションを直接使用することもできますが、複数のモニターがある場合は出力を明示的に指定する必要があります。
$ swaymsg "output output_name power toggle"
画面キャプチャと画面共有
こちらを参照 スクリーンショットの取得#Wayland
色温度調整
こちらを参照 バックライト#Wayland.
キーボードを使用して swaynag を制御する
既定の警告/プロンプトプログラムである Swaynag は、sway に付属しており、ユーザーによるマウス操作のみをサポートしています。キーボードショートカットによる対話を有効にするには、swaynagmodeAUR などのヘルパープログラムを使用します。
Swaynag モードは、まず swaynag を起動し、次のボタンの選択、プロンプトの削除、選択したボタンの受け入れなどのアクションをトリガーするシグナルを待機します。これらのシグナルは、制御引数 (swaynagmode--select right
や swaynagmode--confirm
など) を指定して swaynagmode スクリプト自体の別のインスタンスを起動することで送信されます。
デフォルトでは、Swaynagmode は初期化時にスウェイモード nag
をトリガーし、終了時に default
をトリガーします。これにより、sway 構成でキーバインディングを簡単に定義できます。
~/.config/sway/config
set $nag exec swaynagmode mode "nag" { bindsym { Ctrl+d mode "default" Ctrl+c $nag --exit q $nag --exit Escape $nag --exit Return $nag --confirm Tab $nag --select prev Shift+Tab $nag --select next Left $nag --select next Right $nag --select prev Up $nag --select next Down $nag --select prev } }
sway バージョン1.2以降では、モード名で大文字と小文字が区別されることに注意してください。
swaynagmode を使用するように sway を設定するには、設定コマンド swaynag_command swaynagmode
を使用します。
カーソルテーマとカーソルの大きさ
カーソルテーマ やカーソルの大きさを変更するには:
~/.config/sway/config
seat seat0 xcursor_theme my_cursor_theme my_cursor_size
my_cursor_theme
は Default
, Adwaita
, Simple-and-Soft
などに置きかえ、my_cursor_size
は 48
などに置きかえます。
echo $XCURSOR_SIZE
と echo $XCURSOR_THEME
でこれらの値を調べることができます。
変更を反映させるにはアプリケーションを再起動してください。
systemd で sway 固有のデーモンを管理する
一部のサービス/デーモン (swayidle や kanshiなど) は、現在のウィンドウマネージャが Sway の場合にのみ開始し、Sway が停止したときにこれらのサービスを停止したい場合があります。これを行うには、sway-session.target
を作成し、sway-session.target
が必要とするデーモン/サービスを作成します。この systemd ターゲットは、ユーザーターゲットである必要があります (systemd/ユーザー を参照) 例:
~/.config/systemd/user/sway-session.target
[Unit] Description=Sway compositor session Documentation=man:systemd.special BindsTo=graphical-session.target Wants=graphical-session-pre.target After=graphical-session-pre.target
次に、Sway の設定ファイル(たとえば、~/.config/sway/config
に行を追加するか、/etc/sway/config.d/
に新しいファイルを追加して) 次の行を追加します。
~/.config/sway/config
... ... ... exec_always "systemctl --user start sway-session.target"
設定ファイルの上記の行追加で、Sway が起動するたびに sway-session.target
もアクティブになります。
最後に、目的のサービスを sway-session.target
にリンクします。たとえば、kanshi (または kanshi-gitAUR) サービスを追加するには、次のように入力します。
~/.config/systemd/user/kanshi.service
[Unit] Description=Dynamic output configuration for Wayland compositors Documentation=https://sr.ht/~emersion/kanshi BindsTo=sway-session.target [Service] Type=simple ExecStart=/usr/bin/kanshi [Install] WantedBy=sway-session.target
このユーザーユニットを有効化は、Sway が動作している時のみ有効で、Sway が停止すると無効になります。
sway-session.target
ファイルの作成と環境のインポートは、sway-systemd-gitAUR をインストールすることでも行うことができます。sway-systemd はサービスを cgroup に分けるだけでなく、各 GUI アプリケーションを独自の cgroup に配置します。これにより、個々のアプリケーションに対して cgroup 単位のリソース制約を課すことができます。sway-systemd README を参照してください。
起動後の画面解像度の変更
グラフィカルプログラム wdisplaysAUR またはターミナルプログラム wlr-randrAUR を使って、回転、解像度を変更し、ディスプレイを配置します。
ヘッドレス出力の作成
物理的なビデオインターフェイスに関連しない出力を作成する、 HEADLESS-1、HEADLESS-2 など。
$ swaymsg create_output
新しい出力の説明を表示します。
$ swaymsg -pt get_outputs | grep -A 10 HEADLESS
新しい出力を、たとえば output
コマンドで設定します。
~/.config/sway/config
output HEADLESS-1 { pos 1920,0 mode 1280x720@75Hz }
既知の問題
アプリケーションランチャー
i3-dmenu-desktop dmenu、および rofi はすべて Sway では比較的うまく機能しますが、すべて XWayland で実行されており、カーソルをネイティブの Wayland ウィンドウに移動すると応答しなくなるという同じ問題があります。この問題の理由は、Wayland のクライアント/ウィンドウが画面のフォーカスを持っていない限り、入力デバイスにアクセスできないためです。XWayland サーバ自体が Wayland コンポジタのクライアントであるためで、XWayland クライアントの1つは、ユーザ入力にアクセスするためのフォーカスを持っている必要があります。しかし、クライアントの1つがフォーカスを取得すると、入力を収集し、X11 プロトコルを介してすべての XWayland クライアントが利用できるようにします。そのため、XWayland のウィンドウにカーソルを移動して Esc キーを押すと問題が解決し、pkill
を実行しても問題が解決する場合があります。
bemenu は Wayland の dmenu をネイティブに置き換えたものです。どちらもオプションで j4-dmenu-desktop と組み合わせることで、デスクトップファイルを起動するための Wayland ネイティブな組み合わせを提供できます (i3-dmenu-desktop がそうであるように)。例えば
j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite'
XWayland を無効にしない場合は、BEMENU_BACKEND
環境変数を "wayland" に設定する必要があります。
フローティングターミナルと fzf を使用して独自のビルドを行うこともできます (GitHub の問題 を参照)
また、plasma-workspace パッケージが提供する krunner
バイナリもランチャーとして機能し、XWayland とネイティブ Wayland の両方をサポートします。
rofi-lbonn-wayland-gitAUR は rofi の派生形で、Wayland で動作します。また、X11 セッションで起動する必要がある場合は -x11
フラグがあります。
wofi はコマンド・ランチャーで、rofi と同じ機能の一部を提供します、wofi には、SSH モードやウィンドウ切り替えモードなど、rofi の機能の一部が欠けています。これは wlroutes ライブラリに基づいており、レンダリングには GTK3 を使用していて、sway にはとてもよく効きます。
仮想環境で使う
Sway は VirtualBox や VMware ESXi の両方で動作します。
QEMU で Sway を機能させるには、-vga qxl
で QEMU を開始する必要があります。 QEMU#qxlも参照してください。
Sway を tty から起動できない
3D アクセラレーションを有効にする必要があります。VMware#Intel と Optimus で 3D グラフィックを有効化 を参照してください。
マウスカーソルが表示されない
特定のグラフィックスドライバー(VMSVGA グラフィックコントローラーやのプロプライエタリ NVIDIA ドライバーなど)を使うとカーソルが表示されません。これは、[2] で説明されているようにソフトウェアカーソルを使用して修正できます。
$ export WLR_NO_HARDWARE_CURSORS=1
Sway Socket Not Detected
swaymsg -t get_outputs
などの swaymsg
引数を使用すると、次のメッセージが返されることがあります。
sway socket not detected. ERROR: Unable to connect to
ターミナルマルチプレクサ (GNU Screen や tmux など) 内で実行される場合。これは、swaymsg
が SWAYSOCK
で提供されたソケットに接続できなかったことを意味します。
SWAYSOCK
の現在の値を確認するには:
$ env | grep -F "SWAYSOCK"
SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock
この問題を回避するには、実行中の sway プロセスに基づいてソケットにアタッチしてみてください。
$ export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock
上記のエラーを解決するには、マルチプレクサの外でコマンドを実行する必要があります。
Wayland サーバーへの接続に失敗する
Tmux はセッションごとにローカルな環境変数を作成します (確認するには tmux show-environment
と入力) そのため、tmux-resurrect や tmux-continuum で以前の tmux セッションに再アタッチしたり、sway の起動前に tmux サーバを起動すると、環境変数は、古くなっています。
update-environment
を使って、セッションにアタッチするたびにそれらを更新するように tmux に指示するには、以下を .tmux.conf
に追加してください。
set-option -g update-environment "DISPLAY WAYLAND_DISPLAY SWAYSOCK SSH_AUTH_SOCK"
Unable to retrieve socket path
tty から swaymsg -t
を実行すると、
Unable to retrieve socket path
というメッセージが表示されます。これは SWAYLOCK
環境変数が Sway 起動後に設定されるためで、swaymsg
は Sway 内のターミナルで実行してください。
キー割り当てとキーボードレイアウト
デフォルトでは、複数のキーボードレイアウト input * xkb_layout "us,ru"
を使用している場合、セカンダリレイアウトを切り替えたときにバインディングが壊れることがあります。
https://github.com/swaywm/sway/pull/3058, のおかげで、以下のように --to-code
行に --to-code
キーを追加するだけで済みます。
bindsym --to-code { $mod+$left focus left $mod+$down focus down $mod+$up focus up $mod+$right focus right }
または、変数 set$mybind bindsym--to-code
を作成し、bindsym
のすべてのインスタンスを $mybind
で置き換えることもできます。$mybind$mod+w thing
Java アプリケーション
一部の Java ベースのアプリケーション (IntelliJ、CLion、PyCharm などの JetBrains エディタ) を開くと、空白の画面が表示されます。これを軽減するには、_JAVA_AWT_WM_NONREPARENTING
環境変数を1に設定してアプリケーションを起動します。
rofi や dmenu などのランチャーからアプリケーションを起動する場合は、 デスクトップエントリ#環境変数の修正 に示すように、アプリケーションのデスクトップエントリを変更してください。
Java アプリケーションに関するいくつかの問題は、OpenJDK11 および Sway 1.5 で修正されました。ただし、一部のアプリケーションでは、新しいバージョンの OpenJDK を使用するために追加の構成が必要です。Android Studio の場合は、STUDIO_JDK=/usr/lib/jvm/java-11-openjdk/
を設定する必要があります。 [3]
ボーダーでスクロール
アプリケーションのボーダー上でマウスのスクロールホイールを使用するとクラッシュする場合は、app_id
(例:Firefox) に border none
を設定してください。
Program cannot open display
起動時に Program cannot open display というエラーメッセージが表示されてプログラムがクラッシュする場合は、使用しているプログラムが X11 プログラムである可能性があります。XWayland 互換性レイヤを使って Wayland で X11 プログラムを実行することができます。詳細は Sway#Xwayland を参照してください。
Unable to open wayland socket
sway が起動せず、"Unable to open wayland socket" というエラーメッセージが出力される場合は、`$XDG_RUNTIME_DIR` 環境変数が設定されているが、指定したディレクトリがないことを意味する場合があります。
WINE アプリケーションでマウスが動作しない
プログラムを実行するとき、WINE はプライマリーモニターが設定されていることを期待しますが、Wayland にはプライマリーモニターの概念がないため、(クリックが認識されないなど) 問題を引き起こす可能性があります。代わりに、Sway の設定にこの行を追加することで、xrandr を介して XWayland が使用するプライマリモニタを指定することができます。
~/.config/sway/config
... exec_always xrandr --output XWAYLAND0 --primary ...
For this to work your display position offset needs to be 0,0 because of a bug [4] in sway. XWAYLAND0 (または任意の XWAYLAND ディスプレイ名) はあなたのモニターを表していない可能性があり、異なるセッションで変更される可能性があります。代わりに、次の行を使用して最初の XWAYLAND ディスプレイを指定することができます。:
exec_always xrandr --output $(xrandr | grep -m 1 XWAYLAND | awk '{print $1;}') --primary
これらの行は、あなたのニーズに合わせて調整する必要があるかもしれません。どのディスプレイがどの名前にマッピングされているかは、引数なしで xrandr
コマンドを使用することで確認できます。