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