Skip to content

mitjafelicijan/xdgctl

Repository files navigation

xdgctl is a TUI for managing XDG default applications. View and set defaults for file categories without using xdg-mime directly.

Built with C using GLib/GIO and termbox2.

xdgctl.mp4

Features

  • Browse by category (Browsers, Text Editors, etc.)
  • Current default marked with *

Navigation & Controls

Key Action
Arrow Up/Down Navigate through categories or applications
Arrow Right/Tab Switch from category list to application list
Arrow Left Switch back to category list
Enter Set selected application as default for current category
Esc / q Quit the application

Prerequisites

To build xdgctl, you need the following development libraries:

  • glib-2.0
  • gio-2.0
  • gio-unix-2.0
  • clang or gcc
# On Void Linux
sudo xbps-install glibc-devel pkg-config

Installation

From source

git clone https://github.com/mitjafelicijan/xdgctl.git
cd xdgctl

# Build
make
sudo make install

# Using prefix
sudo make PREFIX=/usr/local install
make PREFIX=~/.local install

If you manually add new applications to your ~/.local/share/applications directory, you might need to run update-desktop-database again.

Arch Linux package

xdgctl on AUR xdgctl-git on AUR

xdgctl is available on the AUR:

You can install it using your AUR helper of choice.

Example:

yay -Sy xdgctl

More about XDG

Application directories

ls /usr/share/applications
ls ~/.local/share/applications

Querying defaults

xdg-mime query default text/plain
xdg-mime query default text/html
xdg-mime query default x-scheme-handler/http
xdg-mime query default x-scheme-handler/https
xdg-mime query default inode/directory

Setting defaults manually

xdg-mime default brave.desktop x-scheme-handler/http
xdg-mime default brave.desktop x-scheme-handler/https

Example Desktop Entry for Brave

# ~/.local/share/applications/brave.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Brave
GenericName=Web Browser
Comment=Brave browser
Exec=/home/m/Applications/brave --new-window %U
Terminal=false
Icon=brave
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/chromium;
Actions=new-window;new-private-window;

[Desktop Action new-window]
Name=New Window
Exec=/home/m/Applications/brave --new-window

[Desktop Action new-private-window]
Name=New Private Window
Exec=/home/m/Applications/brave --incognito

Validate file with desktop-file-validate ~/.local/share/applications/brave.desktop.

Other useful commands/files

update-desktop-database ~/.local/share/applications
less ~/.config/mimeapps.list
less /usr/share/applications/mimeapps.list

More material

About

TUI for managing XDG default applications

Topics

Resources

License

Stars

Watchers

Forks

Contributors