Difference between revisions of "xdg-open/how to/add custom protocol"
(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...") |
m (Woozle moved page xdg-open/notes to xdg-open/how to/add custom protocol without leaving a redirect: reorganizing, now that it's working) |
||
(One intermediate revision by the same user not shown) | |||
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== |
Latest revision as of 00:46, 3 January 2024
How to add a custom protocol
|
The following instructions were adapted from ChatGPT[1] 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
- ↑ 2024-01-01 ChatGPT 3.5, in response to "How can I add a custom protocol to xdg-open?"