Xorgセッションにフォーカスがあるときにスクリプトをトリガーする方法は?

Xorgセッションにフォーカスがあるときにスクリプトをトリガーする方法は?

私は通常私のシステムで2つのXorgセッションを実行していますが、それぞれは独自のシステムユーザーを持つ別の仮想端末で、1つは仕事用で、もう1つは余暇用です。

私はそれらの間で頻繁に切り替えることはありませんが、切り替えるときは、最初のセッションでタイムトラッカーソフトウェアをオフにして、ターゲットセッションで開始する必要があることを覚えておく必要があります。これは、Rescuetime [1]が同時に2つのxorgセッションを受信できないためです。

したがって、Xorgセッションが機能したことを認識するたびに何らかの方法でスクリプトをトリガーすることで、実行中の回復時間プロセスを終了して新しいプロセスを開始できます。

[1]https://www.rescuetime.com

ベストアンサー1

スクリプトを書くこともできます。

#!/bin/bash
inotifywait -e modify /sys/devices/virtual/tty/tty0/active
case "$(cat /sys/devices/virtual/tty/tty0/active)" in
    tty7) <dothis> ;;
    tty8) <dothat> ;;
esac
exec $0 $*

「ファイル」は、どの仮想コンソールが有効になっているかなどを/sys/devices/virtual/tty/tty0/active示し、ある仮想コンソールから別の仮想コンソールに切り替えると変わります。コマンドはそのパス名のイベントが発生するのを待つので、スクリプトは関連するアクションを実行するパス名を解決できます。この行(この行)の後、スクリプトは次の仮想コンソール遷移をキャプチャするために自分自身を再呼び出しします。tty7tty1inotifywaitmodifyexec

DebianベースのLinuxでは、inotifywaitこのパッケージの一部を見つけることができますinotify-tools。パス名には通常、以前からLinuxカーネルに属していた/sys/..正しくインストールされたパスが必要です。sysfs

おすすめ記事