Kompiliere Unity ohne Launcher

17

Ich möchte die Einheit so ändern, dass der Launcher (linke Seitenleiste) überhaupt nicht angezeigt wird . Ich suche keine Lösung, mit der der Launcher in einigen Fällen sichtbar wäre. Ich möchte wirklich, dass es komplett verschwindet. Es ist ein Geschenk für meinen Verlobten und ich möchte den höchstmöglichen Akzeptanzfaktor für Frauen für ihren Linux-Laptop erreichen, der ein Dock mit ausgefallenen Symbolen betreibt, die den Eindruck erwecken, von diesem bekannten und fruchtbaren Unternehmen zu stammen.

Irgendwelche Hinweise, welche Pakete und welche Quelldateien ich studieren sollte?

Ich hoffe, es ist so einfach wie das Auskommentieren der Zeile mit "unity.launcher.show ()" und das Neukompilieren :-)

Vielen Dank!

JLTD
quelle
Brauchen Sie wirklich Unity, wenn es keine Ubuntu-Distributionen gibt, die sehr nach Apples aussehen, müssen Sie nur das Häkchen entfernen: show-filesystem, -home etc. aus dem Einstellungseditor !! und du bist bereit zu gehen!
Ken Mollerup

Antworten:

20

Die Antwort auf meine Frage lautet:

  • Launcher.cpp, unityshell.cpp, DashController.cpp und HudController.cpp für Unity Version <7.4.0 und
  • Launcher.cpp und UnitySettings.ccp für Unity Version 7.4.0

aus dem Unity-Quellpaket.

Aber ich beantworte mehr als das, da jeder, der nach der Antwort auf meine Frage sucht, auch interessiert sein wird, was mit diesen Quelldateien zu tun ist.

Inhalt:
A. Kompilieren Sie sich selbst oder
B. Holen Sie sich die Binärdatei

Haftungsausschluss: Ich habe überhaupt keine Ahnung und dies wurde nur am 12.04 mit der Einheit 5.20.2, am 14.04 mit der Einheit 7.2.6, am 15.10 mit der Einheit 7.3.2 und am 16.04 mit der Einheit 7.4.0 getestet

A. Kompilieren Sie Unity, um den Launcher nicht anzuzeigen

Bildbeschreibung hier eingeben

0. Für die Ungeduld

Dieses Skript sollte mindestens für 12.04, 14.04 und 15.10 funktionieren. Einfach nach Bedarf am Ende auskommentieren:

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

Starten Sie dann Unity neu und Sie sind fertig.

1. Suchen Sie nach den richtigen Quelldateien

Nach einigem Ausprobieren habe ich herausgefunden, dass die Quelldateien geändert werden müssen

  • Launcher.cpp -> füge eine Zeile hinzu, um den Launcher nicht mehr anzuzeigen
  • unityshell.cpp, DashController.cpp und HudController.cpp -> setzen Sie die Breite des Launchers auf Null

Alle vier Dateien sind im Quellpaket "unity" enthalten.

2. Holen Sie sich die Quellen

Ich musste das Paket xserver-xorg-video-dummy-lts- {Ihre HWE-Version} manuell installieren, um einige Abhängigkeitsprobleme zu lösen, bevor ich die Build-Deps für Unity installieren konnte:

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

Sie können den Namen (die Version) Ihres HWE mit diesem Befehl finden:

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

Danach funktionierte der Rest:

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

3. Fügen Sie eine Zeile in Launcher.cpp ein

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

Suchen Sie nach der Funktion "void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)" und geben Sie "return;" gerade an seinem Körper beginnt so:

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

Dies reicht aus, um den Launcher nicht mehr anzuzeigen. Aber der Bindestrich und das Geräusch lassen den Platz für den Starter auf der linken Seite des Bildschirms ungenutzt.

4. Setzen Sie die Launcher-Breite in unityshell.cpp, DashController.cpp und HudController.cpp / UnitySettings.cpp auf Null

Für die Einheit <7.4.0:

Verwenden Sie einen Editor, um alle Vorkommen von "launcher_width =" durch "launcher_width = 0; //" in unityshell.cpp, DashController.cpp und HudController.cpp zu ersetzen.
Oder verwenden Sie einfach diesen Befehl

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

Für die Einheit 7.4.0:

Suchen Sie die Datei UnitySettings.cpp und ersetzen Sie den Rückgabewert am Ende von LauncherSize wie folgt:

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

Dies ist nur erforderlich, wenn der Bindestrich direkt links auf dem Bildschirm angezeigt werden soll, ohne dass der Launcher einen Rand verwendet hätte.

5. Stellen Sie im Changelog die richtige Version ein

In meinem Fall (12.04, Unity 5.20.2) musste ich die Version der Unity-Quelle von 5.20 auf 5.20.2 ändern

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

vor dem Kompilieren, um beschädigte Abhängigkeiten bei der Installation zu vermeiden. Vergessen Sie nicht, die Datei zu speichern.

6. Kompilieren und installieren

Dann habe ich dies neu kompiliert:

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

Installierte das neue Paket:

sudo dpkg -i ../unity_*.deb

(Soweit ich es sehen und testen kann, wird nur die Datei benötigt

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

Das Ersetzen von /usr/lib/compiz/libunityshell.so durch dieses neue sollte ausreichen, aber wenn Sie sicher sein möchten, installieren Sie einfach das neue Unity-Paket wie oben beschrieben.)

7. Stellen Sie den Launcher auf Autohide

# 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

Das ist es. Einheit neu gestartet und der Launcher ging weg!


B. Falls Sie lieber vertrauen und nur die Binärdatei erhalten möchten

Wenn Sie es vorziehen, die Binärdatei und Ihre Kombination aus Unity-Version und PC-Architektur zu erhalten

unity --version
getconf LONG_BIT

finden Sie unten, laden Sie einfach das richtige Paket herunter

32bit

64bit

und überprüfen Sie die Deb-Datei nach dem Download

md5sum unity_*.deb

Das Ergebnis sollte eines davon sein

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

Dann installieren Sie das Paket

sudo dpkg -i unity_*.deb

Stellen Sie den Launcher so ein, dass Unity automatisch ausgeblendet und neu gestartet wird. Das ist es!

Falls etwas schief geht und die Einheit nicht beginnt:

sudo apt-get install --reinstall unity

Wenn alles funktioniert, möchten Sie möglicherweise verhindern, dass das neue Paket aktualisiert wird:

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


Auf meinem PC wurde nur die Datei "unity_5.20.2_i386_nolauncher.deb" übersetzt. Die anderen Deb-Dateien wurden auf sogenannten "Cloud-Computern" (weil Maschinenräume so stark wie Wolken aussehen ...) mit dieser Variation des Skripts erstellt:

#!/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
quelle
1
Nun, Sie möchten vielleicht erwähnen, dass Ihre kompilierte .so 32-Bit-Datei ist, damit interessierte 64-Bit-Benutzer nicht von einer falschen ELF gebissen werden
Doug
1
Gute Arbeit JLTD, ich mag es, wenn Benutzer sich bemühen, ihre eigene Frage zu beantworten. Die Prämie gibt Ihnen mehr Zugang in der Site. (Ich muss 24h warten). Übrigens, können Sie sich diese offene Frage ansehen? Askubuntu.com/q/165888/26246 , es wird nur das HUD benötigt, und ich glaube, Unity kann als eigenständiges Plugin (nicht als Compiz-Plugin) erstellt werden. Lassen Sie mich wissen, wenn Sie eine Idee haben, ich werde ein Kopfgeld erheben, nicht weniger als 250 :)
user.dz
@JLTD Diese Datei wird vom Server gelöscht. kannst du es bitte nochmal hochladen. Ich bin Neuling unter Linux, daher
fällt es