{"id":13898001,"url":"https://github.com/Seirdy/dotfiles","last_synced_at":"2025-07-17T15:31:36.576Z","repository":{"id":45840166,"uuid":"237903728","full_name":"Seirdy/dotfiles","owner":"Seirdy","description":"Seirdy's dotfiles","archived":false,"fork":false,"pushed_at":"2024-05-08T03:12:05.000Z","size":2369,"stargazers_count":27,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-07T18:44:58.848Z","etag":null,"topics":["dotfiles","mpd","mpv","neovim","newsboat","rss","sway","tmux","tridactyl","vim","wayland","yadm","zinit","zsh"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Seirdy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-02-03T06:56:50.000Z","updated_at":"2024-07-23T06:03:25.000Z","dependencies_parsed_at":"2024-02-23T11:57:25.317Z","dependency_job_id":null,"html_url":"https://github.com/Seirdy/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seirdy%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seirdy%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seirdy%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seirdy%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Seirdy","download_url":"https://codeload.github.com/Seirdy/dotfiles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226274623,"owners_count":17598850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfiles","mpd","mpv","neovim","newsboat","rss","sway","tmux","tridactyl","vim","wayland","yadm","zinit","zsh"],"created_at":"2024-08-06T18:04:00.254Z","updated_at":"2024-11-25T04:30:30.724Z","avatar_url":"https://github.com/Seirdy.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"Dotfiles\n========\n\n[![sourcehut](https://img.shields.io/badge/repository-sourcehut-lightgrey.svg?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSINCiAgICB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+DQogIDxkZWZzPg0KICAgIDxmaWx0ZXIgaWQ9InNoYWRvdyIgeD0iLTEwJSIgeT0iLTEwJSIgd2lkdGg9IjEyNSUiIGhlaWdodD0iMTI1JSI+DQogICAgICA8ZmVEcm9wU2hhZG93IGR4PSIwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIxLjUiDQogICAgICAgIGZsb29kLWNvbG9yPSJibGFjayIgLz4NCiAgICA8L2ZpbHRlcj4NCiAgICA8ZmlsdGVyIGlkPSJ0ZXh0LXNoYWRvdyIgeD0iLTEwJSIgeT0iLTEwJSIgd2lkdGg9IjEyNSUiIGhlaWdodD0iMTI1JSI+DQogICAgICA8ZmVEcm9wU2hhZG93IGR4PSIwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIxLjUiDQogICAgICAgIGZsb29kLWNvbG9yPSIjQUFBIiAvPg0KICAgIDwvZmlsdGVyPg0KICA8L2RlZnM+DQogIDxjaXJjbGUgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMzglIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjQlIg0KICAgIGZpbGw9Im5vbmUiIGZpbHRlcj0idXJsKCNzaGFkb3cpIiAvPg0KICA8Y2lyY2xlIGN4PSI1MCUiIGN5PSI1MCUiIHI9IjM4JSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSI0JSINCiAgICBmaWxsPSJub25lIiBmaWx0ZXI9InVybCgjc2hhZG93KSIgLz4NCjwvc3ZnPg0KCg==)](https://git.sr.ht/~seirdy/dotfiles)\n[![GitLab\nmirror](https://img.shields.io/badge/mirror-GitLab-orange.svg?logo=gitlab)](https://gitlab.com/Seirdy/dotfiles)\n[![GitHub\nmirror](https://img.shields.io/badge/mirror-GitHub-black.svg?logo=github)](https://github.com/Seirdy/dotfiles)\n[![Codeberg mirror](https://img.shields.io/badge/mirror-Codeberg-blue.svg?logo=codeberg)](https://codeberg.org/Seirdy/dotfiles)\n\nIt's my dotfiles! This is me.\n\nThese dotfiles are managed using [yadm](https://yadm.io) and are primarily intended\nfor Fedora. To install, simply clone the repo into `$HOME` and run the bootstrap\nscripts in `Executables/shell-scripts/bootstrap`. The scripts for building packages\nmight max out your CPU all night, so be prepared.\n\nThis has been evolving since I was 14, yet nothing here lives that long before being\nrewritten.\n\nMy scripts generally have the `#!/usr/bin/env dash` shebang, but the syntax is all\nPOSIX sh compatible.\n\n\u003cpicture\u003e \u003csource srcset=\"https://seirdy.one/misc/mpd.webp\" type=\"image/webp\"\u003e\n\u003cimg src=\"https://seirdy.one/misc/mpd.png\" alt=\"screenshot of my tiling terminal music setup\" style=\"max-width:100%;\"\u003e\n\u003c/picture\u003e\n\nBleeding edge\n-------------\n\nI like to be on the bleeding edge of programs I use often, but with a stable OS\nrunning underneath them. I worked out the following solution:\n\nIf I use a program that runs in the terminal very often, I'll likely build it from\nsource and update to the latest git commit. Git repositories get cloned using\n[ghq](https://github.com/motemen/ghq). This way, if a program has a bug or is missing\na feature I want, I already have the latest snapshot of the repository cloned locally\non my machine so I can better understand the issue, report the bug, and/or push a\npatch upstream. My\n[`update-all`](https://git.sr.ht/~seirdy/dotfiles/tree/master/.local/bin/update-all)\nscript runs [these\nupdates](https://git.sr.ht/~seirdy/dotfiles/tree/master/Executables/shell-scripts/updates).\n\nC/C++ programs get compiled with the `-march=native` flags, among others. Most\npackages are also compiled using link-time optimization. Rust packages containing\nC/C++ code use Clang instead of GCC.\n\nI generally compile programs on my desktop and `rsync` them to my laptop.\n\nMah stuff\n---------\n\nPretty much all my programs run in the terminal. Exceptions include my web browser\n(if I [can't avoid it](https://bombadillo.colorfield.space/)), image viewer (imv),\nand media player (mpv)). If I'm not browsing heavy websites or playing high-res\nvideo, this setup is lightweight enough to use comfortably on a cheap single-board\ncomputer like the Raspberry Pi.\n\nStuff labeled with `*` is built from source from the latest git commit.\n\n### General\n\n- WM: [Sway\\*](https://swaywm.org/). Associated utilities are also built from source\n  (e.g. swaybg\\*, swayidle\\*, grim\\*, and slurp\\*)\n- Terminal emulator: [Foot\\*](https://codeberg.org/dnkl/foot) (Wayland) or\n  [st\\*](https://st.suckless.org/) (X11)\n- Terminal session manager: [tmux\\*](https://tmux.github.io/)\n- News reader: [Newsboat\\*](https://newsboat.org/)\n- Mail client: [aerc\\*](https://aerc-mail.org/),\n  [mbsync](http://isync.sourceforge.net/), and [notmuch](https://notmuchmail.org/)\n- `$EDITOR`: Neovim\\*\n- Launcher: [custom](https://git.sr.ht/~seirdy/term-dmenu) (runs in a floating\n  terminal window)\n- File manager: [nnn\\*](https://github.com/jarun/nnn)\n- Image viewer: [imv\\*](https://github.com/eXeC64/imv)\n- IRC and Matrix: WeeChat\\* and\n  [weechat-matrix\\*](https://github.com/poljar/weechat-matrix), respectively. I\n  prefer IRC.\n- Web browser: Firefox Nightly with\n  [Tridactyl](https://github.com/tridactyl/tridactyl),\n  [uMatrix](https://github.com/gorhill/uMatrix), uBlock Origin, and others to make\n  browsing slightly more tolerable.\n- Gopher/Gemini browser: [bombadillo\\*](https://tildegit.org/sloum/bombadillo.git)\n\n### Neovim\n\nI use Neovim's built-in Tree-sitter implementation and Language Server Protocol (LSP)\nclient along with the official [nvim-lsp](https://github.com/neovim/nvim-lsp) plugin\ncontaining pre-made configs for popular language servers. Settings are split between\nan `init.vim` and Lua files. Over time, I'll migrate more configs from Vim script to\nLua.\n\n### Shell\n\n- shell (non-interactive): `dash*` for its ridiculously fast startup speed and\n  minimal extensions over the POSIX spec. Statically-linked.\n- shell (interactive): [custom static build](https://git.sr.ht/~seirdy/zsh-bin) of\n  `zsh*` inside `tmux*`. By using a static binary with full link-time optimization\n  that only sources user config files, my shell initialization time for the\n  interactive prompt was cut in half.\n- plugin manager: [zinit\\*](https://github.com/zdharma/zinit) loads plugins\n  conditionally and asynchronously in the background to avoid slowing down startup\n  time.\n- prompt: [powerlevel10k\\*](https://github.com/romkatv/powerlevel10k) with\n  instant-prompt mode displays a cached prompt while the git status/return status are\n  still loading.\n\n### Music\n\nI have an MPD-based music setup; this README includes a screenshot of it near the\ntop.\n\nI've written several [scripts](https://git.sr.ht/~seirdy/mpd-scripts) to control MPD\nand build playlists. My setup depends heavily upon rating tracks on a scale of 1-10\nin the MPD sticker database.\n\n- Backend: MPD\n- Frontend: [clerk\\*](https://github.com/carnager/clerk) +\n  [ncmpcpp\\*](https://github.com/arybczak/ncmpcpp). I've been contemplating switching\n  to ncmpc since I don't really use any of ncmpcpp's special features.\n- CLI control: [mpc\\*](https://github.com/MusicPlayerDaemon/mpc) +\n  [Playerctl\\*](https://github.com/altdesktop/playerctl).\n- Visualizer: [cli-visualizer\\*](https://github.com/dpayne/cli-visualizer),\n  [cava\\*](https://github.com/karlstav/cava) and/or\n  [projectM\\*](https://github.com/projectM-visualizer/projectm) depending on my mood.\n- Playlist dynamizer:\n  [cantata-dynamic\\*](https://github.com/CDrummond/cantata/blob/master/playlists/cantata-dynamic)\n  builds playlists up to a defined size according to rules. It automatically removes\n  and adds tracks after they are played. I don't use cantata; I just use that Perl\n  script.\n- MPRIS 2 gateway: [mpd-mpris](https://github.com/natsukagami/mpd-mpris). Allows\n  media keys to control mpd via Playerctl, and integrates with other MPRIS-aware\n  software.\n- Album art viewer + notifier: [personal fork](https://git.sr.ht/~seirdy/kunst) of\n  [kunst\\*](https://github.com/sdushantha/kunst). My fork works with `imv` and\n  displays notifications; I might re-name the project and spin it off into something\n  of its own.\n\n### mpv\n\n- Player: [mpv\\*](https://mpv.io), built with VapourSynth support using\n  [mpv-build](https://github.com/mpv-player/mpv-build). FFmpeg, dav1d, and libass are\n  also built from master and statically linked with mpv. libaom, libvpx, libplacebo,\n  and some others are built from master and dynamically linked in.\n- Upscaling filter: [Anime4k\\*](https://github.com/bloc97/Anime4K) or\n  [RAVU](https://github.com/bjin/mpv-prescalers), among\n  [others](https://git.sr.ht/~seirdy/dotfiles/tree/master/.config/mpv/mpv.conf)\n- MPRIS bridge: [mpv-mpris\\*](https://github.com/hoyon/mpv-mpris)\n- Other scripts:\n  [blur-edges.lua](https://github.com/occivink/mpv-scripts/blob/master/scripts/blur-edges.lua),\n  [autocrop.lua](https://github.com/mpv-player/mpv/TOOLS/lua/autocrop.lua)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeirdy%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSeirdy%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeirdy%2Fdotfiles/lists"}