Skip to content

Instantly share code, notes, and snippets.

@techgeek1
Last active April 9, 2025 05:57
Show Gist options
  • Save techgeek1/0319a3bb4eac7210ea1dfc8c5c60b099 to your computer and use it in GitHub Desktop.
Save techgeek1/0319a3bb4eac7210ea1dfc8c5c60b099 to your computer and use it in GitHub Desktop.
Configuration script for my Endeavour OS systems.
#!/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