Compile Unity sem lançador

17

Gostaria de modificar a unidade para não mostrar o lançador (barra do lado esquerdo) em tudo . Não estou procurando nenhuma solução que permita que o iniciador seja visível em alguns casos. Eu realmente quero que desapareça completamente. É um presente para o meu noivo e eu quero alcançar o fator de aceitação da mulher mais alto possível para seu laptop linux, que está executando um dock dock com ícones sofisticados que fazem com que pareça pertencer a essa empresa 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!

JLTD
fonte
Você realmente precisa de unidade, se não houver distribuições do Ubuntu parecidas com as da Apple, você só precisa desmarcar: show-filesystem, -home etc. no editor de configurações !! e você está pronto para ir!
precisa saber é o seguinte

Respostas:

20

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

insira a descrição da imagem aqui

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/')
JLTD
fonte
1
Bem, você pode mencionar que seu .so compilado é de 32 bits, para que qualquer usuário de 64 bits interessado não seja mordido por um ELF errado
doug
1
Bom trabalho JLTD, eu gosto de ver os usuários se esforçando para responder à sua própria pergunta. A recompensa lhe dará mais acesso ao site. (Tenho que esperar 24h). BTW, você poderia dar uma olhada nessa questão pendente askubuntu.com/q/165888/26246 , ela precisa apenas do HUD, e acredito que o Unity possa ser construído como autônomo (não como um plugin compiz). Deixe-me saber se você tem alguma idéia, eu vou levantar uma recompensa, não inferior a 250 :)
user.dz
@JLTD Este arquivo é excluído do servidor. você pode enviá-lo novamente. Eu sou a pessoa novato em linux assim que seu ficando difícil para mim escolher a opção A
Burhanuddin abbas