Selected documentation and usage notes for my dotfiles
Revision No. 881, commit cc1cc6b
.
“misc: Preparing for upgrade to debian 12 (bookworm)”
Table of Contents
View changelog since the last revision as diff HEAD~1...HEAD
The verbosity factor of this document compared to comment lines of code in this repo is about 5:1.
If this document is 29.7KiB in size, and the approximate size of all comment lines of code is 65.6KiB then this document currently covers about 9.06% of all implemented features and behavior in this repository. This is just an automated guess though.
This document and repository is also mirrored at
microsounds/atelier
on GitHub.
Last updated 🌗 Thu, May 25th, 2023.
dotfiles—“atelier”
shimeji miku © 2010 canary yellow
This is my primary computing setup, a self-contained graphical shell environment for Debian GNU/Linux.
- Git is used to maintain an identical and reproducible setup across multiple machines.
- A series of post-install scripts in
~/.once.d
document and reproduce system-wide deviations from a fresh install.- A suite of unit tests ensures a reproducible installation with each revision.
Detailed installation instructions are provided, along with some documentation for the most essential components.
Pictured: Debian stable, a “graphical shell” environment consisting mostly of xorg, dwm, sxhkd and various urxvt clients.
Quick start
[OPTIONAL] Instructions for a Debian base install with debootstrap
for BIOS/UEFI x86 systems.
Installing Debian using debootstrap
WARNING
This is a quick reference on usingdebootstrap
to install Debian manually without using the official Debian installer. This is not a comprehensive tutorial on *NIX concepts, you should have some familiarity with administrating a GNU/Linux system before continuing.
-
Boot into a Debian Live CD environment with any DE and partition your boot disk with
gparted
.You should always keep a Live CD install media around for use as a rescue disk, regardless of installation method. I only do it this way because I don’t feel like using
fdisk
.To install packages in the live environment,
apt-get update
first and thenapt-get install gparted
.Suggested boot disk layouts:
- Legacy BIOS systems that support MBR/
msdos
partition tables
# MBR disks support a maximum of 4 primary partitions [ primary part. (root) ] [ extended partition ] [ logical part. (swap) ] [ logical part. (home) ] # example /etc/fstab /dev/sda1 / ext4 defaults 0 1 /dev/sda5 none swap defaults 0 0 /dev/sda6 /home ext4 defaults 0 2
- Modern UEFI systems that support GPT/
gpt
partition tables
# EFI partition must be FAT32 and at least 32MiB [ EFI partition ] [ root partition ] [ swap partition ] [ home partition ] # example /etc/fstab /dev/sda1 /boot/efi vfat defaults 0 2 /dev/sda2 / ext4 defaults 0 1 /dev/sda3 none swap defaults 0 0 /dev/sda3 /home ext4 defaults 0 2
NOTE
If your machine uses a slow eMMC-based boot disk, I recommendf2fs
for modestly improved performance instead ofext4
. Support for booting fromf2fs
is not provided by default in Debian.
See this tutorial on adding requiredf2fs
modules toinitramfs
for more info. - Legacy BIOS systems that support MBR/
-
Mount your newly created filesystem in
/mnt
, including your home partition to/mnt/home
if you made one. -
Install
debootstrap
and install the Debian base system into/mnt
.debootstrap --arch [eg. i386, amd64] stable /mnt https://deb.debian.org/debian
- See https://www.debian.org/ports/ for a full list of platforms available.
-
Chroot into your new system, all actions from this point onward are within your chrooted system.
$ sudo su - $ for f in proc sys dev run; do mount --make-rslave --rbind /$f /mnt/$f; done $ chroot /mnt /bin/bash
-
Configure your
/etc/fstab
to taste.- Try
lsblk -f >> /etc/fstab
to identify disks byUUID=...
instead of device name.
- Try
-
Customize your locale by installing and
dpkg-reconfigure
’nglocales
, andtzdata
. -
Edit
/etc/hostname
and/etc/hosts
with your preferred hostname. -
Install a suitable linux kernel.
- Find a suitable kernel meta-package to install with
apt-cache search ^linux-image | grep 'meta'
.
- Find a suitable kernel meta-package to install with
-
Install
network-manager
and the bootloader packagegrub2
.grub2
does not install to your boot disk automatically, use the following:- Build initial grub configuration with
/sbin/update-grub
- For BIOS (installs to magic sector at start of disk)
/sbin/grub-install --root-directory=/ /dev/sda
- For UEFI (installs to EFI partition mounted in
/boot/efi
)/sbin/grub-install --root-directory=/ --efi-directory=/boot/efi /dev/sda
- Build initial grub configuration with
-
Give your
root
user a password, create your normal user, and assign it a password also.- eg.
useradd -m USERNAME -s /bin/bash; passwd USERNAME
- eg.
-
You should now have a working system, login as your user and skip to Step 2 in the Quick start below.
- You can reboot from the Live CD environment at this point to check your work but it’s not required.
- Install Debian stable, perform a base install with no DE selected and no standard utilities when prompted.
- Do not perform these steps on
tty1
,xinit
will launch withoutdwm
present and you will be kicked.
- Do not perform these steps on
- Install
git
,wget
, andsudo
, then add yourself to thesudo
group.- Log back in to apply changes to group membership.
- Bootstrap the system automatically with a hard git reset from this repo, this is done only once.
$ git clone --bare https://github.com/microsounds/atelier ~/.config/meta $ git --git-dir=$HOME/.config/meta --work-tree=$HOME reset --hard # Invoke the login shell to apply changes made to the environment $ exec $SHELL -l
- Run
post-install
in the shell to run post-install scripts automatically. Do not run as root.- Sets up the package manager, installs essential packages, window manager, text editor, etc.
- Reboot to finish.

Quick start on Termux for Android
NOTE
This is meant to be a lightweight port with modifications, do not initiate a fullpost-install
.
- Install
git
, and bootstrap the system usinggit reset --hard
as described above. - Post-install: Run only
~/.once.d/a0-android-termux.sh
- Applies android-specific hacks and termux specific dotfiles for theming and softkeys.
- When pulling from upstream, stash changes or
git reset --hard
to prevent merge conflicts.- Use
patch -p1 < ~/.termux/diff.patch
to restore changes if stash is lost.
- Use
See attached notes for explanations of changes from a standard Linux environment.
List of supported platforms
Full graphical shell environment
- Any conventional BIOS/UEFI-compliant x86-based Personal Computer
- x86-based Chromebooks in Developer Mode (SeaBIOS), or liberated with UEFI firmware (Coreboot).
- See https://mrchromebox.tech/ for more information on unlocking your bootloader.
- Next Thing Co. PocketC.H.I.P armhf-based portable
toy computerlinux handheld- Final NTC-provided Debian 8 (jessie) OS images from 2016 come with out-of-tree
4.4.13-ntc-mlc
kernel pinned, upgradeable to 10 (buster).
- Final NTC-provided Debian 8 (jessie) OS images from 2016 come with out-of-tree
Single-user minimal shell environment
- Bootstrapping in virtualized container instances for use in CI/CD workflows
- Termux terminal emulator and Linux environment for Android
- Non-standard *NIX environment, currently only supports a subset of available features.
Usage notes
Using git meta
For local-scope changes, files in $HOME
are versioned and mangled in place using Git.
$HOME
is treated as the detached working tree for a git bare repo located at~/.config/meta
- The
meta
alias prefixes all git commands with--git-dir=$HOME/.config/meta --work-tree=$HOME
meta status
will ignore files not manually added or tracked by this git repo.- This is achieved using the
status.showUntrackedFiles
option and not via manually updating~/.gitignore
as is commonly done.
- This is achieved using the
- Invoking
git
outside of a valid git directory will append themeta
alias automatically.init
andclone
commands are unaffected.
Using ~/.once.d
post-install scripts
All system-wide changes are performed through automated scripts located in ~/.once.d
, you can run them all at once with shell function post-install
.
Each script is self-contained, you can run them individually, anytime.
- Some scripts apply only to specific hardware configurations, and will exit even if they are run.
- Scripts affecting
systemd
or the bootloader will be skipped in virtualized container contexts. - Locally installed software is installed to
~/.local/bin
when possible.
series | function |
---|---|
0* |
System-wide changes performed through the package manager. |
1* |
Changes to ~/.local file hierarchy, such as locally installed software and resources. |
2* |
System-wide changes that bypass the package manager, such as changes to /etc .These are hacks. |
c* |
System-wide changes affecting chromebook hardware only. |
a* |
Android-specific hacks only. |
p* |
NTC PocketCHIP-specific hacks only. |
Essential and *optional package groups
-
~/.comforts
describes a list of non-optional package groups that will be installed through the package manager.- Optional package groups are marked with an *asterisk, you will be prompted to approve these at runtime.
Essential and *persistent upstream utilities
~/.comforts-git
describes the full list of utilities compiled and installed from their upstream git sources.- Repos must have a typical
./configure
and/ormake install PREFIX=...
metaphor to build correctly. - Sources marked with an *asterisk will be persistently installed to
~/.config/${URL##*/}
- Repos must have a typical
Installation can be customized with user-provided executable install hacks scripts, named {pre,post}-run
.
These can be placed in ~/.config/upstream
or at the root of a persistently installed utility’s install directory as described above
Rationale for doing things this way is summarized in commit 2fe1c3745
.
Window manager
Keybinds are grabbed by dwm
, sxkhd
or fcitx5
to avoid keybind stomping.
dwm
keybinds are the defaults with several exceptions, the modkey Mod1
is super instead of alt because many alt combinations are already taken by other applications I use.
shift + | alt + | key |
---|---|---|
kill window | F4 | |
counter-clockwise | switch focused window | tab |
shift + | super + | key |
---|---|---|
float window[toggle] | monocle window[toggle] | space |
set as master window[toggle] | terminal | return |
launcher | p | |
file manager | e | |
ssh-add[toggle] | backspace | |
partial screenshot | screenshot | |
reserved | scroll lock | |
reserved | pause | |
reboot | shutdown | F1 |
hibernate | sleep | F2 |
hibernate + reboot | display off | F3 |
configure networking | calculator | F4 |
configure displays | switch active display[toggle] | F5 |
minimum brightness | lower brightness 10% | F6 |
maximum brightness | raise brightness 10% | F7 |
configure audio | mute[toggle] | F8 |
lower volume 5% | F9 | |
raise volume 5% | F10 | |
randomize wallpaper | F11 | |
reserved | F12 |
alt + | ctrl + | key[special] |
---|---|---|
switch input method[toggle] | space | |
task manager | delete | |
syslog | insert |
Reduced layout for Chromebooks
Search/Everything/Caps lock key serves as the super key. Same as above, with the following changes:
alt gr + | key | remarks |
---|---|---|
prior | up | |
next | down | |
home | left | |
end | right | |
delete | backspace | |
F11 | delete | same as power key, keystroke repeat not available |
Some environment notes
X server invocation
No display manager is used, login to tty1
to start the graphical shell.
All daemons and services required to support the graphical shell are initialized along with the X server and are terminated when the user terminates the session.
systemd
unit services, cronjobs and similar mechanisms are avoided.
At startup, startx
will pass hardware-specific xorg.conf
files to the X server, to enable hardware compositing on supported hardware and eliminate screen tearing.
Xorg’s security model forbids non-root users from passing arbitrary config files to the X server unless said configs are located in one of several “blessed” directories.
Post-install scripts will create symlink /etc/X11/$(id -u)-override
that points to ~/.config/xorg
to override this behavior.
Optional X Window configuration
~/.xrandr
For use with multi-monitor and/or complicated display setups, you can override the default display layout with one or more commands to xrandr
saved to optional config file ~/.xrandr
# e.g. two monitors, right is mounted vertically
--output HDMI-0 --auto --primary --rotate normal
--output HDMI-1 --auto --right-of HDMI-0 --rotate right
Commands in this file are passed to xrandr-cycle
line by line at startup if it exists.
For example, this configuration would suit a 2 monitor layout with the right monitor mounted vertically.
~/.xdecor
You can designate one or more paths to directories containing images or videos for use as a wallpaper using optional config file ~/.xdecor
# prefixing with ~/ is acceptable
~/Pictures/some/path
/media/sd_card/some/path
If it exists, xwin-decor
will randomly pick a directory and file within it and set it as the wallpaper on startup.
In the case of video files, a random video frame from that file will be taken and set as the wallpaper using ffmpeg
.
X resources and theming
For consistency, xinit
, dwm
and other scripts make use of the C preprocessor to mangle config files and configure color schemes.
Theme settings and individual color schemes are stored as C header files containing preprocessor macros representing color hex codes in ~/.local/include
.
This directory is appended to $C_INCLUDE_PATH
at login.
- Using shell function
reload
will reload changes to.xresources
and hard-reset your current terminal instance. - Use command
palette
to soft-reset color scheme using OSC terminal escapes without losing the current shell.
Optionally, you can apply another existing color scheme by naming it as an argument. This can be useful when dealing with TUI applications that force their own background colors.
List of available macros
{FG,BG}COLOR
for terminal fg/bg colors{FG,BG}LIGHT
for UX highlight colorsCOLOR0..COLOR15
for the 16 standard ANSI terminal colorsFN_{TERM,HEADER,TEXT}
for specific font facesFN_{TERM,HEADER}_JP
for matching fallback fontsFN_{TERM,HEADER,TEXT}_SIZE
for matching font sizesFN_EMOJI
for specifying fallback emoji glyphsFN_EMOJI_SIZE
for specifying fallback emoji glyph sizes
Issues with HiDPI scaling
HiDPI display setups are currently not supported, 96dpi is assumed everywhere.
HiDPI scaling brings up innumerable display issues in every category of graphical software including electron-based applications that require polluting scripts and dotfiles to smooth out toolkit scaling issues. Maintaining mixed-DPI multi-monitor setups in X11 is even more painful.
As of posting, I don’t have a >1080p monitor to motivate such changes,
I’m not about to pepper my scripts with toolkit-specific environment variables and conditional logic to support HiDPI scaling.
See ~/.local/include/theme.h
for more info.
Non-standard commands
Several commands are extended to include impure functions, such as purposefully mangling config files, and have the following precedence when multiple versions exist:
- Interactive shell functions defined in
~/.bashrc
- Non-interactive shell library executables in
~/.local/lib
- Shell script snippets used by multiple scripts to reduce clutter.
- Normal executables and symlinks in
~/.local/bin
- Some are shell functions promoted to scripts so they’ll work in
dmenu
or outside of a terminal context.
- Some are shell functions promoted to scripts so they’ll work in
/usr/bin
system-wide executables
Interactive shell
The prompt path will feature embedded git
information provided by path-gitstatus
highlighting the root of a git
worktree and it’s status.
Outside of git
worktrees, the path component will be mangled by path-shorthand
and be truncated to the last $PATH_WIDTH
characters (default is 50) for improved usability.
Termux for Android
Single-user shell environment should work as expected on Termux without root access or changes to $PREFIX/etc
with several caveats described below.
Post-install scripts make the following adjustments statically for existing scripts.
Standard file descriptors
Shell scripts on Android systems without root access have no access to standard file descriptors /dev/std{in,out,err}
, use /proc/self/fd/{0,1,2}
instead.
ESC
sequences
<backslash>e
to insert escape literals in scripts works for some OSC codes, but not all, use octal <backslash>33
when in doubt.
$PREFIX
Previously, termux-chroot
was used to ensure FHS-compliance, but it introduced unacceptable performance speed.
Use Termux’s own provided envvar $PREFIX
to refer to standard filesystem locations within scripts or interactively, e.g. $PREFIX/tmp
which expands to /data/data/com.termux/files/usr/tmp
.
In practice, shell script shebangs don’t need to be rewritten, Termux already rewrites these with some hidden voodoo I don’t care to understand.
Background processes since Android 11
The customized Android images that ship from Chinese and Korean manufacturers since version 11 have become far more aggressive in pruning “phantom” processes (daemons) in the pursuit of better battery life.
You may experience issues with processes backgrounded with the &
operator being throttled or killed when multitasking outside of Termux. Daemons that fork without becoming a child process or exec
’ing the same process that called it may be killed immediately or shortly after leaving Termux if not called in foreground mode.
In order to prevent Android from prematurely pruning ssh-agent
while multitasking, it is called as the parent process for the current shell.
Termux developers recommend their very own termux-services for running common daemons. Launch daemons in foreground mode in another terminal instance without forking and preferably with wakelock acquired from the notification bar if you wish to run a long-running task without being throttled by the operating system.
cd
-
The contents of
$OLDPWD
is preserved acrossbash
sessions. -
cd
offers the following extensions:opt function ...
,....
, etc.Shorthand for ../../
,../../../
and so on.-f <query>
Interactive fuzzy find and jump into a sub-directory with fzf
chromium
NOTE
On first-run,chromium
will momentarily exit and restart to rebuild configuration and enable use of externally customized color options.
chromium
is not meant to be user-serviceable or configurable through plaintext without using system-wide group policy features, chromium
is a shell script extended to mangle user-hostile internal state files to match the persistent plaintext configs described below:
~/.config/chromium/preferences.conf
- Main browser preferences stored as JSON in
Default/Preferences
.
- Main browser preferences stored as JSON in
~/.config/chromium/local_state.conf
- Chromium experiment flags stored as JSON in
Local State
.
- Chromium experiment flags stored as JSON in
C preprocessor syntax is also accepted, hex color values in the form #RRGGBB
will be converted to a signed integer representing 0xBBGGRRAA
in two’s complement hexadecimal with AA
(alpha channel) always set to 0xFF
~/.config/chromium/omnibox.sql
- Omnibox settings and Tab-to-search keyword shortcuts stored as SQLite in
Default/Web Data
.
- Omnibox settings and Tab-to-search keyword shortcuts stored as SQLite in
Managed policy overrides
chromium
is managed by /etc/chromium/policies/managed/extensions.json
, set up during post-install, which automatically installs several useful extensions on first-run, including uBlock Origin.
Configuring Vimium
Use of Vimium is considered optional, as I haven’t figured out a way to configure it automatically on first-run.
Its configuration resides in ~/.config/chromium/vimium
Run configure.sh
to rebuild vimium-options.json
for importing back into Vimium by hand.
An ongoing experiment
chromium
has proven difficult to configure non-interactively time and time again.
Plaintext chromium
configuration is an ongoing experiment of mine.
non-interactive functionality | status |
---|---|
first-run config rebuild | works |
applying persistent chromium settings | works |
applying persistent chromium flags | works |
applying persistent omnibox settings | works |
extension install on first-run | works (via group policy) |
applying persistent extension settings | no |
git
git
aliases are defined in ~/.gitconfig
or implemented in interactive shell function git()
See Usage Notes for more information.
-
This is a critical component of the graphic shell environment, some aliases are cumulative in nature.
alias function meta
Appends --git-dir=$HOME/.config/meta --work-tree=$HOME
to agit
command.
(Added implicitly when outside a git directory.)past
,summary
Outlines the last 17 commits made before HEAD
with a commit graph.future
Outlines the next 17 commits made after HEAD
with a commit graph.rw
checkout
1 commit backward, alias forcheckout HEAD~1
ff
checkout
1 commit forward towardmaster
list-files
List all tracked filenames in repo, ideally for use with xargs
.edit-tree [query]
Interactive tracked plaintext file tree, opens file with $EDITOR
in new window ifX
is running.flatten
Automatically melds --fixup/squash
commits out of existence starting from the root commit.recommit
Stages changes to worktree and commit --amend
s them as part of the last commit.checkin
Commit all changes immediately with a generic timestamp and hostname commit message. shove
Runs checkin
and pushes immediately.sync
Runs git meta pull
and then recurses through~/Git
and runsgit pull
on every existinggit
repo found.vacuum
Runs git meta gc
and then recurses through~/Git
and runsgit gc
on every existinggit
repo found.
nano
NOTE
nano
keybind macros make use of inline non-printable control characters, you must usenano
orcat -v
to view~/.nanorc
correctly.
-
nano
is an alias fornano-overlay
which mangles config files and offers the following extended options:opt function -e, --ctags <tag> <#>
Jumps into file containing ctags
definition matching<tag>
.
Optional<#>
selects from multiple matches,all
will open all of them.-c, --ctags-dict <file1>...
Enable project-wide autocomplete by appending condensed dictionary of all ctags
keywords to all files.
Dictionary will be removed upon exiting.-f, --encrypt <file>
Open AES encrypted text file with a plaintext password.
File will be created if it doesn’t exist.-j, --rsa <file>
Open AES encrypted text file with generic RSA keypair in PEM format.
File will be created if it doesn’t exist.-s, --ssh-sign <file>
Open AES encrypted text file with a nonce value signed with SSH private key.
File will be created if it doesn’t exist.-i, --identity <key>
Use an OpenSSL compatible keypair to encrypt/decrypt.
Can be a private key or a public key with private half stored inssh-agent
-
Once inside the actual
nano
, the following keybind macros are available:key function M-0
Execute current line as shell command and pipe contents of buffer as stdin.
Destructively replaces entire contents of buffer, useful for formatting.M-1
Execute current line as shell command and paste output in current buffer.
Commands within inline comments are accepted.M-2
Select token underneath cursor and jump into its ctags
definition(s) within the same shell.
Requires validtags
file in current or a parent directory.M-4
Select token underneath cursor and jump into its ctags
definition(s) in a new terminal window.
Requires validtags
file in current or a parent directory.
notify-send
This particular notify-send
implements only -t
for expiration time in seconds,
because it doesn’t tie into any dbus
-based notification daemon implementing the Desktop Notifications spec.
Instead, it’s just a shell script that writes to a named pipe that gets picked up by xwin-statusd
as a simple way to implement OSD text and single-line notifications.
Unlike other implementations, you can pass notifications/OSD text as an argument or via stdin without using xargs
.
sc
(spreadsheet calculator)
sc
supports macros to some degree, but its macro implementation is difficult to understand and there aren’t many examples of it being used successfully anywhere that I’ve managed to find.
Instead, the shell function sc()
offers an easier to understand macro system for statically mangling .sc
spreadsheet files at runtime.
sc
will automatically run any executable sharing the same initial name as the.sc
file.- eg.
sheet1.sc
will runsheet1.sc.1
,sheet1.scx
, etc. if they exist in the same directory and are executable at runtime.
- eg.
- You can write an arbitrarily complex pre-run macro script in any language, so long as it’s made aware of its own filename at runtime.
- Because the
sc
file format is plaintext, you can generatesc
syntax with just a shell script.
- Because the
sc
pre-run macro example
-
This is an example of a conditional macro script for an inventory spreadsheet that color-codes cells when specific strings are found.
#!/usr/bin/env sh # apply colors to specific strings in column B file="${0%.*}" # derive .sc file name from name of this script # remove all instances of color from the file in place { rm "$file"; egrep -v '^color' > "$file"; } < "$file" cat <<- EOF >> "$file" # set some non-default colors color 3 = @black;@red color 4 = @black;@yellow color 5 = @black;@green EOF # select only string cells from column B, apply colors based on string contents # sc format: leftstring B2 = "example string" egrep '^((left|right)string|label)' < "$file" | while read -r cmd cell _ str; do case "$cell" in B*) case "$str" in *broken*) echo "color $cell:$cell 3";; *bad*) echo "color $cell:$cell 4";; *working*) echo "color $cell:$cell 5";; esac;; esac done >> "$file"
Downloads
git clone https://github.com/microsounds/atelier
- Alternatively, download latest revision as a
gzip
’d tarball.
STATISTICS
Version numbers for selected long-lived components found in the current revision:
android-termux.sh v1.0
chromium_widevine.sh v0.2
getquote v0.1
git_status.sh v0.7
moonphase-date v0.2
nano_overlay.sh v1.2
wm_status.sh v0.4
xrandr_cycle.sh v0.2
xwin_decor.sh v0.9
xwin_webm.sh v0.5
xwin_widgets.sh v0.4
Total on-disk size of the current revision is 222.16KiB out of a total compressed git history size of 792.05KiB.
Complete source listing
microsounds@shami:~$ git meta ls-tree --name-only -r master | xargs ls -lhgG
-rw-r--r-- 1 9.9K Feb 3 2023 18:05 rev. 137 .bashrc
-rw-r--r-- 1 1.2K May 25 2023 19:52 rev. 82 .comforts
-rw-r--r-- 1 395 Mar 10 2022 17:55 rev. 8 .comforts-git
-rw-r--r-- 1 604 Jan 17 2022 18:01 rev. 4 .config/chromium/local_state.conf
-rw-r--r-- 1 3.6K May 25 2023 19:52 rev. 1 .config/chromium/omnibox.sql
-rw-r--r-- 1 427 May 25 2023 19:28 rev. 3 .config/chromium/preferences.conf
-rwxr-xr-x 1 465 Feb 13 2022 22:53 rev. 2 .config/chromium/vimium/configure.sh
-rw-r--r-- 1 639 Feb 13 2022 22:53 rev. 2 .config/chromium/vimium/general.json
-rw-r--r-- 1 608 Feb 12 2022 01:57 rev. 1 .config/chromium/vimium/keybinds.conf
-rw-r--r-- 1 442 Feb 12 2022 01:57 rev. 1 .config/chromium/vimium/style.css
-rw-r--r-- 1 807 Dec 24 2021 12:04 rev. 2 .config/dmenu/config.h
lrwxrwxrwx 1 14 (symbolic link) rev. 0 .config/dmenu/pre-run -> ../dwm/pre-run
-rw-r--r-- 1 6.3K Dec 24 2021 12:04 rev. 31 .config/dwm/config.h
-rw-r--r-- 1 560 Jul 16 2021 00:35 rev. 1 .config/dwm/patches/floating-alwayscenter.diff
-rw-r--r-- 1 1.7K Jul 16 2021 00:35 rev. 1 .config/dwm/patches/floating-saveposition.diff
-rw-r--r-- 1 501 Jul 16 2021 00:35 rev. 3 .config/dwm/patches/monocle-indicator.diff
-rw-r--r-- 1 1.8K Jul 16 2021 00:37 rev. 1 .config/dwm/patches/rule-ispermanent.diff
-rw-r--r-- 1 870 Jul 16 2021 00:35 rev. 1 .config/dwm/patches/status-allmonitors.diff
-rwxr-xr-x 1 250 Mar 11 2022 22:34 rev. 2 .config/dwm/pre-run
-rw-r--r-- 1 242 Apr 28 2023 22:37 rev. 1 .config/fcitx5/profile
-rw-r--r-- 1 719 Oct 17 2021 22:00 rev. 6 .config/fm/libfm.conf
-rw-r--r-- 1 387 Apr 3 2021 21:51 rev. 4 .config/fm/pcmanfm.conf
-rw-r--r-- 1 155 Apr 6 2021 15:35 rev. 1 .config/gtk/gtk2.conf
-rw-r--r-- 1 263 Apr 6 2021 15:35 rev. 3 .config/gtk/gtk3.conf
-rw-r--r-- 1 967 Jul 18 2021 11:56 rev. 15 .config/htop/htoprc
-rw-r--r-- 1 643 Dec 7 2022 19:20 rev. 20 .config/mpv/mpv.conf
-rwxr-xr-x 1 323 Mar 11 2022 22:34 rev. 2 .config/nano/post-run
-rwxr-xr-x 1 215 Mar 11 2022 22:34 rev. 5 .config/nano/pre-run
-rw-r--r-- 1 197 Apr 6 2021 15:35 rev. 5 .config/sxhkd/chromebook
-rw-r--r-- 1 2.2K Mar 10 2022 17:55 rev. 41 .config/sxhkd/default
-rw-r--r-- 1 401 Dec 20 2021 13:55 rev. 1 .config/sxhkd/mouse
-rwxr-xr-x 1 231 Mar 10 2022 17:55 rev. 1 .config/upstream/x48/post-run
-rwxr-xr-x 1 311 Apr 29 2023 09:35 rev. 5 .config/upstream/x48/pre-run
-rwxr-xr-x 1 235 Dec 6 2021 18:11 rev. 2 .config/upstream/yt-dlp/post-run
-rw-r--r-- 1 1019 Dec 16 2021 12:51 rev. 5 .config/xkb/chromebook.xkb
-rw-r--r-- 1 2.2K Dec 16 2021 07:15 rev. 1 .config/xkb/ntc-chip.xkb
-rw-r--r-- 1 199 Sep 23 2020 14:50 rev. 1 .config/xorg/amd.conf
-rw-r--r-- 1 368 Aug 24 2020 22:50 rev. 6 .config/xorg/intel.conf
-rw-r--r-- 1 939 Dec 15 2021 19:58 rev. 1 .config/xorg/ntc-chip.conf
-rw-r--r-- 1 289 Aug 29 2020 21:25 rev. 2 .config/xorg/nvidia.conf
-rw-r--r-- 1 2.5K Apr 2 2023 19:27 rev. 30 .gitconfig
-rw-r--r-- 1 4.0K Mar 14 2023 20:54 rev. 29 .github/workflows/ci.yml
-rw-r--r-- 1 2.5K Sep 15 2022 02:32 rev. 7 .github/workflows/magnet-dl.yml
-rwxr-xr-x 1 232 Jan 5 2023 18:36 rev. 1 .local/bin/ascii2ps
-rwxr-xr-x 1 2.3K May 25 2023 19:52 rev. 17 .local/bin/chromium
-rwxr-xr-x 1 181 Sep 25 2022 23:41 rev. 2 .local/bin/egrep
-rwxr-xr-x 1 85 Jul 15 2020 17:12 rev. 3 .local/bin/feh
lrwxrwxrwx 1 5 (symbolic link) rev. 0 .local/bin/fgrep -> egrep
-rwxr-xr-x 1 2.8K Aug 28 2021 01:08 rev. 5 .local/bin/genshin-impact
-rwxr-xr-x 1 1.1K Jan 24 2023 19:39 rev. 1 .local/bin/getquote
-rwxr-xr-x 1 100 Jul 15 2020 17:12 rev. 2 .local/bin/make
-rwxr-xr-x 1 153 Mar 30 2021 13:19 rev. 4 .local/bin/mpv
lrwxrwxrwx 1 29 (symbolic link) rev. 0 .local/bin/nano-overlay -> ../../Scripts/nano_overlay.sh
-rwxr-xr-x 1 423 Jan 7 2022 18:03 rev. 1 .local/bin/pprofiler
-rwxr-xr-x 1 907 Oct 10 2022 21:50 rev. 1 .local/bin/psp-h264
-rwxr-xr-x 1 731 Mar 21 2022 23:26 rev. 3 .local/bin/qr
lrwxrwxrwx 1 5 (symbolic link) rev. 0 .local/bin/rgrep -> egrep
-rwxr-xr-x 1 1.0K Dec 6 2021 00:36 rev. 3 .local/bin/scramble
-rwxr-xr-x 1 155 Oct 16 2020 13:58 rev. 1 .local/bin/scrot
-rwxr-xr-x 1 661 Dec 15 2021 19:58 rev. 9 .local/bin/startx
-rwxr-xr-x 1 367 Dec 16 2022 12:16 rev. 1 .local/bin/to-chromium
-rwxr-xr-x 1 659 Mar 21 2022 23:26 rev. 3 .local/bin/twopass
-rwxr-xr-x 1 192 Oct 10 2022 21:50 rev. 1 .local/bin/winenv
lrwxrwxrwx 1 29 (symbolic link) rev. 0 .local/bin/xrandr-cycle -> ../../Scripts/xrandr_cycle.sh
lrwxrwxrwx 1 27 (symbolic link) rev. 0 .local/bin/xwin-decor -> ../../Scripts/xwin_decor.sh
lrwxrwxrwx 1 26 (symbolic link) rev. 0 .local/bin/xwin-statusd -> ../../Scripts/wm_status.sh
lrwxrwxrwx 1 26 (symbolic link) rev. 0 .local/bin/xwin-webm -> ../../Scripts/xwin_webm.sh
lrwxrwxrwx 1 29 (symbolic link) rev. 0 .local/bin/xwin-widgets -> ../../Scripts/xwin_widgets.sh
-rw-r--r-- 1 679 Oct 21 2021 23:42 rev. 1 .local/include/colors/campbell.h
-rw-r--r-- 1 457 Dec 14 2021 20:37 rev. 1 .local/include/colors/ncurses.h
-rw-r--r-- 1 749 Feb 15 2021 00:56 rev. 4 .local/include/colors/nightdrive.h
-rw-r--r-- 1 690 Nov 15 2021 23:00 rev. 5 .local/include/colors/overcast.h
-rw-r--r-- 1 642 Feb 15 2021 00:56 rev. 2 .local/include/colors/xterm.h
-rw-r--r-- 1 1.6K Dec 24 2021 12:04 rev. 3 .local/include/theme.h
-rwxr-xr-x 1 650 Jul 10 2021 23:42 rev. 2 .local/lib/conf-append
-rwxr-xr-x 1 477 Jul 10 2021 23:42 rev. 3 .local/lib/extern
-rwxr-xr-x 1 162 Jul 10 2021 23:42 rev. 2 .local/lib/is-chromebook
-rwxr-xr-x 1 194 Apr 14 2022 20:58 rev. 3 .local/lib/is-container
-rwxr-xr-x 1 376 Mar 11 2022 22:34 rev. 1 .local/lib/is-installed
-rwxr-xr-x 1 314 Jul 17 2021 22:28 rev. 1 .local/lib/is-newer
-rwxr-xr-x 1 356 Dec 15 2021 19:58 rev. 1 .local/lib/is-ntc-chip
-rwxr-xr-x 1 258 Jul 10 2021 23:42 rev. 2 .local/lib/mk-tempdir
-rwxr-xr-x 1 1.3K Apr 2 2023 19:20 rev. 5 .local/lib/moonphase-date
-rwxr-xr-x 1 526 Dec 3 2021 22:08 rev. 1 .local/lib/notify-send
-rwxr-xr-x 1 1.1K Oct 21 2021 21:08 rev. 2 .local/lib/palette
lrwxrwxrwx 1 27 (symbolic link) rev. 0 .local/lib/path-gitstatus -> ../../Scripts/git_status.sh
-rwxr-xr-x 1 553 Jul 10 2021 23:42 rev. 5 .local/lib/path-shorthand
-rwxr-xr-x 1 181 Aug 2 2021 15:47 rev. 1 .local/lib/sfx-play
-rwxr-xr-x 1 319 Jul 23 2021 00:58 rev. 1 .local/lib/user-confirm
-rwxr-xr-x 1 284 Apr 2 2023 19:27 rev. 6 .local/lib/visual
-rw-r--r-- 1 172 May 29 2020 11:21 rev. 1 .local/share/X11/bitmaps/diag.xbm
-rw-r--r-- 1 280 Aug 14 2021 15:39 rev. 1 .local/share/applications/mimeapps.list
-rw-r--r-- 1 80 Aug 14 2021 15:39 rev. 1 .local/share/applications/nano.desktop
-rw-r--r-- 1 685 Mar 31 2021 21:37 rev. 3 .local/share/nano/md-kagami.nanorc
-rw-r--r-- 1 291 Jul 15 2020 16:41 rev. 2 .local/share/nano/stdc.syntax
-rw-r--r-- 1 84 Mar 26 2022 20:37 rev. 1 .mailmap
-rw-r--r-- 1 44K Dec 17 2019 22:28 rev. 2 .minecraft/resourcepacks/HatsuneMiku.zip
-rw-r--r-- 1 1.7K Jun 25 2022 15:12 rev. 34 .nanorc
-rwxr-xr-x 1 1.7K Oct 22 2022 22:48 rev. 22 .once.d/00-apt-repositories.sh
-rwxr-xr-x 1 687 Mar 11 2022 22:34 rev. 20 .once.d/01-install-essential.sh
-rwxr-xr-x 1 463 Mar 24 2021 21:09 rev. 5 .once.d/02-meta-config.sh
-rwxr-xr-x 1 213 Oct 22 2022 22:48 rev. 1 .once.d/0p-pocketchip-dpi.sh
-rwxr-xr-x 1 2.3K Mar 24 2023 16:05 rev. 7 .once.d/10-git-upstream.sh
-rwxr-xr-x 1 657 Apr 29 2023 09:35 rev. 10 .once.d/13-posix-docs.sh
-rwxr-xr-x 1 1022 Mar 21 2022 23:26 rev. 11 .once.d/14-sunvox.sh
-rwxr-xr-x 1 549 Aug 2 2021 15:28 rev. 1 .once.d/15-sound-effects.sh
-rwxr-xr-x 1 499 Nov 21 2020 15:41 rev. 3 .once.d/20-xorg-override.sh
-rwxr-xr-x 1 387 Jun 18 2021 00:52 rev. 12 .once.d/21-network-manager.sh
-rwxr-xr-x 1 796 Jul 6 2022 16:51 rev. 11 .once.d/22-realtek-rtl8812au.sh
-rwxr-xr-x 1 527 Dec 17 2021 23:58 rev. 16 .once.d/23-grub-config.sh
-rwxr-xr-x 1 298 Nov 30 2021 00:48 rev. 1 .once.d/24-initramfs-resume.sh
-rwxr-xr-x 1 752 Mar 21 2022 23:26 rev. 13 .once.d/25-chromium-widevine.sh
-rwxr-xr-x 1 672 Mar 29 2023 21:21 rev. 4 .once.d/26-systemd-tweaks.sh
-rwxr-xr-x 1 178 Mar 13 2021 01:07 rev. 4 .once.d/27-libvirt-rootless.sh
-rwxr-xr-x 1 1.5K Mar 21 2022 23:26 rev. 9 .once.d/28-intel-undervolt.sh
-rwxr-xr-x 1 752 Apr 28 2023 22:37 rev. 4 .once.d/29-chromium-extensions.sh
-rwxr-xr-x 1 58 Nov 30 2021 00:47 rev. 3 .once.d/2a-remove-motd.sh
-rwxr-xr-x 1 201 Mar 2 2022 12:39 rev. 2 .once.d/2b-enscript-fonts.sh
-rwxr-xr-x 1 566 Nov 26 2022 20:37 rev. 1 .once.d/2c-csr8510-bluetooth.sh
-rwxr-xr-x 1 3.5K Oct 5 2022 20:49 rev. 27 .once.d/a0-android-termux.sh
-rwxr-xr-x 1 200 Jun 18 2021 00:52 rev. 9 .once.d/c0-chromebook-delete-key.sh
-rwxr-xr-x 1 818 Apr 29 2023 09:35 rev. 12 .once.d/c1-chromebook-i915.sh
-rw-r--r-- 1 1.1K Oct 22 2022 22:48 rev. 1 .once.d/ntc-chip.patch
-rwxr-xr-x 1 199 Oct 22 2022 22:48 rev. 2 .once.d/p0-pocketchip-delete-key.sh
-rwxr-xr-x 1 396 Oct 22 2022 22:48 rev. 1 .once.d/p1-pocketchip-network-manager.sh
-rw-r--r-- 1 844 Aug 28 2022 22:58 rev. 30 .profile
-rw-r--r-- 1 276 Dec 14 2021 20:38 rev. 6 .scrc
-rw-r--r-- 1 2.2K Apr 28 2023 21:47 rev. 70 .xinitrc
-rw-r--r-- 1 1.9K Feb 3 2023 18:17 rev. 26 .xresources
-rwxr-xr-x 1 4.3K May 15 2022 23:36 rev. 32 Scripts/git_status.sh
-rwxr-xr-x 1 23K Jun 25 2022 16:15 rev. 90 Scripts/nano_overlay.sh
-rwxr-xr-x 1 5.3K Mar 21 2022 23:23 rev. 45 Scripts/wm_status.sh
-rwxr-xr-x 1 1.8K Dec 6 2021 00:10 rev. 6 Scripts/xrandr_cycle.sh
-rwxr-xr-x 1 2.2K Jan 20 2023 22:38 rev. 30 Scripts/xwin_decor.sh
-rwxr-xr-x 1 1.4K Dec 3 2021 23:13 rev. 19 Scripts/xwin_webm.sh
-rwxr-xr-x 1 3.0K Dec 13 2021 02:28 rev. 17 Scripts/xwin_widgets.sh
-rw-r--r-- 1 2.0K Mar 12 2022 17:16 rev. 5 Userscripts/youtube_screenshot.user.js
-rw-r--r-- 1 3.1K May 25 2023 23:50 rev. 1 bookworm-changes.diff
-rw-r--r-- 1 30K May 25 2023 19:52 rev. 192 readme.md