รวบรวม Unity โดยไม่มีตัวเรียกใช้งาน


17

ผมอยากจะปรับเปลี่ยนความสามัคคีที่จะไม่แสดงตัวเปิด (แถบด้านซ้าย) ที่ทั้งหมด ฉันไม่ได้มองหาวิธีการแก้ปัญหาใด ๆ ที่จะทำให้ตัวเรียกใช้งานปรากฏในบางกรณี ฉันอยากให้มันหายไปโดยสิ้นเชิง เป็นของขวัญสำหรับคู่หมั้นของฉันและฉันต้องการบรรลุ Woman Acceptance Factor ที่สูงที่สุดเท่าที่จะเป็นไปได้สำหรับแล็ปท็อป linux ของเธอที่ใช้ท่าเทียบเรือที่มีไอคอนแฟนซีที่ทำให้ดูเหมือนว่ามาจาก บริษัท ที่รู้จักและผลไม้

คำแนะนำเกี่ยวกับแพคเกจใดและไฟล์ต้นฉบับใดที่ฉันควรศึกษา

ฉันหวังว่าจะเป็นเรื่องง่ายเหมือนการแสดงความคิดเห็นออกบรรทัดด้วย "unity.launcher.show ()" และรวบรวมใหม่ :-)

ขอขอบคุณ!


คุณต้องการความสามัคคีจริง ๆ หรือไม่ถ้าไม่มี Ubuntu distros ที่ดูเหมือนแอปเปิ้ลคุณจะต้องยกเลิกการเลือก: show-filesystem, -home ฯลฯ จากเครื่องมือแก้ไขการตั้งค่า !! และคุณพร้อมที่จะไป!
Ken Mollerup

คำตอบ:


20

คำตอบสำหรับคำถามของฉันคือ:

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

1
ดีที่คุณอาจต้องการที่จะพูดถึงว่าการรวบรวมของคุณดังนั้นเป็น 32 บิตเพื่อให้ความสนใจผู้ใช้ 64 คนบิตใด ๆ ที่ไม่กัดโดยเอลฟ์ที่ไม่ถูกต้อง
ดั๊ก

1
ทำได้ดีมาก JLTD ฉันชอบเห็นผู้ใช้พยายามตอบคำถามของตัวเอง เงินรางวัลจะช่วยให้คุณเข้าถึงเว็บไซต์ได้มากขึ้น (ฉันรอ 24 ชม.) BTW คุณสามารถดูคำถามที่โดดเด่นนี้ได้ที่askubuntu.com/q/165888/26246มันต้องการแค่ HUD และฉันเชื่อว่า Unity สามารถสร้างเป็นสแตนด์อโลนได้ (ไม่ใช่ปลั๊กอินคอมบิซ) ให้ฉันรู้ว่าถ้าคุณมีความคิดใด ๆ ผมจะยกเงินรางวัลไม่น้อยแล้ว 250 :)
user.dz

@JLTD ไฟล์นี้ถูกลบจากเซิร์ฟเวอร์ คุณกรุณาอัพโหลดอีกครั้งได้ไหม ฉันเป็นคนใหม่ใน linux ดังนั้นจึงเป็นเรื่องยากสำหรับฉันที่จะเลือกตัวเลือก A
burhanuddin abbas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.