My Minimalist Over-powered Linux Setup Guide

My minimal arc-dark themed desktop. Wallpaper courtesy of Max Rostas’ curated “Make Wallpapers Great Again”

OS of choice: Ubuntu 17.10

Applications

Before and after toggling always-use-location-entry
$ sudo apt-get install dconf-tools# Open dconf-editor
# In dconf-editor navigate to: org –> gnome –> nautilus –> preferences
# Toggle on always-use-location-entry
sudo add-apt-repository ppa:shutter/ppa
sudo apt-get update && sudo apt-get install shutter

Shell for the win!

Gnome terminal with Neofetch’s output
> sudo apt-get install zsh
# Enter into zsh
> zsh
# Choose option (1) Continue to main menu$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"$ setopt EXTENDED_GLOB
$ for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done
# Set default shell to zsh
chsh -s /bin/zsh
$ cd $ZPREZTODIR
$ git pull
$ git submodule update --init --recursive
zstyle ':prezto:module:prompt' theme 'pure'
# The order matters.
zstyle ':prezto:load' pmodule \
'environment' \
'terminal' \
'command-not-found' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'syntax-highlighting' \
'history-substring-search' \
'autosuggestions' \
'prompt'
$ sudo add-apt-repository ppa:dawidd0811/neofetch
$ sudo apt update && sudo apt install neofetch
$ git clone https://github.com/marzocchi/zsh-notify.git ~/.zsh-notify
$ echo 'source $HOME/.zsh-notify/notify.plugin.zsh' >> ~/.zshrc

CLI Tools

An example of colorls aliased to ls
# If you're a Ruby dev, I recommend this: https://gist.github.com/jonyeezs/0cd34840004ca2052ff74378e15b39c0
# Or simply
$ sudo apt-get install ruby-full
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts && curl -fLo "Ubuntu Mono Nerd Font Complete Mono.ttf" https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/UbuntuMono/Regular/complete/Ubuntu%20Mono%20Nerd%20Font%20Complete%20Mono.ttf?raw=true
gem install colorls
source $(dirname $(gem which colorls))/tab_complete.sh
alias ls='colorls --sd'
# Display as single line files 
$ ls -1
# With hidden files
$ ls -a
# With all information
$ ls -al
# Display as tree structure whilst hiding files that maybe unnecessary to show
$ ls -tA
$ wget https://github.com/jhawthorn/fzy/releases/download/0.9/fzy_0.9-1_amd64.deb
$ sudo dpkg -i fzy_0.9-1_amd64.deb
$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
# The following command will have prompts. Do as you will
$ ~/.fzf/install
$ git clone https://github.com/b4b4r07/enhancd ~/.enhancd
$ echo 'source ~/.enhancd/init.sh' >> ~/.zshrc
$ echo 'ENHANCD_FILTER=fzy:fzf; export ENHANCD_FILTER' >> ~/.zshrc
$ echo "ENHANCD_HOOK_AFTER_CD='ls -A';export ENHANCD_HOOK_AFTER_CD" >> ~/.zshrc

$ . ~/.zshrc
# Most use scenarios# 1. View options in a search finder
$ cd
# 2. List the last 10 navigated directories
$ cd -
# 3. Navigate to parent directories
$ cd ..
manual for curl with examples
$ sudo curl -o /usr/local/bin/tldr https://raw.githubusercontent.com/raylee/tldr/master/tldr
$ sudo chmod +x /usr/local/bin/tldr
$ sudo apt-get install yank# To yank straight to clipboard add this alias to ~/.zshrc
alias yank='yank-cli -- xsel -b'
# all other opts availabe through yank-cli
# Try these commands
$ ls -lh | yank
$ ps ux | yank-cli | xargs kill
$ umake go
$ go get github.com/heppu/gkill
# Find out the path where bin/gkill was installed
$ sudo find / -name "gkil"
# Set the path to ~/.zprofile as example like my /home/jonathan..
path=(
/usr/local/{bin,sbin}
/home/jonathan/go/bin
$path
)
# restart the shell and try it
$ gkill

Programmer segment of the post

$ git clone https://github.com/lyze/posh-git-sh.git ~/.posh-git-sh
# import the git-prompt
. ~/.posh-git-sh/git-prompt.sh
prompt_pure_preprompt_render() {
...
# Slightly further down, change the git info as below
...
# Add git branch and dirty status info.
typeset -gA prompt_pure_vcs_info
if [[ -n $prompt_pure_vcs_info[branch] ]]; then
preprompt_parts+=("%F{$git_color}"'$(__posh_git_echo)%f')
fi
# Git pull/push arrows.
# if [[ -n $prompt_pure_git_arrows ]]; then
# preprompt_parts+=('%F{cyan}${prompt_pure_git_arrows}%f')
# fi
$ sudo apt-get install intltool itstool gir1.2-gtksource-3.0 libxml2-utils
$ git clone https://git.gnome.org/browse/meld ~/.meld
$ cd ~/.meld
$ sudo python3 setup.py install
$ git config --global merge.tool meld
$ git config --global mergetool.meld.trustExitCode true
# To upgrade
$ cd ~/.meld
$ git pull
$ sudo python3 setup.py install
$ npm i -g diff-so-fancy
$ git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"

Containerize your world

$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Ensure you have the right gpg from instructions on https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-repository$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
# Verify docker is installed successfully
$ sudo docker run hello-world
# If you don't wish to type sudo for every docker command, Here's how
$ sudo groupadd docker
$ sudo gpasswd -a $USER docker
$ newgrp docker
$ docker run hello-world
# Helpful if you use dockly too...
# And here's how to upgrade
$ sudo apt-get remove docker
$ sudo apt-get update
$ sudo apt-get install docker-ce

Terminal for life with TUIs

$ sudo apt-get install htop
grv for a git repository
$ sudo wget -O /usr/local/bin/grv https://github.com/rgburke/grv/releases/download/v0.1.2/grv_v0.1.2_linux64
$ sudo chmod +x /usr/local/bin/grv
# Go to any git repository and type:
$ grv
$ npm install -g dockly
$ dockly

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store