メインコンテンツまでスキップ

デフォルト設定

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 + DDiscord
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 + QShojiWM セッションの終了

同じ2つの操作は shoji_wm --reload と shoji_wm --quit でも行えます (キーバインド → 終了とリロード 参照)。

デバッグ​

ショートカット動作
Super + Shift + FFPS/フレーム時間オーバーレイの切り替え

ウィンドウの見た目​

枠は 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 を解説しています。