Need help with handlr?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

chmln
263 Stars 11 Forks MIT License 132 Commits 18 Opened issues

Description

A better xdg-utils

Services available

!
?

Need anything else?

Contributors list

# 61,681
Vim
Neovim
Vue.js
Rust
103 commits
# 32,730
Flask
swagger
iterm2
Swift
2 commits
# 234,330
HTML
gitlab-...
nexus
PureScr...
2 commits
# 327,069
Rust
Shell
HTML
dmenu
1 commit
# 330,468
Rust
Shell
repl
embedda...
1 commit
# 52,167
Windows
C++
yubikey
keepass
1 commit
# 138,958
ctags
Ada
Haxe
Neovim
1 commit
# 532,341
Rust
HTML
Shell
rofi
1 commit


handlr

Manage your default applications with ease using

handlr
!

Features

  • Set default handler by extension or mime-type
  • Intelligent mime type detection from files based on extension and content
  • Open multiple files at once
  • Set multiple handlers for mime/extension and use
    rofi
    /
    dmenu
    to pick one
  • Wildcard support like
    text/*
  • Automatically removes invalid/wrong
    .desktop
    entries from
    mimeapps.list
  • Helper commands like
    launch
    ,
    get --json
    for your scripting needs
  • Unnecessarily fast (written in Rust)
  • Single compiled binary with no dependencies

Usage

# Open a file/URL
handlr open ~/.dotfiles/pacman/packages.txt
handlr open https://google.ca

Set default handler for png files

handlr set .png feh.desktop

Set wildcard handler for all text files

handlr set 'text/*' nvim.desktop

Set default handler based on mime

handlr set application/pdf evince.desktop

List default apps

handlr list

Get the handler for a mime/extension

$ handlr get .png feh.desktop

Launch a handler with given path/URL

handlr launch x-scheme-handler/https -- https://google.ca

Compared to
xdg-utils

  • Can open multiple files/URLs at once
  • Can have multiple handlers and use rofi/dmenu to pick one at runtime
  • Far easier to use with simple commands like
    get
    ,
    set
    ,
    list
  • Can operate on extensions, no need to look up or remember mime types
    • useful for common tasks like setting a handler for png/docx/etc files
  • Superb autocomplete (currently fish, zsh and bash), including mimes, extensions, and
    .desktop
    files
  • Optional json output for scripting
  • Properly supports
    Terminal=true
    entries

Setting default terminal

Unfortunately, there isn't an XDG spec and thus a standardized way for

handlr
to get your default terminal emulator to run
Terminal=true
desktop entries. There was a proposal floating around a few years ago to use
x-scheme-handler/terminal
for this purpose. It seems to me the least worst option, compared to handling quirks of N+1 distros or using a handlr-specific config option.

Now if

x-scheme-handler/terminal
is present,
handlr
will use it.

Otherwise,

handlr
will: 1. Find an app with
TerminalEmulator
category 2. Set it as the default for
x-scheme-handler/terminal
3. Send you a notification to let you know it guessed your terminal and provide instructions to change it if necessary

On the upside,

Terminal=true
entries will now work outside of interactive terminals, unlike
xdg-utils
.

Setting multiple handlers

1) Open

~/.config/handlr/handlr.toml
and set
enable_selector = true
. Optionally, you can also tweak the
selector
to your selector command (using e.g. rofi or dmenu).

2) Add a second/third/whatever handler using

handlr add
, for example
handlr add x-scheme-handler/https firefox-developer-edition.desktop

3) Now in this example when you open a URL, you will be prompted to select the desired application.

Screenshots

Installation

Arch Linux

yay -S handlr-bin

Optionally you can also install

xdg-utils-handlr
to replace
xdg-open
:
yay -S xdg-utils-handlr

Rust/Cargo

cargo install handlr

Binaries

  1. Download the latest release binary and put it somewhere in
    $PATH
  2. Download completions for fish:
    sh
    curl https://raw.githubusercontent.com/chmln/handlr/master/completions/handlr.fish --create-dirs -o ~/.config/fish/completions/handlr.fish
    

Attribution

Icons made by Eucalyp from www.flaticon.com

Cover photo by creativebloq.com

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.