суббота, 25 июня 2011 г.

Gnome 3, настройка верхней панели.

Сегодня, обнаружил что при помощи файла panel.js можно настраивать размещение значков, кнопок и всего прочего на верхней панели. Наверное когда-нибудь всё это можно будет настроить в каком-нибудь dconf-editor, но пока я ничего другого не нашёл.



Сначала передвинем часы в лево. Для этого нужно с правами root открыть /usr/share/gnome-shell/js/ui/panel.js
Найти строку /* center */
между ней и строкой /* right */ должны быть строки
this._dateMenu = new DateMenu.DateMenuButton();
        this._rightBox.add(this._dateMenu.actor, { y_fill: true });
        this._menus.addMenu(this._dateMenu.menu);
Нужно вырезать их и вставить после строки /* right */
Затем строку
this._centerBox.add(this._dateMenu.actor, { y_fill: true });
заменить на
this._rightBox.add(this._dateMenu.actor, { y_fill: true });
Я хотел, чтобы часы были между значками состояния и меню состояния, по этому вставил между строками
this._rightBox.add(this._trayBox);
и
this._rightBox.add(this._statusmenu.actor);
То есть получилось так
/* center */
/*
        this._dateMenu = new DateMenu.DateMenuButton();
        this._centerBox.add(this._dateMenu.actor, { y_fill: true });
        this._menus.addMenu(this._dateMenu.menu);
*/
        /* right */

        // System status applets live in statusBox, while legacy tray icons
        // live in trayBox
        // The trayBox is hidden when there are no tray icons.
        this._trayBox = new St.BoxLayout({ name: 'legacyTray' });
        this._statusBox = new St.BoxLayout({ name: 'statusTray' });

        this._trayBox.hide();
        this._rightBox.add(this._statusBox);
        this._rightBox.add(this._trayBox);

        this._dateMenu = new DateMenu.DateMenuButton();
        this._rightBox.add(this._dateMenu.actor, { y_fill: true });
        this._menus.addMenu(this._dateMenu.menu);

        this._statusmenu = new StatusMenu.StatusMenuButton();
        this._statusmenu.actor.name = 'panelStatus';
        this._rightBox.add(this._statusmenu.actor);

В том же файле найти строчку
const STANDARD_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery'];
['a11y', 'display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery'] - это значки на верхней панели справа. Тут их можно менять местами и удалять.
Например, если нужно удалить значёк "универсального доступа", то строки
const STANDARD_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery'];
const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
'a11y': imports.ui.status.accessibility.ATIndicator,
'volume': imports.ui.status.volume.Indicator,
'battery': imports.ui.status.power.Indicator,
'keyboard': imports.ui.status.keyboard.XKBIndicator
};
превращаем в
const STANDARD_TRAY_ICON_ORDER = ['display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery'];
const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
/*    'a11y': imports.ui.status.accessibility.ATIndicator, */
'volume': imports.ui.status.volume.Indicator,
'battery': imports.ui.status.power.Indicator,
'keyboard': imports.ui.status.keyboard.XKBIndicator
};

У меня это выглядит как-то так