GNU/Linux >> Linux の 問題 >  >> Ubuntu

Wmctrlに現在以外のWorkspaceのWindowsを無視させますか?

基本的に、alt-tabを何度も入力しないようにするために、ウィンドウを切り替えるためにwmctrlに大きく依存しています。私はいつも1つのワークスペースを使用していましたが、今は複数のワークスペースを使い始めたいと思っています。

wmctrl -l <​​/ code>と入力すると、wmctrlのコンテキストを変更できるかどうか疑問に思いました。 、すべてのワークスペースのすべてのウィンドウではなく、現在のワークスペースのウィンドウのみが表示されます。

たとえば、ワークスペース1でFirefoxウィンドウを開いていると仮定します。 ctrl + alt + fにキーボードショートカットがあります。 wmctrl -a firefoxを実行します 、Firefoxに切り替わります。ワークスペース2で新しいFirefoxウィンドウを開き、 ctrl + alt + fと入力した場合 、ワークスペース1のウィンドウに切り替わりますが、これは私が望んでいることではありません。

これを解決する方法に関する提案/アイデアはありますか?

編集 :compiz(Unity)を使用しています

承認された回答:

Compizを使用している場合( wmctrl -mを実行します わからない場合)、wmctrlには1つのデスクトップ(wmctrl -lの2番目のフィールド、つまり0)しか表示されませんが、geometry(-G)オプションを使用して、どの仮想デスクトップにどのウィンドウがあるかを知ることができます。現在のデスクトップのすべてのウィンドウのx位置は、0から画面の幅までです。 0と画面の高さの間のy位置についても同じです。
したがって、そのようなものを使用できます

#!/bin/bash

SCREEN_W=$(xwininfo -root | sed -n 's/^  Width: (.*)$/1/p')
SCREEN_H=$(xwininfo -root | sed -n 's/^  Height: (.*)$/1/p')

NAME='Navigator.Firefox'

wmctrl -xlG | awk -v W="$SCREEN_W" -v H="$SCREEN_H" -v NAME="$NAME" '$7==NAME && $3>=0 && $3<W && $4>=0 && $4<H {print $1}' | while read WINS; do wmctrl -ia "$WINS"; done

exit 0

必要に応じて画面の幅と高さをハードコーディングでき、ワンライナーが必要な場合はNAMEをハードコーディングできます。
NAMEに一致する複数のウィンドウをどのように処理するかわかりません。それはそれらすべてに焦点を合わせます。

メタシティの場合、デスクトップのウィンドウ数は wmctrl -lを使用して確認できます。 2番目のフィールドをgrepします。


Ubuntu
  1. Hostinger、Ubuntu、Windows、macOSでMinecraftサーバーを作成する方法

  2. Windows 用の Make コマンド - 可能なオプションは?

  3. Linux、OS X、Windows 用の Travis CI テスト パッケージの作成方法

  1. Cifs / smbマウントでUmaskを無視する方法は?

  2. Unetbootinを使用して起動可能なWindowsUSBインストーラーを作成する方法は?

  3. Ibusを無視しないようにする方法〜/ .xcompose?

  1. curlで証明書エラーを無視する方法

  2. UbuntuをWindowsのように見せることがとても簡単になりました

  3. Lenovo Ideapad Z510をデュアルブートにする方法は?