Я используюwmctrlдля перемещения приложений после их запуска, чтобы мне не приходилось делать это вручную, например, для нескольких текстовых редакторов, веб-браузеров, просмотрщиков PDF и терминалов. Я использую следующую команду wmctrl для перемещения приложений
wmctrl -r <title> -e <x>,<y>,0,-1,-1
где < x > и < y > — горизонтальные и вертикальные координаты цели, а < title > — имя приложения, возвращаемое wmctrl -l
. Если я запускаю две копии Google Chrome с помощью следующих команд,
google-chrome &
google-chrome &
затем отдайте команду
wmctrl -l
возвращаемые имена окон:
0x03c06fd9 0 main New Tab - Google Chrome
0x03c0703d 0 main New Tab - Google Chrome
Теперь, если я попытаюсь переместить один из них в произвольную координату, скажем, 100,100, с помощью следующей команды
wmctrl -r "Google Chrome" -e 100,100,0,-1,-1
Если вы еще не догадались, это переместит ЭТО окно Google Chrome, в котором я сейчас печатаю, так как я открыл его раньше двух других.
Есть ли способ назначить эти заголовки окон при запуске из командной строки или сбросить их позже. Мне нужно изменить имена на что-то вроде
Google Chrome 1
Google Chrome 2
Google Chrome 3
Обратите внимание, что мне известны два способа обойти эту проблему, однако ни один из них мне не нравится, поскольку они могут привести к проблемам, если ОС запустит программу в фоновом режиме.
- Вместо заголовка используйте числовой идентификатор окна через
-i
команду. - Используйте строку
:ACTIVE:
для использования активного окна
решение1
Используйте xttitle
программу из xttitle
пакета. Обратите внимание на ДВА "t" в xттitle. Ну, на самом деле, там 3 "t"... но у меня были проблемы с опечатками только в первых двух.
Вот пример из моего ~/.bashrc
, в котором я переопределяю cd
встроенную функцию и использую ее xttitle
для помещения текущего каталога в заголовок окна:
# from the "xttitle(1)" man page - put info in window title
update_title()
{
[[ $TERM = xterm ]] || [[ $TERM = xterm-color ]] && xttitle "[$$] ${USER}@${HOSTNAME}:$PWD"
}
cd()
{
[[ -z "$*" ]] && builtin cd $HOME
[[ -n "$*" ]] && builtin cd "$*"
update_title
}