我喜欢虚拟桌面。我手边有六个虚拟桌面,里面有我经常使用的所有程序。这意味着我恐惧重新启动我的电脑,因为我必须重新设置一切 — — 特别是因为 KDE 破坏了 Plasma 5 的会话管理(我正在运行 Kubuntu 15.10,Wily)。
因此,我也喜欢休眠。但有一个烦恼:如果我将 Chrome 或 Firefox 休眠,它们需要 20-30分钟下次启动机器时解冻,同时大量磁盘读取导致系统崩溃,无法使用。为什么?不知道。很多人都遇到过这种情况,有些人设法解决了,但我没有。
因此,为了解决这个问题,我必须在休眠之前关闭浏览器,下次手动运行。虽然我很懒,但我决定让机器帮我做这件事,但从 systemd 的睡眠脚本启动 GUI 程序却很困难。
优雅地关闭 Chrome 非常简单:
pkill --oldest chromium-browser;
就像从根终端启动一样:
su -l chema -c chromium-browser
(有一个小问题:如果我尝试使用 KDE 程序(如 Kate)进行此操作,它会显示一些默认皮肤,而不是我正在使用的实际主题)
但我没能在实际唤醒时让最后一步工作。这里有一个测试脚本,使用 sleep 代替休眠,使用 Kate 代替 Chrome,以便更快地进行测试:
#!/bin/sh
# Closes Chrome during hibernation to prevent crazy disk reads on thaw
# Systemd version, copy to /lib/systemd/system-sleep/ and chmod +x
if [ $1 = pre ] && [ $2 = suspend ]; then
killall kate;
fi
if [ $1 = post ] && [ $2 = suspend ]; then
echo "Running kate."
su -l chema -c "DISPLAY=:0.0 kate" & 2>>/tmp/wake-log
fi
Kate 在睡眠状态下确实被杀死了,但是在唤醒时从未启动过,尽管系统日志中出现了“Running Kate。”
我也尝试过runuser -l chema -c kate
,但总是失败QXcbConnection:无法连接到显示器/中止(核心转储),即使经过了xhost local:
。
有任何想法吗?