Wie man die PID des aktiven Fensters kennt


9

Woher weiß man die PID eines aktiven (fokussierten) Fensters?

Ich möchte ein Skript schreiben, in dem es notwendig ist zu wissen, ob der Benutzer aktiv ein Programm verwendet [mit etwas wie Firefox im Internet surfen] oder etwas anderes tut [Text mit etwas wie gedit schreiben]

In meinem Fall möchte ich große Dateien herunterladen, aber die Browsergeschwindigkeit nicht beeinträchtigen. Wenn ich also surfe, ist das aktive Fenster von Firefox und ich möchte den Download beenden. Wenn ich PDF lese, ist das aktive Fenster ein PDF-Reader und ich möchte den Download fortsetzen. Das ist es.


2
in der Nähe eines Duplikats von diesem
Ternary

Antworten:


7

Schließlich gelang es mir, mit xdotool die PID eines aktiv fokussierten Fensters zu ermitteln

xprop -id `xdotool getwindowfocus` | grep '_NET_WM_PID' | grep -oE '[[:digit:]]*$'

Ich nehme an, du hast xprop -id ...gearbeitet?
Ternary

4

xdpyinfohat in seiner voluminösen Ausgabe die Fenster-ID des Fensters mit dem Fokus vergraben (siehe: Welches Fenster hat den aktuellen Fokus? ). Damit können Sie xpropdie zugehörige PID abrufen.

xprop -id `xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2` | grep PID

1
Sorry, keine Ausgabe am 10.04
totti

xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2 Ausgabe 0x3e00122
totti

Was gibt xprop -id 0x3e00122Ihnen (oder was auch immer Ihre neue aktuelle Fenster-ID ist)?
Ternary

1
Es sieht aus wie einige Fenster nicht unterstützen _NET_WM_PID , aber firefox und evince beide scheinen
Ternary

und in diesem Fall könnte es nützlich sein, einen Blick darauf zu werfenxprop -id [active window] | grep WM_CLASS
Ternary

1

Verwenden des Fensterstapels von xdotool:

xdotool getactivewindow getwindowpid

Bash:

#!/bin/bash
set -e
WINDOW_PID=$(xdotool getactivewindow getwindowpid)
...

0

Bash

xdotool getwindowpid `xdotool getactivewindow`

Fisch

xdotool getwindowpid (xdotool getactivewindow)

-1

Sie können wmctrl installieren und dann alle Fenster auflisten wmctrl -l.


3
Das ist ein bisschen zu kurz, um hilfreich zu sein, denke ich. Könnten Sie Ihre Antwort um einige Schritte erweitern, um beispielsweise das aktive Fenster abzurufen? Oder wie man die Ausgabe in
Skripten

Ich fürchte, ich kann Ihnen dort nicht helfen. Ich bin auch nicht sicher, wie ich die Ausgabe in etwas Nützliches verwandeln kann. Es tut uns leid.
Henry Gibson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.