比如说,我想在登录时为我的用户启动 emacs 服务器。在 systemd Linux 系统中,我可能会创建一个单元文件~/.config/systemd/user/emacs.service
并使用 启用它systemctl --user enable emacs.service
。
FreeBSD 中是否有类似的东西?理想情况下,我想要一个不需要root
权限的解决方案。
答案1
我对 FreeBSD 不是很熟悉,但传统的 Linux/Unix 方式是通过登录 shell 的配置来启动,例如~/.profile
sh/bash/ksh 或~/.login
csh。
也就是说,您只需emacs --daemon &
在配置文件末尾附近的某个位置添加内容,并选择检查以确保它尚未运行,或者仅在设置了 $DISPLAY 时运行它,等等。
答案2
您也可以使用“daemon”,只是为了有所不同。Man daemon(8)。Daemon -u 用户程序程序参数。
答案3
根据您的窗口管理器/桌面环境,您可以选择使用其内置功能。
例如,Fluxbox 可以通过配置在启动时启动应用程序~/.fluxbox/startup
~/.xinitrc
确保您的应用程序能够自动启动,而不管您使用哪个 WM/DE,一种通用的方法是在您的文件中添加一行。
如果您的 WM/DE 使用~/.xsession
,~/.xinitrc
请创建一个符号链接~/.xsession
指向~/.xinitrc
。
编辑~/.xinitrc
现在也会编辑~/.xsession
。但是,它不能反向工作。 中的任何更改~/.xsession
都不会出现在 中~/.xinitrc
。 可以将其视为 UDP 连接,一条单行道。:)
ln -s ~/.xinitrc ~/.xsession
要添加启动应用程序,请添加一行~/.xinitrc
并指定应用程序。
例如,要flameshot
在启动时自动启动,请在文件中的 WM/DE exec 命令之前的某处添加以下内容~/.xinitrc
。
flameshot &
这&
非常重要,因为如果没有它,所需的程序将会运行并关闭,然后继续运行,~/.xinitrc
导致启动时没有打开的窗口。
这是我的~/.xinitrc
参考
# SET PROPER locale(1) with LC_ALL VARIABLE
export LC_ALL=en_US.UTF-8
# GTK ANTIALIASING
export GDK_USE_XFT=1
# FORCE LIBREOFFICE TO USE GTK THEME
export OOO_FORCE_DESKTOP=gnome
# QT SETTINGS
export QT_XFT=1 # ANTIALIASING
export GTK2_RC_FILES="${HOME}/.gtkrc-2.0" # QT MUST KNOW GTK2 LOCATION
export QT_QPA_PLATFORMTHEME=qt5ct # QT QT5CT
# PICOM/OPACITY
picom --config ~/.config/picom.conf &
# PRESTARTED APPS
claws-mail &
networkmgr &
xscreensaver -no-splash &
flameshot &
# CREATE TASKBAR
fbpanel &
# SET WALLPAPER WITH FEH
~/.fehbg &
# WINDOW MANAGER
fluxbox
我希望这有帮助。 :)