User Commands |
icesh - управление свойствами окон и диспетчером окон IceWM
icesh предоставляет два типа команд:
Они перечислены в секции ДЕЙСТВИЯ ДИСПЕТЧЕРА
ниже. Они просты в использовании, потому что не требуют выбора одного или более окон. Например, icesh restart
перезапустит icewm и icesh clients
покажет список приложений, которыми управляет icewm.
См. секцию ДЕЙСТВИЯ ОКОН
ниже. Например, icesh close
запрашивает закрытие окна, но какого? Тогда icesh изменит указатель мыши на перекрестие. Щелчок на окне и закроет его, отправив запрос этому приложению.
Сила icesh заключается в способности программного выбора одного или более окон и работе над этим выбором. Это может быть использовано в скриптах и в icewm-keys(5), чтобы определить ваши собственные горячие клавиши управления окнами. Например, для немедленного закрытия всех окон xterm сделайте icesh -c xterm close
.
Далее имеется множество ПАРАМЕТРОВ ВЫБОРА
, чтобы выбрать окна. Они начинаются с '-' или '+'. Новый выбор начинается с '-', в то время как '+' добавляет ещё окна в существующий выбор.
Этот выбор окон может быть ограничен ПАРАМЕТРАМИ ФИЛЬТРАЦИИ
. Они удаляют лишние окна из текущего выбора. Могут быть заданы несколько параметров фильтрации. Например, icesh -c xterm -W this close
закроет только те xterm, которые показаны на текущем рабочем месте. Xterm на других рабочих местах будут отфильтрованы параметром фильтрации -W this
.
Количество команд, выборов, фильтров и действий, которые вы можете задать в одной команде icesh не ограничено. Они обрабатываются и вычисляются по порядку слева направо. Это делает icesh небольшим декларативным языком программирования. Посмотрите на некоторые примеры, находящиеся в конце этого документа.
icesh распознаёт следующие параметры:
Параметры выбора определяют окно или окна, с которыми впоследствии что-то будет сделано. Если ничего не задано, но действие требует окно, то перекрестие покажет на интерактивный выбор желаемого окна. Действия диспетчера не требуют параметров окна.
Следующие параметры выбирают одно или более клиентских окон. Если нужно, они могут быть повторены для последующих действий.
Выбирает все клиентские окна диспетчера окон.
Выбирает окно приложения, которое сейчас имеет фокус. Параметр со знаком минус замещает существующий выбор окном с фокусом. Со знаком плюс окно с фокусом добавится к существующему выбору.
Расширяет текущий выбор клиентскими окнами, которые принадлежат к той же группе окон приложений.
Выбирает корневое окно. Параметр со знаком минус замещает существующий выбор корневым окном. Со знаком плюс корневое окно добавится к существующему выбору.
Выбирает все клиентские окна, которые есть на текущем рабочем месте.
Выбирает все окна вернего уровня на дисплее без условий. Это включает окна, которые никогда не были отображены и окна с установленным битом переопределения перенаправления для избежания управления.
Определяет идентификатор окна, WINDOW_ID, для которого применятся действия. Специальными идентификаторами являются root для корневого окна и focus для текущего окна, имеющего фокус. Параметры со знаком минус замещает существующий выбор. Со знаком плюс окно добавится к существующему выбору.
Выбирает все окна, которые являются встроенными с использованием протокола XEMBED.
Расширяет текущий выбор теми клиентскими окнами, которые имеют свойство WM_CLASS, равное CLASS. Это экземпляр ресурса и имя класса. Если CLASS содержит период, совпадают только окна с точно тем же свойством WM_CLASS. Если там нет периода, выбираются окна с тем же самым классом и тем же самым ресурсом.
Расширяет текущий выбор клиентскими окнами, которые имеют свойство WM_CLASS, соответствующее уже выбранному набору окон.
Выбирает все приложения-Докаппы, которыми управляет icewm.
Расширяет текущее выделение клиентскими окнами, которые имеют тот же самый идентификатор процесса, как у одного из выбранных окон.
Выбирает панель задач IceWM.
Следующие параметры фильтруют текущий выбранный набор окон. Если предыдущий параметр выбор не был задан, то подразумевается параметр -all, фильтрующий все клиентские окна.
Фильтрует набор окон по их свойству WM_CLASS. Это экземпляр ресурса и имя класса. Если CLASS содержит период, совпадают только окна с точно тем же свойством WM_CLASS. Если там нет периода, выбираются окна с тем же классом и окна с тем же ресурсом (или -name).
Фильтрует клиентов и сохраняет только самого последнего клиента.
Фильтрует клиентов по имени хоста. Выбираются клиенты со свойством WM_CLIENT_MACHINE, равным HOST.
Фильтрует клиентов по _NET_WM_NAME или WM_NAME. NAME соответствует любой части значения свойства. Чтобы соответствовать в начале, используйте префикс ^
. Чтобы соответствовать в конце, используйте суффикс $
.
Фильтрует клиениов по ID процесса. Выбираются клиенты со свойством _NET_WM_PID, равным PID.
Фильтрует клиентов и сохраняет тех, которые сейчас нельзя увидеть. Это клиенты скрытые, свёрнутые, скрученные или на других рабочих местах.
Фильтрует клиентов и сохраняет только тех, которые сейчас можно увидеть. Это клиенты, размещённые на текущем рабочем месте.
Фильтрует клиентов по полю "window gravity" свойства WM_NORMAL_HINTS. Выбираются клиенты с "gravity", равным GRAVITY. Если GRAVITY начинается с восклицательного знака, то фильтрация инвертируется.
Фильтрует клиентов по GNOME window layer, который может быть или именем слоя, или номером слоя. См. ВЫРАЖЕНИЯ ниже. Если LAYER начинается с восклицательного знака, то фильтрация инвертируется.
Фильтрует клиентов по EWMH window state. Выбираются клиенты, которые имеют по крайней мере один статус окна EWMH из STATE. Этот статус относится к деталям как MINIMIZED или MAXIMIZED. См. ВЫРАЖЕНИЯ ниже. Если STATE начинается с восклицательного знака, то фильтрация инвертируется. Знак вопроса ?
фильтрует клиентов с любым набором битов в STATE.
Фильтрует клиентов по свойству. Выбираются клиенты, которые имеют свойство PROP. Если дополнительно задано value, совпадение успешно только если PROP это string, window, cardinal или atom, со значением, равным value. Фильтрация инвертируется, если PROP начинается с восклицательного знака.
Фильтрует клиентов по WM_WINDOW_ROLE. Выбираются клиенты, имеющие значение свойства WM_WINDOW_ROLE, равное ROLE. Фильтрация инвертируется, если ROLE начинается с восклицательного знака.
Фильтрует клиентов по рабочему месту. Рабочее место WORKSPACE это любое имя рабочего места, или номер рабочего места считая от нуля, или слово this
для текущего рабочего места, или слово all
для всех рабочих мест. Если WORKSPACE начинается с восклицательного знака, то фильтрация инвертируется.
Ограничивает клиентов по RandR/Xinerama монитору. Работает только с клиентами, которые отображаются на MONITOR, где MONITOR может быть all
для всех мониторов, this
для монитора, где отображаетя активное окно, или номер монитора начиная от нуля. См. вывод randr
или xinerama
ниже.
Следующие параметры идентичны для всех команд IceWM.
Определяет X11 DISPLAY. Если не определено, по умолчанию $DISPLAY.
Печатает краткое сообщение по использованию на stdout и выходит.
Печатает версию программы на stdout и выходит.
Печатает разрешения на копирование на stdout и выходит.
Не жалуется, если не было найдено совпадений окон.
icesh ожидает один или более аргументов действия. Там имеется два вида действий: действия окон и действия диспетчера. Первое работает с выбранными окнами. Второе непосредственно взаимодействует с диспетчером окон icewm.
Следующие действия влияют на выбранные окно или окна.
Активировать окно, или дать фокус.
Отправить запрос на закрытие клиенту, создавшему окно.
Заставить немедленно закрыть клиента, создавшего окно.
Напечатать идентификаторы окон для выбранных окон.
Напечатать идентификаторы процессов для выбранных окон.
Показать подробную информацию окон, как геометрия и имена.
Опустить окно.
Поднять окно.
Переместить по стеку окно выше остальных.
Переместить по стеку окно ниже остальных.
Скрутить определённое окно.
Поставить окно на полный экран.
Развернуть окно.
Развернуть окно только по горизонтали.
Развернуть окно только по вертикали.
Свернуть окно.
Восстановить окно до нормального и сбросить флаг срочности.
Скрыть окно.
Вернуть скрытое окно.
Убрать окно с панели задач.
Показать окно на панели задач.
Показать окно на всех рабочих местах.
Показать окно только на одном рабочем месте.
Установить флаг срочности чтобы кнопка задачи мигала.
Изменить размер окна до WIDTH на HEIGHT единиц окна. Для текстовых приложений вроде терминалов, единица окна это размер ячейки одиночного символа.
Изменить размер до WIDTH на HEIGHT пикселов. Если WIDTH или HEIGHT оканчиваются на знак процента %
, то они относятся к процентному отношению к рабочей области десктопа. Здесь, sizeto 50% 100%
изменяет размер до половины десктопа по ширине и до какой-либо доступной высоты выше или ниже панели задач.
Изменить размер на WIDTH на HEIGHT пикселов. Если WIDTH или HEIGHT оканчиваются на знак процента %
, то они относятся к процентному отношению к текущему размеру окна. Здесь, sizeby 50% 200
увеличивает ширину на 50% и увеличивает высоту на 200 пикселов.
Переместить выбранные окно или окна на экранную позицию X Y. Чтобы определить значения X или Y относительно правой стороны или нижней стороны, предварите значение дополнительным знаком минус, как в move -+10 --20
. Когда X или Y оканчиваются знаком процента %
, они выражаются в процентном отношении к рабочей области рабочего стола.
Переставить окно на X Y пикселов.
Расположить окно в центре рабочей области десктопа.
Расположить окно на левой стороне рабочей области десктопа.
Расположить окно на правой стороне рабочей области десктопа.
Расположить окно на верхней стороне рабочей области десктопа.
Расположить окно на нижней стороне рабочей области десктопа.
Установить название значка в TITLE.
Напечатать название значка.
Установить заголовок окна в TITLE.
Напечатать заголовок окна.
Установить геометрию окна в geometry. Эта геометрия должна быть определена в том формате, который разбирает XParseGeometry(3). Отрицательные смещения относятся к нижней или правой стороне экрана. Используйте +-
для реально отрицательного расположения.
Напечатать геометрию окна.
Установить имя и класс ресурса в CLASS, который должен быть именем ресурса и классом ресурса, соединёнными точкой. Чтобы сохранить любое существующее имя или класс, используйте знак процента для той части.
Напечатать имя и класс ресурса.
Если STATE опущен, то будет показан EWMH window state. Если STATE начинается с +
, то флаги в STATE будут добавлены к существующему EWMH window state. Если STATE начинается с -
, то флаги в STATE будут удалены из существующего EWMH window state. Если STATE начинается с ^
, то флаги в STATE будут переключены относительно существующего EWMH window state. Если STATE начинается с =
, то EWMH window state будет установлен в STATE. См. ВЫРАЖЕНИЯ ниже. Список флагов EWMH можно найти в выводе icesh symbols
.
Переместить определённое окно на другой слой окна. См. ВЫРАЖЕНИЯ ниже для просмотра списка символов LAYER.
Напечатать слой окна для определённого окна.
Переместить определённое окно на другое рабочее место. Выберите корневое окно, чтобы сменить текущее рабочее место. Если WORKSPACE это All
, то определённое окно станет видимым на всех рабочих местах. Определите this
для текущего рабочего места, next
для последующего рабочего места или prev
для предшествующего рабочего места.
Напечатать рабочее место для определённого окна.
Напечатать непрозрачность окна, если OPACITY не задан, иначе установить непрозрачность окна в OPACITY.
Установить IceWM tray option для определённого окна в TRAYOPTION. См. IceWM tray options ниже символы TRAYOPTION.
Напечатать IceWM tray option для определённого окна.
Установить поле "window gravity" свойства WM_NORMAL_HINTS для определённого окна в GRAVITY. См. ниже символы GRAVITY.
Напечатать "window gravity" из свойства WM_NORMAL_HINTS для определённого окна.
Установить "window gravity" для определённого окна в GRAVITY. См. ниже символы GRAVITY.
Напечатать "window gravity" для определённого окна.
Установить "bit gravity" для определённого окна в GRAVITY. См. ниже символы GRAVITY.
Напечатать "bit gravity" для определённого окна.
Запросить, установить или изменить свойство _MOTIF_WM_HINTS
для определённого окна. Без аргументов motif покажет текущее значение, но только если окно имеет такое свойство. Свойство может быть удалено или сброшено с аргументом remove. С отдельными полями funcs и decor это свойство может быть включено или выключено. Если FUNCTIONS или DECORATIONS начинается со знаков плюс или минус, то существующее значение изменится, иначе будет установлено новое значение. Заметьте, что если установлено all
, другие установленные поля будут выключены и очищенные поля будут включены.
Скрыть границы рамки и заголовок.
Показать границы рамки и заголовок.
Удалить свойство WM_NORMAL_HINTS, если оно есть. Это снимает ограничения на изменение размера шрифта, особенно для терминалов.
Напечатать свойство PROPERTY, если оно имеется.
Напечатать все свойства и их значения.
Напечатать идентификатор рамки окна.
Напечатать идентификатор окна и размеры границы рамки: левый, правый, верхний и нижний.
Напечатать модель фокуса ICCCM как объявленный клиентским окном. Это один из Locally, Passive, Globally or NoInput.
Напечатать статус переопределения редиректа, или если задан 0 или 1, то выключить или включить статус переопределения редиректа.
Переместить окна во вкладки рамки frame
, которая имеет метку label. Если нужно, такая рамка создаётся.
Переместить каждое окно в собственную рамку, если они сейчас являются вкладками.
Загрузить значок из файла, который должен быть в формате изображений PAM, с размерами не более 256, глубиной 4 и типом RGB_ALPHA.
Сохранить значок в новый файл в формате изображений PAM. Цифры увеличиваются для генерации уникального имени файла для каждого окна.
Отправить событие нажатия и отпускания кнопки в позиции window-x, window-y. Отрицательная позиция является отностельной к нижнему правому углу. Указатель мыши будет переставлен в эту позицию перед отправкой события. Номер кнопки должен быть между 1 и 5 включительно.
Установить мониторы, используемые для полного экрана. Top, bottom, left и right являются индексами команды icesh xinerama.
Наблюдать за выбранными окнами и докладывать о любых изменениях. Это включает фокус, видимость, позицию, размер и все свойства окна. Для просмотра всех сообщений запроса протокола, которые клиентские приложения могут отправлять в icewm, также следить за корневым окном.
Сортировать список окон от самого верхнего до самого нижнего.
Сделать обратным порядок списка окон.
Следующие действия управляют диспетчером окон IceWM и, следовательно, не требуют параметров окон select или filter:
Показать список имён всех рабочих мест.
Показать номер и имя текущего рабочего места.
Сменить текущее рабочее место на WORKSPACE. Укажите next
для последующего рабочего места или prev
для предшествующего рабочего места.
Напечатать количество рабочих мест, если COUNT не задан, иначе установить количество рабочих мест в COUNT.
Сменить имя рабочего места INDEX на NAME, где INDEX это номер рабочего места, начиная от нуля.
Сменить имена рабочих мест на список NAME.
Создать новое рабочее место с именем NAME.
Если SHOWING это 1
, то установить режим показать рабочий стол
. Если SHOWING это 0
, то выключить режим показать рабочий стол
. Напечатать текущий режим, если SHOWING не задан.
Напечатать размеры рабочей зоны для текущего рабочего места. Это рабочий стол, но минус пространство, занятое окнами дока и панели.
Обобщить конфигурацию RandR.
Обобщить конфигурацию Xinerama.
Напечатать информацию о текущем диспетчере окон, как имя, версию, класс, локаль, команду, имя хоста и PID.
Показать список всех управляемых клиентских окон, их заголовки и геометрию.
Показать список всех имеющихся клиентских окон для текущего рабочего места, их заголовки и геометрию.
Показать список всех окон верхнего уровня, их заголовки и геометрию.
Показать список приложений, которые находятся в системном лотке IceWM.
Показать список окон приложений, которые встроены, используя протокол XEMBED. Это другой путь найти приложения в системном лотке.
Позволить icewm выполнить LogoutCommand
.
Позволить icewm выполнить RebootCommand
.
Позволить icewm выполнить ShutdownCommand
.
Позволить icewm отменить logout/reboot/shutdown.
Позволить icewm показать окно "О программе".
Позволить icewm показать окно списка окон.
Позволить icewm перезапустить самому себя.
Позволить icewm выполнить SuspendCommand
.
Позволить icewm выполнить HibernateCommand
.
Позволить icewm перечитать winoptions
. Это влияет только на новые окна.
Позволить icewm перечитать файл keys
.
Позволить icewm обновить фон рабочего стола.
Наблюдать за свойством ICEWM_GUI_EVENT и докладывать обо всех изменениях. Нажмите Ctrl+C
, чтобы прервать это действие и продолжить со следующей команды.
Остановить выполнение на time или на 0.1 секунды.
Это действие предназначено для использования совместно с параметром -class. Только если нет окна, совпадающего по WM_CLASS, то выполняется program [arguments...].
Вернуться к началу команды и повторить её. Дополнительный count ограничивает количество повторов.
Выбрать окно с помощью щелчка кнопкой мыши.
Синхронизировать с диспетчером окон IceWM. То есть, подождать, пока icewm обработает все предыдущие действия.
Показать список всех поименованных символов.
Icesh поддерживает выражения if-then-else
. Полный синтаксис это:
if selection
then
actions
elif selection
then
actions
else
actions
end
Где selection
это последовательность параметров выбора и фильтрации, которая считается true, когда там не пусто. То есть, если одно или более окон выполняют условия. Если там пусто, то этот пункт actions
пропускается и последующий пункт elif
или else
проверяется или принимается. Каждый пункт не обязателен.
Каждый раз, когда условие выбора считается false, выбор окна, который существовал перед пунктом if
, немедленно восстанавливается. Это также происходит после пункта end
.
Некоторые из действий окон требуют один или два аргумента EXPRESSION.
+
| |
} SYMBOLКаждый SYMBOL может быть из одного из следующих разделов:
Поименованные символы раздела Window layer (числовой диапазон: 0-15):
Desktop (0)
Below (2)
Normal (4)
OnTop (6)
Dock (8)
AboveDock (10)
Menu (12)
Fullscreen (14)
AboveAll (15)
Эти символы используются с аргументом LAYER к действию setLayer
.
Поименованные символы раздела IceWM tray option (числовой диапазон: 0-2):
Ignore (0)
Minimized (1)
Exclusive (2)
Эти символы используются с аргументом TRAYOPTION к действию setTrayOption
.
Поименованные символы для окна и "bit gravity" (числовой диапазон: 0-10):
ForgetGravity (0)
NorthWestGravity (1)
NorthGravity (2)
NorthEastGravity (3)
WestGravity (4)
CenterGravity (5)
EastGravity (6)
SouthWestGravity (7)
SouthGravity (8)
SouthEastGravity (9)
StaticGravity (10)
All (1)
Resize (2)
Move (4)
Minimize (8)
Maximize (16)
Close (32)
All (1)
Border (2)
Resize (4)
Title (8)
Menu (16)
Minimize (32)
Maximize (64)
Поименованные символы раздела EWMH state (числовой диапазон: 0-8191):
ABOVE (1)
BELOW (2)
DEMANDS_ATTENTION (4)
FOCUSED (8)
FULLSCREEN (16)
HIDDEN (32)
MAXIMIZED_HORZ (64)
MAXIMIZED_VERT (128)
MODAL (256)
SHADED (512)
SKIP_PAGER (1024)
SKIP_TASKBAR (2048)
STICKY (4096)
Показать список имён рабочих мест:
icesh listWorkspaces
Пример вывода:
workspace #0: `main'
workspace #1: `web'
workspace #2: `doc'
workspace #3: `dev'
Закрыть терминал "work" и активировать терминал "fun".
icesh -c work.XTerm close -a -c fun.XTerm activate
Напечатать непрозрачность для всех терминалов xterm.
icesh -c XTerm opacity
Изменить непозрачность для всех терминалов xterm.
icesh -c XTerm opacity 84
Переместить все окна с рабочего места "Top" на текущее рабочее место.
icesh -W "Top" setWorkspace "this"
Восстановить всех скрытых клиентов, свернуть всех клиентов на текущем рабочем месте и активировать Firefox.
icesh -N HIDDEN restore -a -W "this" minimize -a -c Firefox activate
Изменить размер окна, имеющего фокус, для занятия правой половины зоны рабочего стола.
icesh -f sizeto 49% 100% top right raise
Переключить границу окна, имеющего фокус.
if icesh -f motif | grep -q 'decor:$'; then \
icesh -f motif decor All; else icesh -f motif decor ""; fi
Вот другое решение с использованием условий.
icesh -f if -P _NET_FRAME_EXTENTS=0 then bordered else borderless
Вот условие для переключения видимости roxterm, который имеет значение WM_ROLE special
, или запуск его с runonce.
icesh if -c roxterm.Roxterm -R special then \
if -v then hide \
elif -u then setWorkspace this activate end \
else runonce roxterm --role=special
Собрать все терминалы urxvt с четвёртого рабочего места в одну рамку на текущем рабочем месте.
icesh -W 3 -c urxvt tabto myfunnyname
Использовать конструкцию цикла loop с условием, чтобы дождаться появления конкретного окна.
icesh -t if -n Tooltip then list else delay 0.05 loop end
Дисплей по умолчанию.
Последнее действие выполнено успешно.
Последнее действие выполнено неудачно, или нет окна, соответствующего условию.
Условие имеет неправильный синтаксис.
Дисплей не был открыт.
X-cервер сообщил об ошибке во время обработки запроса.
icesh во многом соответствует спецификациям EWMH и ICCCM. Некоторые команды, как действия диспетчера, специфичны для IceWM.
icewm(1), wmctrl(1), xdotool(1), xprop(1), xwininfo(1), XParseGeometry(3).
Пожалуйста, сообщайте об ошибках на https://github.com/bbidulock/icewm/issues.
Brian Bidulock <bidulock@openss7.org>.
См. --copying для получения полной информации об авторских правах и правах на копирование.
Перевод данного текста на русский язык, а также поддержка пакета программного обеспечения icewm в ALTLinux Dmitriy Khanzhin <jinn@altlinux.org>.
IceWM лицензирован под GNU Library General Public License. См. файл COPYING в комплекте поставки или используйте флаг --copying для показа прав на копирование.
User Commands |