[gelöst] Xfce4-terminal und Mouspad "immer oberhalb" starten

KDE, Gnome, Windowmanager, X11, Grafiktreiber und alles was dazu notwendig ist. Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
TuxPeter
Beiträge: 1966
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] Xfce4-terminal und Mouspad "immer oberhalb" starten

Beitrag von TuxPeter » 13.01.2017 12:42:26

Liebe Debianfreunde,
an einem kleinen Problem bin ich in mehreren Anläufen immer wieder gescheitert. Ich möchte gern die Fenster von "Xfce4-Terminal" sowie "Mouspad" gleich nach ihrem Start "Immer oberhalb" haben. Normalerweise stellt man das hinterher nach einem Klick auf den oberen Fensterrahmen ein.

Folgendes habe ich versucht:

- den Toggle-Befehl direkt im Starter mit dem Startbefehl zu verknüpfen.
- mit dem Starter ein Script aufzurufen, das das erledigen soll
- es auf 2 Scripten zu verteilen, mit sleepX zu verlangsamen usw.
- die Anregungen aus [1] und [2] umzusetzen.

Als kleine Hilfe habe ich für das Terminal z.Zt. wenigstens einen Alias definiert, was funktioniert:
(Das Terminal vorher natürlich entsprechend umbenannt)

Code: Alles auswählen

alias o
alias o='wmctrl -r Xfce4_Terminal -b toggle,above'
Das Script, das dann in den Starter soll, sieht sieht z.Zt. so aus:

Code: Alles auswählen

#!/bin/bash
/usr/bin/xfce4-terminal &
# sleep 2
echo "nach Aufruf"
WINDOW_ID=$(xdotool getactivewindow)
echo $WINDOW_ID
/usr/bin/wmctrl -r ${WINDOW_ID} -b toggle,above
# /usr/bin/wmctrl -r "Xfce4_Terminal" -b toggle,above
echo "nach wmctrl"
Ein Aufruf in einem (natürlich anders benannten Xterm) zeigt, dass eine WINDOW_ID vorhanden ist und auch "nach wmctrl" erreicht wird. Der auskommentierte Aufruf mittels des Namens geht auch nicht, nur im Direktaufruf oder im Alias. Und nun habe ich keine Idee mehr, was noch zu probieren wäre.


[1] viewtopic.php?f=2&t=151631
[2] viewtopic.php?f=27&t=157026
Zuletzt geändert von TuxPeter am 13.01.2017 19:36:38, insgesamt 1-mal geändert.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Wie Xfce4-terminal und Mouspad "immer oberhalb" starten

Beitrag von smutbert » 13.01.2017 18:36:49

schreib vielleicht einmal so etwas wie

Code: Alles auswählen

echo  $WINDOW_ID > /home/tuxpeter/aufruflog.txt
und vergleich das mit der Window ID des Xfce-Terminals - vielleicht ist das xfce-Fenster aus irgendeinem Grund gar nicht das aktive Fenster?

Du könntest so etwas in der Art versuchen

Code: Alles auswählen

# Terminal starten und PID merken
/usr/bin/xfce4-terminal  &
Terminal_Pid=$!
Dann das Fenster zur PID suchen mit »wmctrl -lp« (versuch ich gerade) und schließlich die gefundene Window ID verwenden.

edit:
ist ein bisschen abenteuerlich, aber bei mir scheints zu funktionieren - unter xfce hab ichs aber nicht testen können

Code: Alles auswählen

xfce4-terminal  &
Terminal_Pid=$!
sleep 1s
wmctrl -i -r $(wmctrl -lp | awk ' $3 == "'$Terminal_Pid'" {print $1} ' | head -1) -b add,above

TuxPeter
Beiträge: 1966
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: Wie Xfce4-terminal und Mouspad "immer oberhalb" starten

Beitrag von TuxPeter » 13.01.2017 19:35:31

Hallo smubert,,

dein "ein bisschen abenteuerlicher" Vierzeiler funktionierte auf Anhieb - prima Sache! Bin zwar noch ein ganzes Stück davon entfernt zu kapieren, wie und warum, aber da bleibe ich noch dran.

Der Aufruf des Scripts funktioniert bei mir (Xfce4, Jessie) übrigens auch direkt im Starter, ohne dass ein sh-Aufruf zwischengeschaltet wird, und der Starter funktioniert damit sowohl über das Paneel als auch über einen Desktop-Starter. Ich denke, ich werde es so auch für Mouspad hinbekommen.
Vielen Dank!

TuxPeter

Edit: Beim Mousepad funktioniert erwartungsgemäß es ebenso gut

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: [gelöst] Xfce4-terminal und Mouspad "immer oberhalb" sta

Beitrag von smutbert » 13.01.2017 20:42:29

ist gar nicht schwer, wenn man sich die einzelnen Befehle ansieht
  • wmctrl -lp
    gibt eine Liste der Fenster mit Window ID, der zugehörigen PID, dem Rechnernamen und dem Fenstertitel) aus (und einer Spalte deren Bedeutung ich nicht kenne)
  • awk ' $3 == "'$Terminal_Pid'" {print $1} '
    sucht in der 3 Spalte, also den PIDs der oberen Ausgabe, nach der gewünschten PID und gibt die erste Spalte, also die Window ID aus. Das abenteuerliche Quoting führt dazu, erlaube das Ersetzten der Variable innerhalb des awk Befehles awk '…'.
  • head -1
    gibt nur die erste Zeile der Ausgabe, also die erste Window ID aus. Eine PID könnte auch mehrere Fenster erzeugen und eine mehrzeilige Ausgabe mit mehreren IDs können wir nicht brauchen. Ob die erste ID von mehreren die gewünschte ist, ist zwar nicht sicher, aber ich habe keine Idee wie man sonst ohne viel Aufwand mit mehreren Window IDs umgehen könnte.
Eine weitere Schwäche dieses Konstruktes zeigt sich, wenn der in den Hintergrund geschickte Befehl (»xfce4-terminal &«) nur mit einer bereits laufenden Instanz kommuniziert und diese dazu bringt ein weiteres Fenster zu öffnen, das gibt es unter Gnome mit dem Terminal genauso wie bei gimp oder vielen Webbrowsern, usw.
Das ließe sich ev. lösen indem man gegebenenfalls vorher prüft ob bereits ein solcher Prozess läuft und dann dessen PID nimmt.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] Xfce4-terminal und Mouspad "immer oberhalb" sta

Beitrag von rendegast » 13.01.2017 22:38:17

smutbert hat geschrieben: wmctrl -lp
gibt eine Liste der Fenster .... aus (und einer Spalte deren Bedeutung ich nicht kenne)
man wmctrl hat geschrieben: -l List the windows being managed by the window manager. ...
... and the second column always contains the desktop number (a -1 is used to identify a sticky window).
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten