2016-04-08 13 views
2

Ich versuche, ein Fenster programmatisch so zu verschieben, dass es teilweise auf dem Bildschirm angezeigt wird. Wenn Sie beispielsweise auf die VLC-Titelleiste klicken und sie so ziehen, dass nur die Hälfte des Fensters sichtbar ist, funktioniert das problemlos.So verschieben Sie das Fenster mit dem Befehl wmctrl

Wenn ich geben die Ergebnisse von wmctrl -lG dies ganz gut funktioniert:

0x04a00011 0 -293 138 600 420 HEVM002 VLC media player 

Allerdings, wenn ich es dann auf dem Bildschirm bewegen zurück und versuchen, seine Position zu replizieren, funktioniert es nicht und streift die Fenster die andere Seite:

wmctrl -r "VLC media player" -e 0,-200,0,800,600 

ich habe auf ein paar window-Manager getestet, und es scheint gut auf Xfwm zu arbeiten, aber nicht auf compiz. Gibt es eine Flagge oder etwas Ähnliches, das ich einstellen kann, um das Verschieben von Fenstern außerhalb des Bildschirms zu ermöglichen?

Antwort

3

Wenn dies unter einem Fenstermanager ausgeführt wird, hängt dies vollständig vom Fenstermanager ab. Ob es ein Flag gibt, um partielle Off-Screen-Positionen zu erzwingen, hängt davon ab, welcher Fenstermanager es ist.

Der einzige window manager agnostische Weg, dies zu erreichen, ist das Fenster override_redirect Fenster zu machen. Das bedeutet natürlich, dass das Fenster nicht mehr verwaltet wird. Wenn Sie es wieder zu einem normalen Fenster machen, wird der Windowmanager es erneut verwalten, was wahrscheinlich wiederum, abhängig vom Fenstermanager, bedeutet, dass es gezwungen ist, wieder in den Grenzen zu sein.

Das heißt, mit Blick auf wmctrl Quellcode verwendet es _NET_MOVERESIZE_WINDOW, wenn vom Fenstermanager unterstützt und fällt sonst auf XMoveResizeWindow (oder ähnliches) zurück. Im ersten Fall werden die Positionswerte jedoch zuerst auf unsigned long gesetzt, was bedeutet, dass negative Werte sowieso verloren gehen. Im zweiten Fall scheinen negative Werte "nicht bewegen" zu signalisieren, also auch kein Glück.

Sie könnten stattdessen xdotool windowmove verwenden, die negative Werte korrekt behandeln. Vielleicht auch in Betracht ziehen, einen Fehler gegen WMCTRL?

+0

cheers - xdotool windowmove produziert die gleichen Ergebnisse, so werde ich wahrscheinlich bearbeiten, um Unterstützung hinzufügen – John

+0

Für mich (i3wm), funktioniert xdotool, aber wmctrl nicht. In diesem Fall ist es wahrscheinlich der Fenstermanager, der die Anfrage ablehnt. –