A collection of userscripts I wrote, and use in qutebrowser.
- Wayland: wl-clipboard
- X: xclip
Rofi: used in select*
userscripts
Zenity: only used in open-file
userscript
Raku - Right now regex is the slowest part of Raku, so the scripts doing any parsing will be slow
zef install --deps-only --/test .
# Open file with zenity
config.bind(',of', 'spawn --userscript open-file')
config.bind(',fd', 'hint links userscript open-domain')
# Copy title and URL of the page separated with newline
config.bind(',ytu', 'spawn --userscript yank title-url')
# Copy selected text and URL of the page separated with newline
config.bind(',ysu', 'spawn --userscript yank-text-url')
# Copy image URL
config.bind(',yiu', 'hint images userscript yank-url')
# Copy link text
config.bind(',ylt', 'hint links userscript yank-link-text')
config.bind(',rylt', 'hint --rapid links userscript yank-link-text')
# Copy link URL (pretty)
config.bind(',ylu', 'hint links userscript yank-url')
config.bind(',rylu', 'hint --rapid links userscript yank-url')
# Copy link's text and URL separated with newline
config.bind(',yla', 'hint links userscript yank-text-url')
Available actions:
- Enter: Copy
- Alt+1: Copy Separately (useful if you use a clipboard manager)
- Alt+2: Open
- Alt+3: Download
- Shift+Enter: Select multiple items
- Ctrl+Space: Set selected item as input text
- Custom entry is allowed
config.bind(',sfu', 'spawn --userscript select Feeds')
config.bind(',sft', 'spawn --userscript select Feeds --with-title')
config.bind(',slu', 'spawn --userscript select Links')
config.bind(',slt', 'spawn --userscript select Links --with-title')
config.bind(',siu', 'spawn --userscript select Images')
config.bind(',sit', 'spawn --userscript select Images --with-title')
config.bind(',smu', 'spawn --userscript select MetaLinks')
config.bind(',smt', 'spawn --userscript select MetaLinks --with-title')
config.bind('<Alt-s>', 'spawn --userscript select', mode='command')
config.bind(',sa', 'spawn --userscript select-scroll-to-anchor')
non_containers = ['a', 'button', 'img', 'svg', 'input', 'textarea', 'code', 'pre',
''.join([f'h{n}' for n in range(1, 6)])]
c.hints.selectors['containers'] = [
'body ' + ''.join([':not('+e+')' for e in non_containers])]
config.bind(',seu', 'hint containers userscript select-links')
config.bind(',set', 'hint containers userscript select-links-with-title')
config.bind(',sdd', 'spawn --userscript dig --domain')
config.bind(',sdu', 'spawn --userscript dig')
config.bind(',sdlu', 'hint links userscript dig')
config.bind(',sdld', 'hint links userscript dig-domain')