Contents
はじめに
こんにちは、野村です。
前々回と前回で、ウィンドウマネージャを使わないGUI環境を構築しました。
ウィンドウマネージャなしでGUIを使ってみることにしました。とりあえず下準備。ウィンドウのフォーカスを切り替えるコマンドを作ってみます。
ウィンドウマネージャなしでGUIを使えるようにするためにやってみたこと、その後半戦です。ウィンドウの配置を変える自作コマンド「winpos」を修正しました。
今回は、宿題を片付けます。
このままでは、パネルを表示させた場合、Alt+Tabを何回か押すとパネルにフォーカスが当たってしまうのです。
それを回避します。
今回使うコマンド
- xwininfo(ウィンドウの情報を取得するコマンド。パッケージ「x11-utils」に入っている)
インストールはこんな感じ(debianの場合)。
$ sudo apt install x11-utils
シェルスクリプト
前々回に書いたスクリプト「winring」を以下のように修正しました。
#!/bin/bash
declare -a IDS
IDS=(`winlist`)
LEN=${#IDS[@]}
NOW=`xdotool getwindowfocus`
NOWCNT=0
for ((i=0; i < $LEN; i++)); do
if [ $NOW = ${IDS[$i]} ]; then
NOWCNT=`expr $i + 1`
if [ $NOWCNT -lt $LEN ];then
NAME=`xwininfo -id ${IDS[$NOWCNT]}|grep "xwininfo"|awk '{print $5}'`
if [ $NAME = "\"panel\"" ];then
NOWCNT=`expr $i + 2`
fi
fi
fi
done
if [ $NOWCNT -ge $LEN ]; then
NOWCNT=0
fi
ID=${IDS[$NOWCNT]}
xdotool windowraise $ID
xdotool windowfocus $ID
このスクリプトは「lxpanel」というパネルを使う場合のものです。
「tint2」というパネルを使う場合は、14行目の「panel」を「tint2」に変更する必要があります。
ただtint2の場合、ウィンドウマネージャがないからかもしれないけど、起動時に多くのエラーを吐き出します。
なので使わないことにしました。
終わりに
今回は「ウィンドウマネージャを使わないGUI環境」でもパネルに対応できるようにしました。
とはいえ、この環境では、パネルの中にウィンドウのアイコンは表示されません。
とりあえずIMEのアイコンと時計が表示されるのでよしとしましょう。
というわけで、今回はこれにて。