Compila Unity senza launcher


17

Vorrei modificare l'unità di non mostrare il lanciatore (barra laterale a sinistra) a tutti . Non sto cercando alcuna soluzione che possa rendere visibile il launcher in alcuni casi. Voglio davvero che scompaia completamente. È un regalo per il mio fidanzato e voglio raggiungere il massimo fattore di accettazione della donna per il suo laptop linux che esegue un dock dock con icone fantasiose che lo fanno sembrare di quella compagnia conosciuta e fruttata.

Qualche suggerimento su quali pacchetti e quali file sorgente dovrei studiare?

Spero che sia facile come commentare la riga con "unity.launcher.show ()" e ricompilare :-)

Grazie!


Hai davvero bisogno di unità, se non ci sono distro Ubuntu che assomigliano molto a Mele, devi solo deselezionare: show-filesystem, -home ecc. Dall'editor delle impostazioni !! e sei pronto per partire!
Ken Mollerup,

Risposte:


20

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

inserisci qui la descrizione dell'immagine

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/')

1
Bene potresti voler menzionare che il tuo .so compilato è a 32 bit, quindi tutti gli utenti a 64 bit interessati non sono morsi da ELF sbagliato
doug

1
Bel lavoro JLTD, mi piace vedere gli utenti che si sforzano di rispondere alla propria domanda. La taglia ti darà più accesso al sito. (Devo aspettare 24 ore). A proposito, potresti dare un'occhiata a questa eccezionale domanda askubuntu.com/q/165888/26246 , ha bisogno solo dell'HUD e credo che Unity potrebbe essere costruito come autonomo (non come plugin compiz). Fammi sapere se hai qualche idea, farò una taglia, non meno di 250 :)
user.dz

@JLTD Questo file viene eliminato dal server. puoi caricarlo di nuovo? Sono una persona alle
prime armi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.