从用户切换器菜单中删除关机,挂起,重新启动和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-1pm-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中。