Angeben der Geometrie von X-Fenstern in den von wmctrl erhaltenen Koordinaten

9

In der X - Dokumentation ich gelesen , dass die Width, Height, Xpositionund YpositionKoordinaten müssen in Terminal Zeichen angegeben werden , bei der Verwendung von :

gnome-terminal --geometry=WidthxHeight+Xposition+Yposition

Wenn ich als Eingabekoordinaten diejenigen verwende, die ich von einer wmctrl -lGAusgabe erhalte (nicht sicher, ob wmctrlPixel, Endzeichen oder etwas anderes als geometrische Einheiten verwendet werden), erhalte ich nicht die erwarteten Ergebnisse. Das heißt, die Geometriekoordinaten, die von ausgegeben werden, wmctrl -lGund diejenigen, die ein Benutzer angeben kann, stellen gnome-terminal --geometrysich als unterschiedlich heraus.

Gibt es etwas, was ich falsch mache? Irgendwelche Gedanken?

Vielen Dank

Amelio Vazquez-Reina
quelle

Antworten:

17

Die --geometryOption für gnome-terminalwird tatsächlich in Zeichen und nicht in Pixeln gemessen. Um beispielsweise ein Terminal mit 80 Spalten zu erhalten, das nur 10 Zeilen hoch ist, können Sie Folgendes starten gnome-terminal:

gnome-terminal --geometry 80x10

Die Größe des Terminals wird in Schritten der Schriftgröße geändert, die es dem Xserver übermittelt WM_NORMAL_HINTS. Sie können diese mit dem xpropBefehl überprüfen . Zum Beispiel finde ich hier eine Terminal-Fenster-ID und frage xprop danach:

$ wmctrl -lG | tail -n1
0x06400021  0 592  314  580  338  myhostname kees@myhostname: ~
$ xprop -id 0x6400021
...
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified minimum size: 48 by 16
        program specified resize increment: 7 by 14
        program specified base size: 20 by 2
        window gravity: NorthWest
...

Im obigen Fall beträgt die Schriftgröße 7 x 14 Pixel. Wenn ich also ein 70 gnome-terminal --geometry 10x10x 140 Pixel großes Terminal haben wollte, konnte ich es ausführen (obwohl es 20 x 2 Pixel größer wäre als das, basierend auf den Fenstermanagerdekorationen usw., wie in der "spezifischen Basisgröße" oben zu sehen).

Kees Cook
quelle