Kompilasi Unity tanpa peluncur

17

Saya ingin memodifikasi kesatuan untuk tidak menampilkan peluncur (bilah sisi kiri) sama sekali . Saya tidak mencari solusi yang akan membuat peluncur dalam beberapa kasus terlihat. Saya benar-benar ingin itu sepenuhnya menghilang. Ini adalah hadiah untuk tunangan saya dan saya ingin mencapai Faktor Penerimaan Wanita setinggi mungkin untuk laptop linux-nya yang menjalankan dock dock dengan ikon mewah yang membuatnya terlihat seperti berasal dari perusahaan yang dikenal dan buah itu.

Adakah petunjuk tentang paket mana dan file sumber mana yang harus saya pelajari?

Saya berharap semudah mengomentari baris dengan "unity.launcher.show ()" dan mengkompilasi ulang :-)

Terima kasih!

JLTD
sumber
Apakah Anda benar-benar membutuhkan persatuan, jika tidak ada distro Ubuntu yang mirip sekali dengan Apel, Anda hanya perlu menghapus centang: show-filesystem, -home dll dari editor pengaturan !! dan kamu siap untuk pergi!
Ken Mollerup

Jawaban:

20

Jawaban untuk pertanyaan saya sendiri adalah:

  • Launcher.cpp, unityshell.cpp, DashController.cpp dan HudController.cpp untuk versi unity <7.4.0 dan
  • Launcher.cpp dan UnitySettings.ccp untuk unity versi 7.4.0

dari paket sumber kesatuan.

Tapi saya menjawab lebih dari itu karena semua orang mencari jawaban untuk pertanyaan saya juga akan tertarik mengetahui apa yang harus dilakukan dengan file sumber tersebut.

Isi:
A. Kompilasi diri Anda atau
B. Dapatkan biner

Penafian: Saya tidak memiliki petunjuk AT ALL dan ini hanya diuji pada 12,04 dengan unity 5.20.2, pada 14.04 dengan unity 7.2.6, on 15.10 dengan unity 7.3.2, dan pada 16.04 dengan unity 7.4.0

A. Kompilasi Unity untuk tidak menampilkan peluncur

masukkan deskripsi gambar di sini

0. Untuk ketidaksabaran

Skrip ini harus berfungsi setidaknya untuk 12,04, 14,04 dan 15,10. Hanya batalkan komentar di akhir sesuai kebutuhan:

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

Kemudian mulai kembali persatuan dan Anda selesai.

1. Cari file sumber yang tepat

Setelah beberapa percobaan dan kesalahan saya menemukan bahwa file sumber yang akan diubah adalah

  • Launcher.cpp -> tambahkan satu baris untuk tidak menampilkan peluncur lagi
  • unityshell.cpp, DashController.cpp dan HudController.cpp -> atur lebar peluncur ke nol

Keempat file tersebut terkandung dalam paket sumber "unity".

2. Dapatkan sumbernya

Saya harus menginstal paket xserver-xorg-video-dummy-lts- {versi HWE Anda} secara manual untuk memenuhi beberapa masalah ketergantungan sebelum dapat menginstal build-deps untuk kesatuan:

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

Anda dapat menemukan nama (versi) HWE Anda dengan perintah ini:

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

Setelah itu sisanya bekerja:

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

3. Letakkan satu baris di Launcher.cpp

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

Cari fungsi "void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)" dan beri "return;" tepat di badannya mulai seperti ini:

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

Ini cukup untuk tidak menampilkan peluncur lagi. Tapi dash dan hud akan tetap meninggalkan tempat untuk peluncur di sisi kiri layar yang tidak digunakan.

4. Atur lebar peluncur ke nol di unityshell.cpp, DashController.cpp dan HudController.cpp / UnitySettings.cpp

Untuk persatuan <7.4.0:

Gunakan editor untuk mengganti semua kemunculan "launcher_width =" dengan "launcher_width = 0; //" di unityshell.cpp, DashController.cpp dan HudController.cpp.
Atau cukup gunakan perintah ini

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

Untuk kesatuan 7.4.0:

Temukan file UnitySettings.cpp dan ganti nilai kembali di akhir LauncherSize seperti ini:

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

Ini diperlukan hanya jika Anda ingin tanda hubung ditampilkan tepat di sisi kiri layar, tanpa margin yang akan digunakan oleh peluncur.

5. Atur versi yang tepat di changelog

Dalam kasus saya (12.04, unity 5.20.2) saya harus mengubah versi sumber unity dari 5.20 menjadi 5.20.2 menggunakan

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

sebelum kompilasi untuk menghindari ketergantungan yang rusak saat menginstal. Jangan lupa untuk menyimpan file.

6. Kompilasi dan instal

Lalu saya kompilasi ulang menggunakan ini:

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

Menginstal paket baru:

sudo dpkg -i ../unity_*.deb

(Sejauh yang saya bisa lihat dan mengujinya, satu-satunya file yang benar-benar dibutuhkan adalah

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

Mengganti /usr/lib/compiz/libunityshell.so dengan yang baru seharusnya sudah cukup, tetapi jika Anda ingin memastikan cukup instal paket unity baru seperti yang ditulis di atas.)

7. Atur peluncur ke 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

Itu dia. Persatuan dimulai kembali dan peluncur pergi!


B. Jika Anda lebih suka percaya dan hanya mendapatkan biner

Jika Anda lebih suka mendapatkan biner dan kombinasi versi unity dan arsitektur PC Anda

unity --version
getconf LONG_BIT

dapat ditemukan di bawah, cukup unduh paket yang tepat

32 bit

64bit

dan periksa file deb setelah diunduh

md5sum unity_*.deb

Hasilnya harus salah satunya

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

Kemudian instal paket

sudo dpkg -i unity_*.deb

atur peluncur ke sembunyikan otomatis dan mulai kembali kesatuan. Itu dia!

Jika terjadi kesalahan dan persatuan tidak dimulai:

sudo apt-get install --reinstall unity

Tetapi jika semuanya berfungsi, Anda mungkin ingin mencegah paket baru diperbarui:

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


Hanya file "unity_5.20.2_i386_nolauncher.deb" yang dikompilasi di PC saya. File deb lainnya dibuat pada apa yang disebut "komputer awan" (karena ruang mesin sangat mirip awan ...) menggunakan variasi skrip ini:

#!/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
sumber
1
Anda mungkin ingin menyebutkan bahwa kompilasi .so Anda adalah 32 bit sehingga pengguna 64 bit yang tertarik tidak digigit oleh ELF yang salah
doug
1
JLTD kerja bagus, saya suka melihat pengguna berupaya menjawab pertanyaan mereka sendiri. Karunia akan memberi Anda lebih banyak akses di situs. (Saya harus menunggu 24 jam). BTW, dapatkah Anda melihat pertanyaan luar biasa ini askubuntu.com/q/165888/26246 , itu hanya membutuhkan HUD, dan saya percaya Unity dapat dibangun sebagai mandiri (bukan sebagai plugin compiz). Beri tahu saya jika Anda punya ide, saya akan mengumpulkan hadiah, tidak kurang dari 250 :)
user.dz
@ JLTD File ini dihapus dari server. bisa tolong unggah lagi Saya orang baru di linux sehingga semakin sulit bagi saya untuk memilih opsi A
burhanuddin abbas