Toolbox: 桌面文件集成

创建于 2020-04-21  ·  18评论  ·  资料来源: containers/toolbox

如果您安装了 GUI 应用程序(例如 VS Code、GNOME Builder 等),它将在 /usr/share/applications 中创建桌面文件。 但是工具箱有隔离系统(homedir 除外),它不会绑定。
如果可以选择从中创建桌面文件,例如:
$ toolbox desktop code.desktop会做:

  1. 将 /usr/share/applications/code.desktop 复制到 .local/share/applications/toolbox_code.desktop
  2. 将所有可执行引用(/usr/bin/code 或代码)更改为容器(/usr/bin/code -> 工具箱运行 /usr/bin/code 等)
  3. 将图标复制到本地图标存储

还添加删除选项:
$ toolbox desktop code.desktop -r
删除 ~/.local/share/applications/toolbox_code.desktop 和图标

1. Feature request 5. Good First Issue 5. Help Wanted

最有用的评论

我要去!

所有18条评论

嗨@oksoft-git! 这看起来很有趣。 我正在考虑提供类似的东西。 你想用这个功能做一个 PR(但不是在 Shell 中,而是在 Go 中用于新版本的 Toolbox

@debarshiray ,你怎么看?

我要去!

此功能将极大地有益于 Silverblue 用户,因为您可以轻松地使用容器中的应用程序

是否可以包含基本的二进制集成,以允许将基本命令包装器导出到基本系统,还是超出了项目的范围?

作为命令包装器,我的意思是像 nano 这样的包装器(对于某些程序,它可能比这更复杂)

!/bin/bash
toolbox nano "$@"

( flatpak 做这样的事情,可以进一步研究)

@sandorex ! 您正在谈论的功能已在此处跟踪:#145。 这是推出更新后的工具箱后的优先事项之一。 虽然这两个功能相似,但解决方案却大不相同。

我现在想知道赋予 Toolbox 为应用程序创建/编辑 .desktop 文件的能力是否真的可行。 它需要 Toolbox 知道在哪里找到现有的 .desktop 文件,找到正确的行,更新它们并将文件移动/复制到桌面(不是每个人都使用 GNOME Shell)可以找到并使用它的位置。 这在我看来是不必要的大块逻辑,不会有太大用处。

相反,文档中包含说明如何更新现有 .desktop 文件的部分对我来说听起来更好。

如果我对复杂性有误解,那么请证明我错了。

我可能是错的,但桌面文件在~/.local/share/applications递归搜索,所以一个目录只包含来自工具箱(每个容器)的桌面文件,然后只删除容器中不存在的桌面文件,但修改我真的不能简化

第二种方法是将这个责任交给另一个应用程序( toolbox-desktop-integration ),它允许选择桌面文件带到主机(将它们放在他们的文件夹中会很聪明,比如~/.local/share/applications/_toolbox_XXX where XXX是容器名称)

对您的意见感兴趣@HarryMichal

快完成了,但我无法从桌面文件中提取图标路径以复制到主机。

_edit_:为它创建专用工具会更好。 我会重新创建它。

@ondra05 干得好!

我个人会改进一件事(虽然这不是必需的),那就是使用cat从容器中读取文件,它可以正常工作,但它有点 hacky,导致podman共享图像使用toolbox您可以使用podman cp在容器和主机之间复制文件

我一直在这个python 脚本中玩弄这个想法。 目前它安装桌面文件、图标、mime 和元信息。 我还没有添加卸载功能,但似乎不太难。

遗憾的是,我没有时间做一个合适的应用程序,我已经制作了 UI,但 GTK 只是麻烦,有一天我可能只做 CLI 应用程序(希望如此)

遗憾的是我没有时间做一个合适的应用程序

我认为为此使用 GUI 有点过头了。 恕我直言,这应该用toolbox export方向的命令处理,标志为--remove--list

我会试着调查一下。 我想知道是否可以只添加一个toolbox export APP命令,该命令以类似于toolbox run export.py ARGS方式调用工具箱中的这个 python 脚本。 虽然在 go 中这样做显然更好,但这仅涉及将文件从工具箱的/usr复制到$XDG_DATA_DIR并且使用脚本可能更简单。 我不知道这种可能性的维护者是什么。

请注意,此类扩展必须考虑很多因素,例如处理图标的问题并不简单。

这类似于围绕添加运行命令的讨论,包括 Freenode 上#silverblue这个 IRC 对话:

From #silverblue on Freenode:

15:56 <rishi> otaylor: alexlarsson: Hey! Do you have any thoughts on            
      https://github.com/debarshiray/toolbox/pull/76 ?
15:57 <rishi> In short, people want to be able to do "toolbox run emacs".
15:57 <rishi> And I am worried about encroaching on Flatpak territory.
15:58 <alexlarsson> I don't think its a huge problem.
15:58 <otaylor> rishi: I suspect we need such functionality if we want the      
      toolbox to be a serious tool that people rely on
15:58 <alexlarsson> No 2 tools will be 100% non-overlapping
15:59 <alexlarsson> and i can imagine using this in non-flatpak like way
15:59 <alexlarsson> toolbox run some-service
15:59 <otaylor> rishi: I'd be more worried about adding, say, menu item         
      management so that it looks like 'toolbox run emacs' is a real app
16:00 <alexlarsson> I mean, some people use flatpak for cli stuff
16:00 <rishi> otaylor: alexlarsson: Okay!
16:00 <alexlarsson> which is not quite the point
16:00 <alexlarsson> Still, it works
16:01 <alexlarsson> The main thing is that the design decisions that drive      
      toolbox and flatpak are driven by a particular usecase
16:01 <alexlarsson> Not that they can't be used other ways
16:03 <rishi> Yeah, toolbox is very clearly: "use jhbuild on Silverblue".
16:04 <rishi> walters would say "separate development prefix", but that's       
      about it, I think.

已经可以在容器内安装的应用程序的.desktop文件中添加toolbox run emacs 。 拥有一个实际解析和创建.desktop文件的命令是朝着同一方向迈出的又一步,我不确定这一步是否太过分了。

@debarshiray您如何看待复制桌面文件、图标数据和元数据的 Python 脚本? 我已经做了一个,它工作得很好。

这绝对是一种解决方法。 但是,我现在对是否将其包含在 Toolbox 中犹豫不决。

我有兴趣研究这个问题!

...
不是每个人都使用 GNOME Shell
...
如果我对复杂性有误解,那么请证明我错了。

@HarryMichal我相信您的担忧是不必要的。
如今 .desktop 文件和图标文件主题被设计为与桌面无关并符合XDG 规范
https://specifications.freedesktop.org/
https://specifications.freedesktop.org/desktop-entry-spec/latest/index.html
https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html

致大家:
我们可以将所需的功能设计为DNF插件吗?

PS:刚刚意识到 Flatpak 已经公开了应用程序,所以我们可以在需要时借用它的代码。

我还没有添加卸载功能,但似乎不太难。

谢谢@A6GibKm ,请做! :)

此页面是否有帮助?
0 / 5 - 0 等级