Chcę, aby okno Firefoksa otwierało się w określonym rozmiarze i lokalizacji na ekranie za pomocą polecenia powłoki, na przykład:
firefox myfile.html size 800x600 location bottom-left
Czy istnieje takie polecenie?
Chcę, aby okno Firefoksa otwierało się w określonym rozmiarze i lokalizacji na ekranie za pomocą polecenia powłoki, na przykład:
firefox myfile.html size 800x600 location bottom-left
Czy istnieje takie polecenie?
Odpowiedzi:
Oto społeczna wersja odpowiedzi Yokai, która zawiera przykłady oferowane przez Rudolfa Olaha .
Możesz użyć narzędzia o nazwie xdotool
kontrolującego rozmiar i lokalizację okna. Mało tego, każdy skrypt, w którym piszesz bash
, używasz xdotool
, może zostać skonfigurowany do pracy z w pełni zmaksymalizowanym oknem i może być skryptowany, aby ustawić rozmiar okna i współrzędne x: y poprzez manipulowanie poleceniami mousemove
i click
.
Znajdź identyfikator okna:
xdotool search --onlyvisible --name firefox
Ustaw rozmiar okna
xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
Przesuń okno
xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
Na przykład, jeśli identyfikator okna dla firefox to 123, zrobiłbyś to:
xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080
Pozycjonowanie w lewym dolnym rogu należy ustalić na podstawie rozdzielczości ekranu.
xdotool
, wmctrl
itp. I Ubuntu, XFCE (który mam): jeśli okno zostało już uruchomione w trybie pełnoekranowym, nie możesz go już przenieść: bugs.launchpad.net/ubuntu/+source/unity/ + bug / 971147
O ile mi wiadomo, nie jest to możliwe, ponieważ Firefox nie akceptuje poleceń sterujących oknem. Jest to również (głównie) odpowiedzialność menedżera okien, więc wątpię, aby kiedykolwiek były do tego parametry. Możesz jednak kontrolować okno za pomocą wmctrl , ale będzie to trochę trudne:
#!/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
Mogą istnieć bardziej sprytne sposoby, aby to zrobić, i istnieją pewne problemy ze współdziałaniem z Firefoksem (np. Że żadna inna instancja nie jest uruchomiona), ale powinno to pomóc.
W przeszłości tworzyłem dokument HTML, który ustawiałby rozmiar okna za pomocą Javascript, a następnie przekierowywał na żądaną stronę. To głupi hack, ale hej, to działa.
Nie sądzę, że jest to możliwe tylko za pomocą poleceń powłoki, ponieważ nie ma to nic wspólnego z menedżerem okien.
Słyszałem o wmctrl i devilspie, które mogą mieć na to wpływ. Wątpię jednak, aby istniał sposób tak prosty, jak napisałeś w swoim przykładzie.
Robię to cały czas. Używam jednak DevilsPie2, ponieważ jest bardziej solidny. Wykorzystuje język skryptowy LUA, co nie jest bardzo trudne.
Oto mój skrypt lua dla Thunderbirda, który chcę otworzyć na lewym lewym monitorze (ekranie laptopa), gdy się otworzy:
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
Aby to skonfigurować, należy utworzyć katalog w konfiguracji domowej (w dystrybucjach podobnych do Ubuntu) o nazwie devilspie2, np. /Home/$USERNAME/.config/devilspie2
Dla Thunderbirda stworzyłem thunderbird.lua, choć nazwa pliku nie ma znaczenia. Mam inną nazwę pliku dla każdej aplikacji, ale możesz umieścić wszystko w jednym pliku skryptu, jeśli chcesz. Ustaw devilspie2, aby uruchamiał się automatycznie po zalogowaniu, np. /Home/$USERNAME/.config/autostart/devilspie2.desktop
Oto link do dobrej strony o różnych opcjach dostępnych dla skryptu lua: https://github.com/gusnan/devilspie2/blob/master/README
Jedna uwaga: skrypty nie muszą być wykonywalne. Moje są 664 i działają dobrze. Kilka innych programów, które kontroluję, to openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload i yad. Używam na nich pin_window, aby pojawiały się na wszystkich komputerach oraz innych poleceniach w zależności od aplikacji.
devilspie2 --debug
)