autostart-scripts 目录的用途

autostart-scripts 目录的用途

用户可以将.desktop文件放在他的~/.config/autostart/目录中在 Gnome 中登录(会话启动)时运行脚本,或者确实任何符合 Freedesktop 标准的环境

但是,在我的 openSUSE Leap 42.2 Gnome 3 系统上,除了每个用户的~/.config/autostart/目录之外,每个用户还有一个~/.config/autostart-scripts/目录。我假设该目录将充当用户希望在登录时运行的任何快速而肮脏的脚本的垃圾场,而不必将这些脚本包装在文件中.desktop,但我放置在该目录中的脚本不会在登录时运行。

搜索引擎几乎没有提供有关该目录的详细信息。有谁知道该目录的用途~/.config/autostart-scripts以及其中脚本运行的要求?

答案1

因为(如用户 Villapx 发现KDE Plasma 5autostart-scripts的源代码中有此目录,我假设这是 Plasma 5 的一项未记录的功能,并且我曾经在 KDE 下运行此配置文件。

我能够针对其他桌面环境调整我的系统,使其正常工作,因为我相信 KDE 使用它。为此,我在以下位置添加了一个系统自动启动桌面文件/etc/xdg/autostart/exec-autostart

[Desktop Entry]
Exec=autostart-exec.sh
Icon=system-run
NotShowIn=KDE
Terminal=false
TerminalOptions=
Type=Application

这引用了一个脚本,该脚本将调用autostart-scripts目录中的每个脚本(使用来自的目录确定)自动启动规范):

#!/bin/sh

shopt -s nullglob # Ensure shell expansion with 0 files expands to an empty list, rather than trying to read the "*.sh" file

if [ -z "$XDG_CONFIG_HOME" ]; then
    XDG_CONFIG_HOME=~/.config
fi
for f in "$XDG_CONFIG_HOME/autostart-scripts/"*.sh; do
    test -x "$f" && . "$f" || true
done

答案2

我在这里为一般谷歌用户在这个目录上添加一些额外的信息。似乎 KDE 在 2021 年改变了这个目录的工作方式(没有广泛告诉人们,这让一些人很恼火),并“单方面”将此目录移动到“旧的自动启动脚本'。然后在 /home/user/.config/autostarts 目录中为每个脚本创建一个 .desktop 文件。”

https://bugs.kde.org/show_bug.cgi?id=436439 旧的错误报告
https://bbs.archlinux.org/viewtopic.php?id=267220 讨论
https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/736 官方声明:

目前 $XDG_CONFIG_HOME/autostart-scripts 内的脚本未在 systemd 模式下运行(https://bugs.kde.org/show_bug.cgi?id=433987)。此 PR 将它们迁移到 XDG_CONFIG_HOME/autostart 内的简单 .desktop 文件,以便可以在经典和 systemd 启动模式下处理它们。这样,其他桌面环境也可以看到它们(自动启动脚本是 kde 独有的功能)。借助 xdg 配置层次结构,您甚至可以在系统级别定义登录脚本迁移将为每个现有登录脚本创建相应的 .desktop 文件。如果登录脚本是符号链接,它将被删除,.desktop 文件将指向源。 KCM 也已更新以使用这种新格式。登录脚本仍然可见(使用 kde 服务类型来区分它们)。现在,添加新脚本会在 $XDG_CONFIG_HOME/autostart 中创建一个 .desktop 文件,而不是创建指向 $XDG_CONFIG_HOME/autostart-scripts 的符号链接。这也将预启动 (env) 脚本与 UI 中的登录脚本分开。它们以前受到支持,但合并在同一类别中。

似乎到 2023 年仍然会自动移动文件。

相关内容