标签: xdg

哪些发行版在 $PATH 中有 $HOME/.local/bin?

示例:在 Ubuntu 中,.local主目录中始终有一个目录,并.profile包含以下行:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

$HOME/.local/bin默认情况下不存在,但如果创建它,它已经存在$PATH并且可以找到其中的可执行文件。

这在XDG 目录规范中没有完全提到,但似乎是从它派生出来的。

我想知道这是否足够普遍,以至于通常可以假设它存在于最常见的最终用户发行版中。例如,是在所有 Debian 衍生产品中,还是至少在 Ubuntu 衍生产品中?Red Hat/Fedora/CentOS 生态系统如何?等等 Arch、Suse 以及人们现在使用的东西。

更明确地说,这仅适用于$HOME/.local/bin而不 适用于$HOME/bin

出于好奇,如果您有相关信息,请随意包括 BSD、OS/X 和其他。:)

path xdg distributions

82
推荐指数
2
解决办法
4万
查看次数

创建自定义 URL 协议处理程序

我想为我自己的自定义 URL 协议注册一个 URL 方案(或协议)处理程序,以便单击具有此自定义协议的链接将在该 URL 上执行命令。我需要采取哪些步骤来添加这个处理程序?

示例:我想ddg://query%20terms在新的 DuckDuckGo 浏览器搜索中打开 URL 。如果此协议已经存在,我假设覆盖处理程序的步骤与创建新处理程序的步骤没有太大区别。是的,从技术上讲,这只是一个 URL 方案,而不是一个协议。

url xdg-open xdg

21
推荐指数
1
解决办法
1万
查看次数

如何验证/验证 .desktop 文件?

我有几个.desktop文件没有按预期工作或根本没有工作。我在任何地方都看不到任何错误,就每个错误寻求帮助似乎都没有成效。有没有一种方法可以验证我在文件中使用了正确的语法,它符合 FreeDesktop 标准,以便我可以应用特定的修复程序?

freedesktop .desktop xdg

15
推荐指数
1
解决办法
6790
查看次数

在默认文件管理器中打开一个目录并选择一个文件

在我正在编写的程序中,我想提供打开当前正在处理的文件所在目录的功能,并自动选择该文件(以便用户不需要搜索它)。

我知道我可以使用以下命令在默认文件管理器中打开一个目录

xdg-open /path/to/directory
Run Code Online (Sandbox Code Playgroud)

我知道我可以在 nautilus 中打开一个目录并使用

nautilus /path/to/file.txt
Run Code Online (Sandbox Code Playgroud)

以为我可以用

xdg-mime query default inode/directory
Run Code Online (Sandbox Code Playgroud)

获取默认文件管理器 - 如果它是 nautilus - 如上所示调用它。但是,尽管 nautilus 是我系统上的默认设置(xdg-open打开 nautilus 和 gnome shell 中的位置菜单),xdg-mime返回Thunar.desktop. (我试过了find / -name Thunar.desktop -mount 2>/dev/null但没有找到任何东西。)

另外,我不知道如何打开一个目录,然后选择一个子目录中的鹦鹉螺(与上面提到的方法,将打开子目录)。

我怎样才能打开默认的文件管理器的目录,并选择在该目录中的文件(如果选择一个目录,也很可能将是巨大的,但是对于这种应用并不需要),或至少找出默认的文件管理器,这样我可以直接调用吗?

xdg

13
推荐指数
2
解决办法
9189
查看次数

如何使 IDLE 成为 Python 文件的默认编辑器?

如果我双击 Gnome Classic 桌面上的 Python 文件,它不会在IDLE 中打开。如何使 IDLE 成为 Python 文件的默认编辑器?

  1. 我试图删除所有其他正在打开的程序。

  2. 我一直在查看 IDLE 的属性。

  3. 我也一直在查看该程序的属性。

当我跑

xdg-mime query default text/x-python
Run Code Online (Sandbox Code Playgroud)

我得到输出

gedit.destkop
Run Code Online (Sandbox Code Playgroud)

我确实安装了 IDLE,我尝试右键单击该文件并使用应用程序打开。IDLE无处可见。但是当我去我的应用程序,去编程时,空闲就在那里,一清二楚。

xdg

12
推荐指数
1
解决办法
3580
查看次数

是否有用于覆盖图标的主目录位置?

有一些主目录位置可以补充/usr位置。这些位置中的文件会覆盖它们的/usr对应文件。例如:

  • ~/.local/bin 补充 /usr/bin
  • ~/.local/share/applications 补充 /usr/share/applications

如果我想覆盖一个应用程序,我可以创建一个自定义.desktop文件并将其存储在~/.local/share/applications. 如果我想调整应用程序的调用方式,这会很有帮助,但如果我只想更改图标,那就大材小用了。

此外:

  • 如果原始.desktop文件不重要,我要么失去原始功能,要么需要保持本地副本同步
  • 我无法修改非应用程序图标(状态图标等)

我可以修改或维护 中的图标/usr/share/icons/hicolor/48x48,但我更愿意将它们维护在我的主文件夹中,这些将是备用图标而不是覆盖图标。

是否有一个补充的主文件夹位置,/usr/share/icons我可以在其中存储应用程序图标和其他图标,并且它们会覆盖现有的主题图标?

例如,我正在使用 Papirus 主题,但我想为文本编辑器应用程序使用我自己的图标notepad.svg。此图标定义/usr/share/applications/org.gnome.gedit.desktopIcon=gedit。我应该放在哪里notepad.svg

icons directory-structure home xdg

11
推荐指数
1
解决办法
1万
查看次数

在 ~/.local 中安装文件

安装从源代码编译的软件时,我通常将它们放在 /usr/local/ 中,这是迄今为止我经验中最常见的默认设置,也是至少在 Debian 及其衍生产品上的标准做法。

现在我想在我的主目录中安装一些东西,虽然理论上我可以创建任何子目录并将它放在那里,但我开始想知道不同的选项,以及是否有标准做法。我基本上找到了两个答案:

  • 自定义子目录,命名为Programs , usr
  • 没有子目录,有子目录~/bin , ~/lib64

我不喜欢这两个,并认为既然已经有一个~/.local子目录,为什么不安装呢?它已经包含一个~/.local/share,这意味着本地用户的私有 /usr/share,所以安装程序似乎非常合乎逻辑,创建整个~/.local/bin~/.local/库

我的问题是:可以在 ~/.local 中安装本地软件吗?

当我在 google 或 stackexchange 中搜索安装每用户软件的位置时,为什么找不到任何对此的引用?对我来说,这似乎是一个如此明显的位置,以至于没有帖子表明这意味着某处必须有一个陷阱。

也许做过这件事的人可以分享他们的经验,无论是积极的还是消极的?

software-installation directory-structure home xdg

10
推荐指数
1
解决办法
4292
查看次数

谁在创建文档/视频/图片/等。在主目录中

我以最低配置安装了 Ubuntu-14.04,即不支持 X Windows。后来我为我的卡添加了 x-server 包和一个轻量级的 WindowManager(我不想要 KDE 或 GNOME),所以我通常用 startx 启动 X,但是有人继续创建文档、桌面、下载、视频、音乐等。我的 $HOME 中的目录。我认为这通常是由“高级”桌面环境完成的。无论如何,这背后可能有什么应用程序/守护程序?

home xdg xdg-user-dirs

10
推荐指数
1
解决办法
5134
查看次数

如何使 flatpak 应用程序使用用户数据文件的标准位置?

使用 Flatpak 安装的应用程序将保留用户数据和配置~/.var/app/(请参阅Wiki文档)。

我希望使用 Flatpak 安装的应用程序能够重用相同应用程序的系统版本中留下的配置和数据。也就是说,我希望他们将用户数据保存在~/.local/share, ~/.config, ~/.cache, 而不是下面~/.var/app

起初,我希望配置环境变量、、XDG_CONFIG_HOME足够了,或者用选项启动应用程序就足够了XDG_DATA_HOMEXDG_CACHE_HOME --filesystem

 $ flatpak run --filesystem=xdg-config --filesystem=xdg-cache \
  --filesystem=xdg-data <application-id>
Run Code Online (Sandbox Code Playgroud)

然而,这似乎不起作用。

让 Flatpak 应用程序在标准位置重用用户数据和配置的正确方法是什么?

xdg flatpak

10
推荐指数
1
解决办法
4869
查看次数

如何在登录/注销时创建/删除 $XDG_RUNTIME_DIR

今天,我惊讶地ssh发现我的运行 Arch Linux 的机器/run/user/$(id -u)并不存在。

XDG基本目录规范指出:

$XDG_RUNTIME_DIR定义相对于用户特定的非必需运行时文件和其他文件对象(例如套接字、命名管道...)应存储的基目录。该目录必须由用户拥有,并且他必须是唯一对其具有读写访问权限的人。它的 Unix 访问模式必须是0700.

目录的生命周期必须与登录的用户绑定。它必须在用户首次登录时创建,如果用户完全注销,则必须删除该目录。如果用户登录多次,他应该被指向同一个目录,并且该目录必须从他第一次登录到最后一次注销在系统上继续存在,并且在这期间不能被删除。目录中的文件不能在重新启动或完整的注销/登录周期后继续存在。

在盒子上systemd,是/run/user/$(id -u)首选位置$XDG_RUNTIME_DIR(即使需要创建?)

如果没有,创建的最佳实践是什么$XDG_RUNTIME_DIR

如何确保仅当我“完全”注销时才删除该目录?

(“完全”是否意味着登录 shell 创建的所有进程都已退出?如何检查?)

systemd tmp tmpfs xdg xdg-user-dirs

9
推荐指数
1
解决办法
1万
查看次数