デフォルト設定
ShojiWM には完成済みのデフォルト設定が同梱されています
(packages/config/src/index.tsx、~/.config/shojiwm/src/index.tsx に
インストールされます)。このページでは、それが最初の状態で何をするか――
キーバインド・ウィンドウの挙動・マルチモニターのレイアウト・入力・エフェクト・
起動するプログラム――を解説します。これは最良の実例でもあります。何かを変えたいときは
~/.config/shojiwm/src/index.tsx を編集して Super + Shift + R で
ホットリロードしてください。
デフォルト設定はメンテナー個人のセットアップなので、いくつかのショートカットは特定の アプリ(kitty・Google Chrome・Discord・Dolphin)を開き、補助ツール(hyprshot・swappy・ cliphist・fcitx5・shoji-bar-4)に依存しています。該当ツールが無い場合、そのショートカットは 何も起こさないだけです――好みのプログラムに割り当て直してください。 キーバインドとポインター を参照。
キーバインド
モディファイアは Super(「Windows」キー)です。デフォルトでは Caps Lock が Ctrl として
機能する点に注意してください(入力 参照)。
プログラムの起動
| ショートカット | 動作 |
|---|---|
Super + T | ターミナル(kitty) |
Super + B | ブラウザ(Google Chrome、Wayland) |
Super + D | Discord |
Super + E | ファイルマネージャー(Dolphin) |
Super + A | ランチャーの切り替え(shoji-bar-4) |
Super(タップ) | ランチャーの切り替え――他のキーを押さない素早い(300ms 未満の)タップ |
Super + N | クイック設定の切り替え(shoji-bar-4) |
Super + C | カレンダーの切り替え(shoji-bar-4) |
Super + V | クリップボード履歴の切り替え(shoji-bar-4) |
Super + L | 画面のロック(shoji-bar-4) |
Super + P | 範囲スクリーンショット(hyprshot → swappy) |
Super + Ctrl + P | 画面を静止させてから範囲スクリーンショット |
ウィンドウ管理
| ショートカット | 動作 |
|---|---|
Super + ドラッグ | ウィンドウを移動――Super を押しながらウィンドウ上の任意の場所をドラッグ |
Super(長押し) | カーソルをロックするゲームからカーソルを解放――詳細 |
Super + Q | フォーカス中のウィンドウを閉じる |
Super + M | フォーカス中のウィンドウの最大化を切り替え |
Super + F | フォーカス中のウィンドウのフルスクリーンを切り替え(コンポジター側、下記参照) |
Super + S | 現在のワークスペースのタイルモードを切り替え |
Super + F と Wine / Proton のゲームほとんどのアプリはフルスクリーンを自分で切り替えるので、このキーが必要になる
ことはあまりありません。用意しているのは Wine / Proton で動くゲーム
(xwayland-satellite 経由)のためです。Wine は矩形がモニタ全体を覆っている
ウィンドウをすべてフルスクリーン扱いにするため、「ウィンドウモード」の解像度が
デスクトップと同じゲームは自力でフルスクリーンから抜けられず、ゲーム内の切り替え
が効かないように見えます。Super + F はコンポジター側から状態を強制します。
Wine はウィンドウマネージャー発の状態変更を受け入れてウィンドウをそのサイズに
合わせます。ゲーム側がフルスクリーン設定のままだと少し後に再びフルスクリーンに
戻るので、先にゲーム側をウィンドウモードにしてから押してください。
タイルとワークスペース
| ショートカット | 動作 |
|---|---|
Super + ← / → | 左/右のタイルへフォーカスを移動 |
Super + Ctrl + ← / → | 左/右のタイルへフォーカスを移動(別名) |
Super + Shift + ← / → | フォーカス中のタイルを左/右へ移動 |
Super + Ctrl + ↑ / ↓ | 前/次のワークスペースへ切り替え |
Super + Shift + ↑ / ↓ | フォーカス中のウィンドウを前/次のワークスペースへ移動 |
ウィンドウスイッチャー(Flip 3D)
| ショートカット | 動作 |
|---|---|
Super + Tab | 直前のウィンドウを手前にしてスイッチャーを開く |
Tab / Shift + Tab(Super を押したまま) | 次/前のウィンドウ |
← → ↑ ↓、マウスホイール、タッチパッドのスクロール、三本指スワイプ | ウィンドウを送る |
Super を離す、Return、Space | 手前のウィンドウに切り替え |
| ウィンドウをクリック | そのウィンドウに切り替え |
Escape | 何も変えずにデスクトップへ戻る |
下の Flip 3D を参照。index.tsx の WINDOW_SWITCHER_STYLE を "grid"
にすると、Super + Tab で代わりにウィンドウグリッドが開きます。
システム(コンポジター組み込み)
以下は設定ファイルではなくコンポジター本体に組み込まれたショートカットです。 設定が壊れていても必ず動作します。
| ショートカット | 動作 |
|---|---|
Super + Shift + R | 設定のホットリロード — index.tsx の編集内容を再起動なしで反映(概要 → ホットリロード 参照) |
Super + Shift + Q | ShojiWM セッションの終了 |
同じ2つの操作は shoji_wm --reload と shoji_wm --quit でも行えます
(キーバインド → 終了とリロード 参照)。
デバッグ
| ショートカット | 動作 |
|---|---|
Super + Shift + F | FPS/フレーム時間オーバーレイの切り替え |
ウィンドウの見た目
枠は Material 3 Expressive(packages/config/src/md3e/)で、shoji-bar-4 が IPC
(theme.set)で送る配色で描きます。届くまでは Material 3 の基準のダークスキームです。
配色が変わるときは、なめらかに移ります。
- 高さ 36px のタイトルバーに、アプリアイコン・タイトル・最小化/最大化/閉じるボタンが
並び、角は 16px の角丸です。ボタンにポインターが乗ると真ん中から泡が広がり、押すと
角丸の四角に変わります。閉じるボタンは error の色になり、最大化のアイコンは最大化中は
「元に戻す」に形を変えます。ボタンにポインターを置いたままにすると、ツールチップが
出ます(
<Popup/>)。 - クライアントの外側に細い枠線を引きます。フォーカスのあるウィンドウは白、ほかは
グレーです。フォーカスが移ると、枠線が外側へ一瞬太くなって戻ります
(
md3e/decoration.tsxのBORDER_SWELL)。影はフォーカスのあるウィンドウほど高くなります。 - 自分で枠を描くクライアント(GTK 4、Chrome など)は枠をそのままにして、角丸と枠線と 影だけを足します。
- フルスクリーンのウィンドウは、すべてのクローム(ボーダー・タイトルバー・角丸)を 外して端から端まで描画します。この素の経路により、コンポジターがバッファを直接ディスプレイに 渡せ(ダイレクトスキャンアウト)、テアリングも許可されるため、ゲームで最小のレイテンシに なります。
ウィンドウは下から上がりながら大きくなって開き(少し行き過ぎて戻ります)、縮みながら
消えて閉じ、最小化ではドックの方へ沈みます(md3e/motion.ts)。
タイルとワークスペース
ウィンドウ管理は HybridWindowManager が担当し、ワークスペースごとにタイルと フローティングを混在させます。
- ワークスペースはフローティングモードで始まります(ウィンドウは自由に配置でき、
Super+ ドラッグで動かせます)。Super+Sで現在のワークスペースのタイルモードを 切り替えると、ウィンドウが自動的に左右に並びます。 - モニターごとに複数のワークスペースを持ち、
Super+Ctrl+↑/↓で移動、Super+Shift+↑/↓でウィンドウをワークスペース間で移動します。 - 開閉・移動・リサイズ・ワークスペース切り替えにはアニメーションが付きます。
デフォルト設定は、ワークスペースのレイアウトを IPC ソケットで公開しているので、外部の バー(shoji-bar-4)がワークスペースインジケーターを描画したり、変化に反応したりできます。
ext-workspace に対応したバーには、ウィンドウのあるワークスペースとアクティブな
ワークスペースが見え、それらを activate できます。番号を指定してワークスペースを作る
こともできます。名前 5 で create_workspace を送ると、ワークスペース 5 が activate
されるかウィンドウを持つまで(空のまま)一覧に載り、activate するとそこへ切り替わります
(COMPOSITOR.workspace.event.onCreate)。
Flip 3D
Super + Tab で Windows Vista 風のウィンドウスイッチャー
(packages/config/src/flip-3d.tsx)が開きます。全ワークスペースのウィンドウが
最小化中のものも含めてデスクトップから浮き上がり、最近使った順に手前から奥へ斜めに
並びます。バーは表示されたままです。ウィンドウを選ぶと、そのワークスペースへ切り替え、
最小化中なら元に戻してフォーカスし、列はデスクトップへ戻っていきます。
- 開くとき・閉じるときはウィンドウ管理と同じイージングで、ウィンドウの実際の位置から 始まり実際の位置で終わるので、デスクトップがそのまま列に変形して戻ります。
- 開いている間はスイッチャーが入力をすべて受け取ります(入力グラブ)。 クリックやキーは後ろのウィンドウではなくスイッチャーに届きます。
- 手前(選択中)のウィンドウには、配色の primary の色のリングが付きます。選択中は
装飾の影を変えています(
WINDOW_SWITCHER.isSelected(id))。 - 開いている間はウィンドウのブラーと、クライアントが要求した領域
(
ext-background-effect-v1)のブラーを切ります(各ウィンドウを単独でテクスチャに描くため、 下にぼかす対象がありません)。列が戻っていく終わり際にじわっと戻ります。
列の見た目(表示枚数・間隔・傾き)は flip-3d.tsx 冒頭の定数で調整できます。
出力の合成で作られています。
ウィンドウグリッド
Flip 3D の代わりに使えるオーバービュー風のスイッチャーです
(packages/config/src/window-grid.tsx)。index.tsx の WINDOW_SWITCHER_STYLE を
"grid" にすると、Super + Tab で全ウィンドウが最近使った順に平面のグリッドへ並びます。
ウィンドウを選ぶまで開いたままなので、マウスだけでも操作できます。
| 操作 | 動作 |
|---|---|
| ウィンドウにカーソルを乗せる | そのウィンドウを選択 |
| ウィンドウをクリック | そのウィンドウに切り替え |
何もない所をクリック、Escape | 何も変えずにデスクトップへ戻る |
Tab / Shift + Tab、← → ↑ ↓、マウスホイール | 選択を移動 |
Return、Space | 選択中のウィンドウに切り替え |
Super を押したまま Tab か矢印キーを押してから Super を離す | 選択中のウィンドウに切り替え(Alt+Tab と同じ) |
デスクトップとの間の変形、選択中のウィンドウのリング、開いている間のブラー停止は
Flip 3D と共通です(window-switcher.tsx)。グリッドの余白と間隔は window-grid.tsx
冒頭の定数で調整できます。
マルチモニター
デフォルトの output.configure は、コネクタごとにスケールを設定し、すべてのディスプレイを
自動配置で左から右へ拡張します。外部モニターが接続されているとき(ドック構成)は、
ノートPC内蔵パネルをオフにします。
デフォルト設定のコネクタ名(eDP-1・HDMI-A-1・DP-1 など)とスケール値は、メンテナーの
ハードウェアのものです。自分のモニターに合わせてほぼ確実に調整したくなるはずです――
出力(ディスプレイ) を参照してください。
入力
input.configure が適用するデフォルト:
- キーボード —— Caps Lock が Ctrl として機能(
caps:ctrl_modifier)。キーリピートは 毎秒60回、開始遅延250 ms。 - タッチパッド —— タップでクリック、ナチュラルスクロール、2本指スクロール
(係数
0.3)、タイプ中は無効化。 - ポインター —— フラットな加速プロファイル(ポインター加速なし)。
変更方法は 入力デバイス を参照してください。
視覚エフェクト
ext-background-effect-v1プロトコルで要求したクライアント(例: 背後をぼかすよう コンポジターに要求する半透明アプリ)向けに、背景ブラーを提供します。- どのウィンドウにも、ぼかした背景を敷きます。半透明のクライアント(kitty の
background_opacityなど)から見えます。タイトルバーは不透明です (TITLE_BAR_ALPHAを 1 より小さくすると透けます)。 - レイヤーサーフェス(バー・ドック)とレイヤーポップアップ(メニュー)は、その背後が
ぼかされます。ただしサーフェスが
no_blur名前空間でオプトアウトしている場合 (と shoji-bar-4 の壁紙)は除きます。
これらの作り方は エフェクト を、どのアプリやバーに適用するかの選び方は 特定のウィンドウやレイヤーだけをぼかす を参照してください。
ドラッグアンドドロップ
ウィンドウ間でテキスト・ファイル・リンクをドラッグすると、ドラッグ中の画像が背景をぼかした カードに載り、ドラッグ中のデータの種類を示すピルと、ドロップしたときの操作を示すバッジ (+ コピー、→ 移動、? 確認、× 拒否)が付きます。バッジは操作が変わるたびに ばねで弾みます。受け入れるウィンドウの上ではカードが大きくなってリングが付き、拒否する ウィンドウの上では首を振るように揺れます。受け入れられたドロップは相手に沈み込み、 どこにも受け入れられなかったドロップはドラッグ開始位置へ戻ります。変更方法はドラッグアンドドロップを 参照してください。
起動プログラムと環境変数
起動時にデフォルト設定は次を行います。
- Wayland と fcitx5 入力メソッドのための環境変数を設定します
(
QT_QPA_PLATFORM・QT_IM_MODULEなど)。 - fcitx5(入力メソッド)、shoji-bar-4(シェル、
~/.config/shoji-bar-4/target/release/shoji-bar-4)、cliphist クリップボード履歴 ウォッチャーを起動します。
これらは対応するプログラムがインストールされていることを前提とします。別のツールを使う
場合は、設定内の process / env の呼び出しを削除または調整してください――
プロセスと環境変数 を参照。
カスタマイズ
設定は ~/.config/shojiwm/src/index.tsx にあります。編集して Super + Shift + R で
ホットリロードすると、ウィンドウマネージャの状態(ワークスペース・タイル)は
リロードをまたいで保持されます。ここから先、
このセクションの残りのページでは、デフォルト設定が使うすべての API を解説しています。