Есть ли способ разместить окно в центре экрана после его открытия или открыть его в центре экрана?
Это должно быть сделано с помощью командной строки.
источник
Есть ли способ разместить окно в центре экрана после его открытия или открыть его в центре экрана?
Это должно быть сделано с помощью командной строки.
Инструмент wmctrl обеспечивает доступ из командной строки практически ко всем функциям, определенным вспецификации EWMH (расширенные подсказки диспетчера окон) . Его можно использовать, например, для получения информации о диспетчере окон, для получения подробного списка рабочих столов и управляемых окон, для переключения и изменения размера рабочих столов, чтобы сделать окна полноэкранными , всегда поверх или закрепленными , и активировать , закрывать , перемещать , изменять размер , максимизировать и минимизировать их.
Вы можете установить его по
sudo apt-get install wmctrl
Вы можете получить информацию о ваших виртуальных рабочих столах (рабочих пространствах) с
wmctrl -d
one@onezero:~$ wmctrl -d
0 * DG: 2720x1536 VP: 0,0 WA: 0,24 1360x744 N/A
И список открытых окон с wmctrl -l
. В -G
опции показывает вам геометрия окон:
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
Вы можете указать окно, ссылаясь на его заголовок или частичный заголовок после -r. -e для перемещения и изменения размера
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.
Итак, чтобы переместить окно в верхний левый угол и сделать его шириной 1000 пикселей и высотой 700, вы должны использовать 0,0,0,1000,700
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700
Чтобы переместить / изменить его размер. Для этого я использовал обходной путь «его максимизации», используя -b
опцию
wmctrl -r "Mozilla Firefox" -b добавить, maximized_vert, maximized_horz
wmctrl -r "Mozilla Firefox" -b удалить, maximized_vert, maximized_horz
one@onezero:~$ wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz
Вещи, которые вам нужно понять, 1-й
The -e option expects a list of comma separated integers: "gravity,X,Y,width,height"
Это мое разрешение экрана, так что х = 1360 & у = 786
Выравнивание окна по левой половине экрана
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768
Выравнивание окна по правой половине экрана
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768
Выравнивание окна по center of screen
1360/4 = 340
one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768
Управляйте им в соответствии с настройками экрана
который работает с текущим активным окном
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
илиzsh
для запуска, равнинаsh
не будет работать.xdotool
действие вызывать, чтобы сначала сделать их «нормальными» окнами перед вызовомwindowmove
. Идеи?wmctrl
, лучшие решения приветствуются. TL; DR: звонокwmctrl -ir "$(xdotool getactivewindow)" -b remove,maximized_vert,maximized_horz
до последнегоxdotool getactivewindow windowmove
звонка.Если кому-то нужен фрагмент кода для копирования / вставки, сделайте это:
foo
Конечно, замените имя окна, которое вы хотите центрировать в первой строке.Пояснение (разбивка в виде примера сеанса консоли):
Получение размеров экрана
Получение информации о геометрии окна
Перемещение окна
источник
Большинство приложений должны учитывать параметр --geometry при запуске (некоторые предпочитают -geometry, попробуйте второе, если первое не работает у вас):
Параметр геометрии имеет такую форму:
Вы можете оставить ненужные части:
Больше подробностей:
затем нажмите «/» и найдите ГЕОМЕТРИЧЕСКИЕ ХАРАКТЕРИСТИКИ
или смотрите здесь: http://www.cotse.com/dlf/man/xwindows/geometry.htm
источник