LINUX.ORG.RU

Изменить значок xterm

 , ,


1

1

В таск-баре есть много значков xterm. Надо как-то выделить некоторые их них. Например, в xterm запускаю mutt и далее хочется по значку определить, в каком xterm он запущен. Такое реально?

Не уверен, что то. Escape последовательность, вроде \e]1;<iconname>\a

WDWTFWW ()

Сейчас сразу двухуровневый вариант предложу. xterm можно запускать с параметром -class Mutt, например. Тогда твой xterm вместо стандартного UXTerm (или что там у тебя?) будет иметь класс Mutt. А дальше ты берешь и пишешь правило для openbox, чтобы он давал иконку xterm с классом Mutt с нужной картинкой.

Итак, пускаешь

$ xterm -class Mutt -e "mutt [options]"

И в правилах openbox для окон класса Mutt даешь нужную иконку.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Почему бы не сделать .desktop файл в ~/.local/share/applications/ ? Это хорошо конечно что правилами wm можно сдеать такое, но способ то совершенно извратный.

А, хотя у вас openbox, тогда хз. Извращенцы.

anonymous ()
Ответ на: комментарий от anonymous

Почему бы не сделать .desktop файл в ~/.local/share/applications/ ?

Да и так, думаю, можно. Только ни мой способ, ни этот не будет работать, если mutt запустить в ранее открытом терминале. Иконка уже не поменяется. Тогда надо mutt алиасить на скрипт, который сначала меняет иконку, а потом запускает mutt. Как-то так.

Zubok ★★★★★ ()
Ответ на: комментарий от WDWTFWW

Таскбар же берет значок окна, а не .desktop'а, который запустил приложение

Не, там в .desktop-файле есть иконка. Можно привязать. Но попробуй. Я не знаю, что получится.

А, хотя нет, это, я так понимаю, иконка запуска, а не самого приложения.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)

У XTerm есть вроде какой-то ресурс, в котором можно прописать путь к файлу иконки.

Вообще нормальная панель должна брать имя иконки из desktop-файла.

anonymous ()
Ответ на: комментарий от WDWTFWW

У меня в IceWM такое работает, по крайней мере. ПоявлЯется у терминала иконка emacs.

Правило IceMW (файл ~/.icewm/winoptions):

emacs-custom.icon: emacs

Запуск:

xterm -class "emacs-custom" -e "emacs -nw"
Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от macumazan

А понятия не имею. Должно быть, я думаю. Это джентельменский набор. <icon></icon> есть?

Zubok ★★★★★ ()
Ответ на: комментарий от macumazan

Но если нет, то жаль. Всегда предполагал, что в openbox это есть. Можно использовать тогда xseticon до запуска самой программы в терминале. Вот такое будет работать для xterm:

xseticon -id "$WINDOWID" path/to/icon.png

См. переменную среды WINDOWID

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от macumazan

Еще вариант. Для твоего класса окна Mutt прописать в ~/.Xresources:

Mutt*iconHint: /path/to/icon.xpm

Затем (это происходит автоматически каждую сессию, но сейчас надо сразу применить):

$ xrdb ~/.Xresources

В xpm иконку можно переконвертировать при помощи convert или сразу указать подходящую в xpm:

$ convert /path/to/icon.[png,gif,jpeg...] /path/to/new/icon.xpm

Должно заработать без этого xseticon. Я проверил - у меня арбайтен.

man xterm

       iconHint (class IconHint)
               Specifies an icon which will be added to the window manager
               hints.  Xterm provides no default value.

               Set this resource to “none” to omit the hint entirely, using
               whatever the window manager may decide.

               If the iconHint resource is given (or is set via the -n option)
               xterm searches for a pixmap file with that name, in the current
               directory as well as in /usr/share/pixmaps.  if the resource
               does not specify an absolute pathname.  In each case, xterm
               adds “_48x48” and/or “.xpm” to the filename after trying
               without those suffixes.  If it is able to load the file, xterm
               sets the window manager hint for the icon-pixmap.  These
               pixmaps are distributed with xterm, and can optionally be
               compiled-in:

               ·   mini.xterm_16x16, mini.xterm_32x32, mini.xterm_48x48

               ·   filled-xterm_16x16, filled-xterm_32x32, filled-xterm_48x48

               ·   xterm_16x16, xterm_32x32, xterm_48x48

               ·   xterm-color_16x16, xterm-color_32x32, xterm-color_48x48

               In either case, xterm allows for adding a “_48x48” to specify
               the largest of the pixmaps as a default.  That is, “mini.xterm”
               is the same as “mini.xterm_48x48”.

               If no explicit iconHint resource is given (or if none of the
               compiled-in names matches), xterm uses “mini.xterm” (which is
               always compiled-in).

               The iconHint resource has no effect on “desktop” files,
               including “panel” and “menu”.  Those are typically set via a
               “.desktop” file; xterm provides samples for itself (and the
               uxterm script).  The more capable desktop systems allow
               changing the icon on a per-user basis.

UPD. Да, ну и добавлю, что если у тебя оконный менеджер настроен давать приложениям xterm какую-то свою иконку, то надо его от этого отучить возможно. Все зависит от. Например, я у себя в IceWM меняю иконку xterm правилом, поэтому не срабатывало, так как IceWM переопределял этот Hint по-своему (это все правильно). Надо сделать так, чтобы к иконке никто не прикасался.

UPD2. Возможно, xterm не поймет иконки произвольных размеров (это надо проверить), а только вот этот ряд: 16, 32, 48

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 9)
Ответ на: комментарий от Zubok
If the iconHint resource is given (or is set via the -n option)
xterm searches for a pixmap file with that name, in the current
directory as well as in /usr/share/pixmaps.

Вроде как и через опцию "-n" должно работать, чтобы без ресурса, но у меня не срабатывает нифига. Не понимаю, в чем дело. Через ресурсы все отлично работает, а с опцией -n показывает умолчательную иконку.

Если сумеешь только через опцию сделать, то можно и без классов обойтись вообще. Я пока с экспериментом закончу - времени нет. Если не победишь, то потом можно еще поэкспериментировать.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 4)
Ответ на: комментарий от Zubok

UPD2. Возможно, xterm не поймет иконки произвольных размеров (это надо проверить), а только вот этот ряд: 16, 32, 48

Вроде как нормально работает и с большими. Проверил 128x128. Главное, чтобы в формате xpm была.

Вроде как и через опцию "-n" должно работать,

Какая-то путанница в документации, так как в другом месте man написано, что опция эта эквивалент iconName, а не iconHint:

       -n string
               This option specifies the icon name for xterm's windows.  It is
               shorthand for specifying the “iconName” resource.  Note that
               this is not the same as the toolkit option -name.  The default
               icon name is the application name.

               If no suitable icon is found, xterm provides a compiled-in
               pixmap.
       iconName (class IconName)
               Specifies a label for xterm when iconified.  Xterm provides no
               default value; some window managers may assume the application
               name, e.g., “xterm”.

               Setting the iconName resource sets the icon label unless
               overridden by zIconBeep or the control sequences which change
               the window and icon labels.

Совершенно разные по смыслу ресурсы.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от macumazan

C -n игрался и с xtitle, но у меня не взлетело совсем.

Да и не взлетит, потому что они явно напутали в man. Я исходники глянул. -n — это эквивалент iconName, а у iconHint вообще нет соответствующей опции для командной строки. Если бы ресурса iconHint у xterm не было бы и если оконный менеджер (или какие-то приблуды для него) не умеет по правилам менять иконки, то остается вариант внешних утилит типа xseticon, которые умеют напрямую писать иконки либо в WM_HINTS в поле icon pixmap либо в _NET_WM_ICON.

P.S. Ну, раз работает, то тему можно отметить как решенную. Галочка есть в топике.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.