У меня есть проблема, которая раздражает меня до неузнаваемости
У меня есть рабочий процесс, в котором несколько окон той же программы контролируются сценарием, и согласно состоянию программы значок X-окна обновляется для отражения необходимого действия (set-icon $WINID state.png
). Некоторое время это работало вполне хорошо, однако недавно я обновил свое поле к Kubuntu 16.04 - и это было худшей идеей КОГДА-ЛИБО.
Выглядит, что флаг "Use launcher icons" диспетчера задач был удален, и это не длиннее опция отключить это - Плазменные силы, использующие значки средства запуска (всегда).
Кроме того, эта опция, кажется, удалена полностью из файлов конфигурации также.
Мой вопрос - действительно ли возможно восстановить эту функциональность? Восстановить более старую версию диспетчера задач?
Или есть ли какой-либо другой способ изменить (сценарием) значки кнопок на панели задач?
Я попытался отключить plasmashell полностью и использовать некоторую другую панель (fbpanel, lxpanel, и т.д.), но они представляют больше путаницы в KDE, чем справка с проблемой
Yupi! Существует решение
, Роющее в странное поведение, замеченное в комментарии (значок окна, показываемый для Диспетчера задач Chrome), я протестировал свойства обычного окна окно Chrome и Tm. Выглядит, что ТМ испытывает недостаток в свойстве WM_CLASS. Таким образом просто видеть значок окна на панели задач, делающей или
xprop -id $WIN_HEX_ID -remove WM_CLASS
или:
xprop -id $WIN_HEX_ID -format WM_CLASS 8s -set WM_CLASS "my-own-class"
был бы достаточно. Но...
Это создает другую проблему - очень часто WM_CLASS
, используется менеджерами окон, или другие программы к хорошо - управляют окнами и их относительным поведением. Так выбрасывание этой драгоценной информации очень контрпродуктивно. Unfortunatelly, как замечено в:
и восстановление полного WM_CLASS
свойство прямо сейчас не возможно с xprop
, Проверяющим некоторые возможные варианты, я смог сделать это с модулем python-xlib:
from Xlib.display import X, Display
from Xlib.Xatom import STRING
display = Display()
root = display.screen().root
win_hex_id = 0x6a00001 #in my case
win = display.create_resource_object('window', win_hex_id)
saved_prop = win.get_full_property(display.intern_atom('WM_CLASS'),
X.AnyPropertyType , 128).value
#to change:
win.change_property(display.intern_atom('WM_CLASS'),
STRING, 8, 'my-own-class')
#to go back:
win.change_property(display.intern_atom('WM_CLASS'),
STRING, 8, str(saved_prop) )
Как комментарий - странное поведение или KDE или pyhon-xlib состоит в том, что фактическое изменение значка происходит на другом действии свойства (чтение/запись) - настолько добавляющий:
win.get_full_property(display.intern_atom('WM_CLASS'), X.AnyPropertyType , 128).value
не причинит боль