Kompiluj Unity bez programu uruchamiającego

17

Chciałbym zmodyfikować jedność nie pokazać wyrzutnię (lewa strona), bar w ogóle . Nie szukam żadnego rozwiązania, które pozwoliłoby w niektórych przypadkach wyświetlić program uruchamiający. Naprawdę chcę, żeby to całkowicie zniknęło. Jest to prezent dla mojego narzeczonego i chcę osiągnąć najwyższy możliwy współczynnik akceptacji kobiety dla jej laptopa z systemem Linux, który jest wyposażony w dok z fantazyjnymi ikonami, które sprawiają, że wygląda jak ta znana i owocowa firma.

Wszelkie wskazówki dotyczące tego, które pakiety i jakie pliki źródłowe powinienem studiować?

Mam nadzieję, że będzie to tak proste, jak skomentowanie wiersza za pomocą „unity.launcher.show ()” i rekompilacja :-)

Dziękuję Ci!

JLTD
źródło
Czy naprawdę potrzebujesz jedności, jeśli nie, dystrybucje Ubuntu wyglądają bardzo podobnie do Jabłek, wystarczy jedynie odznaczyć: show-system plików, -home itp. W edytorze ustawień !! i jesteś gotowy!
Ken Mollerup,

Odpowiedzi:

20

Odpowiedź na moje pytanie brzmi:

  • Launcher.cpp, unityshell.cpp, DashController.cpp i HudController.cpp dla wersji jedności <7.4.0 i
  • Launcher.cpp i UnitySettings.ccp dla Unity w wersji 7.4.0

z pakietu źródłowego Unity.

Ale odpowiadam na więcej, ponieważ każdy, kto szuka odpowiedzi na moje pytanie, będzie również zainteresowany tym, co zrobić z tymi plikami źródłowymi.

Zawartość:
A. Skompiluj siebie lub
B. Pobierz plik binarny

Zastrzeżenie: W ogóle nie mam pojęcia i zostało to przetestowane tylko 12.04 z jednością 5.20.2, 14.04 z jednością 7.2.6, 15.10 z jednością 7.3.2 i 16.04 z jednością 7.4.0

A. Skompiluj Unity, aby nie wyświetlać programu uruchamiającego

wprowadź opis zdjęcia tutaj

0. Za niecierpliwość

Ten skrypt powinien działać przynajmniej dla 12.04, 14.04 i 15.10. Po prostu odkomentuj na końcu w razie potrzeby:

#!/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

Następnie uruchom ponownie jedność i gotowe.

1. Wyszukaj odpowiednie pliki źródłowe

Po kilku próbach i błędach dowiedziałem się, że pliki źródłowe do zmiany to

  • Launcher.cpp -> dodaj jedną linię, aby nie wyświetlać programu uruchamiającego
  • unityshell.cpp, DashController.cpp i HudController.cpp -> ustaw szerokość programu uruchamiającego na zero

Wszystkie cztery pliki są zawarte w pakiecie źródłowym „jedność”.

2. Uzyskaj źródła

Musiałem ręcznie zainstalować pakiet xserver-xorg-video-dummy-lts- {twoja wersja HWE}, aby rozwiązać niektóre problemy z zależnościami, zanim będę mógł zainstalować build-deps dla jedności:

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

Możesz znaleźć nazwę (wersję) swojego HWE za pomocą tego polecenia:

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

Następnie reszta działała:

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

3. Umieść jedną linię w Launcher.cpp

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

Poszukaj funkcji „void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)” i wstaw „return;” właśnie na początku swojego ciała zaczyna się tak:

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

To wystarczy, aby już nie wyświetlać programu uruchamiającego. Ale kreska i ekran nadal pozostawiają wolne miejsce dla wyrzutni po lewej stronie ekranu.

4. Ustaw szerokość programu uruchamiającego na zero w unityshell.cpp, DashController.cpp i HudController.cpp / UnitySettings.cpp

Dla jedności <7.4.0:

Za pomocą edytora zamień wszystkie wystąpienia „launcher_width =” na „launcher_width = 0; //” w unityshell.cpp, DashController.cpp i HudController.cpp.
Lub po prostu użyj tego polecenia

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

Dla jedności 7.4.0:

Znajdź plik UnitySettings.cpp i zamień wartość zwracaną na końcu Launchera w następujący sposób:

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];
}

Jest to potrzebne tylko wtedy, gdy chcesz, aby kreska była wyświetlana po lewej stronie ekranu, bez marginesu, który byłby używany przez program uruchamiający.

5. Ustaw odpowiednią wersję w dzienniku zmian

W moim przypadku (12.04, jedność 5.20.2) musiałem zmienić wersję źródła jedności z 5.20 na 5.20.2 za pomocą

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

przed kompilacją, aby uniknąć zerwania zależności podczas instalacji. Nie zapomnij zapisać pliku.

6. Skompiluj i zainstaluj

Następnie skompilowałem przy użyciu tego:

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

Zainstalowałem nowy pakiet:

sudo dpkg -i ../unity_*.deb

(O ile mogę to zobaczyć i przetestować, jedynym faktycznie potrzebnym plikiem jest

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

Zastąpienie /usr/lib/compiz/libunityshell.so tym nowym powinno wystarczyć, ale jeśli chcesz mieć pewność, zainstaluj nowy pakiet jedności, jak napisano powyżej.)

7. Ustaw program uruchamiający na automatyczne ukrywanie

# 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

Otóż ​​to. Ponownie uruchomiłem jedność i program uruchamiający zniknął!


B. W przypadku, gdy wolisz zaufać i po prostu zdobyć plik binarny

Jeśli wolisz pobrać plik binarny i kombinację wersji Unity i architektury PC

unity --version
getconf LONG_BIT

można znaleźć poniżej, wystarczy pobrać odpowiedni pakiet

32bit

64bit

i sprawdź plik deb po pobraniu

md5sum unity_*.deb

Wynik powinien być jednym z nich

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

Następnie zainstaluj pakiet

sudo dpkg -i unity_*.deb

ustaw program uruchamiający na automatyczne ukrywanie i zrestartuj jedność. Otóż ​​to!

W przypadku, gdy coś pójdzie nie tak i jedność się nie rozpocznie:

sudo apt-get install --reinstall unity

Ale jeśli wszystko działa, możesz uniemożliwić aktualizację nowego pakietu:

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


Tylko plik „unity_5.20.2_i386_nolauncher.deb” został skompilowany na moim komputerze. Inne pliki deb zostały utworzone na tak zwanych „komputerach w chmurze” (ponieważ maszynownie wyglądają tak jak chmury ...) przy użyciu tej odmiany skryptu:

#!/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
źródło
1
Cóż, możesz wspomnieć, że skompilowany plik .so jest 32-bitowy, więc każdy zainteresowany 64-bitowy użytkownik nie zostanie ugryziony przez niewłaściwy ELF
doug
1
Dobra robota JLTD, lubię widzieć, jak użytkownicy starają się odpowiedzieć na swoje własne pytania. Nagroda zapewni ci większy dostęp do strony. (Muszę czekać 24 godziny). BTW, czy mógłbyś rzucić okiem na to zaległe pytanie askubuntu.com/q/165888/26246 , potrzebuje on tylko HUDa i wierzę, że Unity można zbudować jako samodzielny (nie jako wtyczkę Compiz). Daj mi znać, jeśli masz jakiś pomysł,
zdobędę
@JLTD Ten plik zostanie usunięty z serwera. czy możesz przesłać go ponownie? Jestem nowicjuszem w Linuksie, więc trudno mi wybrać opcję A
burhanuddin abbas