LINUX.ORG.RU

«Правильный» способ определения .desktop-файла для запущенного приложения

 , ,


0

2

Есть запущенное произвольное X-овое приложение.

Необходимо найти (если есть) с каким *.desktop-файлом оно ассоциировано.

Известны его PID, его XID.

Проблемы:

1. Имя окна (и даже имя приложения с которым связано окно) != Название программы. Ну т.е. например имя браузера сейчас - «Добавить сообщение - Chromium»;

2. procfs почему-то отображает обрезанные имена. Собственно,

[ntfs@ntfs-a320mh 12799]$ ps -p 12799 -o comm=
telegram-deskto
[ntfs@ntfs-a320mh 12799]$ 
последней буквы нет;

3. Альтернативно-одаренные называют *.desktop-файлы нестандартными именами, которые больше нигде не светятся. Вот например вышеупомянутый телеграмм у нас - org.telegram.desktop.desktop;

4. В системе ПЯТЬ разных имен для одной и той же сущности: *.desktop - org.telegram.desktop, WM_NAME - Telegram (1597), XAPP_NAME - TelegramDesktop, procfs comm - telegram-deskto, procfs cmdline - telegram-desktop--

Благодарю.

★★★★★
Ответ на: комментарий от windows10

Ну через имя пакета можно найти. Для pacman, например так

pacman -Ql $(LC_ALL=C pacman -Qo $(readlink /proc/1773/exe) | awk '{ print $5 }') | grep '/usr/share/icons' | grep -E '[^/]$'

В целом и yum и dpkg имеют аналогичные команды.

thegoldone ★★
()
Последнее исправление: thegoldone (всего исправлений: 1)
Ответ на: комментарий от thegoldone
[ntfs@ntfs-a320mh ~]$ pacman -Ql $(LC_ALL=C pacman -Qo $(readlink /proc/5092/exe) | awk '{ print $5 }') | grep '/usr/share/icons' | grep -E '[^/]$'
[ntfs@ntfs-a320mh ~]$ readlink /proc/5092/exe
/usr/bin/lxrandr
[ntfs@ntfs-a320mh ~]$ 

Нет, вариант поиска по ФС - дерьмо и правильностью тут даже не пахнет.

Помимо всего прочего, иконки могут изменяться и это тоже надо отлавливать.

Не, не варик.

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

Вам нужно просто форкнуть панель задач или что-то типа неё. А не мудрствовать лукаво. Всё уже есть. И механизмы и подходы и прочее. Ну или код посмотреть, как оно это делает. Вообще никаких проблем. Как вариант, написать PHP-дрисню непонятного функционала, а потом удалить и вернуться всё-таки к исследованию панели.

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

Сомнительного функционала PHP-дрисни писателя ответ.

Ну надо же. Десятки панелей и доков на десятках ЯП - не дрисня, а язык на котором все работает как часики, и код занимает 350 строк - дрисня.

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

Он не может, ЧСВ мешает. Ведь DE делали идиоты, а его мама говорит что он умненький.

Какое именно DE? Их много. И на заре каждого из них находился такой как ты с вскукареозгласом «ЧСВ мешает, ведь прошлое DE делали идиоты» :))

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

Ты реально тупой, дело не в том, что ты делаешь унылый велосипед, а в том, что не хочешь изучить как это делали до тебя. Но при этом имеешь свое экспертное мнение о правильности решений.

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

Ты реально тупой, дело не в том, что ты делаешь унылый велосипед, а в том, что не хочешь изучить как это делали до тебя. Но при этом имеешь свое экспертное мнение о правильности решений.

А подумать головой и понять, что если человек спрашивает «правильное» решение - то возможно неправильные он уже посмотрел и откуда-то взял - не ?)

Я ж думаю по дефолту, что общаюсь с умными людьми которым это все не нужно разжевывать.

Ну окей, хорошо что ты зацепил эту тему. В одной из двух популярных ДЕ в говнокоде вхардкожены названия иконок согласно названию приложения.

Ну то есть if (app == "viber" ) {icon = "viber";}. Возможно потому что в *.desktop-файле иконка вайбера звучит как viber.png, хз. И таких хуков там - десятки.

Это - костыль, велосипед и говнокод. Почему я должен его копировать к себе, а не спросить умных программистов ЛОРа, как это можно сделать правильнее, ммм?

Если ты не такой - мог бы просто не отвечать ;)

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

По дефолту умный человек в ОП рассказывает о своем способе, решениях других разработчиков и что в этом не нравится. А не «ну-ка посоветуйте мне по красоте, а я покапризничаю». Каков спрос, таков и ответ.

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

Ну окей, хорошо что ты зацепил эту тему. В одной из двух популярных ДЕ в говнокоде вхардкожены названия иконок согласно названию приложения.

Ну то есть if (app == "viber" ) {icon = "viber";}. Возможно потому что в *.desktop-файле иконка вайбера звучит как viber.png, хз. И таких хуков там - десятки.

Вот когда/если твой говнокод будет работать хотя бы у сотни пользователей, окажется, что у некоторых не отображается иконка вайбера. А код из тех двух DE показывает. Что будешь делать?

Я бы сделал файл bad_app.json с проблемными приложениями.

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

По крайней мере к третьей странице мы выяснили, что Вам нужен не значок приложения. А значок окна. Хотя хрен его знает. Возможно ещё через пару страниц всплывут ещё какие-то подробности.

Речь ведь идёт не о языке программирования. А о вызовах API, которые позволяют получить необходимые данные. И всё это есть в открытом доступе. Не вижу причин воротить нос от очевидного решения.

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

А о вызовах API, которые позволяют получить необходимые данные. И всё это есть в открытом доступе. Не вижу причин воротить нос от очевидного решения.

Не понимаю зачем здесь эти обсуждения.

Что мне нужно - я явно написал. Мне нужно именно ЭТО, а не советы как что смотреть, куда копать и так далее. Все эти API, примеры, советы, я пересмотрел. Увидел что половины нет, половина реализована у всех по-разному через одно место. Зашел сюда за советом. Совета нет? Окей, значит способа нет. Но нет, ЛОРчик как всегда решает что мне нужно)))

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

а не советы как что смотреть, куда копать и так далее

Тогда Вы ошиблись темой. Пишите в https://www.linux.org.ru/add.jsp?group=9326 и назначайте цену.

Я бегло прошёлся по SO и документации к KDE и Gnome и нашёл несколько решений от Гнома второго до шестой Плазмы. Чтобы получить значок окна.

А то что Вам нужно – чтобы кто-то переписал Линукс дистрибутивы, причём все сразу, так, чтобы Вам было проще PHP-дрисню писать под небольшую задачу. Уверен, что у Вас всё получится. Главное не сдавайтесь.

thegoldone ★★
()