Voglio che la finestra di Firefox sia aperta in una dimensione specifica e la posizione sullo schermo usando un comando shell, ad esempio:
firefox myfile.html size 800x600 location bottom-left
Esiste un tale comando?
Voglio che la finestra di Firefox sia aperta in una dimensione specifica e la posizione sullo schermo usando un comando shell, ad esempio:
firefox myfile.html size 800x600 location bottom-left
Esiste un tale comando?
Risposte:
Ecco una versione comunitaria della risposta di Yokai che incorpora esempi offerti da Rudolf Olah .
È possibile utilizzare lo strumento chiamato xdotool
per controllare le dimensioni e la posizione della finestra. Non solo, qualsiasi script in cui scrivi bash
, usando xdotool
, può essere configurato per funzionare con una finestra completamente ingrandita e può essere scritto per impostare la dimensione della finestra e le coordinate x: y manipolando i comandi mousemove
e click
.
Trova l'ID della finestra:
xdotool search --onlyvisible --name firefox
Imposta la dimensione della finestra
xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
Sposta la finestra
xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
Ad esempio, se l'id della finestra per Firefox è 123, dovresti farlo:
xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080
Il posizionamento in basso a sinistra dovrà essere calcolato in base alla risoluzione dello schermo.
xdotool
, wmctrl
ecc. E Ubuntu, XFCE (che ho): se la finestra è già stata avviata in modalità a schermo intero, non puoi più spostarlo: bugs.launchpad.net/ubuntu/+source/unity/ + bug / 971147
Per quanto ne so, questo non è possibile in quanto Firefox non accetta i comandi per controllare la finestra. Questa è anche (principalmente) la responsabilità del window manager, quindi dubito che ci saranno mai dei parametri per farlo. Tuttavia, puoi controllare la finestra con wmctrl , ma sarà un po 'difficile:
#!/bin/sh
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
Potrebbero esserci modi più intelligenti per farlo, e ci sono alcuni problemi di interoperabilità con Firefox (ad es. Che nessun'altra istanza è in esecuzione) ma dovrebbe farti andare.
In passato ho creato un documento HTML che avrebbe impostato la dimensione della finestra con Javascript e quindi reindirizzato alla pagina desiderata. È un trucco stupido ma, ehi, funziona.
Lo faccio sempre. Uso DevilsPie2, tuttavia, perché è più robusto. Utilizza il linguaggio di scripting LUA, che non è molto difficile.
Ecco il mio script lua per Thunderbird, che voglio aprire sul monitor all'estrema sinistra (schermo del laptop) quando si apre:
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
Per impostarlo, crei una directory nella tua configurazione domestica (su distribuzioni simili a Ubuntu) chiamata devilspie2, ad esempio /home/$USERNAME/.config/devilspie2
Per Thunderbird, ho creato thunderbird.lua, anche se il nome file non ha importanza. Ho un nome file diverso per ogni applicazione anche se puoi mettere tutto in un unico file di script se lo desideri. Imposta devilspie2 per l'avvio automatico quando accedi, ad es. /Home/$USERNAME/.config/autostart/devilspie2.desktop
Ecco un link a una buona pagina sulle varie opzioni disponibili per il tuo script lua: https://github.com/gusnan/devilspie2/blob/master/README
Una nota: gli script non devono essere eseguibili. I miei sono 664 e funzionano bene. Alcuni degli altri programmi che controllo sono openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload e yad. Uso pin_window su di loro in modo che appaiano su tutti i desktop, oltre ad altri comandi a seconda dell'applicazione.
devilspie2 --debug
)