Linux - RLovelett/dotfiles GitHub Wiki

Ubuntu 20.04 / Fedora 32

  1. sudo without password
  2. ZSH
  3. YubiKey
  4. Antigen
  5. Powerline
  6. Tilix and Nord
  7. U2F Firefox
  8. Themes
  9. Fonts
  10. GNOME Extensions

0. SSH

mkdir -p $HOME/.ssh/sockets
tee "$HOME/.ssh/config" > /dev/null <<'EOF'
Host 192.168.*.* *.local *.lovelett.me
  ControlMaster auto
  ControlPath ~/.ssh/sockets/%r@%h-%p
  ControlPersist 600
EOF
chmod 0600 $HOME/.ssh/config

0. Vim

$ sudo apt install -y vim
$ sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 100
$ sudo update-alternatives --config editor

1. sudo without password

## Allow rlovelett to run ALL commands without a password
$ echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo EDITOR='tee -a' visudo

2. ZSH

$ sudo dnf install -y zsh util-linux-user
$ chsh --shell /bin/zsh

3. YubiKey

Fedora

$ sudo dnf install -y pcsc-tools opensc pcsc-lite-ccid gnupg2

Ubuntu

$ sudo apt install -y scdaemon gnupg2 pcsc-tools opensc

All

Disable keyring daemon components

$ mkdir -p $HOME/.config/autostart
$ cp /etc/xdg/autostart/gnome-keyring-ssh.desktop $HOME/.config/autostart
$ echo "Hidden=true" >> $HOME/.config/autostart/gnome-keyring-ssh.desktop
$ echo "GSM_SKIP_SSH_AGENT_WORKAROUND DEFAULT=1" >> $HOME/.pam_environment

Steps are lifted from here: "Using gpg-agent Effectively" and "Using YubiKey Neo as Gpg Smartcard for SSH Authentication"

$ mkdir -p $HOME/.config/systemd/user
$ cp /usr/share/doc/gnupg2/examples/systemd-user/*.{socket,service} $HOME/.config/systemd/user
$ systemctl --user daemon-reload
$ systemctl --user enable --now dirmngr.socket gpg-agent-browser.socket gpg-agent.socket gpg-agent-ssh.socket
$ gpg2 --card-edit
$ fetch
$ quit

4. Antigen

$ cd $HOME
$ git clone https://github.com/zsh-users/antigen.git .antigen

8. GNOME Themes

Fedora

https://drasite.com/flat-remix

$ sudo dnf install -y gnome-tweak-tool

Fedora

sudo dnf install -y git autogen dh-autoreconf automake pkgconf sassc optipng inkscape gtk3-devel libcanberra-gtk3 gtk-murrine-engine

Ubuntu

$ sudo apt install -y git autogen dh-autoreconf automake pkgconf sassc optipng inkscape libgtk-3-dev libcanberra-gtk-module gtk2-engines-murrine
$ mkdir $HOME/Source
$ cd $HOME/Source
$ git clone https://github.com/jnsh/arc-theme --depth 1
$ cd arc-theme
$ ./autogen.sh --disable-cinnamon --prefix=$HOME/.local
$ make install
mkdir -p $HOME/.icons $HOME/.themes
git clone https://github.com/keeferrourke/la-capitaine-icon-theme.git $HOME/.icons/la-capitaine-icon-theme
git clone https://github.com/Optixal/Mist-theme.git $HOME/.themes/Mist-git
git clone https://github.com/EliverLara/Nordic.git $HOME/.themes/Nordic-git
ln -s $HOME/.themes/Mist-git/Mist $HOME/.themes/Mist
ln -s $HOME/.themes/Nordic-git $HOME/.themes/Nordic

## It is probably really this theme? https://github.com/NicoHood/arc-theme
gsettings set org.gnome.desktop.interface gtk-theme "Arc"
gsettings set org.gnome.desktop.interface icon-theme "la-capitaine-icon-theme"
gsettings set org.gnome.desktop.wm.preferences theme "Mist-fork"

9. Fonts

Credit

[ -d $HOME/.local/share/fonts ] || mkdir -p $HOME/.local/share/fonts
git clone --depth 1 --branch master https://github.com/powerline/fonts.git $HOME/.local/share/fonts/powerline
git clone --depth 1 --branch release https://github.com/adobe-fonts/source-sans-pro.git $HOME/.local/share/fonts/ssp
git clone --depth 1 --branch release https://github.com/adobe-fonts/source-code-pro.git $HOME/.local/share/fonts/scp
[ -d $HOME/Source ] || mkdir -p $HOME/Source
git clone --depth 1 --branch master https://github.com/ryanoasis/nerd-fonts.git $HOME/Source/nerd-fonts
$HOME/Source/nerd-fonts/install.sh "SourceCodePro"
$HOME/.local/share/fonts/powerline/install.sh
fc-cache -f -v
gsettings set org.gnome.desktop.interface document-font-name "Source Sans Pro 11"
gsettings set org.gnome.desktop.interface font-name "Source Sans Pro 11"
gsettings set org.gnome.desktop.interface monospace-font-name "SauceCodePro Nerd Font 13"
gsettings set org.gnome.desktop.wm.preferences titlebar-font "Source Sans Pro Semi-Bold 11"

10. GNOME Extensions

Install a script to help install GNOME Extensions from Terminal.

wget -O $HOME/.local/bin/gnomeshell-extension-manage "https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/gnomeshell-extension-manage"
chmod +x $HOME/.local/bin/gnomeshell-extension-manage
gnomeshell-extension-manage --install --extension-id 517 --version latest --user
gnomeshell-extension-manage --install --extension-id 945 --version latest --user
gnomeshell-extension-manage --install --extension-id 1160 --version latest --user
sudo cp $HOME/.local/share/gnome-shell/extensions/[email protected]/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml /usr/share/glib-2.0/schemas
sudo glib-compile-schemas /usr/share/glib-2.0/schemas

gsettings set org.gnome.shell.extensions.dash-to-panel appicon-margin 4
gsettings set org.gnome.shell.extensions.dash-to-panel dot-color-1 '#5294e2'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-color-2 '#5294e2'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-color-3 '#5294e2'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-color-4 '#5294e2'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-color-unfocused-1 '#5294e2'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-color-unfocused-2 '#5294e2'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-color-unfocused-3 '#5294e2'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-color-unfocused-4 '#5294e2'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-position 'BOTTOM'
gsettings set org.gnome.shell.extensions.dash-to-panel dot-style-focused 'METRO'
gsettings set org.gnome.shell.extensions.dash-to-panel focus-highlight-color '#eeeeee'
gsettings set org.gnome.shell.extensions.dash-to-panel group-apps true
gsettings set org.gnome.shell.extensions.dash-to-panel isolate-workspaces true
gsettings set org.gnome.shell.extensions.dash-to-panel location-clock 'STATUSRIGHT'
gsettings set org.gnome.shell.extensions.dash-to-panel panel-size 48
gsettings set org.gnome.shell.extensions.dash-to-panel show-activities-button false
gsettings set org.gnome.shell.extensions.dash-to-panel show-appmenu true
gsettings set org.gnome.shell.extensions.dash-to-panel showdesktop-button-width 20
gsettings set org.gnome.shell.extensions.dash-to-panel show-showdesktop-button true
gsettings set org.gnome.shell.extensions.dash-to-panel taskbar-position 'LEFTPANEL'
gnomeshell-extension-manage --install --extension-id 841 --user
gnomeshell-extension-manage --install --extension-id 921 --user
sudo cp $HOME/.local/share/gnome-shell/extensions/multi-monitors-add-on@spin83/schemas/org.gnome.shell.extensions.multi-monitors-add-on.gschema.xml /usr/share/glib-2.0/schemas
sudo glib-compile-schemas /usr/share/glib-2.0/schemas

gsettings set org.gnome.shell.extensions.multi-monitors-add-on show-date-time false
gsettings set org.gnome.shell.extensions.multi-monitors-add-on show-app-menu false
gsettings set org.gnome.shell.extensions.multi-monitors-add-on thumbnails-on-left-side true
gsettings set org.gnome.shell.extensions.multi-monitors-add-on show-panel false
gsettings set org.gnome.shell.extensions.multi-monitors-add-on show-activities false
gsettings set org.gnome.shell.extensions.multi-monitors-add-on show-thumbnails-slider true
gsettings set org.gnome.shell.extensions.multi-monitors-add-on show-indicator false

images/multi-monitor-settings.png

gnomeshell-extension-manage --install --extension-id 906 --version 3.22 --user
gnomeshell-extension-manage --install --extension-id 19 --user

Links

Where can I get a list of SCHEMA / PATH / KEY to use with gsettings?

Scripts

#!/bin/bash
# Gnome 3 can be customized from the command line via the gsettings command
# This script should help you to find what you're looking for by
# listing the ranges for all keys for each schema

for schema in $(gsettings list-schemas | sort)
do
    for key in $(gsettings list-keys $schema | sort)
    do
        value="$(gsettings range $schema $key | tr "\n" " ")"
        echo "$schema :: $key :: $value = $(gsettings get $schema $key 2> /dev/null)"
    done
done