icedove>기본 설정>첨부 파일에서 "JEPG 이미지"에 대해 "이미지 뷰어" 또는 "다른 항목 사용..."을 선택할 수 있습니다. 내 시스템에서는 "Image Viewer"가 실제로 "/usr/bin/eog"인 것으로 나타났습니다. 명령줄에서 eog를 연 후 "도움말>정보"를 클릭하면 "이미지 뷰어"..."GNOME 이미지 뷰어"가 표시되기 때문에 알고 있습니다. 실제 바이너리가 무엇인지에 대한 단서를 제공하지 않으므로 프로그램이 icedove에서 "이미지 뷰어" 이름을 "통해" 열 때 실제 바이너리가 무엇인지 어떻게 알 수 있습니까? 어딘가에 테이블이 있나요? 아니면 관련 목록이 있나요? 위의 내용은 단지 예일 뿐이며 이 문제는 모든 GUI에 존재합니다. 이는 Linux가 Windows만큼 멍청하고 무기력해지려고 애쓰는 슬픈 예입니다.
답변1
유닉스 세계에서는X 윈도우 시스템(X11)1. "적용"이라는 개념이 없습니다. 겹치지만 정확히 일치하지 않는 몇 가지 개념이 있습니다.
- 가방— 패키지 관리자에서 애플리케이션을 설치하기 위해 선택한 이름입니다. 패키지 관리자를 통해 설치하지 않으면 공식 패키지 이름이 없을 수 있습니다. 패키지에는 여러 애플리케이션이 포함될 수 있습니다.
- 실행 가능 파일— 애플리케이션을 실행하기 위해 실행되는 파일입니다. 실행 파일에는 정보가 포함되거나 포함되지 않을 수 있는 파일 이름이 있습니다(응용 프로그램의 경로가 또는
/usr/bin/foo
인 경우/opt/myapp/bin/run
가 아니라 인 경우/home/alice/work/dev/a.out
). - 프로세스— 메모리에 있는 애플리케이션의 인스턴스입니다. 실행 파일을 실행하면 프로세스가 생성됩니다. 정확히 프로세스 이름으로 간주되는 것은 복잡하고 다소 시스템에 따라 다르므로 여기서는 이에 대해 완전히 논의하지 않겠습니다. 대부분의 경우 프로세스 이름은 실행 파일의 파일 이름이라고 생각하면 됩니다.
최상위 수준윈도우— "GUI"의 정의에 따라 GUI 프로그램은 이들 중 적어도 하나를 생성합니다. 창에는 이름과 관련된 여러 가지 항목이 있으며, 모두 다음과 같이 검색할 수 있습니다.특성그리고 오해의 소지가 있는 이름도 있습니다.
WM_NAME
실제로는 창의 제목입니다. 이것이 창 관리자가 제목 표시줄과 작업 목록에 표시하는 내용입니다. 사람이 읽을 수 있어야 하며 창 수명 동안 자주 변경되어야 합니다(예: 다른 파일을 열 때, 다른 탭으로 전환할 때 등).WM_ICON_NAME
와 비슷WM_NAME
하지만 창을 나타내는 아이콘을 표시할 때 사용됩니다.WM_CLASS
이름 쌍, 즉 인스턴스 이름과 클래스 이름입니다. 이러한 이름은 구성 메커니즘에서 사용됩니다.XResources;바라보다구성 파일의 "Xterm" 또는 "xterm"간략한 소개를 부탁드립니다. 기본적으로 이러한 이름은 클래스가 대문자이고 인스턴스가 대문자가 아니라는 점을 제외하면 일반적으로 동일합니다. 나는 클래스 이름이 "응용 프로그램 이름"에 대한 가장 좋은 경쟁자라고 생각합니다. 그러나 프로그램은 다른 클래스가 있는 여러 개의 최상위 창을 표시할 수 있습니다.
- 애플리케이션에는 이름이 포함된 창을 표시하는 "정보"라는 항목이 포함된 메뉴가 있을 수 있습니다. 그것이 배치하는 것은 순전히 애플리케이션 개발자의 선택입니다.
프로세스 뷰어는 텍스트 기반 뷰어(예: ps
, top
및 ) htop
뿐만 아니라 대부분의 GUI 뷰어(예: gnome-system-properties 및 lxtask )는 최상위 창이 아닌 프로세스에 대한 정보만 표시합니다.
여기에는 기술적인 이유가 있습니다. 어떤 프로세스가 어떤 창을 표시하는지 식별할 수 있는 확실한 방법이 없습니다. 동일한 창에 여러 프로세스를 그리는 것이 가능하지만 매우 드뭅니다. 보다 일반적으로 X11은 네트워크 투명하기 때문에 프로세스 표시 창이 없을 수 있습니다. 즉, 응용 프로그램은 네트워크를 통해 디스플레이 인터페이스(X 서버)에 명령을 보낼 수 있습니다. 원격 연결로 생성된 창을 추적하는 완벽한 메커니즘도 없습니다.
응용 프로그램이 협력적이라면(대부분 협력적이라면) 두 개의 창 속성을 사용하여 창에서 프로세스를 추적할 수 있습니다.
_NET_WM_PID
: 창을 생성한 프로세스의 프로세스 ID입니다.WM_CLIENT_MACHINE
: 프로세스가 실행 중인 머신의 호스트 이름입니다.
바라보다이 X11 창을 만든 프로세스는 무엇입니까?자세한 내용은. _NEW_WM_PID
다음과 같은 명령줄 도구를 사용하여 속성을 쿼리 할 수 있습니다 .xprop
,xdotool
,wmctrl
기다리다. 를 사용하면 xprop
모든 속성을 표시할 수 있습니다. xdotool
및 를 사용하여 xprop
창을 클릭하면 해당 창에 대한 정보가 표시됩니다. wmctrl
모든 창에 대한 정보를 나열할 수 있습니다.
xprop _NET_WM_PID WM_CLIENT_MACHINE # and click on a window
xdotool selectwindow getwindowpid # and click on a window
wmctrl -lp
프로세스 ID가 주어지면 실행 파일의 경로와 같은 프로세스에 대한 정보를 얻을 수 있습니다. 예를 들어, 다음 명령을 실행한 후 창을 클릭하면 해당 창을 표시하는 애플리케이션에 대한 정보가 표시됩니다.
ps -o args= -p $(xdotool selectwindow getwindowpid)
Linux에서 실행 파일의 경로를 보려면 다음을 수행하십시오.
readlink /proc/$(xdotool selectwindow getwindowpid)/exe
¹X11을 대체하기 위해 노력하는 프로젝트(예: Wayland 및 Mir) 가 있지만 X11에 대한 응용 프로그램의 수를 고려하면 느리게 진행되고 있으며 충분한 호환성이 유지되는 경우에만 실현 가능합니다.
답변2
바이너리 실행 파일의 전체 경로를 보려면 터미널에서 실행하세요.
which programm_name
일반 협회 목록은 다음에서 찾을 수 있습니다.$HOME/.local/share/applications/mimeapps.list