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 で公開されているね。