move to hugo

This commit is contained in:
Luke Smith
2023-01-19 20:11:26 -05:00
parent 52d28bd439
commit 1c7878843c
38 changed files with 855 additions and 221 deletions

BIN
static/larbs-dwm.pdf Normal file

Binary file not shown.

366
static/larbs.sh Normal file
View File

@ -0,0 +1,366 @@
#!/bin/sh
# Luke's Auto Rice Boostrapping Script (LARBS)
# by Luke Smith <luke@lukesmith.xyz>
# License: GNU GPLv3
### OPTIONS AND VARIABLES ###
dotfilesrepo="https://github.com/lukesmithxyz/voidrice.git"
progsfile="https://raw.githubusercontent.com/LukeSmithxyz/LARBS/master/progs.csv"
aurhelper="yay"
repobranch="master"
### FUNCTIONS ###
installpkg() {
pacman --noconfirm --needed -S "$1" >/dev/null 2>&1
}
error() {
# Log to stderr and exit with failure.
printf "%s\n" "$1" >&2
exit 1
}
welcomemsg() {
whiptail --title "Welcome!" \
--msgbox "Welcome to Luke's Auto-Rice Bootstrapping Script!\\n\\nThis script will automatically install a fully-featured Linux desktop, which I use as my main machine.\\n\\n-Luke" 10 60
whiptail --title "Important Note!" --yes-button "All ready!" \
--no-button "Return..." \
--yesno "Be sure the computer you are using has current pacman updates and refreshed Arch keyrings.\\n\\nIf it does not, the installation of some programs might fail." 8 70
}
getuserandpass() {
# Prompts user for new username an password.
name=$(whiptail --inputbox "First, please enter a name for the user account." 10 60 3>&1 1>&2 2>&3 3>&1) || exit 1
while ! echo "$name" | grep -q "^[a-z_][a-z0-9_-]*$"; do
name=$(whiptail --nocancel --inputbox "Username not valid. Give a username beginning with a letter, with only lowercase letters, - or _." 10 60 3>&1 1>&2 2>&3 3>&1)
done
pass1=$(whiptail --nocancel --passwordbox "Enter a password for that user." 10 60 3>&1 1>&2 2>&3 3>&1)
pass2=$(whiptail --nocancel --passwordbox "Retype password." 10 60 3>&1 1>&2 2>&3 3>&1)
while ! [ "$pass1" = "$pass2" ]; do
unset pass2
pass1=$(whiptail --nocancel --passwordbox "Passwords do not match.\\n\\nEnter password again." 10 60 3>&1 1>&2 2>&3 3>&1)
pass2=$(whiptail --nocancel --passwordbox "Retype password." 10 60 3>&1 1>&2 2>&3 3>&1)
done
}
usercheck() {
! { id -u "$name" >/dev/null 2>&1; } ||
whiptail --title "WARNING" --yes-button "CONTINUE" \
--no-button "No wait..." \
--yesno "The user \`$name\` already exists on this system. LARBS can install for a user already existing, but it will OVERWRITE any conflicting settings/dotfiles on the user account.\\n\\nLARBS will NOT overwrite your user files, documents, videos, etc., so don't worry about that, but only click <CONTINUE> if you don't mind your settings being overwritten.\\n\\nNote also that LARBS will change $name's password to the one you just gave." 14 70
}
preinstallmsg() {
whiptail --title "Let's get this party started!" --yes-button "Let's go!" \
--no-button "No, nevermind!" \
--yesno "The rest of the installation will now be totally automated, so you can sit back and relax.\\n\\nIt will take some time, but when done, you can relax even more with your complete system.\\n\\nNow just press <Let's go!> and the system will begin installation!" 13 60 || {
clear
exit 1
}
}
adduserandpass() {
# Adds user `$name` with password $pass1.
whiptail --infobox "Adding user \"$name\"..." 7 50
useradd -m -g wheel -s /bin/zsh "$name" >/dev/null 2>&1 ||
usermod -a -G wheel "$name" && mkdir -p /home/"$name" && chown "$name":wheel /home/"$name"
export repodir="/home/$name/.local/src"
mkdir -p "$repodir"
chown -R "$name":wheel "$(dirname "$repodir")"
echo "$name:$pass1" | chpasswd
unset pass1 pass2
}
refreshkeys() {
case "$(readlink -f /sbin/init)" in
*systemd*)
whiptail --infobox "Refreshing Arch Keyring..." 7 40
pacman --noconfirm -S archlinux-keyring >/dev/null 2>&1
;;
*)
whiptail --infobox "Enabling Arch Repositories..." 7 40
if ! grep -q "^\[universe\]" /etc/pacman.conf; then
echo "[universe]
Server = https://universe.artixlinux.org/\$arch
Server = https://mirror1.artixlinux.org/universe/\$arch
Server = https://mirror.pascalpuffke.de/artix-universe/\$arch
Server = https://artixlinux.qontinuum.space/artixlinux/universe/os/\$arch
Server = https://mirror1.cl.netactuate.com/artix/universe/\$arch
Server = https://ftp.crifo.org/artix-universe/" >>/etc/pacman.conf
pacman -Sy --noconfirm >/dev/null 2>&1
fi
pacman --noconfirm --needed -S \
artix-keyring artix-archlinux-support >/dev/null 2>&1
for repo in extra community; do
grep -q "^\[$repo\]" /etc/pacman.conf ||
echo "[$repo]
Include = /etc/pacman.d/mirrorlist-arch" >>/etc/pacman.conf
done
pacman -Sy >/dev/null 2>&1
pacman-key --populate archlinux >/dev/null 2>&1
;;
esac
}
manualinstall() {
# Installs $1 manually. Used only for AUR helper here.
# Should be run after repodir is created and var is set.
pacman -Qq "$1" && return 0
whiptail --infobox "Installing \"$1\" manually." 7 50
sudo -u "$name" mkdir -p "$repodir/$1"
sudo -u "$name" git -C "$repodir" clone --depth 1 --single-branch \
--no-tags -q "https://aur.archlinux.org/$1.git" "$repodir/$1" ||
{
cd "$repodir/$1" || return 1
sudo -u "$name" git pull --force origin master
}
cd "$repodir/$1" || exit 1
sudo -u "$name" -D "$repodir/$1" \
makepkg --noconfirm -si >/dev/null 2>&1 || return 1
}
maininstall() {
# Installs all needed programs from main repo.
whiptail --title "LARBS Installation" --infobox "Installing \`$1\` ($n of $total). $1 $2" 9 70
installpkg "$1"
}
gitmakeinstall() {
progname="${1##*/}"
progname="${progname%.git}"
dir="$repodir/$progname"
whiptail --title "LARBS Installation" \
--infobox "Installing \`$progname\` ($n of $total) via \`git\` and \`make\`. $(basename "$1") $2" 8 70
sudo -u "$name" git -C "$repodir" clone --depth 1 --single-branch \
--no-tags -q "$1" "$dir" ||
{
cd "$dir" || return 1
sudo -u "$name" git pull --force origin master
}
cd "$dir" || exit 1
make >/dev/null 2>&1
make install >/dev/null 2>&1
cd /tmp || return 1
}
aurinstall() {
whiptail --title "LARBS Installation" \
--infobox "Installing \`$1\` ($n of $total) from the AUR. $1 $2" 9 70
echo "$aurinstalled" | grep -q "^$1$" && return 1
sudo -u "$name" $aurhelper -S --noconfirm "$1" >/dev/null 2>&1
}
pipinstall() {
whiptail --title "LARBS Installation" \
--infobox "Installing the Python package \`$1\` ($n of $total). $1 $2" 9 70
[ -x "$(command -v "pip")" ] || installpkg python-pip >/dev/null 2>&1
yes | pip install "$1"
}
installationloop() {
([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) ||
curl -Ls "$progsfile" | sed '/^#/d' >/tmp/progs.csv
total=$(wc -l </tmp/progs.csv)
aurinstalled=$(pacman -Qqm)
while IFS=, read -r tag program comment; do
n=$((n + 1))
echo "$comment" | grep -q "^\".*\"$" &&
comment="$(echo "$comment" | sed -E "s/(^\"|\"$)//g")"
case "$tag" in
"A") aurinstall "$program" "$comment" ;;
"G") gitmakeinstall "$program" "$comment" ;;
"P") pipinstall "$program" "$comment" ;;
*) maininstall "$program" "$comment" ;;
esac
done </tmp/progs.csv
}
putgitrepo() {
# Downloads a gitrepo $1 and places the files in $2 only overwriting conflicts
whiptail --infobox "Downloading and installing config files..." 7 60
[ -z "$3" ] && branch="master" || branch="$repobranch"
dir=$(mktemp -d)
[ ! -d "$2" ] && mkdir -p "$2"
chown "$name":wheel "$dir" "$2"
sudo -u "$name" git -C "$repodir" clone --depth 1 \
--single-branch --no-tags -q --recursive -b "$branch" \
--recurse-submodules "$1" "$dir"
sudo -u "$name" cp -rfT "$dir" "$2"
}
vimplugininstall() {
# TODO remove shortcuts error message
# Installs vim plugins.
whiptail --infobox "Installing neovim plugins..." 7 60
mkdir -p "/home/$name/.config/nvim/autoload"
curl -Ls "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > "/home/$name/.config/nvim/autoload/plug.vim"
chown -R "$name:wheel" "/home/$name/.config/nvim"
sudo -u "$name" nvim -c "PlugInstall|q|q"
}
makeuserjs(){
arkenfox="$pdir/arkenfox.js"
larbs="/home/$name/.config/firefox/larbs.js"
userjs="$pdir/user.js"
[ ! -f "$arkenfox" ] && curl -sL "https://raw.githubusercontent.com/arkenfox/user.js/master/user.js" > "$arkenfox"
cat "$arkenfox" "$larbs" > "$userjs"
chown "$name:wheel" "$arkenfox" "$userjs"
}
installffaddons(){
addontmp="$(mktemp -d)"
trap "rm -fr $addontmp" HUP INT QUIT TERM PWR EXIT
IFS='
'
sudo -u "$name" mkdir -p "$pdir/extensions/"
for addon in $addonlist; do
file="${addon##*/}"
sudo -u "$name" curl -LOs "$addon" > "$addontmp/$file"
id="$(unzip -p "$file" manifest.json | grep "\"id\"")"
id="${id%\"*}"
id="${id##*\"}"
sudo -u "$name" mv "$file" "$pdir/extensions/$id.xpi"
done
# Fix a Vim Vixen bug with dark mode not fixed on upstream:
sudo -u "$name" mkdir -p "$pdir/chrome"
[ ! -f "$pdir/chrome/userContent.css" ] && sudo -u "$name" echo ".vimvixen-console-frame {
color-scheme: light !important;
}" > "$pdir/chrome/userContent.css"
}
finalize() {
whiptail --title "All done!" \
--msgbox "Congrats! Provided there were no hidden errors, the script completed successfully and all the programs and configuration files should be in place.\\n\\nTo run the new graphical environment, log out and log back in as your new user, then run the command \"startx\" to start the graphical environment (it will start automatically in tty1).\\n\\n.t Luke" 13 80
}
### THE ACTUAL SCRIPT ###
### This is how everything happens in an intuitive format and order.
# Check if user is root on Arch distro. Install whiptail.
pacman --noconfirm --needed -Sy libnewt ||
error "Are you sure you're running this as the root user, are on an Arch-based distribution and have an internet connection?"
# Welcome user and pick dotfiles.
welcomemsg || error "User exited."
# Get and verify username and password.
getuserandpass || error "User exited."
# Give warning if user already exists.
usercheck || error "User exited."
# Last chance for user to back out before install.
preinstallmsg || error "User exited."
### The rest of the script requires no user input.
# Refresh Arch keyrings.
refreshkeys ||
error "Error automatically refreshing Arch keyring. Consider doing so manually."
for x in curl ca-certificates base-devel git ntp zsh; do
whiptail --title "LARBS Installation" \
--infobox "Installing \`$x\` which is required to install and configure other programs." 8 70
installpkg "$x"
done
whiptail --title "LARBS Installation" \
--infobox "Synchronizing system time to ensure successful and secure installation of software..." 8 70
ntpd -q -g >/dev/null 2>&1
adduserandpass || error "Error adding username and/or password."
[ -f /etc/sudoers.pacnew ] && cp /etc/sudoers.pacnew /etc/sudoers # Just in case
# Allow user to run sudo without password. Since AUR programs must be installed
# in a fakeroot environment, this is required for all builds with AUR.
trap 'rm -f /etc/sudoers.d/larbs-temp' HUP INT QUIT TERM PWR EXIT
echo "%wheel ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/larbs-temp
# Make pacman colorful, concurrent downloads and Pacman eye-candy.
grep -q "ILoveCandy" /etc/pacman.conf || sed -i "/#VerbosePkgLists/a ILoveCandy" /etc/pacman.conf
sed -Ei "s/^#(ParallelDownloads).*/\1 = 5/;/^#Color$/s/#//" /etc/pacman.conf
# Use all cores for compilation.
sed -i "s/-j2/-j$(nproc)/;/^#MAKEFLAGS/s/^#//" /etc/makepkg.conf
manualinstall yay || error "Failed to install AUR helper."
# The command that does all the installing. Reads the progs.csv file and
# installs each needed program the way required. Be sure to run this only after
# the user has been created and has priviledges to run sudo without a password
# and all build dependencies are installed.
installationloop
# Install the dotfiles in the user's home directory, but remove .git dir and
# other unnecessary files.
putgitrepo "$dotfilesrepo" "/home/$name" "$repobranch"
rm -rf "/home/$name/.git/" "/home/$name/README.md" "/home/$name/LICENSE" "/home/$name/FUNDING.yml"
# Install vim plugins if not alread present.
[ ! -f "/home/$name/.config/nvim/autoload/plug.vim" ] && vimplugininstall
# Most important command! Get rid of the beep!
rmmod pcspkr
echo "blacklist pcspkr" >/etc/modprobe.d/nobeep.conf
# Make zsh the default shell for the user.
chsh -s /bin/zsh "$name" >/dev/null 2>&1
sudo -u "$name" mkdir -p "/home/$name/.cache/zsh/"
sudo -u "$name" mkdir -p "/home/$name/.config/abook/"
sudo -u "$name" mkdir -p "/home/$name/.config/mpd/playlists/"
# dbus UUID must be generated for Artix runit.
dbus-uuidgen >/var/lib/dbus/machine-id
# Use system notifications for Brave on Artix
echo "export \$(dbus-launch)" >/etc/profile.d/dbus.sh
# Enable tap to click
[ ! -f /etc/X11/xorg.conf.d/40-libinput.conf ] && printf 'Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
# Enable left mouse button by tapping
Option "Tapping" "on"
EndSection' >/etc/X11/xorg.conf.d/40-libinput.conf
# All this below to get Librewolf installed with add-ons and non-bad settings.
whiptail --infobox "Setting browser privacy settings and add-ons..." 7 60
addonlist="https://addons.mozilla.org/firefox/downloads/file/3929378/ublock_origin-1.42.0-an+fx.xpi
https://addons.mozilla.org/firefox/downloads/file/3902154/decentraleyes-2.0.17.xpi
https://addons.mozilla.org/firefox/downloads/file/4035245/istilldontcareaboutcookies-1.1.0.xpi
https://addons.mozilla.org/firefox/downloads/file/3845233/vim_vixen-1.2.3-an+fx.xpi"
browserdir="/home/$name/.librewolf"
profilesini="$browserdir/profiles.ini"
# Start librewolf headless so it generates a profile. Then get that profile in a variable.
sudo -u "$name" librewolf --headless >/dev/null 2>&1 &
sleep 1
profile="$(sed -n "/Default=.*.default-release/ s/.*=//p" "$profilesini")"
pdir="$browserdir/$profile"
[ -d "$pdir" ] && makeuserjs
[ -d "$pdir" ] && installffaddons
# Kill the now unnecessary librewolf instance.
pkill -u "$name" librewolf
# Allow wheel users to sudo with password and allow several system commands
# (like `shutdown` to run without password).
echo "%wheel ALL=(ALL:ALL) ALL" >/etc/sudoers.d/00-larbs-wheel-can-sudo
echo "%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/shutdown,/usr/bin/reboot,/usr/bin/systemctl suspend,/usr/bin/wifi-menu,/usr/bin/mount,/usr/bin/umount,/usr/bin/pacman -Syu,/usr/bin/pacman -Syyu,/usr/bin/pacman -Syyu --noconfirm,/usr/bin/loadkeys,/usr/bin/pacman -Syyuw --noconfirm,/usr/bin/pacman -S -u -y --config /etc/pacman.conf --,/usr/bin/pacman -S -y -u --config /etc/pacman.conf --" >/etc/sudoers.d/01-larbs-cmds-without-password
echo "Defaults editor=/usr/bin/nvim" >/etc/sudoers.d/02-larbs-visudo-editor
# Last message! Install complete!
finalize

BIN
static/pix/dwmblocks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

BIN
static/pix/htop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

BIN
static/pix/larbs.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
static/pix/larbs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
static/pix/lf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

BIN
static/pix/ncmpcpp-01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
static/pix/ncmpcpp-02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
static/pix/ncmpcpp-03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
static/pix/ncmpcpp-04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
static/pix/neomutt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

BIN
static/pix/st.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

BIN
static/pix/windows-htop.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 KiB

69
static/progs.csv Normal file
View File

@ -0,0 +1,69 @@
#TAG,NAME IN REPO (or git url),PURPOSE (should be a verb phrase to sound right while installing)
,xorg-server,"is the graphical server."
,xorg-xwininfo,"allows querying information about windows."
,xorg-xinit,"starts the graphical server."
,polkit,"manages user policies."
,ttf-linux-libertine,"provides the sans and serif fonts for LARBS."
,ttf-font-awesome,"provides extended glyph support."
A,lf-git,"is an extensive terminal file manager that everyone likes."
,ueberzug,"enables previews in the lf file manager."
,bc,"is used for a dropdown calculator."
,xcompmgr,"is for transparency and removing screen-tearing."
,xorg-xprop,"is a tool for detecting window properties."
,arandr,"allows the user to customize monitor arrangements."
,dosfstools,"allows your computer to access dos-like filesystems."
,libnotify,"allows desktop notifications."
,dunst,"is a suckless notification system."
,exfat-utils,"allows management of FAT drives."
,sxiv,"is a minimalist image viewer."
,xwallpaper,"sets the wallpaper."
,ffmpeg,"can record and splice video and audio on the command line."
,ffmpegthumbnailer,"creates thumbnail previews of video files."
,gnome-keyring,"serves as the system keyring."
A,gtk-theme-arc-gruvbox-git,"gives the dark GTK theme used in LARBS."
,python-qdarkstyle,"provides a dark Qt theme."
,neovim,"a tidier vim with some useful features"
,mpd,"is a lightweight music daemon."
,mpc,"is a terminal interface for mpd."
,mpv,"is the patrician's choice video player."
,man-db,"lets you read man pages of programs."
,ncmpcpp,"a ncurses interface for music with multiple formats and a powerful tag editor."
,newsboat,"is a terminal RSS client."
A,librewolf-bin,"the default browser of LARBS which also comes with ad-blocking and other sensible and necessary features by default."
,noto-fonts,"is an expansive font package."
,noto-fonts-emoji,"is an emoji font."
,ntfs-3g,"allows accessing NTFS partitions."
,wireplumber,"is the audio system."
,pipewire-pulse,"gives pipewire compatibility with PulseAudio programs."
,pulsemixer,"is an audio controller."
A,sc-im,"is an Excel-like terminal spreadsheet manager."
,maim,"can take quick screenshots at your request."
A,abook,"is an offline addressbook usable by neomutt."
,unclutter,"hides an inactive mouse."
,unzip,"unzips zips."
,lynx,"is a terminal browser."
,xcape,"gives the special escape/super mappings of LARBS."
,xclip,"allows for copying and pasting from the command line."
,xdotool,"provides window action utilities on the command line."
,xorg-xdpyinfo,"aids with resolution determination and screen recording."
,yt-dlp,"can download any YouTube video (or playlist or channel) when given the link."
,zathura,"is a pdf viewer with vim-like bindings."
,zathura-pdf-mupdf,"allows mupdf pdf compatibility in zathura."
,poppler,"manipulates .pdfs and gives .pdf previews and other .pdf functions."
,mediainfo,"shows audio and video information."
,atool,"manages and gives information about archives."
,fzf,"is a fuzzy finder tool."
,bat,"can highlight code output and display files."
,xorg-xbacklight,"enables changing screen brightness levels."
A,zsh-fast-syntax-highlighting-git,"provides syntax highlighting in the shell."
A,task-spooler,"queues commands or files for download."
A,simple-mtpfs,"enables the mounting of cell phones."
A,htop-vim,"is a graphical and colorful system monitor."
G,https://github.com/LukeSmithxyz/dwmblocks.git,"serves as the modular status bar."
G,https://github.com/lukesmithxyz/dmenu.git,"runs commands and provides a UI for selection."
G,https://github.com/lukesmithxyz/st.git,"is my custom build of suckless's terminal emulator."
G,https://github.com/lukesmithxyz/dwm.git,"is the window manager."
A,mutt-wizard-git,"is a light-weight terminal-based email system."
,slock,"allows you to lock your computer, and quickly unlock with your password."
,socat,"is a utility which establishes two byte streams and transfers data between them."
,moreutils,"is a collection of useful unix tools."
1 #TAG NAME IN REPO (or git url) PURPOSE (should be a verb phrase to sound right while installing)
2 xorg-server is the graphical server.
3 xorg-xwininfo allows querying information about windows.
4 xorg-xinit starts the graphical server.
5 polkit manages user policies.
6 ttf-linux-libertine provides the sans and serif fonts for LARBS.
7 ttf-font-awesome provides extended glyph support.
8 A lf-git is an extensive terminal file manager that everyone likes.
9 ueberzug enables previews in the lf file manager.
10 bc is used for a dropdown calculator.
11 xcompmgr is for transparency and removing screen-tearing.
12 xorg-xprop is a tool for detecting window properties.
13 arandr allows the user to customize monitor arrangements.
14 dosfstools allows your computer to access dos-like filesystems.
15 libnotify allows desktop notifications.
16 dunst is a suckless notification system.
17 exfat-utils allows management of FAT drives.
18 sxiv is a minimalist image viewer.
19 xwallpaper sets the wallpaper.
20 ffmpeg can record and splice video and audio on the command line.
21 ffmpegthumbnailer creates thumbnail previews of video files.
22 gnome-keyring serves as the system keyring.
23 A gtk-theme-arc-gruvbox-git gives the dark GTK theme used in LARBS.
24 python-qdarkstyle provides a dark Qt theme.
25 neovim a tidier vim with some useful features
26 mpd is a lightweight music daemon.
27 mpc is a terminal interface for mpd.
28 mpv is the patrician's choice video player.
29 man-db lets you read man pages of programs.
30 ncmpcpp a ncurses interface for music with multiple formats and a powerful tag editor.
31 newsboat is a terminal RSS client.
32 A librewolf-bin the default browser of LARBS which also comes with ad-blocking and other sensible and necessary features by default.
33 noto-fonts is an expansive font package.
34 noto-fonts-emoji is an emoji font.
35 ntfs-3g allows accessing NTFS partitions.
36 wireplumber is the audio system.
37 pipewire-pulse gives pipewire compatibility with PulseAudio programs.
38 pulsemixer is an audio controller.
39 A sc-im is an Excel-like terminal spreadsheet manager.
40 maim can take quick screenshots at your request.
41 A abook is an offline addressbook usable by neomutt.
42 unclutter hides an inactive mouse.
43 unzip unzips zips.
44 lynx is a terminal browser.
45 xcape gives the special escape/super mappings of LARBS.
46 xclip allows for copying and pasting from the command line.
47 xdotool provides window action utilities on the command line.
48 xorg-xdpyinfo aids with resolution determination and screen recording.
49 yt-dlp can download any YouTube video (or playlist or channel) when given the link.
50 zathura is a pdf viewer with vim-like bindings.
51 zathura-pdf-mupdf allows mupdf pdf compatibility in zathura.
52 poppler manipulates .pdfs and gives .pdf previews and other .pdf functions.
53 mediainfo shows audio and video information.
54 atool manages and gives information about archives.
55 fzf is a fuzzy finder tool.
56 bat can highlight code output and display files.
57 xorg-xbacklight enables changing screen brightness levels.
58 A zsh-fast-syntax-highlighting-git provides syntax highlighting in the shell.
59 A task-spooler queues commands or files for download.
60 A simple-mtpfs enables the mounting of cell phones.
61 A htop-vim is a graphical and colorful system monitor.
62 G https://github.com/LukeSmithxyz/dwmblocks.git serves as the modular status bar.
63 G https://github.com/lukesmithxyz/dmenu.git runs commands and provides a UI for selection.
64 G https://github.com/lukesmithxyz/st.git is my custom build of suckless's terminal emulator.
65 G https://github.com/lukesmithxyz/dwm.git is the window manager.
66 A mutt-wizard-git is a light-weight terminal-based email system.
67 slock allows you to lock your computer, and quickly unlock with your password.
68 socat is a utility which establishes two byte streams and transfers data between them.
69 moreutils is a collection of useful unix tools.

104
static/style.css Normal file
View File

@ -0,0 +1,104 @@
html {
background: black ;
padding-bottom: 400px;
}
body {
max-width: 750px;
margin-left: auto;
margin-right: auto;
margin-top: 30px;
background: #011 ;
color: #eee;
border-style: solid;
border-width: 5px;
border-color: #555;
}
main {
padding: 1em ;
}
h1,h2,h3,h4 {
text-align: center;
}
h1 {
font-size: 48px;
text-shadow: 3px 0 black, 3px 3px black, 0 3px black;
color: #00ccff ;
}
h2 {
color: #00bbdd ;
}
h3 {
color: #00aabb ;
}
a { color: lightblue; }
.image {
margin: auto;
}
.qr { max-width: 150px ; padding: 10px }
p img, li img, h1 img, h2 img, h3 img, h4 img {
max-height: 1em;
max-width: 1em;
}
pre {
border: 1px solid lime ;
border-radius: 20px ;
padding: 1em ;
margin: 1em ;
white-space: pre-wrap;
}
code {
border-radius: 5px ;
overflow-wrap: break-word ;
}
code:not(pre code) {
color: lime ;
}
aside {
color: gray ;
font-style: italic ;
font-size: small ;
}
footer {
text-align: center ;
}
.normal {
align: center ;
}
.normal img {
margin: auto ;
max-width: 90% ;
max-height: 400px ;
display: block ;
}
figcaption {
text-align: center ;
display: block ;
font-style: italic ;
}
kbd {
border-radius: 5px;
padding: 1px 2px ;
min-width: 1em ;
border: 1px solid black ;
background: #222 ;
color: white ;
}