/LinuxConfig

💻🐧 My Personal Linux Configuration Guide and dotfiles.

Primary LanguageShell

Pipas' Linux Config Guide

Introduction

The purpose of this repository is to serve as a personal checklist to install and configure linux to my liking as fast possible.

Do keep in mind that I'm not a Linux expert or claim to be one, what I'm most looking for in a distro is ease of use and maintainability so it might not be what you're looking for.

I plan to maintain this repository for myself and update it over time as I change my personal config, learn and discover new things.

Community Update

After initially writing this guide I've received suggestions and feedback that I would like to see incorporated. To achieve this without deviating too much from the main goal of the project (to serve as a personal checklist) these suggestions will be marked with an icon (👥) and may not be used by me personally.

If you'd also like to contribute to this repository in any way or suggest something feel free to do so by submitting an issue.

Screenshots

Screenshot1 Screenshot2

Table of Contents

Distro

Pop!_OS 19.04 is my distro of choice, it's based on Ubuntu so you get good support from most mainstream apps (like Spotify and Discord) as well as the Ubuntu community, but it's lighter, faster and just a better experience overall. It also has an ISO with nvidea drivers pre packaged so you don't have to install them yourself and you can take advantage of Ubuntu PPAs. I found it to be a great experience out of the box even without the further customizations explained ahead and would recommend it to anyone wanting to try out Linux.

Pre-requisites

To start, clone this repository in your home directory (I clone it to a dot folder so it doesn't show up in file managers)

git clone https://github.com/Pipas/LinuxConfig .dotfiles

Look

I use Gnome as my desktop environment, it comes built in with new versions of Ubuntu and I found it to work best for me.

A great piece of software to aid your customization of gnome is Gnome Tweak Tool

sudo apt install gnome-tweak-tool

Another helper to faster install themes from the gnome-look.org is OCS-url.

Here are the themes that I use.

Gnome and Shell theme

Icon theme

Cursor theme

Fonts

The fonts I use for my distro can be found in a fonts folder in this repo. To use them copy them to .fonts

mkdir ~/.fonts
cp ~/.dotfiles/fonts/* ~/.fonts

To set them use the Tweak Tool, here are the values I use:

  • Interface Text - SFNS Display Bold 12
  • Document Text - SFNS Display Regular 12
  • Monospace Text - SF Mono Regular 13
  • Legacy Window Titles - SFNS Display Bold 12

Extensions

There are several Gnome extensions that make the experience much better and tweak the system to your liking. There are many to choose from at extensions.gnome.org and here are some of the ones I use.

  • User Themes - needed to change the default shell theme, as stated in all the comments should be enabled by default.

  • Dash to Dock - changes the gnome bar to a dock, highly customizable.

  • Alternate Tab - changes the alt-tab menu to show window previews and all windows separate.

  • OpenWeather - weather indicator on your top bar, useful to have at times, highly customizable.

  • system-monitor - displays system information in the top bar such as cpu, mem and network.

  • Remove App Menu - removes app menu from top bar to reduce clutter.

  • Hide Activities Button - hides the activities button.

  • KStatusNotifierItem - shows application icons in top bar.

  • GS Connect - connects with KDE Connect. 👥

Touchpad Gestures

If you're using Linux in a laptop with a modern touchpad enabling gestures is a no-brainer to increase productivity, I have achieved this with a program called libinput-gestures 👥.

They have installation instructions on their repo, after the installation is done you can use my personal config file by creating a symlink to it

ln -s ~/.dotfiles/libinput-gestures.conf ~/.config/libinput-gestures.conf

Albert

Albert is a desktop launcher for linux, it's simple, fast and it helps you get to what you want faster. I use Albert quite a lot and I have it bound to the windows (super) key on my keyboard.

To do this we first start with installing Albert, instructions on how to do it can be found here.

After albert is installed, open it and bind the Hotkey combination to ctrl + Space.

Now we can bind the super key to that combination so when pressed it'll toggle Albert, first unbind the key in gnome

gsettings set org.gnome.mutter overlay-key ""

and then we'll use xcape to bind it.

First install xcape

sudo apt install xcape

Then you can add both

xcape -e 'Super_L=Control_L|space'

and

albert

to your Startup Applications so they both run when you boot the system.

Emoji

To properly install emoji in Linux, install the Noto font following these steps and then set font priority by following these steps.

Terminal

My shell of choice is ZSH with the Spaceship prompt. The installation process for this is extremely easy since zplug handles most of it if you use my .zshrc file.

First we need to install zsh (we'll also install the powerline and noto fonts needed for the prompt)

sudo apt install zsh powerline fonts-powerline fonts-noto

Now change the default shell to zsh

chsh -s $(which zsh)

Install zplug

curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh

Create a symlink to the .zshrc file

ln -s ~/.dotfiles/.zshrc ~/.zshrc

Finally logout to apply the changes.

When opening the terminal again you'll be prompted if you want to install missing plugins just press Y and wait. You'll get a pyenv error but I'll explain how to install pyenv in the next section.


or alternatively:

npm install -g spaceship-prompt

Development

pyenv

I use pyenv to manage python virtual environments and versions for all my python projects, it can easely be installed by using the pyenv-installer. Check the wiki to install the necessary dependencies for installing python versions.

nvm

I use nvm to manage npm environments and versions for all my npm projects, it can easily be installed by using curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash. 👥

ssh keys

If you are like me and you forget to copy your ssh keys every ...fucking ...time follow the links to check/generate/add new ones. 👥

Other Software

  • TLP - Linux Advanced Power Management.

  • Spotify - Spotify client for linux.

  • Wavebox - App to access all of online accounts in one like e-mail, slack and calendar.

  • Discord - Voice chat for G A M E R S.

  • VLC - Free and open source cross-platform multimedia player and framework that plays most multimedia files.

  • Deluge - Lightweight, free and cross-platform BitTorrent client.

  • VS Code - Open source text editor with strong extension support.

  • Chromium - Open source distribution of the Google Chrome browser, great for web development.

  • CherryTree - A hierarchical note taking application, featuring rich text and syntax highlighting, storing data in a single xml or sqlite file. 👥

  • KeeWeb - Free cross-platform password manager compatible with KeePass. 👥

  • Intellij - Integrated development environment (IDE) for developing computer software. 👥

Contributors

A big thanks to everyone that helped by either suggesting or contributing to this guide, you can find them and their projects here: