Biên dịch Unity mà không cần launcher


17

Tôi muốn sửa đổi thống nhất để không hiển thị trình khởi chạy (thanh bên trái) ở tất cả . Tôi không tìm kiếm bất kỳ giải pháp nào có thể cho phép trình khởi chạy trong một số trường hợp hiển thị. Tôi thực sự muốn nó biến mất hoàn toàn. Đó là một món quà cho vị hôn phu của tôi và tôi muốn đạt được Yếu tố chấp nhận phụ nữ cao nhất có thể cho máy tính xách tay linux của cô ấy đang chạy một dock dock với các biểu tượng lạ mắt trông giống như từ công ty nổi tiếng và trái cây đó.

Bất kỳ gợi ý về gói nào và tập tin nguồn nào tôi nên nghiên cứu?

Tôi hy vọng nó sẽ dễ dàng như bình luận dòng "unity.launcher.show ()" và biên dịch lại :-)

Cảm ơn bạn!


Bạn có thực sự cần sự thống nhất không, nếu không có các bản phân phối Ubuntu trông rất giống Táo, bạn chỉ cần bỏ chọn: show-filesystem, -home, v.v. từ trình chỉnh sửa cài đặt !! và bạn đã sẵn sàng để đi!
Ken Mollerup

Câu trả lời:


20

Câu trả lời cho câu hỏi của riêng tôi là:

  • Launcher.cpp, unityshell.cpp, DashControll.cpp và HudControll.cpp cho phiên bản thống nhất <7.4.0 và
  • Launcher.cpp và UnitySinstall.ccp cho phiên bản thống nhất 7.4.0

từ gói nguồn thống nhất.

Nhưng tôi đang trả lời nhiều hơn thế vì mọi người đang tìm câu trả lời cho câu hỏi của tôi cũng sẽ quan tâm đến việc biết phải làm gì với các tệp nguồn đó.

Nội dung:
A. Tự biên dịch hoặc
B. Nhận nhị phân

Tuyên bố miễn trừ trách nhiệm: Tôi không có đầu mối AT ALL và điều này chỉ được thử nghiệm vào ngày 12.04 với sự thống nhất 5.20.2, ngày 14.04 với sự thống nhất 7.2.6, ngày 15.10 với sự thống nhất 7.3.2 và ngày 16.04 với sự thống nhất 7.4.0

A. Biên dịch Unity để không hiển thị trình khởi chạy

nhập mô tả hình ảnh ở đây

0. Đối với sự thiếu kiên nhẫn

Kịch bản này phải hoạt động ít nhất cho 12.04, 14.04 và 15.10. Chỉ cần bỏ sót ở cuối khi cần thiết:

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

Sau đó khởi động lại sự thống nhất và bạn đã hoàn tất.

1. Tìm kiếm các tập tin nguồn đúng

Sau một số thử nghiệm và lỗi tôi phát hiện ra rằng các tệp nguồn cần thay đổi là

  • Launcher.cpp -> thêm một dòng để không hiển thị trình khởi chạy nữa
  • unityshell.cpp, DashControll.cpp và HudControll.cpp -> đặt chiều rộng của trình khởi chạy về 0

Tất cả bốn tệp được chứa trong gói "unity".

2. Lấy nguồn

Tôi đã phải cài đặt gói xserver-xorg-video-dummy-lts- {phiên bản HWE của bạn} để thực hiện một số vấn đề phụ thuộc trước khi có thể cài đặt bản dựng cho sự thống nhất:

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

Bạn có thể tìm thấy tên (phiên bản) của HWE của mình bằng lệnh này:

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

Sau đó, phần còn lại làm việc:

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

3. Đặt một dòng trong Launcher.cpp

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

Tìm hàm "void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)" và đặt "return;" ngay lúc cơ thể nó bắt đầu như thế này:

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

Điều này là đủ để không hiển thị launcher nữa. Nhưng dấu gạch ngang và hud sẽ rời khỏi vị trí cho trình khởi chạy ở phía bên trái của màn hình không được sử dụng.

4. Đặt chiều rộng của trình khởi chạy về 0 trong unityshell.cpp, DashControll.cpp và HudControll.cpp / UnitySinstall.cpp

Để thống nhất <7.4.0:

Sử dụng trình chỉnh sửa để thay thế tất cả các lần xuất hiện của "launcher_ rắc =" bằng "launcher_ rắc = 0; //" trong unityshell.cpp, DashControll.cpp và HudContoder.cpp.
Hoặc chỉ sử dụng lệnh này

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

Đối với sự thống nhất 7.4.0:

Tìm tệp UnitySinstall.cpp và thay thế giá trị trả về ở cuối LauncherSize như thế này:

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

Điều này chỉ cần thiết nếu bạn muốn dấu gạch ngang được hiển thị ở bên trái màn hình, mà không có bất kỳ lề nào được sử dụng bởi trình khởi chạy.

5. Đặt phiên bản phù hợp trong danh sách thay đổi

Trong trường hợp của tôi (12.04, thống nhất 5.20.2) tôi đã phải thay đổi phiên bản của nguồn thống nhất từ ​​5.20 thành 5.20.2 bằng cách sử dụng

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

trước khi biên dịch để tránh bị hỏng phụ thuộc khi cài đặt. Đừng quên lưu tập tin.

6. Biên dịch và cài đặt

Sau đó, tôi biên dịch lại bằng cách sử dụng này:

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

Đã cài đặt gói mới:

sudo dpkg -i ../unity_*.deb

(Theo như tôi có thể thấy và kiểm tra nó, tập tin duy nhất thực sự cần là

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

Thay thế /usr/lib/compiz/libunityshell.so bằng cái mới đó là đủ, nhưng nếu bạn muốn chắc chắn chỉ cần cài đặt gói thống nhất mới như đã viết ở trên.)

7. Đặt launcher thành 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

Đó là nó. Khởi động lại sự thống nhất và các launcher đã biến mất!


B. Trong trường hợp bạn muốn tin tưởng và chỉ nhận được nhị phân

Nếu bạn muốn có được bản nhị phân và sự kết hợp giữa phiên bản thống nhất và kiến ​​trúc PC

unity --version
getconf LONG_BIT

có thể được tìm thấy dưới đây, chỉ cần tải về đúng gói

32 bit

64 bit

và kiểm tra tệp deb sau khi tải xuống

md5sum unity_*.deb

Kết quả phải là một trong những

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

Sau đó cài đặt gói

sudo dpkg -i unity_*.deb

đặt trình khởi chạy để tự động ẩn và khởi động lại sự thống nhất. Đó là nó!

Trong trường hợp có điều gì đó không ổn và sự thống nhất không bắt đầu:

sudo apt-get install --reinstall unity

Nhưng nếu mọi thứ hoạt động, bạn có thể muốn ngăn gói mới được cập nhật:

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


Chỉ tệp "unity_5.20.2_i386_nolauncher.deb" được biên dịch trên PC của tôi. Các tệp deb khác được tạo trên cái gọi là "máy tính đám mây" (vì các phòng máy trông rất giống đám mây ...) sử dụng biến thể của tập lệnh này:

#!/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
Vâng, bạn có thể muốn đề cập rằng .so đã biên dịch của bạn là 32 bit, vì vậy bất kỳ người dùng 64 bit nào quan tâm không bị cắn sai ELF
doug

1
JLTD hoạt động tốt, tôi muốn thấy người dùng nỗ lực để trả lời câu hỏi của riêng họ. Tiền thưởng sẽ cung cấp cho bạn nhiều quyền truy cập hơn trong trang web. (Tôi phải đợi 24h). BTW, bạn có thể làm cho một cái nhìn về câu hỏi này nổi bật askubuntu.com/q/165888/26246 , nó chỉ cần HUD, và tôi tin rằng Unity có thể được xây dựng như độc lập (không phải là plugin của compiz). Hãy cho tôi biết nếu bạn có bất kỳ ý tưởng nào, tôi sẽ tăng tiền thưởng, không dưới 250 :)
user.dz

@JLTD Tập tin này bị xóa khỏi máy chủ. bạn có thể vui lòng tải nó lên một lần nữa Tôi là người mới sử dụng linux nên tôi gặp khó khăn khi chọn tùy chọn A
burhanuddin abbas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.