使用图标运行可执行文件的命令

使用图标运行可执行文件的命令

(Ubuntu 18.04)是否有命令可以使用给定的图标打开可执行文件?我会提供更多背景信息。我正在尝试创建多个谷歌浏览器“用户”(不是“人员”选项卡,我需要每个用户都有自己的一组人员)。我知道你可以做到这一点,我也做到了,首先跑步

mkdir ~/.config/google-chrome-Theo

mkdir ~/.config/google-chrome-Teddy

然后制作一个运行的桌面可执行文件

google-chrome --user-data-dir=$HOME/.config/google-chrome-Theo

和另一个正在运行的

google-chrome --user-data-dir=$HOME/.config/google-chrome-Teddy

这样,当我运行“Theo”可执行文件时,我会得到 Theo 的人员套件、书签等。但是当我运行“Teddy”可执行文件时,我会得到 Teddy 的人员和书签。问题是我可以通过进入属性菜单来更改每个桌面可执行文件的图标,但我无法更改弹出的 chrome 实例的图标。也就是说,当我同时打开 Theo 和 Teddy 的 chrome 时,有两个通用的 chrome 图标,我必须搜索才能找到我想要的图标。是否有命令可以使用给定的图标打开可执行文件?

编辑:我尝试了 fra-san 的答案,但它似乎对我不起作用。我将澄清我的尝试:我最终得到了这两个桌面文件:

  1. Desktop/Chrome-Theo.desktop包含以下内容:

#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Terminal=false Type=Application Name=Google Chrome Exec=/opt/google/chrome/google-chrome --user-data-dir="/home/theo/.config/google-chrome-Theo" --class=theo Icon=/home/theo/Icon-Blue.png NoDisplay=true StartupWMClass=theo

  1. Desktop/chrome-teddy.desktop,内容如下:

#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Terminal=false Type=Application Name=Google Chrome Exec=/opt/google/chrome/google-chrome --user-data-dir="/home/ubuntu/.config/google-chrome-Teddy" --class=teddy Icon=home/teddy/Icon-Red.png NoDisplay=true StartupWMClass=teddy

但是,当我打开它们时,它们仍然在侧边栏中显示默认的 chrome 图标。我是不是哪里搞砸了?

编辑 2:我刚刚意识到这两个桌面可执行文件正在打开同一个 chrome 用户...我在 Theo chrome 上为一个页面添加了书签,当我打开 Teddy 页面时,它有相同的书签。我现在真的很困惑。

答案1

假设

我将假设:您使用的是 Ubuntu 18,您的桌面环境是 GNOME 3,您正在使用google-chrome-stable.
另外,我假设您所指的图标是GNOME 的破折号(实际上,它是 Ubuntu Dock,据我所知,它是破折号的一个分支,但我目前无法链接到任何有意义的文档)。它的默认行为是将多个 Chrome 实例组合在一起。因此,最后我假设您想要不同的图标Chrome 配置文件在码头。

解决方案

基本上,我的回答中解释了您需要重现的步骤这个问题。但这还不够,大概是因为这个错误- 这使得 Google Chrome 忽略该--class选项,除非--user-data-dir还指定了该选项(并且使用了不同的目录)。

你需要两件事:

  1. 对桌面文件进行一些编辑;
  2. 两个不同的 Chrome 用户数据目录。

第 2 点:幸运的是,您已经拥有它们:~/.config/google-chrome-Theo~/.config/google-chrome-Teddy

第 1 点:我没有足够的有关您的桌面文件的详细信息,因此我在这里从头开始创建它们。
默认情况下,每个用户桌面文件的位置是~/.local/share/applications.
因此,我创建:

  1. ~/.local/share/applications/chrome-theo.desktop,内容如下:

    #!/usr/bin/env xdg-open
    [Desktop Entry]
    Version=1.0
    Terminal=false
    Type=Application
    Name=Google Chrome
    Exec=/opt/google/chrome/google-chrome --user-data-dir="/home/your_user/.config/google-chrome-Theo" --class=theo
    Icon=icon_for_theo
    NoDisplay=true
    StartupWMClass=theo
    
  2. ~/.local/share/applications/chrome-teddy.desktop,内容如下:

    #!/usr/bin/env xdg-open
    [Desktop Entry]
    Version=1.0
    Terminal=false
    Type=Application
    Name=Google Chrome
    Exec=/opt/google/chrome/google-chrome --user-data-dir="/home/ubuntu/.config/google-chrome-Teddy" --class=teddy
    Icon=icon_for_teddy
    NoDisplay=true
    StartupWMClass=teddy
    

your_user路径替换为您的实际用户名。
icon_for_theo和替换icon_for_theddy为:

  • 完整路径到您要使用的图标文件;或者
  • 姓名,如果您要使图标文件在系统范围内可用,则不带扩展名/usr/share/icons/hicolor/

第二个选项的设置要复杂得多,但它允许您拥有不同大小的图标。参考Ask Ubuntu 上的这个答案欲了解更多信息 - 它最终链接到图标主题规范由 freedesktop.org 提供。

它是如何工作的:

  • --class=选项WMCLASS为两个 Chrome 实例提供了两个不同的 es,使它们在 Dock 中不可分组;
  • StartupWMClass=在打开的 Chrome 窗口和启动它们的桌面条目之间设置一个链接,让它们将自定义图标保留在 Dock 中;
  • 由于上述错误,该--user-data-dir=选项和两个截然不同的前两点需要用户数据目录才能有效。

注意事项和故障排除

测试环境:实时 Ubuntu 18.04 LTS、Xorg 会话、google-chrome-stable71.0.3578.98-1。

借用我的评论上述答案:

  • 建议在干净的系统上测试此类配置:至少,新的 Chrome 配置文件和用户数据目录;充其量是一个专门的用户(可能仅为测试目的而创建)。
  • xprop可用于检查该--class选项是否得到遵守:

    ## This example uses chromium instead of Google Chrome!
    ## With default settings:
    $ xprop WM_CLASS
    WM_CLASS(STRING) = "chromium", "Chromium"
    
    ## With --class=test_class
    $ xprop WM_CLASS
    WM_CLASS(STRING) = "chromium", "test_class"
    

相关内容