|
|
| Line 2: |
Line 2: |
| [[category:open-source]] | | [[category:open-source]] |
| ==About== | | ==About== |
| {{fmt/quote|[[xdg-open]] is a command-line utility for opening files and URLs using the default applications as specified by the user's desktop environment.}}<ref name=chatgpt1 /> | | {{fmt/quote|[[xdg-open]] is a command-line utility for opening files and URLs using the default applications as specified by the user's desktop environment.}}<ref name=chatgpt1 /> Its current implementation (as of Ubuntu-MATE 23.10) is as a [[bash]] script which determines which desktop environment (DE) is running, and then delegates to the appropriate command for that DE. In other words, it's a slightly klugey bit of glue that deals with the lack of a standard URL-opening function across different DEs. |
| ==How To==
| |
| ===custom protocol<ref name=chatgpt1 />===
| |
| '''Q:''' How can I add a custom protocol to xdg-open? | |
|
| |
|
| ''These instructions have not yet been verified.''
| | * [[/notes]] |
| | |
| <strong>Create a custom desktop file:</strong>
| |
| * Create a new desktop file for your custom protocol. Desktop files usually have a <code>.desktop</code> extension and are located in the <code>/usr/share/applications/</code> directory or <code>~/.local/share/applications/</code> for user-specific settings.</p><p>Example (<code>custom-protocol.desktop</code>):</p> | |
| <syntaxhighlight lang=ini>
| |
| [Desktop Entry]
| |
| Name=Custom Protocol Handler
| |
| Exec=/path/to/your/custom-protocol-handler %U
| |
| Terminal=false
| |
| Type=Application
| |
| MimeType=x-scheme-handler/custom-protocol;
| |
| </syntaxhighlight>
| |
| Customize the <code>Exec</code> line to point to the executable that will handle your custom protocol.
| |
| * <strong>Update MIME types:</strong>
| |
| Open the file <code>/usr/share/applications/mimeinfo.cache</code> or <code>~/.local/share/applications/mimeinfo.cache</code> and add the following line:
| |
| <blockquote>
| |
| x-scheme-handler/custom-protocol=custom-protocol.desktop;
| |
| </blockquote>
| |
| If the <code>mimeinfo.cache</code> file doesn't exist, you may need to create it.
| |
| * <strong>Update the MIME database:</strong>
| |
| Run the following command to update the MIME database:
| |
| <syntaxhighlight lang=bash>
| |
| update-desktop-database ~/.local/share/applications/
| |
| </syntaxhighlight>
| |
| If you added the desktop file to the system-wide directory (<code>/usr/share/applications/</code>), you might need to run the command with superuser privileges:
| |
| <syntaxhighlight lang=bash>
| |
| sudo update-desktop-database /usr/share/applications/
| |
| </syntaxhighlight>
| |
| * <strong>Test your custom protocol:</strong>
| |
| After completing the above steps, you should be able to use <code>xdg-open</code> with your custom protocol. For example:
| |
| <syntaxhighlight lang=bash>
| |
| xdg-open custom-protocol://example
| |
| </syntaxhighlight>
| |
| This should launch the specified handler for your custom protocol.</p></li></ol><p>Remember to replace "custom-protocol" with your actual protocol name and update file paths accordingly. Additionally, depending on your desktop environment, there may be slight variations in the steps. If your desktop environment supports <code>xdg-open</code>, these general steps should work.
| |
| ==Footnotes== | | ==Footnotes== |
| <references> | | <references> |
| <ref name=chatgpt1>'''2024-01-01''' ChatGPT 3.5, in response to "How can I add a custom protocol to xdg-open?"</ref> | | <ref name=chatgpt1>'''2024-01-01''' ChatGPT 3.5, in response to "How can I add a custom protocol to xdg-open?"</ref> |
| </references> | | </references> |
About
«xdg-open is a command-line utility for opening files and URLs using the default applications as specified by the user's desktop environment.»<ref name=chatgpt1 /> Its current implementation (as of Ubuntu-MATE 23.10) is as a bash script which determines which desktop environment (DE) is running, and then delegates to the appropriate command for that DE. In other words, it's a slightly klugey bit of glue that deals with the lack of a standard URL-opening function across different DEs.
<references>
<ref name=chatgpt1>2024-01-01 ChatGPT 3.5, in response to "How can I add a custom protocol to xdg-open?"</ref>
</references>