Czy istnieje sposób na umieszczenie okna na środku ekranu po jego otwarciu lub spowodowanie, że otworzy się ono na środku ekranu?
Należy to zrobić za pomocą wiersza polecenia.
źródło
Czy istnieje sposób na umieszczenie okna na środku ekranu po jego otwarciu lub spowodowanie, że otworzy się ono na środku ekranu?
Należy to zrobić za pomocą wiersza polecenia.
Narzędzie wmctrl zapewnia dostęp z wiersza poleceń do prawie wszystkich funkcji zdefiniowanych w specyfikacji EWMH (Extended Window Manager Hints) . Można go użyć na przykład do uzyskania informacji o menedżerze okien, uzyskania szczegółowej listy pulpitów i zarządzanych okien, przełączania i zmiany rozmiaru pulpitów, aby okna były pełnoekranowe , zawsze nad lub lepkie , oraz do aktywacji , zamykaj , przesuwaj , zmieniaj rozmiar , maksymalizuj i minimalizuj je.
Możesz go zainstalować przez
sudo apt-get install wmctrl
Możesz uzyskać informacje o swoich wirtualnych pulpitach (obszarach roboczych) za pomocą
wmctrl -d
one@onezero:~$ wmctrl -d
0 * DG: 2720x1536 VP: 0,0 WA: 0,24 1360x744 N/A
I otwórz listę okien za pomocą wmctrl -l
. Ta -G
opcja pokazuje geometrię okien:
one@onezero:~$ wmctrl -l
0x02000004 0 onezero Desktop
0x02e00002 0 N/A DNDCollectionWindow
0x02e00003 0 N/A launcher
0x01e00004 0 onezero cairo-dock
0x02e00004 0 N/A panel
0x04800061 0 onezero Transmission
0x02e0000a 0 N/A Dash
0x03a00044 0 onezero arranging windows from the gnu/linux command line with wmctrl ~ Moving to Freedom - Chromium
0x04400006 0 onezero one@onezero: ~
0x04c000e9 0 onezero Google - Mozilla Firefox
wmctrl -lG
one@onezero:~$ wmctrl -lG
0x02000004 0 0 0 1360 768 onezero Desktop
0x02e00002 0 -1460 -868 1360 768 N/A DNDCollectionWindow
0x02e00003 0 0 24 58 744 N/A launcher
0x01e00004 0 290 653 780 115 onezero cairo-dock
0x02e00004 0 0 0 1360 24 N/A panel
0x04800061 0 408 95 732 500 onezero Transmission
0x02e0000a 0 -1402 -844 1302 744 N/A Dash
0x03a00044 0 0 24 1360 744 onezero Center a window via command line - Ask Ubuntu - Stack Exchange - Chromium
0x04400006 0 127 94 983 434 onezero one@onezero: ~
0x04c000e9 0 5 47 1349 715 onezero Google - Mozilla Firefox
Możesz określić okno, odwołując się do jego tytułu lub częściowego tytułu po -r. -e służy do przenoszenia i zmiany rozmiaru
wmctrl -r "Mozilla Firefox" -e <G>,<X>,<Y>,<W>,<H>
<G>: Gravity specified as a number. The numbers are defined in the EWMH specification. The value of zero is particularly
useful, it means "use the default gravity of the window".
<X>,<Y>: Coordinates of new position of the window.
<W>,<H>: New width and height of the window.
Tak więc, aby przenieść okno do lewego górnego rogu i ustawić je na 1000 pikseli szerokości na 700 wysokości, użyłbyś 0,0,0,1000,700
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700
Aby przenieść / zmienić rozmiar. W tym celu skorzystałem z obejścia „maksymalizacji”, używając -b
opcji
wmctrl -r „Mozilla Firefox” -b dodaj, maximized_vert, maximized_horz
wmctrl -r „Mozilla Firefox” -b usuń, maximized_vert, maximized_horz
one@onezero:~$ wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz
Rzeczy, które musisz zrozumieć 1.
The -e option expects a list of comma separated integers: "gravity,X,Y,width,height"
to jest rozdzielczość mojego ekranu, więc x = 1360 i y = 786
Wyrównanie okna do lewej połowy ekranu
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768
Wyrównywanie okna do prawej połowy ekranu
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768
Wyrównanie okna do center of screen
1360/4 = 340
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768
Manipuluj zgodnie z ustawieniami ekranu
który działa z aktualnie aktywnym oknem
IFS='x' read screenWidth screenHeight < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
width=$(xdotool getactivewindow getwindowgeometry --shell | head -4 | tail -1 | sed 's/[^0-9]*//')
height=$(xdotool getactivewindow getwindowgeometry --shell | head -5 | tail -1 | sed 's/[^0-9]*//')
newPosX=$((screenWidth/2-width/2))
newPosY=$((screenHeight/2-height/2))
xdotool getactivewindow windowmove "$newPosX" "$newPosY"
bash
lubzsh
uruchomić, zwykłysh
nie będzie działać.xdotool
akcję wywołać, aby najpierw ustawić je jako „normalne” oknawindowmove
. Pomysły?wmctrl
również dzwonienie , mile widziane lepsze rozwiązania. TL; DR: połączeniewmctrl -ir "$(xdotool getactivewindow)" -b remove,maximized_vert,maximized_horz
przed ostatnimxdotool getactivewindow windowmove
połączeniem.Jeśli ktoś chce, aby to zrobić, skopiuj / wklej fragment kodu, oto:
foo
Oczywiście zamień na nazwę okna, które chcesz wyśrodkować w pierwszym wierszu.Objaśnienie (podział w formie przykładowej sesji konsoli):
Uzyskiwanie wymiarów ekranu
Uzyskiwanie informacji o geometrii okna
Przesuwanie okna
źródło
Większość aplikacji powinna uwzględniać parametr --geometry podczas uruchamiania (niektórzy wolą -geometry, spróbuj drugiego, jeśli pierwszy nie działa dla Ciebie):
Parametr geometrii ma następującą postać:
Możesz pominąć niepotrzebne części:
Po więcej szczegółów:
następnie naciśnij „/” i wyszukaj SPECYFIKACJE GEOMETRYCZNE
lub zobacz tutaj: http://www.cotse.com/dlf/man/xwindows/geometry.htm
źródło