Encontrei o código-fonte dos arquivos js da interface do usuário do gnome-shell no site do Debian:
https://sources.debian.org/src/gnome-shell/3.38.2-1/js/ui/
Então eu também encontrei esta resposta aqui , que aponta que esse caminho/arquivo existia no Ubuntu há algum tempo:
/usr/share/gnome-shell/js/ui/windowManager.js
Agora, no entanto, não vejo um js
subdiretório no /usr/share/gnome-shell/
.
Eu procurei em toda a /
partição por "lightbox.js" e "windowManager.js", mas nenhum foi encontrado.
Onde posso encontrar esses arquivos e quais obstáculos preciso superar se quiser alterar o valor de algumas variáveis codificadas nele?
Compatibilidade de resposta:
Ubuntu 20.04.2
gnome-shell versão: 3.36.4
servidor de exibição: X.Org Server
Nota importante:
Cometer qualquer erro ao alterar os arquivos do gnome-shell pode introduzir um impasse em sua sessão gráfica. Tente apenas se estiver familiarizado com os métodos comuns de recuperação do sistema.
Além disso, a execução de alterações nesta resposta exigirá um fluxo de trabalho adicional para lidar com as atualizações do gnome-shell com a devida cautela, conforme explicado abaixo.
Como modificar a funcionalidade
No Ubuntu 20.04, os arquivos javascript do gnome-shell são normalmente empacotados dentro do arquivo:
Para substituí-los, é preciso extrair cópias dos arquivos de assunto e pedir ao Gnome para usar as cópias.
Abaixo, forneço uma explicação geral abstrata e independente de tarefas. Para ver um procedimento semelhante em ação em uma tarefa prática específica, consulte esta resposta .
As cópias de arquivos a serem modificadas podem ser organizadas em um local arbitrário, neste passeio eu uso o seguinte local:
Para habilitar esta "plataforma de customização", é preciso colocar a seguinte linha em
~/.profile
:Para que isso tenha efeito, é necessário efetuar logout e logon novamente.
Uma nota sobre dependências:
Antes de fazer esse procedimento funcionar na minha máquina, eu já tinha o
libgtk-3-dev
pacote instalado. É para desenvolvimento / depuração, assim como o recurso de sobreposições de recursos parece ser. Portanto, agora não posso determinar se respeitar aG_RESOURCE_OVERLAYS
variável de ambiente depende da presença deste pacote ou não... Por precaução, esteja pronto para instalá-lo.Configurando arquivos de assunto:
Pode-se listar o conteúdo da
libgnome-shell.so
seguinte forma:A próxima etapa é extrair o arquivo a ser modificado. Vamos usar um exemplo onde este arquivo está localizado no
ui/
subdiretório do gnome-shell.Ajustes:
Para ver o efeito dos ajustes no arquivo personalizado, recarregar o gnome-shell após cada edição parece ser necessário. Isso pode ser feito rapidamente emitindo o
r
comando através da caixa de diálogo Executar comando (revelada por Alt+ F2).Neste ponto, você deve ter uma substituição de trabalho que persiste por meio de reinicializações.
Uma nota sobre a recuperação:
Se uma tentativa de modificação der errado, deve ser possível alternar para um ambiente de console virtual (com, por exemplo, Ctrl+ Alt+ F3). A partir daí, comentar a entrada de
G_RESOURCE_OVERLAYS
linha~/.profile
e, posteriormente, reinicializar deve desengatar a substituição e, assim, ter a capacidade de restaurar o sistema.Uma observação sobre o uso de G_RESOURCE_OVERLAYS
Pode ser que esse recurso seja voltado principalmente para depuração e desenvolvimento, e talvez não para uso permanente.
A estabilidade do sistema pode ser afetada: quando habilitei isso pela primeira vez, vi algumas estranhezas anteriormente não experimentadas com minhas configurações de som e algumas janelas piscando. Algumas reinicializações do gnome-shell e algumas (algumas?) reinicializações? No entanto, resolveram e, a partir do dia seguinte, não experimentei mais anomalias.
Além disso, no aplicativo "Logs", posso ver que o evento de usar G_RESOURCE_OVERLAYS é registrado na seção "segurança", então é bom considerar isso.
Em relação ao recebimento de atualizações do sistema ao usar G_RESOURCE_OVERLAYS:
A seção a seguir é inteiramente especulação, não tenho confirmação se isso é válido; no entanto, pode ser útil considerar:
Se e quando o gnome-shell receber uma atualização, vejo uma chance de que os arquivos personalizados do gnome-shell percam sua compatibilidade e possam até causar a quebra da área de trabalho.
Acredito que, nesse caso, é possível suspender o uso do recurso G_RESOURCE_OVERLAYS
~/.profile
(conforme discutido na seção de recuperação ), repetir posteriormente a extração dos arquivos de assunto do freshlibgnome-shell.so
e reaplicar as modificações de maneira compatível.Caso uma atualização cause tal evento de incompatibilidade, especulo algum risco envolvendo o desktop travar já enquanto a etapa de configuração das atualizações está sendo executada; Posso visualizar danos colaterais significativos infligidos a outros sistemas em tal caso. (Eu posso estar errado.)
No entanto, por esse motivo, eu consideraria permitir que as atualizações do gnome-shell sejam instaladas separadamente de outras atualizações, para que o evento não interfira na instalação de outros pacotes.
Uma camada de controle, para estabilidade:
Para gerenciar os riscos mencionados, pode-se colocar o gnome-shell em
hold
status , que impede que suas atualizações sejam instaladas, até que esteja pronto para lidar com elas.O procedimento então fica assim:
sudo apt-mark hold gnome-shell
~/.profile
e reinicie o gnome-shellsudo apt-mark unhold gnome-shell
~/.profile
e reinicie o gnome-shellCompilando os arquivos modificados de volta para
libgnome-shell.so
Eu acho que os riscos em torno das atualizações podem ser evitados se alguém, em vez de confiar no recurso de sobreposições de recursos permanentemente, compilar os arquivos modificados de volta
libgnome-shell.so
(porque uma atualização não causa um evento de incompatibilidade; em vez disso, apenas reescrevelibgnome-shell.so
de uma só vez) .No entanto, infelizmente, essa tarefa parece depender de uma quantidade significativa de conhecimento do desenvolvedor Gnome e/ou Ubuntu; a mera agilidade em torno dos editores de código não parece ser suficiente.
fonte
fonte
Compilar a totalidade do gnome-shell a partir da fonte não é um recurso pequeno. Na verdade, tem um impacto tão extenso, aparentemente com tantas coisas que podem dar errado, que eu pessoalmente sinto que coloca a razoabilidade da escolha em questão.
No entanto, se você puder compartilhar as etapas reais da compilação do gnome-shell no contexto do Ubuntu, envie uma resposta.
Referências / literatura:
Eu queria compartilhar uma abordagem alternativa que encontrei.
Eu não consegui fazê-lo funcionar bem, e isso faz com que o sistema se comporte ainda mais estranho.
Eu o compartilho apenas para aqueles que se sentem bem qualificados e experientes para tentar construir sobre ele, até que se torne uma alternativa realmente utilizável.
Enquanto isso, a resposta utilizável continua sendo minha outra resposta para este post.
Fontes para o seguinte método:
Essa abordagem extrai todos os arquivos javascript do gnome-shell — em vez de extrair apenas arquivos específicos para fins de alteração — e os organiza em um layout de diretório elaborado, de acordo com seu arranjo original definido no
libgnome-shell.so
binário.Script atualizado para o gnome-shell 3.36, que realmente roda no Ubuntu 20.04:
Tendo executado o script acima, os seguintes comandos podem habilitá-lo:
Essa linha pode ser executada em um terminal ou pode ser anexada ao final de
~/.profile
, como está.De acordo com minhas observações, quando colocadas em
~/.profile
, ambas as linhas, com ou sem a--replace
opção, parecem funcionar com um efeito semelhante.O resultado:
Isso resulta em um shell gnome padrão de fábrica,
Depois de remover a
GNOME_SHELL_JS
linha de~/.profile
, tive que reiniciar pelo terminal, emitindosudo reboot now
.Depois de retornar ao gnome-shell original instalado pelo Ubuntu padrão do sistema, descobri que todas as extensões ainda estavam desabilitadas; Eu tive que reativá-los um por um - pelo menos suas preferências ainda estavam armazenadas, elas não se perdiam.
Conclusão:
Posso imaginar que alguém poderia reintroduzir todas as personalizações e configurações específicas do Ubuntu em cima desta instância gnome-shell padrão de fábrica.
Se você sabe quais são os passos necessários para conseguir isso, por favor poste uma resposta.