ฉันจะตั้งค่า xdg-open ใหม่ได้อย่างไร


28

ฉันต้องการใช้xdg-openเพื่อเปิดirc://ลิงก์ฉันจะสร้างพารามิเตอร์ที่ต้องการได้อย่างไร


ข้อผิดพลาดที่เกี่ยวข้อง: bugs.launchpad.net/ubuntu/+source/xchat/+bug/917118
cweiske

คุณสามารถขอความช่วยเหลือได้จากคำถามนี้"ฉันจะเปิดลิงก์ irc: // ใน Pidgin จาก Chromium ได้อย่างไร"
Khurshid Alam

คำตอบ:


17

xdg-open เป็นเพียงแค่ดูว่าสภาพแวดล้อมของเดสก์ท็อปที่คุณมีแล้วเรียกใช้ gnome-open, gvfs-open, xfce-open, ฯลฯ ดูด้านล่างสำหรับคำแนะนำเฉพาะของสภาพแวดล้อมเดสก์ท็อป ...

คำพังเพย

Gnome ใช้โปรแกรม gnome-open ซึ่งใช้ gconf เพื่อเก็บทุกอย่าง ตัวอย่างเช่นบนเครื่องของฉันที่ใช้ Ubuntu 10.10 ที่รัน gnome-open irc: // blah จะเปิดขึ้น xchat เพราะ xchat มีโปรแกรมแก้ไขการตั้งค่า gconf เพื่อเพิ่มตัวจัดการ irc: //

gconf-editor แสดง irc พร้อมการกำหนดค่า xchat

/desktop/gnome/url-handlers/นี้แสดงให้เห็นว่าคำพังเพยไม่นี้ด้วยการตั้งค่าใน GConf ดูxchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemasเป็นตัวอย่าง

KDE

สำหรับ KDE คุณควรดูไฟล์. protocol ใน / usr / share / kde4 / services / ให้สร้างใหม่สำหรับโปรโตคอลใหม่ของคุณและวางไว้ใน ~ / .kde / share / kde4 / services / หากเป็นประโยชน์อย่างยิ่ง พิจารณาการเพิ่มลงในแพ็คเกจเป็นการแก้ไขสำหรับผู้ใช้รายอื่น

KDE ใช้ kde-open หรือ kfmclient ขึ้นอยู่กับว่ามีอะไรบ้างและ KDE รุ่นใดที่คุณมี

XFCE

XFCE ใช้โปรแกรมที่เรียกว่า exo-open โปรแกรมนี้ไม่มีวิธีการกำหนดค่าหรือเพิ่มตัวจัดการ uri การดูซอร์สโค้ดแสดงว่าใช้ไฟล์เดสก์ท็อปเพื่อระบุโปรแกรมสามประเภท TerminalEmulator, เว็บเบราเซอร์และ EmailClient

ด้วย XFCE4 (และอาจเป็นอย่างอื่น) คุณสามารถกำหนดค่า xdg-open เพื่อกำหนดตัวจัดการโปรโตคอลที่กำหนดเอง ในบางอย่างคุณต้องสร้าง / แก้ไขไฟล์ต่อไปนี้:

~ / .local / share / applications / protocolhandler.desktop ~ / .local / share / applications / mimeapps.list

ตัวอย่างการเพิ่มตัวจัดการสำหรับโปรโตคอล ed2k ที่มีให้ที่ stackexchange.com 2


คุณสามารถพูดถึงวิธีการทำเช่นนั้นสำหรับเจ้าหน้าที่ DE ทั้งหมด
Oxwivi

ไม่เกี่ยวข้องกับคำถาม แต่คุณสามารถอ้างอิงแบบเต็มไดเรคทอรี่ที่ด้านล่างของภาพหน้าจอได้หรือไม่? ขอขอบคุณ.
Oxwivi

4
xdg-open เป็นเพียงแค่ดูว่าสภาพแวดล้อมเดสก์ท็อปใดที่คุณมีอยู่แล้วเรียกใช้ gnome-open, gvfs-open, xfce-open เป็นต้น --- ฉันไม่คิดอย่างนั้น อย่างแรก manpage ไม่ได้บอกอย่างนั้นและอย่างที่สอง xdg-open ทำงานได้อย่างสมบูรณ์แบบ ตัวอย่างเช่นฉันใช้กับโปรแกรมจัดการหน้าต่าง i3
Alois Mahdal

มีวิธีทั่วไปในการสร้างการเชื่อมโยง url / app ใหม่ระหว่างการติดตั้งแอพหรือไม่?
jayarjo

14

ฉันจะอธิบายสิ่งนี้ด้วยmagnet:ประเภท URI และการส่งข้อมูล (เช่นกรณีของ bittorent) แต่วิธีการเดียวกันนี้สามารถใช้ได้กับแบบแผนหรือประเภทไฟล์ใด ๆ

นอกจากนี้ฉันตรวจสอบเรื่องนี้กับ Debian Jessie และฉันไม่มีเครื่อง Ubuntu แต่ฉันเชื่อว่ามันควรจะทำงานเหมือนเดิม (อย่างน้อยสำหรับxdg-openโปรดทราบว่าตัวจัดการไฟล์อาจเลือกใช้ตรรกะที่แตกต่างกัน)

  1. ค้นหาสตริงประเภท MIME สำหรับประเภทไฟล์ MIME คุณสามารถค้นหาด้วยคำสั่งfile :

    $ file -i Broken_Blossoms.webm 
    Broken_Blossoms.webm: video/webm; charset=binary
    $
    

    สำหรับไฟล์ดังกล่าวข้างต้น, video/webmชนิดไมม์คือ

    สำหรับตัวจัดการ URI ชนิดคือx-scheme-handler/<scheme>ซึ่ง <scheme>เป็นส่วนหนึ่งของ URI ก่อนโคลอนเช่น "http", "mailto" "irc" หรือ "แม่เหล็ก" ต่อไปนี้เป็นตัวอย่างของประเภท MIME ที่ถูกต้อง:

    x-scheme-handler/http
    x-scheme-handler/irc
    x-scheme-handler/magnet
    x-scheme-handler/mailto
    
  2. ค้นหาชื่อแอปพลิเคชันไฟล์ .desktop

    บ่อยครั้งที่มันไม่เหมือนกับชื่อ "เป็นทางการ" แต่เป็นรุ่นที่เล็กกว่าหรือชื่อแตกต่างไปจากเดิมอย่างสิ้นเชิง ติดตั้งไฟล์. เดสก์ท็อปอยู่ภายใต้ / usr / share / applications เนื่องจากเป็นไฟล์ข้อความปกติและมีชื่อ "เป็นทางการ" คำสั่งต่อไปนี้สามารถช่วยคุณได้:

    $ grep "Transmission" -l -r /usr/share/applications
    /usr/share/applications/transmission-gtk.desktop
    $
    

    คำสั่งอย่างมีประสิทธิภาพหมายถึง "รายการไฟล์ภายใต้ไดเรกทอรีนี้ที่มีคำว่า 'ส่ง' ~/.local/share/applicationsการใช้งานบางคนอาจจะติดตั้งเฉพาะสำหรับผู้ใช้ในกรณีที่ว่าเส้นทางจะ

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

  3. ทำการกำหนดโดยใช้คำสั่งxdg-mime :

    $ xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet
    $
    

    โปรดทราบว่าไม่ว่าไฟล์จะอยู่ที่ใด (/ usr / share / applications, ~ / .local / share / applications ... ) คุณจะใช้ ชื่อเท่านั้นไม่ใช่เส้นทางแบบเต็ม

    โดยปกติคำสั่งจะไม่แสดงผลอะไร - ก็โอเค หากคุณต้องการตรวจสอบสิ่งที่คุณเพิ่งทำหรือดูสิ่งที่ได้รับมอบหมายให้กับประเภท MIME ใด ๆ ในปัจจุบันโดยไม่ต้องเปิดมัน:

    $ xdg-mime query default x-scheme-handler/magnet
    transmission-gtk.desktop
    $
    

หมายเหตุ 1:หากคุณต้องการตรวจสอบประเภท MIME อื่น ๆ คุณสามารถดู /etc/mime.types มันไม่ได้มีทุกประเภทในโลก; ตัวอย่างเช่นตัวจัดการ URI แต่สามารถใช้สำหรับรูปแบบ "ก้าวร้าว" ในการจัดการความสัมพันธ์ ตัวอย่างเช่น:

grep ^video/ | cut -d\t -f1 | xargs xdg-mime default vlc.desktop

จะเชื่อมโยงทุกรูปแบบวิดีโอที่รู้จักกับ VLC

หมายเหตุ 2:ไฟล์ .desktop มักจะมีรายการประเภท MIME ที่พวกเขาอ้างว่าสามารถจัดการกับการใช้MimeTypeฟิลด์ หน้า man xdg-mimeบอกว่าไฟล์ .desktop ต้องอ้างสิทธิ์ประเภท MIME ก่อนที่คำสั่งดังกล่าวจะทำงาน แต่สำหรับฉันมันดูเหมือนจะทำงานแม้ว่าเขตข้อมูลจะหายไป (ฉันหมายถึงการเชื่อมโยงจะถูกนำไปใช้และแอปพลิเคชันจะเปิดใช้งาน - หากสามารถจัดการกับประเภทนั้นเป็นคำถามอื่นได้) ฉันไม่แน่ใจว่าข้อเสียเปรียบคืออะไร (ในอนาคตxdg-mimeจะถูก จำกัด มากขึ้น)


wiki.archlinux.org/index.php/xdg-openให้มากขึ้นหรือน้อยลง ยังดีอยู่ที่นั่น
shirish

คำตอบนี้เป็นวิธีที่ดีที่สุด เคล็ดลับ: 1) xdg-mime query filetype FILEเป็นวิธี XDG ในการค้นหาประเภท mime 2) คุณยังสามารถแก้ไขค่าเริ่มต้นด้วยตัวคุณเองเพื่อให้สิ่งต่าง ๆ มีการจัดระเบียบมากขึ้นและสำรองในภายหลัง: .config/mimeapps.listเป็นไฟล์
Ciro Santilli 事件改造中心法轮功六四事件

ย้อนกลับการแก้ไข 2 รายการ: @frank สนใจที่จะอธิบายว่าxdg-mime "ทำงานได้ดีขึ้น" ได้อย่างไร ไฟล์ IMO เป็นเครื่องมืออัตโนมัติสำหรับประเภท MIME, xdg-mime query filetype xyz.wbemOTOH ให้ข้อมูลน้อยลงและเป็นวิธีการพิมพ์ที่มากขึ้น
Alois Mahdal

1
คำอธิบายที่ดีและเคล็ดลับในการใช้ชื่อไฟล์เดสก์ท็อปเพียงอย่างเดียวคือคำตอบที่ฉันต้องการ
Andrea Richiardi

1
ในที่สุดคำแนะนำนี้ช่วยฉันแก้ปัญหาไม่สามารถเข้าสู่ระบบโดยใช้แอปเดสก์ท็อปที่หย่อนบน Linux หย่อนเปลี่ยนเส้นทางไปยังเบราว์เซอร์ แต่แล้วเบราว์เซอร์ที่ใช้รูปแบบ URI เพื่อเปลี่ยนเส้นทางกลับไปที่หย่อน เคล็ดลับของคุณช่วยให้ฉันเห็นว่าการทำแผนที่หย่อน URI xdg-mime หายไป ดีใจมากที่ฉันพบสิ่งนี้หลังจากผ่านไปหนึ่งชั่วโมงของการค้นหา! ขอขอบคุณ!
pestophagous

2

ฉันต้องการเชื่อมpostmanโยงลิงก์กับแอพบุรุษไปรษณีย์ที่ติดตั้งด้วยตนเอง (ไม่ใช่ส่วนขยายของ Chrome) เพื่อให้ฉันสามารถเปิดบุรุษไปรษณีย์จากเบราว์เซอร์เช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ลิงก์ที่ฉันต้องการเชื่อมโยงมีลักษณะเช่นนี้:

postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...

ในการทำสมาคมฉันทำขั้นตอนต่อไปนี้:

  1. ติดตั้งแอปด้วยตนเอง (ดาวน์โหลดและแกะ tar.gz) ใน /home/andrzej.rehmann/software/postman/
  2. สร้างไฟล์เดสก์ท็อปใน /usr/share/applications/Postman.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Postman
Icon=/home/andrzej.rehmann/software/postman/app/resources/app/assets/icon.png
Exec="/home/andrzej.rehmann/software/postman/Postman" %u
Comment=Develop with pleasure!
Categories=Development;
Terminal=false
StartupWMClass=Postman
  1. เชื่อมโยงpostmanการเชื่อมโยงแบบ XDG กับการประยุกต์ใช้โดยการทำงาน:

xdg-mime default Postman.desktop x-scheme-handler/postman


ฉันได้ยกเลิกการกำหนดค่านี้หากใครสนใจ: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml

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