web-dev-qa-db-ja.com

現在の仮想デスクトップを取得します-番号/名前/タグ/ ID?

現在使用されている仮想デスクトップの番号や名前(またはタグ/ ID ...など)を取得するにはどうすればよいですか?

コマンドライン、スクリプト、C/C++ソリューションが許可されています(C/C++への移植が望ましいです)。 ;)

私は主にKDEGNOME、そして dwmxmonad に興味があります、 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自動ルールベースタイムトラッカーと書かれているものも見てください主に HaskellJoachim Breitner によって。 実行できることのピークについては、構成例を参照してください。 つまり、フォーカスされたウィンドウタイトルと時間ルールを介して作業時間を追跡します。 (多分もっと、私はそれを試したことがありません。ここではユースケースはありませんが、あなたがやろうとしていることと似ているように聞こえます。)

hackage および Debianのリポジトリ から入手できます。

2
sr_