我已经设置了一些应用程序以在每次登录时自动启动(例如,redshift-gtk、gtg),但是在将这些添加到启动应用程序 ( System -> Preferences -> Startup Applications) 后,登录所需的时间显然增加了。由于所有这些,我的面板、桌面等出现的时间太长了 - 直到我被迫等待。
我不需要这些应用程序立即可用,但如果它们最终启动会很好,同时 ubuntu 菜单/面板可用于运行我可能需要的其他应用程序。
我尝试使用 at 命令,目的是编辑所有启动应用程序以将命令放入 at 队列,但这不起作用,因为应用程序没有获得必要的环境变量(如 DISPLAY)。
这是什么nice命令用于?我还有什么其他想法可以做到这一点吗?如果可能,我希望避免编辑启动应用程序命令,因为这意味着要在我使用的其他机器上进行复制需要付出很多努力。
ænd*_*rük 11
等待桌面加载所需的秒数是任意的,可以根据情况变化。代替sleep,尝试使用以下方法在系统负载下降后立即运行启动应用程序:
(编辑:添加了 koushik 的建议。)
#!/bin/bash
#
# Delays running an application until the system load has declined.
#
# Usage:
# run-when-load-low 'your command here'
echo "export DISPLAY=$DISPLAY; $1 &" | batch
exit 0
Run Code Online (Sandbox Code Playgroud)
将其另存为~/bin/run-when-load-low并添加run-when-load-low 'COMMAND'到启动应用程序首选项中。
此方法的注意事项:
DISPLAY环境变量传递给应用程序。对于大多数桌面应用程序,这将是您所需要的。话虽如此,请务必考虑任何特殊情况,并在对任何行为不正常的问题进行故障排除时牢记这一事实。如果您认为应用程序可能需要传递其他环境变量,那么一个很好的起点是printenv应用程序的文档,尽管我个人还没有遇到过这个问题。batch仅影响应用程序何时运行;它不会改变他们的优先级/友好度。run-when-load-low 'gedit My\ Notes.txt'。如果确实需要将单引号参数传递给应用程序,则必须在启动命令中使用双引号:run-when-load-low "gedit 'My Notes.txt'". 对于比这更复杂的任何事情,您最好只使用硬编码命令修改脚本的副本。我发现仅用sleep 10 && COMMAND作命令名称不起作用。我在过早加载 conky 和 xchat 并且以某种方式损坏时遇到了问题。我不得不编写一个名为的小脚本~/bin/startup并将其放入其中:
#!/bin/bash
sleep 10
xchat &
conky &
Run Code Online (Sandbox Code Playgroud)
您需要更改其权限以允许执行,chmod +x ~/bin/startup然后只需用命令替换启动应用程序条目,startup它就会触发脚本中的所有内容。
如果您愿意,您可以为每个应用程序创建一个文件。
| 归档时间: |
|
| 查看次数: |
1029 次 |
| 最近记录: |