Como posso definir um mínimo de espaços de trabalho que devem ficar sempre disponíveis no Gnome 3?

1

Eu tenho usado o Ubuntu Oneiric Ocelot (11.10) com o gnome-shell (Gnome 3) por um tempo e estou tentando me acostumar com isso.

Outra pergunta perguntou se a criação do espaço de trabalho dinâmico no Gnome 3 pode ser desabilitada, o que parece não ser perfeitamente possível atualmente.

O que eu preferiria, em vez disso, era definir uma quantidade fixa de espaços de trabalho que deveriam ser criados no login e permanecer ativa mesmo se não houvesse janelas, enquanto ainda me dava a opção de criar mais espaços de trabalho dinamicamente. Tal coisa é atualmente possível no Gnome 3?

Um truque sujo poderia ser forçar a criação de uma janela de micro-tamanho em cada um dos espaços de trabalho na inicialização. Usando devilspie isso pode ser possível, embora eu não saiba se isso ainda funciona para o Gnome 3. O melhor caso seria criar janelas invisíveis persistentes de alguma forma. Alguém sabe uma maneira?

    
por aef 17.11.2011 / 04:02

1 resposta

1

Eu sei que este é um post antigo, mas me deparei com ele ao procurar por mim mesmo. Estou usando o Ubuntu 12.04 e criei um patch que permite exatamente o que você está descrevendo.

TERMO DE RESPONSABILIDADE:

Este patch pode parar de funcionar se forem feitas atualizações do gnome-shell, e mudanças suficientes forem feitas para fazer com que o patch seja rejeitado. Se você quiser experimentá-lo, certifique-se de fazer backup de tudo antes de aplicar o patch. Se algo der errado, você poderá restaurar o arquivo e ter uma área de trabalho novamente.

ISENÇÃO DE RESPONSABILIDADE

Basta salvar o código abaixo em um arquivo (por exemplo: 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 ||

Este patch procura por uma configuração do dconf para determinar o número mínimo de espaços de trabalho que você deseja. Crie um arquivo chamado org.gnome.fixedWorkspaces.gschema.xml e cole o seguinte:

<?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>

Agora você deve copiar o arquivo de esquema em um local onde o gnome saiba onde procurar:

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

Compile os esquemas:

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

E, finalmente, aplique o patch do shell do gnome:

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

Efetue logout e volte e você deve ter no mínimo 4 espaços de trabalho (valor padrão). Você pode personalizar o número de espaços de trabalho usando o dconf-editor.

    
por 29.03.2012 / 20:58