現在使用されている仮想デスクトップの番号や名前(またはタグ/ ID ...など)を取得するにはどうすればよいですか?
コマンドライン、スクリプト、C/C++ソリューションが許可されています(C/C++への移植が望ましいです)。 ;)
私は主にKDE
とGNOME
、そして dwm
、 xmonad
に興味があります、 awesome
-他のデスクトップ環境向けのソリューションを歓迎します(可能な限りユニバーサルなソリューションを提供するために、できる限りサポートしたいと思います)。
ところで。興味のある方のために、ユースケースについてより具体的に言うと、デスクトップ+ウィンドウフォーカス+ xevents +マルチスクリーンを中心としたタイムトラッキングに興味があります。現在、これには個別のソリューションがあります( ktimetracker
デスクトップに応じてタスクを追跡しますが、アプリの追跡は非常に貧弱です-正規表現はサポートされておらず、正確なウィンドウタイトルだけ->あまり役に立ちません。一方、 workrave
はキーボードとマウスのアクティビティを追跡しますが、デスクトップ->作業中のタスクを認識していません。)これらの情報をマージする何かを実行したいと思います。私が持っている活動のより正確な画像を達成するために(多分 関連ルール学習 または他の データマイニング テクニックを組み込むために)(私の習慣に関連するより正確な情報を達成するために、 "ant - [〜#〜] rsi [〜#〜] fight";))の順に。
したがって、デスクトップが「仮想デスクトップ+ウィンドウ(名前とタイトル付き)」とは異なるパラダイムに従う場合は、現在使用されているウィンドウ/フレーム/アプリ+現在選択されているデスクトップ/タスク/タグに関する情報を示すコード/ CLIスニペットを表示してください(最終的にスクリーニング)。
FreeDesktop 標準に準拠するウィンドウマネージャーは、デスクトップに関する情報を ルートウィンドウのプロパティ に格納します。特に、次のようになります。
_NET_NUMBER_OF_DESKTOPS
:仮想デスクトップの数_NET_CURRENT_DESKTOP
:アクティブデスクトップのインデックス_NET_DESKTOP_NAMES
:仮想デスクトップの名前のリストXGetWindowProperty
などの xprop
への任意のインターフェースでこれらにアクセスできます。シェルから、 wmctrl -d
は、仮想デスクトップを一覧表示する便利な方法を提供します。
私の知る限り、ルートウィンドウのプロパティが変更されると、ウィンドウマネージャーにのみ通知されます。したがって、仮想デスクトップの切り替えに対応したい場合は、ウィンドウマネージャーを使用する必要があります。たとえば、あなたのユースケースでは、何か面白いことが起こったときに、ウィンドウマネージャーが提供するLISPフック( Sawfish )を使用します。
arbtt
、自動ルールベースタイムトラッカーと書かれているものも見てください主に Haskell の Joachim Breitner によって。 実行できることのピークについては、構成例を参照してください。 つまり、フォーカスされたウィンドウタイトルと時間ルールを介して作業時間を追跡します。 (多分もっと、私はそれを試したことがありません。ここではユースケースはありませんが、あなたがやろうとしていることと似ているように聞こえます。)
hackage および Debianのリポジトリ から入手できます。