La risposta alla mia domanda è:
- Launcher.cpp, unityshell.cpp, DashController.cpp e HudController.cpp per unità versione <7.4.0 e
- Launcher.cpp e UnitySettings.ccp per unity versione 7.4.0
dal pacchetto sorgente di unità.
Ma rispondo di più, dato che tutti quelli che cercano la risposta alla mia domanda saranno interessati a sapere cosa fare di quei file sorgente.
Contenuto:
A. Compila te stesso o
B. Ottieni il file binario
Disclaimer: non ho alcun indizio A TUTTO e questo è stato testato solo su 12.04 con unità 5.20.2, su 14.04 con unità 7.2.6, su 15.10 con unità 7.3.2 e su 16.04 con unità 7.4.0
A. Compilare Unity per non mostrare il programma di avvio
0. Per l'impazienza
Questo script dovrebbe funzionare almeno per 12.04, 14.04 e 15.10. Solo un commento alla fine, se necessario:
#!/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
Quindi riavvia l'unità e il gioco è fatto.
1. Cerca i file sorgente giusti
Dopo alcuni tentativi ed errori ho scoperto che i file di origine da modificare sono
- Launcher.cpp -> aggiungi una riga per non mostrare più il programma di avvio
- unityshell.cpp, DashController.cpp e HudController.cpp -> imposta la larghezza del launcher su zero
Tutti e quattro i file sono contenuti nel pacchetto sorgente "unità".
2. Ottieni le fonti
Ho dovuto installare manualmente il pacchetto xserver-xorg-video-dummy-lts- {la tua versione HWE} per soddisfare alcuni problemi di dipendenza prima di poter installare build-deps per unità:
sudo apt-get install xserver-xorg-video-dummy-lts-{put your HWE name here}
Puoi trovare il nome (versione) del tuo HWE con questo comando:
dpkg-query -l xserver*-lts-* | grep ^ii | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u
Dopo di che il resto ha funzionato:
sudo apt-get build-dep unity
apt-get source unity
cd unity-*
3. Inserisci una riga in Launcher.cpp
find . -iname launcher.cpp -exec gedit {} \;
Cerca la funzione "void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)" e inserisci "return;" proprio all'inizio del suo corpo in questo modo:
void Launcher::DrawContent(nux::GraphicsEngine& GfxContext, bool force_draw)
{
return; //dont show launcher anymore
...
Questo è sufficiente per non mostrare più il programma di avvio. Ma il trattino e l'hud lasceranno inutilizzati il posto per il launcher sul lato sinistro dello schermo.
4. Impostare la larghezza del launcher su zero in unityshell.cpp, DashController.cpp e HudController.cpp / UnitySettings.cpp
Per unità <7.4.0:
Utilizzare un editor per sostituire tutte le occorrenze di "launcher_width =" con "launcher_width = 0; //" in unityshell.cpp, DashController.cpp e HudController.cpp.
O semplicemente usa questo 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
Per unità 7.4.0:
Trova il file UnitySettings.cpp e sostituisci il valore restituito alla fine di LauncherSize in questo modo:
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];
}
Ciò è necessario solo se si desidera che il trattino venga mostrato nella parte sinistra dello schermo, senza alcun margine che sarebbe stato utilizzato dal programma di avvio.
5. Impostare la versione corretta nel log delle modifiche
Nel mio caso (12.04, unità 5.20.2) ho dovuto cambiare la versione della fonte di unità da 5.20 a 5.20.2 usando
EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2)
prima della compilazione per evitare di avere dipendenze interrotte durante l'installazione. Non dimenticare di salvare il file.
6. Compilare e installare
Quindi ho ricompilato usando questo:
dpkg-buildpackage -rfakeroot -d -us -uc -b
Installato il nuovo pacchetto:
sudo dpkg -i ../unity_*.deb
(Per quanto posso vedere e testarlo, l'unico file effettivamente necessario è
find . -name libunityshell.so | grep unity/usr/lib/compiz/libunityshell.so
Sostituire /usr/lib/compiz/libunityshell.so con quello nuovo dovrebbe essere sufficiente, ma se vuoi essere sicuro basta installare il nuovo pacchetto di unità come scritto sopra.)
7. Impostare il programma di avvio su Nascondi 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
Questo è tutto. Unità riavviata e il lanciatore è andato via!
B. Nel caso in cui preferisci affidarti e ottenere il binario
Se preferisci ottenere il binario e la tua combinazione di versione unity e architettura PC
unity --version
getconf LONG_BIT
puoi trovarlo qui sotto, basta scaricare il pacchetto giusto
32bit
64bit
e controlla il file deb dopo il download
md5sum unity_*.deb
Il risultato dovrebbe essere uno di questi
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
Quindi installare il pacchetto
sudo dpkg -i unity_*.deb
imposta il programma di avvio su Nascondi automaticamente e riavvia unità. Questo è tutto!
Se qualcosa va storto e l'unità non parte:
sudo apt-get install --reinstall unity
Ma se tutto funziona, potresti voler impedire l'aggiornamento del nuovo pacchetto:
echo "unity hold" | sudo dpkg --set-selections
Sul mio PC è stato compilato solo il file "unity_5.20.2_i386_nolauncher.deb". Gli altri file deb sono stati creati sui cosiddetti "computer cloud" (perché le sale macchine assomigliano molto alle nuvole ...) usando questa variante dello 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/')