Wie kann ich die Fenstergröße und Position einer Anwendung auf dem Bildschirm über die Befehlszeile festlegen?

Wie kann ich die Fenstergröße und Position einer Anwendung auf dem Bildschirm über die Befehlszeile festlegen?

Ich möchte, dass das Firefox-Fenster mithilfe eines Shell-Befehls in einer bestimmten Größe und an einer bestimmten Position auf dem Bildschirm geöffnet wird, zum Beispiel:

firefox myfile.html size 800x600 location bottom-left

Gibt es einen solchen Befehl?

Antwort1

Hier ist eine Community-Version der Antwort vonYokaidas Beispiele enthält vonRudolf Olah.


Sie können das aufgerufene Tool verwenden, xdotoolum Fenstergröße und -position zu steuern. Darüber hinaus kann jedes Skript, das Sie in schreiben bash, so xdotooleingerichtet werden, dass es mit einem vollständig maximierten Fenster funktioniert, und es kann so programmiert werden, dass es die Fenstergröße und die x:y-Koordinaten durch Manipulation der Befehle mousemoveund einstellt click.

  1. Suchen Sie die Fenster-ID:

    xdotool search --onlyvisible --name firefox
    
  2. Festlegen der Fenstergröße

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
    
  3. Verschieben Sie das Fenster

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
    

Wenn die Fenster-ID für Firefox beispielsweise 123 ist, würden Sie Folgendes tun:

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

Die Positionierung unten links muss anhand Ihrer Bildschirmauflösung ermittelt werden.

Antwort2

Soweit ich weiß, ist das nicht möglich, da Firefox keine Befehle zur Steuerung des Fensters akzeptiert. Das liegt auch (hauptsächlich) in der Verantwortung des Fenstermanagers, daher bezweifle ich, dass es jemals Parameter dafür geben wird. Sie können das Fenster jedoch steuern mitwmctrl, aber das wird etwas schwierig:

#!/usr/bin/env bash

firefox -new-instance -new-window "http://www.reddit.org" &

# Process ID of the process we just launched
PID=$!

# Window ID of the process...pray that there's     
# only one window! Otherwise this might break.
# We also need to wait for the process to spawn
# a window.
while [ "$WID" == "" ]; do
        WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
done
# Set the size and location of the window
# See man wmctrl for more info
wmctrl -i -r $WID -e 0,50,50,250,250

Es gibt möglicherweise cleverere Möglichkeiten, dies zu tun, und es gibt einige Interoperabilitätsprobleme mit Firefox (z. B. dass keine andere Instanz ausgeführt wird), aber es sollte Ihnen weiterhelfen.

Antwort3

Dies löst zwar nicht das Positionsproblem, aber Sie können zumindest die Abmessungen festlegen:

firefox -width 200 -height 500

Antwort4

Ich mache das ständig. Ich verwende jedoch DevilsPie2, weil es robuster ist. Es verwendet die Skriptsprache LUA, die nicht sehr schwierig ist.

Hier ist mein Lua-Skript für Thunderbird, das ich beim Öffnen auf dem ganz linken Monitor (Laptop-Bildschirm) öffnen möchte:

if (get_window_name()=="Mozilla Thunderbird") then
   pin_window()
   set_window_geometry( 50, 10, 1220, 780 )
end

where 50 = X coordinate (for upper-left corner of the window)
      10 = Y coordinate ( " " )
    1220 = window width
     780 = window height

Um dies einzurichten, erstellen Sie in Ihrer Home-Konfiguration (auf Ubuntu-ähnlichen Distributionen) ein Verzeichnis mit dem Namen devilspie2, z. B. /home/$USERNAME/.config/devilspie2

Für Thunderbird habe ich thunderbird.lua erstellt, wobei der Dateiname keine Rolle spielt. Ich habe für jede Anwendung einen anderen Dateinamen, Sie können aber auch alles in eine Skriptdatei packen, wenn Sie möchten. Stellen Sie devilspie2 so ein, dass es beim Anmelden automatisch startet, z. B. /home/$USERNAME/.config/autostart/devilspie2.desktop

Hier ist ein Link zu einer guten Seite über verschiedene Optionen, die für Ihr Lua-Skript verfügbar sind:https://github.com/gusnan/devilspie2/blob/master/README

Eine Anmerkung: Die Skripte müssen nicht ausführbar sein. Meine sind 664 und funktionieren einwandfrei. Einige der anderen Programme, die ich steuere, sind Openconnect, Pidgin, RecordMyDesktop, Timeshift, Xeyes, Xload und yad. Ich verwende Pin_Window für sie, damit sie auf allen Desktops erscheinen, sowie weitere Befehle, je nach Anwendung.

verwandte Informationen