Как задать размер окна и расположение приложения на экране через командную строку?

Как задать размер окна и расположение приложения на экране через командную строку?

Я хочу, чтобы окно Firefox открывалось в определенном размере и в определенном месте на экране с помощью команды оболочки, например:

firefox myfile.html size 800x600 location bottom-left

Есть ли такая команда?

решение1

Вот версия ответа сообществаЁкайкоторый включает в себя примеры, предложенныеРудольф Олах.


Вы можете использовать инструмент, называемый xdotoolдля управления размером и расположением окна. Мало того, любой скрипт, который вы пишете в bash, используя xdotool, можно настроить для работы с полностью развернутым окном, и его можно настроить для установки размера окна и координат x:y с помощью команд mousemoveи click.

  1. Найдите идентификатор окна:

    xdotool search --onlyvisible --name firefox
    
  2. Установить размер окна

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
    
  3. Переместить окно

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
    

Например, если идентификатор окна Firefox — 123, вы должны сделать следующее:

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

Расположение в нижнем левом углу придется определять в зависимости от разрешения вашего экрана.

решение2

Насколько мне известно, это невозможно, так как Firefox не принимает команды для управления окном. Это также (в основном) обязанность оконного менеджера, поэтому я сомневаюсь, что когда-либо появятся параметры для этого. Однако вы можете управлять окном с помощьюwmctrl, но это будет немного сложно:

#!/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

Возможно, есть более умные способы сделать это, и есть некоторые проблемы с совместимостью с Firefox (например, не запущен ни один другой экземпляр), но этого должно хватить.

решение3

Это не решает проблему положения, но, по крайней мере, вы можете задать размеры:

firefox -width 200 -height 500

решение4

Я делаю это постоянно. Однако я использую DevilsPie2, потому что он более надежный. Он использует язык сценариев LUA, который не очень сложен.

Вот мой lua-скрипт для Thunderbird, который я хочу открывать на крайнем левом мониторе (экране ноутбука) при его запуске:

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

Чтобы настроить это, вы создаете каталог в своей домашней конфигурации (в дистрибутивах типа Ubuntu) с именем devilspie2, например /home/$USERNAME/.config/devilspie2

Для Thunderbird я создал thunderbird.lua, хотя имя файла не имеет значения. У меня есть разные имена файлов для каждого приложения, хотя вы можете поместить все в один файл скрипта, если хотите. Установите devilspie2 для автоматического запуска при входе в систему, например /home/$USERNAME/.config/autostart/devilspie2.desktop

Вот ссылка на хорошую страницу о различных опциях, доступных вашему lua-скрипту:https://github.com/gusnan/devilspie2/blob/master/README

Одно замечание: скрипты не обязательно должны быть исполняемыми. Мои — 664, и они отлично работают. Несколько других программ, которыми я управляю, — это openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload и yad. Я использую pin_window для них, чтобы они отображались на всех рабочих столах, а также другие команды в зависимости от приложения.

Связанный контент