2

Я хотел бы провести мозговой штурм, как создать сценарий, который будет работать на нескольких настольных интерфейсах пользователя и с несколькими терминалами Linux (если это возможно), которые бы "умно" располагали окно терминала. Проблема со статически заданными размером и положением очевидна - разные разрешения экрана.

Пример использования 1: Энн любит работать с несколькими тематическими окнами, и она хотела бы использовать одну верхнюю половину экрана, а другую - нижнюю половину экрана, но ширина каждого должна составлять 80% от разрешения экрана.

Случай пользователя 2: Билл использует только один терминал, но ему нравится, чтобы он был включен в нижнем правом углу, и имел ширину 40% и высоту 30% от полного разрешения экрана.

1 ответ1

3

Вы должны быть в состоянии сделать что-то с wmctrl:

wmctrl - это инструмент командной строки UNIX/Linux для взаимодействия с EWMH/NetWM-совместимым X Window Manager.

Инструмент обеспечивает доступ из командной строки практически ко всем функциям, определенным в спецификации EWMH. Его можно использовать, например, для получения информации о диспетчере окон, для получения подробного списка рабочих столов и управляемых окон, для переключения и изменения размера рабочих столов, чтобы сделать окна полноэкранными, всегда поверх или закрепленными, и активировать, закрывать, перемещать, изменять размер, максимизировать и минимизировать их.

Просто напишите сценарии для Энн и Билла, которые выглядят примерно так:

#!/bin/bash
xterm &
sleep 2  ## sleep just to let the terminas appear and become the active window
wmctrl -r :ACTIVE: -e 5,-1,-1,660,540
        -----------   -- -- -- --- ---
             |         | |  |   |   |---> Window height
             |         | |  |   |-------> Window width             
             |         | |  |-----------> Window Y coordinates
             |         | |--------------> Window X coordinates
             |         |----------------> Gravity
             |--------------------------> Apply to the active window

Гравитация может быть одной из (источник):

  • Северо-Запад (1)
  • Север (2),
  • Северо-Восток (3),
  • Запад (4),
  • Центр (5),
  • Восток (6),
  • Юго-Запад (7),
  • Юг (8),
  • Юго-Восток (9)
  • Статический (10).

Гравитация 0 указывает, что оконный менеджер должен использовать гравитацию, указанную в WM_SIZE_HINTS.win_gravity .

Вы должны быть в состоянии найти способ указать окно терминала, особенно если вы посмотрите man wmctrl . В противном случае, используйте мой sleep && active хак.


Обновление в ответ на ваш комментарий:

Я могу заставить активное окно переместиться в правый нижний угол моего экрана с помощью этого:

wmctrl -r :ACTIVE: -e 4,3040,900,620,620

Я не совсем уверен, что делает гравитация, но указание X и Y работает. Я использую систему с расширенным рабочим столом на двух экранах:

$ xrandr  | grep -w connected
VGA-0 connected 1440x900+1600+0 (normal left inverted right x axis y axis) 408mm x 255mm
DP-3 connected 1600x900+0+0 (normal left inverted right x axis y axis) 344mm x 194mm

Итак, 1600+1440 = 3040 что означает, что 3040 поместит мое окно справа внизу. Вам нужно будет настроить в соответствии с вашими настройками, конечно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .