기본 xdg-open 응용 프로그램을 터미널 프로그램으로 설정

기본 xdg-open 응용 프로그램을 터미널 프로그램으로 설정

xdg-open과 함께 터미널 vim을 사용할 수 있습니까?

터미널을 통해서만 vim을 사용하기 때문에 GUI 텍스트 편집기가 없습니다. (저는 gvim도 별로 신경 쓰지 않습니다.) xdg-open에게 터미널을 열도록 지시한 다음 선택한 파일로 vim을 열 수 있습니까?

감사해요.

답변1

.bashrc 또는 .zshrc에서 각각 bash 또는 zsh를 사용하는지 여부에 따라 다음 두 가지 환경 변수를 내보냅니다.

export EDITOR=vim
export VISUAL=vim

또한 vim을 텍스트 파일의 MIME 유형에 연결할 수도 있습니다.

xdg-mime default vim.desktop text/plain

이제 에서 vim.desktop 파일을 생성해야 합니다 /usr/share/applications. 이 파일은 원하는 터미널 에뮬레이터를 실행하고 vim을 엽니다.

답변2

내 댓글이 다음 단계까지만 답변을 완성하더라도 새 답변을 추가해야 합니다.티아고프엑스, 주석에서는 코드를 들여쓰기할 수 없기 때문입니다.

의 내용은 vim.desktop다음과 같을 수 있습니다.

[Desktop Entry]
Name=Vim Text Editor
Comment=Edit text files
Exec=vim
Terminal=true
Type=Application
Icon=terminal
Categories=Utility;TextEditor;
StartupNotify=true
MimeType=text/plain;

아래에 두는 것을 선호합니다 ~/.local/share/applications.

답변3

TL;DR

$ xdg-mime default vim.desktop <MIMETYPE>

아니면 편집하세요 ~/.config/mimeapps.list.
MIMETYPE은 다음의 출력입니다.$ xdg-mime query filetype <interested-file>


일부 데스크탑 환경(KDE, GNOME, LXQT 등)을 사용하는 경우 DE 문서를 참조해야 합니다. 그러나 거기에는XDG 표준특정 MIME 유형에 대한 기본 애플리케이션을 설정합니다. MIME 유형은 한 유형의 파일을 다른 유형과 구별하는 방법입니다(Wikipedia 참조).아치위키. 예를 들어 파일과 파일 에 대한 text/htmlMIME 유형이 있습니다 . 를 사용하여 MIME 유형을 결정할 수 있습니다 .*.htmltext/plain*.txt$xdg-mime query filetype <file_you_interested>

MIME 유형은 애플리케이션을 열어야 하는 파일과 애플리케이션을 연결하는 데 사용됩니다. 내 컴퓨터에서
Open ~/.config/mimeapps.listwich는 다음과 같이 보입니다.

[Default Applications]
x-scheme-handler/http=firefox.desktop
...
inode/directory=org.gnome.Nautilus.desktop

[Added Associations]
application/x-shellscript=nvim-qt.desktop;
...
application/pdf=firefox.desktop;

[Default Applications]이 줄을 섹션 에 추가하세요

text/plain=vim.desktop
text/markdown=vim.desktop
text/html=vim.desktop

(필요한 경우 다른 MIME 유형을 추가하세요)

vim.desktop/usr/share/applications내 컴퓨터에 다음 내용이 포함된 파일이 있습니다 .

[Desktop Entry]
Name=Vim
TryExec=vim
Exec=vim %F
Terminal=true
Type=Application
Keywords=Text;editor;
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;

(실제로 이름이나 댓글의 번역이 많이 있지만 여기서는 중요하지 않습니다.)

라인을 보세요 Terminal=true.

XDG 데스크탑 항목 사양의 규칙에 따라 이 줄은 런처가 터미널 에뮬레이터를 열어야 함을 의미하며, 그런 다음 이 터미널 창에서 앱을 열어야 합니다( Exec줄). 그렇죠?


그러나xdg-open의 5년 된 버그그리고 xdg-open은 Terminal기본 터미널 에뮬레이터에 대한 사양이 없기 때문에 키를 무시합니다.

(그들은 노력했다, 하지만 2020년에는 아직 스펙이 없습니다. )

따라서 DE를 사용하지 않는 경우 xdg-open은 데스크탑 입력 사양을 존중하지 않습니다. 버그를 채운 사람이 $TERMINAL 변수를 살펴보고 터미널 에뮬레이터를 여는 패치(슬프게도 무시됨)를 만들었으므로 /usr/bin/xdg-open(또는 $ which xdg-open)을 패치할 수 있습니다.

스크립트를 직접 변경하고 싶지 않은 경우 xdg-open몇 가지 해결 방법을 사용할 수 있습니다.

  1. ( 시스템에 gvim.desktop있는 경우 ) 또는 (qt front-end for )을 사용할 수 있습니다 .gvimnvim-qt.desktopneovim

  2. my-vim.desktop다음 내용과 같은 이름을 가진 파일을 만들 수 있습니다 .

[Desktop Entry]
Type=Application
Name=MyVim
Exec=<COMMAND TO RUN YOUR TERMINAL> vim %F
Terminal=false
Icon=gvim
Categories=Utility;TextEditor

그리고 에 배치하세요 ~/.local/share/applications.
터미널을 실행하는 명령은 선호하는 터미널의 매뉴얼 페이지(예: gnome-terminal -e)에서 얻을 수 있습니다.
자세한 내용은 데스크탑 엔트리 사양을 참조하세요.

  1. 어떻게든 xdg-open소스 코드를 읽고 DE를 사용하고 있다고 생각하고 DE 특정 도구를 호출하도록 시스템을 조정할 수 xdg-open있지만 이상하다고 생각합니다.

유용한 링크:
XDG-mime 매뉴얼 페이지 -https://linux.die.net/man/1/xdg-mime
XDG MIME 유형에 대한 아치 위키 -https://wiki.archlinux.org/index.php/XDG_MIME_Applications
XDG 데스크탑 항목에 대한 아치 위키 -https://wiki.archlinux.org/index.php/Desktop_entries#Application_entry
xdg-open 문제 -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84

관련 정보