ตัวจัดการโปรโตคอล URL ใน Ubuntu Desktop พื้นฐาน


16

มีวิธีการลงทะเบียนตัวจัดการโปรโตคอล URL ด้วย Gconf ซึ่งตอนนี้ล้าสมัยและดูเหมือนว่าจะไม่มีวิธีการทำเช่นเดียวกันกับ DConf (หรือ Gsettings ซึ่งเป็น wrapper ที่แนะนำ)

หนึ่งจะลงทะเบียนตัวจัดการโปรโตคอล URL อย่างถูกต้องตั้งแต่ DConf อย่างไร

นอกจากนี้มีบางอย่างที่แปลกสำหรับฉัน (เช่นที่ฉันไม่เข้าใจ) บน Ubuntu 12.04 ของฉัน

โปรโตคอลapt://ควรได้รับการจัดการโดยapturlคำสั่ง มันเป็นเช่นนั้นกับเบราว์เซอร์ Opera ของฉัน แต่เพียงเพราะฉันเพิ่มการเชื่อมโยงนี้โดยใช้สิ่งอำนวยความสะดวกการกำหนดค่าของเบราว์เซอร์ มิฉะนั้นในส่วนที่เหลือของสภาพแวดล้อม:

  • xdg-open apt://foo.barเปิดทำงานelinks( www-browserทางเลือกของฉัน)
  • การgnome-open apt://foo.barเปิดจะเป็นการเปิดศูนย์ซอฟต์แวร์
  • กำลังเปิดgconf-editorฉันเห็นคีย์/desktop/gnome/url-handlers/aptที่มีค่าapturl "%s"และเปิดใช้งานอยู่ ดูเหมือนว่าการกำหนดค่านี้จะถูกละเว้นซึ่งคาดว่าสมเหตุสมผลเนื่องจาก GConf ถือว่าล้าสมัย
  • กำลังเปิดdconf-editorฉันไม่เห็นสิ่งที่เกี่ยวข้องกับตัวจัดการ URL หรือโปรโตคอล/desktop/gnome

มันดูยุ่งเหยิงไปเล็กน้อยในสายตาของฉัน (แค่ล้อเล่นกับถ้อยคำนี้ไม่มีอะไรเลวร้าย)

ภายใต้อะไร

หมายเหตุด้านข้าง: ฉันกำลังมองหาบางสิ่งที่ทำงานได้ดีกว่าแม้ว่าจะไม่ได้โหลดสภาพแวดล้อมเดสก์ท็อปเต็มรูปแบบเช่นเมื่อใช้งานเซสชัน i3wm ที่โหลดเท่านั้นgsettings-daemon(และสิ่งอื่น ๆ ที่ไม่เกี่ยวข้องกับกรณีนี้)

ปรับปรุง

อีกวิธีในการ "ลงทะเบียน" ตัวจัดการโปรโตคอลคือกับ*.desktopไฟล์และ MIME-Type; MimeType=application/<the-protocol>;เช่น

ฉันพบ/usr/share/applications/ubuntu-software-center.desktopกับเนื้อหานี้:

[Desktop Entry]
Name=Ubuntu Software Center
GenericName=Software Center
Comment=Lets you choose from thousands of applications available for Ubuntu
Exec=/usr/bin/software-center %u
Icon=softwarecenter
Terminal=false
Type=Application
Categories=PackageManager;GTK;System;Settings;
MimeType=application/x-deb;application/x-debian-package;x-scheme-handler/apt;
StartupNotify=true
X-Ubuntu-Gettext-Domain=software-center
Keywords=Sources;PPA;Install;Uninstall;Remove;Purchase;Catalogue;Store;

หนึ่งนี้อธิบายว่าทำไมเปิดศูนย์ซอฟแวร์แทนgnome-open apt://foo.barapturl

ดังนั้นฉันติดตั้งสิ่งนี้apturl.desktopใน~/.local/share/applications:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/apturl %u
Name=APT‑URL
Comment=APT‑URL handler
Icon=
Categories=Application;Network;
MimeType=x-scheme-handler/apt;

หลังจากupdate-desktop-databaseและแม้หลังจากรีบูตเครื่องทั้งสองxdg-openและgnome-openยังคงทำเช่นเดียวกันและละเว้นไฟล์เดสก์ท็อปผู้ใช้ซึ่งตามปกติด้วยไฟล์เดสก์ท็อปผู้ใช้ควรแทนที่ไฟล์/usr/share/applications/ดังกล่าว

อาจมีบางสิ่งที่พิเศษกับไฟล์เดสก์ท็อปที่ระบุx-scheme-handlerประเภท MIME และไม่ได้จัดการตามปกติ

วิธีทางไฟล์เดสก์ท็อปไม่ตอบคำถาม


1
สิ่งนี้อาจช่วยได้: unix.stackexchange.com/a/100736
Todd Owen

คำตอบ:


9

เปิด~/.local/share/applications/mimeapps.listและเพิ่มบรรทัดที่ชอบ:

x-scheme-handler/apt=apturl.desktop

ใช่ฉันคิดได้สำหรับ HTTP, MAILTO และอื่น ๆ
Hibou57

ไม่มีโฟลเดอร์ดังกล่าว ฉันค้นหาจากรูท แต่ไม่พบ
Vlas Bashynskyi

@VlasBashynskyi ตำแหน่งของmimeapps.listอาจแตกต่างกันไป ฉันขอแนะนำให้เรียกใช้การค้นหาชื่อไฟล์
Hibou57

4

xdg-mime

อาจจะดูสง่างามกว่า (ในตัวอย่างนี้ฉันใช้"apt"เปลี่ยนรูปแบบอื่น ๆ ):

  1. ตรวจสอบประเภท MIME ที่ลงทะเบียน/usr/share/applications/defaults.listมา
  2. เพิ่มapt.desktopไฟล์ (นี่คือตัวอย่าง ) ไปยัง~/.local/share/applications/(ทั้งผู้ใช้) หรือ/usr/share/applications/(ทั้งระบบ)
  3. สร้างฐานข้อมูลแคชประเภท MIME ที่จัดการโดยไฟล์เดสก์ท็อป: update-desktop-database
  4. ลงทะเบียนโปรโตคอลด้วย

    xdg-mime default apt.desktop x-scheme-handler/apt`
    

    นี้จะผนวกใหม่ชนิด mime ~/.local/share/applications/mimeapps.listสำหรับโครงการที่จะ คุณสามารถลงทะเบียน mime-type ใหม่สำหรับผู้ใช้ทั้งหมดในระบบsudo xdg-mime install --mode system <xml file>สำหรับผู้ใช้ทั้งหมดในระบบ

ทดสอบด้วย xdg-open "apt://foo.bar"การทดสอบด้วย

ดูยังเพิ่มประเภท MIME

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.