Published on

Ubuntu Toolset

Authors

I recently reinstalled Ubuntu and found that the below tools were what I installed immediately after. For simplicity, I have added a bash script at the end that installs and sets up most of the below where possible.

Tools

AreaToolComment
BrowserChromiumUbuntu does come with Firefox but it cannot use security keys
clifasdLink
clicurl
vcsgit
containersdocker
jsnvm
jsyarn
pythonpip
shellzsh
shelloh-my-zshLink
shellyakuakeLink
editorvim
editoremacs
clilinuxbrewLink
sslmkcertLink

Setup in One Script

Back to Top

For simplicity I have created one large script to install and setup most of the tools mentioned above. I have added TODO change above user specific configs that should be changed in the below before running this.

sudo apt-get update

################# curl :: START #################
echo Installing curl :: START
sudo apt install curl
echo Installing curl :: END
################# curl :: END #################

################# git :: START #################
echo Installing git :: START
sudo apt-get install git-core
# TODO change
git config --global user.name "your-username-for-commits"
# TODO change
git config --global user.email "[email protected]"
echo Installing git :: END
################# git :: END #################

################# FASD :: START #################
echo Installing FASD :: START
sudo add-apt-repository ppa:aacebedo/fasd
sudo apt-get update
sudo apt-get install fasd

# remove it from repos
sudo add-apt-repository -r ppa:aacebedo/fasd

echo 'eval "$(fasd --init auto)"' >> ~/.zshrc
echo Installing FASD :: END
################# FASD :: DONE #################

################# Chrome :: START #################
echo Installing Chromium :: START
sudo snap install chromium
echo Installing Chromium :: END
################# Chrome :: END #################

################# Docker :: START #################
echo Installing Docker :: START
sudo apt install docker.io
sudo usermod -aG docker $(whoami)
## While this is not necessarily the newest version of docker this will work on very new versions of ubuntu like 19.04 (as of the writing of this)
echo Installing Docker :: END
################# Docker :: END #################

################# nvm :: START #################
echo Installing nvm :: START
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm install --latest-npm
## npm needs python2.7 for node-gyp
## You get: gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
sudo apt install python2.7
sudo ln -s /usr/bin/python2.7 /usr/bin/python
echo Installing nvm :: END
################# nvm :: END #################

################# yarn :: START #################
echo Installing yarn :: START
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
echo Installing yarn :: END
################# yarn :: END #################

################# pip :: START #################
echo Installing pip :: START
sudo apt install python3-pip
echo Installing pip :: END
################# pip :: END #################

################# zsh and oh-my-zsh :: START #################
echo Installing zsh and oh-my-zsh :: START
sudo apt-get install zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# ZSH autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# TODO Add the following to your oh-my-zsh plugins section: zsh-autosuggestions


echo Installing zsh and oh-my-zsh :: END
################# zsh and oh-my-zsh :: END #################

################# yakuake :: START #################
echo Installing yakuake :: START
sudo apt install yakuake
echo Installing yakuake :: END
################# yakuake :: END #################

################# vim and emacs :: START #################
echo Installing vim and emacs :: START
sudo apt install vim emacs
echo Installing vim and emacs :: END
################# vim and emacs :: END #################

################# linuxbrew :: START #################
echo Installing linuxbrew :: START
sudo apt install libnss3-tools
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >>~/.zshrc
source ~/.zshrc
echo Installing linuxbrew :: END
################# linuxbrew :: END #################

################# mkcert :: START #################
echo Installing mkcert :: START
brew install mkcert
echo Installing mkcert :: END
################# mkcert :: END #################

Gnome Shell Extensions

Back to Top

  • System Monitor
    • Before trying to install the extension first run sudo apt-get install gir1.2-gtop-2.0 gir1.2-networkmanager-1.0 gir1.2-clutter-1.0 as described in the extension's README.
    • Menu meter of your CPU, RAM and Network
  • EasyScreenCast
    • Easily screencast using Ubuntu's built in recording tools. Can select the area you want to record and has a bunch of other features.
  • Multi Monitors Add-On
    • Easily extend your menu bar across multiple monitors. If for example you want the clock to display on all monitors.
  • OpenWeather
    • Weather in your menu bar.
  • Screenshot Tool
    • Tool to easily take screenshots of a selection, all screens or/and just an application window.

Oh My ZSH

Back to Top

Changing the default prompt to a random emoticon (really helpful if you have multiple tabs open as you can remember one had a specific emoticon). This is done by adding the following to the .zshrc file:

prompt_context() {
  if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
    #prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
    # Custom (Random emoji)
     emojis=("⚡️" "🔥" "💀" "👑" "😎" "🐸" "🐵" "🦄" "🌈" "🍻" "🚀" "💡" "🎉" "🔑" "🇹🇭" "🚦" "🌙")
     RAND_EMOJI_N=$(( $RANDOM % ${#emojis[@]} + 1))
     prompt_segment black default "${emojis[$RAND_EMOJI_N]} "
  fi
}