Compile Unity sem o launcher

16

Gostaria de modificar a unidade para não mostrar o iniciador (barra lateral esquerda) em tudo . Eu não estou procurando por qualquer solução que permita que o lançador seja visível em alguns casos. Eu realmente quero que isso desapareça completamente. É um presente para o meu noivo e eu quero alcançar o mais alto possível Fator de Aceitação de Mulher para seu laptop linux que está executando um dock dock com ícones sofisticados que fazem com que pareça ser daquela companhia conhecida e frutada.

Alguma dica sobre quais pacotes e quais arquivos de origem devo estudar?

Espero que seja tão fácil quanto comentar a linha com "unity.launcher.show ()" e recompilar: -)

Obrigado!

    
por JLTD 11.01.2016 / 17:29

1 resposta

19

A resposta para minha própria pergunta é:

  • Launcher.cpp, unityshell.cpp, DashController.cpp e HudController.cpp para versão de unidade & lt; 7.4.0 e
  • Launcher.cpp e UnitySettings.ccp para a unidade versão 7.4.0

do pacote de origem da unidade.

Mas estou respondendo mais do que isso, já que todos que procuram a resposta à minha pergunta também estarão interessados em saber o que fazer com esses arquivos de origem.

Conteúdo:
A. Compile você mesmo ou B. Obtenha o binário

. 0

Compile o Unity para não mostrar o inicializador

0. Pela impaciência

Este script deve funcionar pelo menos para 12.04, 14.04 e 15.10. Apenas descomente no final, conforme necessário:

#!/bin/bash
mkdir temp-build-dir; cd temp-build-dir
export HWE=$(dpkg-query -l xserver*-lts-* | grep ^ii  | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u)
sudo apt-get install unity xserver-xorg-video-dummy-lts-$HWE
sudo apt-get build-dep unity
sudo apt-get install apt-show-versions devscripts dpkg-dev fakeroot nano
apt-get source unity
cd unity-*
# you can leave the comment field in the changelog empty but dont forget to save the file
EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2) 
find . -iname Launcher.cpp -exec sed -i -e '1,/void Launcher::DrawContent(nux::GraphicsEngine/b' -e '0,/{/s//{\nreturn;/' {} \;
# for unity 7.4.0 comment out this for statement and read the explanation Nr. A.4
for i in unityshell.cpp DashController.cpp HudController.cpp; do  
    find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; 
done
dpkg-buildpackage -rfakeroot -d -us -uc -b
sudo dpkg -i ../unity_*.deb
# For 12.04 use:
# gconftool --type Integer --set /apps/compiz-1/plugins/unityshell/screen0/options/launcher_hide_mode 1
# For 14.04 use:
# dconf write "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode" 1

Em seguida, reinicie a unidade e pronto.

1. Procure os arquivos de origem corretos

Após algumas tentativas e erros, descobri que os arquivos de origem a serem alterados são

  • Launcher.cpp - & gt; adicione uma linha para não mostrar mais o lançador
  • unityshell.cpp, DashController.cpp e HudController.cpp - & gt; definir a largura do lançador para zero

Todos os quatro arquivos estão contidos no pacote de origem "unity".

2. Obtenha as fontes

Eu tive que instalar o pacote xserver-xorg-video-dummy-lts-{sua versão HWE} manualmente para preencher alguns problemas de dependência antes de poder instalar o build-deps para unidade:

sudo apt-get install xserver-xorg-video-dummy-lts-{put your HWE name here}

Você pode encontrar o nome (versão) do seu HWE com este comando:

dpkg-query -l xserver*-lts-* | grep ^ii  | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u

Depois disso, o resto funcionou:

sudo apt-get build-dep unity
apt-get source unity
cd unity-*

3. Coloque uma linha no Launcher.cpp

find . -iname launcher.cpp -exec gedit {} \;

Procure a função "void Launcher :: DrawContent (nux :: GraphicsEngine & amp; GfxContext, bool force_draw)" e coloque um "return"; apenas no começo do seu corpo assim:

void Launcher::DrawContent(nux::GraphicsEngine& GfxContext, bool force_draw)
{
  return; //dont show launcher anymore
  ...

Isso é suficiente para não mostrar mais o lançador. Mas o painel e o hud ainda deixarão o local para o lançador no lado esquerdo da tela sem uso.

4. Defina a largura do lançador para zero em unityshell.cpp, DashController.cpp e HudController.cpp / UnitySettings.cpp

Por unidade & lt; 7.4.0:

Use um editor para substituir todas as ocorrências de "launcher_width=" com "launcher_width = 0; //" em unityshell.cpp, DashController.cpp e HudController.cpp.
Ou apenas use este comando

for i in unityshell.cpp DashController.cpp HudController.cpp; do find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; ; done

Para a unidade 7.4.0:

Encontre o arquivo UnitySettings.cpp e substitua o valor de retorno no final do LauncherSize assim:

int Settings::LauncherSize(int monitor) const
{
  if (monitor < 0 || monitor >= (int)monitors::MAX)
  {
    LOG_ERROR(logger) << "Invalid monitor index: " << monitor << ". Returning 0.";
    return 0;
  }

  return 0; // pimpl->launcher_sizes_[monitor];
}

Isso é necessário apenas se você quiser que o traço seja exibido à direita da tela, sem qualquer margem que tenha sido usada pelo inicializador.

5. Defina a versão correta no changelog

No meu caso (12.04, unidade 5.20.2) eu tive que mudar a versão da fonte da unidade de 5.20 para 5.20.2 usando

EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2) 

antes de compilar para evitar ter dependências quebradas durante a instalação. Não esqueça de salvar o arquivo.

6. Compile e instale

Então eu recompilado usando isso:

dpkg-buildpackage -rfakeroot -d -us -uc -b

Instalado o novo pacote:

sudo dpkg -i ../unity_*.deb

(Até onde eu posso ver e testar, o único arquivo realmente necessário é

find . -name libunityshell.so | grep unity/usr/lib/compiz/libunityshell.so

Substituir /usr/lib/compiz/libunityshell.so por esse novo deve ser o suficiente, mas se você quiser ter certeza, basta instalar o novo pacote unit como descrito acima.

7. Definir o lançador para ocultar automaticamente

# For 12.04:
gconftool --type Integer --set /apps/compiz-1/plugins/unityshell/screen0/options/launcher_hide_mode 1
# For 14.04:
dconf write "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode" 1

É isso. Reiniciou a unidade e o lançador foi embora!


B. Caso você prefira confiar e apenas obter o binário

Se você preferir obter o binário e sua combinação de versão de unidade e arquitetura de PC

unity --version
getconf LONG_BIT

pode ser encontrado abaixo, basta baixar o pacote certo

32 bits

64 bits

e verifique o arquivo deb após o download

md5sum unity_*.deb

O resultado deve ser um desses

0a5f7fc9255262e5803656d83f84f7c5  unity_5.20.0-0ubuntu3_amd64_nolauncher.deb
717dc41f4cad6410c997e1014f5f3f1d  unity_5.20.0-0ubuntu3_i386_nolauncher.deb
594eb8b87f8a56697865c051c4db5073  unity_5.20.2_i386_nolauncher.deb
8ed070afa4d7d6da8222d03b8ad5ebf3  unity_7.2.6+14.04.20160408-0ubuntu1_amd64_nolauncher.deb
abd32e40e8a10bd603b9fc44014cb179  unity_7.2.6+14.04.20151021-0ubuntu1_i386_nolauncher.deb
43c56b889028bf368da01780c0a099b9  unity_7.3.2+15.10.20151016-0ubuntu1_amd64_nolauncher.deb
64474d1a8280ed4113d748a57422ddcc  unity_7.3.2+15.10.20151016-0ubuntu1_i386_nolauncher.deb
4fecdb9b4f590e00609baa3b98f55cc0  unity_7.4.0+16.04.20160715-0ubuntu1_amd64_nolauncher.deb

Em seguida, instale o pacote

sudo dpkg -i unity_*.deb

defina o iniciador para ocultar automaticamente e reiniciar a unidade. É isso aí!

No caso de algo dar errado e a unidade não começar:

sudo apt-get install --reinstall unity

Mas, se tudo funcionar, talvez você queira impedir que o novo pacote seja atualizado:

echo "unity hold" | sudo dpkg --set-selections


Apenas o arquivo "unity_5.20.2_i386_nolauncher.deb" foi compilado no meu PC. Os outros arquivos deb foram feitos nos chamados "computadores em nuvem" (porque as salas de máquinas se parecem muito com as nuvens ...) usando essa variação do script:

#!/bin/bash
sudo apt-get update
sudo apt-get -y dist-upgrade 
sudo apt-get -y build-dep unity
sudo apt-get -y install unity devscripts dpkg-dev fakeroot nano
mkdir temp-build-dir; cd temp-build-dir
rm -r unity-*
apt-get source unity
cd unity-*
find . -iname Launcher.cpp -exec sed -i -e '1,/void Launcher::DrawContent(nux::GraphicsEngine/b' -e '0,/{/s//{\nreturn;/' {} \;
# for unity 7.4.0 comment out this for statement and read the explanation Nr. A.4
for i in unityshell.cpp DashController.cpp HudController.cpp; do  
    find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; 
done
dpkg-buildpackage -rfakeroot -d -us -uc -j2 -b
cp ../unity_*.deb ../$(echo ../unity_*.deb | sed -e  's/.deb$/_nolauncher.deb/')
    
por JLTD 18.01.2016 / 22:47