Skip to content

Instantly share code, notes, and snippets.

@lazanet
Last active May 14, 2024 09:02
Show Gist options
  • Save lazanet/3890f8de22d8c47aa852b93e5d62e168 to your computer and use it in GitHub Desktop.
Save lazanet/3890f8de22d8c47aa852b93e5d62e168 to your computer and use it in GitHub Desktop.
Script that sets up Ubuntu 22.04 to my liking
#!/usr/bin/env -S bash -e
set -o xtrace
function set_gnome_configuration {
# Disable Gnome animations
gsettings set org.gnome.desktop.interface enable-animations false
# Dock settings
gsettings set org.gnome.shell.extensions.dash-to-dock show-apps-at-top true
dconf write /org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size 24
dconf write /org/gnome/shell/extensions/dash-to-dock/multi-monitor true
# Add Sr1 EN Sr2 keyboard layouts
dconf write /org/gnome/desktop/input-sources/sources "[('xkb', 'rs+latin'), ('xkb', 'us'), ('xkb', 'rs')]"
# Enable Shift + Alt for switching keyboard layouts
gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Super>space', 'XF86Keyboard']"
gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Shift><Super>space', '<Shift>XF86Keyboard']"
gsettings set org.gnome.desktop.input-sources xkb-options "['grp_led:scroll', 'grp:alt_shift_toggle']"
gsettings set org.gnome.desktop.wm.preferences button-layout ":minimize,maximize,close"
# Change background
gsettings set org.gnome.desktop.background picture-uri "file:///usr/share/backgrounds/ubuntu_by_arman1992.jpg"
gsettings set org.gnome.desktop.background picture-uri-dark "file:///usr/share/backgrounds/ubuntu_by_arman1992.jpg"
# Enable dark theme
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-blue-dark'
# Setup terminal theme
profile_id=b1dcc9dd-5262-4d8d-a863-c897e6d979b9
dconf write /org/gnome/terminal/legacy/profiles:/:$profile_id/use-theme-colors false
dconf write /org/gnome/terminal/legacy/profiles:/:$profile_id/foreground-color "'#D3D3CFCFCDCD'"
dconf write /org/gnome/terminal/legacy/profiles:/:$profile_id/background-color "'#040405050404'"
dconf write /org/gnome/terminal/legacy/profiles:/:$profile_id/use-theme-transparency false
dconf write /org/gnome/terminal/legacy/profiles:/:$profile_id/use-transparent-background true
dconf write /org/gnome/terminal/legacy/profiles:/:$profile_id/background-transparency-percent 20
# Setup gedit theme
gsettings set org.gnome.gedit.preferences.editor display-line-numbers true
gsettings set org.gnome.gedit.preferences.editor scheme 'solarized-dark'
dconf write /org/gnome/gedit/preferences/editor/tabs-size "uint32 4"
# Top bar tweaks
gsettings set org.gnome.desktop.interface clock-show-seconds true
gsettings set org.gnome.desktop.interface show-battery-percentage true
dconf write /org/gnome/desktop/sound/allow-volume-above-100-percent true
# Configure workspaces
gsettings set org.gnome.mutter dynamic-workspaces false
gsettings set org.gnome.desktop.wm.preferences num-workspaces 2
gsettings set org.gnome.mutter workspaces-only-on-primary false
gsettings set org.gnome.shell.extensions.dash-to-dock isolate-workspaces true
gsettings set org.gnome.shell disable-extension-version-validation true
}
function gnome_extensions {
pushd $(mktemp -d)
wget -O gnome-shell-extension-installer "https://github.com/brunelli/gnome-shell-extension-installer/raw/master/gnome-shell-extension-installer"
chmod +x gnome-shell-extension-installer
./gnome-shell-extension-installer 906 # https://extensions.gnome.org/extension/906/sound-output-device-chooser/
./gnome-shell-extension-installer 1319 # https://extensions.gnome.org/extension/1319/gsconnect/
popd
}
function set_dash_to_panel {
pushd $(mktemp -d)
wget -O gnome-shell-extension-installer "https://github.com/brunelli/gnome-shell-extension-installer/raw/master/gnome-shell-extension-installer"
chmod +x gnome-shell-extension-installer
./gnome-shell-extension-installer 1160 # https://extensions.gnome.org/extension/1160/dash-to-panel/
popd
gsettings set org.gnome.shell.extensions.dash-to-panel appicon-margin 2
gsettings set org.gnome.shell.extensions.dash-to-panel appicon-padding 6
gsettings set org.gnome.shell.extensions.dash-to-panel panel-sizes '{"0":48,"1":48}'
gsettings set org.gnome.shell.extensions.dash-to-panel panel-positions '{"0":"LEFT","1":"LEFT"}'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-style-unfocused 'DOTS'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-style-focused 'DOTS'
gsettings set org.gnome.shell.extensions.dash-to-panel trans-use-custom-opacity true
gsettings set org.gnome.shell.extensions.dash-to-panel trans-panel-opacity 0.9
gsettings set org.gnome.shell.extensions.dash-to-panel isolate-workspaces true
gsettings set org.gnome.shell.extensions.dash-to-panel click-action 'TOGGLE-SHOWPREVIEW'
gsettings set org.gnome.shell.extensions.dash-to-panel hot-keys true
}
function unsnap {
# Unsnap this SOB
pushd $(mktemp -d)
wget https://github.com/popey/unsnap/archive/refs/heads/main.zip
unzip main.zip
cd unsnap-main
./unsnap auto
popd
}
function apt_packages {
set -e
sudo apt update
sudo apt clean
sudo apt -y autoremove
# Add kisak-mesa repository
sudo dpkg --add-architecture i386
sudo add-apt-repository -y ppa:kisak/kisak-mesa
# Add VSCode repository
pushd $(mktemp -d)
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/microsoft-archive-keyring.gpg
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
popd
sudo apt update && sudo apt -y upgrade
sudo apt -y install libgl1-mesa-dri:i386 mesa-vulkan-drivers mesa-vulkan-drivers:i386
sudo apt -y install curl gpg vlc cheese neofetch gnome-tweaks gnome-shell-extension-manager build-essential git code steam cifs-utils rar remmina sqlitebrowser baobab fzf mc
pushd $(mktemp -d)
wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
sudo apt -y install ./teamviewer_amd64.deb
popd
pushd $(mktemp -d)
wget https://mega.nz/linux/repo/xUbuntu_22.04/amd64/megasync-xUbuntu_22.04_amd64.deb
sudo apt -y install ./megasync-xUbuntu_22.04_amd64.deb
popd
pushd $(mktemp -d)
wget https://zoom.us/client/latest/zoom_amd64.deb
sudo apt -y install ./zoom_amd64.deb
popd
}
function flatpak_packages {
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install -y flathub org.onlyoffice.desktopeditors com.jetbrains.IntelliJ-IDEA-Community com.jetbrains.PyCharm-Community com.google.AndroidStudio
xdg-settings set default-web-browser org.mozilla.firefox.desktop
}
function set_term_configuration {
echo "export PS1=\"\[\033[01;34m\]\w\[\033[36m\]\$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/')\[\033[00m\]\$ \"" >> ~/.bashrc
echo "source /usr/share/doc/fzf/examples/key-bindings.bash" >> ~/.bashrc
echo "neofetch" >> ~/.bashrc
}
function add_dock_icons {
# Add dock icons
gsettings set org.gnome.shell favorite-apps "['org.mozilla.firefox.desktop', 'org.gnome.Nautilus.desktop', 'snap-store_ubuntu-software.desktop', 'org.gnome.Terminal.desktop', 'code.desktop', 'steam.desktop', 'com.teamviewer.TeamViewer.desktop', 'vlc.desktop', 'org.onlyoffice.desktopeditors.desktop', 'com.jetbrains.IntelliJ-IDEA-Community.desktop', 'com.jetbrains.PyCharm-Community.desktop', 'com.google.AndroidStudio.desktop']"
}
function install_sdkman {
# Install sdkman!
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 22.3.r19-grl
sdk install maven
sdk install gradle
}
set_gnome_configuration
gnome_extensions
# set_dash_to_panel
unsnap
apt_packages
flatpak_packages
set_term_configuration
add_dock_icons
install_sdkman
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment