从用户切换器菜单中删除关机,挂起,重新启动和hibernate
我使用桌面作为本地网络的路由器和具有多个用户的普通桌面。 我有Maverick在上面跑。 有时,其中一个桌面用户会意外按下Shutdown,Restart,Suspend或Hibernate,导致我不得不在一天中的随机时间修复网络。 我知道如何从命令行重新启动和关闭。 我不需要GUI界面。
如何从用户切换器菜单中删除“关机”,“暂停”,“重新启动”和“hibernate”选项? 我想要的只是“锁定屏幕”,“访客会话”,用户列表和“注销”左侧。
系统范围的解决方案是最好的,但如果需要,我可以为每个用户做一个。
选项1:
安装gconf-editor ,运行gksu gconf-editor
然后在/ apps / indicator-session /上按下重启和关机。
我不确定暂停和hibernate,也许在/usr/share/polkit-1/actions/org.freedesktop.upower.policy
上将
更改为no
将会解决问题。
选项2:
删除指标会话包并添加桌面快捷方式以注销并锁定屏幕。
注销命令是gnome-session-save --logout-dialog
并使用gnome-screensaver-command --lock
锁定屏幕。
对于suspend和hibernate,可以使用/etc/polkit-1/localauthority
文件,而不是编辑将在更新包时替换的包文件。 使用包含以下内容的文件/etc/polkit-1/localauthority/90-mandatory.d/disable-suspend.pkla
禁用挂起:
[Disable suspend] Identity=unix-user:* Action=org.freedesktop.upower.suspend ResultActive=no
这受到文件/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
启发,其中包含禁用hibernate的配置,其中包括:
[Disable hibernate by default] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=no
至少,这是我在Ubuntu 12.04上使用的。
有关PolicyKit地方当局的更多信息: http : //hal.freedesktop.org/docs/polkit/pklocalauthority.8.html
对于Ubuntu 14.04和16.04(Unity)
使用gsettings
禁用指标会话菜单中的大多数菜单项,并使用systemctl
在systemd级别禁用挂起function。 不过,这个解决方案并不完美。
如何禁用菜单项
首先,使用gsettings
命令查找相关键,并使用grep
命令过滤。 使用“会话”和“菜单”为关键字过滤两次。
$ gsettings list-recursively | grep session | grep menu com.canonical.indicator.session suppress-logout-menuitem false com.canonical.indicator.session force-restart-menuitem false com.canonical.indicator.session suppress-restart-menuitem false com.canonical.indicator.session suppress-shutdown-menuitem false com.canonical.indicator.session user-show-menu true
然后,使用gsettings
设置与当前值相反的值的相关键,即“false”变为“true”,反之亦然。 逐个运行以下命令。
$ gsettings set com.canonical.indicator.session suppress-shutdown-menuitem true $ gsettings set com.canonical.indicator.session suppress-restart-menuitem true $ gsettings set com.canonical.indicator.session suppress-logout-menuitem true $ gsettings set com.canonical.indicator.session user-show-menu false
要使suppress-logout-menuitem
键生效,用户可能需要重新加载Unity桌面(在终端或HUD命令提示符下运行unity
命令,无需注销或任何内容)。
这就是隐藏大多数菜单项所需要的。
按照上述步骤,除“暂停”菜单项外,所有菜单项现在都隐藏在指示器会话菜单中。 有一个关于无法隐藏Suspend菜单项的漏洞 。 确认和订阅它可能会鼓励它的解决方案。
鉴于无法直接抑制菜单项,下一个最简单的解决方案是在系统级别禁用任何暂停。
如何在Ubuntu 14.04中禁用挂起(Unity,upstart)
在14.04版本中,有几种方法可以禁用暂停,即编辑polkit-1
或pm-utils
配置文件。 但是没有说明哪些实际上会正常工作。
如何在Ubuntu 16.04中禁用挂起(Unity,systemd)
在16.04版本中, 如Debian Wiki所述 ,禁用systemd的任何暂停。
$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target Created symlink from /etc/systemd/system/sleep.target to /dev/null. Created symlink from /etc/systemd/system/suspend.target to /dev/null. Created symlink from /etc/systemd/system/hibernate.target to /dev/null. Created symlink from /etc/systemd/system/hybrid-sleep.target to /dev/null.
systemctl
命令将立即生效。 无需重启或任何事情。
因此,每当单击“暂停”菜单项时,系统不会进入睡眠状态,只会导致屏幕变为空白并返回登录屏幕(类似于“锁定屏幕”)。
暂停后已知问题的解决方法
即使没有实际暂停,在恢复当前会话时也会出现相同的已知问题: 网络管理器在暂停后不会唤醒 。 解决方法是重新启动服务。
$ sudo systemctl restart network-manager.service
网络管理器将重新启动,网络将再次可用。
在Ubuntu 16.04(Unity)中测试以上所有内容,全新安装在VirtualBox中。