Skip to content

Instantly share code, notes, and snippets.

@ivanstepanovftw
Last active October 24, 2024 01:59
Show Gist options
  • Save ivanstepanovftw/4b7fb28d9eaaa72f6d3deb287c982e61 to your computer and use it in GitHub Desktop.
Save ivanstepanovftw/4b7fb28d9eaaa72f6d3deb287c982e61 to your computer and use it in GitHub Desktop.
## My opinioned Fedora post-install setup

My Fedora post-install setup

#!/usr/bin/env bash
#
# List GNOME settings
#
enumerate_dconf() {
local path=$1
local children
local child
children=$(dconf list "$path" | sort)
for child in $children; do
if [[ $child == */ ]]; then
enumerate_dconf "$path$child"
else
local value
value="$(dconf read "$path$child")"
echo "dconf write \"$path$child\" '$value'"
fi
done
}
root_path="/"
enumerate_dconf "$root_path"
#!/usr/bin/env bash
#
# List GNOME shortcuts
#
for schema in $(gsettings list-schemas | sort); do
for key in $(gsettings list-keys $schema | sort); do
value="$(gsettings get $schema $key)"
range="$(gsettings range $schema $key | tr "\n" "\\n")"
echo "gsettings set $schema $key \"$value\" # $range"
done
done
sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf update
to_install=(
discord
telegram-desktop
obs-studio v4l2loopback kmod-v4l2loopback
keepassxc
binwalk
p7zip
xprop # for Unite
wl-clipboard
zsh
llvm rust clang mold
aria2c
nodejs
jetbrains-mono-nl-fonts
git-lfs
audacity
ripgrep
python3-devel python3-pip
wireshark
moby-engine # Docker
cmake
perl
)
sudo dnf install $to_install
sudo usermod -aG docker "$(whoami)"
sudo usermod -aG wireshark "$(whoami)"
# Python
python -mensurepip
python -mpip install torch transformers sentence-transformers torchaudio jupyter notebook
# ZSH
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
sudo usermod --shell $(which zsh) "$(whoami)"
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# VSCode
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
dnf check-update
sudo dnf install code
# Edge
sudo dnf upgrade --refresh
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo dnf config-manager --add-repo https://packages.microsoft.com/yumrepos/edge
sudo dnf install microsoft-edge-stable
# Mouse and touchpad settings
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click "true"
# Touchpad fast scrolling fix (not working in Fedora?)
cat <<'EOF' | sudo tee /etc/libinput.conf
scroll-factor=0.4
EOF
# Make Caps Lock toggle keyboard layout
dconf write /org/gnome/desktop/input-sources/xkb-options "['grp:caps_toggle']"
# IDEs conflicting keys
gsettings set org.gnome.desktop.wm.keybindings move-to-monitor-down "['']"
gsettings set org.gnome.desktop.wm.keybindings move-to-monitor-left "['']"
gsettings set org.gnome.desktop.wm.keybindings move-to-monitor-right "['']"
gsettings set org.gnome.desktop.wm.keybindings move-to-monitor-up "['']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-down "['']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-last "['']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-left "['']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-right "['']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-up "['']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "['']" # Navigate: Back
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "['']" # Navigate: Forward
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-up "['']" # Next change
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-down "['']" # Previous change
# Alt+Tab switches between windows, not apps
gsettings set org.gnome.desktop.wm.keybindings switch-applications "['<Super>Tab']"
gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward "['<Shift><Super>Tab']"
gsettings set org.gnome.desktop.wm.keybindings switch-windows "['<Alt>Tab']"
gsettings set org.gnome.desktop.wm.keybindings switch-windows-backward "['<Shift><Alt>Tab']"
# Auto raise windows, disables "Window is ready" notification
gsettings set org.gnome.desktop.wm.preferences auto-raise 'true'
# Remove Super+V conflicting key with clipboard history
gsettings set org.gnome.shell.keybindings toggle-message-tray "['<Super>m']"
# Next change (alt+f5) conflict in vscode
gsettings set org.gnome.desktop.wm.keybindings unmaximize "['<Super>Down']"
gsettings set org.gnome.desktop.wm.keybindings cycle-group "['']" # and alt+f6
# Windows-like screenshots
gsettings set org.gnome.shell.keybindings screenshot "['Print']"
gsettings set org.gnome.shell.keybindings screenshot-window "['<Alt>Print']"
gsettings set org.gnome.shell.keybindings show-screenshot-ui "['<Shift><Super>s']"
# Show desktop
gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Super>d']"
# Title bar buttons
gsettings set org.gnome.desktop.wm.preferences button-layout "appmenu:minimize,maximize,close"
# Dash to dock
dconf write "/org/gnome/shell/extensions/dash-to-dock/animation-time" '0.150'
dconf write "/org/gnome/shell/extensions/dash-to-dock/apply-custom-theme" 'false'
dconf write "/org/gnome/shell/extensions/dash-to-dock/autohide" 'true'
dconf write "/org/gnome/shell/extensions/dash-to-dock/background-color" "'rgb(222,221,218)'"
dconf write "/org/gnome/shell/extensions/dash-to-dock/background-opacity" '0.90'
dconf write "/org/gnome/shell/extensions/dash-to-dock/click-action" "'minimize-or-previews'"
dconf write "/org/gnome/shell/extensions/dash-to-dock/custom-background-color" 'true'
dconf write "/org/gnome/shell/extensions/dash-to-dock/customize-alphas" 'true'
dconf write "/org/gnome/shell/extensions/dash-to-dock/custom-theme-customize-running-dots" 'true'
dconf write "/org/gnome/shell/extensions/dash-to-dock/custom-theme-running-dots-border-color" "'rgb(255,255,255)'"
dconf write "/org/gnome/shell/extensions/dash-to-dock/custom-theme-running-dots-color" "'rgb(0,0,0)'"
dconf write "/org/gnome/shell/extensions/dash-to-dock/custom-theme-shrink" 'true'
dconf write "/org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size" '36'
dconf write "/org/gnome/shell/extensions/dash-to-dock/disable-overview-on-startup" 'false'
dconf write "/org/gnome/shell/extensions/dash-to-dock/dock-position" "'LEFT'"
dconf write "/org/gnome/shell/extensions/dash-to-dock/extend-height" 'false'
dconf write "/org/gnome/shell/extensions/dash-to-dock/height-fraction" '0.90'
dconf write "/org/gnome/shell/extensions/dash-to-dock/hide-delay" '0.100'
dconf write "/org/gnome/shell/extensions/dash-to-dock/icon-size-fixed" 'true'
dconf write "/org/gnome/shell/extensions/dash-to-dock/intellihide" 'true'
dconf write "/org/gnome/shell/extensions/dash-to-dock/intellihide-mode" "'FOCUS_APPLICATION_WINDOWS'"
dconf write "/org/gnome/shell/extensions/dash-to-dock/running-indicator-dominant-color" 'false'
dconf write "/org/gnome/shell/extensions/dash-to-dock/running-indicator-style" "'DOTS'"
dconf write "/org/gnome/shell/extensions/dash-to-dock/scroll-action" "'switch-workspace'"
dconf write "/org/gnome/shell/extensions/dash-to-dock/scroll-to-focused-application" 'true'
dconf write "/org/gnome/shell/extensions/dash-to-dock/show-delay" '0.25'
dconf write "/org/gnome/shell/extensions/dash-to-dock/transparency-mode" "'FIXED'"
cat <<'EOF' | sudo tee ~/gsettings_enum.sh && sudo chmod 755 ~/gsettings_enum.sh
#!/usr/bin/env bash
#
# List GNOME shortcuts
#
for schema in $(gsettings list-schemas | sort); do
for key in $(gsettings list-keys $schema | sort); do
value="$(gsettings get $schema $key)"
range="$(gsettings range $schema $key | tr "\n" "\\n")"
echo "gsettings set $schema $key \"$value\" # $range"
done
done
EOF
sudo usermod --shell $(which zsh) "$(whoami)"
cat <<'EOF' > ~/.zshenv
setopt interactive_comments
alias ll='ls -la'
alias l='ls -l'
alias cgrep='grep --color=always'
export VISUAL=vim
export EDITOR="$VISUAL"
source "$HOME/.cargo/env"
EOF
cat <<'EOF' | sudo tee /etc/sysctl.d/100-ivanstepanovftw.conf
kernel.sysrq = 1
kernel.yama.ptrace_scope = 0
vm.swappiness = 200
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125
vm.vfs_cache_pressure = 100
vm.page-cluster = 0
vm.dirty_ratio = 0
vm.dirty_bytes = 268435456
vm.dirty_background_ratio = 0
vm.dirty_background_bytes = 134217728
EOF
sudo sysctl -p /etc/sysctl.d/100-ivanstepanovftw.conf
cat <<'EOF' | sudo tee -a /etc/default/grub
GRUB_GFXMODE=640x480
GRUB_GFXPAYLOAD=keep
GRUB_TERMINAL=gfxterm
EOF
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
cat <<'EOF' | sudo tee /usr/lib/systemd/zram-generator.conf
zram-size = ram*1.5
compression-algorithm = lz4
writeback-device = /dev/disk/by-uuid/16babb9a-18c6-4651-b36f-38f3c79632de
EOF
sudo systemctl daemon-reload
sudo systemctl reboot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment