Starting from the most important of the set, `packages.txt` and `aur-packages.txt` are simply a list of installed packages from the official Arch repo and AUR respectively.
I prefer the lists to be separated just for ease of maintenance.
They are going to be committed at the start of every month (if it works that is).
`manager.py` (named Very Tiny Stow Manager or VTSM for short) is a tiny https://www.gnu.org/software/stow/[GNU Stow]-like manager created for this setup.
VTSM takes inspiration from GNU Stow (obviously) and https://github.com/holman/dotfiles[how Zach Holman's dotfiles are set].
When managing your dotfiles, VTSM is going to be your friend/workmate.
(Nonetheless, I tried to make it generic for other cases.)
footnote:[You need Python installed for this.
For future references, the version by the time first writing the script is at v3.8.1.
That said, I may rewrite this in Bash instead or even just a makefile.]
footnote:[I may have made my life harder when I can use something like https://yadm.io/[yadm] or https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/[a bare git repo] instead.]
With the tiny manager and the package list, we can then execute commands with all of the packages and its target path with one go.
For the command string, it is a https://docs.python.org/3/library/string.html#string.Template[Python template] with `package` and `location` as the available objects.
Aside from the scripts, there are also some details and files that are not committed to this setup for privacy and security reasons.
A few examples of which is my cron setups where it is tasked with updating and committing the package lists to the Git repo, updating the packages, cleaning the cache, and so much more.
* Config located at link:bspwm/[`bspwm/`] directory.
* The usual target path for a user is at `$HOME/.config/bspwm/`.
* Minimum version (from `bspwm --version`):
** `0.9.7-10-g2ffd9c1`
* Simply contains `bspwmrc` which is an executable setting up bspwm-related settings and and starting up some applications.
However, the "true" version is stored as a https://github.com/dylanaraps/pywal/wiki/User-Template-Files[template file] for pywal (located at link:wal/templates/bspwmrc[`wal/templates/bspwmrc`]).
* This allows for a modular setup.
For using keybindings, it uses `sxhkd` (Simple X Hotkey Daemon).
For something similar to i3-bar, https://github.com/polybar/polybar[polybar] serves as the replacement.
* This package is really a https://github.com/hlissner/doom-emacs[Doom Emacs]-based configuration more than the vanilla config so you need to install it first before touching the config with your grubby hands.
Just run the following command `git clone https://github.com/hlissner/doom-emacs ~/.emacs.d && ~/.emacs.d/bin/doom install` and it should take care of the rest.
* Config located at link:emacs/[`emacs/`].
* The ideal target path for a user is at `$HOME/.config/doom`.
* Minium version (from `emacs --version`):
** `GNU Emacs 26.3`
** For Doom Emacs, it's not particularly important since it's in rolling release but for future references, it is from the `develop` branch at commit https://github.com/hlissner/doom-emacs/commit/efa599f076c3a140c6b4006c352fdba3361abebd[`efa599f076c3a140c6b4006c352fdba3361abebd`] accessed at 2020-04-24.
* Regarding theming Doom Emacs, I've found mainly two ways.
** First is simply using https://gitlab.com/jjzmajic/ewal[ewal] but the resulting colors are not pretty IMO and I haven't found a way to customize it aside from forking and modifying the package itself.
** Second is simply generating the Doom Emacs theme file myself;
I have a https://gitlab.com/foo-dogsquared/doom-theme-generator[small script] that is generates one from the Pywal color scheme.
** Or simply don't and use https://gitlab.com/protesilaos/modus-themes[modus-themes] instead for that light customization options.
* Config located at link:nvim/[`nvim/`] directory.
* The usual target path for a user is at `$HOME/.config/nvim`.
* Minimum version (from `nvim --version`):
** `NVIM v0.4.3`
* Uses https://github.com/junegunn/vim-plug[`vim-plug`] as the plugin manager.
* Contains my plugin list and editor configurations in `init.vim`.
* There are also some https://github.com/sirver/UltiSnips[UltiSnips] snippets stored in `own-snippets` folder (since `snippets` is a reserved folder name).
* One of the largest snippet file is the snippets for LaTeX files.
It is based on https://github.com/gillescastel/latex-snippets/[_Gilles Castel_'s UltiSnips LaTeX snippets].
A window compositor forked from https://github.com/chjj/compton[compton] that adds off-screen buffers and additional effects and animations to the window.
* There is only the standalone config (might decide to make it modular) and the launch script which is copied from the https://wiki.archlinux.org/index.php/Polybar[related Arch Wiki entry].
The theme is dynamically used with the Xresources file (by using `xrdb`).
For documentation, check out the https://wiki.archlinux.org/index.php/Polybar[already linked Arch Wiki entry] and the https://github.com/polybar/polybar/wiki[official documentation from GitHub].
* The usual target path for a user is at `$HOME/.config/wal`.
It is ideal that you've already have your own color schemes saved in there as well.
* Minimum version (from `wal --version`):
** `wal 3.3.0`
* Due to the nature of my setup where I want those consistent colors, most of the configurations are tucked away as https://github.com/dylanaraps/pywal/wiki/User-Template-Files[template files] but it should be easy to identify which is which.
Certain applications such as for `dunst` and `bspwm` are in here and should be considered as the real version of the config.
The primary file to look for is the `.profile` to set environment variables independent of the shell setups.
* Previously relied on https://github.com/robbyrussell/oh-my-zsh/[oh-my-zsh].
Eventually, the config became independent and can work without it.
For the documentation, check out the manual entry for `zsh` to gain an overview of the shell.
The documentation itself is massive and comprehensive.
The main manual explains some things such as the startup/shutdown files and compatibility with other shells.
It also lays out the sections of the manual which you can check it out.
Since the manual has been split into multiple sections, it can be daunting to navigate.
The most referred sections by far are `zshmisc` where it gives details on the miscellanea of zsh such as the prompt and special variables you might want to know.
The other section is `zshbuiltins` where it explains built-in commands of zsh.
For coding with Zsh, look into the http://zsh.sourceforge.net/Doc/Release/index.html[Zsh Manual].
* https://bitwarden.com/[Bitwarden] - An open source password manager.
Comes with a browser extension or a desktop version of the app.
* Internet Archive Web Extension (https://chrome.google.com/webstore/detail/wayback-machine/fpnmgdkabkmnadcjpehmlllkndpkmiak[Chrome] and https://addons.mozilla.org/en-US/firefox/addon/wayback-machine_new/[Firefox] version) - A browser extension for tracking down the saved versions of a page.
Very useful extension for tracking old resources that has been moved or deleted.
* https://github.com/gorhill/uBlock[uBlock Origin] - A security tool for blocking known trackers.
* https://www.one-tab.com/[OneTab extension] - An extension to enable grouping of tabs into one tab.
Convenient for preventing a lot of tabs opened at one time.
* https://www.eff.org/privacybadger[Privacy Badger] - A security tool for blocking trackers.
Unlike the other blockers like uBlock Origin, Privacy Badger learns with more usage.
I still use https://www.gnu.org/software/coreutils/[GNU coreutils] and common Unix tools (e.g., https://curl.haxx.se/[cURL]) but it could be good to find some alternatives.
If you want to look for some alternatives or just feeling adventurous yourself, I recommend starting with https://github.com/agarrharr/awesome-cli-apps[this awesome list] and https://github.com/alebcay/awesome-shell[this one, too].
* https://github.com/sharkdp/bat[bat] - Basically `cat(1)` with wings.
* https://github.com/jarun/Buku[Buku] - A developer-oriented (i.e., easy to integrate with your own programs) browser-independent bookmark manager for the command line.
* https://github.com/ogham/exa[exa] - A user-friendly replacement for `ls(1)`.
* https://github.com/sharkdp/fd[fd] - A user-friendly alternative to `find(1)` from https://www.gnu.org/software/findutils/[GNU `findutils`].
* https://feh.finalrewind.org/[feh] - A minimal image viewer.
* https://github.com/junegunn/fzf[fzf] - A fuzzy command line finder.
* https://github.com/sharkdp/hexyl[hexyl] - A hex viewer on the command line.
* https://github.com/gokcehan/lf[lf] - A terminal file manager mainly inspired by http://ranger.github.io/[Ranger].
* https://github.com/naelstrof/maim[maim] - A simple screenshot utility.
* https://github.com/dylanaraps/neofetch/[neofetch] - A program for getting information for your hardware and software setup.
footnote:[You can also take a look at https://github.com/dylanaraps/pfetch[pfetch] (created by the same author) which can be an excellent reference for getting system information between Unix-based systems.
Seriously though, it's insane;
the guy's a wizard.]
* https://neovim.io/[Neovim] - A modern fork of https://www.vim.org/[Vim].
* https://github.com/BurntSushi/ripgrep[ripgrep] - A fast alternative to https://www.gnu.org/software/grep/[GNU `grep`].
* https://weechat.org/[Weechat] - An IRC client on the command line.
* https://github.com/ytdl-org/youtube-dl[youtube-dl] - A utility for downloading YouTube videos (and also others).
* https://asciidoctor.org/[Asciidoctor] - A text formatting language suitable for creating books, documentations, and writings.
Highlights a heavier feature set compared to Markdown.
* https://github.com/gohugoio/hugo[Hugo] - A static site generator for creating websites and personal wikis.
* https://jupyter.org/[Jupyter] - Similar to R Markdown except with a stronger emphasis for https://en.wikipedia.org/wiki/Literate_programming[literate programming].
This is closely associated with the https://anaconda.com/[Anaconda distribution].
Useful for a variety of document formats to be converted into a website especially with the (bare) support for https://pandoc.org/[Pandoc] converter.
* https://www.libreoffice.org/[LibreOffice] - An office productivity suite and serves as a free alternative to Microsoft Office suite.
* http://luatex.org/[LuaTeX] - The TeX engine I primarily use for my LaTeX documents.
* https://orgmode.org/[Org-mode] - A lightweight text formatting language that offers a variety of export options, literate programming, and reproducible of stuff similar to Jupyter Notebooks.
* https://pandoc.org/[Pandoc] - A universal document converter that supports a wide variety of document formats.
Primarily used for converting Markdown documents into Asciidoctor text.
* https://rmarkdown.rstudio.com/[R Markdown] - A text formatting language that comes with executing programs with live output in the notebook.
* https://www.tug.org/texlive/[TeX Live] - A cross-platform LaTeX distribution for compiling LaTeX files.
* https://audacious-media-player.org/[Audacious] - An audio player with various listening options.
footnote:[Don't worry, I'm trying to be cool by considering https://rybczak.net/ncmpcpp/[`ncmpcpp`].]
* https://ffmpeg.org/[ffmpeg] - A multimedia codec including for MP4, FLV, and more.
Also can be used as a recorder.
* https://www.imagemagick.org/[ImageMagick] - A software suite for graphics.
* https://obsproject.com/[OBS Studio] - A facility for streaming and recording videos.
* https://www.shotcut.org/[Shotcut] - A video editor built with the https://www.mltframework.org/[MLT Framework].
* https://github.com/muennich/sxiv[sxiv] - Self-explaining-ly named "Simple X Image Viewer".
* https://www.videolan.org/vlc/[VLC Media Player] - A multimedia player.
=== Music production
You can find my crappy soundtracks primarily in my https://www.youtube.com/channel/UCuMiU9bzATu5oTp-vhOlL2Q[YouTube channel] (may consider a SoundCloud account or similar).
* https://kx.studio/Applications:Cadence[Cadence] - A set of audio tools.
* https://kx.studio/Applications:Carla[Carla] - An audio plug-in host supporting various audio plug-in formats such as VST2/3, SF2, and SFZ.
Part of the KX Studio project.
* https://lmms.io/[LMMS] - A digital audio workstation for beat production.
* https://musescore.org/[Musescore] - A music composition and notation software.
* https://supercollider.github.io/[SuperCollider] - A platform for audio synthesis and algorithmic composition.
TIP: I recommend to start at this list especially if you're starting with a bare minimum of a Linux installation.
* https://hisham.hm/htop/[htop] - A process viewer and manager.
* https://github.com/lxde/lxsession[lxsession] - A session manager and an authentication agent for Polkit; very useful if you're usually using with a user-level account.
* https://www.freedesktop.org/wiki/Software/polkit/[Polkit] - A program for bridging unprivileged processes to privileged access.
* https://wiki.archlinux.org/index.php/Systemd-boot[systemd-boot] - The UEFI boot manager.
* https://www.freedesktop.org/wiki/Software/udisks/[udisks] - A manager for mounting filesystems.
* https://github.com/coldfix/udiskie[udiskie] - An automounter for removable media.
* https://github.com/jethrokuan/dots/ for his Emacs and Org Mode writing setup.
He also has a dedicated series on his https://blog.jethro.dev/[blog site] if you want the juicy details.
* https://www.reddit.com/r/unixporn/ obviously.
* Specifically for https://www.reddit.com/r/unixporn/comments/8ezsq7/bspwm_terminal_tabs_in_polybar_dark_and_dull_exam/[the tabbed terminals idea] and the https://github.com/Nikzt/dotfiles[linked dotfiles repo]) (not yet implemented, still cleaning up my stuff)
* https://www.reddit.com/r/unixporn/comments/edmb8b/awesome_gnawesome/[Just] https://github.com/ilovecookieee/Glorious-Dotfiles[saving] https://github.com/PapyElGringo/material-awesome[these] for an **awesome** future, hehehe.
== Wallpapers
Here's a list of some of the best wallpapers I've used throughout my ricing journey.
I've also tried to get the creators to show appreciation for their work.