1

Я некоторое время использовал Ubuntu Oneiric Ocelot (11.10) с gnome-shell (Gnome 3), и я пытаюсь привыкнуть к нему.

Другой вопрос, задаваемый о том, можно ли отключить создание динамического рабочего пространства в Gnome 3, что в настоящее время представляется невозможным.

Вместо этого я бы предпочел установить фиксированное количество рабочих пространств, которые должны создаваться при входе в систему и должны оставаться в живых, даже если в них нет окон, но при этом я могу динамически создавать больше рабочих пространств. Это возможно в настоящее время в Gnome 3?

Один грязный хак может заставить некоторые микро-окна, которые будут созданы в каждом из рабочих пространств при запуске. Используя devilspie, это возможно, хотя я не знаю, работает ли это по-прежнему в Gnome 3. В лучшем случае было бы как-то создавать постоянные невидимые окна. Кто-нибудь знает способ?

1 ответ1

1

Я знаю, что это старый пост, но я наткнулся на него, когда искал это сам. Я использую Ubuntu 12.04, и я создал патч, который позволяет именно то, что вы описываете.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:

Этот патч может перестать работать при обновлении оболочки gnome, и будет сделано достаточно изменений, чтобы патч был отклонен. Если вы хотите попробовать это, убедитесь, что вы сделали резервную копию всего перед применением патча. Если что-то пойдет не так, вы можете восстановить файл и снова получить рабочий стол.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Просто сохраните приведенный ниже код в файле (например, gnome-shell.patch):

--- /usr/share/gnome-shell/js/ui/main.js        2012-03-29 21:15:44.899552355 +0300
+++ /usr/share/gnome-shell/js/ui/main.js        2012-03-29 21:38:17.603507004 +0300
@@ -273,9 +273,20 @@
  */
 const LAST_WINDOW_GRACE_TIME = 1000;

+function _getFixedWorkspaces(){
+    let settings = new Gio.Settings({ schema: 'org.gnome.fixedWorkspaces' }); 
+    let nr_workspaces = settings.get_int('minworkspace');
+    if (nr_workspaces == 0){
+        return 1;
+    }
+    return nr_workspaces;
+}
+
+
 function _checkWorkspaces() {
     let i;
     let emptyWorkspaces = [];
+    let min_wrk = _getFixedWorkspaces();

     if (!Meta.prefs_get_dynamic_workspaces()) {
         _checkWorkspacesId = 0;
@@ -284,6 +295,7 @@

     for (i = 0; i < _workspaces.length; i++) {
         let lastRemoved = _workspaces[i]._lastRemovedWindow;
+        if ( i < min_wrk-1){ _workspaces[i]._keepAliveId = true; }
         if ((lastRemoved &&
              (lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
               lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||

Этот патч ищет настройку dconf, чтобы определить минимальное количество рабочих мест, которое вы хотите. Создайте файл с именем org.gnome.fixedWorkspaces.gschema.xml и вставьте следующее:

<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
  <schema path="/org/gnome/fixedWorkspaces/" id="org.gnome.fixedWorkspaces" gettext-domain="fixedWorkspaces">
    <key type="i" name="minworkspace">
      <default>4</default>
      <range min="1" max="32"/>
      <summary>Minimum workspaces</summary>
      <description>This option sets the minimum number of desktops that the shell should stat with.</description>
    </key>
  </schema>
</schemalist>

Теперь вы должны скопировать файл схемы в место, где gnome знает, где искать:

cp org.gnome.fixedWorkspaces.gschema.xml /usr/share/glib-2.0/schemas/

Скомпилируйте схемы:

glib-compile-schemas /usr/share/glib-2.0/schemas/

И наконец, примените патч gnome-shell:

patch /usr/share/gnome-shell/js/ui/main.js < gnome-shell.patch

Выйдите из системы и вернитесь обратно, и у вас должно быть минимум 4 рабочих пространства (значение по умолчанию). Вы можете настроить количество рабочих пространств, используя dconf-editor.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .