GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wmctrl dazu bringen, andere als aktuelle Workspace-Windows zu ignorieren?

Ich verlasse mich sehr auf wmctrl, um zwischen Fenstern zu wechseln, im Grunde, um zu vermeiden, dass ich oft alt-tab tippe. Ich habe immer nur einen Arbeitsbereich verwendet, aber jetzt möchte ich mehr als einen verwenden.

Ich habe mich gefragt, ob es möglich ist, den Kontext von wmctrl so zu ändern, dass wenn ich wmctrl -l eingebe , werden nur Fenster aus dem aktuellen Arbeitsbereich angezeigt, anstatt alle Fenster aus allen Arbeitsbereichen.

Angenommen, ich habe in Arbeitsbereich 1 ein Firefox-Fenster geöffnet. Ich habe eine Tastenkombination für ctrl+alt+f der wmctrl -a firefox ausführt , das zu Firefox wechselt. Wenn ich ein neues Firefox-Fenster auf Arbeitsbereich 2 öffne und ctrl+alt+f eingebe , es wird auf das Fenster in Arbeitsbereich 1 umgeschaltet, was ich nicht möchte.

Irgendwelche Vorschläge/Ideen zur Lösung dieses Problems?

BEARBEITEN :Ich verwende compiz (Unity)

Akzeptierte Antwort:

Wenn Sie Compiz verwenden (führen Sie wmctrl -m aus wenn Sie sich nicht sicher sind), sieht wmctrl nur 1 Desktop (2. Feld von wmctrl -l, dh 0), aber Sie können die Option geometry (-G) verwenden, um zu wissen, welches Fenster sich auf welchem ​​​​virtuellen Desktop befindet. Alle Fenster auf Ihrem aktuellen Desktop haben eine x-Position zwischen 0 und der Breite Ihres Bildschirms. Gleiches gilt für die y-Position zwischen 0 und der Höhe Ihres Bildschirms.
Sie können also so etwas verwenden

#!/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

Sie können die Breite und Höhe Ihres Bildschirms fest codieren, wenn Sie möchten, und NAME, wenn Sie einen Einzeiler wünschen.
Ich bin mir nicht sicher, wie Sie mit mehreren Fenstern umgehen möchten, die mit NAME übereinstimmen. Das wird sie alle fokussieren.

Für Metacity kann die Anzahl der Desktop-Fenster mit wmctrl -l gefunden werden und gruppieren Sie das 2. Feld.


Ubuntu
  1. So erstellen Sie einen Minecraft-Server mit Hostinger, Ubuntu, Windows und macOS

  2. Wie bringt man ein Cifs/smb-Mount dazu, Umask zu ignorieren?

  3. Wie verwendet man Unetbootin, um ein bootfähiges Windows-USB-Installationsprogramm zu erstellen?

  4. Wie bringt man Ibus dazu, ~/.xcompose nicht zu ignorieren?

  5. Wie erstelle ich ein Lenovo Ideapad Z510 als Dual Boot?

Lassen Sie Plasma wie das Windows 10-Handbuch aussehen

Lassen Sie Linux wie Windows - 2021 Edition aussehen

Wie man Ubuntu 20.04 LTS wie Windows 10 oder 7 aussehen lässt

Wie man Ubuntu wie Windows 10 oder 7 aussehen lässt

Ist es möglich, Indicator-App-Menü dazu zu bringen, eine bestimmte Anwendung zu ignorieren?

Wie kann man eine in Ubuntu erstellte Textdatei mit Windows Notepad kompatibel machen?