我每天都使用两种操作系统:带有 Unity 桌面环境的 Ubuntu 15.04 和带有 KDE-plasma-5 桌面的 Manjaro。我花了大量时间在电子邮件上,对我来说,让它像一个独立程序一样运行很方便,而不是像 Chromium 中的一个选项卡。
在这两个系统上,我都可以通过“更多工具”下的设置菜单为 gmail 创建启动器。在 Ubuntu/Unity 上,我可以将此启动器添加到面板,它将作为一个独立程序,具有自己单独的图标和键盘快捷键。在 Manjaro/KDE 上,我的 gmail 快捷方式显示一个独特的图标,但一旦程序启动,gmail 窗口将被识别为 chromium 窗口,它将与面板中现有的 chromium 窗口合并,而不是保留快捷方式上显示的图标。我还尝试过直接使用命令行标志创建快捷方式,如中所述这篇相当老的帖子,但行为是一样的。
如何在 KDE 中模仿 Unity 行为?是否有可能让 Web 应用程序表现得像独立程序一样,还是它会始终合并到任何现有的打开的 Chromium 窗口中?
答案1
问题
导致此问题的原因是 KDE 识别了不运行时显示启动器功能由其 X11 窗口提供class
,而 chrome 不会更改 X11 窗口class
,而是将其保留为谷歌浏览器并将其更改classname
为一个唯一值。
解决方案
值得庆幸的是,可以强制 Gmail 窗口按照您想要的方式运行。
- 安装一个
xdotool
用你的包管理器调用的应用程序。 - 打开文件管理器并浏览到
~/.local/share/applications/
。 .desktop
使用文本编辑器打开Chrome 为您的 Gmail Web 应用创建的文件- 注意 StartupWmClass 的值
- 将以下内容附加到 Exec 行:
&& xdotool search --sync --classname <value> set_window --class <value>
,替换<value>
为 StartupWmClass 的值。
下面是我通过这种方式编辑的另一个 Web 应用程序的示例:
[Desktop Entry]
Comment=
Exec=/opt/google/chrome/google-chrome --profile-directory=Default --app-id=hlomdbnjeagldabepchlcdhkaagfedim && xdotool search --sync --classname crx_hlomdbnjeagldabepchlcdhkaagfedim set_window --class crx_hlomdbnjeagldabepchlcdhkaagfedim
Icon=chrome-hlomdbnjeagldabepchlcdhkaagfedim-Default
Name=Outlook 365
NoDisplay=false
Path[$e]=
StartupNotify=true
StartupWMClass=crx_hlomdbnjeagldabepchlcdhkaagfedim
Terminal=0
TerminalOptions=
Type=Application
Version=1.0
X-KDE-SubstituteUID=false
X-KDE-Username=
该更改将把 Web 应用程序的窗口类更改为 KDE 所期望的。应用程序图标可能会短暂地显示为普通的 chrome 图标,但一旦 xdotool 完成,它就会很快被 .desktop 文件中设置的正确图标替换。
答案2
尝试转到 chrome://apps,右键单击应用程序并选择“以窗口形式打开”
来源:https://www.wikihow.com/Turn-Your-Favorite-Website-Into-Desktop-Apps-With-Google-Chrome
答案3
由于我发现它非常有用,我编写了一个适用于碎石机由于我有很多 chrome 应用,因此它会为每个安装的 chrome 应用自动提供说明。
(考虑到 Totos 的评论,我将在下面展示脚本)它尝试从 chrome 应用程序中确定 id,并将命令附加到行xdotool
末Exec=
#!/bin/bash
set -e
DIR="$HOME/.local/share/applications"
PATTERN="chrome-*.desktop"
if ! command -v xdotool > /dev/null; then
echo "installing xdotool..."
yes | sudo pacman -S xdotool
fi
for file in $(ls $DIR/$PATTERN)
do
echo "$file:"
ID=$(grep -m 1 Exec $file | sed -E 's/^(.*)--app-id=(\w*).*$/\2/g')
CMD=" \&\& xdotool search --sync --classname $ID set_window --class $ID"
if grep -q "$CMD" $file; then
echo " skip file"
continue
fi
echo " changing file"
sed -E -i 's!^(Exec=)(.*)$!\1\2'"${CMD}"'!g' $file
done
echo "updating desktop database"
update-desktop-database $DIR
echo "done"
你也可以找到它这里因为这个脚本将来可能会修复一些错误。
也许这对其他人也有帮助。
答案4
对我来说,奇怪的是,我在 manjaro kde 中的 chrome 上遇到了你描述的相同问题,但 chromium 可以很好地处理 Web 应用程序图标。这很奇怪,有些人在使用 chrome 时遇到此问题,而其他人在使用 chromium 时也遇到此问题,安装相反的版本似乎可以解决问题。如果我没记错的话,chromium 在 manjaro repo 中可用,而 chrome 只能通过 aur 获得,我猜这可能与此有关(但我不确定,只是猜测)。我确实希望在下一个版本的 chrome 中修复此问题,但与此同时,我的解决方法是使用 chromium 访问 Web 应用程序,使用 chrome 访问旧的 google 帐户,尽管同时使用它们,但它似乎运行顺畅(我使用的是 8 年旧的联想 G500s i3)。也许这种解决方法对您有用,直到谷歌解决这个问题。