move to hugo
BIN
static/larbs-dwm.pdf
Normal file
366
static/larbs.sh
Normal 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
After Width: | Height: | Size: 2.2 MiB |
BIN
static/pix/htop.png
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
static/pix/larbs.gif
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
static/pix/larbs.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
static/pix/lf.png
Normal file
After Width: | Height: | Size: 247 KiB |
BIN
static/pix/ncmpcpp-01.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
static/pix/ncmpcpp-02.png
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
static/pix/ncmpcpp-03.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
static/pix/ncmpcpp-04.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
static/pix/neomutt.png
Normal file
After Width: | Height: | Size: 176 KiB |
BIN
static/pix/st.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
static/pix/windows-htop.jpg
Normal file
After Width: | Height: | Size: 617 KiB |
69
static/progs.csv
Normal 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."
|
|
104
static/style.css
Normal 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 ;
|
||||
}
|