- Как при помощи одного единственного скрипта и запустить термина, Аноним84701, 16:40 , 13-Фев-20 (1)
> Можно как-то это всё в одном скрипте писать, чтобы он и терминал открывал и скрипт в себе содержал. echo -e "\033]2;Уникальное имя\007" # меняем заголовок окна wmctrl -r "Уникальное имя" -e 0,xpos,ypos,width,height # меняем размер/позицию # (-1 == оставить "как есть", т.е. -e 0,-1,-1,50,-1 изменит только ширину) # или xdotool search --name "имя" windowsize %@ 100 100
- Как при помощи одного единственного скрипта и запустить термина, Аноним, 19:33 , 13-Фев-20 (2)
Размер окна rxvt-unicode можно поменять так: printf '\033[8;25;80t' , где 25 — кол-во строк, 80 — кол-во столбцов.Там ещё много всего полезного, man 7 urxvt.
- Как при помощи одного единственного скрипта и запустить термина, Аноним84701, 20:09 , 13-Фев-20 (3)
> Размер окна rxvt-unicode можно поменять так: > printf '\033[8;25;80t' > , где 25 — кол-во строк, 80 — кол-во столбцов.Можно, но не везде (st, konsole - не хотят ;)). А вообще, после повторного прочтения, сдается мне, что ТСу нужно решение (типа "sentinel") для запуска самого скрипта в отдельном/новом окне терминала, а не изменение размеров текущего окна.
- Как при помощи одного единственного скрипта и запустить термина, ITicDigger, 11:15 , 14-Фев-20 (4)
> А вообще, после повторного прочтения, сдается мне, что ТСу нужно решение (типа > "sentinel") для запуска самого скрипта в отдельном/новом окне терминала, а не > изменение размеров текущего окна.Нет нет, зменение текущего окна вполне годится.
- Как при помощи одного единственного скрипта и запустить термина, ITicDigger, 11:34 , 14-Фев-20 (6)
> Размер окна rxvt-unicode можно поменять так: > printf '\033[8;25;80t' > , где 25 — кол-во строк, 80 — кол-во столбцов. > Там ещё много всего полезного, man 7 urxvt.нет мана по urxvt Но вообще это вроде то что надо, спасибо. А как ещё позицию задать таким методом? ато чёт гуглится всё нето. Что это вообще за технология, по каким ключевым словам по ней хелп в нете искать?
- Как при помощи одного единственного скрипта и запустить термина, Аноним, 20:37 , 14-Фев-20 (7)
> нет мана по urxvt Так его надо установить, не пробовали? > А как ещё позицию задать таким методом? В том же разделе мана: Ps = 3 ESC [ 3 ; X ; Y t Move window to (X|Y) Ps = 4 ESC [ 4 ; H ; W t Resize to WxH pixels > Что это вообще за технология, по каким ключевым словам по ней > хелп в нете искать? Escape sequences, у каждого терминала они могут быть свои.
- Как при помощи одного единственного скрипта и запустить термина, ITicDigger, 11:19 , 14-Фев-20 (5)
> echo -e "\033]2;Уникальное имя\007" # меняем заголовок окна > wmctrl -r "Уникальное имя" -e 0,xpos,ypos,width,height # меняем размер/позицию > # (-1 == оставить "как есть", т.е. -e 0,-1,-1,50,-1 изменит только > ширину) Блин и всё бы классно, но вот проблема, для второго запущенного окна с таким же именем этот трюк уже не сработает. Придётся в каждом скрипте городить какой то механизм для генерации уникального элемента имени окна. Ещё есть один значительный минус - размеры окна приходится вводить в формате координат пикселей экрана, а не в размерах строк и столбцов терминала. Просто Эти размеры - фиг его знает откуда брать, а размер в строках и столбцах узнаётся на раз-два - ПКМ по заголовку окна, изменить размер - и вот они. > # или > xdotool search --name "имя" windowsize %@ 100 100 а тут не пойму как имя текущего окна получить
- Как при помощи одного единственного скрипта и запустить термина, And, 09:04 , 23-Мрт-20 (9)
> а тут не пойму как имя текущего окна получить Делал бы в скрипте через process id:
shift nohup xterm 2>/dev/null 1>/dev/null & term_process_id="$!" придумать-как-найти-окно-по-процессу "$term_process_id"
По term_process_id найти процесс, выгуглить, как из процесса вынуть название окна. Подозреваю, утилиты из этого треда даже, может быть, умеют это. Могут помочь какие-то трюки типа:
read proc_id cmd <<< $(ps aux | awk '{print $2 " " $11}' | egrep "^1[[:space:]]" ) echo $proc_id echo "$cmd"
Вместо xterm пишешь "${@}" Прямо вот так с кавычками - "${@}" - это передаст все параметры твоего скрипта в nohup. Т.е. запуск типа, например:
мой-скрипт-обёртка xterm -e 'echo "Hello, World"'
Делаешь desktop файлы типа /usr/share/applications/xterm-in-tray.desktop Вот содержимое:
[Desktop Entry] Name=XTerm in tray у часов Exec=alltray --large_icons --sticky --icon "/usr/share/icons/document-save.svg" мой-скрипт-обёртка xterm -e 'echo "Hello, World"' Icon=gtk-save Terminal=false X-MultipleArgs=false Type=Application StartupNotify=true Categories=GNOME;GTK;System; Comment=Терминал в трее у часов
'desktop' файлы появятся в меню запуска программ. Скорее всего этот будет в папке "Системные", т.к. "System;". Примерно так бы делал. Имена, тексты взяты из реальных конфигураций, это работает, может только здесь где-то опечатки. Очевидно, нужно всё подогнать друг к другу, склеить вместе. Примеры desktop в избытке в /usr/share/applications/ Получается один скрипт обёрка + по одному desktop файлу на каждое приложение. Дубликации кода нет, безумных километровых oneliner'ов тоже нет. Норм. Можно паковать в deb пакет и побликовать на Гит-хабчике. ))))
- Как при помощи одного единственного скрипта и запустить термина, ITicDigger, 19:34 , 23-Мрт-20 (10)
> Получается один скрипт обёрка + по одному desktop файлу на каждое приложение. > Дубликации кода нет, безумных километровых oneliner'ов тоже нет. Норм.Ооой нет. Я категорически решил отказаться от схем где на скрипт нужна обёртка или desktop-файл. Решил всё-таки юзать способ "подсаливанием" заголовка окна случайным числом: #!/bin/bash id=$RANDOM title="СКРИПТ для великих дел ID: $id" w=133 h=40 x=0 y=0 echo -e "\033]2;$title\007" # меняем заголовок окна wmctrl -r "$title" -e 0,$x,$y,-1,-1 # задать позицию (через два последних аргумента можно задать размеры в пикселях, "-1" значит - не менять). Этот способ почему-то работает только 1 раз за запуск. echo -e "\033[8;$h;$w;t" # задаём размер окна (в строках и столбцах) #здесь делаем свои великие дела. Паковать в дебку и распространять правда я бы такое не стал, так как тут говорили, что это довольно не кросс-терминальное решение и например в Konsole скореее всего не взлетит. Но лично для меня сойдёт. Мне же никто не мешает поставить себе xfce4-terminal. Ну а чтобы не городить desktop -файлы для запуска у меня сделана всего одна кнопка на панели, которая запускает всего один Gui-лаунчер направленный на каталог со скриптами, где остаётся только 2 раза кликнуть по нужному скрипту и готово. Вот нехитрый код ланчера: #!/bin/sh filename=`zenity --filename=/путь_к_твоему_скриптохранилищу/ --file-selection --title="чего запустим?"` case $? in 0) xfce4-terminal -e "$filename" ;; esac Только нужно пакет zenity сперва поставить.
- Как при помощи одного единственного скрипта и запустить термина, And, 10:03 , 25-Мрт-20 (12)
Linux way, это такой путь, который у каждого свой собственный.> как тут говорили, что это довольно не кросс-терминальное решение Так понимаю, предложенное мною не зависит от выбора конечной программы. Хоть к Libre Office можно применить. Один пробел: нет описания, как по pid найти нужный заголовок (когда-то городил удалённые столы и есть ощущение о воспоминаниях, что есть нужные утилиты: по pid получить исчерпывающую инфу о свойствах графического окна). > решил отказаться от схем где на скрипт нужна обёртка Смотря по какой причине. Обёртка оправдана, если - это программный код (а это простенькая программка на языке Shell; в посте выше код для Баш из-за конструкции <<< ), - этот код можно переиспользовать много раз (можно переиспользовать для любых программ). Обёртка - синоним слов функция, метод, процедура в языка программирования - код, который много раз переиспользуется в разных местах. Это стандарт, признанный фундамент. Тем самым, обёртка - инженерно признанный способ: целая утилита запуска. Desktop файлы - стандарт создания ланчеров. Независимо от типа DE (Kde, Lxde, Xfce), независимо от панели задач, дистрибутива Вы получаете пакет ланчеров на годы вперёд. В некоторых DE описанное desktop файлами можно вытаскивать мышкой на панель запуска. Однотипные файлы можно генерировать скриптом сразу в /usr/share/applications или, была вроде, в домашнем каталоге аналогичная папка под desktop файлы (если не вру), например. А можно генерировать вообще в своих папках, а в /usr/... кидать симлинки на свои папки. > для запуска у меня сделана > всего одна кнопка на панели, которая запускает всего один Gui-лаунчер направленный > на каталог со скриптами, где остаётся только 2 раза кликнуть по > нужному скрипту и готово. Можно ещё меньше действий: подвёл мышку к краю монитора и один клик для запуска (вторая панель с кнопкой запуска обёртки). Вы описали кнопку Старт в панели задач. :) Графический ланчер (кнопка) с меню из нескольких пунктов (скриптов). Разница в способе хранения конфигурации: свои файлы или общесистемные desktop. Вы так или иначе создаёте файлы. Если в Вашей системе программный код организован по best practice, конфигурации созданы в рамках соглашений использованного дистрибутива, то Ваш труд легче портировать, легче поддерживать. Вы интегрируетесь в сообщество, где взаимный труд и обмен наработками. P.S. Desktop файлы доступны в поиске у xfce4-appfinder (XFCE кнопка Старт, но отлично работает в самостоятельном режиме как отдельное приложение).
- Как при помощи одного единственного скрипта и запустить термина, Аноним84701, 12:42 , 24-Мрт-20 (11)
>> а тут не пойму как имя текущего окна получить > Делал бы в скрипте через process id: > > shift > nohup xterm 2>/dev/null 1>/dev/null & > term_process_id="$!" > придумать-как-найти-окно-по-процессу "$term_process_id" > > По term_process_id найти процесс, выгуглить, как из процесса вынуть название окна. Подозреваю, > утилиты из этого треда даже, может быть, умеют это.Мудрёно.
#!/bin/sh if [ -z "$SENTINEL" ] ; then export SENTINEL=1 xfce4-terminal --geometry 300x400 -x "$0" "$@" exit 0 fiecho "сдесь мы делаем свои великие дела" $1 $2 $8
|