ウィンドウマネージャなしでGUI環境を構築しよう(その3)

はじめに

こんにちは、野村です。

前々回と前回で、ウィンドウマネージャを使わないGUI環境を構築しました。

ウィンドウマネージャなしでGUI環境を構築しよう(その1)
ウィンドウマネージャなしでGUIを使ってみることにしました。とりあえず下準備。ウィンドウのフォーカスを切り替えるコマンドを作ってみます。
ウィンドウマネージャなしでGUI環境を構築しよう(その2)
ウィンドウマネージャなしで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のアイコンと時計が表示されるのでよしとしましょう。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。