arch/artix only, zsh default, cleanup
This commit is contained in:
		@@ -55,7 +55,8 @@ for people who read the csv or who want to install my dotfiles manually.
 | 
				
			|||||||
Depending on your own build, you may want to tactically order the programs in
 | 
					Depending on your own build, you may want to tactically order the programs in
 | 
				
			||||||
your programs file. LARBS will install from the top to the bottom.
 | 
					your programs file. LARBS will install from the top to the bottom.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you include commas in your program descriptions, be sure to include double quotes around the whole description to ensure correct parsing.
 | 
					If you include commas in your program descriptions, be sure to include double
 | 
				
			||||||
 | 
					quotes around the whole description to ensure correct parsing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### The script itself
 | 
					### The script itself
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										47
									
								
								larbs.sh
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								larbs.sh
									
									
									
									
									
								
							@@ -21,17 +21,7 @@ esac done
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### FUNCTIONS ###
 | 
					### FUNCTIONS ###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if type xbps-install >/dev/null 2>&1; then
 | 
					 | 
				
			||||||
	installpkg(){ xbps-install -y "$1" >/dev/null 2>&1 ;}
 | 
					 | 
				
			||||||
	grepseq="\"^[PGV]*,\""
 | 
					 | 
				
			||||||
elif type apt >/dev/null 2>&1; then
 | 
					 | 
				
			||||||
	installpkg(){ apt-get install -y "$1" >/dev/null 2>&1 ;}
 | 
					 | 
				
			||||||
	grepseq="\"^[PGU]*,\""
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
	distro="arch"
 | 
					 | 
				
			||||||
installpkg(){ pacman --noconfirm --needed -S "$1" >/dev/null 2>&1 ;}
 | 
					installpkg(){ pacman --noconfirm --needed -S "$1" >/dev/null 2>&1 ;}
 | 
				
			||||||
	grepseq="\"^[PGA]*,\""
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
error() { clear; printf "ERROR:\\n%s\\n" "$1"; exit;}
 | 
					error() { clear; printf "ERROR:\\n%s\\n" "$1"; exit;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,7 +34,7 @@ welcomemsg() { \
 | 
				
			|||||||
getuserandpass() { \
 | 
					getuserandpass() { \
 | 
				
			||||||
	# Prompts user for new username an password.
 | 
						# Prompts user for new username an password.
 | 
				
			||||||
	name=$(dialog --inputbox "First, please enter a name for the user account." 10 60 3>&1 1>&2 2>&3 3>&1) || exit
 | 
						name=$(dialog --inputbox "First, please enter a name for the user account." 10 60 3>&1 1>&2 2>&3 3>&1) || exit
 | 
				
			||||||
	while ! echo "$name" | grep "^[a-z_][a-z0-9_-]*$" >/dev/null 2>&1; do
 | 
						while ! echo "$name" | grep -q "^[a-z_][a-z0-9_-]*$"; do
 | 
				
			||||||
		name=$(dialog --no-cancel --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)
 | 
							name=$(dialog --no-cancel --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
 | 
						done
 | 
				
			||||||
	pass1=$(dialog --no-cancel --passwordbox "Enter a password for that user." 10 60 3>&1 1>&2 2>&3 3>&1)
 | 
						pass1=$(dialog --no-cancel --passwordbox "Enter a password for that user." 10 60 3>&1 1>&2 2>&3 3>&1)
 | 
				
			||||||
@@ -67,9 +57,9 @@ preinstallmsg() { \
 | 
				
			|||||||
adduserandpass() { \
 | 
					adduserandpass() { \
 | 
				
			||||||
	# Adds user `$name` with password $pass1.
 | 
						# Adds user `$name` with password $pass1.
 | 
				
			||||||
	dialog --infobox "Adding user \"$name\"..." 4 50
 | 
						dialog --infobox "Adding user \"$name\"..." 4 50
 | 
				
			||||||
	useradd -m -g wheel -s /bin/bash "$name" >/dev/null 2>&1 ||
 | 
						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"
 | 
						usermod -a -G wheel "$name" && mkdir -p /home/"$name" && chown "$name":wheel /home/"$name"
 | 
				
			||||||
	repodir="/home/$name/.local/src"; mkdir -p "$repodir"; chown -R "$name":wheel $(dirname "$repodir")
 | 
						repodir="/home/$name/.local/src"; mkdir -p "$repodir"; chown -R "$name":wheel "$(dirname "$repodir")"
 | 
				
			||||||
	echo "$name:$pass1" | chpasswd
 | 
						echo "$name:$pass1" | chpasswd
 | 
				
			||||||
	unset pass1 pass2 ;}
 | 
						unset pass1 pass2 ;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -110,7 +100,7 @@ gitmakeinstall() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
aurinstall() { \
 | 
					aurinstall() { \
 | 
				
			||||||
	dialog --title "LARBS Installation" --infobox "Installing \`$1\` ($n of $total) from the AUR. $1 $2" 5 70
 | 
						dialog --title "LARBS Installation" --infobox "Installing \`$1\` ($n of $total) from the AUR. $1 $2" 5 70
 | 
				
			||||||
	echo "$aurinstalled" | grep "^$1$" >/dev/null 2>&1 && return
 | 
						echo "$aurinstalled" | grep -q "^$1$" && return
 | 
				
			||||||
	sudo -u "$name" $aurhelper -S --noconfirm "$1" >/dev/null 2>&1
 | 
						sudo -u "$name" $aurhelper -S --noconfirm "$1" >/dev/null 2>&1
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -121,12 +111,12 @@ pipinstall() { \
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
installationloop() { \
 | 
					installationloop() { \
 | 
				
			||||||
	([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) || curl -Ls "$progsfile" | sed '/^#/d' | eval grep "$grepseq" > /tmp/progs.csv
 | 
						([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) || curl -Ls "$progsfile" | sed '/^#/d' > /tmp/progs.csv
 | 
				
			||||||
	total=$(wc -l < /tmp/progs.csv)
 | 
						total=$(wc -l < /tmp/progs.csv)
 | 
				
			||||||
	aurinstalled=$(pacman -Qqm)
 | 
						aurinstalled=$(pacman -Qqm)
 | 
				
			||||||
	while IFS=, read -r tag program comment; do
 | 
						while IFS=, read -r tag program comment; do
 | 
				
			||||||
		n=$((n+1))
 | 
							n=$((n+1))
 | 
				
			||||||
		echo "$comment" | grep "^\".*\"$" >/dev/null 2>&1 && comment="$(echo "$comment" | sed "s/\(^\"\|\"$\)//g")"
 | 
							echo "$comment" | grep -q "^\".*\"$" && comment="$(echo "$comment" | sed "s/\(^\"\|\"$\)//g")"
 | 
				
			||||||
		case "$tag" in
 | 
							case "$tag" in
 | 
				
			||||||
			"A") aurinstall "$program" "$comment" ;;
 | 
								"A") aurinstall "$program" "$comment" ;;
 | 
				
			||||||
			"G") gitmakeinstall "$program" "$comment" ;;
 | 
								"G") gitmakeinstall "$program" "$comment" ;;
 | 
				
			||||||
@@ -159,7 +149,7 @@ finalize(){ \
 | 
				
			|||||||
### This is how everything happens in an intuitive format and order.
 | 
					### This is how everything happens in an intuitive format and order.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Check if user is root on Arch distro. Install dialog.
 | 
					# Check if user is root on Arch distro. Install dialog.
 | 
				
			||||||
installpkg dialog || error "Are you sure you're running this as the root user and have an internet connection?"
 | 
					installpkg dialog || 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.
 | 
					# Welcome user and pick dotfiles.
 | 
				
			||||||
welcomemsg || error "User exited."
 | 
					welcomemsg || error "User exited."
 | 
				
			||||||
@@ -175,21 +165,19 @@ preinstallmsg || error "User exited."
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### The rest of the script requires no user input.
 | 
					### The rest of the script requires no user input.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
adduserandpass || error "Error adding username and/or password."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Refresh Arch keyrings.
 | 
					# Refresh Arch keyrings.
 | 
				
			||||||
refreshkeys || error "Error automatically refreshing Arch keyring. Consider doing so manually."
 | 
					refreshkeys || error "Error automatically refreshing Arch keyring. Consider doing so manually."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dialog --title "LARBS Installation" --infobox "Installing \`basedevel\` and \`git\` for installing other software required for the installation of other programs." 5 70
 | 
					for x in curl base-devel git ntp zsh; do
 | 
				
			||||||
installpkg curl
 | 
						dialog --title "LARBS Installation" --infobox "Installing \`x\` which is required to install and configure other programs." 5 70
 | 
				
			||||||
installpkg base-devel
 | 
						installpkg "$x"
 | 
				
			||||||
installpkg git
 | 
					done
 | 
				
			||||||
installpkg ntp
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
dialog --title "LARBS Installation" --infobox "Synchronizing system time to ensure successful and secure installation of software..." 4 70
 | 
					dialog --title "LARBS Installation" --infobox "Synchronizing system time to ensure successful and secure installation of software..." 4 70
 | 
				
			||||||
ntpdate 0.us.pool.ntp.org >/dev/null 2>&1
 | 
					ntpdate 0.us.pool.ntp.org >/dev/null 2>&1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ "$distro" = arch ] && { \
 | 
					adduserandpass || error "Error adding username and/or password."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ -f /etc/sudoers.pacnew ] && cp /etc/sudoers.pacnew /etc/sudoers # Just in case
 | 
					[ -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
 | 
					# Allow user to run sudo without password. Since AUR programs must be installed
 | 
				
			||||||
@@ -197,14 +185,13 @@ ntpdate 0.us.pool.ntp.org >/dev/null 2>&1
 | 
				
			|||||||
newperms "%wheel ALL=(ALL) NOPASSWD: ALL"
 | 
					newperms "%wheel ALL=(ALL) NOPASSWD: ALL"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Make pacman and yay colorful and adds eye candy on the progress bar because why not.
 | 
					# Make pacman and yay colorful and adds eye candy on the progress bar because why not.
 | 
				
			||||||
	grep "^Color" /etc/pacman.conf >/dev/null || sed -i "s/^#Color$/Color/" /etc/pacman.conf
 | 
					grep -q "^Color" /etc/pacman.conf || sed -i "s/^#Color$/Color/" /etc/pacman.conf
 | 
				
			||||||
	grep "ILoveCandy" /etc/pacman.conf >/dev/null || sed -i "/#VerbosePkgLists/a ILoveCandy" /etc/pacman.conf
 | 
					grep -q "ILoveCandy" /etc/pacman.conf || sed -i "/#VerbosePkgLists/a ILoveCandy" /etc/pacman.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Use all cores for compilation.
 | 
					# Use all cores for compilation.
 | 
				
			||||||
sed -i "s/-j2/-j$(nproc)/;s/^#MAKEFLAGS/MAKEFLAGS/" /etc/makepkg.conf
 | 
					sed -i "s/-j2/-j$(nproc)/;s/^#MAKEFLAGS/MAKEFLAGS/" /etc/makepkg.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
manualinstall $aurhelper || error "Failed to install AUR helper."
 | 
					manualinstall $aurhelper || error "Failed to install AUR helper."
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# The command that does all the installing. Reads the progs.csv file and
 | 
					# 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
 | 
					# installs each needed program the way required. Be sure to run this only after
 | 
				
			||||||
@@ -226,7 +213,7 @@ git update-index --assume-unchanged "/home/$name/LICENSE"
 | 
				
			|||||||
systembeepoff
 | 
					systembeepoff
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Make zsh the default shell for the user.
 | 
					# Make zsh the default shell for the user.
 | 
				
			||||||
chsh -s /bin/zsh $name >/dev/null 2>&1
 | 
					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/.cache/zsh/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# dbus UUID must be generated for Artix runit.
 | 
					# dbus UUID must be generated for Artix runit.
 | 
				
			||||||
@@ -240,7 +227,7 @@ killall pulseaudio; sudo -u "$name" pulseaudio --start
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# This line, overwriting the `newperms` command above will allow the user to run
 | 
					# This line, overwriting the `newperms` command above will allow the user to run
 | 
				
			||||||
# serveral important commands, `shutdown`, `reboot`, updating, etc. without a password.
 | 
					# serveral important commands, `shutdown`, `reboot`, updating, etc. without a password.
 | 
				
			||||||
[ "$distro" = arch ] && newperms "%wheel ALL=(ALL) ALL #LARBS
 | 
					newperms "%wheel ALL=(ALL) ALL #LARBS
 | 
				
			||||||
%wheel 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/packer -Syu,/usr/bin/packer -Syyu,/usr/bin/systemctl restart NetworkManager,/usr/bin/rc-service NetworkManager restart,/usr/bin/pacman -Syyu --noconfirm,/usr/bin/loadkeys,/usr/bin/yay,/usr/bin/pacman -Syyuw --noconfirm"
 | 
					%wheel 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/packer -Syu,/usr/bin/packer -Syyu,/usr/bin/systemctl restart NetworkManager,/usr/bin/rc-service NetworkManager restart,/usr/bin/pacman -Syyu --noconfirm,/usr/bin/loadkeys,/usr/bin/yay,/usr/bin/pacman -Syyuw --noconfirm"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Last message! Install complete!
 | 
					# Last message! Install complete!
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								progs.csv
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								progs.csv
									
									
									
									
									
								
							@@ -2,14 +2,6 @@
 | 
				
			|||||||
,xorg-server,"is the graphical server."
 | 
					,xorg-server,"is the graphical server."
 | 
				
			||||||
,xorg-xwininfo,"allows querying information about windows."
 | 
					,xorg-xwininfo,"allows querying information about windows."
 | 
				
			||||||
,xorg-xinit,"starts the graphical server."
 | 
					,xorg-xinit,"starts the graphical server."
 | 
				
			||||||
V,xorg-minimal,"is the graphical server."
 | 
					 | 
				
			||||||
V,xorg-fonts,"is a font package."
 | 
					 | 
				
			||||||
V,xinit,"starts the graphical server."
 | 
					 | 
				
			||||||
V,xdg-utils,"are filetype utilities."
 | 
					 | 
				
			||||||
V,libX11-devel,"is required for the compilation of some programs."
 | 
					 | 
				
			||||||
V,libXft-devel,"is required for the compilation of some programs."
 | 
					 | 
				
			||||||
V,gcr-devel,"is required for the compilation of some programs."
 | 
					 | 
				
			||||||
V,fontconfig-devel,"is required for the compilation of some programs."
 | 
					 | 
				
			||||||
,ttf-linux-libertine,"provides the sans and serif fonts for LARBS."
 | 
					,ttf-linux-libertine,"provides the sans and serif fonts for LARBS."
 | 
				
			||||||
A,lf-git,"is an extensive terminal file manager that everyone likes."
 | 
					A,lf-git,"is an extensive terminal file manager that everyone likes."
 | 
				
			||||||
,arandr,"is a UI for screen adjustment."
 | 
					,arandr,"is a UI for screen adjustment."
 | 
				
			||||||
@@ -17,10 +9,8 @@ A,lf-git,"is an extensive terminal file manager that everyone likes."
 | 
				
			|||||||
,calcurse,"is a lightweight terminal-based calendar."
 | 
					,calcurse,"is a lightweight terminal-based calendar."
 | 
				
			||||||
,xcompmgr,"is for transparency and removing screen-tearing."
 | 
					,xcompmgr,"is for transparency and removing screen-tearing."
 | 
				
			||||||
,xorg-xprop,"is a tool for detecting window properties."
 | 
					,xorg-xprop,"is a tool for detecting window properties."
 | 
				
			||||||
V,xprop,"is a tool for detecting window properties."
 | 
					 | 
				
			||||||
,dosfstools,"allows your computer to access dos-like filesystems."
 | 
					,dosfstools,"allows your computer to access dos-like filesystems."
 | 
				
			||||||
,libnotify,"allows desktop notifications."
 | 
					,libnotify,"allows desktop notifications."
 | 
				
			||||||
V,dbus,"facilitates inter-process communication."
 | 
					 | 
				
			||||||
,dunst,"is a suckless notification system."
 | 
					,dunst,"is a suckless notification system."
 | 
				
			||||||
,exfat-utils,"allows management of FAT drives."
 | 
					,exfat-utils,"allows management of FAT drives."
 | 
				
			||||||
,sxiv,"is a minimalist image viewer."
 | 
					,sxiv,"is a minimalist image viewer."
 | 
				
			||||||
@@ -37,7 +27,6 @@ A,gtk-theme-arc-gruvbox-git,"gives the dark GTK theme used in LARBS."
 | 
				
			|||||||
,newsboat,"is a terminal RSS client."
 | 
					,newsboat,"is a terminal RSS client."
 | 
				
			||||||
A,brave-bin,"is an elegant browser with built-in adblocking, tor and other features."
 | 
					A,brave-bin,"is an elegant browser with built-in adblocking, tor and other features."
 | 
				
			||||||
,noto-fonts-emoji,"is an emoji font."
 | 
					,noto-fonts-emoji,"is an emoji font."
 | 
				
			||||||
V,font-symbola,"provides unicode and emoji symbols."
 | 
					 | 
				
			||||||
,ntfs-3g,"allows accessing NTFS partitions."
 | 
					,ntfs-3g,"allows accessing NTFS partitions."
 | 
				
			||||||
,pulseaudio-alsa,"is the audio system."
 | 
					,pulseaudio-alsa,"is the audio system."
 | 
				
			||||||
,pulsemixer,"is an audio controler."
 | 
					,pulsemixer,"is an audio controler."
 | 
				
			||||||
@@ -45,9 +34,7 @@ V,font-symbola,"provides unicode and emoji symbols."
 | 
				
			|||||||
A,sc-im,"is an Excel-like terminal spreadsheet manager."
 | 
					A,sc-im,"is an Excel-like terminal spreadsheet manager."
 | 
				
			||||||
,maim,"can take quick screenshots at your request."
 | 
					,maim,"can take quick screenshots at your request."
 | 
				
			||||||
,abook,"is an offline addressbook usable by neomutt."
 | 
					,abook,"is an offline addressbook usable by neomutt."
 | 
				
			||||||
,socat,"is a socket utility."
 | 
					 | 
				
			||||||
,unclutter,"hides an inactive mouse."
 | 
					,unclutter,"hides an inactive mouse."
 | 
				
			||||||
V,unclutter-xfixes,"hides an inactive mouse."
 | 
					 | 
				
			||||||
,unrar,"extracts rar's."
 | 
					,unrar,"extracts rar's."
 | 
				
			||||||
,unzip,"unzips zips."
 | 
					,unzip,"unzips zips."
 | 
				
			||||||
,lynx,"is a terminal browser."
 | 
					,lynx,"is a terminal browser."
 | 
				
			||||||
@@ -55,7 +42,6 @@ V,unclutter-xfixes,"hides an inactive mouse."
 | 
				
			|||||||
,xclip,"allows for copying and pasting from the command line."
 | 
					,xclip,"allows for copying and pasting from the command line."
 | 
				
			||||||
,xdotool,"provides window action utilities on the command line."
 | 
					,xdotool,"provides window action utilities on the command line."
 | 
				
			||||||
,xorg-xdpyinfo,"aids with resolution determination and screen recording."
 | 
					,xorg-xdpyinfo,"aids with resolution determination and screen recording."
 | 
				
			||||||
V,xdpyinfo,"aids with resolution determination and screen recording."
 | 
					 | 
				
			||||||
,youtube-dl,"can download any YouTube video (or playlist or channel) when given the link."
 | 
					,youtube-dl,"can download any YouTube video (or playlist or channel) when given the link."
 | 
				
			||||||
,zathura,"is a pdf viewer with vim-like bindings."
 | 
					,zathura,"is a pdf viewer with vim-like bindings."
 | 
				
			||||||
,zathura-pdf-mupdf,"allows mupdf pdf compatibility in zathura."
 | 
					,zathura-pdf-mupdf,"allows mupdf pdf compatibility in zathura."
 | 
				
			||||||
@@ -67,13 +53,7 @@ V,xdpyinfo,"aids with resolution determination and screen recording."
 | 
				
			|||||||
,xorg-xbacklight,"enables changing screen brightness levels."
 | 
					,xorg-xbacklight,"enables changing screen brightness levels."
 | 
				
			||||||
A,zsh-fast-syntax-highlighting,"provides syntax highlighting in the shell."
 | 
					A,zsh-fast-syntax-highlighting,"provides syntax highlighting in the shell."
 | 
				
			||||||
A,task-spooler,"queues commands or files for download."
 | 
					A,task-spooler,"queues commands or files for download."
 | 
				
			||||||
V,ts,"queues commands or files for download."
 | 
					 | 
				
			||||||
A,simple-mtpfs-git,"enables the mounting of cell phones."
 | 
					A,simple-mtpfs-git,"enables the mounting of cell phones."
 | 
				
			||||||
V,simple-mtpfs,"enables the mounting of cell phones."
 | 
					 | 
				
			||||||
V,setxkbmap,"allows LARBS's unique keyboard bindings."
 | 
					 | 
				
			||||||
V,xmodmap,"allows LARBS's unique keyboard bindings."
 | 
					 | 
				
			||||||
V,xsetroot,"sets status bar and other X properies."
 | 
					 | 
				
			||||||
V,xset,"allows speeding up the X rate."
 | 
					 | 
				
			||||||
G,https://github.com/LukeSmithxyz/dwmblocks.git,"serves as the modular status bar."
 | 
					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/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/st.git,"is my custom build of suckless's terminal emulator."
 | 
				
			||||||
 
 | 
				
			|||||||
		
		
			
  | 
		Reference in New Issue
	
	Block a user