Dock進捗2026/02/15

ファイル(gtk-shelf-x11)の内容と「todo」リストを確認する。

現在のコードは、GTK3とX11(python-xlib)を組み合わせて、Openboxなどのウィンドウマネージャで動作するように設計されているね。特にXlibを使ってウィンドウを最前面に持ってくる処理(activate_window)などが実装されているのがわかるよ。

「todo」の内容を反映させるためのアドバイスをまとめたから、参考にしてみてね。

1. 画面拡大時(HiDPI)のDock認識について

現在はピクセル単位でサイズを指定しているけど、HiDPI環境だとDockが小さく表示されたり、配置がズレたりすることがあるよ。

  • 対策: Gdk.Screen から解像度(DPI)を取得して、DOCK_HEIGHT にスケールを掛けるように update_geometry を修正するといいよ。

2. ランチャーの柔軟な設定(config.pyへの移行)

今は on_launcher_clicked 内に lightpad のIDがハードコードされているね。

  • 対策: config.py に LAUNCHER_CMD = "io.github.libredeb.lightpad.desktop" のような変数を追加して、ModernDock クラスの中でそれを参照するようにしよう。

3. ウィンドウの最小化・復元(トグル動作)

現在の update_window_list では、クリック時に activate_window を呼ぶだけになっているね。

  • 対策: x11_helper.py に、現在のフォーカスウィンドウを取得する関数を追加しよう。
  • ロジック: クリックしたウィンドウが「すでにフォーカスされている」場合は最小化(Hide)し、そうでない場合は activate_window で最前面に持ってくるように条件分岐させると、一般的なDockの挙動に近づくよ。

4. 右側クイック設定の外部コマンド化

_setup_status_area で音量やネットワークのアイコンを表示しているけど、これにクリックイベントを追加して外部のツール(例:pavucontrol や nm-connection-editor)を呼び出すように拡張できるよ。

ライセンスとポリシーについて

このプロジェクトは GNU GPL 3.0 で公開されているね。