Я знаю, что это старый пост, но я наткнулся на него, когда искал это сам. Я использую 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.