xdg-open/how to/add custom protocol: Difference between revisions
Created page with "==How To== ===custom protocol=== '''Q:''' How can I add a custom protocol to xdg-open? According to ChatGPT<ref name=chatgpt1 /> (these instructions are either incomplete, in..." |
No edit summary |
||
| Line 1: | Line 1: | ||
== | {{fmt/title|How to add a custom protocol}} | ||
== | The following instructions were adapted from ChatGPT<ref name=chatgpt1 /> but tested and modified slightly for clarity. | ||
''' | ==Create a custom desktop file== | ||
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> | |||
[Desktop Entry] | |||
Name=Custom Protocol Handler | |||
Exec=/path/to/your/custom-protocol-handler %U | |||
Terminal=false | |||
Type=Application | |||
MimeType=x-scheme-handler/{{arg|protocol name}}; | |||
That is: if your custom protocol is (e.g.) "wooz://{{arg|URI}}", then '''MimeType''' should be set to <code>x-scheme-handler/wooz</code>. | |||
Customize the <code>Exec</code> line to point to the executable that will handle your custom protocol. | Customize the <code>Exec</code> line to point to the executable that will handle your custom protocol. | ||
==Update MIME types== | |||
Open the file <code>/usr/share/applications/mimeinfo.cache</code> or <code>~/.local/share/applications/mimeinfo.cache</code> and add the following line: | Open the file <code>/usr/share/applications/mimeinfo.cache</code> or <code>~/.local/share/applications/mimeinfo.cache</code> and add the following line: | ||
x-scheme-handler/{{arg|protocol name}}=custom-protocol.desktop; | |||
x-scheme-handler/ | |||
If the <code>mimeinfo.cache</code> file doesn't exist, you may need to create it. | If the <code>mimeinfo.cache</code> file doesn't exist, you may need to create it. | ||
==Update the MIME database== | |||
Run the following command to update the MIME database: | Run the following command to update the MIME database: | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
| Line 32: | Line 26: | ||
sudo update-desktop-database /usr/share/applications/ | sudo update-desktop-database /usr/share/applications/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Test your custom protocol== | |||
After completing the above steps, you should be able to use <code>xdg-open</code> with your custom protocol. For example: | After completing the above steps, you should be able to use <code>xdg-open</code> with your custom protocol. For example: | ||
xdg-open {{arg|protocol name}}://example | |||
xdg-open | |||
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. | 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== | ||
Revision as of 00:46, 3 January 2024
|
How to add a custom protocol
|
{{#set: page title=How to add a custom protocol }}
The following instructions were adapted from ChatGPT<ref name=chatgpt1 /> but tested and modified slightly for clarity.
Create a custom desktop file
Create a new desktop file for your custom protocol. Desktop files usually have a .desktop extension and are located in the /usr/share/applications/ directory or ~/.local/share/applications/ for user-specific settings.
Example (custom-protocol.desktop):
[Desktop Entry] Name=Custom Protocol Handler Exec=/path/to/your/custom-protocol-handler %U Terminal=false Type=Application MimeType=x-scheme-handler/<protocol name>;
That is: if your custom protocol is (e.g.) "wooz://<URI>", then MimeType should be set to x-scheme-handler/wooz.
Customize the Exec line to point to the executable that will handle your custom protocol.
Update MIME types
Open the file /usr/share/applications/mimeinfo.cache or ~/.local/share/applications/mimeinfo.cache and add the following line:
x-scheme-handler/<protocol name>=custom-protocol.desktop;
If the mimeinfo.cache file doesn't exist, you may need to create it.
Update the MIME database
Run the following command to update the MIME database:
update-desktop-database ~/.local/share/applications/
If you added the desktop file to the system-wide directory (/usr/share/applications/), you might need to run the command with superuser privileges:
sudo update-desktop-database /usr/share/applications/
Test your custom protocol
After completing the above steps, you should be able to use xdg-open with your custom protocol. For example:
xdg-open <protocol name>://example
This should launch the specified handler for your custom protocol.
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 xdg-open, these general steps should work.
Footnotes
<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>
