VS Code 在 Ubuntu 19.10 中打开目录而不是系统文件管理器

Leo*_*ini 2 mime-type visual-studio-code

升级到 Ubuntu 19.10 后,我注意到代码中有一个奇怪的行为:如果我双击一个目录或一个单元或右键单击一个目录并尝试打开该目录是由代码打开的,除非 nemo 或 nautilus。

repo添加到 apt 后,我通过microsoft repo安装代码

我不知道是 microsoft 还是 gnome 或 ubuntu 问题。

但这种行为并不友好。

Leo*_*ini 6

我找到了一种临时解决问题的解决方法。

找到
~/.local/share/applications/mimeapps.list
并确保 inode/directory= 已设置为您的文件管理器。

例子:
inode/directory=nautilus-folder-handler.desktop;

文件相同 ~/.config/mimeapps.list

然后找到代码桌面文件。
我的是在/usr/share/applications/code.desktop 并改变行

MimeType=text/plain;inode/directory;

MimeType=text/plain;

然后做 $ sudo update-desktop-database

对我来说这项工作,但如果 vscode 更新,所有重置为初始行为。

/usr/share/applications/code.desktop被恢复到初始值。

所以为了让一切更快,我写了一个脚本:

 #!/bin/bash
 sudo sed -i "s/inode\/directory;//" /usr/share/applications/code.desktop
 sudo update-desktop-database
Run Code Online (Sandbox Code Playgroud)

等待稳定的解决方案,这可能是可以接受的

更新

我已将上面的脚本放入after-upgrade-code.sh并以这种方式更改(我将其放入 PATH env 中):

#!/bin/bash
UPDATED="$(tac /var/log/apt/history.log|sed '/End-Date/,$!d;/Start-Date/q'|tac|grep 'Upgrade.*code')"
if [[ ! -z $UPDATED ]]
then
  sudo sed -i "s/inode\/directory;//" /usr/share/applications/code.desktop
  sudo update-desktop-database
fi
exit 0
Run Code Online (Sandbox Code Playgroud)

我把它/etc/apt/apt.conf.d/100update

Post-Invoke {"after-upgrade-code.sh";};
Run Code Online (Sandbox Code Playgroud)

如果上次 apt upgrade 对代码进行更改,它将升级 code.desktop

更新

我做了一些测试,我不确定 postinvoke 脚本是否工作正常:问题是我不确定 history.log 是否在 Post-Invoke 时间更新,因此脚本可以注意历史记录是否未更新。

这是第 2 版,这将被触发:

 #!/bin/bash
 sudo sed -i "s/inode\/directory;//" /usr/share/applications/code.desktop
 sudo update-desktop-database
Run Code Online (Sandbox Code Playgroud)

这:CHECK="$(date '+%Y-%m-%d %H:%M')"获取仅需要几分钟的日期时间。
这:${CHECK:0:-1}削减分钟单位并留下十个所以
grep:grep "$CHECK" /var/log/dpkg.log
检查“代码”升级是否在不到十分钟的时间内完成,如果经过验证,请尝试更新代码。桌面以避免“代码”将用于打开文件夹。

我已经改变了钩子触发器:
sudo cat /etc/apt/apt.conf.d/100update
给:
DPkg::Post-Invoke {"/home/leonardo/sviluppo/script/after-upgrade-code.sh";};

更新

我写错UPDATED了 ( UPTDATED),现在是正确的。

更新

上一个版本的工作:我已经验证:-)

  • 这种代码行为是不可接受的。我不想在 vscode 中默认打开目录。 (2认同)