Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

Dwm เป็นซอฟต์แวร์แนวมินิมอลที่ยอดเยี่ยม ด้วยโค้ดเพียง 2,000 บรรทัด นักพัฒนาจึงสามารถจัดเตรียมตัวจัดการหน้าต่างที่รวดเร็วและใช้งานง่าย แนวทางสปาร์ตันในการพัฒนาซอฟต์แวร์นี้มาพร้อมกับราคา คุณลักษณะบางอย่างลดลงเพื่อลดขนาดโปรแกรม

แม้จะเป็นเช่นนั้น ก็เป็นไปได้ที่จะแนะนำคุณสมบัติใหม่ให้กับ dwm โดยการแพตช์ซอร์สโค้ดของมัน เนื่องจาก dwm เป็นแบบอิงตามแหล่งที่มา เพื่อทำการกำหนดค่าพื้นฐาน เราต้องแก้ไข config.h ซึ่งเป็นส่วนหนึ่งของซอร์สโค้ดของ dwm

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

แม้ว่ามันอาจจะดูซับซ้อนในตอนแรก แต่การแพตช์ dwm นั้นง่ายเมื่อเราเข้าใจบางสิ่งเกี่ยวกับกระบวนการนี้ บทความนี้มีจุดมุ่งหมายเพื่อสอนชุดทักษะที่จำเป็นในการติดตั้ง dwm ของคุณเองให้สำเร็จและจัดเตรียมแพตช์ที่มีประโยชน์ห้ารายการ

แพตช์คืออะไร

แพทช์เป็นส่วนเล็กๆ ของโค้ดที่สามารถแทรกลงในเนื้อหาที่ใหญ่ขึ้นได้ สิ่งนี้มีประโยชน์เมื่อทำงานร่วมกันในโครงการซอฟต์แวร์ขนาดใหญ่ เนื่องจากช่วยให้โปรแกรมเมอร์เห็นการเปลี่ยนแปลงของผู้อื่นได้อย่างรวดเร็ว

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

แพทช์สามารถทำได้ง่ายๆ เหมือนกับการเปลี่ยนแปลงเพียงเส้นเดียวเล็กๆ เพื่อแก้ไขจุดบกพร่องหรือการเปลี่ยนแปลงหลายไฟล์ขนาดใหญ่ที่แนะนำคุณลักษณะใหม่

วิธีแก้ไขซอร์สโค้ดสำหรับ dwm

มีหลายวิธีในการแนะนำแพตช์ให้กับซอร์สโค้ด วิธีที่ใช้บ่อยที่สุดคือการใช้คำสั่ง git ตัวอย่างเช่น หากต้องการแนะนำโปรแกรมแก้ไขในที่เก็บ git ให้พิมพ์ดังต่อไปนี้:

git apply -3 path/to/the/patch.diff
  • ที่ apply ฟังก์ชันจะพยายามแทรกเนื้อหาของไฟล์แพตช์ในไฟล์ต้นฉบับที่ระบุ
  • The -3 ตัวเลือกจะพยายามแก้ไขความไม่สอดคล้องกันและอนุญาตให้ผู้ใช้แก้ไขข้อผิดพลาดในกระบวนการแพตช์
5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

ในทางกลับกัน หากเรากำลังแก้ไขซอร์สโค้ดโดยไม่มีการควบคุมเวอร์ชันใดๆ เราก็สามารถใช้โปรแกรมแก้ไข GNU ได้ หากต้องการแทรกโปรแกรมแก้ไขโดยใช้สิ่งนั้น ให้พิมพ์ดังต่อไปนี้:

patch -p1 < path/to/the/patch.diff
  • The -p1 ตัวเลือกช่วยให้แน่ใจว่าไฟล์แพตช์จะถูกติดป้ายกำกับอย่างถูกต้องเพื่อให้โปรแกรมแพตช์แทรก

อย่างไรก็ตาม เมื่อทำการแพตช์ dwm มีบางครั้งที่โปรแกรมเหล่านี้จะล้มเหลว เนื่องจากพวกเขาถือว่าซอร์สโค้ดที่เรากำลังแก้ไขนั้นคล้ายกับการติดตั้ง dwm พื้นฐาน

ซึ่งหมายความว่าเมื่อเราติดตั้งแพตช์ ยิ่งยากสำหรับโปรแกรมแก้ไขที่จะแทรกแพตช์เหล่านั้น ด้วยเหตุนี้ จึงเป็นสิ่งสำคัญที่จะต้องเข้าใจว่าไฟล์แพตช์ทำงานอย่างไร เพื่อที่เราจะสามารถติดตั้งแพตช์ได้ด้วยตนเอง

วิธีการอ่านไฟล์ Patch

ไฟล์แพตช์ประกอบด้วยสามสิ่ง:

  • ส่วนหัวที่แสดงไฟล์ที่ควรใส่โค้ด
  • หัวข้อย่อยที่แสดงหมายเลขบรรทัดหรือฟังก์ชันที่จะแทรก
  • ตัวโค้ดเอง

ตามที่เราได้กล่าวไว้ข้างต้น ไฟล์แพทช์ไฟล์เดียวสามารถมีตัวอย่างโค้ดได้หลายไฟล์เพื่อส่งไปยังไฟล์หลายไฟล์ รูปแบบนี้ช่วยให้เราแจกจ่ายไฟล์เดียวแทนที่จะมีไฟล์แพทช์เดียวสำหรับไฟล์ต้นฉบับทุกไฟล์

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

ด้วยเหตุนี้ การอ่านไฟล์แพตช์ทำให้เราต้องเข้าใจไวยากรณ์ของส่วนหัวเท่านั้น เมื่อเราทราบแล้ว การแพตช์จริงก็เป็นเพียงการคัดลอกและวางโค้ดเท่านั้น

ไวยากรณ์ส่วนหัวของ Patch

ส่วนหัวของโปรแกรมแก้ไขประกอบด้วยข้อมูลสำคัญเกี่ยวกับตำแหน่งของไฟล์ต้นทาง ตัวอย่างเช่น นี่คือส่วนหัวสำหรับโปรแกรมแก้ไขการปรับขนาดอัตโนมัติ dwm

diff --git a/dwm.c b/dwm.c
index 0362114..e4e8514 100644
--- a/dwm.c
+++ b/dwm.c

บรรทัดแรก สาม และสี่ระบุว่านี่คือความแตกต่างระหว่างไฟล์ dwm.c สองเวอร์ชัน มันบอกเราว่าไฟล์ที่เราจะแก้ไขคือไฟล์ “dwm.c”

อย่างไรก็ตาม เพียงแค่รู้ว่าต้องแก้ไขอะไรไม่ได้ช่วยเราในการแพตช์ไฟล์ต้นฉบับ เรายังจำเป็นต้องรู้ว่าเราต้องใส่รหัสที่ไหนในไฟล์ นี่คือที่ที่เราสามารถใช้หัวข้อย่อยของไฟล์แพตช์ได้

ตัวอย่างเช่น นี่คือส่วนของโปรแกรมแก้ไขการปรับขนาดอัตโนมัติเดียวกันกับที่อธิบายไว้ข้างต้น:

@@ -92,7 +92,7 @@ struct Client {
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	int bw, oldbw;
 	unsigned int tags;
-	int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
+	int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen, needresize;
 	Client *next;
 	Client *snext;
 	Monitor *mon;

นี่อาจดูเหมือนโค้ดที่น่ากลัว แต่เราแค่ต้องดูสามสิ่งนี้เท่านั้น:

  • บรรทัดแรกระบุหมายเลขบรรทัดที่เราจำเป็นต้องแทรกข้อมูลโค้ด ในตัวอย่างนี้ เราต้องแทรกสิ่งนี้ในบรรทัดที่ 92
  • อาร์กิวเมนต์ที่สองในบรรทัดแรก – struct Client { – บอกฟังก์ชั่นเฉพาะที่เราต้องแก้ไข สิ่งนี้มีประโยชน์เมื่อไฟล์ต้นฉบับถูกแพตช์อย่างหนักแล้ว และหมายเลขบรรทัดทางด้านซ้ายไม่เรียงกันอีกต่อไป
  • สิ่งสุดท้ายที่จะดูคือ + และ - สัญญาณในบล็อกรหัส เครื่องหมายลบแสดงว่าเป็นบรรทัดที่ต้องลบ และเครื่องหมายบวกแสดงว่าเป็นบรรทัดที่ต้องเพิ่ม

ด้วยเหตุนี้ ตอนนี้เราจึงมีความเข้าใจพื้นฐานเกี่ยวกับวิธีแก้ไขไฟล์ต้นทางแล้ว ตอนนี้ เราสามารถดำเนินการเพื่อหารือเกี่ยวกับห้าแพทช์ที่มีประโยชน์สำหรับ dwm

1. ซิสเทรย์

ไม่เหมือนกับสภาพแวดล้อมเดสก์ท็อปส่วนใหญ่ dwm ไม่ได้มาพร้อมกับถาดระบบตามค่าเริ่มต้น ซิสเต็มเทรย์เป็นส่วนของเดสก์ท็อปที่แอปพลิเคชันบางตัวสามารถปล่อยให้ไอคอนมีฟังก์ชันของแอปเพื่อโต้ตอบกับโปรแกรมที่ทำงานอยู่เบื้องหลังได้อย่างรวดเร็ว

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

แพตช์นี้แนะนำคุณสมบัตินั้นให้กับ dwm เมื่อติดตั้งแล้ว โปรแกรมแก้ไข systray จะจัดสรรมุมขวาสุดของแถบ dwm ให้กับโปรแกรมถาดระบบปัจจุบัน นอกจากนี้ยังรองรับการตั้งค่าหลายจอภาพโดยที่ถาดจะปรากฏบนจอภาพที่มีตัวชี้เมาส์อยู่เสมอ

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

2. Xresources

แพตช์ Xresources ช่วยให้โปรแกรม xrdb ตั้งค่ากราฟิกสำหรับ dwm ได้ ช่วยให้เราใช้ไฟล์ .Xresources เพื่อเปลี่ยนสีและแบบอักษรโดยไม่ต้องคอมไพล์โปรแกรมใหม่ มีประโยชน์อย่างยิ่งสำหรับผู้ใช้ที่ใช้ไฟล์เดียวกันอยู่แล้วสำหรับชุดรูปแบบสีเทอร์มินัล

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

นอกจากนี้ การให้ xrdb กำหนดลักษณะที่ปรากฏของ dwm ยังช่วยให้เราใช้หลายธีมได้ เราสามารถทำได้โดยแก้ไขไฟล์ .Xresources สำหรับชุดรูปแบบสีที่เราต้องการและเปิดใช้งานโดยโหลด dwm ใหม่

3. ทาทามิ

Tatami เป็นเค้าโครงหน้าต่างทางเลือกสำหรับ dwm มันแสดงถึงหน้าต่างในหน้าจอเป็นกระเบื้องที่ปูพื้นแบบญี่ปุ่นดั้งเดิม วิธีการนี้แตกต่างจากต้นแบบดั้งเดิมและเลย์เอาต์สแต็ก โดยที่แต่ละหน้าต่างที่ไม่ใช่มาสเตอร์จะมีขนาดบางลงในแนวตั้ง ซึ่งทำให้แต่ละหน้าต่างในสแต็กไม่สามารถอ่านได้

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

เลย์เอาต์เสื่อทาทามิมีประโยชน์อย่างยิ่งเมื่อต้องจัดการกับหน้าต่างสี่ถึงห้าหน้าต่างพร้อมๆ กัน เนื่องจากแต่ละหน้าต่างมีพื้นที่หน้าจอที่เพียงพอสำหรับผู้ใช้ให้เราอ่าน

4. โฟกัสมาสเตอร์

วิธีที่ dwm จัดเรียงหน้าต่างนั้นคล้ายกับการวางบล็อคในสแต็ก หน้าต่างที่สร้างขึ้นใหม่แต่ละบานจะวางอยู่บนหน้าต่างก่อนหน้า สิ่งนี้จะสร้างลำดับเชิงเส้นระหว่างหน้าต่างและช่วยให้เราทราบว่าหน้าต่างใดเกิดก่อน

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

อย่างไรก็ตาม ข้อจำกัดประการหนึ่งของการออกแบบนี้คือไม่อนุญาตให้เราเลือกหน้าต่างหลักจากสแต็กได้อย่างอิสระ ในการเลือกต้นแบบ เราต้องเลือกแต่ละหน้าต่างจนกว่าจะถึงบล็อกสูงสุด แพตช์นี้เปลี่ยนการทำงานนี้ และทำให้เราสามารถเลือกหน้าต่างมาสเตอร์ปัจจุบันได้จากทุกที่ในสแต็ก

มีประโยชน์อย่างยิ่งเมื่อต้องจัดการกับหลายหน้าต่าง เนื่องจากทำให้เราเลือกต้นแบบในหน้าต่างสแต็กได้โดยอัตโนมัติ แทนที่จะวนไปยังแต่ละหน้าต่างที่มีอยู่

5. dwmc

การปรับเปลี่ยนลักษณะใดๆ ของ dwm ทำให้เราต้องคอมไพล์โปรแกรมใหม่ทุกครั้งที่เราต้องการใช้การเปลี่ยนแปลงของเรา ซึ่งรวมถึงรูปแบบสีและการทำงานเริ่มต้น เป็นต้น

5 แพตช์ที่มีประโยชน์เพื่อปรับปรุงประสบการณ์ dwm ของคุณ

dwmc เป็นแพตช์ง่าย ๆ ที่ช่วยให้เราเปลี่ยนพฤติกรรมของ dwm ผ่านโปรแกรมไคลเอนต์ได้ วิธีนี้คล้ายกับวิธีที่ bspwm ใช้ bspc เพื่อแก้ไขการตั้งค่าของ bspwm แม้ว่า dwmc จะง่ายกว่า bspc มาก แต่ก็ยังมีการตั้งค่าที่มีประโยชน์มากมายที่เราสามารถใช้และแก้ไขได้

ตัวอย่างเช่น ฟังก์ชันหนึ่งที่เราสามารถใช้ได้ใน dwmc คือแถบสลับ การเรียกใช้แถบสลับ dwmc ช่วยให้เราสามารถเปิดใช้งานและปิดใช้งานแถบ dwm แบบไดนามิกได้ สิ่งนี้ทำให้ dwmc มีประโยชน์เมื่อสร้างสคริปต์ที่ทำงานหน้าต่างแบบกำหนดเอง

ยินดีด้วย! ตอนนี้คุณมีความเข้าใจพื้นฐานเกี่ยวกับวิธีการทำงานของโค้ดแพตช์ เช่นเดียวกับแพตช์ที่มีประโยชน์ห้าตัวที่คุณใช้ในการติดตั้ง dwm ของคุณ หากคุณกำลังมองหาประสบการณ์การใช้งานเบราว์เซอร์เพียงเล็กน้อย ให้ดูบทแนะนำนี้

คำถามที่พบบ่อย

1. แพทช์ dwm ปลอดภัยหรือไม่

ใช่! ผู้ดูแลจำนวนหนึ่งตรวจสอบแพทช์ที่มีอยู่ในเว็บไซต์ที่ไม่มีการดูด เพื่อให้แน่ใจว่าแพทช์ทั้งหมดในเว็บไซต์ใช้งานได้กับเวอร์ชันของ dwm ที่เขียนขึ้น

2. ฉันใช้ git สมัคร แต่โปรแกรมแก้ไขของฉันล้มเหลวและ dwm ไม่ได้รวบรวม ฉันควรทำอย่างไร?

สิ่งนี้สามารถเกิดขึ้นได้เนื่องจากหลายสิ่ง สาเหตุที่พบบ่อยที่สุดคือส่วนหัวของ git ไม่ได้ถูกลบในไฟล์ต้นฉบับ นี้ค่อนข้างง่ายที่จะแก้ไข เราจำเป็นต้องลบส่วนหัวและใช้โปรแกรมแก้ไขด้วยตนเอง

เมื่อคุณเปิดไฟล์ต้นฉบับ คุณจะเห็นบรรทัดที่มีป้ายกำกับว่า HEAD . นี่แสดงถึงการเริ่มต้นของการปรับเปลี่ยน ตามด้วยฟังก์ชั่นที่ต้องแก้ไข คุณจะต้องลบบรรทัดนั้นและทำการแก้ไขด้วยตนเอง ในนี้จะมี + . ด้วย และ - ป้ายทางด้านซ้ายของรหัสเพื่อเป็นแนวทางในการเปลี่ยนแปลง

3. ฉันจะทำอย่างไรเมื่อฉันใช้โปรแกรมแก้ไขสำเร็จ แต่ dwm ไม่ต้องการคอมไพล์และขอตัวแปรหรือการประกาศที่หายไป

โปรแกรมแก้ไขไม่ได้แก้ไขไฟล์ config.h โดยค่าเริ่มต้น โปรแกรมแก้ไขจะแก้ไขไฟล์ config.def.h เพื่อหลีกเลี่ยงความขัดแย้งกับการกำหนดค่าปัจจุบัน

อย่างไรก็ตาม หมายความว่าไฟล์ config.h จะไม่โหลดด้วยค่าการกำหนดค่าที่ถูกต้องสำหรับโปรแกรมแก้ไขนั้น ๆ ในการแก้ไขปัญหานี้ คุณต้องแนะนำการเปลี่ยนแปลงในไฟล์ config.def.h ให้กับไฟล์ config.h ของคุณ