diff --git a/bootstrap/packages.tsv b/bootstrap/packages.tsv index 863474e..bd92489 100644 --- a/bootstrap/packages.tsv +++ b/bootstrap/packages.tsv @@ -17,8 +17,8 @@ aspell-de German dictionary for aspell R aspell-en English dictionary for aspell R atool A script for managing file archives of various types R aubio A tool for extracting annotations from audio signals R -awesome Highly configurable framework window manager R barrier Open-source KVM software based on Synergy (GUI) R +base Minimal package set to define a basic Arch Linux installation R bash-bats Bash Automated Testing System R bash-completion Programmable completion for the bash shell R bash-language-server Bash language server implementation based on Tree Sitter and its grammar for Bash R @@ -49,16 +49,16 @@ devour Window Manager agnostic swallowing feature for terminal emulators A dhcpcd RFC2131 compliant DHCP client daemon R diff-so-fancy Good-looking diffs with diff-highlight and more R distrobox Use any linux distribution inside your terminal. A +dnsmasq Lightweight, easy to configure DNS forwarder and DHCP server R +docker Pack, ship and run any application as a lightweight container R docker-compose Fast, isolated development environments using Docker R docx2txt Recovers text from DOCX files, with good formatting. R dos2unix Text file format converter R duf Disk Usage/Free Utility R -dunst Customizable and lightweight notification-daemon R dust A more intuitive version of du in rust R efm-langserver General purpose Language Server A enca Charset analyser and converter R entr Run arbitrary commands when files change R -evince Document viewer (PDF, PostScript, XPS, djvu, dvi, tiff, cbr, cbz, cb7, cbt) R exa ls replacement R exercism-bin Command line client for exercism.io A exfat-utils Utilities for exFAT file system R @@ -101,6 +101,7 @@ htop Interactive process viewer R hugo Fast and Flexible Static Site Generator in Go R iftop Display bandwidth usage on an interface R imapfilter A mail filtering utility for processing IMAP mailboxes A +imv Image viewer for Wayland and X11 R intel-ucode Microcode update files for Intel CPUs R iputils Network monitoring tools, including ping R ipython An enhanced Interactive Python shell. R @@ -119,11 +120,11 @@ khard Console address book manager R kitty A modern, hackable, featureful, OpenGL-based terminal emulator R kubo IPFS implementation in Go R lazygit Simple terminal UI for git commands R +lib32-gamemode A daemon/lib combo that allows games to request a set of optimisations be temporarily applied to the host OS R libdvdcss Portable abstraction library for DVD decryption R libqalculate Multi-purpose desktop calculator R libreoffice-fresh LibreOffice branch which contains new features and program enhancements R libva-intel-driver VA-API implementation for Intel G45 and HD Graphics family R -licenses A set of common license files R libvirt API for controlling virtualization engines (openvz,kvm,qemu,virtualbox,xen,etc) R linux The Linux kernel and modules R linux-firmware Firmware files for Linux R @@ -141,7 +142,9 @@ lutris Open Gaming Platform R ly TUI display manager A lynx A text browser for the World Wide Web R maestral Open-source Dropbox client A +magic-wormhole Securely transfer data between computers R maim Utility to take a screenshot using imlib2 R +mako Lightweight notification daemon for Wayland R man-db A utility for reading man pages R man-pages Linux man pages R masterpdfeditor-free A complete solution for creation and editing PDF files - Free version without watermark A @@ -152,18 +155,21 @@ micro Modern and intuitive terminal-based text editor R mimeo Open files by MIME-type or file name using regular expressions. A minidlna A DLNA/UPnP-AV Media server (aka ReadyDLNA) R minio-client Replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage R +mopidy-bandcamp Mopidy backend for Bandcamp A mopidy-iris A Mopidy Web client that utilizes the Spotify and EchoNest frameworks. (Formerly Spotmop) A mopidy-local Mopidy extension for local media playback A mopidy-mpd Mopidy extension for controlling playback from MPD clients A mopidy-mpris Mopidy extension for controlling Mopidy through the MPRIS D-Bus interface A mopidy-scrobbler Mopidy extension for scrobbling played tracks to Last.fm A +mopidy-somafm Mopidy extension for playing music from SomaFM A mopidy-spotify Mopidy extension for playing music from Spotify A +mopidy-youtube Mopidy extension for playing music from Youtube A moreutils A growing collection of the unix tools that nobody thought to write thirty years ago R mosh Mobile shell, surviving disconnects with local echo and line editing R mpv-mpris MPRIS plugin for mpv R msmtp A mini smtp client R +mupdf-gl Lightweight PDF and XPS viewer with OpenGL backend R mutt-ics Show calendar event details in mutt A -nano Pico editor clone with enhancements R ncmpcpp Almost exact clone of ncmpc with some new features R needrestart Restart daemons after library updates. A neomutt A version of mutt with added features R @@ -173,12 +179,13 @@ netctl Profile based systemd network management R nethogs A net top tool which displays traffic used per process instead of per IP or interface R network-manager-applet Applet for managing network connections R networkmanager-openconnect NetworkManager VPN plugin for OpenConnect R -newsboat An RSS/Atom feed reader for text terminals R +newsboat RSS/Atom feed reader for text terminals R nextcloud-client Nextcloud desktop client R nfs-utils Support programs for Network File Systems R nmap Utility for network discovery and security auditing R nodejs-markdownlint-cli MarkdownLint Command Line Interface A nodejs-pandiff Prose diffs for any document format supported by Pandoc A +noto-fonts-emoji Google Noto emoji fonts R npm A package manager for javascript R nss-mdns glibc plugin providing host name resolution via mDNS R nsxiv Neo (or New or Not) Simple (or Small or Suckless) X Image Viewer A @@ -189,8 +196,8 @@ nzbget Download from Usenet using .nzb files R offpunk-git Fork of the command-line Gemini client AV-98 with added offline capabilities A oh-my-zsh-git A community-driven framework for managing your zsh configuration. Includes 180+ optional plugins and over 120 themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community A os-prober Utility to detect other OSes on a set of drives R -otf-nerd-fonts-fira-code Monospaced font with programming ligatures. Patched with Nerd Fonts icons. A parallel A shell tool for executing jobs in parallel R +parsec-bin Remotely connect to a gaming pc for a low latency remote computing experience A paru-bin Feature packed AUR helper A pass-coffin A password store extension that hides data inside a signed and encrypted coffin A pass-ssh A pass extension that creates ssh keys with an automatically generated passphrases stored in pass and outputs the public key using fzf or rofi A @@ -201,6 +208,7 @@ pdftk Command-line tool for working with PDFs R peek Simple screen recorder with an easy to use interface R perf Linux kernel performance auditing tool R perl-authen-sasl Perl/CPAN Module Authen::SASL : SASL authentication framework R +piavpn-bin Private Internet Access client A pigz Parallel implementation of the gzip file compressor R pipewire-alsa Low-latency audio/video router and processor - ALSA configuration R playerctl mpris media player controller and lib for spotify, vlc, audacious, bmp, xmms2, and others. R @@ -209,6 +217,7 @@ powertop A tool to diagnose issues with power consumption and power management R prettier An opinionated code formatter for JS, JSON, CSS, YAML and much more R protonvpn Official ProtonVPN metapackage that installs protonvpn-gui and protonvpn-cli, maintained by the ProtonVPN team. A ptpython Python REPL build on top of prompt_toolkit A +pubs Your bibliography on the command line A pulsemixer CLI and curses mixer for pulseaudio R pv A terminal-based tool for monitoring the progress of data through a pipeline. R pyright Type checker for the Python language R @@ -232,7 +241,7 @@ python-pyqt6-networkauth Python bindings for QtNetworkAuth R python-readability-lxml Fast html to text parser (article readability tool) python library R python-slugify A Python slugify application that handles unicode R python-tasklib Python library for interacting with taskwarrior databases R -qemu-base A basic QEMU setup for headless environments R +qemu-desktop A QEMU setup for desktop environments R qt5-wayland Provides APIs for Wayland R qt5-xmlpatterns Support for XPath, XQuery, XSLT and XML schema validation R qt6-svg Classes for displaying the contents of SVG files R @@ -240,7 +249,6 @@ qt6-wayland Provides APIs for Wayland R qtcurve-gtk2 A configurable set of widget styles for KDE and Gtk R quarto-cli-bin An open-source scientific and technical publishing system built on Pandoc (binary from official repo) A qutebrowser A keyboard-driven, vim-like browser based on PyQt5 R -redshift Adjusts the color temperature of your screen according to your surroundings. R refind An EFI boot manager R refind-btrfs Generate rEFInd manual boot stanzas from Btrfs snapshots A reflector A Python 3 module and script to retrieve and filter the latest Pacman mirror list. R @@ -262,6 +270,7 @@ smartmontools Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives R snap-pac Pacman hooks that use snapper to create pre/post btrfs snapshots like openSUSE's YaST R speedtest-cli Command line interface for testing internet bandwidth using speedtest.net R sshfs FUSE client based on the SSH File Transfer Protocol R +steam Valve's digital software delivery system R stow Manage installation of multiple softwares in the same directory tree R surfraw Shell Users' Revolutionary Front Rage Against the Web R swaybg Wallpaper tool for Wayland compositors R @@ -305,6 +314,7 @@ vdirsyncer Synchronize CalDAV and CardDAV. R viddy A modern watch command A vifm-git Ncurses based file manager with vi like keybindings A vim-language-server VimScript language server A +virt-manager Desktop user interface for managing virtual machines R virtualbox Powerful x86 virtualization for enterprise as well as home use R virtualbox-guest-iso The official VirtualBox Guest Additions ISO image R visidata Terminal spreadsheet multitool for discovering and arranging data R @@ -318,13 +328,13 @@ wget Network utility to retrieve files from the Web R wireguard-tools next generation secure network tunnel - tools for configuration R wireless_tools Tools allowing to manipulate the Wireless Extensions R wlopm Wayland output power management. A +wlsunset Day/night gamma adjustments for Wayland compositors A wpa_actiond Daemon that connects to wpa_supplicant and handles connect and disconnect events A wtype xdotool type for wayland R xdg-user-dirs Manage user directories like ~/Desktop and ~/Music R xsv A CLI for indexing, slicing, analyzing, splitting and joining CSV files R yaml-language-server YAML Language Server R yarn Fast, reliable, and secure dependency management R -youtube-dl A command-line program to download videos from YouTube.com and a few more sites R yt-dlp A youtube-dl fork with additional features and fixes R ytfzf A POSIX script to find and watch youtube videos from the terminal R zathura-cb Adds comic book support to zathura R diff --git a/mako/.config/mako/config b/mako/.config/mako/config new file mode 100644 index 0000000..2a53616 --- /dev/null +++ b/mako/.config/mako/config @@ -0,0 +1,30 @@ +sort=-time +layer=overlay +background-color=#2e3440 +width=300 +height=110 +border-size=2 +border-color=#88c0d0 +border-radius=15 +max-icon-size=64 +default-timeout=5000 +ignore-timeout=1 +font=monospace 14 + +[urgency=low] +border-color=#cccccc + +[urgency=normal] +border-color=#d08770 + +[urgency=critical] +#on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga +border-color=#bf616a +default-timeout=0 + +[mode=do-not-disturb] +invisible=1 + +[category=mpd] +default-timeout=2000 +group-by=category diff --git a/mpv/.config/mpv/mpv.conf b/mpv/.config/mpv/mpv.conf index 2426cfc..2bb8cf4 100644 --- a/mpv/.config/mpv/mpv.conf +++ b/mpv/.config/mpv/mpv.conf @@ -81,18 +81,13 @@ volume-max=150 audio-file-auto=fuzzy # playing at different speed will pitch-correct audio-pitch-correction=yes -# no audio popping on seek -audio-stream-silence -# lets mpv calc latency instead of PA; disable if errors on network playback or similar -pulse-latency-hacks=yes ### Video +hwdec=auto profile=opengl-hq opengl-early-flush=auto opengl-pbo=no -# brigheen video slightly to account for daylight displaying -gamma-factor=1.1 # ever so slightly up saturation saturation=12 # interpolation options, will take some more cpu diff --git a/multimedia/.config/beets/config.yaml b/multimedia/.config/beets/config.yaml new file mode 100644 index 0000000..b70f81b --- /dev/null +++ b/multimedia/.config/beets/config.yaml @@ -0,0 +1,113 @@ +# much of this such as the whitelist, canonical list for lasgenre +# is stolen from https://github.com/montchr/beets-config/ with much gratitude + +directory: ~/media/audio/music +library: ~/.local/share/beets/library.db + +threaded: true +art_filename: albumart +# Use the album's original date instead of the release's date +original_date: yes +# Use safer pathnames +asciify_paths: yes +max_filename_length: 255 + +# Long format - I don't need all the extra info for each invocation +#format_item: '[$id] [$album_id] [$singleton] $albumartist - $title - $album - $original_year - [$format - $bitrate $length $filesize]' +#format_album: '[$id] $albumartist - $album - $original_year [$catalognum]' + +clutter: +- Thumbs.db +- .DS_Store +- '*.m3u' +- '*.pls' +- '*.db' + +import: + copy: false + move: true + write: true + bell: true + # incremental: true + languages: + - en + log: ~/.cache/beets.log + quiet_fallback: skip + timid: false + +ignore_hidden: yes +paths: + default: "%the{$albumartist}/$album/$track $title" + singleton: "singletons/%the{$artist - $title}" + comp: compilations/$album/$track $title + albumtype:soundtrack: soundtracks/$album/$track $title + +item_fields: + multidisc: 1 if disctotal > 1 else 0 + artist_differs: 1 if albumartist != artist else 0 + +musicbrainz: + extra_tags: [year, catalognum, country, media, label] + user: martyo + pass: u^a<7YKULz\#CKX\-Fm]K%Up0 + auto: yes + remove: yes + +match: + preferred: + countries: ["US", "UK|GB", "DE", "NL", "SE"] + media: ["Digital Media|File", "CD"] + strong_rec_thresh: 0.15 + medium_red_thresh: 0.25 + rec_gap_thresh: 0.25 + +plugins: + - acousticbrainz + - bandcamp + - chroma + - deezer + - describe + - edit + - embedart + - export + - fetchart + - fromfilename + - ftintitle + - fuzzy + - importadded + - info + - inline + - lastgenre + - lastimport + - mbcollection + - mbsync + - missing + - spotify + - the + - ydl + +edit: + itemfields: track title artist album + albumfields: album albumartist albumtype + ignore_fields: id path + +fetchart: + sources: filesystem coverart discogs amazon albumart + +lastgenre: + auto: true + canonical: ~/.config/beets/lastgenre_canonicallist.yaml + count: 4 + fallback: "" + force: yes + min_weight: 6 + prefer_specific: false + separator: "; " + source: album + whitelist: ~/.config/beets/lastgenre_whitelist.txt + +lastfm: + user: schmitzkater + +bandcamp: + art: true diff --git a/multimedia/.config/beets/lastgenre_canonicallist.yaml b/multimedia/.config/beets/lastgenre_canonicallist.yaml new file mode 100644 index 0000000..db7cc4d --- /dev/null +++ b/multimedia/.config/beets/lastgenre_canonicallist.yaml @@ -0,0 +1,783 @@ +- 2-step +- acapella +- acid +- acid house +- acid jazz +- acid techno +- adult contemporary +- african +- african blues +- african heavy metal +- african hip hop +- afrobeat +- aggrotech +- alternative country +- alternative metal +- alternative rock +- ambient +- ambient dub +- ambient house +- ambient space jazz +- ambient techno +- american folk revival +- americana +- anison +- anti-folk +- apala +- arab pop +- asian underground +- atlanta hip hop: + - snap music +- australian country music +- avant-garde +- avant-garde jazz +- axé +- bachata +- baithak gana +- bakersfield sound +- balearic beat +- ballet +- baltimore club +- barbershop +- baroque pop +- baroque: + - baroque music +- bebop +- benga +- berlin school: + - berlin school of electronic music + - berlin-school +- big band +- big beat +- bikutsi +- black metal: + - viking metal +- blue-eyed soul +- bluegrass: + - progressive bluegrass + - reactionary bluegrass +- blues +- blues country +- blues rock +- blues shouter +- bolero +- bongo flava +- boogie +- boogie-woogie +- bossa nova +- bounce music +- brazilian +- brazilian rock +- breakbeat: + - 4-beat + - acid breaks + - breakbeat hardcore + - broken beat + - florida breaks + - nu skool breaks +- breakcore +- brega +- british blues +- british folk revival +- britpop: + - post-britpop +- bubblegum pop +- c-pop: + - cantopop +- cajun: + - cajun fiddle tunes +- calypso +- canadian blues +- cantata +- cape jazz +- celtic music +- chamber jazz +- chamber music: + - string quartet +- chanson +- chicago blues +- chicago house +- chillwave: + - chill wave +- chimurenga +- chiptune: + - bitpop + - game boy music + - nintendocore + - video game music + - yorkshire bleeps and bass +- choro +- christian country music +- christian hip hop +- christian metal +- christian pop +- christian rock +- chutney +- chutney soca +- classic country +- classical crossover +- classical: + - classical music + - orchestra: + - orchestral + - symphonic + - symphony +- close harmony +- coldwave +- comedy: + - comedy music + - comedy rock + - humor + - parody music + - stand-up +- compas +- computer music +- concerto: + - concerto grosso +- contemporary folk +- contemporary r&b +- continental jazz +- cool jazz +- country +- country blues +- country pop +- country rap +- country rock +- country soul +- country-rap +- coupé-décalé +- cowpunk +- crunkcore +- cybergrind +- dance-punk +- dance-rock +- dancehall +- dansband music +- dark ambient +- dark electro +- darkwave: + - dark wave +- death industrial +- death metal: + - goregrind +- deconstructed club +- deep house +- deep techno +- delta blues +- detroit blues +- detroit techno +- digital hardcore: + - bouncy house + - bouncy techno + - hardstyle + - jumpstyle + - makina + - uk hardcore +- disco: + - disco polo: + - euro disco + - nu-disco +- diva house +- dixieland +- doo wop +- doom metal +- doomcore +- downtempo: + - chill out + - ethnic electronica + - moombahton + - nu jazz +- dream pop +- drone metal +- drone: + - drone music +- drum and bass: + - darkcore + - darkstep + - drumfunk + - drumstep + - hardstep + - intelligent drum and bass + - jump-up + - liquid funk + - neurofunk + - raggacore + - sambass + - techstep +- dub poetry +- dub techno +- dub: + - dub music +- dubstep +- dubtronica +- dungeon synth +- dutch house +- east coast hip hop: + - brick city club + - hardcore hip hop + - mafioso rap + - new jersey hip hop +- easy listening: + - background music + - beautiful music + - elevator music + - furniture music + - middle of the road +- ebm: + - electronic body music: + - futurepop +- edm: + - electronic dance music +- electric blues +- electro +- electro house +- electro-grime +- electro-industrial +- electroacoustic: + - acousmatic music + - electroacoustic improvisation + - live electronics +- electroclash +- electrofunk +- electronic rock: + - alternative dance: + - baggy + - madchester + - electronicore + - ethereal wave + - new rave +- electropop +- electropunk +- emo +- enka +- eurodance: + - bubblegum dance + - italo dance + - turbofolk +- europop: + - austropop + - balkan pop + - french pop + - latin pop + - laïkó + - nederpop + - russian pop +- experimental pop +- experimental rock +- experimental: + - experimental music +- fann at-tanbura +- field recording +- fijiri +- filmi +- folk metal: + - celtic metal + - medieval metal +- folk punk: + - celtic punk + - gypsy punk +- folk rock +- folk: + - filk music + - folk music +- folktronica +- footwork +- forró +- fourth world: + - ethnic ambient + - tribal ambient +- franco-country +- freak folk +- free jazz + - free funk + - free improvisation +- freestyle house +- freestyle rap +- freestyle: + - freestyle music +- french house +- frevo +- fuji music +- funk carioca +- funk metal +- funk: + - deep funk + - go-go +- funky house +- g-funk +- gabber +- gamelan +- gangsta rap +- garage rock +- garage: + - 4x4 + - bassline + - breakstep + - funky + - speed garage +- genge +- ghetto house +- ghettotech +- glam metal +- glam rock +- glitch-hop +- glitch: + - clicks 'n' cuts +- goa: + - dark psytranceon + - goa trance + - psybreaks + - psyprog +- gospel blues +- goth rock: + - gothic rock +- gothic metal +- grime +- grindcore: + - crustgrind + - noisegrind +- grunge: + - post-grunge +- gulf and western +- gypsy jazz +- happy hardcore +- hard bop +- hard rock +- hardbag +- hardcore punk: + - street punk +- hellbilly music +- hi-nrg: + - eurobeat + - hard nrg + - new beat +- highlife +- hill country blues +- hip house +- hip-hop: + - alternative hip hop + - avant-garde hip hop + - chap hop + - chicago hip hop + - conscious hip hop + - detroit hip hop + - hip hop + - hip hop soul + - hip pop + - horrorcore + - hyphy + - jazz rap + - low bap + - lyrical hip hop + - merenrap + - motswako + - new jack swing + - new school hip hop + - old school hip hop + - political hip hop + - rap opera + - songo-salsa + - st. louis hip hop + - twin cities hip hop + - underground hip hop + - urban pasifika +- hiplife +- hokum +- hokum blues +- hong kong english pop +- honky tonk +- horror punk +- house +- houston hip hop: + - chopped and screwed +- idm +- illbient +- indian pop +- indie folk +- indie pop: + - dunedin sound + - twee pop +- indie rock +- indietronica +- industrial +- industrial dance +- industrial folk +- industrial hip hop +- industrial metal: + - neue deutsche härte +- industrial rock +- instrumental country +- instrumental hip hop +- iranian pop +- isicathamiya +- isolationism +- italo disco +- italo house +- j-pop +- jazz blues +- jazz fusion: + - fusion + - fusion jazz +- jazz rock +- jazz-funk +- jazz: + - british dance band + - crossover jazz + - cubop + - ethno jazz + - european free jazz + - m-base + - mainstream jazz + - novelty ragtime + - orchestral jazz + - shibuya-kei + - stride jazz + - third stream + - trad jazz + - vocal jazz + - west coast gypsy jazz + - west coast jazz +- jit +- jump blues +- jungle: + - oldschool jungle: + - darkside jungle + - ragga jungle +- jùjú +- k-pop: + - korean pop +- kansas city blues +- kansas city jazz +- kapuka +- kayōkyoku +- khaliji +- kizomba +- kosmische: + - kraut rock + - krautrock +- kuduro +- kwaito +- kwela +- lambada +- latin house +- latin jazz +- latin: + - chicha + - criolla + - cumbia + - huayno + - mariachi + - ranchera + - tejano +- live coding +- liwa +- lo-fi +- louisiana blues +- lounge: + - lounge music +- lovers rock +- lowercase +- lubbock sound +- luk thung: + - luk krung +- makossa +- maloya +- mambo +- mandopop +- manila sound +- maracatu +- marrabenta +- martial industrial +- mass +- math rock +- mbalax +- mbaqanga +- mbube +- melodic death metal +- memphis blues +- metal: + - heavy metal +- metalcore: + - deathcore + - mathcore: + - djent +- mexican pop +- miami bass +- minimal house +- minimal techno +- minimal wave +- modal jazz +- modern classical: + - contemporary classical +- morlam +- morna +- museve +- musique concrète: + - tape music +- méringue: + - merengue +- música popular brasileira +- música sertaneja +- nashville sound +- neo soul +- neo-bop jazz +- neo-psychedelia +- neo-swing +- neofolk +- neotraditional country +- nerdcore +- new age: + - new age music + - new-age + - new-age music +- new wave +- no wave +- noise pop +- noise rock +- noise: + - harsh noise + - japanoise + - noise music +- northern soul +- nu metal +- onkyokei +- opera +- oratorio +- organum +- outlaw country +- p-funk +- pagode +- palm-wine +- piano blues +- piedmont blues +- pinoy pop +- pop punk +- pop rock +- pop sunda +- pop: + - jangle pop + - latin ballad + - levenslied + - louisiana swamp pop + - motorpop + - new romanticism + - pop rap + - popera + - schlager + - sophisti-pop + - sunshine pop + - traditional pop music + - vispop + - wonky pop +- post-bop +- post-disco: + - dance-pop +- post-hardcore +- post-punk +- post-punk revival +- post-rock: + - post-metal +- power electronics +- power metal +- power noise +- powerviolence +- progressive country +- progressive electronic: + - progressive breaks + - progressive drum & bass + - progressive house/trance: + - disco house + - dream house + - space house + - progressive techno +- progressive folk +- progressive house +- progressive metal +- progressive rock: + - canterbury scene + - new prog + - rock in opposition +- psychedelic folk +- psychedelic pop +- psychedelic rock: + - acid rock + - freakbeat + - raga rock +- psychobilly +- psychobilly +- punk blues +- punk jazz +- punk: + - anarcho punk: + - crust punk: + - d-beat + - art punk + - christian punk + - deathrock + - garage punk + - skate punk +- punta +- punta rock +- r&b: + - rhythm and blues +- ragga: + - raggamuffin +- ragini +- ragtime +- rap rock: + - rap metal + - rapcore +- rasin +- rave: + - rave music +- raï +- red dirt +- reggae: + - 2 tone + - reggae en español: + - reggae 110 + - reggae bultrón + - romantic flow + - spanish reggae + - reggae fusion +- reggaeton +- requiem +- riot grrrl +- rock and roll +- rock: + - art rock + - beat music + - chinese rock + - dark cabaret + - desert rock + - paisley underground + - power pop + - visual kei: + - nagoya kei +- rockabilly +- rocksteady +- roots reggae +- sacred music: + - cantique +- gregorian chant +- sadcore +- sakara +- salsa +- samba +- samba rock +- sawt +- screamo +- sega +- seggae +- semba +- sertanejo +- shoegaze +- ska +- ska jazz +- ska punk: + - ska-core +- slowcore +- sludge metal +- smooth jazz +- soca +- soft rock +- son +- sonata +- soukous +- soul +- soul blues +- soul jazz +- south and southeast asian: + - baila + - bhangra + - bhojpuri + - dangdut + - lavani +- southern hip hop +- southern rock +- space age pop +- space disco: + - cosmic disco +- space rock +- speed metal +- speedcore +- st. louis blues +- stoner metal +- stoner rock +- straight-ahead jazz +- sufi rock +- sung poetry +- surf pop +- surf rock +- swamp blues +- swing +- swing house +- symphonic metal +- synthcore +- synthpop +- synthpunk +- taarab +- taiwanese pop +- tech house +- technical death metal +- techno-folk +- techno: + - free tekno + - nortec + - schranz + - techno-dnb + - tecno brega + - toytown techno +- technopop +- tecnobrega +- teen pop +- terrorcore +- texas blues +- texas country +- thai pop +- thrash metal: + - crossover thrash + - groove metal + - thrash +- thrashcore +- timba +- traditional country music +- trance: + - acid trance + - classic trance + - dream trance + - hard trance + - progressive trance + - psychedelic trance + - psytrance + - tech trance + - uplifting trance: + - orchestral uplifting + - vocal trance +- trap +- trip-hop: + - trip hop +- tropicalia +- truck-driving country +- turkish pop +- turntablism +- twoubadou +- uk garage +- uk hard house +- us garage +- vaporwave +- vocal house +- west coast blues +- west coast hip hop: + - chicano rap + - jerkin' +- western swing +- witch house +- world: + - world music +- worldbeat +- world fusion +- zouglou +- zouk +- zouk-lambada +- zydeco diff --git a/multimedia/.config/beets/lastgenre_whitelist.txt b/multimedia/.config/beets/lastgenre_whitelist.txt new file mode 100644 index 0000000..fd5bdd5 --- /dev/null +++ b/multimedia/.config/beets/lastgenre_whitelist.txt @@ -0,0 +1,491 @@ +2-step +acapella +acid +acid house +acid jazz +acid techno +adult contemporary +african +african blues +african heavy metal +african hip hop +afrobeat +aggrotech +alternative country +alternative metal +alternative rock +ambient +ambient dub +ambient house +ambient space jazz +ambient techno +american folk revival +americana +anison +anti-folk +apala +arab pop +asian underground +atlanta hip hop +australian country music +avant-garde +avant-garde jazz +axé +bachata +baithak gana +bakersfield sound +balearic beat +ballet +baltimore club +barbershop +baroque pop +baroque +bebop +benga +berlin school +big band +big beat +bikutsi +black metal +blue-eyed soul +bluegrass +blues +blues country +blues rock +blues shouter +bolero +bongo flava +boogie +boogie-woogie +bossa nova +bounce music +brazilian +brazilian rock +breakbeat +breakcore +brega +british blues +british folk revival +britpop +bubblegum pop +c-pop +cajun +calypso +canadian blues +cantata +cape jazz +celtic music +chamber jazz +chamber music +chanson +chicago blues +chicago house +chillwave +chimurenga +chiptune +choro +christian country music +christian hip hop +christian metal +christian pop +christian rock +chutney +chutney soca +classic country +classical crossover +classical +close harmony +coldwave +comedy +compas +computer music +concerto +contemporary folk +contemporary r&b +continental jazz +cool jazz +country +country blues +country pop +country rap +country rock +country soul +country-rap +coupé-décalé +cowpunk +crunkcore +cybergrind +dance-punk +dance-rock +dancehall +dansband music +dark ambient +dark electro +darkwave +death industrial +death metal +deconstructed club +deep house +deep techno +delta blues +detroit blues +detroit techno +digital hardcore +disco +diva house +dixieland +doo wop +doom metal +doomcore +downtempo +dream pop +drone metal +drone +drum and bass +dub poetry +dub techno +dub +dubstep +dubtronica +dungeon synth +dutch house +east coast hip hop +easy listening +ebm +edm +electric blues +electro +electro house +electro-grime +electro-industrial +electroacoustic +electroclash +electrofunk +electronic rock +electropop +electropunk +emo +enka +eurodance +europop +experimental pop +experimental rock +experimental +fann at-tanbura +field recording +fijiri +filmi +folk metal +folk punk +folk rock +folk +folktronica +footwork +forró +fourth world +franco-country +freak folk +free jazz +freestyle house +freestyle rap +freestyle +french house +frevo +fuji music +funk carioca +funk metal +funk +funky house +g-funk +gabber +gamelan +gangsta rap +garage rock +garage +genge +ghetto house +ghettotech +glam metal +glam rock +glitch-hop +glitch +goa +gospel blues +goth rock +gothic metal +grime +grindcore +grunge +gulf and western +gypsy jazz +happy hardcore +hard bop +hard rock +hardbag +hardcore punk +hellbilly music +hi-nrg +highlife +hill country blues +hip house +hip-hop +hiplife +hokum +hokum blues +hong kong english pop +honky tonk +horror punk +house +houston hip hop +idm +illbient +indian pop +indie folk +indie pop +indie rock +indietronica +industrial +industrial dance +industrial folk +industrial hip hop +industrial metal +industrial rock +instrumental country +instrumental hip hop +iranian pop +isicathamiya +isolationism +italo disco +italo house +j-pop +jazz blues +jazz fusion +jazz rock +jazz-funk +jazz +jit +jump blues +jungle +jùjú +k-pop +kansas city blues +kansas city jazz +kapuka +kayōkyoku +khaliji +kizomba +kosmische +kuduro +kwaito +kwela +lambada +latin house +latin jazz +latin +live coding +liwa +lo-fi +louisiana blues +lounge +lovers rock +lowercase +lubbock sound +luk thung +makossa +maloya +mambo +mandopop +manila sound +maracatu +marrabenta +martial industrial +mass +math rock +mbalax +mbaqanga +mbube +melodic death metal +memphis blues +metal +metalcore +mexican pop +miami bass +minimal house +minimal techno +minimal wave +modal jazz +modern classical +morlam +morna +museve +musique concrète +méringue +música popular brasileira +música sertaneja +nashville sound +neo soul +neo-bop jazz +neo-psychedelia +neo-swing +neofolk +neotraditional country +nerdcore +new age +new wave +no wave +noise pop +noise rock +noise +northern soul +nu metal +onkyokei +opera +oratorio +organum +outlaw country +p-funk +pagode +palm-wine +piano blues +piedmont blues +pinoy pop +pop punk +pop rock +pop sunda +pop +post-bop +post-disco +post-hardcore +post-punk +post-punk revival +post-rock +power electronics +power metal +power noise +powerviolence +progressive country +progressive electronic +progressive folk +progressive house +progressive metal +progressive rock +psychedelic folk +psychedelic pop +psychedelic rock +psychobilly +psychobilly +punk blues +punk jazz +punk +punta +punta rock +r&b +ragga +ragini +ragtime +rap rock +rasin +rave +raï +red dirt +reggae +reggaeton +requiem +riot grrrl +rock and roll +rock +rockabilly +rocksteady +roots reggae +sacred music +sadcore +sakara +salsa +samba +samba rock +sawt +screamo +sega +seggae +semba +sertanejo +shoegaze +ska +ska jazz +ska punk +slowcore +sludge metal +smooth jazz +soca +soft rock +son +sonata +soukous +soul +soul blues +soul jazz +south and southeast asian +southern hip hop +southern rock +space age pop +space disco +space rock +speed metal +speedcore +st. louis blues +stoner metal +stoner rock +straight-ahead jazz +sufi rock +sung poetry +surf pop +surf rock +swamp blues +swing +swing house +symphonic metal +synthcore +synthpop +synthpunk +taarab +taiwanese pop +tech house +technical death metal +techno-folk +techno +technopop +tecnobrega +teen pop +terrorcore +texas blues +texas country +thai pop +thrash metal +thrashcore +timba +traditional country music +trance +trap +trip-hop +tropicalia +truck-driving country +turkish pop +turntablism +twoubadou +uk garage +uk hard house +us garage +vaporwave +vocal house +west coast blues +west coast hip hop +western swing +witch house +world +worldbeat +world fusion +gregorian chant +zouglou +zouk +zouk-lambada +zydeco diff --git a/multimedia/.config/mopidy/mopidy.conf b/multimedia/.config/mopidy/mopidy.conf new file mode 100644 index 0000000..c43d906 --- /dev/null +++ b/multimedia/.config/mopidy/mopidy.conf @@ -0,0 +1,261 @@ +# For further information about options in this file see: +# https://docs.mopidy.com/ +# +# The initial commented out values reflect the defaults as of: +# Mopidy 3.4.1 +# Mopidy-Bandcamp 1.1.5 +# Mopidy-File 3.4.1 +# Mopidy-HTTP 3.4.1 +# Mopidy-Iris 3.65.0 +# Mopidy-Local 3.2.1 +# Mopidy-M3U 3.4.1 +# Mopidy-MPD 3.3.0 +# Mopidy-MPRIS 3.0.3 +# Mopidy-Scrobbler 2.0.1 +# Mopidy-SoftwareMixer 3.4.1 +# Mopidy-SomaFM 2.0.2 +# Mopidy-Spotify 4.1.1 +# Mopidy-Stream 3.4.1 +# Mopidy-YouTube 3.5 +# +# Available options and defaults might have changed since then, +# run `mopidy config` to see the current effective config and +# `mopidy --version` to check the current version. + +[core] +#cache_dir = $XDG_CACHE_DIR/mopidy +#config_dir = $XDG_CONFIG_DIR/mopidy +#data_dir = $XDG_DATA_DIR/mopidy +#max_tracklist_length = 10000 +#restore_state = false + +[logging] +#verbosity = 0 +#format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)s\n %(message)s +#color = true +#config_file = + +[audio] +#mixer = software +#mixer_volume = +#output = autoaudiosink +#buffer_time = + +[proxy] +#scheme = +#hostname = +#port = +#username = +#password = + +[spotify] +enabled = false +#username = +#password = +#client_id = +#client_secret = +#bitrate = 160 +#volume_normalization = true +#private_session = false +timeout = 5000 +#allow_cache = true +#allow_network = true +#allow_playlists = true +#search_album_count = 20 +#search_artist_count = 10 +#search_track_count = 50 +#toplist_countries = + +[iris] +#enabled = true +#country = NZ +#locale = en_NZ +#verify_certificates = true +#snapcast_enabled = true +#snapcast_host = localhost +#snapcast_port = 1780 +#snapcast_ssl = false +#snapcast_stream = Default +#spotify_authorization_url = https://jamesbarnsley.co.nz/iris/auth_spotify.php +#lastfm_authorization_url = https://jamesbarnsley.co.nz/iris/auth_lastfm.php +#genius_authorization_url = https://jamesbarnsley.co.nz/iris/auth_genius.php +#data_dir = $XDG_DATA_DIR/iris + +[file] +enabled = false +#media_dirs = +# $XDG_MUSIC_DIR|Music +# ~/|Home +#excluded_file_extensions = +# .directory +# .html +# .jpeg +# .jpg +# .log +# .nfo +# .pdf +# .png +# .txt +# .zip +#show_dotfiles = false +#follow_symlinks = false +#metadata_timeout = 1000 + +[http] +#enabled = true +#hostname = 127.0.0.1 +#port = 6680 +#zeroconf = Mopidy HTTP server on $hostname +#allowed_origins = +#csrf_protection = true +#default_app = mopidy + +[m3u] +#enabled = true +#base_dir = $XDG_MUSIC_DIR +#default_encoding = latin-1 +#default_extension = .m3u8 +#playlists_dir = + +[softwaremixer] +#enabled = true + +[stream] +#enabled = true +#protocols = +# http +# https +# mms +# rtmp +# rtmps +# rtsp +#metadata_blacklist = +#timeout = 5000 + +[mpd] +#enabled = true +#hostname = 127.0.0.1 +#port = 6600 +#password = +#max_connections = 20 +#connection_timeout = 60 +#zeroconf = Mopidy MPD server on $hostname +#command_blacklist = +# listall +# listallinfo +#default_playlist_scheme = m3u + +[local] +#enabled = true +#max_search_results = 100 +media_dir = $XDG_MUSIC_DIR +#scan_timeout = 1000 +#scan_flush_threshold = 100 +#scan_follow_symlinks = false +#included_file_extensions = +#excluded_file_extensions = +# .cue +# .directory +# .html +# .jpeg +# .jpg +# .log +# .nfo +# .pdf +# .png +# .txt +# .zip +#directories = +# Albums local:directory?type=album +# Artists local:directory?type=artist +# Composers local:directory?type=artist&role=composer +# Genres local:directory?type=genre +# Performers local:directory?type=artist&role=performer +# Release Years local:directory?type=date&format=%25Y +# Tracks local:directory?type=track +# Last Week's Updates local:directory?max-age=604800 +# Last Month's Updates local:directory?max-age=2592000 +#timeout = 10 +#use_artist_sortname = false +#album_art_files = +# *.jpg +# *.jpeg +# *.png + +[mpris] +#enabled = true +#bus_type = session + +[scrobbler] +#enabled = true +#username = +#password = + +[somafm] +#enabled = true +#encoding = mp3 +#quality = fast +dj_as_artist = false + +[youtube] +#enabled = true +allow_cache = true +#youtube_api_key = +#search_results = 15 +#playlist_max_videos = 20 +#api_enabled = false +#channel_id = +#musicapi_enabled = false +#musicapi_cookie = +#autoplay_enabled = false +#strict_autoplay = false +#max_autoplay_length = 600 +#max_degrees_of_separation = 3 +youtube_dl_package = yt-dlp + +[bandcamp] +enabled = false +#discover_pages = 1 +#collection_items = 50 +discover_genres = +# All +# Electronic +# Rock +# Metal +# Alternative +# Hip-Hop/Rap +# Experimental +# Punk +# Folk +# Pop +# Ambient +# Soundtrack +# World +# Jazz +# Acoustic +# Funk +# R&B/Soul +# Devotional +# Classical +# Reggae +# Podcasts +# Country +# Spoken Word +# Comedy +# Blues +# Kids +# Audiobooks +# Latin +discover_tags = + Outrun + Future Funk + Alternative Hip-Hop + Cozy Synth + Post Metal + Post Punk +# Tokyo, Japan +#image_sizes = +# 10 +# 5 +# 2 +#identity = diff --git a/multimedia/.config/ncmpcpp/bindings b/multimedia/.config/ncmpcpp/bindings new file mode 100644 index 0000000..0c8a6ad --- /dev/null +++ b/multimedia/.config/ncmpcpp/bindings @@ -0,0 +1,630 @@ + +def_key "+" + show_clock +def_key "=" + volume_up + +def_key "j" + scroll_down +def_key "k" + scroll_up +def_key "ctrl-u" + page_up +def_key "ctrl-d" + page_down +def_key "u" + page_up +def_key "d" + page_down +def_key "h" + previous_column +def_key "l" + next_column +def_key "." + show_lyrics +def_key "n" + next_found_item +def_key "N" + previous_found_item +# not used but bound +def_key "J" + move_selected_items_down +def_key "K" + move_selected_items_up +def_key "h" + jump_to_parent_directory +def_key "l" + enter_directory +def_key "l" + run_action +def_key "l" + play_item +def_key "m" + show_media_library +def_key "m" + toggle_media_library_columns_mode +def_key "t" + select_item + scroll_down +def_key "v" + select_range +def_key "ctrl-v" + select_item +def_key "V" + remove_selection +def_key "G" + move_end +def_key "g" + move_home +def_key "U" + update_database +def_key "s" + reset_search_engine +def_key "s" + show_search_engine +#def_key "f" +# show_browser +#def_key "f" +# change_browse_mode +def_key "x" + delete_playlist_items +def_key "P" + move_selected_items_to +def_key "f" + seek_forward +def_key "b" + seek_backward +def_key "'" + jump_to_playing_song + +############################################################## +## This is the example bindings file. Copy it to ## +## $XDG_CONFIG_HOME/ncmpcpp/bindings or ~/.ncmpcpp/bindings ## +## and set up your preferences. ## +############################################################## +## +##### General rules ##### +## +## 1) Because each action has runtime checks whether it's +## ok to run it, a few actions can be bound to one key. +## Actions will be bound in order given in configuration +## file. When a key is pressed, first action in order +## will test itself whether it's possible to run it. If +## test succeeds, action is executed and other actions +## bound to this key are ignored. If it doesn't, next +## action in order tests itself etc. +## +## 2) It's possible to bind more that one action at once +## to a key. It can be done using the following syntax: +## +## def_key "key" +## action1 +## action2 +## ... +## +## This creates a chain of actions. When such chain is +## executed, each action in chain is run until the end of +## chain is reached or one of its actions fails to execute +## due to its requirements not being met. If multiple actions +## and/or chains are bound to the same key, they will be +## consecutively run until one of them gets fully executed. +## +## 3) When ncmpcpp starts, bindings configuration file is +## parsed and then ncmpcpp provides "missing pieces" +## of default keybindings. If you want to disable some +## bindings, there is a special action called 'dummy' +## for that purpose. Eg. if you want to disable ability +## to crop playlists, you need to put the following +## into configuration file: +## +## def_key "C" +## dummy +## +## After that ncmpcpp will not bind any default action +## to this key. +## +## 4) To let you write simple macros, the following special +## actions are provided: +## +## - push_character "character" - pushes given special +## character into input queue, so it will be immediately +## picked by ncmpcpp upon next call to readKey function. +## Accepted values: mouse, up, down, page_up, page_down, +## home, end, space, enter, insert, delete, left, right, +## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\, +## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace. +## In addition, most of these names can be prefixed with +## alt-/ctrl-/shift- to be recognized with the appropriate +## modifier key(s). +## +## - push_characters "string" - pushes given string into +## input queue. +## +## - require_runnable "action" - checks whether given action +## is runnable and fails if it isn't. This is especially +## useful when mixed with previous two functions. Consider +## the following macro definition: +## +## def_key "key" +## push_characters "custom_filter" +## apply_filter +## +## If apply_filter can't be currently run, we end up with +## sequence of characters in input queue which will be +## treated just as we typed them. This may lead to unexpected +## results (in this case 'c' will most likely clear current +## playlist, 'u' will trigger database update, 's' will stop +## playback etc.). To prevent such thing from happening, we +## need to change above definition to this one: +## +## def_key "key" +## require_runnable "apply_filter" +## push_characters "custom_filter" +## apply_filter +## +## Here, first we test whether apply_filter can be actually run +## before we stuff characters into input queue, so if condition +## is not met, whole chain is aborted and we're fine. +## +## - require_screen "screen" - checks whether given screen is +## currently active. accepted values: browser, clock, help, +## media_library, outputs, playlist, playlist_editor, +## search_engine, tag_editor, visualizer, last_fm, lyrics, +## selected_items_adder, server_info, song_info, +## sort_playlist_dialog, tiny_tag_editor. +## +## - run_external_command "command" - runs given command using +## system() function. +## +## - run_external_console_command "command" - runs given console +## command using system() function. +## +## +## 5) In addition to binding to a key, you can also bind actions +## or chains of actions to a command. If it comes to commands, +## syntax is very similar to defining keys. Here goes example +## definition of a command: +## +## def_command "quit" [deferred] +## stop +## quit +## +## If you execute the above command (which can be done by +## invoking action execute_command, typing 'quit' and pressing +## enter), ncmpcpp will stop the player and then quit. Note the +## presence of word 'deferred' enclosed in square brackets. It +## tells ncmpcpp to wait for confirmation (ie. pressing enter) +## after you typed quit. Instead of 'deferred', 'immediate' +## could be used. Then ncmpcpp will not wait for confirmation +## (enter) and will execute the command the moment it sees it. +## +## Note: while command chains are executed, internal environment +## update (which includes current window refresh and mpd status +## update) is not performed for performance reasons. However, it +## may be desirable to do so in some situration. Therefore it's +## possible to invoke by hand by performing 'update enviroment' +## action. +## +## Note: There is a difference between: +## +## def_key "key" +## action1 +## +## def_key "key" +## action2 +## +## and +## +## def_key "key" +## action1 +## action2 +## +## First one binds two single actions to the same key whilst +## second one defines a chain of actions. The behavior of +## these two is different and is described in (1) and (2). +## +## Note: Function def_key accepts non-ascii characters. +## +##### List of unbound actions ##### +## +## The following actions are not bound to any key/command: +## +## - set_volume +## - load +## +# +#def_key "mouse" +# mouse_event +# +#def_key "up" +# scroll_up +# +#def_key "shift-up" +# select_item +# scroll_up +# +#def_key "down" +# scroll_down +# +#def_key "shift-down" +# select_item +# scroll_down +# +#def_key "[" +# scroll_up_album +# +#def_key "]" +# scroll_down_album +# +#def_key "{" +# scroll_up_artist +# +#def_key "}" +# scroll_down_artist +# +#def_key "page_up" +# page_up +# +#def_key "page_down" +# page_down +# +#def_key "home" +# move_home +# +#def_key "end" +# move_end +# +#def_key "insert" +# select_item +# +#def_key "enter" +# enter_directory +# +#def_key "enter" +# toggle_output +# +#def_key "enter" +# run_action +# +#def_key "enter" +# play_item +# +#def_key "space" +# add_item_to_playlist +# +#def_key "space" +# toggle_lyrics_update_on_song_change +# +#def_key "space" +# toggle_visualization_type +# +#def_key "delete" +# delete_playlist_items +# +#def_key "delete" +# delete_browser_items +# +#def_key "delete" +# delete_stored_playlist +# +#def_key "right" +# next_column +# +#def_key "right" +# slave_screen +# +#def_key "right" +# volume_up +# +#def_key "+" +# volume_up +# +#def_key "left" +# previous_column +# +#def_key "left" +# master_screen +# +#def_key "left" +# volume_down +# +#def_key "-" +# volume_down +# +#def_key ":" +# execute_command +# +#def_key "tab" +# next_screen +# +#def_key "shift-tab" +# previous_screen +# +#def_key "f1" +# show_help +# +#def_key "1" +# show_playlist +# +#def_key "2" +# show_browser +# +#def_key "2" +# change_browse_mode +# +#def_key "3" +# show_search_engine +# +#def_key "3" +# reset_search_engine +# +#def_key "4" +# show_media_library +# +#def_key "4" +# toggle_media_library_columns_mode +# +#def_key "5" +# show_playlist_editor +# +#def_key "6" +# show_tag_editor +# +#def_key "7" +# show_outputs +# +#def_key "8" +# show_visualizer +# +#def_key "=" +# show_clock +# +#def_key "@" +# show_server_info +# +#def_key "s" +# stop +# +#def_key "p" +# pause +# +#def_key ">" +# next +# +#def_key "<" +# previous +# +#def_key "ctrl-h" +# jump_to_parent_directory +# +#def_key "ctrl-h" +# replay_song +# +#def_key "backspace" +# jump_to_parent_directory +# +#def_key "backspace" +# replay_song +# +#def_key "backspace" +# play +# +#def_key "f" +# seek_forward +# +#def_key "b" +# seek_backward +# +#def_key "r" +# toggle_repeat +# +#def_key "z" +# toggle_random +# +#def_key "y" +# save_tag_changes +# +#def_key "y" +# start_searching +# +#def_key "y" +# toggle_single +# +#def_key "R" +# toggle_consume +# +#def_key "Y" +# toggle_replay_gain_mode +# +#def_key "T" +# toggle_add_mode +# +#def_key "|" +# toggle_mouse +# +#def_key "#" +# toggle_bitrate_visibility +# +#def_key "Z" +# shuffle +# +#def_key "x" +# toggle_crossfade +# +#def_key "X" +# set_crossfade +# +#def_key "u" +# update_database +# +#def_key "ctrl-s" +# sort_playlist +# +#def_key "ctrl-s" +# toggle_browser_sort_mode +# +#def_key "ctrl-s" +# toggle_media_library_sort_mode +# +#def_key "ctrl-r" +# reverse_playlist +# +#def_key "ctrl-f" +# apply_filter +# +#def_key "ctrl-_" +# select_found_items +# +#def_key "/" +# find +# +#def_key "/" +# find_item_forward +# +#def_key "?" +# find +# +#def_key "?" +# find_item_backward +# +#def_key "." +# next_found_item +# +#def_key "," +# previous_found_item +# +#def_key "w" +# toggle_find_mode +# +#def_key "e" +# edit_song +# +#def_key "e" +# edit_library_tag +# +#def_key "e" +# edit_library_album +# +#def_key "e" +# edit_directory_name +# +#def_key "e" +# edit_playlist_name +# +#def_key "e" +# edit_lyrics +# +#def_key "i" +# show_song_info +# +#def_key "I" +# show_artist_info +# +#def_key "g" +# jump_to_position_in_song +# +#def_key "l" +# show_lyrics +# +#def_key "ctrl-v" +# select_range +# +#def_key "v" +# reverse_selection +# +#def_key "V" +# remove_selection +# +#def_key "B" +# select_album +# +#def_key "a" +# add_selected_items +# +#def_key "c" +# clear_playlist +# +#def_key "c" +# clear_main_playlist +# +#def_key "C" +# crop_playlist +# +#def_key "C" +# crop_main_playlist +# +#def_key "m" +# move_sort_order_up +# +#def_key "m" +# move_selected_items_up +# +#def_key "n" +# move_sort_order_down +# +#def_key "n" +# move_selected_items_down +# +#def_key "M" +# move_selected_items_to +# +#def_key "A" +# add +# +#def_key "S" +# save_playlist +# +#def_key "o" +# jump_to_playing_song +# +#def_key "G" +# jump_to_browser +# +#def_key "G" +# jump_to_playlist_editor +# +#def_key "~" +# jump_to_media_library +# +#def_key "E" +# jump_to_tag_editor +# +#def_key "U" +# toggle_playing_song_centering +# +#def_key "P" +# toggle_display_mode +# +#def_key "\\" +# toggle_interface +# +#def_key "!" +# toggle_separators_between_albums +# +#def_key "L" +# toggle_lyrics_fetcher +# +#def_key "F" +# fetch_lyrics_in_background +# +#def_key "alt-l" +# toggle_fetching_lyrics_in_background +# +#def_key "ctrl-l" +# toggle_screen_lock +# +#def_key "`" +# toggle_library_tag_type +# +#def_key "`" +# refetch_lyrics +# +#def_key "`" +# add_random_items +# +#def_key "ctrl-p" +# set_selected_items_priority +# +#def_key "q" +# quit +# diff --git a/multimedia/.config/ncmpcpp/config b/multimedia/.config/ncmpcpp/config new file mode 100644 index 0000000..7643757 --- /dev/null +++ b/multimedia/.config/ncmpcpp/config @@ -0,0 +1,56 @@ +mouse_support = "yes" +jump_to_now_playing_song_at_start = "yes" +playlist_disable_highlight_delay = "3" +message_delay_time = "1" +song_window_title_format = "{%a - }{%t}|{%f}" +titles_visibility = "yes" +header_text_scrolling = "yes" +display_remaining_time = "yes" +ignore_leading_the = "yes" +colors_enabled = "yes" +color1 = "cyan" +color2 = "blue" +current_item_prefix = "$(magenta_236)" +current_item_suffix = "$(end)" +current_item_inactive_column_prefix = "$(magenta)" +current_item_inactive_column_suffix = "$(end)" + +[header] +header_visibility = "no" +# header_window_color = "magenta" +header_window_color = "default" +volume_color = "4" +# state_flags_color = "blue" +# main_window_color = "cyan" +state_line_color = "9" + +[playlist] +playlist_display_mode = "columns" #(classic/columns) +browser_display_mode = "columns" #(classic/columns) +song_columns_list_format = "(33)[cyan]{t} (32)[green]{a} (30)[magenta]{b} (5f)[blue]{l}" +song_list_format = "{%a - }{%t}|{$5%f$9}$R{$7(%l)$9}" +now_playing_prefix = "$b" +now_playing_suffix = "$/b" +browser_playlist_prefix = "$1»$1 " + +[statusbar] +#progressbar_look = "─╼" (Alternative look) +progressbar_look = "━━━" +progressbar_color = "9" +statusbar_visibility = "yes" +progressbar_elapsed_color = "4" +statusbar_color = "cyan" +song_status_format = "$5$b%t $5$/b• $3%a $5• $6%b {(Disc %d) }$5• $4%y" + +[library] +song_library_format = "{{%a - %t}|{%f}}{$R%l}" +empty_tag_marker = "" +empty_tag_color = "9" + +[global] +user_interface = "alternative" #(classic/alternative) +main_window_color = "default" +centered_cursor = "yes" +enable_window_title = "yes" +external_editor = "nvim" +execute_on_song_change="notify-send "Now Playing ♫" "$(playerctl metadata artist): $(playerctl metadata title)" -i $HOME/.local/share/mopidy/local/images/$(playerctl metadata mpris:artUrl | sed -e 's|/local/||') -c mpd -u low" diff --git a/multimedia/.config/sh/env.d/beets-ensure-library-dir.sh b/multimedia/.config/sh/env.d/beets-ensure-library-dir.sh new file mode 100644 index 0000000..5ac8fa0 --- /dev/null +++ b/multimedia/.config/sh/env.d/beets-ensure-library-dir.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +# Ensure the directory for beets library exists or it errors out on startup + +[ -e "${XDG_DATA_HOME:-$HOME/.local/share}/beets" ] || mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}/beets" diff --git a/office/.config/neomutt/mailcap b/office/.config/neomutt/mailcap index c1634ae..d1afae9 100644 --- a/office/.config/neomutt/mailcap +++ b/office/.config/neomutt/mailcap @@ -10,7 +10,7 @@ text/calendar; mutt-ics; copiousoutput application/ics; mutt-ics; copiousoutput # open images externally -image/*; nsxiv %s ; +image/*; imv %s ; # open videos in mpv video/*; mpv --autofit-larger=90\%x90\% %s; needsterminal; diff --git a/office/.config/neomutt/maps b/office/.config/neomutt/maps index 6874cd3..da5854d 100644 --- a/office/.config/neomutt/maps +++ b/office/.config/neomutt/maps @@ -30,6 +30,10 @@ bind pager,index za collapse-thread bind pager,index zA collapse-all bind pager,index zr reconstruct-thread bind pager,index zR entire-thread +# Saner copy/move dialogs +macro index,pager C "?" "copy a message to a mailbox" +macro index,pager M "?" "move a message to a mailbox" +macro index,pager gM "?" "move thread to a mailbox" # Email completion bindings bind editor complete-query @@ -78,9 +82,6 @@ macro index,pager \CU "|urlview" "call urlview to open links" macro index O "export MBSYNC_PRE=true; sync-mail" "refresh all e-mail" macro index o "export MBSYNC_PRE=true; sync-mail gmail-inbox" "refresh inbox e-mail" -# Saner copy/move dialogs -macro index C "?" "copy a message to a mailbox" -macro index M "?" "move a message to a mailbox" # Send mail to taskwarrior macro index,pager T "mutt2task -c -d -t" "add mail as task to taskwarrior with custom description and tags" diff --git a/qutebrowser/.config/qutebrowser/url.py b/qutebrowser/.config/qutebrowser/url.py index 3048daf..852501a 100644 --- a/qutebrowser/.config/qutebrowser/url.py +++ b/qutebrowser/.config/qutebrowser/url.py @@ -13,7 +13,6 @@ c.url.searchengines = { "g": "https://www.google.com/search?q={}", "gh": "https://github.com/search?q={}", "gol": "https://golang.org/pkg/{}/", - "gt": "https://translate.google.com/#auto/de/{}", "hn": "https://hn.algolia.com/?q={}", "kb": "https://soeg.kb.dk/discovery/search?query=any,contains,{}&lang=en", "l": "https://links.martyoeh.me/?searchterm={}&searchtags=", @@ -21,6 +20,7 @@ c.url.searchengines = { "man": "https://manned.org/browse/search?q={}", "maps": "https://www.qwant.com/maps/?q={}", "pcw": "https://www.pcgamingwiki.com/w/index.php?search={}", + "py": "https://pypi.org/search/?q={}", "r": "https://www.reddit.com/r/{}", "t": "https://www.thesaurus.com/browse/{}", "w": "https://en.wikipedia.org/w/index.php?search={}", diff --git a/scripts/.local/bin/wallcrop.sh b/scripts/.local/bin/wallcrop.sh new file mode 100755 index 0000000..9155dd8 --- /dev/null +++ b/scripts/.local/bin/wallcrop.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +# A simple script to make it easy for me to crop newly found wallpapers +# to size, for one 1920x1080 screen on the left and one on the right. +# The resulting images can be used with wallpaper programs (e.g. swww) +# to nicely display per monitor without stretching. +# +# Usage: wallcrop.sh path/to/my/imagefile.jpg +# It will drop two cut versions in the same directory and tell you where +# they are. + +# TODO check image dimensions and warn user if not 3840x1080, or at least if smaller than cropped area + +main() { + fullname="$1" + filename=$(basename -- "$fullname") + pathonly=${fullname/$filename/} + extension="${filename##*.}" + filename="${filename%.*}" + + out_left="${pathonly}${filename}_l.$extension" + out_right="${pathonly}${filename}_r.$extension" + + printf "input: %s\noutput left:%s\noutput right: %s\n" "$fullname" "$out_left" "$out_right" + gm convert "$fullname" -crop 1920x1080+0+0 "$out_left" + gm convert "$fullname" -crop 1920x1080+1920+0 "$out_right" +} + +usage="$(basename "$0") [-h] path/to/my/imagefile.jpg -- Simple image cropper for dual screen 1920x1080 setups. + +A simple script to make it easy for me to crop newly found wallpapers +to size, for one 1920x1080 screen on the left and one on the right. +The resulting images can be used with wallpaper programs (e.g. swww) +to nicely display per monitor without stretching. + + -h show this help text + +It will drop two cut versions in the same directory and tell you where +they are." + +while getopts ':h' option; do + case "$option" in + h) + echo "$usage" + exit + ;; + :) + printf "missing argument for -%s\n" "$OPTARG" >&2 + echo "$usage" >&2 + exit 1 + ;; + \?) + printf "illegal option: -%s\n" "$OPTARG" >&2 + echo "$usage" >&2 + exit 1 + ;; + esac +done +shift $((OPTIND - 1)) + +if [ "$#" -ne 1 ]; then + echo "$usage" >&2 + exit 1 +fi +main "$1" diff --git a/services/.config/systemd/user/activitywatch.service b/services/.config/systemd/user/activitywatch.service deleted file mode 100644 index 7c73d88..0000000 --- a/services/.config/systemd/user/activitywatch.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Record pc window usage -PartOf=graphical-session.target -Requires=x-started-confirm.service -After=x-started-confirm.service - -[Service] -ExecStart=/usr/bin/aw-qt -Restart=on-failure - -[Install] -WantedBy=default.target diff --git a/services/.config/systemd/user/default.target.wants/activitywatch.service b/services/.config/systemd/user/default.target.wants/activitywatch.service deleted file mode 120000 index 29b339e..0000000 --- a/services/.config/systemd/user/default.target.wants/activitywatch.service +++ /dev/null @@ -1 +0,0 @@ -../activitywatch.service \ No newline at end of file diff --git a/services/.config/systemd/user/default.target.wants/dunst.service b/services/.config/systemd/user/default.target.wants/dunst.service deleted file mode 120000 index b24d3b1..0000000 --- a/services/.config/systemd/user/default.target.wants/dunst.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/user/dunst.service \ No newline at end of file diff --git a/services/.config/systemd/user/default.target.wants/geoclue-agent.service b/services/.config/systemd/user/default.target.wants/geoclue-agent.service deleted file mode 120000 index 9a62bd1..0000000 --- a/services/.config/systemd/user/default.target.wants/geoclue-agent.service +++ /dev/null @@ -1 +0,0 @@ -../geoclue-agent.service \ No newline at end of file diff --git a/services/.config/systemd/user/default.target.wants/redshift.service b/services/.config/systemd/user/default.target.wants/redshift.service deleted file mode 120000 index a9cf4c7..0000000 --- a/services/.config/systemd/user/default.target.wants/redshift.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/user/redshift.service \ No newline at end of file diff --git a/services/.config/systemd/user/default.target.wants/uni-notes-sync.service b/services/.config/systemd/user/default.target.wants/uni-notes-sync.service deleted file mode 120000 index 4cda226..0000000 --- a/services/.config/systemd/user/default.target.wants/uni-notes-sync.service +++ /dev/null @@ -1 +0,0 @@ -../uni-notes-sync.service \ No newline at end of file diff --git a/services/.config/systemd/user/geoclue-agent.service b/services/.config/systemd/user/geoclue-agent.service deleted file mode 100644 index 9f2adc0..0000000 --- a/services/.config/systemd/user/geoclue-agent.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=redshift needs to get a (geo)clue - -[Service] -ExecStart=/usr/lib/geoclue-2.0/demos/agent - -[Install] -WantedBy=default.target diff --git a/services/.config/systemd/user/redshift.service.d/override.conf b/services/.config/systemd/user/redshift.service.d/override.conf deleted file mode 100644 index 673779e..0000000 --- a/services/.config/systemd/user/redshift.service.d/override.conf +++ /dev/null @@ -1,3 +0,0 @@ -[Unit] -Requires=x-started-confirm.service -After=x-started-confirm.service diff --git a/services/.config/systemd/user/uni-notes-sync.service b/services/.config/systemd/user/uni-notes-sync.service deleted file mode 100644 index 88e00ca..0000000 --- a/services/.config/systemd/user/uni-notes-sync.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Automatically commit notes in university directory -After=display-manager.service - -[Service] -Type=simple -Environment=GS_TIME_TO_COMMIT=120 GS_UNCHANGED_RUNS_TO_PUSH=30 -# workaround to allow relative executable invocation (i.e. current users' home dir) -ExecStart=/bin/bash -c '%h/.local/share/services/git-sync %h/documents/notes/uni' -Restart=on-failure - -[Install] -WantedBy=default.target diff --git a/sh/.config/sh/alias b/sh/.config/sh/alias index 54e9ea5..0aaa856 100644 --- a/sh/.config/sh/alias +++ b/sh/.config/sh/alias @@ -31,6 +31,8 @@ if exist exa; then # - usually want to change levels recursed with -L2 -L3 or similar alias ll="exa --tree -L2 --group-directories-first" alias LL="exa -a --tree -L2 --group-directories-first" + alias lla="exa --tree --group-directories-first" + alias LLA="exa -a --tree --group-directories-first" else alias l="ls -lhF" alias L="ls -lAhF" @@ -94,8 +96,18 @@ if exist vifm; then alias vmm='vifm ${PWD}' fi -# nsxiv image viewer -if exist nsxiv; then +# default image viewer +if exist imv-folder; then + iv() { + if [ "$#" -eq 1 ] && [ -f "$1" ]; then + imv-folder "$1" + else + imv "$@" + fi + } +elif exist imv; then + alias iv=imv +elif exist nsxiv; then if exist nsxiv-rifle; then alias iv=nsxiv-rifle else diff --git a/sh/.config/sh/xdg b/sh/.config/sh/xdg index 4d645e1..72f42ea 100644 --- a/sh/.config/sh/xdg +++ b/sh/.config/sh/xdg @@ -70,7 +70,6 @@ unset -f xdg_isThere xdg_makeForUser export ANDROID_HOME="$XDG_DATA_HOME/android" export ATOM_HOME="$XDG_DATA_HOME/atom" export CARGO_HOME="$XDG_DATA_HOME/cargo" -export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker" export GEM_HOME="$XDG_DATA_HOME/gem" export GEM_SPEC_CACHE="$XDG_CACHE_HOME/gem" export GNUPGHOME="$XDG_DATA_HOME/gnupg" diff --git a/social/.config/newsboat/config b/social/.config/newsboat/config new file mode 100644 index 0000000..a6ba69e --- /dev/null +++ b/social/.config/newsboat/config @@ -0,0 +1,3 @@ +urls-source "miniflux" +miniflux-url "https://rss.martyoeh.me/" +miniflux-tokeneval "pass show personal/rss.martyoeh.me/Marty | grep newsboat | cut -f2 -d:" diff --git a/social/.config/tut/config.ini b/social/.config/tut/config.ini new file mode 100644 index 0000000..c6b7031 --- /dev/null +++ b/social/.config/tut/config.ini @@ -0,0 +1,806 @@ +# Configuration file for tut + +[general] +# Shows a confirmation view before actions such as favorite, delete toot, boost +# etc. +# default=true +confirmation=true + +# Enable support for using the mouse in tut to select items. +# default=false +mouse-support=true + +# Timelines adds windows of feeds. You can customize the number of feeds, what +# they should show and the key to activate them. +# +# Available timelines: home, direct, local, federated, bookmarks, saved, +# favorited, notifications, lists, tag +# +# Tag is special as you need to add the tag after, see the example below. +# +# The syntax is: +# timelines=feed,[name],[keys...],[showBoosts],[showReplies] +# +# Tha values in brackets are optional. You can see the syntax for keys under the +# [input] section. +# +# showBoosts and showReplies must be formated as bools. So either true or false. +# They always defaults to true. +# +# Some examples: +# +# home timeline with the name Home +# timelines=home,Home +# +# local timeline with the name Local and it gets focus when you press 2. It will +# also hide boosts in the timeline, but show toots that are replies. +# timelines=local,Local,'2',false,true +# +# notification timeline with the name [N]otifications and it gets focus when you +# press n or N +# timelines=notifications,[N]otifications,'n','N' +# +# tag timeline for #linux with the name Linux and it gets focus when you press +# timelines=tag linux,Linux,"F2" +# +# +# If you don't set any timelines it will default to this: +# timelines=home +# timelines=notifications,[N]otifications,'n','N' +# +timelines=home,Home,'1' +timelines=notifications,[N]otifications,'n','N' +timelines=local,Local,'2',false,true + + +# The date format to be used. See https://godoc.org/time#Time.Format +# default=2006-01-02 15:04 +date-format=2006-01-02 15:04 + +# Format for dates the same day. See date-format for more info. +# default=15:04 +date-today-format=15:04 + +# This displays relative dates instead for statuses that are one day or older +# the output is 1y2m1d (1 year 2 months and 1 day) +# +# The value is an integear +# -1 = don't use relative dates +# 0 = always use relative dates, except for dates < 1 day +# 1 - ∞ = number of days to use relative dates +# +# Example: date-relative=28 will display a relative date for toots that are +# between 1-28 days old. Otherwhise it will use the short or long format. +# default=-1 +date-relative=-1 + +# The max width of text before it wraps when displaying toots. +# 0 = no restriction. +# default=0 +max-width=0 + +# Where do you want the list of toots to be placed? +# Valid values: left, right, top, bottom. +# default=left +list-placement=bottom + +# If you have notification-feed set to true you can display it under the main +# list of toots (row) or place it to the right of the main list of toots +# (column). +# default=row +list-split=column + +# You can change the proportions of the list view in relation to the content +# view list-proportion=1 and content-proportoin=3 will result in the content +# taking up 3 times more space. +# Must be n > 0 +# default=1 +list-proportion=1 + +# See list-proportion +# default=2 +content-proportion=2 + +# Hide notifications of this type. If you have multiple you separate them with a +# comma. Valid types: mention, status, boost, follow, follow_request, favorite, +# poll, edit. +# default= +notifications-to-hide= + +# If you always want to quote original message when replying. +# default=false +quote-reply=false + +# If you're on an instance with a custom character limit you can set it here. +# default=500 +char-limit=500 + +# If you want to show icons in the list of toots. +# default=true +show-icons=true + +# If you've learnt all the shortcut keys you can remove the help text and only +# show the key in tui. So it gets less cluttered. +# default=false +short-hints=false + +# If you want to display the filter that filtered a toot. +# default=true +show-filter-phrase=true + +# If you want to show a message in the cmdbar on how to access the help text. +# default=true +show-help=true + +# If you always want tut to jump to the newest post. May ruin your reading +# experience. +# default=false +stick-to-top=false + +# 0 = No terminal title +# 1 = Show title in terminal and top bar +# 2 = Only show terminal title, and no top bar in tut. +# default=0 +terminal-title=0 + +# If you don't want the whole UI to update, and only the text content you can +# set this option to true. This will lead to some artifacts being left on the +# screen when emojis are present. But it will keep the UI from flashing on every +# single toot in some terminals. +# default=true +redraw-ui=true + +# The leader is used as a shortcut to run commands as you can do in Vim. By +# default this is disabled and you enable it by setting a leader-key. It can +# only consist of one char and I like to use comma as leader key. So to set it +# you write leader-key=, +# default= +leader-key= + +# Number of milliseconds before the leader command resets. So if you tap the +# leader-key by mistake or are to slow it empties all the input after X +# milliseconds. +# default=1000 +leader-timeout=1000 + +# You set actions for the leader-key with one or more leader-action. It consists +# of two parts first the action then the shortcut. And they're separated by a +# comma. +# +# Available commands: home, direct, local, federated, clear-notifications, +# compose, edit, history, blocking, bookmarks, saved, favorited, boosts, +# favorites, following, followers, muting, newer, preferences, profile, +# notifications, lists, stick-to-top, tag, tags, window, list-placement, +# list-split, proportions +# +# The shortcuts are up to you, but keep them quite short and make sure they +# don't collide. If you have one shortcut that is "f" and an other one that is +# "fav", the one with "f" will always run and "fav" will never run. +# +# Some special leaders: +# tag is special as you need to add the tag after, e.g. tag linux +# window is special as it's a shortcut for switching between the timelines +# you've set under general and they are zero indexed. window 0 = your first +# timeline, window 1 = your second and so on. +# list-placement as it takes the argument top, right, bottom or left +# list-split as it takes the argument column or row +# proportions takes the arguments [int] [int], where the first integer is the +# list and the other content, e.g. proportions 1 3. See list-proportion above +# for more information. +# +# Some examples: +# leader-action=local,lo +# leader-action=lists,li +# leader-action=federated,fed +# leader-action=direct,d +# leader-action=history,h +# leader-action=tag linux,tl +# leader-action=window 0,h +# leader-action=list-placement bottom,b +# leader-action=list-split column,c +# leader-action=proportions 1 3,3 +# + + +[media] +# Your image viewer. +# default=xdg-open +image-viewer=imv + +# Open the image viewer in the same terminal as toot. Only for terminal based +# viewers. +# default=false +image-terminal=false + +# If images should open one by one e.g. "imv image.png" multiple times. If set +# to false all images will open at the same time like this "imv image1.png +# image2.png image3.png". Not all image viewers support this, so try it first. +# default=true +image-single=true + +# If you want to open the images in reverse order. In some image viewers this +# will display the images in the "right" order. +# default=false +image-reverse=false + +# Your video viewer. +# default=xdg-open +video-viewer=umpv + +# Open the video viewer in the same terminal as toot. Only for terminal based +# viewers. +# default=false +video-terminal=false + +# If videos should open one by one. See image-single. +# default=true +video-single=true + +# If you want your videos in reverse order. In some video apps this will play +# the files in the "right" order. +# default=false +video-reverse=false + +# Your audio viewer. +# default=xdg-open +audio-viewer=xdg-open + +# Open the audio viewer in the same terminal as toot. Only for terminal based +# viewers. +# default=false +audio-terminal=false + +# If audio should open one by one. See image-single. +# default=true +audio-single=true + +# If you want to play the audio files in reverse order. In some audio apps this +# will play the files in the "right" order. +# default=false +audio-reverse=false + +# Your web browser. +# default=xdg-open +link-viewer=xdg-open + +# Open the browser in the same terminal as toot. Only for terminal based +# browsers. +# default=false +link-terminal=false + +[open-custom] +# This sections allows you to set up to five custom programs to open URLs with. +# If the url points to an image, you can set c1-name to img and c1-use to imv. +# If the program runs in a terminal and you want to run it in the same terminal +# as tut. Set cX-terminal to true. The name will show up in the UI, so keep it +# short so all five fits. +# +# c1-name=name +# c1-use=program +# c1-terminal=false +# +# c2-name=name +# c2-use=program +# c2-terminal=false +# +# c3-name=name +# c3-use=program +# c3-terminal=false +# +# c4-name=name +# c4-use=program +# c4-terminal=false +# +# c5-name=name +# c5-use=program +# c5-terminal=false + +[open-pattern] +# Here you can set your own glob patterns for opening matching URLs in the +# program you want them to open up in. You could for example open Youtube videos +# in your video player instead of your default browser. +# +# You must name the keys foo-pattern, foo-use and foo-terminal, where use is the +# program that will open up the URL. To see the syntax for glob pattern you can +# follow this URL https://github.com/gobwas/glob#syntax. foo-terminal is if the +# program runs in the terminal and should open in the same terminal as tut +# itself. +# +# Example for youtube.com and youtu.be to open up in mpv instead of the browser. +# +y1-pattern=*youtube.com/watch* +y1-use=umpv +y1-terminal=false +# +y2-pattern=*youtu.be/* +y2-use=umpv +y2-terminal=false + +[desktop-notification] +# Notification when someone follows you. +# default=false +followers=false + +# Notification when someone favorites one of your toots. +# default=false +favorite=false + +# Notification when someone mentions you. +# default=false +mention=false + +# Notification when someone edits their toot. +# default=false +update=false + +# Notification when someone boosts one of your toots. +# default=false +boost=false + +# Notification of poll results. +# default=false +poll=false + +# Notification when there is new posts in current timeline. +# default=false +posts=false + +[style] +# All styles can be represented in their HEX value like #ffffff or with their +# name, so in this case white. The only special value is "default" which equals +# to transparent, so it will be the same color as your terminal. +# +# You can also use xrdb colors like this xrdb:color1 The program will use colors +# prefixed with an * first then look for URxvt or XTerm if it can't find any +# color prefixed with an asterisk. If you don't want tut to guess the prefix you +# can set the prefix yourself. If the xrdb color can't be found a preset color +# will be used. You'll have to set theme=none for this to work. + +# The xrdb prefix used for colors in .Xresources. +# default=guess +xrdb-prefix=guess + +# You can use some themes that comes bundled with tut. Check out the themes +# available on the URL below. If a theme is named "nord.ini" you just write +# theme=nord +# +# https://github.com/RasmusLindroth/tut/tree/master/config/themes +# +# You can also create a theme file in your config directory e.g. +# ~/.config/tut/themes/foo.ini and then set theme=foo. +# +# If you want to use your own theme but don't want to create a new file, set +# theme=none and then you can create your own theme below. +# default=default +theme=default + +# The background color used on most elements. +# default= +background= + +# The text color used on most of the text. +# default= +text= + +# The color to display subtle elements or subtle text. Like lines and help text. +# default= +subtle= + +# The color for errors or warnings +# default= +warning-text= + +# This color is used to display username. +# default= +text-special-one= + +# This color is used to display username and key hints. +# default= +text-special-two= + +# The color of the bar at the top +# default= +top-bar-background= + +# The color of the text in the bar at the top. +# default= +top-bar-text= + +# The color of the bar at the bottom +# default= +status-bar-background= + +# The color of the text in the bar at the bottom. +# default= +status-bar-text= + +# The color of the bar at the bottom in view mode. +# default= +status-bar-view-background= + +# The color of the text in the bar at the bottom in view mode. +# default= +status-bar-view-text= + +# The color of the text in the command bar at the bottom. +# default= +command-text= + +# Background of selected list items. +# default= +list-selected-background= + +# The text color of selected list items. +# default= +list-selected-text= + +# The background color of selected list items that are out of focus. +# default= +list-selected-inactive-background= + +# The text color of selected list items that are out of focus. +# default= +list-selected-inactive-text= + +# The main color of the text for key hints +# default= +controls-text= + +# The highlight color of for key hints +# default= +controls-highlight= + +# The background color in dropdowns and autocompletions +# default= +autocomplete-background= + +# The text color in dropdowns at autocompletions +# default= +autocomplete-text= + +# The background color for selected value in dropdowns and autocompletions +# default= +autocomplete-selected-background= + +# The text color for selected value in dropdowns and autocompletions +# default= +autocomplete-selected-text= + +# The background color on selected button and the text color of unselected +# buttons +# default= +button-color-one= + +# The text color on selected button and the background color of unselected +# buttons +# default= +button-color-two= + +# The background on named timelines. +# default= +timeline-name-background= + +# The text color on named timelines +# default= +timeline-name-text= + +[input] +# You can edit the keys for tut below. +# +# The syntax is a bit weird, but it works. And I'll try to explain it as well as +# I can. +# +# Example: +# status-favorite="[F]avorite","Un[F]avorite",'f','F' +# status-delete="[D]elete",'d','D' +# +# status-favorite and status-delete differs because favorite can be in two +# states, so you will have to add two key hints. +# Most keys will only have on key hint. Look at the default value for reference. +# +# Key hints must be in some of the following formats. Remember the quotation +# marks. +# "" = empty +# "[D]elete" = Delete with a highlighted D +# "Un[F]ollow" = UnFollow with a highlighted F +# "[Enter]" = Enter where everything is highlighted +# "Yan[K]" = YanK with a highlighted K +# +# After the hint (or hints) you must set the keys. You can do this in two ways, +# with single quotation marks or double ones. +# +# The single ones are for single chars like 'a', 'b', 'c' and double marks are +# for special keys like "Enter". Remember that they are case sensitive. +# +# To find the names of special keys you have to go to the following site and +# look for "var KeyNames = map[Key]string{" +# +# https://github.com/gdamore/tcell/blob/master/key.go + +# Keys for moving down +# default="",'j','J',"Down" +global-down="",'j','J',"Down" + +# Keys for moving up +# default="",'k','K',"Up" +global-up="",'k','K',"Up" + +# To select items +# default="","Enter" +global-enter="","Enter" + +# To go back +# default="[Esc]","Esc" +global-back="[Esc]","Esc" + +# To go back and exit Tut +# default="[Q]uit",'q','Q' +global-exit="[Q]uit",'q','Q' + +# Move to the top +# default="",'g',"Home" +main-home="",'g',"Home" + +# Move to the bottom +# default="",'G',"End" +main-end="",'G',"End" + +# Go to previous feed +# default="",'h','H',"Left" +main-prev-feed="",'h','H',"Left" + +# Go to next feed +# default="",'l','L',"Right" +main-next-feed="",'l','L',"Right" + +# Focus on the previous feed window +# default="","Backtab" +main-prev-window="","Backtab" + +# Focus on the next feed window +# default="","Tab" +main-next-window="","Tab" + +# Focus on the notification list +# default="[N]otifications",'n','N' +main-notification-focus="[N]otifications",'n','N' + +# Compose a new toot +# default="",'c','C' +main-compose="",'c','C' + +# Open avatar +# default="[A]vatar",'a','A' +status-avatar="[A]vatar",'a','A' + +# Boost a toot +# default="[B]oost","Un[B]oost",'b','B' +status-boost="[B]oost","Un[B]oost",'b','B' + +# Edit a toot +# default="[E]dit",'e','E' +status-edit="[E]dit",'e','E' + +# Delete a toot +# default="[D]elete",'d','D' +status-delete="[D]elete",'d','D' + +# Favorite a toot +# default="[F]avorite","Un[F]avorite",'f','F' +status-favorite="[F]avorite","Un[F]avorite",'f','F' + +# Open toots media files +# default="[M]edia",'m','M' +status-media="[M]edia",'m','M' + +# Open links +# default="[O]pen",'o','O' +status-links="[O]pen",'o','O' + +# Open poll +# default="[P]oll",'p','P' +status-poll="[P]oll",'p','P' + +# Reply to toot +# default="[R]eply",'r','R' +status-reply="[R]eply",'r','R' + +# Save/bookmark a toot +# default="[S]ave","Un[S]ave",'s','S' +status-bookmark="[S]ave","Un[S]ave",'s','S' + +# View thread +# default="[T]hread",'t','T' +status-thread="[T]hread",'t','T' + +# Open user profile +# default="[U]ser",'u','U' +status-user="[U]ser",'u','U' + +# Open the view mode +# default="[V]iew",'v','V' +status-view-focus="[V]iew",'v','V' + +# Yank the url of the toot +# default="[Y]ank",'y','Y' +status-yank="[Y]ank",'y','Y' + +# Remove the spoiler +# default="Press [Z] to toggle spoiler",'z','Z' +status-toggle-spoiler="Press [Z] to toggle spoiler",'z','Z' + +# View avatar +# default="[A]vatar",'a','A' +user-avatar="[A]vatar",'a','A' + +# Block the user +# default="[B]lock","Un[B]lock",'b','B' +user-block="[B]lock","Un[B]lock",'b','B' + +# Follow user +# default="[F]ollow","Un[F]ollow",'f','F' +user-follow="[F]ollow","Un[F]ollow",'f','F' + +# Follow user +# default="Follow [R]equest","Follow [R]equest",'r','R' +user-follow-request-decide="Follow [R]equest","Follow [R]equest",'r','R' + +# Mute user +# default="[M]ute","Un[M]ute",'m','M' +user-mute="[M]ute","Un[M]ute",'m','M' + +# Open links +# default="[O]pen",'o','O' +user-links="[O]pen",'o','O' + +# View user profile +# default="[U]ser",'u','U' +user-user="[U]ser",'u','U' + +# Open view mode +# default="[V]iew",'v','V' +user-view-focus="[V]iew",'v','V' + +# Yank the user URL +# default="[Y]ank",'y','Y' +user-yank="[Y]ank",'y','Y' + +# Open list +# default="[O]pen",'o','O' +list-open-feed="[O]pen",'o','O' + +# List all users in a list +# default="[U]sers",'u','U' +list-user-list="[U]sers",'u','U' + +# Add user to list +# default="[A]dd",'a','A' +list-user-add="[A]dd",'a','A' + +# Delete user from list +# default="[D]elete",'d','D' +list-user-delete="[D]elete",'d','D' + +# Open URL +# default="[O]pen",'o','O' +link-open="[O]pen",'o','O' + +# Yank the URL +# default="[Y]ank",'y','Y' +link-yank="[Y]ank",'y','Y' + +# Open tag feed +# default="[O]pen",'o','O' +tag-open-feed="[O]pen",'o','O' + +# Toggle follow on tag +# default="[F]ollow","Un[F]ollow",'f','F' +tag-follow="[F]ollow","Un[F]ollow",'f','F' + +# Edit spoiler text on new toot +# default="[C]W text",'c','C' +compose-edit-spoiler="[C]W text",'c','C' + +# Edit the text on new toot +# default="[E]dit text",'e','E' +compose-edit-text="[E]dit text",'e','E' + +# Include a quote when replying +# default="[I]nclude quote",'i','I' +compose-include-quote="[I]nclude quote",'i','I' + +# Focus on adding media to toot +# default="[M]edia",'m','M' +compose-media-focus="[M]edia",'m','M' + +# Post the new toot +# default="[P]ost",'p','P' +compose-post="[P]ost",'p','P' + +# Toggle content warning on toot +# default="[T]oggle CW",'t','T' +compose-toggle-content-warning="[T]oggle CW",'t','T' + +# Edit the visibility on new toot +# default="[V]isibility",'v','V' +compose-visibility="[V]isibility",'v','V' + +# Edit the language of a toot +# default="[L]ang",'l','L' +compose-language="[L]ang",'l','L' + +# Switch to creating a poll +# default="P[O]ll",'o','O' +compose-poll="P[O]ll",'o','O' + +# Delete media file +# default="[D]elete",'d','D' +media-delete="[D]elete",'d','D' + +# Edit the description on media file +# default="[E]dit desc",'e','E' +media-edit-desc="[E]dit desc",'e','E' + +# Add a new media file +# default="[A]dd",'a','A' +media-add="[A]dd",'a','A' + +# Vote on poll +# default="[V]ote",'v','V' +vote-vote="[V]ote",'v','V' + +# Select item to vote on +# default="[Enter] to select",' ', "Enter" +vote-select="[Enter] to select",' ', "Enter" + +# Add a new poll option +# default="[A]dd",'a','A' +poll-add="[A]dd",'a','A' + +# Edit a poll option +# default="[E]dit",'e','E' +poll-edit="[E]dit",'e','E' + +# Delete a poll option +# default="[D]elete",'d','D' +poll-delete="[D]elete",'d','D' + +# Toggle voting on multiple options +# default="Toggle [M]ultiple",'m','M' +poll-multi-toggle="Toggle [M]ultiple",'m','M' + +# Change the expiration of poll +# default="E[X]pires",'x','X' +poll-expiration="E[X]pires",'x','X' + +# Change display name +# default="[N]ame",'n','N' +preference-name="[N]ame",'n','N' + +# Change default visibility of toots +# default="[V]isibility",'v','V' +preference-visibility="[V]isibility",'v','V' + +# Change bio in profile +# default="[B]io",'b','B' +preference-bio="[B]io",'b','B' + +# Save your preferences +# default="[S]ave",'s','S' +preference-save="[S]ave",'s','S' + +# Edit profile fields +# default="[F]ields",'f','F' +preference-fields="[F]ields",'f','F' + +# Add new field +# default="[A]dd",'a','A' +preference-fields-add="[A]dd",'a','A' + +# Edit current field +# default="[E]dit",'e','E' +preference-fields-edit="[E]dit",'e','E' + +# Delete current field +# default="[D]elete",'d','D' +preference-fields-delete="[D]elete",'d','D' diff --git a/vifm/.config/vifm/vifmrc b/vifm/.config/vifm/vifmrc index f1938f2..821d4db 100644 --- a/vifm/.config/vifm/vifmrc +++ b/vifm/.config/vifm/vifmrc @@ -279,6 +279,8 @@ nnoremap xx :!atool -x %f nnoremap xc :!atool -a %c:r.tar.gz %f " archive currently selected file(s) nnoremap xa :!atool -a %c:r.tar %f +" archive currently selected file(s) +nnoremap xz :!atool -a %c:r.zip %f " combine selected PDFs into single one (named output.pdf) noremap gc :!pdftk %f cat output output.pdf @@ -442,6 +444,8 @@ filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm \ timg --title --center --clear %f; read -k 1 -s -r, \ {View in nsxiv directory viewer} \ vifm-thumbnailer %c, + \ {View in imv} + \ imv %f, \ {View in nsxiv} \ nsxiv %f, \ {View in vimiv} diff --git a/wayland/.config/kanshi/config b/wayland/.config/kanshi/config index dc7010e..ece2f81 100644 --- a/wayland/.config/kanshi/config +++ b/wayland/.config/kanshi/config @@ -1,9 +1,18 @@ +profile docked { + output eDP-1 disable + output "LG Electronics W2442 0x000075FD" position 1920,0 + output "LG Electronics W2442 0x000075E1" position 0,0 + exec notify-send "💻 Display changed" "Applying docked profile" +} + profile docked { output eDP-1 disable output "Goldstar Company Ltd W2442 0x000075FD" position 1920,0 output "Goldstar Company Ltd W2442 0x000075E1" position 0,0 + exec notify-send "💻 Display changed" "Applying docked profile" } -profile single { +profile portable { output eDP-1 enable position 0,0 + exec notify-send "💻 Display changed" "Applying portable profile" } diff --git a/wayland/.config/river/init b/wayland/.config/river/init index 81ec6b6..6d2ed52 100755 --- a/wayland/.config/river/init +++ b/wayland/.config/river/init @@ -10,6 +10,8 @@ time_to_suspend=1200 ## OPTIONS riverctl spawn "dbus-update-activation-environment SEATD_SOCK DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river" riverctl focus-follows-cursor normal +riverctl set-cursor-warp on-output-change +riverctl hide-cursor when-typing enabled riverctl attach-mode bottom # Set background and border color @@ -24,7 +26,7 @@ riverctl float-filter-add app-id float # riverctl float-filter-add title "popup title with spaces" # # Set app-ids and titles of views which should use client side decorations # riverctl csd-filter-add app-id "gedit" -riverctl csd-filter-add app-id "zathura" +riverctl csd-filter-remove app-id "org.pwmt.zathura" ## DEBUG # Reload river configuration @@ -57,7 +59,7 @@ riverctl map normal $mod+Shift O spawn "qutedmenu" riverctl map normal $mod+Shift Space spawn "clipman pick --tool=bemenu" # Open floating calculator -riverctl map normal $mod+Shift R spawn "$term --class float -e qalc" +riverctl map normal $mod+Shift R spawn "$term start --class float -e qalc" # Open emoji picker riverctl map normal $mod+Shift E spawn "bemoji -nt" @@ -73,7 +75,7 @@ riverctl map normal $mod+Shift S spawn 'styler set $(styler list themes | bemenu riverctl map normal $mod+Shift P spawn "pass-pick" # File upload -riverctl map normal $mod+Shift U spawn "$term --class float -e sharefile | xargs notify-send" +riverctl map normal $mod+Shift U spawn "$term start --class float -e sharefile | xargs notify-send" # # Screenshot riverctl map normal None Print spawn "screenshot" @@ -81,10 +83,10 @@ riverctl map normal Shift Print spawn "screenshot | sharefile -" riverctl map normal $mod Print spawn "screenshot region" riverctl map normal $mod+Shift Print spawn "screenshot region | sharefile -" -# control dunst notification daemon -riverctl map normal $mod N spawn "dunstctl close" -riverctl map normal $mod+Shift N spawn "dunstctl close-all" -riverctl map normal $mod+Control N spawn "dunstctl history-pop" +# control notification daemon +riverctl map normal $mod N spawn "makoctl dismiss" +riverctl map normal $mod+Shift N spawn "makoctl dismiss --all" +riverctl map normal $mod+Control N spawn "makoctl restore" # MOVEMENT # focus the next/previous view in the layout stack @@ -113,6 +115,10 @@ riverctl map normal $mod+Control L snap right # Mod+F to toggle fullscreen riverctl map normal $mod F toggle-fullscreen +# shellcheck disable=SC2016 +# Make all connected outputs show the desktop and no windows at all +riverctl map normal $mod+Shift M spawn 'for i in $(wlopm | wc -l); do riverctl set-focused-tags $((1 << 10)); riverctl focus-output next; done; riverctl set-focused-tags $((1 << 10)); riverctl focus-output next' + # toggle float riverctl map normal $mod+Shift v toggle-float # Mod + Left Mouse Button to move views @@ -228,45 +234,54 @@ done setxkbmap -option "compose:menu" # set a nice wallpaper -exec swww init & -if [ -e "$HOME/pictures/wall_l.jpg" ] && [ -e "$HOME/pictures/wall_r.jpg" ]; then - swww img -o DP-5 "$HOME/pictures/wall_l.jpg" & - swww img -o DP-3 "$HOME/pictures/wall_r.jpg" & -elif [ -e "$HOME/pictures/wall.jpg" ]; then - swww img "$HOME/pictures/wall.jpg" & +if exist wlopm && exist swww; then + riverctl spawn "swww init" + if [ -e "$HOME/pictures/wall.jpg" ]; then + swww img "$HOME/pictures/wall.jpg" + fi + if wlopm | grep -q DP-5 && wlopm | grep -q DP-3 && [ -e "$HOME/pictures/wall_l.jpg" ] && [ -e "$HOME/pictures/wall_r.jpg" ]; then + swww img -o DP-5 "$HOME/pictures/wall_l.jpg" + swww img -o DP-3 "$HOME/pictures/wall_r.jpg" + fi fi -# killall mako -# mako & - # start status bar killall waybar -exec waybar & +riverctl spawn waybar # start dynamic display configuration killall kanshi -exec kanshi & +riverctl spawn kanshi + +# start redshift-like sundown warming using current location or standard values +killall wlsunset +loc=$(curl ipinfo.io | grep -e '"loc": ' | sed -e 's/^.*"loc": "\(.*\)",$/\1/') +if [ -n "$loc" ]; then + riverctl spawn "wlsunset -l \"$(echo "$loc" | cut -d, -f1)\" -L \"$(echo "$loc" | cut -d, -f2)\"" +else + riverctl spawn "wlsunset -S \"09:00\" -s \"21:00\" -d \"3600\"" +fi +unset loc # start screen idle locking/dimming/sleep tool killall swayidle -exec swayidle \ - timeout "${time_to_lockscreen}" 'lockscreen' \ - timeout "${time_to_screendim}" 'wlopm --off "*"' \ - timeout "${time_to_suspend}" 'systemctl suspend-then-hibernate' \ - resume 'wlopm --on "*"' \ - after-resume 'wlopm --on "*"' \ - before-sleep 'lockscreen' & +riverctl spawn "swayidle \ + timeout ${time_to_lockscreen} 'pidof waylock || lockscreen' \ + timeout ${time_to_screendim} 'wlopm --off \"*\"' \ + timeout ${time_to_suspend} 'systemctl suspend-then-hibernate' \ + resume 'wlopm --on \"*\"' \ + after-resume 'wlopm --on \"*\"' \ + before-sleep 'pidof waylock || lockscreen' &" killall clipman -exec wl-paste -t text --watch clipman store & +riverctl spawn "wl-paste -t text --watch clipman store" # bash ~/.config/bin/gtktheme # setting our gtk variables # killall polkit-gnome-authentication-agent-1 # /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & -# Set and exec into the default layout generator, rivercarro. -# River will send the process group of the init executable SIGTERM on exit. -riverctl default-layout rivercarro & # start layouting engine killall rivercarro -exec rivercarro -main-ratio 0.65 & +riverctl spawn "rivercarro -main-ratio 0.65" +# River will send the process group of the init executable SIGTERM on exit. +riverctl default-layout rivercarro # exec rivercarro -main-ratio 0.65 -view-padding 6 -outer-padding 6 & # -> does not work with current rivercarro version (0.1.4) brightnessctl set 70% diff --git a/wezterm/.config/wezterm/maps.lua b/wezterm/.config/wezterm/maps.lua index 53a274a..78c9e13 100644 --- a/wezterm/.config/wezterm/maps.lua +++ b/wezterm/.config/wezterm/maps.lua @@ -67,14 +67,15 @@ local keys = { action = act.ActivateKeyTable { name = 'scroll_mode', one_shot = false, - replace_current = true + replace_current = true, + timeout_milliseconds = 15000, } }, { key = 'e', mods = 'LEADER', action = act.EmitEvent 'edit-scrollback' }, { key = 'l', mods = 'LEADER', action = act.EmitEvent 'ActivatePaneDirection-Right' }, - { key = 'a', mods = 'CTRL|ALT', action = act.EmitEvent 'toggle-leader'} + { key = 'a', mods = 'CTRL|ALT', action = act.EmitEvent 'toggle-leader' } } -- Leader + number to activate that tab