先日のデスクトップの改良は、そもそもアイコンが多くてサイドバーに入り切らないことがあるのを何とかしたいこともきっかけの一つだった。そのために、バーを2列にすることも試したが、不格好なので止めた。

一方、アイコンの中には、通常は操作しないから表示しなくていいものがあるので、それが消せれば少しは空くのにと、ずっと歯がゆく思っていた。devilspie(またはgdevilspie)というコマンドを使えば容易に非表示にできるのだが、再度表示させるのが手間だ(一時的にdevilspieの設定を変えて、アプリを再起動する必要がある)。WindowsやMacなら右クリックで容易にできるのだろうが、Linux(Xfce)では簡単ではない。そもそも、Xfceのバーにはそんな機能はないw それで、先日は他のバー(ドック)を試したのだが、どれもうまく動かず機能も不充分だったので、諦めた。

それでも、今日、しつこくいろいろ調べたら方法が分かったので、やってみた。基本的にはwmctrlというコマンドが使える。これは比較的新しい(と言っても、十年以上前からあるようだ)コマンドのようで、初めて知った(それで今まで思い付かなかった)。wmctrlの機能の一つに、ウインドウの属性を設定するものがある。そして、バーにアイコンが出るかどうかはskip_taskbar(_NET_WM_STATE_SKIP_TASKBAR)という属性で決まるので、アイコンを出なくしたい時にそれを設定し、出したい時に解除すればいい。

基本動作は以上だが、マウスで簡単に使えるようにしなければ今までと同じでやらないので、zenityというアプリを使って簡単なアプリ、xskip-taskbarを作った。いろいろ実装したい機能はあったのだが、とりあえずは、ウインドウ一覧で対象のウインドウを選択してOKを押すと、そのウインドウのskip_taskbar属性を反転させるようにした。下の例では、oclockというアナログ時計のアイコン(黒いもの)を非表示にしている。非表示にするとバーの空き領域は増えるのだが、残念ながら2個減らしたくらいでは、ちょっと見ただけでは分からない感じだ。

なお、一覧にウインドウを全部出すと、選ぶ時にスクロールするのが大変だし間違いやすいので、設定変更しそうな(したい)ウインドウだけをフィルタリングして表示するようにした。全部のウインドウを出せるようにもするとか、マウスでウインドウを選べるようにもするとか、属性の反転以外に設定・解除もできるようにするかという構想はあったのだが、今のままで充分なので、多分作らないだろうw

ちなみに、xskip-taskbarは至って小さいスクリプトだ。大きく2つの部分に分かれていて、前半ではウインドウ一覧を表示して選択されたウインドウのIDを取得し、後半では選択されたウインドウに属性を設定(反転)する。それぞれの中心となる処理は1行である。とはいえ、前半はいくつもの処理を連結しているので、呪文のように長いw

これで、滅多に操作しないウインドウは(devilspieの機能で)起動時にアイコンを出さないようにしておき、操作したい時だけこのアプリで出し、操作が終わったら消すようにできた。最終的にアイコンが4個減らせたので、バーに表示するアイコンのサイズを少し(数画素)大きく(= バーの幅を広く)することができた。それで、バーに入れているデジタル時計の文字をわずかに(0.5-1ポイントまたは画素)大きくできた。何ともセコい話ではあるが、切実な問題だw 他に、間違って閉じる(終了させる)と音が出なくなる重要なアプリ(jack-rack)のアイコンを出さないことで、間違って閉じたり設定を変えてしまうことを防げるようになった。これも長らくやりたかったことで、結構うれしい。

こういうのは、まったく、以前書いた「さあ、作ろう!」の典型だ。僕はおもしろいけど、WindowsやMacに慣れた人には結構な障壁だろう(そもそも、それらに機能が不足していたとして、こういう芸当が簡単にできるかは疑問だ。Windowsはコロコロ仕様が変わってすぐに動かなくなりそうだし、Macはさまざまな秘密に邪魔されそうだ)。

PS. 上述の通常のアイコンの他に、バーを狭くしているもう一つの原因のトレイアイコン(システムの状態を示すアイコン。Windowsのシステムトレイのアイコンに相当)も一部を非表示にしたかったのだが、それは消すことすらできていない。設定ではできないことは分かっているが、今回のように、何かのコマンドでできるのかも知れない。

  •   0
  •   0

コメントを書く

名前    

メール 

URL