![将“关机”作为系统菜单中的最后一个选项?](https://linux22.com/image/943521/%E5%B0%86%E2%80%9C%E5%85%B3%E6%9C%BA%E2%80%9D%E4%BD%9C%E4%B8%BA%E7%B3%BB%E7%BB%9F%E8%8F%9C%E5%8D%95%E4%B8%AD%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E9%80%89%E9%A1%B9%EF%BC%9F.png)
我已经使用 Ubuntu 21.10 大约一个多月了,它的一个设计选择让我很恼火。
“注销”按钮位于系统菜单中“关机”按钮下方。您可以看到下面的图片链接。
这让我很烦,因为我习惯于点击菜单中的最后一个选项,就像 Mac OS 一样。有没有办法把“关机”按钮放在“注销”下面?
我安装了几个不同的扩展来尝试解决这个问题。
“调出关机/注销按钮的子菜单”
正如您所见,我没有选择重新安排。:/
“顶部栏杆组织器”
还有一些其他的,但就是没法把关机按钮放在注销按钮下面。有人知道如何重新排序选项吗?
另外,我还偶然发现了一些看起来不错的菜单设计,如下面的链接。
我相信这是 18.04 中的 Gnome3?我更喜欢圆形按钮。我也可以切换到这个外观。
提前谢谢你的帮助!
答案1
随着扩展的新更新,代码发生了一些变化,因此要这样做。
开启选项
然后,使用@UnKNOWn 答案中的命令
使用以下命令打开扩展 extension.js 文件
gedit $HOME/.local/share/gnome-shell/extensions/[email protected]/extension.js
例如,通过 _createMenu() 函数根据需要重新排序菜单
_createMenu() {
let bindFlags = GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE;
let forceLockDown = this._settings.get_boolean('force-lock-down');
let boolean;
// Separator1
boolean = this._settings.get_boolean('remove-separator-1');
if (!boolean) { SystemMenu.addMenuItem(separator1); };
// Suspend
suspend = new PopupMenu.PopupImageMenuItem(_('Suspend'), 'media-playback-pause-symbolic');
suspend.connect('activate', () => {
DefaultActions.activateSuspend();
});
if(!forceLockDown) {
SystemMenu.addMenuItem(suspend);
DefaultActions.bind_property('can-suspend', suspend, 'visible', bindFlags);
} else {
boolean = this._settings.get_boolean('remove-suspend-button');
if (!boolean) {
SystemMenu.addMenuItem(suspend);
// DefaultActions.bind_property('can-suspend', suspend, 'visible', bindFlags);
}
}
// Restart
restart = new PopupMenu.PopupImageMenuItem(_('Restart…'), 'system-reboot-symbolic');
restart.connect('activate', () => {
SHELL_MAJOR_VERSION >= 40 ? DefaultActions.activateRestart() : SessionManager.RebootRemote();
});
if(!forceLockDown) {
SystemMenu.addMenuItem(restart);
SHELL_MAJOR_VERSION >= 40 ? DefaultActions.bind_property('can-restart', restart, 'visible', bindFlags) :
DefaultActions.bind_property('can-power-off', restart, 'visible', bindFlags);
} else {
boolean = this._settings.get_boolean('remove-restart-button');
if (!boolean) {
SystemMenu.addMenuItem(restart);
// SHELL_MAJOR_VERSION >= 40 ? DefaultActions.bind_property('can-restart', this._restartButton, 'visible', bindFlags) :
// DefaultActions.bind_property('can-power-off', this._restartButton, 'visible', bindFlags);
}
}
// Logout
logout = new PopupMenu.PopupImageMenuItem(_('Log Out'), 'system-log-out-symbolic');
logout.connect('activate', () => { DefaultActions.activateLogout(); });
if(!forceLockDown) {
SystemMenu.addMenuItem(logout);
DefaultActions.bind_property('can-logout', logout, 'visible', bindFlags);
} else {
boolean = this._settings.get_boolean('remove-logout-button');
if (!boolean) {
SystemMenu.addMenuItem(logout);
// DefaultActions.bind_property('can-logout', logout, 'visible', bindFlags);
}
}
// Separator2
boolean = this._settings.get_boolean('remove-separator-2');
if (!boolean) { SystemMenu.addMenuItem(separator2); };
// Power
power = new PopupMenu.PopupImageMenuItem(_('Power Off…'), 'system-shutdown-symbolic');
power.connect('activate', () => { DefaultActions.activatePowerOff(); });
if(!forceLockDown) {
SystemMenu.addMenuItem(power);
DefaultActions.bind_property('can-power-off', power, 'visible', bindFlags);
} else {
boolean = this._settings.get_boolean('remove-power-button');
if (!boolean) {
SystemMenu.addMenuItem(power);
// DefaultActions.bind_property('can-suspend', suspend, 'visible', bindFlags);
}
}
// Switch User
switchUser = new PopupMenu.PopupImageMenuItem(_('Switch User…'), 'system-switch-user-symbolic');
SystemMenu.addMenuItem(switchUser)
switchUser.connect('activate', () => { DefaultActions.activatSwitchUser(); });
DefaultActions.bind_property('can-switch-user', switchUser, 'visible', bindFlags);
DefaultActions.forceUpdate();
}
你应该得到如下的菜单:
答案2
您可以通过编辑扩展文件来调整顺序extension.js
。
extension.js
使用以下命令打开扩展文件
gedit $HOME/.local/share/gnome-shell/extensions/[email protected]/extension.js
根据需要从_nextAction()
功能中重新排序菜单,例如
_nextAction() {
let boolean;
// Separator1
boolean = this.gsettings.get_boolean('remove-separator-1');
if (!boolean) { SystemMenu.addMenuItem(separator1); };
// Suspend
boolean = this.gsettings.get_boolean('remove-suspend-button');
if (!boolean) { SystemMenu.addMenuItem(suspend); };
// Switch User
SystemMenu.addMenuItem(switchUser);
let bindFlags = GObject.BindingFlags.DEFAULT | GObject.BindingFlags.SYNC_CREATE;
DefaultActions.bind_property('can-switch-user', switchUser, 'visible', bindFlags);
// Separator2
boolean = this.gsettings.get_boolean('remove-separator-2');
if (!boolean) { SystemMenu.addMenuItem(separator2); };
// Logout
boolean = this.gsettings.get_boolean('remove-logout-button');
if (!boolean) { SystemMenu.addMenuItem(logout); };
//Restart
boolean = this.gsettings.get_boolean('remove-restart-button');
if (!boolean) { SystemMenu.addMenuItem(restart); };
// Power
boolean = this.gsettings.get_boolean('remove-power-button');
if (!boolean) { SystemMenu.addMenuItem(power); };
}