คำตอบสำหรับคำถามของฉันคือ:
- Launcher.cpp, unityshell.cpp, DashController.cpp และ HudController.cpp สำหรับรุ่น Unity <7.4.0 และ
- Launcher.cpp และ UnitySettings.ccp สำหรับรุ่นสามัคคี 7.4.0
จากแพ็กเกจ unity source
แต่ฉันตอบมากกว่านั้นเนื่องจากทุกคนมองหาคำตอบสำหรับคำถามของฉันจะสนใจรู้ว่าจะทำอย่างไรกับไฟล์ต้นฉบับเหล่านั้น
สารบัญ:
A. รวบรวมตัวเอง หรือ
B. รับไบนารี
ข้อจำกัดความรับผิดชอบ: ฉันไม่มีเงื่อนงำที่ทั้งหมดและสิ่งนี้ได้รับการทดสอบเฉพาะใน 12.04 กับ unity 5.20.2, 14.04 กับ unity 7.2.6, 15.10, 15.10 กับ unity 7.3.2, และ 16.04 กับ unity 7.4.0
A. รวบรวม Unity เพื่อไม่แสดงตัวเรียกใช้งาน
0. สำหรับความอดทน
สคริปต์นี้ควรทำงานอย่างน้อยสำหรับ 12.04, 14.04 และ 15.10 เพียงแค่แสดงข้อคิดเห็นในตอนท้ายตามต้องการ:
#!/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
จากนั้นเริ่มต้นความสามัคคีแล้วคุณก็ทำเสร็จแล้ว
1. ค้นหาไฟล์ต้นฉบับที่ถูกต้อง
หลังจากการทดลองใช้และข้อผิดพลาดฉันพบว่าไฟล์ต้นฉบับที่จะเปลี่ยนคือ
- Launcher.cpp -> เพิ่มหนึ่งบรรทัดเพื่อไม่ให้แสดงตัวเรียกใช้อีกต่อไป
- unityshell.cpp, DashController.cpp และ HudController.cpp -> ตั้งค่าความกว้างของตัวเรียกใช้งานให้เป็นศูนย์
ไฟล์ทั้งหมดสี่ไฟล์มีอยู่ในแพ็คเกจ "unity" ต้นทาง
2. รับแหล่งข้อมูล
ฉันต้องติดตั้งแพ็คเกจ xserver-xorg-video-dummy-lts- {รุ่น HWE ของคุณ} ด้วยตนเองเพื่อเติมเต็มปัญหาการพึ่งพาบางส่วนก่อนที่จะสามารถติดตั้ง build-deps เพื่อความสามัคคี:
sudo apt-get install xserver-xorg-video-dummy-lts-{put your HWE name here}
คุณสามารถค้นหาชื่อ (เวอร์ชั่น) ของ HWE ของคุณด้วยคำสั่งนี้:
dpkg-query -l xserver*-lts-* | grep ^ii | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u
หลังจากนั้นส่วนที่เหลือทำงาน:
sudo apt-get build-dep unity
apt-get source unity
cd unity-*
3. ใส่หนึ่งบรรทัดใน Launcher.cpp
find . -iname launcher.cpp -exec gedit {} \;
ค้นหาฟังก์ชัน "void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)" และใส่ "return;" เมื่อร่างกายเริ่มต้นเช่นนี้:
void Launcher::DrawContent(nux::GraphicsEngine& GfxContext, bool force_draw)
{
return; //dont show launcher anymore
...
นี่เพียงพอที่จะไม่แสดงตัวเรียกใช้อีกต่อไป แต่เส้นประและฮัดก็จะคงไว้ซึ่งตัวปล่อยที่ด้านซ้ายของหน้าจอที่ไม่ได้ใช้
4. ตั้งค่าความกว้างตัวเรียกใช้งานให้เป็นศูนย์ใน unityshell.cpp, DashController.cpp และ HudController.cpp / UnitySettings.cpp
สำหรับความสามัคคี <7.4.0:
ใช้เอดิเตอร์เพื่อแทนที่การเกิดขึ้นทั้งหมดของ "launcher_width =" ด้วย "launcher_width = 0; //" ใน unityshell.cpp, DashController.cpp และ HudController.cpp
หรือเพียงแค่ใช้คำสั่งนี้
for i in unityshell.cpp DashController.cpp HudController.cpp; do find . -iname $i -exec sed -i -e 's/launcher_width =/launcher_width =0; \/\//' {} \; ; done
สำหรับความสามัคคี 7.4.0:
ค้นหาไฟล์ UnitySettings.cpp และแทนที่ค่าส่งคืนที่ส่วนท้ายของ LauncherSize ดังนี้:
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];
}
สิ่งนี้จำเป็นเฉพาะเมื่อคุณต้องการให้เส้นประแสดงทางด้านซ้ายของหน้าจอโดยไม่มีขอบที่ตัวเรียกใช้งานจะใช้
5. ตั้งค่าเวอร์ชั่นที่ถูกต้องในรายการเปลี่ยนแปลง
ในกรณีของฉัน (12.04, unity 5.20.2) ฉันต้องเปลี่ยนเวอร์ชันของแหล่งที่มาของความสามัคคีจาก 5.20 เป็น 5.20.2 โดยใช้
EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2)
ก่อนที่จะรวบรวมเพื่อหลีกเลี่ยงการพึ่งพาเสียเมื่อติดตั้ง อย่าลืมบันทึกไฟล์
6. รวบรวมและติดตั้ง
จากนั้นฉันจะคอมไพล์ใหม่โดยใช้สิ่งนี้:
dpkg-buildpackage -rfakeroot -d -us -uc -b
ติดตั้งแพ็คเกจใหม่:
sudo dpkg -i ../unity_*.deb
(เท่าที่ฉันสามารถดูและทดสอบไฟล์เดียวที่จำเป็นจริงๆคือ
find . -name libunityshell.so | grep unity/usr/lib/compiz/libunityshell.so
การแทนที่ /usr/lib/compiz/libunityshell.so ด้วยอันใหม่ควรจะเพียงพอ แต่ถ้าคุณต้องการให้แน่ใจว่าเพิ่งติดตั้งแพ็คเกจ unity ใหม่ตามที่เขียนไว้ด้านบน)
7. ตั้งค่าตัวเรียกใช้ให้ซ่อนอัตโนมัติ
# 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
แค่นั้นแหละ. เริ่มต้นความสามัคคีแล้วตัวเรียกใช้ก็หายไป!
B. ในกรณีที่คุณต้องการเชื่อถือและเพิ่งได้รับไบนารี
หากคุณต้องการรับไบนารีและการรวมกันของรุ่นความสามัคคีและสถาปัตยกรรมพีซี
unity --version
getconf LONG_BIT
สามารถพบได้ที่ด้านล่างเพียงดาวน์โหลดแพ็คเกจที่ถูกต้อง
32bit
64bit
และตรวจสอบไฟล์ deb หลังจากดาวน์โหลด
md5sum unity_*.deb
ผลลัพธ์ควรเป็นหนึ่งในสิ่งเหล่านี้
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
จากนั้นติดตั้งแพคเกจ
sudo dpkg -i unity_*.deb
ตั้งค่าตัวเรียกใช้งานให้ซ่อนอัตโนมัติและเริ่มต้นความสามัคคีใหม่ แค่นั้นแหละ!
ในกรณีที่มีข้อผิดพลาดเกิดขึ้นและความสามัคคีไม่เริ่มต้น:
sudo apt-get install --reinstall unity
แต่หากทุกอย่างใช้งานได้คุณอาจต้องการป้องกันไม่ให้อัปเดตแพ็คเกจใหม่:
echo "unity hold" | sudo dpkg --set-selections
เฉพาะไฟล์ "unity_5.20.2_i386_nolauncher.deb" เท่านั้นที่ถูกคอมไพล์บนพีซีของฉัน ไฟล์ deb อื่น ๆ ถูกสร้างขึ้นในชื่อ "คอมพิวเตอร์เมฆ" (เพราะห้องเครื่องจักรดูเหมือนคลาวด์ ... ) โดยใช้รูปแบบของสคริปต์นี้:
#!/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/')