Firefox Extension: Tabs From Other Devices Button

Firefox Extension: Tabs From Other Devices Button

Firefox มีความสามารถซิงก์แท็บมาได้สักระยะหนึ่งแล้ว (แต่ดูไม่ค่อยเน้นสักเท่าไรนะ)

แถม Firefox 29 ที่เปลี่ยนธีมใหม่เป็น Australis ก็นำหน้าแสดงรายการแท็บจากอุปกรณ์อื่น (Tabs From Other Devices) เข้าไปซ่อนซะลึก ต้องกดถึง 3 คลิกคือ กดปุ่มเมนู > ปุ่ม History > เมนู Tab From Other Devices ถึงจะเจอหน้ารายการแท็บ แถมไม่มีปุ่มลัดใดๆ ให้ด้วย (อ่านในฟอรั่มแนะนำให้กด Alt+S+T Enter ก็พบว่ายังยากเกินไป)

ช่วงหลังเปลี่ยนมาใช้ Firefox for Android เป็นเบราว์เซอร์หลักแทน Chrome for Android ทำให้มีความจำเป็นต้องเข้าถึงแท็บที่เปิดบนมือถืออยู่บ่อยๆ เลยพยายามหาวิธีการที่ช่วยให้เข้าถึงหน้า Tab From Other Devices ได้เร็วขึ้น

จากการค้นข้อมูล พบว่ามีคนเสนอเรื่องนี้ใน Bugzilla และมีแพตช์แล้วตั้งแต่ปลายปี 2013 แต่ไม่ได้รับความสนใจอีกเลย (Mozilla-style) ครั้นจะหาช่องทางใช้งานผ่าน Extension ลองหาดูแล้วก็ไม่เจออะไรที่ใกล้เคียง

ถ้าชีวิตมันยากนัก #อยากได้ก็ต้องทำเอง ครับ

เนื้องานไม่มีอะไรยากเลย เพราะ Firefox มีหน้าแสดงรายการแท็บที่มี URL ของตัวเอง (about:sync-tabs) มาให้เรียบร้อยแล้ว สิ่งที่เราต้องการคือเพิ่ม "ปุ่ม" เข้ามาอีกปุ่มหนึ่งบนทูลบาร์เพื่อเข้ามายังหน้านี้เท่านั้นเอง

เมื่อนานมาแล้ว ตั้งกะสมัยยังไม่มี Firefox ผมเคยทำธีมสำหรับ Mozilla ทำให้คุ้นเคยกับการแกะ GUI ของ Firefox ที่เป็น XUL-based พอสมควร

แต่พอมาค้นข้อมูล อัพเดตความรู้ใหม่ พบว่าวงการ Firefox เปลี่ยนไปเยอะมาก การสร้างส่วนเสริมแบบใหม่ (ที่เรียกว่า lightweight/restartless/bootstrapped extension) ไม่จำเป็นต้องยุ่งกับ XUL โดยตรงอีกต่อไป แถม Mozilla ก็พัฒนา Add-on SDK มาช่วยให้การสร้างส่วนเสริมง่ายขึ้นกว่าเดิมมากๆ (เทียบกับสมัยต้องแกะแพ็กเกจ XUL เองนะครับ)

ขั้นตอนก็ง่ายๆ ครับ

  • ติดตั้ง Add-on SDK โดยต้องมี Python 2.7 อยู่ในเครื่องด้วย
  • เสร็จแล้วให้เรียกคำสั่ง bin/activate ในไดเรคทอรีของ SDK พร็อมต์ของเราจะกลายเป็นพร็อมต์ของ SDK แทน
  • คำสั่งที่ควรสนใจมีแค่คำสั่งเดียวคือ cfx ให้สร้างโฟลเดอร์เปล่าๆ ขึ้นมาสำหรับเก็บไฟล์ส่วนเสริม
  • สั่ง cfx init ระบบจะสร้างไฟล์เทมเพลตขึ้นมาให้ (เรามีหน้าที่แก้ไฟล์ส่วนนี้เพื่อทำเป็น extension)
  • ยังไม่ต้องทำอะไร สั่ง cfx run ระบบจะเรียก Firefox ที่ใช้ profile ชั่วคราวซ้อนขึ้นมาอีกตัว (รันคู่กับ Firefox ปกติ) โดยมันจะติดตั้ง extension ตัวที่เราเพิ่งสร้าง (ซึ่งไม่ทำงานอะไรเลย แต่มีตัวตนอยู่ในรายการ Extensions) ให้เสร็จสรรพ
  • ต่อจากนั้นเราก็อ่านเอกสาร แก้ไข ปรับปรุง extension ตามต้องการ แล้วกด cfx run เพื่อรันทดสอบไปเรื่อยๆ ครับ ง่ายสุดๆ
  • เสร็จเรียบร้อยจนพอใจแล้ว สั่ง cfx xpi จะได้ผลลัพธ์เป็นไฟล์แพ็กเกจ .xpi มาหนึ่งไฟล์ นำไปลองติดตั้งบน Firefox ตัวปกติว่าเวิร์คแค่ไหนยังไง
  • ก่อนส่งขึ้น Mozilla Add-ons ก็ปรับแก้ข้อมูลในไฟล์ package.json สักหน่อยให้อ่านรู้เรื่อง
  • ส่งขึ้น Mozilla Add-ons สมัครสมาชิกแล้วทำตามขั้นตอนในหน้าเว็บได้เลย

ผลลัพธ์สุดท้าย ออกมาเป็น extension ง่ายๆ หนึ่งตัวครับ (ผมใช้เวลาหา+ทำรูปไอคอนมากกว่าโค้ดซะอีก) ใครใช้ Firefox แล้วอยากได้ฟีเจอร์แบบเดียวกันก็เข้าไปที่ Tabs From Other Devices Button