18.04 (gnome) рабочие пространства - Как управлять (например, произвольно менять порядок) рабочими пространствами?

18.04 (gnome) рабочие пространства - Как управлять (например, произвольно менять порядок) рабочими пространствами?

Рабочие пространства Gnome очень удобны в использовании, но я считаю их очень сложными в управлении. Например:

  • Закрытие последнего окна в рабочем пространстве приводит к закрытию этого рабочего пространства (если не сразу, то вскоре).
  • Новые окна можно вставлять только в всегда имеющееся пустое рабочее пространство внизу.
  • Перемещение рабочих пространств потребует перемещения каждого окна по отдельности, и если рабочее пространство станет пустым во время этого предполагаемого процесса, оно закроется.

Функции, которые, как мне кажется, существуют, но я не могу найти:

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

Может быть, я просто не знаю общеизвестных фактов. Или, может быть, Gnome предлагает API для программирования в таком поведении. Или, может быть, это невозможно.

Пожалуйста проинформируйте.


Дополнение: Через несколько дней после выбора ответа на этот вопрос я нашел относительно простой API для достижения поставленных целей. Эта информация предоставленанижекак новый ответ.

решение1

Примечание: Отвечаю на свой собственный вопрос-оставив принятый ответ, поскольку он точно отражает статус Gnome.


Есть проектxdotoolкоторый удобно предоставляется как управляемый пакет Ubuntu 18.04. Он предлагает доступ для чтения и записи к рабочим столам, окнам и их связям. (Также много других функций, которые я не использовал.)

Используя этот пакет, было просто закодировать нужные функции. Прямой CLI бесполезен, но связывание их с пользовательскими сочетаниями клавиш Ubuntu означало, что я, например, мог выбирать и перемещать отдельные рабочие столы вверх и вниз с помощью клавиш, наблюдая за всеми рабочими столами с помощью стандартного вида с высоты птичьего полета Gnomes.

Стандартный вид сверху Gnome доступен с помощью сочетания клавиш «Super+a, Super+a», а затем при перемещении мыши в правую часть экрана все рабочие столы отобразятся в вертикальном массиве.

Чтобы избежать помех в работе Gnome, необходимо было отключить Gnomeдинамические рабочие столыи используйтестатические рабочие столывместо этого настройка. Использованиестатические рабочие столыбыло предложено в выбранном ответе.

МойПолный код представлен в виде краткого содержания.

В качестве примера приведем фрагмент кода для смены рабочих столов:

swaprelative(){
    nbr=$1
    ndt=$(xdotool get_num_desktops)
    if [[ $ndt -lt 2 ]] ; then return 0 ; fi
    adt=$(xdotool get_desktop)
    bdt=$((( adt + ndt + nbr) % ndt ))
    if [[ $bdt == $adt ]] ; then return 0; fi
    if [[ $bdt -lt 0 ]] ; then
        echo "relative neighbor value $nbr is out of bounds"
        return 1;
    fi
    xdotool search '.*' | while read w ; do
        if ! window_has_desktop $w ; then continue; fi
        wdt=$(xdotool get_desktop_for_window $w)
        if [[ $wdt -eq $adt ]] ; then
            xdotool set_desktop_for_window $w $bdt
        elif [[ $wdt -eq $bdt ]] ; then
            xdotool set_desktop_for_window $w $adt
        fi
    done
    xdotool set_desktop $bdt
}

Следует подчеркнуть, что кодирование было настолько простым из-за мощности проекта xdotool. Этот проект не зависит отГном, а скорее действует параллельно сГномдоступ к тому жеИкспримитивы. Вероятно, его можно использовать в нескольких различных оконных менеджерах, при условии, что будут приняты меры для избежания взаимных помех между WM и xdotool (например, отключение динамических рабочих столов в Gnome).

решение2

В GNOME Shell по умолчанию нельзя перемещаться по целым рабочим пространствам с приложениями, которые они содержат. Хотя это было бы мощной функцией, я не знаю окружений рабочего стола Linux, которые бы это делали.

Что касается API, то GNOME Shell имеет механизм расширений. На самом деле это вообще не API. По сути, это "(потенциальная) дыра безопасности" в системе, где разработчики могут вводить свой собственный код javascript, чтобы изменить поведение Shell. Множество существующих расширений GNOME Shell иллюстрируют, что можно сделать, во многих случаях с большим успехом.

Что касается ожидаемых вами характеристик, то ситуация выглядит следующим образом:

Возможность подавления автоматического закрытия рабочих пространств, возможно, заменив его командой закрытия (пустого) рабочего пространства.
По умолчанию GNOME Shell поставляется с динамическими рабочими пространствами. Однако это можно отключить, и вы можете задать несколько фиксированных рабочих пространств. Для этого установите (GNOME) Tweaks и выберите "Статические рабочие пространства" на вкладке "Рабочие пространства"как показано здесь.

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

Возможность поменять местами любое рабочее пространство с соседним нижним рабочим пространством
Смотря что вы имеете в виду. Если вы имеете в виду снова изменение порядка рабочих пространств, то см. пункт выше. Если вы имеете в виду быстрое переключение рабочих пространств, то это легко достигается с помощью сочетаний клавиш Ctrl+ Alt+ Up/ Downили Super+ PgDn/ PgUp.

Переход на статические рабочие пространства может дать вам больше контроля над тем, что и где находится, с тем ограничением, что вы не сможете перемещать целые рабочие пространства.

Несколько советов по улучшению рабочего процесса с помощью статических рабочих пространств

  • Вы можете установитьИндикатор рабочего пространстваРасширение GNOME Shell для предоставления индикатора текущего рабочего пространства, в котором вы находитесь. Расширение позволяет вам переименовывать ваши рабочие пространства, если вы этого хотите (например, "1 - Просмотр" вместо "1").

  • Вы можете настроить горячие клавиши для быстрого переключения на определенное рабочее пространство или перемещения приложения, например:

    gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4 "['<Super>4']"
    gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-4 "['<Super><Shift>4']"
    

Эти команды настраивают горячую клавишу Super+ 4, которая немедленно переносит вас в WS 4, и горячую клавишу Super++ Shift, 4которая перемещает приложение в WS 4 (примерно так же, как это работает в тайловом оконном менеджере i3).

решение3

Возможность поменять местами любое рабочее пространство с соседним нижним рабочим пространством

Существует расширение, позволяющее изменять порядок рабочих пространств, совместимое с Gnome 3.38:Reorder Workspaces

https://extensions.gnome.org/extension/3685/reorder-workspaces/

Обратите внимание, что сочетания клавиш работают только в обзоре рабочей области. Я открыл задачу, чтобы сделать это возможным из оконного представления:https://github.com/jeremiahmegel/gnome-reorder-workspaces/issues/5

Связанный контент