A resposta para minha própria pergunta é:
- Launcher.cpp, unityshell.cpp, DashController.cpp e HudController.cpp para a versão de unidade <7.4.0 e
- Launcher.cpp e UnitySettings.ccp para a versão 7.4.0 do unity
do pacote de origem da unidade.
Mas estou respondendo mais do que isso, já que todos que procuram a resposta para 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
Isenção de responsabilidade: Eu não tenho idéia de nada e isso foi testado apenas no 12.04 com unidade 5.20.2, no 14.04 com unidade 7.2.6, no 15.10 com unidade 7.3.2 e no 16.04 com unidade 7.4.0
A. Compile o Unity para não mostrar o iniciador
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
Então reinicie a unidade e pronto.
1. Procure os arquivos de origem certos
Após algumas tentativas e erros, descobri que os arquivos de origem a serem alterados são
- Launcher.cpp -> adicione uma linha para não mostrar mais o iniciador
- unityshell.cpp, DashController.cpp e HudController.cpp -> defina a largura do iniciador como zero
Todos os quatro arquivos estão contidos no pacote de origem "unidade".
2. Obtenha as fontes
Eu tive que instalar o pacote xserver-xorg-video-dummy-lts- {sua versão do HWE} manualmente para solucionar alguns problemas de dependência antes de poder instalar os build-deps para a 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 & GfxContext, bool force_draw)" e coloque um "return;" apenas no começo de 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 iniciador. Mas o traço e o hud ainda deixarão o local para o lançador no lado esquerdo da tela sem uso.
4. Defina a largura do iniciador como zero em unityshell.cpp, DashController.cpp e HudController.cpp / UnitySettings.cpp
Para unidade <7.4.0:
Use um editor para substituir todas as ocorrências de "launcher_width =" por "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:
Localize o arquivo UnitySettings.cpp e substitua o valor de retorno no final do LauncherSize da seguinte maneira:
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 mostrado à direita no lado esquerdo da tela, sem nenhuma margem que teria sido usada pelo iniciador.
5. Defina a versão correta no changelog
No meu caso (12.04, unidade 5.20.2), tive que alterar a versão da fonte de 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 falhas nas dependências durante a instalação. Não esqueça de salvar o arquivo.
6. Compile e instale
Então recompilei usando isso:
dpkg-buildpackage -rfakeroot -d -us -uc -b
Instalou o novo pacote:
sudo dpkg -i ../unity_*.deb
(Até onde eu posso ver e testá-lo, 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 suficiente, mas se você quiser ter certeza, instale o novo pacote unity conforme descrito acima.)
7. Defina o iniciador 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 aí. Unidade reiniciada 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 unity e arquitetura de PC
unity --version
getconf LONG_BIT
pode ser encontrado abaixo, basta baixar o pacote certo
32bit
64bit
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
Então instale o pacote
sudo dpkg -i unity_*.deb
defina o iniciador para ocultar automaticamente e reiniciar a unidade. É isso aí!
Caso algo dê errado e a unidade não comece:
sudo apt-get install --reinstall unity
Mas se tudo funcionar, convém impedir que o novo pacote seja atualizado:
echo "unity hold" | sudo dpkg --set-selections
Somente o arquivo "unity_5.20.2_i386_nolauncher.deb" foi compilado no meu PC. Os outros arquivos deb foram criados nos chamados "computadores em nuvem" (porque as salas de máquinas se parecem muito com nuvens ...) usando esta 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/')