Compare commits

..

13 Commits

Author SHA1 Message Date
528b82bdaf fix ctrl-arrow keys 2026-07-25 21:09:04 -05:00
2a3e0e2e2b add treesitter and update stuff with nvim config 2026-07-25 21:08:37 -05:00
32a8c1260a fix up a few things 2026-07-20 21:27:18 -05:00
7347b64eba add nvm lazy loading to zsh 2026-07-20 20:53:56 -05:00
53b43eda88 add desktop background 2026-07-19 16:11:49 -05:00
e28f15a0c2 fix a few formatting things 2026-07-19 16:11:35 -05:00
111b0cef32 fix calendar widget and set up taskbar layout 2026-07-19 15:19:58 -05:00
fb9570fd74 actually remove stuff 2026-07-19 14:35:25 -05:00
f94fc0aa97 install discord & vs code 2026-07-19 14:35:10 -05:00
7fec866385 clean up a few things 2026-07-19 13:00:39 -05:00
76dad1fb8a install neovim 2026-07-19 12:59:11 -05:00
a7cccf0c4a update cinnamon info & log out after script 2026-07-19 12:55:49 -05:00
1e9e5d8990 update some stuff in zshrc 2026-07-19 12:55:40 -05:00
6 changed files with 110 additions and 56 deletions

View File

@@ -2,7 +2,7 @@
## DESKTOP ENVIRONMENT ## ## DESKTOP ENVIRONMENT ##
########################### ###########################
# Designed & tested on Cinnamon 6.4.8 # Designed & tested on Cinnamon 6.4.8
echo "## desktop environment" | tee todo.md -a echo "## desktop environment" | tee -a todo.md
# remap caps-lock to escape (more efficient neovim) # remap caps-lock to escape (more efficient neovim)
gsettings set org.gnome.libgnomekbd.keyboard options "['grp\tgrp:win_space_toggle', 'terminate\tterminate:ctrl_alt_bksp', 'caps\tcaps:escape']" gsettings set org.gnome.libgnomekbd.keyboard options "['grp\tgrp:win_space_toggle', 'terminate\tterminate:ctrl_alt_bksp', 'caps\tcaps:escape']"
@@ -19,15 +19,33 @@ gsettings set org.cinnamon.gestures swipe-right-3 "WORKSPACE_PREVIOUS::start" #
gsettings set org.cinnamon.desktop.wm.preferences mouse-button-modifier "'<Super>'" gsettings set org.cinnamon.desktop.wm.preferences mouse-button-modifier "'<Super>'"
# hide annoying super menu icons # hide annoying super menu icons
echo "* hide annoying super menu icons" | tee -a todo.md
# set up taskbar
# startup programs - artha # startup programs - artha
mkdir -p $HOME/.config/autostart mkdir -p "$HOME/.config/autostart"
cp ./utils/artha-autostart.desktop $HOME/.config/autostart/artha.desktop cp ./utils/artha-autostart.desktop "$HOME/.config/autostart/artha.desktop"
chmod 755 $HOME/.config/autostart/artha.desktop chmod 755 "$HOME/.config/autostart/artha.desktop"
# disable calendar widget showing events too # disable calendar widget showing events too
FP="$HOME/.config/cinnamon/spices/calendar@cinnamon.org/13.json" # why is this 13? doesn't seem very robust # 13.json corresponds to the numerical (zero-indexed) position in the
cat $FP | jq '.["show-events"].value = false' | tee $FP # enabled-applets section of `dconf dump /org/cinnamon/`
FP="$HOME/.config/cinnamon/spices/calendar@cinnamon.org/13.json"
cat $FP | jq '.["show-events"].value = false' | tee tmp.json && mv tmp.json "$FP"
# set up taskbar (grouped-window-list widget)
FP="$HOME/.config/cinnamon/spices/grouped-window-list@cinnamon.org/2.json"
TASKBAR_LAYOUT='[
"nemo.desktop",
"org.gnome.Terminal.desktop",
"brave-browser.desktop",
"discord.desktop",
"code.desktop"
]'
cat $FP | jq --argjson layout "$TASKBAR_LAYOUT" '.["pinned-apps"]["value"] = $layout' | tee tmp.json && mv tmp.json "$FP"
# set desktop background image
IMAGE_NAME="smoky-mountains-background.jpg"
mkdir -p "$HOME/.local/share/backgrounds"
cp "./utils/$IMAGE_NAME" "$HOME/.local/share/backgrounds/$IMAGE_NAME"
gsettings set org.cinnamon.desktop.background picture-uri "file://$HOME/.local/share/backgrounds/$IMAGE_NAME"

94
main.sh
View File

@@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
# Last updated: 7/4/2026 # Last updated: 7/4/2026
# This was designed for Linux Mint 22.2; most of it should work for other distros. the desktop-environment.sh code will probably need to be different for anything that's not Cinnamon. # This was designed for Linux Mint 22.2; most of it should work for other distros. the desktop-environment.sh code will probably need to be different for anything that's not Cinnamon.
# Some things here require manual install because they aren't in apt repositories, don't have another stable installation source, and I don't want to rely on a static download location. # Some things here require manual install because they aren't in apt repositories, don't have another stable installation source, and I don't want to rely on a static download location.
# These things will all be put into a TODO.md file in the current directory along with brief notes/instructions. # These things will all be put into a TODO.md file in the current directory along with brief notes/instructions.
touch todo.md touch todo.md
sudo mkdir -p /usr/local/bin sudo mkdir -p /usr/local/bin
@@ -15,14 +15,13 @@ INSTALL_USER=$(whoami)
## DEV/PROGRAMMING ## ## DEV/PROGRAMMING ##
## ESSENTIAL TOOLS ## ## ESSENTIAL TOOLS ##
####################### #######################
echo "## dev/programming & essential tools/programs" | tee todo.md -a echo "## dev/programming & essential tools/programs" | tee -a todo.md
echo "* install drivers & such" | tee todo.md -a echo "* install drivers & such" | tee -a todo.md
# Install some apt packages # Install some apt packages
sudo apt-get upgrade -y sudo apt-get upgrade -y
sudo apt-get install -y curl git jq build-essential unzip tree # for development sudo apt-get install -y curl git jq build-essential unzip tree npm # for development
sudo apt-get install -y ripgrep # I honestly don't remember why I installed these sudo apt-get install -y ripgrep # I honestly don't remember why I installed these
echo "* globstar?" | tee todo.md -a
# Install Python & uv (package/version manager) # Install Python & uv (package/version manager)
curl -LsSf https://astral.sh/uv/install.sh | sh curl -LsSf https://astral.sh/uv/install.sh | sh
@@ -31,67 +30,95 @@ source $HOME/.local/bin/env
uv python install --default uv python install --default
# Node.js 24 (with nvm - https://github.com/nvm-sh/nvm) # Node.js 24 (with nvm - https://github.com/nvm-sh/nvm)
# also required for pyright language server (neovim)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.5/install.sh | bash
\. "$HOME/.nvm/nvm.sh" # in lieu of restarting the shell \. "$HOME/.nvm/nvm.sh" # in lieu of restarting the shell
nvm install 24 nvm install 24
# install a nerd font (provides special symbols for zsh/starship) # install a nerd font (provides special symbols for zsh/starship)
sudo mkdir -p /usr/share/fonts/truetype/DejaVuSansMono/ sudo mkdir -p /usr/share/fonts/truetype/DejaVuSansMono/
sudo unzip ./utils/DejaVuSansMono.zip /usr/share/fonts/truetype/DejaVuSansMono/ sudo unzip ./utils/DejaVuSansMono.zip -d /usr/share/fonts/truetype/DejaVuSansMono/
fc-cache -f -v
# zsh (better shell) # zsh (better shell)
echo "* add zsh and starship, etc. + nerd font" | tee todo.md -a
sudo apt-get install -y zsh sudo apt-get install -y zsh
sudo chsh $INSTALL_USER -s /bin/zsh sudo chsh $INSTALL_USER -s /bin/zsh
cp ./utils/dotzshrc "$HOME/.zshrc" cp ./utils/dotzshrc "$HOME/.zshrc"
# zsh nvm lazy loading (so shell doesn't take a million years to start)
git clone https://github.com/lukechilds/zsh-nvm.git "$HOME/.nvm-zsh"
# other install stuff already in .zshrc
# starship (shell prompt) # starship (shell prompt)
curl -sS https://starship.rs/install.sh | sudo sh -s -- -y curl -sS https://starship.rs/install.sh | sudo sh -s -- -y
# echo 'eval "$(starship init zsh)"' | tee "$HOME/.zshrc" -a # should already be in zshrc # echo 'eval "$(starship init zsh)"' | tee -a "$HOME/.zshrc" # should already be in zshrc
mkdir -p "$HOME/.config" mkdir -p "$HOME/.config"
cp ./utils/starship.toml "$HOME/.config/starship.toml" cp ./utils/starship.toml "$HOME/.config/starship.toml"
# Neovim # Neovim
echo "* install neovim & clone config" | tee todo.md -a curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
sudo rm -rf /opt/nvim-linux-x86_64
sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz
rm nvim-linux-x86_64.tar.gz
echo 'export PATH="$PATH:/opt/nvim-linux-x86_64/bin"' | tee -a "$HOME/.bashrc"
# Other editor(s) (TBD) # Neovim config
echo "* investigate and install other IDE(s)" | tee todo.md -a git clone https://gitea.jovan04.com/evan/neovim-config "$HOME/.config/nvim"
echo "* install pyright language server (and any other relevant ones)" | tee -a todo.md
# tree-sitter-cli (neovim syntax highlighting)
curl -LO https://github.com/tree-sitter/tree-sitter/releases/latest/download/tree-sitter-cli-linux-x64.zip
sudo unzip ./tree-sitter-cli-linux-x64.zip -d /opt/nvim-linux-x86_64/bin/
rm ./tree-sitter-cli-linux-x64.zip
# install VS Code
wget "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" -O "vs-code-linux-x64.deb"
echo "code code/add-microsoft-repo boolean true" | sudo debconf-set-selections
sudo apt-get install -y ./vs-code-linux-x64.deb
rm ./vs-code-linux-x64.deb
echo "* investigate and install other IDE(s)" | tee -a todo.md
# Brave browser # Brave browser
curl -fsS https://dl.brave.com/install.sh | sh curl -fsS https://dl.brave.com/install.sh | sh
# GitHub SSH keys # GitHub SSH keys
echo "* generate new SSH key and add to GitHub?" | tee todo.md -a echo "* generate new SSH key and add to GitHub?" | tee -a todo.md
# things I'd rather not install but have to # things I'd rather not install but have to
# Discord (chat) # Discord (chat)
echo "* install Discord (chat)" | tee todo.md -a wget "https://discord.com/api/download?platform=linux&format=deb" -O "discord-linux.deb"
sudo apt-get install -y ./discord-linux.deb
rm ./discord-linux.deb
mkdir -p "$HOME/.config/discord"
echo '{ "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true }' | tee "$HOME/.config/discord/settings.json"
echo "* find discord replacement" | tee -a todo.md
# Zoom (video call) # Zoom (video call)
echo "* install Zoom (video call)" | tee todo.md -a echo "* install Zoom (video call)" | tee -a todo.md
############################ ############################
## WORKFLOW/SMALL TOOLS ## ## WORKFLOW/SMALL TOOLS ##
############################ ############################
echo "## workflow helpers, small tools, and utilities" | tee todo.md -a echo "## workflow helpers, small tools, and utilities" | tee -a todo.md
# pbcopy/pbpaste (from macOS) # pbcopy/pbpaste (from macOS)
sudo apt-get install -y xclip sudo apt-get install -y xclip
printf '#!/bin/bash \nxclip -selection clipboard' | sudo tee /usr/local/bin/pbcopy printf '#!/bin/bash \nxclip -selection clipboard' | sudo tee /usr/local/bin/pbcopy
sudo chown 1000:1000 /usr/local/bin/pbcopy sudo chown $INSTALL_USER:$INSTALL_USER /usr/local/bin/pbcopy
chmod 755 /usr/local/bin/pbcopy chmod 755 /usr/local/bin/pbcopy
printf '#!/bin/bash \nxclip -selection clipboard -o' | sudo tee /usr/local/bin/pbpaste printf '#!/bin/bash \nxclip -selection clipboard -o' | sudo tee /usr/local/bin/pbpaste
sudo chown 1000:1000 /usr/local/bin/pbpaste sudo chown $INSTALL_USER:$INSTALL_USER /usr/local/bin/pbpaste
chmod 755 /usr/local/bin/pbpaste chmod 755 /usr/local/bin/pbpaste
# WordNet & def utility # WordNet & def utility
sudo apt-get install -y wordnet sudo apt-get install -y wordnet
printf '#!/bin/bash \nwn $1 -over' | sudo tee /usr/local/bin/def printf '#!/bin/bash \nwn $1 -over' | sudo tee /usr/local/bin/def
sudo chown 1000:1000 /usr/local/bin/def sudo chown $INSTALL_USER:$INSTALL_USER /usr/local/bin/def
chmod 755 /usr/local/bin/def chmod 755 /usr/local/bin/def
# Artha (WordNet dictionary) # Artha (WordNet dictionary)
@@ -103,16 +130,14 @@ sudo apt-get install -y qpdf
# rndrmarkdown markdown renderer # rndrmarkdown markdown renderer
sudo apt-get install -y pandoc sudo apt-get install -y pandoc
sudo cp ./utils/rndrmarkdown /usr/local/bin/rndrmarkdown sudo cp ./utils/rndrmarkdown /usr/local/bin/rndrmarkdown
sudo chown 1000:1000 /usr/local/bin/rndrmarkdown sudo chown $INSTALL_USER:$INSTALL_USER /usr/local/bin/rndrmarkdown
sudo chmod 755 /usr/local/bin/rndrmarkdown sudo chmod 755 /usr/local/bin/rndrmarkdown
echo "* add rmd to zshrc; what is bashrc doing?" | tee todo.md -a echo 'alias rmd="rndrmarkdown"' | tee -a "$HOME/.bashrc"
echo 'alias rmd="rndrmarkdown"' | tee ~/.bashrc -a
# readline (for piping 1 line into wc) # readline (for piping 1 line into wc)
printf '#!/bin/bash \necho "$(head -n $1 $2 | tail -n 1)"' | sudo tee /usr/local/bin/rline printf '#!/bin/bash \necho "$(head -n $1 $2 | tail -n 1)"' | sudo tee /usr/local/bin/rline
sudo chown 1000:1000 /usr/local/bin/rline sudo chown $INSTALL_USER:$INSTALL_USER /usr/local/bin/rline
chmod 755 /usr/local/bin/rline chmod 755 /usr/local/bin/rline
echo "* verify rline formatted correctly"
# Calc (command-line calculator) # Calc (command-line calculator)
sudo apt-get install -y calc sudo apt-get install -y calc
@@ -138,12 +163,21 @@ sudo apt-get install -y btop
########################## ##########################
## SPECIALTY PROGRAMS ## ## SPECIALTY PROGRAMS ##
########################## ##########################
source user-programs.sh source ./user-programs.sh
########################### ###########################
## DESKTOP ENVIRONMENT ## ## DESKTOP ENVIRONMENT ##
########################### ###########################
# designed & tested on Cinnamon XX.x # designed & tested on Cinnamon 6.4.8
source ./desktop-env.sh source ./desktop-env.sh
######################
## REMOVING STUFF ##
######################
source ./removing-stuff.sh
echo "Installation and setup finished. You must log out and log back in for all changes to take effect."
read -p "Press enter to log out."
cinnamon-session-quit --logout --no-prompt

View File

@@ -1,7 +1,7 @@
###################### ######################
## REMOVING STUFF ## ## REMOVING STUFF ##
###################### ######################
echo "## removing stuff" | tee todo.md -a echo "## removing stuff" | tee -a todo.md
rmdir $HOME/Documents/ rmdir $HOME/Documents/
rmdir $HOME/Music/ rmdir $HOME/Music/

View File

@@ -1,7 +1,7 @@
########################## ##########################
## SPECIALTY PROGRAMS ## ## SPECIALTY PROGRAMS ##
########################## ##########################
echo "## special/single-use/professional programs" | tee todo.md -a echo "## special/single-use/professional programs" | tee -a todo.md
# GIMP (image manipulation) # GIMP (image manipulation)
sudo apt-get install -y gimp sudo apt-get install -y gimp
@@ -26,13 +26,13 @@ sudo apt-get update
sudo apt-get install -y freecad freecad-doc sudo apt-get install -y freecad freecad-doc
# 3D printing slicer # 3D printing slicer
echo "* choose and install 3D slicer" | tee todo.md -a echo "* choose and install 3D slicer" | tee -a todo.md
# ProtonVPN # ProtonVPN
echo "* install protonVPN" | tee todo.md -a echo "* install protonVPN" | tee -a todo.md
# Minecraft # Minecraft
echo "* install Minecraft" | tee todo.md -a echo "* install Minecraft" | tee -a todo.md
# unsure about right now # unsure about right now

View File

@@ -1,5 +1,3 @@
# some handy ls aliases # some handy ls aliases
alias ls='ls --color=auto' alias ls='ls --color=auto'
alias ll='ls -alF' alias ll='ls -alF'
@@ -15,20 +13,24 @@ alias egrep='egrep --color=auto'
# sleep 10; alert # sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
export PATH="/usr/local/texlive/2024/bin/x86_64-linux:$PATH"
export PATH="$PATH:/usr/local/go/bin"
export PATH="$PATH:/opt/mssql-tools18/bin"
export PATH="$PATH:/home/evan/go/bin"
alias open="xdg-open"
alias nv="nvim"
# colored GCC warnings and errors # colored GCC warnings and errors
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
export PATH="$PATH:/opt/nvim-linux-x86_64/bin"
alias open="xdg-open"
alias nv="nvim"
alias rmd="rndrmarkdown"
autoload -Uz compinit && compinit
zstyle ':completion:*' insert-tab false
zstyle ':completion:*' menu select
bindkey "^[[1;5C" forward-word # Ctrl+Right
bindkey "^[[1;5D" backward-word # Ctrl+Left
export NVM_LAZY_LOAD=true
source "$HOME/.nvm-zsh/zsh-nvm.plugin.zsh"
eval "$(starship init zsh)" eval "$(starship init zsh)"
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB