Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a408c841f4 | |||
| 3b97ae4f33 | |||
| 3f71189bf1 | |||
| 2bf85de679 | |||
| bf35bf65c2 | |||
| f3bb166493 |
17
README.md
17
README.md
@@ -1,16 +1,9 @@
|
||||
# Setup Ubuntu
|
||||
Install everything with a single command
|
||||
# misebuntu
|
||||
Turn a fresh Ubuntu installation into a fully configured desktop by running a single command.
|
||||
misebuntu is what I prefer Ubuntu to be.
|
||||
It is a play in on the term *mise en place* and Ubuntu.
|
||||
|
||||
Getting starting is simple - just run:
|
||||
```bash
|
||||
wget -qO- https://git.cbo.dk/rasmus/setup-ubuntu/raw/branch/main/setup-ubuntu.sh | bash
|
||||
wget -qO- https://git.cbo.dk/rasmus/setup-ubuntu/raw/branch/v0.1/installer.sh | bash
|
||||
```
|
||||
|
||||
# A few manual touches to change terminal colors
|
||||
Using [Gogh](https://github.com/Gogh-Co/Gogh)
|
||||
```bash
|
||||
sudo apt-get install dconf-cli uuid-runtime
|
||||
wget -O gogh https://git.io/vQgMr && chmod +x gogh && ./gogh && rm gogh
|
||||
# Select #7 - Afterglow
|
||||
```
|
||||
(If it fails due to missing profile - then manually add a Terminal profile called "Default")
|
||||
26
configs/vscode.json
Normal file
26
configs/vscode.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"editor.fontFamily": "CaskaydiaMono Nerd Font",
|
||||
"editor.tabSize": 2,
|
||||
"security.workspace.trust.untrustedFiles": "open",
|
||||
"editor.minimap.enabled": false,
|
||||
"git.ignoreMissingGitWarning": true,
|
||||
"editor.fontSize": 12,
|
||||
"editor.occurrencesHighlight": "off",
|
||||
"editor.selectionHighlight": false,
|
||||
"editor.suggestOnTriggerCharacters": false,
|
||||
"editor.tabCompletion": "on",
|
||||
"editor.quickSuggestions": {
|
||||
"other": false,
|
||||
"comments": false,
|
||||
"strings": false
|
||||
},
|
||||
"files.trimTrailingWhitespace": true,
|
||||
"git.confirmSync": false,
|
||||
"window.menuBarVisibility": "compact",
|
||||
"git.autofetch": true,
|
||||
"git.openRepositoryInParentFolders": "always",
|
||||
"explorer.confirmDelete": false,
|
||||
"extensions.ignoreRecommendations": true,
|
||||
"workbench.colorTheme": "Tokyo Night",
|
||||
"window.titleBarStyle": "custom"
|
||||
}
|
||||
23
install.sh
Normal file
23
install.sh
Normal file
@@ -0,0 +1,23 @@
|
||||
# Exit immediately if a command exits with a non-zero status
|
||||
set -e
|
||||
|
||||
# Needed for all installers
|
||||
sudo apt update -y
|
||||
sudo apt install -y curl git unzip
|
||||
|
||||
# Ensure computer doesn't go to sleep or lock while installing
|
||||
gsettings set org.gnome.desktop.screensaver lock-enabled false
|
||||
gsettings set org.gnome.desktop.session idle-delay 0
|
||||
|
||||
# Run installers
|
||||
for script in ~/.local/share/misebuntu/install/*.sh; do source $script; done
|
||||
|
||||
# Upgrade everything that might ask for a reboot last
|
||||
sudo apt upgrade -y
|
||||
|
||||
# Revert to normal idle and lock settings
|
||||
gsettings set org.gnome.desktop.screensaver lock-enabled true
|
||||
gsettings set org.gnome.desktop.session idle-delay 300
|
||||
|
||||
# Logout to pickup changes
|
||||
#gum confirm "Ready to logout for all settings to take effect?" && gnome-session-quit --logout --no-prompt
|
||||
3
install/app-fastfetch.sh
Normal file
3
install/app-fastfetch.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
sudo add-apt-repository -y ppa:zhangsongcui3371/fastfetch
|
||||
sudo apt update -y
|
||||
sudo apt install -y fastfetch
|
||||
2
install/app-flameshot.sh
Normal file
2
install/app-flameshot.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
# Flameshot is a nice step-up over the default Gnome screenshot tool
|
||||
sudo apt install -y flameshot
|
||||
7
install/app-lazydocker.sh
Normal file
7
install/app-lazydocker.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
cd ~/Downloads
|
||||
LAZYDOCKER_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazydocker/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
|
||||
curl -sLo lazydocker.tar.gz "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz"
|
||||
tar -xf lazydocker.tar.gz lazydocker
|
||||
sudo install lazydocker /usr/local/bin
|
||||
rm lazydocker.tar.gz lazydocker
|
||||
cd -
|
||||
7
install/app-lazygit.sh
Normal file
7
install/app-lazygit.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
cd ~/Downloads
|
||||
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
|
||||
curl -sLo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
|
||||
tar -xf lazygit.tar.gz lazygit
|
||||
sudo install lazygit /usr/local/bin
|
||||
rm lazygit.tar.gz lazygit
|
||||
cd -
|
||||
6
install/app-localsend.sh
Normal file
6
install/app-localsend.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
cd ~/Downloads
|
||||
LOCALSEND_VERSION=$(curl -s "https://api.github.com/repos/localsend/localsend/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
|
||||
wget -O localsend.deb "https://github.com/localsend/localsend/releases/latest/download/LocalSend-${LOCALSEND_VERSION}-linux-x86-64.deb"
|
||||
sudo apt install -y ./localsend.deb
|
||||
rm localsend.deb
|
||||
cd -
|
||||
6
install/app-steam.sh
Executable file
6
install/app-steam.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
cd /tmp
|
||||
wget https://cdn.akamai.steamstatic.com/client/installer/steam.deb
|
||||
sudo apt install -y ./steam.deb
|
||||
sudo apt-get install --no-remove -oAPT::Get::AutomaticRemove=false libc6:amd64 libc6:i386 libegl1:amd64 libegl1:i386 libgbm1:amd64 libgbm1:i386 libgl1-mesa-dri:amd64 libgl1-mesa-dri:i386 libgl1:amd64 libgl1:i386 steam-libs-amd64:amd64
|
||||
rm steam.deb
|
||||
cd -
|
||||
9
install/app-typora.sh
Normal file
9
install/app-typora.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
wget -qO - https://typora.io/linux/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/typora.asc
|
||||
sudo add-apt-repository -y 'deb https://typora.io/linux ./'
|
||||
sudo apt update
|
||||
sudo apt install -y typora
|
||||
|
||||
# Add iA Typora theme
|
||||
mkdir -p ~/.config/Typora/themes
|
||||
cp ~/.local/share/misebuntu/themes/typora/ia_typora.css ~/.config/Typora/themes/
|
||||
cp ~/.local/share/misebuntu/themes/typora/ia_typora_night.css ~/.config/Typora/themes/
|
||||
1
install/app-vlc.sh
Normal file
1
install/app-vlc.sh
Normal file
@@ -0,0 +1 @@
|
||||
sudo apt install -y vlc
|
||||
37
install/app-vscode.sh
Normal file
37
install/app-vscode.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
cd ~/Downloads
|
||||
wget -O code.deb 'https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64'
|
||||
sudo apt install -y ./code.deb
|
||||
rm code.deb
|
||||
cd -
|
||||
|
||||
mkdir -p ~/.config/Code/User
|
||||
cp ~/.local/share/misebuntu/configs/vscode.json ~/.config/Code/User/settings.json
|
||||
|
||||
# Install default supported themes
|
||||
code --install-extension enkia.tokyo-night
|
||||
|
||||
# Install default language extensions
|
||||
code --install-extension golang.go
|
||||
code --install-extension ms-python.debugpy
|
||||
code --install-extension ms-python.python
|
||||
code --install-extension ms-python.vscode-pylance
|
||||
code --install-extension redhat.ansible
|
||||
code --install-extension redhat.java
|
||||
code --install-extension redhat.vscode-commons
|
||||
code --install-extension redhat.vscode-microprofile
|
||||
code --install-extension redhat.vscode-quarkus
|
||||
code --install-extension redhat.vscode-xml
|
||||
code --install-extension redhat.vscode-yaml
|
||||
code --install-extension vscjava.vscode-java-debug
|
||||
|
||||
# Install various extensions
|
||||
code --install-extension esbenp.prettier-vscode
|
||||
code --install-extension ms-azuretools.vscode-docker
|
||||
code --install-extension ms-vscode-remote.remote-containers
|
||||
code --install-extension ms-vscode-remote.remote-ssh
|
||||
code --install-extension ms-vscode-remote.remote-ssh-edit
|
||||
code --install-extension ms-vscode-remote.remote-wsl
|
||||
code --install-extension ms-vscode-remote.vscode-remote-extensionpack
|
||||
code --install-extension ms-vscode.remote-explorer
|
||||
code --install-extension ms-vscode.remote-server
|
||||
code --install-extension rangav.vscode-thunder-client
|
||||
11
install/docker.sh
Normal file
11
install/docker.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
sudo apt install -y docker.io docker-buildx
|
||||
sudo usermod -aG docker ${USER}
|
||||
|
||||
# Limit log size to avoid running out of disk
|
||||
echo '{"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"5"}}' | sudo tee /etc/docker/daemon.json
|
||||
|
||||
DOCKER_COMPOSE_VERSION="2.27.0"
|
||||
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
||||
mkdir -p $DOCKER_CONFIG/cli-plugins
|
||||
curl -sSL https://github.com/docker/compose/releases/download/v$DOCKER_COMPOSE_VERSION/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
|
||||
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
|
||||
3
install/flatpak.sh
Normal file
3
install/flatpak.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
sudo apt install -y flatpak
|
||||
sudo apt install -y gnome-software-plugin-flatpak
|
||||
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
34
install/fonts.sh
Normal file
34
install/fonts.sh
Normal file
@@ -0,0 +1,34 @@
|
||||
mkdir -p ~/.local/share/fonts
|
||||
|
||||
cd ~/Downloads
|
||||
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaMono.zip
|
||||
unzip CascadiaMono.zip -d CascadiaFont
|
||||
cp CascadiaFont/*.ttf ~/.local/share/fonts
|
||||
rm -rf CascadiaMono.zip CascadiaFont
|
||||
|
||||
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/FiraMono.zip
|
||||
unzip FiraMono.zip -d FiraMono
|
||||
cp FiraMono/*.otf ~/.local/share/fonts
|
||||
rm -rf FiraMono.zip FiraMono
|
||||
|
||||
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip
|
||||
unzip JetBrainsMono.zip -d JetBrainsMono
|
||||
cp JetBrainsMono/*.ttf ~/.local/share/fonts
|
||||
rm -rf JetBrainsMono.zip JetBrainsMono
|
||||
|
||||
wget https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Meslo.zip
|
||||
unzip Meslo.zip -d Meslo
|
||||
cp Meslo/*.ttf ~/.local/share/fonts
|
||||
rm -rf Meslo.zip Meslo
|
||||
|
||||
wget https://github.com/iaolo/iA-Fonts/archive/refs/heads/master.zip
|
||||
unzip master.zip -d iaFonts
|
||||
cp iaFonts/iA-Fonts-master/iA\ Writer\ Mono/Static/iAWriterMonoS-*.ttf ~/.local/share/fonts
|
||||
rm -rf master.zip iaFonts
|
||||
|
||||
fc-cache
|
||||
cd -
|
||||
|
||||
# Set Cascadia Mono as the default
|
||||
gsettings set org.gnome.desktop.interface monospace-font-name 'CaskaydiaMono Nerd Font 10'
|
||||
#gsettings set org.gnome.desktop.interface monospace-font-name 'Ubuntu Sans Mono 13'
|
||||
6
install/set-git.sh
Normal file
6
install/set-git.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
# Set common git aliases
|
||||
git config --global alias.co checkout
|
||||
git config --global alias.br branch
|
||||
git config --global alias.ci commit
|
||||
git config --global alias.st status
|
||||
git config --global pull.rebase true
|
||||
7
installer.sh
Normal file
7
installer.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
echo "Installing git..."
|
||||
sudo apt-get update > /dev/null
|
||||
sudo apt-get install -y git > /dev/null
|
||||
|
||||
echo "Cloning stable misebuntu..."
|
||||
git clone -b v0.1 https://git.cbo.dk/rasmus/setup-ubuntu.git ~/.local/share/misebuntu > /dev/null
|
||||
source ~/.local/share/misebuntu/install.sh
|
||||
339
setup-ubuntu.sh
339
setup-ubuntu.sh
@@ -1,339 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e # Fail on errors
|
||||
|
||||
# Pre-req: Use OS with apt - like Ubuntu, POP_OS!, etc.
|
||||
|
||||
# Update apt and all existing applications
|
||||
# Install Nala - enables multithreading when installing apt packages
|
||||
echo "🚧 APT update/upgrade + installing nala..."
|
||||
sudo apt-get update > /dev/null && sudo apt-get upgrade -y > /dev/null
|
||||
sudo apt-get update > /dev/null && sudo apt-get install -y nala > /dev/null
|
||||
sudo nala install -y apt-transport-https ca-certificates cifs-utils cksfv curl curl git gnupg golang-go jq mc nano pipx python3 sshpass unrar unzip wget > /dev/null
|
||||
|
||||
|
||||
# Uninstall Transmission if installed (Ubuntu sometimes installs it by default)
|
||||
echo "🔧 Checking for Transmission..."
|
||||
if dpkg -l | grep -q transmission-gtk; then
|
||||
echo "Removing Transmission (transmission-gtk)..."
|
||||
sudo apt-get remove --purge -y transmission-gtk transmission-common transmission-qt > /dev/null
|
||||
sudo apt-get autoremove -y > /dev/null
|
||||
echo "Transmission removed."
|
||||
else
|
||||
echo "Transmission not installed."
|
||||
fi
|
||||
|
||||
# Change work-dir to /tmp/
|
||||
cd /tmp/
|
||||
|
||||
# Install apps from APT
|
||||
echo "📦 Installing a few more applications from apt/nala..."
|
||||
software=(
|
||||
doublecmd-common # Double Commander
|
||||
filezilla # FTP client
|
||||
mc # Midnight Commander
|
||||
nextcloud-desktop # Nextcloud Desktop Client
|
||||
notepadqq # NotepadQQ
|
||||
openscad # OpenSCAD - for drawing 3D
|
||||
rpi-imager # Raspberry Pi Imager
|
||||
solaar # Solaar - Logitech keyboard/mouse software for Linux
|
||||
)
|
||||
|
||||
# Run nala install for all software in the array
|
||||
sudo nala install -y "${software[@]}" > /dev/null
|
||||
|
||||
# Flatpak and flathub repo
|
||||
echo "📦 Installing applications from Flathub..."
|
||||
sudo nala install -y flatpak gnome-software-plugin-flatpak > /dev/null
|
||||
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
|
||||
# Flatpak applications
|
||||
# Flatpak applications
|
||||
flatpakapps=(
|
||||
com.bitwarden.desktop # Bitwarden client
|
||||
com.discordapp.Discord # Discord
|
||||
com.prusa3d.PrusaSlicer # PrusaSlicer
|
||||
com.valvesoftware.Steam # Steam - games
|
||||
md.obsidian.Obsidian # Obsidian - markdown notepad
|
||||
one.ablaze.floorp # Floorp - browser
|
||||
org.deluge_torrent.deluge # Deluge - torrent client
|
||||
org.remmina.Remmina # SSH client
|
||||
org.videolan.VLC # VLC video player
|
||||
org.localsend.localsend_app # Airdrop alternative
|
||||
net.openra.OpenRA # Open Red Alert
|
||||
)
|
||||
# Run flatpak install for all apps in the array
|
||||
sudo flatpak install -y "${flatpakapps[@]}" > /dev/null
|
||||
|
||||
# Ansible
|
||||
echo "📦 Installing Ansbile..."
|
||||
pipx install --include-deps ansible > /dev/null
|
||||
pipx ensurepath
|
||||
pipx completions
|
||||
eval "$(register-python-argcomplete pipx)"
|
||||
|
||||
|
||||
#####################################
|
||||
# Extend APT with more applications #
|
||||
#####################################
|
||||
|
||||
### Tailscale ###
|
||||
echo "📦 Installing Tailscale..."
|
||||
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
|
||||
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
|
||||
sudo nala update > /dev/null
|
||||
sudo nala install -y tailscale > /dev/null
|
||||
|
||||
### Fastfetch ###
|
||||
echo "📦 Installing Fastfetch..."
|
||||
sudo add-apt-repository -y ppa:zhangsongcui3371/fastfetch > /dev/null
|
||||
sudo nala update > /dev/null
|
||||
sudo nala install -y fastfetch > /dev/null
|
||||
|
||||
### Docker ###
|
||||
echo "📦 Installing Docker..."
|
||||
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg > /dev/null; done
|
||||
# Add Docker's official GPG key:
|
||||
sudo nala update > /dev/null
|
||||
sudo nala install -y ca-certificates curl > /dev/null
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
||||
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
sudo nala update > /dev/null
|
||||
sudo nala install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin > /dev/null
|
||||
sudo groupadd --force docker
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
### Helm ###
|
||||
echo "📦 Installing Helm..."
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
sudo nala install -y apt-transport-https wget gpg > /dev/null
|
||||
wget -qO- https://baltocdn.com/helm/signing.asc | gpg --dearmor > packages.helm.gpg
|
||||
sudo install -D -o root -g root -m 644 packages.helm.gpg /etc/apt/keyrings/packages.helm.gpg
|
||||
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/packages.helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm.list > /dev/null
|
||||
rm -f packages.helm.gpg
|
||||
sudo nala update > /dev/null
|
||||
sudo nala install -y helm > /dev/null
|
||||
|
||||
### Minikube ###
|
||||
echo "📦 Installing Minikube..."
|
||||
curl -sLO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
|
||||
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
|
||||
|
||||
### Kubectl ###
|
||||
echo "📦 Installing Kubectl..."
|
||||
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --batch --yes --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
|
||||
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
|
||||
sudo nala update > /dev/null
|
||||
sudo nala install -y kubectl > /dev/null
|
||||
|
||||
### KubeSeal ###
|
||||
echo "📦 Installing Kubeseal..."
|
||||
# Fetch the latest sealed-secrets version using GitHub API
|
||||
KUBESEAL_VERSION=$(curl -s https://api.github.com/repos/bitnami-labs/sealed-secrets/tags | jq -r '.[0].name' | cut -c 2-)
|
||||
|
||||
# Check if the version was fetched successfully
|
||||
if [ -z "$KUBESEAL_VERSION" ]; then
|
||||
echo "Failed to fetch the latest KUBESEAL_VERSION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
curl -sOL "https://github.com/bitnami-labs/sealed-secrets/releases/download/v${KUBESEAL_VERSION}/kubeseal-${KUBESEAL_VERSION}-linux-amd64.tar.gz"
|
||||
tar -xvzf kubeseal-${KUBESEAL_VERSION}-linux-amd64.tar.gz kubeseal > /dev/null
|
||||
sudo install -m 755 kubeseal /usr/local/bin/kubeseal && rm kubeseal*
|
||||
|
||||
# Lazygit - TUI for Git
|
||||
echo "📦 Installing Lazygit..."
|
||||
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
|
||||
curl -sLo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz" > /dev/null
|
||||
tar xf lazygit.tar.gz lazygit
|
||||
sudo install lazygit /usr/local/bin
|
||||
|
||||
# Lazydocker - TUI for Docker
|
||||
echo "📦 Installing Lazydocker..."
|
||||
LAZYDOCKER_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazydocker/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
|
||||
curl -sLo lazydocker.tar.gz "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz" > /dev/null
|
||||
tar -xf lazydocker.tar.gz lazydocker
|
||||
sudo install lazydocker /usr/local/bin
|
||||
rm lazydocker.tar.gz lazydocker
|
||||
|
||||
# K9s - TUI for Kubernetes
|
||||
echo "📦 Installing K9s..."
|
||||
K9S_VERSION=$(curl -s "https://api.github.com/repos/derailed/k9s/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
|
||||
curl -sLo k9s_linux_amd64.deb "https://github.com/derailed/k9s/releases/download/v${K9S_VERSION}/k9s_linux_amd64.deb" > /dev/null
|
||||
sudo apt-get install -y ./k9s_linux_amd64.deb > /dev/null
|
||||
rm k9s_linux_amd64.deb
|
||||
|
||||
# Google Chrome
|
||||
echo "📦 Installing Google Chrome..."
|
||||
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
||||
sudo dpkg -i google-chrome-stable_current_amd64.deb > /dev/null
|
||||
sudo apt-get install -f > /dev/null
|
||||
rm google-chrome-stable_current_amd64.deb
|
||||
|
||||
# Unrarall
|
||||
echo "📦 Installing Unrarall..."
|
||||
wget -qO unrarall https://raw.githubusercontent.com/arfoll/unrarall/master/unrarall
|
||||
sudo chmod 0777 unrarall
|
||||
sudo chown root:root unrarall
|
||||
sudo mv unrarall /usr/bin/unrarall
|
||||
|
||||
|
||||
# VSCode
|
||||
echo "📦 Installing VSCode..."
|
||||
# Install prerequisites
|
||||
sudo apt-get install -y wget gpg apt-transport-https > /dev/null
|
||||
|
||||
# Import the Microsoft GPG key
|
||||
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
|
||||
sudo install -D -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/microsoft.gpg
|
||||
rm -f microsoft.gpg
|
||||
|
||||
# Add the VS Code repository in .sources format
|
||||
sudo tee /etc/apt/sources.list.d/vscode.sources > /dev/null <<EOF
|
||||
Types: deb
|
||||
URIs: https://packages.microsoft.com/repos/code
|
||||
Suites: stable
|
||||
Components: main
|
||||
Architectures: amd64,arm64,armhf
|
||||
Signed-By: /usr/share/keyrings/microsoft.gpg
|
||||
EOF
|
||||
|
||||
|
||||
# Update and install VS Code
|
||||
sudo nala update > /dev/null
|
||||
sudo nala install -y code > /dev/null
|
||||
|
||||
# Install VSCode extensions
|
||||
echo "📦 Installing more VSCode extensions.."
|
||||
code --install-extension esbenp.prettier-vscode > /dev/null
|
||||
code --install-extension golang.go > /dev/null
|
||||
code --install-extension ms-azuretools.vscode-docker > /dev/null
|
||||
code --install-extension ms-python.debugpy > /dev/null
|
||||
code --install-extension ms-python.python > /dev/null
|
||||
code --install-extension ms-python.vscode-pylance > /dev/null
|
||||
code --install-extension ms-vscode-remote.remote-containers > /dev/null
|
||||
code --install-extension ms-vscode-remote.remote-ssh > /dev/null
|
||||
code --install-extension ms-vscode-remote.remote-ssh-edit > /dev/null
|
||||
code --install-extension ms-vscode-remote.remote-wsl > /dev/null
|
||||
code --install-extension ms-vscode-remote.vscode-remote-extensionpack > /dev/null
|
||||
code --install-extension ms-vscode.remote-explorer > /dev/null
|
||||
code --install-extension ms-vscode.remote-server > /dev/null
|
||||
code --install-extension rangav.vscode-thunder-client > /dev/null
|
||||
code --install-extension redhat.ansible > /dev/null
|
||||
code --install-extension redhat.java > /dev/null
|
||||
code --install-extension redhat.vscode-commons > /dev/null
|
||||
code --install-extension redhat.vscode-microprofile > /dev/null
|
||||
code --install-extension redhat.vscode-quarkus > /dev/null
|
||||
code --install-extension redhat.vscode-xml > /dev/null
|
||||
code --install-extension redhat.vscode-yaml > /dev/null
|
||||
code --install-extension vscjava.vscode-java-debug > /dev/null
|
||||
|
||||
############################
|
||||
# #
|
||||
# Configure look of Ubuntu #
|
||||
# #
|
||||
############################
|
||||
echo "🎨 Configure Ubuntu look and feel..."
|
||||
# Color theme
|
||||
gsettings set org.gnome.desktop.interface clock-format '24h'
|
||||
gsettings set org.gnome.desktop.interface clock-show-date true
|
||||
gsettings set org.gnome.desktop.interface clock-show-seconds false
|
||||
gsettings set org.gnome.desktop.interface clock-show-weekday true
|
||||
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||
gsettings set org.gnome.desktop.interface cursor-theme 'Adwaita'
|
||||
gsettings set org.gnome.desktop.interface enable-animations true
|
||||
gsettings set org.gnome.desktop.interface enable-hot-corners false
|
||||
gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-blue'
|
||||
gsettings set org.gnome.desktop.interface icon-theme 'Yaru-blue'
|
||||
gsettings set org.gnome.desktop.interface show-battery-percentage true
|
||||
gsettings set org.gnome.desktop.interface text-scaling-factor 1.0
|
||||
gsettings set org.gnome.desktop.interface toolbar-detachable false
|
||||
gsettings set org.gnome.desktop.interface toolbar-icons-size 'large'
|
||||
gsettings set org.gnome.desktop.interface toolbar-style 'both-horiz'
|
||||
gsettings set org.gnome.desktop.interface toolkit-accessibility false
|
||||
|
||||
# Move dock to right side of screen
|
||||
gsettings set org.gnome.shell.extensions.dash-to-dock dock-position "RIGHT"
|
||||
|
||||
# Activate night light
|
||||
gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
|
||||
gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-automatic true
|
||||
gsettings set org.gnome.settings-daemon.plugins.color night-light-temperature 4000
|
||||
|
||||
# Deactivate "Begin move" shortcut, as the same keys are used in Double Commander
|
||||
gsettings set org.gnome.desktop.wm.keybindings begin-move "[]"
|
||||
|
||||
# Remove unwanted apps from favorites using jq for robust JSON handling
|
||||
apps_to_remove=(
|
||||
"yelp.desktop"
|
||||
"rhythmbox.desktop"
|
||||
"org.gnome.Rhythmbox3.desktop"
|
||||
"thunderbird.desktop"
|
||||
"thunderbird_thunderbird.desktop"
|
||||
)
|
||||
|
||||
# Get current favorites as JSON array, with error handling
|
||||
gsettings_output=$(gsettings get org.gnome.shell favorite-apps 2>/dev/null)
|
||||
if echo "$gsettings_output" | grep -q '^@as '; then
|
||||
# Remove the @as prefix if present
|
||||
gsettings_output=${gsettings_output#@as }
|
||||
fi
|
||||
|
||||
# Try to convert to JSON, fallback to empty array if invalid
|
||||
if echo "$gsettings_output" | grep -q '^\['; then
|
||||
current_apps=$(echo "$gsettings_output" | tr "'" '"')
|
||||
else
|
||||
echo "⚠️ Could not get valid favorite-apps from gsettings, using empty array."
|
||||
current_apps='[]'
|
||||
fi
|
||||
|
||||
for app in "${apps_to_remove[@]}"; do
|
||||
current_apps=$(echo "$current_apps" | jq --arg app "$app" '[.[] | select(. != $app)]')
|
||||
done
|
||||
|
||||
|
||||
# Desired order: Firefox, Floorp, Chrome, Double Commander, then the rest
|
||||
ordered_apps=(
|
||||
"firefox.desktop"
|
||||
"firefox_firefox.desktop"
|
||||
"one.ablaze.floorp.desktop"
|
||||
"google-chrome.desktop"
|
||||
"doublecmd.desktop"
|
||||
)
|
||||
|
||||
# Only keep ordered apps that are present in current favorites
|
||||
ordered_present=()
|
||||
for app in "${ordered_apps[@]}"; do
|
||||
if echo "$current_apps" | jq -e --arg a "$app" 'index($a)' > /dev/null; then
|
||||
ordered_present+=("$app")
|
||||
fi
|
||||
done
|
||||
|
||||
# Remove all ordered_present from current_apps to avoid duplicates
|
||||
remaining=$(echo "$current_apps" | jq -c --argjson order "$(printf '%s\n' "${ordered_present[@]}" | jq -R . | jq -s .)" '. as $in | $order as $order | [.[] | select(. as $a | ($order | index($a) | not))]')
|
||||
|
||||
# Build new favorites array in desired order, then add the rest
|
||||
new_favorites=$(jq -c -n --argjson ordered "$(printf '%s\n' "${ordered_present[@]}" | jq -R . | jq -s .)" --argjson rest "$remaining" '$ordered + $rest')
|
||||
|
||||
|
||||
# Convert JSON array to gsettings format: single-quoted, comma-separated
|
||||
gsettings_favorites=$(echo "$new_favorites" | jq -r 'map("'\''" + . + "'\''") | "[" + join(", ") + "]"')
|
||||
gsettings set org.gnome.shell favorite-apps "$gsettings_favorites"
|
||||
|
||||
# Cleaup unwanted apps from favorites
|
||||
for app in "${apps_to_remove[@]}"; do
|
||||
if echo "$current_set" | grep -q "$app"; then
|
||||
echo "❌ $app is still present in favorites!"
|
||||
else
|
||||
echo "✅ $app is not present in favorites."
|
||||
fi
|
||||
done
|
||||
|
||||
# All done
|
||||
cd # change directory to homedir
|
||||
echo "🎉 Setup of Ubuntu is done! 🚀"
|
||||
|
||||
309
themes/typora/ia_typora.css
Normal file
309
themes/typora/ia_typora.css
Normal file
@@ -0,0 +1,309 @@
|
||||
:root {
|
||||
--accent-color: #aeb1b5; /* #'s before H1-3 */
|
||||
--background-color: white;
|
||||
--border-color: #ddd;
|
||||
--code-bg-color: #f8f8f8;
|
||||
--font-color: #42464c;
|
||||
--header-color: #222324;
|
||||
--link-color: #2077b2;
|
||||
--control-text-color: #667176;
|
||||
--side-bar-bg-color: #fafafa;
|
||||
--body-font: iAWriterMonoS-Regular, monospace, Roboto;
|
||||
--border-radius: 2px;
|
||||
--document-horizontal-margin: 80px;
|
||||
--document-padding-x: 10ch;
|
||||
--font-size: 20px;
|
||||
--h1-fontsize: 20px; /* 1,5 rem = 24px */
|
||||
--h2-fontsize: 20px; /* 1,375 rem = 22px */
|
||||
--h3-fontsize: 20px; /* 1,25 rem = 20px */
|
||||
--h4-fontsize: 20px; /* 1,125 rem = 18px */
|
||||
--line-height: 1.8;
|
||||
--main-content-margin: 0 auto;
|
||||
--main-content-max-width: 85ch;
|
||||
--monospace-font-size: 20px;
|
||||
--monospace-font: iAWriterMonoS-Regular, monospace;
|
||||
--monospace-line-height: 1.6;
|
||||
--monospace: var(--monospace-font); /* Fixes source code mode */
|
||||
--nav-width: 200px;
|
||||
--vertical-padding: 40px;
|
||||
}
|
||||
|
||||
/* Narrow layout styles */
|
||||
@media (max-width: 640px) {
|
||||
:root {
|
||||
--document-padding-x: 4ch;
|
||||
}
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: var(--font-size);
|
||||
background-color: var(--background-color);
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
color: var(--font-color);
|
||||
font-family: var(--body-font);
|
||||
line-height: var(--line-height);
|
||||
}
|
||||
|
||||
#write {
|
||||
/* size of writing area: */
|
||||
padding-left: var(--document-padding-x);
|
||||
padding-right: var(--document-padding-x);
|
||||
max-width: var(--main-content-max-width);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/**
|
||||
* ---------------------
|
||||
* Block Elements
|
||||
*/
|
||||
|
||||
/* yaml */
|
||||
pre.md-meta-block {
|
||||
background-color: var(--background-color);
|
||||
padding-bottom: .5rem;
|
||||
color: var(--accent-color);
|
||||
border-bottom: 2px solid var(--border-color);
|
||||
font-family: var(--monospace-font);
|
||||
}
|
||||
|
||||
/* headings */
|
||||
h1, h2, h3 {
|
||||
font-weight: bold;
|
||||
color: var(--header-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
font-size: var(--h1-fontsize);
|
||||
}
|
||||
|
||||
h1:not(:first-child) {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0rem;
|
||||
font-size: var(--h2-fontsize);
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0rem;
|
||||
font-size: var(--h3-fontsize);
|
||||
}
|
||||
|
||||
h4, h5, h6 {
|
||||
color: var(--header-color);
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: var(--h4-fontsize);
|
||||
}
|
||||
|
||||
h6 {
|
||||
color: var(--control-text-color);
|
||||
}
|
||||
|
||||
h1::before,
|
||||
h2::before,
|
||||
h3::before {
|
||||
font-weight: 400;
|
||||
text-align: right;
|
||||
width: 5ch;
|
||||
padding-right: 1ch;
|
||||
margin-left: -5ch;
|
||||
color: var(--accent-color);
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
h1::before {
|
||||
content: '#';
|
||||
}
|
||||
|
||||
h2::before {
|
||||
content: '##';
|
||||
}
|
||||
|
||||
h3::before {
|
||||
content: '###';
|
||||
}
|
||||
|
||||
h1 tt,
|
||||
h1 code {
|
||||
font-size: inherit;
|
||||
}
|
||||
h2 tt,
|
||||
h2 code {
|
||||
font-size: inherit;
|
||||
}
|
||||
h3 tt,
|
||||
h3 code {
|
||||
font-size: inherit;
|
||||
}
|
||||
h4 tt,
|
||||
h4 code {
|
||||
font-size: inherit;
|
||||
}
|
||||
h5 tt,
|
||||
h5 code {
|
||||
font-size: inherit;
|
||||
}
|
||||
h6 tt,
|
||||
h6 code {
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
/* table */
|
||||
table {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
table tr:nth-child(2n),
|
||||
thead {
|
||||
background-color: var(--side-bar-bg-color);
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
border-style: solid;
|
||||
border-color: var(--border-color);
|
||||
border-width: 1px;
|
||||
padding: .35rem .7rem
|
||||
}
|
||||
|
||||
li p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.task-list {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.task-list-item {
|
||||
padding-left: 1.5em;
|
||||
margin-bottom: 0rem;
|
||||
}
|
||||
|
||||
#write input[type='checkbox'] {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 1rem 0;
|
||||
padding-left: 2ch;
|
||||
margin-left: .5ch;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
border-left: 2px solid var(--border-color);
|
||||
color: var(--accent-color);
|
||||
}
|
||||
|
||||
/* horizontal line */
|
||||
hr {
|
||||
border: none;
|
||||
border-bottom: 2px solid var(--border-color);
|
||||
margin-top: 1.4rem;
|
||||
margin-bottom: 1.4rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Code Fences
|
||||
* see http:/*support.typora.io/Code-Block-Styles
|
||||
*/
|
||||
|
||||
.cm-s-inner .CodeMirror-gutters {
|
||||
background: var(--code-bg-color);
|
||||
}
|
||||
|
||||
.code-tooltip {
|
||||
box-shadow: none;
|
||||
border-radius: var(--border-radius);
|
||||
background-color: var(--code-bg-color);
|
||||
border-color: var(--border-color);
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
.code-tooltip input {
|
||||
outline: none;
|
||||
width: 20ch;
|
||||
}
|
||||
|
||||
.md-fences .code-tooltip {
|
||||
bottom: -1.8rem;
|
||||
padding: none;
|
||||
}
|
||||
|
||||
.md-fences.md-focus .cm-s-inner {
|
||||
/* Remove bottom right border radius when tooltip is shown */
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
/* code tooltip autocomplete list */
|
||||
|
||||
.autoComplt-hint {
|
||||
background-color: transparent !important;
|
||||
margin: 0 !important;
|
||||
padding: 0.125rem 0.375rem !important;
|
||||
color: var(--text-color) !important;
|
||||
line-height: var(--line-height) !important;
|
||||
height: 1.4rem !important;
|
||||
}
|
||||
|
||||
.autoComplt-hint-selected {
|
||||
background-color: var(--link-color) !important;
|
||||
color: var(--background-color) !important;
|
||||
}
|
||||
|
||||
/* basic styles */
|
||||
|
||||
.md-fences,
|
||||
code,
|
||||
tt {
|
||||
border: 1px solid var(--border-color);
|
||||
background-color: var(--code-bg-color);
|
||||
font-family: var(--monospace-font);
|
||||
font-size: var(--monospace-font-size);
|
||||
border-radius: .25rem;
|
||||
padding: 0 .125rem;
|
||||
line-height: var(--monospace-line-height);
|
||||
}
|
||||
|
||||
.md-fences {
|
||||
margin-bottom: 18px;
|
||||
margin-top: 15px;
|
||||
padding: 0.2em 1em;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 6px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--link-color);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Control UI (optional)
|
||||
*/
|
||||
|
||||
.outline-item:hover {
|
||||
color: var(--header-color);
|
||||
}
|
||||
|
||||
#write div.md-toc-tooltip {
|
||||
background-color: var(--background-color);
|
||||
}
|
||||
|
||||
95
themes/typora/ia_typora_night.css
Normal file
95
themes/typora/ia_typora_night.css
Normal file
@@ -0,0 +1,95 @@
|
||||
@import 'night/codeblock.dark.css';
|
||||
@import 'night/mermaid.dark.css';
|
||||
@import 'night/sourcemode.dark.css';
|
||||
@import 'ia_typora.css';
|
||||
|
||||
:root {
|
||||
--accented-background-color: #1e1e1e;
|
||||
--light-header-color: #dbdbdb; /* H1-H3 */
|
||||
--select-text-bg-color: #186a9a;
|
||||
--accent-color: #4f525a;
|
||||
--background-color: #101010;
|
||||
--font-color: #bbbcbc;
|
||||
--header-color: #bebebe; /* H4-H6 */
|
||||
--border-color: #232629;
|
||||
--link-color: #5584aa;
|
||||
--code-bg-color: #1c1a1a;
|
||||
--hover-bg-color: #050505;
|
||||
--control-text-color: var(--font-color);
|
||||
--side-bar-bg-color: var(--accented-background-color);
|
||||
--control-text-hover-color: var(--header-color);
|
||||
--item-hover-text-color: var(--header-color);
|
||||
--item-hover-bg-color: var(--hover-bg-color);
|
||||
--bg-color: var(--background-color);
|
||||
--text-color: var(--font-color);
|
||||
--meta-content-color: var(--accent-color);
|
||||
--md-char-color: var(--accent-color);
|
||||
--window-border: 1px solid rgba(0,0,0,.07);
|
||||
--active-file-bg-color: var(--hover-bg-color);
|
||||
}
|
||||
|
||||
.outline-item:hover {
|
||||
background-color: var(--hover-bg-color);
|
||||
}
|
||||
|
||||
#write {
|
||||
cursor: -webkit-image-set(url("night/cursor.png") 1x, url("night/cursor@2x.png") 2x) 8 8, auto;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
color: var(--light-header-color);
|
||||
}
|
||||
|
||||
mark {
|
||||
background: #b8b80a
|
||||
}
|
||||
|
||||
table tr:nth-child(2n),
|
||||
thead {
|
||||
background-color: #141313;
|
||||
}
|
||||
|
||||
sup.md-footnote {
|
||||
background-color: var(--code-bg-color);
|
||||
color: var(--font-color);
|
||||
}
|
||||
|
||||
/* right click menu */
|
||||
.context-menu {
|
||||
background-color: #141313;
|
||||
}
|
||||
|
||||
.context-menu.dropdown-menu .divider {
|
||||
background-color: #232629;
|
||||
}
|
||||
|
||||
/* focus mode */
|
||||
.on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) * {
|
||||
color: #4f525a !important;
|
||||
}
|
||||
|
||||
.on-focus-mode .md-end-block:not(.md-focus) img,
|
||||
.on-focus-mode .md-task-list-item:not(.md-focus-container)>input {
|
||||
opacity: #4f525a !important;
|
||||
}
|
||||
|
||||
.on-focus-mode li[cid]:not(.md-focus-container){
|
||||
color: #4f525a;
|
||||
}
|
||||
|
||||
.on-focus-mode .md-fences.md-focus .CodeMirror-code>*:not(.CodeMirror-activeline) *,
|
||||
.on-focus-mode .CodeMirror.cm-s-inner:not(.CodeMirror-focused) * {
|
||||
color: #4f525a !important;
|
||||
}
|
||||
|
||||
.on-focus-mode .md-focus,
|
||||
.on-focus-mode .md-focus-container {
|
||||
color: var(--light-header-color);
|
||||
}
|
||||
|
||||
.on-focus-mode #typora-source .CodeMirror-code>*:not(.CodeMirror-activeline) * {
|
||||
color: #4f525a !important;
|
||||
}
|
||||
|
||||
1
uninstall/app-fastfetch.sh
Normal file
1
uninstall/app-fastfetch.sh
Normal file
@@ -0,0 +1 @@
|
||||
sudo apt remove -y fastfetch
|
||||
1
uninstall/app-flameshot.sh
Normal file
1
uninstall/app-flameshot.sh
Normal file
@@ -0,0 +1 @@
|
||||
sudo apt remove -y flameshot
|
||||
1
uninstall/app-localsend.sh
Normal file
1
uninstall/app-localsend.sh
Normal file
@@ -0,0 +1 @@
|
||||
sudo apt remove -y localsend
|
||||
1
uninstall/app-steam.sh
Normal file
1
uninstall/app-steam.sh
Normal file
@@ -0,0 +1 @@
|
||||
sudo apt remove -y steam steam-launcher
|
||||
2
uninstall/app-typora.sh
Normal file
2
uninstall/app-typora.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
sudo apt remove typora
|
||||
rm -rf ~/.config/Typora
|
||||
1
uninstall/app-vlc.sh
Normal file
1
uninstall/app-vlc.sh
Normal file
@@ -0,0 +1 @@
|
||||
sudo apt remove -y vlc
|
||||
2
uninstall/docker.sh
Normal file
2
uninstall/docker.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
sudo apt purge --auto-remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
|
||||
sudo groupdel docker
|
||||
Reference in New Issue
Block a user