Last active
April 9, 2025 05:57
-
-
Save techgeek1/0319a3bb4eac7210ea1dfc8c5c60b099 to your computer and use it in GitHub Desktop.
Configuration script for my Endeavour OS systems.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# --- Packages --- | |
# NOTE: I've noticed some issues where installs may fail if rapidly queued, to prevent this | |
# an artificial delay is inserted since this seems to make the behavior much more | |
# predictable | |
# Some operations seem to fail if time is not given for the system to do some kind of | |
# processing under the hood, so we insert artificial delays to help the process along | |
# for some operations. | |
function sync() { | |
sleep 0.2 | |
} | |
# Silently install a package by name using yay. | |
function install() { | |
# Sync prior to install. | |
sync | |
yay -S --sudoloop --answerclean None --answerdiff None --noconfirm --cleanafter $1 | |
} | |
# Silently install a package by name via a clean rebuild using yay. | |
function install_clean() { | |
# Sync prior to install. | |
sync | |
yay -S --sudoloop --answerclean All --answerdiff None --noconfirm --cleanafter $1 | |
} | |
# Silently install a package by name using flatpak. | |
function install_flatpak() { | |
# Sync prior to install. | |
sync | |
flatpak install --noninteractive $1 | |
} | |
# Silently install an AppImage package from a name + url | |
function install_appimage() { | |
# Sync prior to install. | |
sync | |
# Fetch the application to the bin directory. | |
wget -O ~/.local/bin/$1.AppImage "$2" | |
# Mark as executable | |
chmod +x ~/.local/bin/$1.AppImage | |
# Integrate the application. | |
ail-cli integrate ~/.local/bin/$1.AppImage | |
} | |
# Install `gdb-frontend` manually from the git repository. | |
function install_gdb_frontend() { | |
# Sync prior to install. | |
sync | |
# Install dependencies. | |
install gdb | |
install tmux | |
# Clone the repository into the desired location | |
git clone https://github.com/techgeek1/gdb-frontend ~/.local/bin/gdb-frontend | |
# Add the update and uninstall scripts for the application. | |
cat > ~/.local/bin/gdb-frontend/gdb-frontend.update.sh << EOL | |
# Update is likewise quite simple, just sync the repository. | |
cd ~/.local/bin/gdb-frontend | |
git pull | |
EOL | |
cat > ~/.local/bin/gdb-frontend/gdb-frontend.uninstall.sh << EOL | |
# Uninstall is simple, nuke everything. | |
# | |
# We'll leave the dependencies just because we might use them again. | |
rm -rf ~/.local/bin/gdb-frontend | |
rm -f ~/.local/share/applications/gdb-frontend.desktop | |
EOL | |
# Mark scripts as executable | |
chmod +x ~/.local/bin/gdb-frontend/gdb-frontend.update.sh | |
chmod +x ~/.local/bin/gdb-frontend/gdb-frontend.uninstall.sh | |
# Add the .desktop files for the application. | |
cat > ~/.local/share/applications/gdb-frontend.desktop << EOL | |
[Desktop Entry] | |
Name=GDB Frontend | |
Comment=A graphical debugger frontend for GDB | |
Type=Application | |
Exec=/home/techgeek1/.local/bin/gdb-frontend/gdbfrontend | |
Icon=/home/techgeek1/.local/bin/gdb-frontend/docs/media/gdbfrontend-icon.png | |
Keywords=gdb;debugger;debug;application;development | |
Terminal=false | |
Categories=Development; | |
Actions=Update;Uninstall; | |
[Desktop Action Update] | |
Name=Update GDB Frontend | |
Exec=/home/techgeek1/.local/bin/gdb-frontend/gdb-frontend.uninstall.sh | |
[Desktop Action Uninstall] | |
Name=Uninstall GDB Frontend | |
Exec=/home/techgeek1/.local/bin/gdb-frontend/gdb-frontend.uninstall.sh | |
EOL | |
update-desktop-database ~/.local/share/applications | |
} | |
# System Utilities | |
install dconf-editor | |
install 7zip encfs | |
install flatpak | |
install appimagelauncher | |
install zsh | |
install zsh-antidote | |
install oh-my-posh | |
install timeshift | |
install synology-drive | |
# Add the font we'll need to for terminal themeing. | |
oh-my-posh font install RobotoMono | |
# Quickly configure the appimage launcher for later. | |
cat > ~/.config/appimagelauncher.cfg << EOL | |
[AppImageLauncher] | |
ask_to_move=true | |
destination=~/.local/bin | |
enable_daemon=true | |
EOL | |
# Applications | |
install chromium | |
install vlc | |
install gimp | |
install obsidian | |
install lunacy | |
install steam | |
install baobab | |
install decibels | |
install geary | |
install gnome-weather | |
install gnome-calendar | |
install_clean ibus-mozc | |
# Dev Tools | |
install code | |
install renderdoc | |
install spirv-tools | |
install vulkan-tools | |
install vulkan-headers | |
install vulkan-icd-loader | |
install vulkan-validation-layers | |
install vulkan-extra-tools | |
install rustup | |
install valgrind | |
install heaptrack | |
install hotspot-appimage | |
# GDB Frontend is a pain but we solved that problem. | |
install_gdb_frontend | |
# Proprietary Applications | |
install_flatpak com.discordapp.Discord | |
install_flatpak spotify | |
# For some reason this doesn't like to install between the rest, so we do it last after a delay. | |
install_appimage OneFolder https://github.com/OneFolderApp/OneFolder/releases/download/v1.0.14/OneFolder-1.0.14.AppImage | |
# --- GNOME Extensions --- | |
# Install the `date-menu-formatter` GNOME extension from a github repository | |
function install_git_extension() { | |
# Start working in a temp directory. | |
mkdir ~/.tg1-tmp | |
cd ~/.tg1-tmp | |
# Clone the repository | |
git clone "$2" | |
# Zip up the extension for install | |
zip -r "$1.zip" $1 | |
# Install the extension | |
gnome-extensions install "$1.zip" | |
# Clean up after ourselves | |
cd ~/ | |
rm -rf ~/.tg1-tmp | |
} | |
install gnome-browser-connector-git | |
install gnome-extensions-cli | |
install gnome-menus | |
install adwaita-colors-icon-theme | |
install morewaita-icon-theme | |
# Install Appindicator | |
gext -F install 615 | |
# Install ArcMenu | |
gext -F install 3628 | |
# Install Clipboard History | |
gext -F install 4839 | |
# Install Dash-To-Panel | |
gext -F install 1160 | |
# Install Rounded Window Corners Reborn | |
gext -F install 7048 | |
# Install Tiling Shell | |
gext -F install 7065 | |
# Install Tweaks & Extensions In System Menu | |
gext -F install 1653 | |
# Install V-Shell | |
gext -F install 5177 | |
# Install Date Menu Formatter | |
install_git_extension date-menu-formatter https://github.com/marcinjakubowski/date-menu-formatter | |
# Install Auto Adwaita Colors | |
install_git_extension auto-adwaita-colors https://github.com/celiopy/auto-adwaita-colors | |
# Appindicator is technically not updated, but it works so let's force enable it | |
# by modifiying the configuration | |
sudo sed -i 's/47/48/' ~/.local/share/gnome-shell/extensions/[email protected]/metadata.json | |
# --- GNOME Customizations --- | |
SCHEMA_DIR="" | |
SCHEMA="" | |
# Set the location of the active schema. | |
function dconf_set_schema_dir() { | |
SCHEMA_DIR=$1 | |
} | |
# Set the active schema. | |
function dconf_set_schema() { | |
SCHEMA=$1 | |
} | |
# Set a dconf value for an extension using the active schema dir and schema. | |
function dconf_set() { | |
gsettings --schemadir $SCHEMA_DIR set $SCHEMA $1 "$2" | |
} | |
# Set a dconf value for the system using the active schema. | |
function dconf_set_sys() { | |
gsettings set $SCHEMA $1 "$2" | |
} | |
dconf_set_schema org.gtk.Settings.FileChooser | |
dconf_set_sys clock-format 24h | |
dconf_set_schema org.gtk.gtk4.Settings.FileChooser | |
dconf_set_sys show-hidden true | |
dconf_set_sys sort-directories-first true | |
dconf_set_schema org.gnome.Console | |
dconf_set_sys use-system-font false | |
dconf_set_sys custom-font 'RobotoMono Nerd Font 11' | |
dconf_set_sys transparency true | |
dconf_set_schema org.gnome.desktop.default-applications.terminal | |
dconf_set_sys exec kgx | |
dconf_set_schema org.gnome.desktop.interface | |
dconf_set_sys accent-color teal | |
dconf_set_sys clock-format 24h | |
dconf_set_sys clock-show-seconds false | |
dconf_set_sys clock-show-weekday false | |
dconf_set_sys color-scheme prefer-dark | |
dconf_set_sys enable-animations true | |
dconf_set_sys enable-hot-corners true | |
dconf_set_schema org.gnome.desktop.wm.preferences | |
dconf_set_sys button-layout appmenu:minimize,maximize,close | |
dconf_set_schema org.gnome.nautilus.list-view | |
dconf_set_sys default-zoom-level small | |
dconf_set_schema org.gnome.nautilus.preferences | |
dconf_set_sys default-folder-viewer list-view | |
dconf_set_sys date-time-format detailed | |
dconf_set_sys show-hidden-files true | |
dconf_set_schema org.gnome.shell | |
dconf_set_sys enabled-extensions "['[email protected]', '[email protected]', 'rounded-window-corners@fxgn', '[email protected]', '[email protected]', '[email protected]', 'auto-adwaita-colors@celiopy', '[email protected]', '[email protected]']" | |
dconf_set_schema org.gnome.SessionManager | |
dconf_set_sys auto-save-session true | |
dconf_set_schema org.gnome.Terminal.Legacy.Keybindings:/org/gnome/terminal/legacy/keybindings/ | |
dconf_set_sys copy '<Primary>c' | |
dconf_set_sys paste '<Primary>v' | |
dconf_set_sys find '<Primary>f' | |
# --- GNOME Extension Customizations --- | |
dconf_set_schema_dir ~/.local/share/gnome-shell/extensions/[email protected]/schemas | |
dconf_set_schema org.gnome.shell.extensions.arcmenu | |
dconf_set activate-on-hover true | |
dconf_set all-apps-button-action All_Programs | |
dconf_set apps-show-extra-details false | |
dconf_set arc-menu-icon 55 | |
dconf_set custom-menu-button-icon-size 24.0 | |
dconf_set enable-horizontal-flip true | |
dconf_set menu-button-icon Menu_Icon | |
dconf_set menu-layout Default | |
dconf_set searchbar-default-top-location 'Top' | |
dconf_set searchbar-default-bottom-location 'Top' | |
dconf_set position-in-panel Left | |
dconf_set runner-hotkey "['<Super>r']" | |
dconf_set runner-hotkey-open-primary-monitor true | |
dconf_set show-activities-button false | |
dconf_set show-category-sub-menus false | |
dconf_set vert-separator true | |
dconf_set pinned-apps "[{'id': 'com.spotify.Client.desktop'}, {'id': 'firefox.desktop'}, {'id': 'chromium.desktop'}, {'id': 'obsidian.desktop'}, {'id': 'lunacy.desktop'}, {'id': 'code-oss.desktop'}, {'id': 'renderdoc.desktop'}, {'id': 'org.gnome.Console.desktop'}, {'id': 'org.kde.heaptrack.desktop'}, {'id': 'hotspot.desktop'}]" | |
dconf_set_schema_dir ~/.local/share/gnome-shell/extensions/[email protected]/schemas | |
dconf_set_schema org.gnome.shell.extensions.clipboard-history | |
dconf_set disable-down-arrow true | |
dconf_set display-mode 0 | |
dconf_set history-size 100 | |
dconf_set window-width-percentage 17 | |
dconf_set_schema_dir ~/.local/share/gnome-shell/extensions/[email protected]/schemas | |
dconf_set_schema org.gnome.shell.extensions.dash-to-panel | |
dconf_set animate-appicon-hover true | |
dconf_set animate-appicon-hover-animation-rotation "{'SIMPLE': 0, 'RIPPLE': 10, 'PLANK': 0}" | |
dconf_set animate-appicon-hover-animation-travel "{'SIMPLE': 0.070000000000000007, 'RIPPLE': 0.40000000000000002, 'PLANK': 0.0}" | |
dconf_set animate-appicon-hover-animation-zoom "{'SIMPLE': 1.0700000000000001, 'RIPPLE': 1.25, 'PLANK': 2.0}" | |
dconf_set animate-appicon-hover-animation-type 'SIMPLE' | |
dconf_set appicon-margin 4 | |
dconf_set appicon-padding 16 | |
dconf_set appicon-style 'NORMAL' | |
dconf_set dot-color-dominant true | |
dconf_set dot-color-override false | |
dconf_set dot-color-unfocused-different false | |
dconf_set dot-position 'LEFT' | |
dconf_set dot-size 3 | |
dconf_set dot-style-focused 'METRO' | |
dconf_set dot-style-unfocused 'METRO' | |
dconf_set focus-highlight-dominant true | |
dconf_set focus-highlight-opacity 40 | |
dconf_set global-border-radius 1 | |
dconf_set group-apps true | |
dconf_set highlight-appicon-hover true | |
dconf_set highlight-appicon-hover-background-color 'rgba(238,238,236,0.1)' | |
dconf_set highlight-appicon-hover-border-radius 8 | |
dconf_set hot-keys false | |
dconf_set hotkeys-overlay-combo 'TEMPORARILY' | |
dconf_set isolate-workspaces false | |
dconf_set panel-anchors '{"unknown-unknown":"MIDDLE"}' | |
dconf_set panel-element-positions '{"unknown-unknown":[{"element":"activitiesButton","visible":true,"position":"stackedTL"},{"element":"leftBox","visible":true,"position":"stackedTL"},{"element":"showAppsButton","visible":false,"position":"stackedTL"},{"element":"systemMenu","visible":true,"position":"stackedTL"},{"element":"taskbar","visible":true,"position":"centerMonitor"},{"element":"centerBox","visible":false,"position":"centerMonitor"},{"element":"rightBox","visible":true,"position":"stackedBR"},{"element":"dateMenu","visible":true,"position":"stackedTL"},{"element":"desktopButton","visible":false,"position":"stackedBR"}]}' | |
dconf_set panel-element-positions-monitors-sync true | |
dconf_set panel-lengths '{"unknown-unknown":100}' | |
dconf_set panel-positions '{"unknown-unknown":"LEFT"}' | |
dconf_set panel-side-margins 0 | |
dconf_set panel-sizes '{"unknown-unknown":48}' | |
dconf_set panel-top-bottom-margins 0 | |
dconf_set panel-top-bottom-padding 0 | |
dconf_set preview-custom-opacity 85 | |
dconf_set preview-use-custom-opacity true | |
dconf_set progress-show-count true | |
dconf_set scroll-icon-action 'NOTHING' | |
dconf_set scroll-panel-action 'SWITCH_WORKSPACE' | |
dconf_set secondarymenu-contains-showdetails false | |
dconf_set show-favorites false | |
dconf_set show-running-apps true | |
dconf_set show-showdesktop-hover true | |
dconf_set show-window-previews-timeout 250 | |
dconf_set stockgs-force-hotcorner false | |
dconf_set stockgs-keep-dash false | |
dconf_set stockgs-keep-top-panel false | |
dconf_set stockgs-panelbtn-click-only false | |
dconf_set trans-bg-color '#1b1b1b' | |
dconf_set trans-panel-opacity 0.84999999999999998 | |
dconf_set trans-use-custom-bg false | |
dconf_set trans-use-custom-gradient false | |
dconf_set trans-use-custom-opacity true | |
dconf_set tray-size 0 | |
dconf_set window-preview-fixed-x true | |
dconf_set window-preview-show-title true | |
dconf_set window-preview-title-position 'TOP' | |
dconf_set_schema_dir ~/.local/share/gnome-shell/extensions/rounded-window-corners@fxgn/schemas | |
dconf_set_schema org.gnome.shell.extensions.rounded-window-corners-reborn | |
dconf_set border-width 0 | |
dconf_set enable-preferences-entry false | |
dconf_set focused-shadow "{'verticalOffset': 4, 'horizontalOffset': 4, 'blurOffset': 16, 'spreadRadius': 0, 'opacity': 65}" | |
dconf_set global-rounded-corner-settings "{'padding': <{'left': uint32 1, 'right': 1, 'top': 1, 'bottom': 1}>, 'keepRoundedCorners': <{'maximized': false, 'fullscreen': false}>, 'borderRadius': <uint32 8>, 'smoothing': <0.0>, 'borderColor': <(0.46666666865348816, 0.46274510025978088, 0.48235294222831726, 1.0)>, 'enabled': <true>}" | |
dconf_set tweak-kitty-terminal false | |
dconf_set unfocused-shadow "{'verticalOffset': 4, 'horizontalOffset': 4, 'blurOffset': 8, 'spreadRadius': -1, 'opacity': 60}" | |
dconf_set_schema_dir ~/.local/share/gnome-shell/extensions/[email protected]/schemas | |
dconf_set_schema org.gnome.shell.extensions.tilingshell | |
dconf_set active-screen-edges false | |
dconf_set inner-gaps 6 | |
dconf_set outer-gaps 6 | |
dconf_set top-edge-maximize false | |
dconf_set snap-assistant-animation-time 100 | |
dconf_set override-window-menu false | |
dconf_set show-indicator false | |
dconf_set_schema_dir ~/.local/share/gnome-shell/extensions/[email protected]/schemas | |
dconf_set_schema org.gnome.shell.extensions.date-menu-formatter | |
dconf_set font-size 9 | |
dconf_set pattern 'H:mm\n────\nEEEE\nMM/dd\ny' | |
dconf_set text-align center | |
dconf_set_schema_dir ~/.local/share/gnome-shell/extensions/[email protected]/schemas | |
dconf_set_schema org.gnome.shell.extensions.appindicator | |
dconf_set icon-size 16 | |
dconf_set legacy-tray-enabled true | |
dconf_set tray-pos 'right' | |
# --- Configure --- | |
# Set ZSH as the default shell. | |
chsh -s $(which zsh) | |
# Add the ZSH config. | |
cat > ~/.zshrc << EOL | |
# Lines configured by zsh-newuser-install | |
HISTFILE=~/.zsh_history | |
HISTSIZE=1000 | |
SAVEHIST=1000 | |
bindkey -e | |
# End of lines configured by zsh-newuser-install | |
# The following lines were added by compinstall | |
zstyle :compinstall filename '/home/techgeek1/.zshrc' | |
autoload -Uz compinit | |
compinit | |
# End of lines added by compinstall | |
# Force terminal to English, Japanese renders weird and is often auto translated which sucks. | |
LANG=C | |
# Sanitize an input directory to an absolute path. | |
function absdir () { | |
case \$1 in | |
# Path starts from root, we don't need to do anything. | |
/* ) echo "\$1";; | |
# Path starts from home, expand. | |
~* ) echo "\$PWD/\$1";; | |
# Path has no known match, must be relative | |
* ) echo "\$PWD/\$1";; | |
esac | |
} | |
# Make an encrypted directory at `\$path`. | |
function make-lock-dir() { | |
# Extract the directory parent and name. | |
local LOCK_PATH="\$(absdir \$1)" | |
local LOCK_PARENT="\$(dirname \$LOCK_PATH)" | |
local LOCK_DIR="\$(basename \$LOCK_PATH)" | |
# Create the new mount point and it's hidden encrypted container. | |
mkdir "\$LOCK_PARENT/.\$LOCK_DIR" "\$LOCK_PARENT/\$LOCK_DIR" | |
# Setup encryption for the directory | |
encfs "\$LOCK_PARENT/.\$LOCK_DIR" "\$LOCK_PARENT/\$LOCK_DIR" | |
} | |
# Unlock an encrypted directory at `\$path`. | |
function unlock-dir () { | |
# Extract the directory parent and name. | |
local LOCK_PATH="\$(absdir \$1)" | |
local LOCK_PARENT="\$(dirname \$LOCK_PATH)" | |
local LOCK_DIR="\$(basename \$LOCK_PATH)" | |
# Access the encrypted directory. | |
encfs "\$LOCK_PARENT/.\$LOCK_DIR" "\$LOCK_PARENT/\$LOCK_DIR" | |
} | |
# Lock an encrypted directory at `\$path`. | |
function lock-dir () { | |
# Unmount the encrypted directory. | |
fusermount -u \$1 | |
} | |
# Setup better selection for the current line. | |
zsh-select-current-line () { | |
(( CURSOR=0 )) | |
(( MARK=$#BUFFER )) | |
(( REGION_ACTIVE=1 )) | |
} | |
zle -N zsh-select-current-line | |
# Modify the keybindings to something more normal. | |
bindkey "^A" zsh-select-current-line | |
bindkey "^[[3~" backward-delete-char | |
bindkey "^[[H" beginning-of-line | |
bindkey "^[[F" end-of-line | |
bindkey "^[[1;5C" forward-word | |
bindkey "^[[1;5D" backward-word | |
# Source antidote | |
source /usr/share/zsh-antidote/antidote.zsh | |
# Initialize plugins statically with \${ZDOTDIR:-~}/.zsh_plugins | |
antidote load | |
# Configure Oh-My-Posh with our desired styling. | |
eval "\$(oh-my-posh init zsh --config '~/.zsh_style.json')" | |
EOL | |
# Setup ZSH plugins | |
cat > ~/.zsh_plugins.txt << EOL | |
# Shift + Arrow selection, we definitely want this. | |
jirutka/zsh-shift-select | |
EOL | |
# Setup the shell theme. | |
cat > ~/.zsh_style.json << EOL | |
{ | |
"\$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", | |
"blocks": [ | |
{ | |
"alignment": "left", | |
"segments": [ | |
{ | |
"background": "#ffe9aa", | |
"foreground": "#1d2023", | |
"powerline_symbol": "\ue0b0", | |
"style": "powerline", | |
"template": " \uf0e7 ", | |
"type": "root" | |
}, | |
{ | |
"background": "#f7f7f7", | |
"foreground": "#1d2023", | |
"powerline_symbol": "\ue0b0", | |
"style": "powerline", | |
"template": " {{ .UserName }} ", | |
"type": "session" | |
}, | |
{ | |
"background": "#3ec4e6", | |
"foreground": "#1d2023", | |
"powerline_symbol": "\ue0b0", | |
"properties": { | |
"folder_icon": "\uf115", | |
"folder_separator_icon": " \ue0b1 ", | |
"style": "full" | |
}, | |
"style": "powerline", | |
"template": " {{ .Path }} ", | |
"type": "path" | |
}, | |
{ | |
"background": "#95ffa4", | |
"foreground": "#193549", | |
"powerline_symbol": "\ue0b0", | |
"style": "powerline", | |
"template": " {{ .HEAD }} ", | |
"type": "git" | |
}, | |
{ | |
"background": "#ff8080", | |
"foreground": "#f7f7f7", | |
"powerline_symbol": "\ue0b0", | |
"style": "powerline", | |
"template": " \ue20f ", | |
"type": "status" | |
} | |
], | |
"type": "prompt" | |
}, | |
{ | |
"alignment": "left", | |
"newline": false, | |
"segments": [ | |
{ | |
"foreground": "#f7f7f7", | |
"style": "plain", | |
"template": "\u276f ", | |
"type": "text" | |
} | |
], | |
"type": "prompt" | |
} | |
], | |
"version": 3 | |
} | |
EOL | |
# Setup the document templates we want for nautilus. | |
touch ~/Templates/File | |
touch ~/Templates/Document.txt | |
touch ~/Templates/Script.sh | |
# Install a policy for firefox with our usual extensions | |
sudo mkdir /etc/firefox | |
sudo mkdir /etc/firefox/policies | |
sudo sh -c "cat >/etc/firefox/policies/policies.json" << EOL | |
{ | |
"policies": { | |
"Extensions": { | |
"Install": [ | |
"https://addons.mozilla.org/firefox/downloads/file/3551054/ublock_origin-latest.xpi", | |
"https://addons.mozilla.org/firefox/downloads/file/4298614/tab_session_manager-latest.xpi", | |
"https://addons.mozilla.org/firefox/downloads/file/4302486/send_to_pocketbook-latest.xpi", | |
"https://addons.mozilla.org/firefox/downloads/file/4089098/infinity-latest.xpi", | |
"https://addons.mozilla.org/firefox/downloads/file/4451103/sponsorblock-latest.xpi", | |
"https://addons.mozilla.org/firefox/downloads/file/4339643/youtube_screenshot_button-latest.xpi", | |
"https://addons.mozilla.org/firefox/downloads/file/4389607/adblock_for_youtube-latest.xpi" | |
] | |
}, | |
"ExtensionUpdate": true, | |
"DisableTelemetry": true, | |
"DisableFirefoxStudies": true, | |
"EnableTrackingProtection": { | |
"Value": true, | |
"Locked": false, | |
"Cryptomining": true, | |
"Fingerprinting": true, | |
"EmailTracking": true, | |
"Exceptions": [] | |
} | |
} | |
} | |
EOL | |
# Install the nightly Rust toolchain since we use that often. | |
rustup toolchain install nightly | |
# Rename a bunch of applications because I'm a pedant. | |
sudo sed -i 's/Code - OSS/Visual Studio Code/' /usr/share/applications/code-oss.desktop | |
sudo sed -i 's/Steam (Runtime)/Steam/' /usr/share/applications/steam.desktop | |
# Add the startup applications. | |
mkdir ~/.config/autostart | |
sudo cp /usr/share/applications/steam.desktop ~/.config/autostart/steam.desktop | |
sudo cp /var/lib/flatpak/app/com.discordapp.Discord/current/active/files/share/applications/com.discordapp.Discord.desktop ~/.config/autostart/com.discordapp.Discord.desktop | |
# Remove firewall applet because we don't care about it. | |
sudo rm /etc/xdg/autostart/firewall-applet.desktop | |
# Configure the default applications. | |
cat > ~/.config/mimeapps.list << EOL | |
[Default Applications] | |
x-scheme-handler/http=firefox.desktop | |
application/xhtml+xml=firefox.desktop | |
text/html=firefox.desktop | |
x-scheme-handler/https=firefox.desktop | |
audio/x-vorbis+ogg=org.gnome.Decibels.desktop | |
audio/mpeg=org.gnome.Decibels.desktop | |
audio/wav=org.gnome.Decibels.desktop | |
audio/x-aac=org.gnome.Decibels.desktop | |
audio/x-aiff=org.gnome.Decibels.desktop | |
audio/x-ape=org.gnome.Decibels.desktop | |
audio/x-flac=org.gnome.Decibels.desktop | |
audio/x-m4a=org.gnome.Decibels.desktop | |
audio/x-m4b=org.gnome.Decibels.desktop | |
audio/x-mp1=org.gnome.Decibels.desktop | |
audio/x-mp2=org.gnome.Decibels.desktop | |
audio/x-mp3=org.gnome.Decibels.desktop | |
audio/x-mpg=org.gnome.Decibels.desktop | |
audio/x-mpeg=org.gnome.Decibels.desktop | |
audio/x-mpegurl=org.gnome.Decibels.desktop | |
audio/x-opus+ogg=org.gnome.Decibels.desktop | |
audio/x-pn-aiff=org.gnome.Decibels.desktop | |
audio/x-pn-au=org.gnome.Decibels.desktop | |
audio/x-pn-wav=org.gnome.Decibels.desktop | |
audio/x-speex=org.gnome.Decibels.desktop | |
audio/x-vorbis=org.gnome.Decibels.desktop | |
audio/x-wavpack=org.gnome.Decibels.desktop | |
video/x-ogm+ogg=org.gnome.Totem.desktop | |
video/3gp=org.gnome.Totem.desktop | |
video/3gpp=org.gnome.Totem.desktop | |
video/3gpp2=org.gnome.Totem.desktop | |
video/dv=org.gnome.Totem.desktop | |
video/divx=org.gnome.Totem.desktop | |
video/fli=org.gnome.Totem.desktop | |
video/flv=org.gnome.Totem.desktop | |
video/mp2t=org.gnome.Totem.desktop | |
video/mp4=org.gnome.Totem.desktop | |
video/mp4v-es=org.gnome.Totem.desktop | |
video/mpeg=org.gnome.Totem.desktop | |
video/mpeg-system=org.gnome.Totem.desktop | |
video/msvideo=org.gnome.Totem.desktop | |
video/ogg=org.gnome.Totem.desktop | |
video/quicktime=org.gnome.Totem.desktop | |
video/vivo=org.gnome.Totem.desktop | |
video/vnd.avi=org.gnome.Totem.desktop | |
video/vnd.divx=org.gnome.Totem.desktop | |
video/vnd.rn-realvideo=org.gnome.Totem.desktop | |
video/vnd.vivo=org.gnome.Totem.desktop | |
video/webm=org.gnome.Totem.desktop | |
video/x-anim=org.gnome.Totem.desktop | |
video/x-avi=org.gnome.Totem.desktop | |
video/x-flc=org.gnome.Totem.desktop | |
video/x-fli=org.gnome.Totem.desktop | |
video/x-flic=org.gnome.Totem.desktop | |
video/x-flv=org.gnome.Totem.desktop | |
video/x-m4v=org.gnome.Totem.desktop | |
video/x-matroska=org.gnome.Totem.desktop | |
video/x-mjpeg=org.gnome.Totem.desktop | |
video/x-mpeg=org.gnome.Totem.desktop | |
video/x-mpeg2=org.gnome.Totem.desktop | |
video/x-ms-asf=org.gnome.Totem.desktop | |
video/x-ms-asf-plugin=org.gnome.Totem.desktop | |
video/x-ms-asx=org.gnome.Totem.desktop | |
video/x-msvideo=org.gnome.Totem.desktop | |
video/x-ms-wm=org.gnome.Totem.desktop | |
video/x-ms-wmv=org.gnome.Totem.desktop | |
video/x-ms-wmx=org.gnome.Totem.desktop | |
video/x-ms-wvx=org.gnome.Totem.desktop | |
video/x-nsv=org.gnome.Totem.desktop | |
video/x-theora=org.gnome.Totem.desktop | |
video/x-theora+ogg=org.gnome.Totem.desktop | |
video/x-totem-stream=org.gnome.Totem.desktop | |
image/jpeg=org.gnome.Loupe.desktop | |
image/png=org.gnome.Loupe.desktop | |
image/gif=org.gnome.Loupe.desktop | |
image/webp=org.gnome.Loupe.desktop | |
image/tiff=org.gnome.Loupe.desktop | |
image/x-tga=org.gnome.Loupe.desktop | |
image/vnd-ms.dds=org.gnome.Loupe.desktop | |
image/x-dds=org.gnome.Loupe.desktop | |
image/bmp=org.gnome.Loupe.desktop | |
image/vnd.microsoft.icon=org.gnome.Loupe.desktop | |
image/vnd.radiance=org.gnome.Loupe.desktop | |
image/x-exr=org.gnome.Loupe.desktop | |
image/x-portable-bitmap=org.gnome.Loupe.desktop | |
image/x-portable-graymap=org.gnome.Loupe.desktop | |
image/x-portable-pixmap=org.gnome.Loupe.desktop | |
image/x-portable-anymap=org.gnome.Loupe.desktop | |
image/x-qoi=org.gnome.Loupe.desktop | |
image/qoi=org.gnome.Loupe.desktop | |
image/svg+xml=org.gnome.Loupe.desktop | |
image/svg+xml-compressed=org.gnome.Loupe.desktop | |
image/avif=org.gnome.Loupe.desktop | |
image/heic=org.gnome.Loupe.desktop | |
image/jxl=org.gnome.Loupe.desktop | |
x-scheme-handler/mailto=org.gnome.Geary.desktop | |
application/json=code-oss.desktop | |
[Added Associations] | |
x-scheme-handler/http=firefox.desktop;chromium.desktop; | |
application/xhtml+xml=firefox.desktop;chromium.desktop; | |
text/html=firefox.desktop;chromium.desktop; | |
x-scheme-handler/https=firefox.desktop;chromium.desktop; | |
audio/mpeg=org.gnome.Decibels.desktop; | |
audio/wav=org.gnome.Decibels.desktop; | |
audio/x-aac=org.gnome.Decibels.desktop; | |
audio/x-aiff=org.gnome.Decibels.desktop; | |
audio/x-ape=org.gnome.Decibels.desktop; | |
audio/x-flac=org.gnome.Decibels.desktop; | |
audio/x-m4a=org.gnome.Decibels.desktop; | |
audio/x-m4b=org.gnome.Decibels.desktop; | |
audio/x-mp1=org.gnome.Decibels.desktop; | |
audio/x-mp2=org.gnome.Decibels.desktop; | |
audio/x-mp3=org.gnome.Decibels.desktop; | |
audio/x-mpg=org.gnome.Decibels.desktop; | |
audio/x-mpeg=org.gnome.Decibels.desktop; | |
audio/x-mpegurl=org.gnome.Decibels.desktop; | |
audio/x-opus+ogg=org.gnome.Decibels.desktop; | |
audio/x-pn-aiff=org.gnome.Decibels.desktop; | |
audio/x-pn-au=org.gnome.Decibels.desktop; | |
audio/x-pn-wav=org.gnome.Decibels.desktop; | |
audio/x-speex=org.gnome.Decibels.desktop; | |
audio/x-vorbis=org.gnome.Decibels.desktop; | |
audio/x-wavpack=org.gnome.Decibels.desktop; | |
video/3gp=org.gnome.Totem.desktop; | |
video/3gpp=org.gnome.Totem.desktop; | |
video/3gpp2=org.gnome.Totem.desktop; | |
video/dv=org.gnome.Totem.desktop; | |
video/divx=org.gnome.Totem.desktop; | |
video/fli=org.gnome.Totem.desktop; | |
video/flv=org.gnome.Totem.desktop; | |
video/mp2t=org.gnome.Totem.desktop; | |
video/mp4=org.gnome.Totem.desktop; | |
video/mp4v-es=org.gnome.Totem.desktop; | |
video/mpeg=org.gnome.Totem.desktop; | |
video/mpeg-system=org.gnome.Totem.desktop; | |
video/msvideo=org.gnome.Totem.desktop; | |
video/ogg=org.gnome.Totem.desktop; | |
video/quicktime=org.gnome.Totem.desktop; | |
video/vivo=org.gnome.Totem.desktop; | |
video/vnd.avi=org.gnome.Totem.desktop; | |
video/vnd.divx=org.gnome.Totem.desktop; | |
video/vnd.rn-realvideo=org.gnome.Totem.desktop; | |
video/vnd.vivo=org.gnome.Totem.desktop; | |
video/webm=org.gnome.Totem.desktop; | |
video/x-anim=org.gnome.Totem.desktop; | |
video/x-avi=org.gnome.Totem.desktop; | |
video/x-flc=org.gnome.Totem.desktop; | |
video/x-fli=org.gnome.Totem.desktop; | |
video/x-flic=org.gnome.Totem.desktop; | |
video/x-flv=org.gnome.Totem.desktop; | |
video/x-m4v=org.gnome.Totem.desktop; | |
video/x-matroska=org.gnome.Totem.desktop; | |
video/x-mjpeg=org.gnome.Totem.desktop; | |
video/x-mpeg=org.gnome.Totem.desktop; | |
video/x-mpeg2=org.gnome.Totem.desktop; | |
video/x-ms-asf=org.gnome.Totem.desktop; | |
video/x-ms-asf-plugin=org.gnome.Totem.desktop; | |
video/x-ms-asx=org.gnome.Totem.desktop; | |
video/x-msvideo=org.gnome.Totem.desktop; | |
video/x-ms-wm=org.gnome.Totem.desktop; | |
video/x-ms-wmv=org.gnome.Totem.desktop; | |
video/x-ms-wmx=org.gnome.Totem.desktop; | |
video/x-ms-wvx=org.gnome.Totem.desktop; | |
video/x-nsv=org.gnome.Totem.desktop; | |
video/x-theora=org.gnome.Totem.desktop; | |
video/x-theora+ogg=org.gnome.Totem.desktop; | |
video/x-totem-stream=org.gnome.Totem.desktop; | |
image/png=org.gnome.Loupe.desktop; | |
image/gif=org.gnome.Loupe.desktop; | |
image/webp=org.gnome.Loupe.desktop; | |
image/tiff=org.gnome.Loupe.desktop; | |
image/x-tga=org.gnome.Loupe.desktop; | |
image/vnd-ms.dds=org.gnome.Loupe.desktop; | |
image/x-dds=org.gnome.Loupe.desktop; | |
image/bmp=org.gnome.Loupe.desktop; | |
image/vnd.microsoft.icon=org.gnome.Loupe.desktop; | |
image/vnd.radiance=org.gnome.Loupe.desktop; | |
image/x-exr=org.gnome.Loupe.desktop; | |
image/x-portable-bitmap=org.gnome.Loupe.desktop; | |
image/x-portable-graymap=org.gnome.Loupe.desktop; | |
image/x-portable-pixmap=org.gnome.Loupe.desktop; | |
image/x-portable-anymap=org.gnome.Loupe.desktop; | |
image/x-qoi=org.gnome.Loupe.desktop; | |
image/qoi=org.gnome.Loupe.desktop; | |
image/svg+xml=org.gnome.Loupe.desktop; | |
image/svg+xml-compressed=org.gnome.Loupe.desktop; | |
image/avif=org.gnome.Loupe.desktop; | |
image/heic=org.gnome.Loupe.desktop; | |
image/jxl=org.gnome.Loupe.desktop; | |
x-scheme-handler/mailto=org.gnome.Geary.desktop; | |
EOL | |
# Set the system language to Japanese | |
sudo sh -c "cat >> /etc/locale.gen" << EOL | |
ja_JP.UTF-8 UTF-8 | |
EOL | |
sudo locale-gen | |
cat > ~/.config/locale.conf << EOL | |
LANG=ja_JP.UTF-8 | |
EOL | |
cat > /etc/environment << EOL | |
MOZC_IBUS_CANDIDATE_WINDOW=ibus | |
EOL | |
dconf_set_schema org.gnome.desktop.input-sources | |
dconf_set_sys sources "[('xkb', 'us'), ('ibus', 'mozc-jp')]" | |
echo "opening timeshift for setup, close when snapshot frequency is configured" | |
sudo timeshift-gtk | |
# Setup to access snapshots from the boot menu. | |
install grub-btrfs | |
# Again, these things seem to require a bit of time to fully sync up, probably | |
# A race condition so we'll force the issue ourselves. | |
sudo cp /usr/lib/systemd/system/grub-btrfsd.service /etc/systemd/system/grub-btrfsd.service | |
sudo sed -i 's|/.snapshots|--timeshift-auto|' /etc/systemd/system/grub-btrfsd.service | |
sync | |
sudo grub-mkconfig -o /boot/grub/grub.cfg | |
sync | |
sudo systemctl enable --now grub-btrfsd | |
# Ensure we auto create restore points when modifying the system via pacman. | |
install timeshift-autosnap | |
# Finally setup timeshift now that we've completed our modifications. | |
sudo systemctl enable --now cronie.service | |
sync | |
# Create the initial restore point now that we've made all our changes. | |
sudo timeshift --create --comments "genesis snapshot" | |
while true; do | |
read -p "A reboot is required for all changes to take effect, do you wish to reboot now? [Y]es [N]o >" answer | |
case $answer in | |
[Yy]* ) reboot;; | |
[Nn]* ) exit;; | |
esac | |
done | |
# TODO: Aina Only | |
# - nzxt-cam | |
# - icue |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment