将“关机”作为系统菜单中的最后一个选项?

将“关机”作为系统菜单中的最后一个选项?

我已经使用 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); };
}

在此处输入图片描述

相关内容