имя двоичного имени и имени в графическом интерфейсе

Хотел бы я лучше назвать это. Например, лучший способ сделать точку: в icedove> предпочтениях> вложениях, для «изображения JEPG» можно выбрать «Image Viewer» или «Use other …». Оказывается, что «Image Viewer» на самом деле «/ usr / bin / eog» в моей системе. Я знаю только это, потому что после открытия eog в командной строке, нажав «Справка> О программе», я вижу «Image Viewer» … «Средство просмотра изображений GNOME». Это не дает вам никакого представления о том, что такое фактический двоичный файл, поэтому, когда программа открыта «через», это имя «Image Viewer» в icedove, как бы вы поняли, что такое фактический бинарный файл? Есть ли какая-нибудь таблица где-нибудь, или какой-то список ассоциаций или что-то еще? Вышеприведенное является лишь одним примером – эта проблема существует во всех графических интерфейсах все время. Это печальный пример того, как Linux пытается быть таким же глупым и бесполезным, как Windows 🙁

2 Solutions collect form web for “имя двоичного имени и имени в графическом интерфейсе”

В мире Unix с X Window System (X11) №1 нет понятия «приложение». Существует несколько концепций, которые перекрываются, но не соответствуют точно:

  • пакеты – имя, которое вы выбираете в диспетчере пакетов для установки приложения. Если вы не устанавливаете его с помощью диспетчера пакетов, может быть не формальное имя пакета. Пакет может включать несколько приложений.
  • исполняемые файлы – файл, который выполняется для запуска приложения. Исполняемые файлы имеют имя файла, которое может быть или не быть информативным (это когда путь к приложению – /usr/bin/foo , а не когда он /opt/myapp/bin/run или /home/alice/work/dev/a.out ).
  • процессов – экземпляр приложения в памяти. Запуск исполняемого файла создает процесс. То, что можно назвать именем процесса, является сложным и несколько зависящим от системы, я не буду здесь полностью обсуждать его. В большинстве случаев имя процесса можно считать именем файла исполняемого файла.
  • toplevel windows – программа GUI, по определению «GUI», создает хотя бы одну из них. В окне есть несколько вещей, которые ухаживают за именами какого-то рода, все из которых можно найти в качестве свойств и иметь слабые вводящие в заблуждение имена:

    • WM_NAME на самом деле является заголовком окна. Это то, что оконные менеджеры отображаются в строке заголовка и в списках задач. Он предназначен для чтения человеком и часто изменяется в течение всего срока службы окна (например, при открытии другого файла, перехода на другую вкладку и т. Д.).
    • WM_ICON_NAME похож на WM_NAME , но используется при показе значка, представляющего окно.
    • WM_CLASS – это пара имен, имя экземпляра и имя класса. Эти имена используются механизмами конфигурации, такими как ресурсы X ; см. «Xterm» или «xterm» в файле конфигурации для краткого введения. Эти имена обычно одинаковы по умолчанию, за исключением того, что класс капитализируется, а экземпляр – нет. Я думаю, что имя класса является лучшим претендентом на «имя приложения», но программа может отображать несколько окон верхнего уровня с разными классами.
  • Приложение может иметь меню с элементом под названием «О», в котором отображается окно с именем. То, что он делает, – это просто выбор разработчика приложения.

Обработчики процессов, а не только текстовые, такие как ps , top и htop , но также и большинство графических интерфейсов, таких как gnome-system-properties и lxtask, показывают только информацию о процессах, а не о верхних окнах.

Есть техническая причина для этого: нет надежного способа определить, какой процесс отображает это окно. Возможно, но очень необычно иметь несколько процессов в одном окне. Чаще всего не может быть никакого процесса, отображающего окно, потому что X11 прозрачен в сети – приложение может отправлять инструкции на интерфейс дисплея (X-сервер) по сети. Нет никакого надежного механизма для отслеживания окон, созданных удаленными соединениями.

Если приложение является кооперативным (и большинство из них), то два свойства окна позволяют отслеживать окно для процесса:

  • _NET_WM_PID : идентификатор процесса процесса, который создал окно.
  • WM_CLIENT_MACHINE : имя хоста машины, на которой выполняется процесс.

Посмотрите, какой процесс создал это окно X11? Больше подробностей. Вы можете запросить свойство _NEW_WM_PID с помощью инструментов командной строки, таких как xprop , xdotool , wmctrl и т. Д. С помощью xprop вы можете отображать все свойства. С помощью xdotool и xprop щелкните по окну, чтобы отобразить информацию об этом. wmctrl может wmctrl информацию обо всех окнах.

 xprop _NET_WM_PID WM_CLIENT_MACHINE # and click on a window xdotool selectwindow getwindowpid # and click on a window wmctrl -lp 

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

 ps -o args= -p $(xdotool selectwindow getwindowpid) 

Чтобы увидеть путь к исполняемому файлу, под Linux:

 readlink /proc/$(xdotool selectwindow getwindowpid)/exe 

¹ Существуют такие проекты, как Wayland и Mir, которые стремятся заменить X11, но учитывая, сколько приложений существует для X11, они идут медленно и являются жизнеспособными, если они поддерживают достаточную совместимость.

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

 which programm_name 

Список общих ассоциаций вы можете найти в $HOME/.local/share/applications/mimeapps.list

  • Что мне нужно сделать дополнительно, чтобы запустить X, чтобы не заканчиваться на черном экране?
  • Как сделать заголовок в XFCE больше?
  • Контроль Исходный размер xfce4-терминала?
  • Максимальное окно на Linux Mint 18 xfce не работает
  • Внести изменения в плагин регулятора CPU
  • Альтернатива применению клавиатуры gnome от Fedora
  • Постоянное переназначение ключа в Linux
  • Можно ли заставить хром показать «значки управления окном» слева
  • Lightdm greeter: не работает внутри диспетчера дисплеев, XDG_SEAT_PATH не определен
  • Как удаленно выйти из сеанса xfce из ssh?
  • Как вернуться к оригинальной верхней панели в Debian Mint xfce?
  • Interesting Posts

    зашифрованный ext3 поврежден; как действовать?

    Всякий раз, когда я набираю неправильную команду, мой терминал пытается запустить эту команду в фоновом режиме

    wget и предотвращение загрузки файлов на рекурсивный wget

    Отступ середины нескольких строк

    i3wm: запуск приложений на определенных рабочих пространствах при запуске i3

    Вывод «дерева» с «чистым» (7-разрядным) выходом ASCII

    Как переключиться на другой экран для запуска git-команд при разрешении конфликтов (команда блокировки)?

    Добавление нового каталога в PATH и символическую ссылку для каталога уже в PATH

    Как запустить Unicorn с помощью systemd / systemctl?

    Скрыть панель запуска Docky (с этой док-станции) в Linux под управлением Ubuntu-Xenial

    systemd "onehot" для запуска poweroff

    Как установить реальный Thunderbird на Debian?

    Горит успешно, каталог доступен, но не может выполнять операции (cp, mkdir и т. Д.)

    Установка и размонтирование USB-накопителя из командной строки

    Эмуляция адаптера Bluetooth LE для проведения приемочного тестирования

    Linux и Unix - лучшая ОС в мире.