我有一个程序redshift
,我想在登录时自动启动它。如果我redshift
在终端(或redshift &
)或通过alt+运行“ ” f2,这将启动它。我认为它没有初始化脚本,所以redshift
在我的.profile
文件中添加“ ”会使其在启动时加载吗?我想一个 cronjob 设置@reboot
也可以工作?
我认为有些程序需要在特定的用户环境中执行,尤其是那些影响图形元素的程序?例如,如果我通过 SSH 连接到远程机器并尝试打开一个 GUI 程序,显然这是不可能的,所以它会失败。关于我从哪里执行这个程序,这就是我试图避免的。
redshift 不是系统服务;它在您的登录会话中工作,因为它需要访问 X11 服务器。所以基本上它应该像大多数图形程序一样自动启动:
将文件添加redshift.desktop
到 XDG Autostart 目录,~/.config/autostart/
:
[Desktop Entry]
Type=Application
Name=Redshift
Exec=/usr/bin/redshift
Run Code Online (Sandbox Code Playgroud)
这适用于遵循 XDG Autostart 规范的桌面环境;这包括 GNOME、KDE、Xfce 等。在某些情况下,它可以通过图形界面进行编辑(例如gnome-session-properties
在 GNOME 中)。
添加以下行...
redshift &
Run Code Online (Sandbox Code Playgroud)
...到你的~/.xprofile
. 这适用于大多数显示管理器(gdm、kdm、lightdm、lxdm、sddm - 然而不是超薄)。
如果您使用startx工具,~/.xprofile
默认情况下不使用它,因此您必须改为更新您的~/.xinitrc
脚本 - 在启动会话管理器之前在某处添加相同的行。
如果您使用像 GDM 这样的显示管理器,您可能希望在登录前运行该程序,以便它也适用于登录屏幕。如何做到这一点因显示管理器而异,但在 GDM 中可以通过编辑/etc/gdm/Init/Default
. (免责声明:我没有尝试过,这可能是错误的文件。)
系统初始化脚本将无法工作,因为它独立于图形会话运行——它既没有权限$DISPLAY
也没有正确的$XAUTHORITY
设置;如果您对这些进行硬编码,它可能最终会尝试连接到错误的显示器(例如,您进行了硬编码,DISPLAY=":0"
但您的会话恰好从 开始:1
);如果您让它尝试所有显示,脚本仍然很可能在任何X11 显示启动之前启动。
一个@reboot
的cronjob将运行在正确的用户(而不需要到su
/ sudo
),但除此之外,它具有所有的相同的问题,系统初始化脚本。
归档时间: |
|
查看次数: |
3854 次 |
最近记录: |