Linux daily-use and development tools - part 1
I’m writing a blog post series on the Linux tools I use daily, including development tools and their configurations. Here’s the first post of many.
Kubuntu LTS
Earlier, I was using Debian Sid and broke my system several times. After recovering the system, I realized I needed a stable system rather than a cutting-edge one. I could have installed Debian stable, but due to display driver support being officially available only for Ubuntu and my fondness for the KDE desktop environment, I opted for Kubuntu.
During the installation, checkmark the essential third-party apps, and update the packages. This step ensures the installation of some useful tools, including git.
Change the system settings
Default Breeze Dark theme is nice for those who like a system-wide dark theme. Install it by going to: System Settings -> Appearance -> Global Theme -> Breeze Dark -> Apply
Setting up ssh credentials
If you are a developer like me, you may also need to set up SSH credentials for access to resources such as private GitHub repositories or your personal remote server. Here are the steps to generate SSH keys and export them to server:
Generate SSH keys
Check if you already have SSH keys in the .ssh directory. If not, run:
1
2
3
ssh-keygen -t ed25519 -C "your_email@example.com" #Keep pressing Enter key until command prompt appears
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
This creates two files: a private key - id_ed25519 and a public key - id_ed25519.pub in the default directory called ~/.ssh.
Export public key to Github
Copy the SSH public key generated in the previous step and add it to your GitHub account by navigating to GitHub Settings -> SSH and GPG keys. This enables seamless pull or push operations with your GitHub repository.
Here is a nice tutorial by Github.
Export public key to remote server.
Transfer the same public key to the remote server using the following command for seamless login access.
1
ssh-copy-id <username>@<server_ip_addr>
The above step copies your SSH public key to the file ~/.ssh/authorized_keys on the remote server. Now you can login to the remote server using *ssh
Set git configuration
Git is a version control system that tracks changes to files and folders in a project, allowing multiple contributors to maintain a documented history of contributions. It’s essential to set your identity before contributing to any project.
If you have a full install of Kubuntu, the git tool should already be installed. Set your identity using the following commands:
1
2
git config --global user.name <Full Name>
git config --global user.email <email addr>
Add flatpak support
Flatpak is a universal package manager for Linux-based systems. I authored a guide on enabling and installing Flatpak packages on Debian-based systems.
A reboot is necessary to search for your favorite packages using the Software Center. It is also required to search for Flatpak apps in the system menu.
Install LogSeq package
LogSeq is an open-source note-taking app. I prefer it over Obsidian and other note-taking apps, mainly because of the daily journal feature and its simplicity. Install the flatpak with:
1
flatpak install flathub com.logseq.Logseq
Open the app, scroll to the bottom, and select a new or existing LogSeq directory.
Push notes to Github (or any git hosting site) with the LogSeq git plugin. To install, go to Menu (…) -> Plugins -> Marketplace -> Search for git and install the plugin (plugin ID:logseq-git).
My private LogSeq Github backup is here, but it’s not accessible to others 😉.
Additional settings: Menu -> Settings -> General -> Theme -> Dark. I chose violet for accent color.
Pin LogSeq to the task manager for easy access.
Install DisplayLink drivers for Lenovo Thinkpad Hybrid USB C dock
If you happen to have a ThinkPad Linux laptop with the ThinkPad Hybrid USB-C dock, follow these steps to install DisplayLink drivers for connecting external monitors via the dock.
Download the .deb file from here to add the Synaptics apt repository to your Ubuntu system.
1
sudo apt install ./Downloads/synaptics-repository-keyring.deb
Update and install the drivers.
1
2
sudo apt update
sudo apt install displaylink-driver
During installation, you might be asked to set a password. This password must be entered at the next reboot. Failure to provide the correct password will result in non-functional DisplayLink drivers.
Once installation is complete, restart the device. During boot, choose Enroll MOK -> Change secure boot state and input the password.
Install dropbox
Dropbox is the only cloud service I prefer that offers robust native Linux support. Download the .deb file from the Dropbox website and install it using the following command:
1
sudo dpkg -i ~/Downloads/dropbox*amd64.deb
Force installation, even if dependencies are missing, using this command:
1
sudo apt-get install -f
Install brave browser
Brave is a privacy-centric web browser built on open-source Chromium, featuring a built-in ad blocker. You can install the Brave browser on Ubuntu by following the instructions on this page.
Remove snap support in Ubuntu
Here is the rationale for my dislike of Snap. In essence, the Snap Store is centralized unlike apt repositories, feels like bloatware, and it forcefully installs Snap packages when using the apt tool, such as with Firefox.
This section explains how to purge snap from the Ubuntu.
Disabling systemd services
Disable all snap related systemd services first. The following commands disable the Snap services:
1
2
3
sudo systemctl disable snapd.service
sudo systemctl disable snapd.socket
sudo systemctl disable snapd.seeded.service
Uninstall snap packages
List the all snap packages installed already on Ubuntu system with following command:
1
snap list
Uninstall each snap package individually using snap remove. In my case, I removed the following snap packages, in order:
1
2
3
4
5
6
7
sudo snap remove firefox # You might want to install a different browser before uninstalling the firefox
sudo snap remove firmware-updater
sudo snap remove gnome-42-2204
sudo snap remove gtk-common-themes
sudo snap remove thunderbird
sudo snap remove core22
sudo snap remove bare
Remove snapd and trails
Complete removal of Snapd and its associated data can be achieved with the following:
1
2
3
4
5
6
7
sudo apt autoremove --purge snapd
sudo rm -rf /var/cache/snapd/
rm -rf ~/snap
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd
Prevent apt from installing snap packages
To ensure Snap packages are not installed in the future, configure apt preferences:
1
2
3
4
5
sudo cat <<EOF | sudo tee /etc/apt/preferences.d/nosnap.pref
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
Installing the firefox browser
For users who prefer the Firefox browser without using Snap, follow these steps to install it from the Mozilla PPA:
First, add the Mozilla PPA repository:
1
2
3
4
5
sudo install -d -m 0755 /etc/apt/keyrings
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null
sudo add-apt-repository ppa:mozillateam/ppa
Set priorities to ensure the Mozilla PPA is preferred:
1
2
3
4
5
6
7
8
echo '
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
Package: firefox*
Pin: release o=Ubuntu
Pin-Priority: -1' | sudo tee /etc/apt/preferences.d/mozilla
Finally, update your package lists and install Firefox:
1
2
sudo apt update
sudo apt install firefox
Tip: To make Firefox tabs more compact, enter about:config in the address bar, search for browser.uidensity, and set its value to 1.
Install Jekyll
Jekyll is a static site generator built with Ruby. While understanding Ruby isn’t necessary to use Jekyll, familiarity with Markdown is essential.
Here are the installation steps to get you started with blogging:
Install RubyGems package manager
RubyGems is a package manager that we’ll use to install Jekyll. The packages it manages are called gems. Let’s start by installing RubyGems.
1
2
3
4
5
6
7
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$HOME/.rbenv/shims:$PATH"' >> ~/.bashrc
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
source ~/.bashrc
1
eval "$(rbenv init -)"
1
2
3
4
sudo apt install libyaml-dev zlib1g-dev
sudo apt purge ruby
rbenv install 3.2.2
rbenv global 3.2.2 # set ruby version to 3.2.2
Install bundler and jekyll gems
Let’s install the gems jekyll and bundler. Bundler manages the exact versions of gems to ensure consistent deployments.
1
gem install jekyll bundler
Setting up blog
Check out the official Jekyll site to begin your blogging journey. I maintain my Jekyll blog as a repository on GitHub, which I’ll use as an example here.
1
2
3
4
git clone git@github.com:ItsNayabSD/nayab.dev.git
cd nayab.dev/
bundle install
bundle exec jekyll serve
Add the following line to ~/.bashrc to simplify entering the date in post front matter.
1
alias jdate='echo "date: $(date "+%F %T") +5:30"'
Installalling mullvad vpn
Mullvad VPN is a highly privacy-centric VPN service that doesn’t require personal information like your email address or phone number. It supports multiple payment methods, including cryptocurrencies. I prefer this VPN because it prioritizes privacy and remains unlinked to personal data.
Here are the installation steps:
1
2
3
4
sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc https://repository.mullvad.net/deb/mullvad-keyring.asc
echo "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$( dpkg --print-architecture )] https://repository.mullvad.net/deb/stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mullvad.list
sudo apt update
sudo apt install mullvad-vpn
Install mullvad browser
The Mullvad browser, created by the Mullvad team, provides default private browsing, refrains from collecting data, blocks third-party trackers, and prioritizes user privacy.
Here are the installation steps to install the browser:
1
2
3
4
5
6
7
8
9
# Download the Mullvad signing key
sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc https://repository.mullvad.net/deb/mullvad-keyring.asc
# Add the Mullvad repository server to apt
echo "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$( dpkg --print-architecture )] https://repository.mullvad.net/deb/stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mullvad.list
# Install the package
sudo apt update
sudo apt install mullvad-browser
Stay tuned for future blog posts featuring more tools and insights.