Archive

ArchLinux で xdg-open でディレクトリを開くと何故か VS Code が起動してしまうときの対処

いつぐらいのタイミングからか、ArchLinux 環境で xdg-open . とかすると VS Code が起動するようになってしまい「お前じゃねえ座ってろ」と心の中で言いいつつ黙って閉じていたのだけど、いい加減対処したのでその内容をメモ

起こっていたこと

つまりこうです

なぜかxdg-openでディレクトリを開くとVS Codeが起動してしまう様子

本当は nemo とかのファイラーが起動してほしい。

原因

どうもどこかの VS Code のバージョンで code.desktopMimeTypeinode/directory が入るようになってしまったらしい。

$ cat /usr/share/applications/code.desktop
[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Refined.
GenericName=Text Editor
Exec=/usr/bin/code --unity-launch %F
Icon=visual-studio-code
Type=Application
StartupNotify=false
StartupWMClass=Code
Categories=TextEditor;Development;IDE;
MimeType=text/plain;inode/directory;application/x-code-workspace;
Actions=new-empty-window;
Keywords=vscode;

[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/usr/bin/code --new-window %F
Icon=visual-studio-code

対処

/usr/share/applications/code.desktopAUR (en) - visual-studio-code-bin に含まれるものなので直接いじるのは避けて、$XDG_DATA_HOME (デフォルト ~/.local/share) 配下にコピーしそちらを編集

$ cp /usr/share/applications/code.desktop ~/.local/share/applications/.
'/usr/share/applications/code.desktop' -> '/home/laughk/.local/share/applications/./code.desktop'

$ nvim ~/.local/share/applications/code.desktop

変更内容は以下のような感じ。 MimeType から inode/directory を削除するだけ。

$ diff -u /usr/share/applications/code.desktop ~/.local/share/applications/code.desktop
--- /usr/share/applications/code.desktop    2022-11-27 11:15:13.000000000 +0900
+++ /home/laughk/.local/share/applications/code.desktop 2022-12-03 20:27:33.705570101 +0900
@@ -8,7 +8,7 @@
 StartupNotify=false
 StartupWMClass=Code
 Categories=TextEditor;Development;IDE;
-MimeType=text/plain;inode/directory;application/x-code-workspace;
+MimeType=text/plain;application/x-code-workspace;
 Actions=new-empty-window;
 Keywords=vscode;

これで無事に xdg-open . でデフォルトのファイラーが起動するようになった🙌