My Favorite Tools on Linux

Jan 10, 2021

Computing

By: Brandon Quakkelaar

Last year I decided to take on the challenge of running just Linux. I wanted to see how good (or bad) the experience would be, and whether it’d be painful enough that I’d go back to using Windows. I went ahead and installed Linux Mint on my primary personal laptop. I did not dual boot Windows. This meant I stopped using Windows 10 unless it was work related. Thankfully, I don’t really miss Windows 10 that much. There were some bumps along the road, but the overall results were positive and enjoyable. So, I thought I’d share my favorite software choices for my personal Linux workstation.

I’ll show the installation shell commands I used, but know that these are meant for the Debian family of Linux distributions. Specifically, I ran these commands on Linux Mint 20.

Also, I’m not going to get into the stuff that comes with Linux Mint by default. You’ll get a calculator, web browser, backup tool, and the entire LibreOffice suite. You’ll get SSH, and more. Generally, these are great tools that can easily replace their Windows equivalents.

The Basics

NordVPN

VPN software is important for online privacy and security and NordVPN was my choice before switching to Linux. Thankfully, they have Linux support as well.

wget -qnc https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb
sudo dpkg -i ./nordvpn-release_1.0.0_all.deb
sudo apt-get update
sudo apt-get --assume-yes install nordvpn
rm nordvpn-release_1.0.0_all.deb

Once installed, login to NordVPN with nordvpn login. If you want it to automatically connect when you start your computer you can run nordvpn set autoconnect on. Though be careful to exclude your local area network if you’re trying to connect to other computers. Whitelist your LAN’s IP range with nordvpn whitelist add subnet 192.168.1.0/24.

Git

No surprise here. I use Git for blogging and side projects.

sudo apt-get install git

jq

The jq command is a handy utility for parsing JSON in the terminal. I like to automate API testing with bash scripts using jq to parse the JSON response.

sudo apt-get install jq

Filezilla

Filezilla is my preferred FTP client.

sudo apt-get install filezilla

Tmux

I like using the terminal as much as I can. And Tmux adds a ton of flexibility, through keybindings, to create, close, move, resize, and generally play with multiple terminal “panes”. So instead of having a bunch of terminal windows, and instead of having a bunch of tabs, I use Tmux.

sudo apt-get install tmux

Tree

The ls command is very handy, but sometimes I just want to see a tree structure including child directories. Tree offers that functionality and is pretty handy when I don’t want to switch over to a windowed file browser.

sudo apt-get install tree

direnv

The direnv shell tool is for easily configuring environment variables that are specific to the folder you’re currently working in. I came across it while reading Writing An Interpreter In Go. The author of that book recommended it to manage Go environment configurations. It’s been working great.

sudo apt-get install direnv

Hugo

Hugo is a static site generator that I use to manage this blog.

sudo apt-get install hugo

Text Editing

Vim

Vim is a staple editor in the Linux community. And while there is fierce competition with other options, it’s reputation is really solid among those who use it. I wrote about Vim before, back when I was still using Windows for everything.

sudo apt-get install vim

Visual Studio Code

I spend most of my time on my laptop working in Visual Studio Code. I use it for all my blogging and coding. While I’m always on the lookout for something to take it’s place, Visual Studio Code is essential to my projects.

wget -qnc https://go.microsoft.com/fwlink/?LinkID=760868 -O vscode.deb
sudo apt install -y ./vscode.deb
sudo apt-get update
sudo apt-get --assume-yes install code
rm vscode.deb

Graphics

Pencil

Alrighty, Pencil is great. I love using this thing. It’s a tool for designing layouts and user interfaces. I used to use Balsamiq, but Pencil’s quality and user experience is very comparable. And it’s available on Linux for free!

wget -qnc https://pencil.evolus.vn/dl/V3.1.0.ga/pencil_3.1.0.ga_amd64.deb -O pencil.deb
sudo apt install -y ./pencil.deb
sudo apt-get update
sudo apt-get --assume-yes install pencil
rm pencil.deb

Inkscape

Inkscape is a high quality vector graphics editor. There is a learning curve to it. And if you’re coming from a background using Illustrator, then you’ll need to re-learn how to do some things. I would frequently use Illustrator back when I professionally did graphics and logo design work. And considering that experience, I have no reservations recommending Inkscape for new projects.

sudo add-apt-repository -y ppa:inkscape.dev/stable
sudo apt update
sudo apt install -y inkscape

Video

HandBrake

HandBrake is a video transcoder. It will do a pretty good job of taking a video file and converting it to another format. It also lets you tweak compression and quality levels.

sudo add-apt-repository ppa:stebbins/handbrake-releases -y
sudo apt-get update
sudo apt-get install -y handbrake-gtk
sudo apt-get install -y handbrake-cli

Cheese

One of the things that my copy of Linux Mint was missing out of the box was a way to take pictures and video recordings using my laptop’s camera. Cheese is a snappy little program that provides that functionality.

sudo apt-get install cheese

Kdenlive

I like to do a very small amount of video editing. I primarily just edit small clips of my personal records for my training log. I paid for a video editing tool that I used on Windows. But

sudo apt-get install kdenlive

Youtube-dl

Youtube-dl is a tool to download clips off of YouTube. I used it recently grab a couple small clips for my post about building strength of character.

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

Since YouTube is constantly changing their website, Youtube-dl needs to be kept as up-to-date as possible in order to work. So, once it’s installed, be sure to open a new terminal and run youtube-dl -U to update it.

Also, I had some issues getting this running. I think the fix was to make sure that Python, specifically a python command, was installed.

Programming

Python 3

I like my Python with PIP and Pipenv.

sudo apt-get install python3
sudo apt-get --assume-yes install python3-pip
pip3 install --user pipenv

JavaScript

I like my JavaScript with Node and NPM.

sudo apt-get install nodejs
sudo apt-get install npm

Go (Golang)

Go isn’t quite as straightforward to set up as the previous two. But it’s not too bad.

sudo add-apt-repository ppa:longsleep/golang-backports --yes
sudo apt-get --assume-yes update
sudo apt-get --assume-yes install golang-go
mkdir -p ~/go/{bin,pkg,src}
echo 'export GOPATH="$HOME/go"' >> ~/.bashrc
echo 'export PATH="$PATH:${GOPATH//://bin:}/bin"' >> ~/.bashrc

Summary

Thus concludes this list. All of this software is powerful, and free. Just about any computing activity I’ve pursued has functional software options on Linux. I hope you are encouraged by my experience to try some of these yourself.

Further Reading

Thanks for reading. Feel free to send comments to blog@quakkels.com.