🔥 🤩 My Fucking Awesome Dev Setup 🤩 🔥
Boris Jamot ✊ /

Boris Jamot ✊ / @biros

About: Software Crafter 🐘 / 🐹 + 👷 = 🚀

Location:
🇫🇷 Caen, Normandy
Joined:
Aug 12, 2018

🔥 🤩 My Fucking Awesome Dev Setup 🤩 🔥

Publish Date: Jun 24 '19
186 19

This article was inspired by this other post I saw recently:


It always amazes me that such weekly articles always get so popular. So I wrote another one.

🔍 Quick Overview


🐧 Manjaro

Manjaro is a Linux distribution based on ArchLinux. It's a rolling release, which means that you get updates for your apps very quickly. It can be great for developers, because we don't want to wait to have security or featured updates, but it's also dangerous because such distro can break more easily. So install it at your own risk! That being said, I must tell you that I'm not a great expert of Linux, and I never got stuck with my Manjaro.

Pacman is the default CLI package manager. It's very basic and rudimentary. Now I use yay which is more user-friendly. If you prefer graphical apps, have a look at pamac.

🗔 Deepin Desktop Environment

When it comes to choosing the right desktop environment for a Linux distro, we're often forced to select the less horrible one. You may think I'm a bit excessive, but many well-known window managers (Gnome, KDE, Cinnamon, xfce, ...) are, in their default configuration, just awful.

After having tried many of them (xfce, Gnome, Budgie, i3wm, awesomewm), I finally opted for Deepin Desktop Environment. It works like a charm out-of-the-box and as I'm a lazy developer, it was just perfect for me. The look and feel is clearly inspired by macOS. The dock is very similar, the settings panel also. It's both pure and elegant. Its main advantage is also its main drawback: it's quite not configurable at all. So either it fits your need, either you choose another one.

Deepin Apps Browser

Deepin Settings Panel

Deepin Quick Launcher

Deepin File Manager

Albert

Albert is an Alfred-like launcher that brings you many features in a simple search bar. Just invoke it by some user-defined hotkey (I use <ctrl>+SPC) and start typing!

You can trigger web searches, in-line translations, calculations, shell commands, ... and it's widely extendable with plugins.

👨🏼‍💻 Intellij Ultimate + Go plugin

As a Go developer, I am very pragmatic. Thus, I chose the best tool for my needs, which is Intellij with Go plugin. It has all I need in a modern IDE: completion, browsing, debugging, refactoring, syntax highlighting, ... But it's not a definitive choice. I already tried, with more or less success, several other IDE: VSCode, Atom, Vim. While the first two didn't fully work out-of-the-box, the last (Vim) was pretty impressive (with SpaceVim). But as I wasn't very comfortable with keyboard shortcuts, I finally dropped it for Intellij. I may reconsider this very soon...

👽 Guake + Tmux + Fish + Vim + Modd

Under Linux, you need a shell to run commands. But this shell can't run alone. It needs a terminal emulator. So imagine you want to edit a file, you'll need to run a terminal emulator (say xterm), that will launch your default shell (say bash), and then you'll be able to run vim. It's like russian dolls (xterm > bash > vim). And if you want to split your terminal in several panes, you'll need another layer between your terminal emulator and your shell: tmux (xterm > tmux > bash > vim).

🧙‍♂️ It's the magic of Unix interoperability: each app does its job well, and only its job.

💻 Guake

Guake is a drop-down terminal inspired by the terminal used in the game Quake. I customized it to remove scrollbars, tab bar and title bar so that it just looks like a nude terminal. By default it's hidden and it appears when I press <F12>. I go full screen with <F11>.

My conf:

🤖 Tmux

Tmux is a powerful terminal multiplexer.

screenshot by @gpakozs

I posted an article about my custom setup earlier this year. Have a look on it if you're interested:

🐟 Fish shell

Fish is a user-oriented shell with powerful features like auto-suggestion, completion, command colors, ...

As the shell is the place I spend most time in, I need to have the most useful and clear information in it. That's why I use SpaceFish prompt. It empowers you with git information, version of your favorite language, Docker's version, Vi mode, last command status & duration, ...

I also use oh-my-fish framework to extend the shell with plugins (I recommend grc, g2 fzf, pj & z).

📝 Neovim

Neovim is a refactor of Vim that brings a better plugins system and that is easier to contribute to.

GitHub logo neovim / neovim

Vim-fork focused on extensibility and usability

Coverity Scan analysis Packages Debian CI Downloads

Neovim is a project that seeks to aggressively refactor Vim in order to:

See the Introduction wiki page and Roadmap for more information.

Features

See :help nvim-features for the full list, and :help news for noteworthy changes in the latest version!

Install from package

Pre-built packages for Windows, macOS, and Linux are found on the Releases page.

Managed packages are in Homebrew, Debian, Ubuntu, Fedora, Arch Linux, Void

SpaceVim is a Vim distribution with some default configuration for developers. It comes with an outline (press <F2>), a tree view (press <F3>), and many supported languages (golang, php, python, javascript, ...) for IDE features (completion, syntax highlighting, refactoring, code browsing, debugging, ...). The configuration is made easy with a simple TOML file. It's a good way to step into Vim for newbies.

🕺🏼 All together

Below is a tree-pane view with the following panes:

  • Vim in the main pane (golang SpaceVim layer, with Tagbar and Nerdtree plugins)
  • modd in the bottom-left pane to run my unit tests on modifications
  • a shell in the bottom-right pane to run git commands (git lg)

👾 List of awesome dev CLI tools

  • dockly: Docker UI in CLI
  • httpie: awesome CLI HTTP client
  • jq & fx: CLI JSON viewers
  • lnav: a log file navigator
  • glances: an eye on your system
  • bat: cat clone with syntax highlighting and Git integration
  • exa: the ultimate ls
  • tig: a powerful git wrapper for CLI users
  • newman: automate your Postman tests in CLI or CI/CD
  • icdiff: a user-friendly diff tool (to use with git)

Here it is!

I hope you found it useful.
Don't hesitate to suggest other tools in comments!
Don't hesitate to say if you're tired of seeing such "awesome" articles! ;)

Comments 19 total

  • Ohm ทรัพย์ไพศาล
    Ohm ทรัพย์ไพศาลJun 24, 2019

    How did you get the terminal theme like that? res.cloudinary.com/practicaldev/im...

    • Boris Jamot ✊ /
      Boris Jamot ✊ /Jun 24, 2019

      It's fish shell with spacefish prompt.

      • Boris Jamot ✊ /
        Boris Jamot ✊ /Jun 24, 2019

        First, install fish (e.g. under ArchLinux / Manjaro):

        $ pacman -S fish
        

        Then install oh-my-fish framework:

        $ curl -L https://get.oh-my.fish | fish
        

        And finally install spacefish:

        $ omf install spacefish
        
  • Florimond Manca
    Florimond MancaJun 24, 2019

    Interesting stuff! Just wanted to say that using the F word in the title was maybe not necessary. :-)

    • Boris Jamot ✊ /
      Boris Jamot ✊ /Jun 24, 2019

      I understand your point of view but this title was deliberately sarcastic.

    • Sebastián Duque G
      Sebastián Duque GJun 24, 2019

      I think it helps to highlight how much he likes the subject he's talking about.

      "It's awesome" < "It's fucking awesome"

  • Rémi Lavedrine
    Rémi LavedrineJun 24, 2019

    That's a good article.
    I like Ubuntu Budgie as I find it very clean and useful. It never failed me. :-)
    Instead of exa, I use lsd which is working pretty well.
    fish or zsh are pretty equivalent but I must say that the Spaceship prompt is definitely a must have.

  • Maximo Guerrero
    Maximo GuerreroJun 24, 2019

    I admire people that can stick to vim. With all the keyboard shortcuts. But yes impressive

  • Mahesh K
    Mahesh KJun 24, 2019

    I too settled for Deepin.

    I was a fan of Unity, but it ended. Elementary is just skin on Gnome, nothing new. Gnome and KDE default are painfully ugly.

    I wish Ubuntu makes Deepin fork. So that we don't have to rely on Chinese servers privacy issue.

    • Andrew Bastin
      Andrew BastinJun 24, 2019

      Umm, well you could try installing the environment anyways on Ubuntu, I believe there is a PPA with all the deepin packages...

      • Boris Jamot ✊ /
        Boris Jamot ✊ /Jun 24, 2019

        Yes, sure.

      • Mahesh K
        Mahesh KJun 25, 2019

        Usually PPAs keep the stable version at the time of release of distro and often that's 1 or 2 version behind the current release.

  • Heiker
    HeikerJun 24, 2019

    Anyone knows if there is a SpaceFish prompt equivalent for plain bash?

  • Petry DeChamp Richardson
    Petry DeChamp RichardsonJun 24, 2019

    dude this is so dope! Thank you!

  • Mathiu
    MathiuJun 24, 2019

    Every time I see an article about a linux setup I dream of a reality that Adobe products were available on Linux (at least on some distributions). Its literally the only thing that keeps me for using MacOS for development.

    (Yes I know there are workarounds but until Adobe provide actual support its a no go for me.)

    It's also another time I neovim which makes me curious and I think I'm going to try it out.

    Overall great setup!

    • Mazen Touati
      Mazen TouatiJun 24, 2019

      I feel absolutely the same, the fact that most of my favorite graphic softwares and games are not available on Linux distributions made me always frustrated. In the near Future, I'm planing to install a Linux distribution on my current decent laptop for development and buy a new high-end laptop for modern games and better experience with adobe products. I'll start saving ASAP for that 😂

  • Mihail Malo
    Mihail MaloJun 24, 2019

    What's bad about stock Gnome?

  • Scott Simontis
    Scott SimontisJun 27, 2019

    Cool setup! I'm done with Arch derivatives, I got sick of one random package update blowing up my system in weird ways. I learned you can get a Developer subscription for free to Red Hat Enterprise Linux and I just started using that, opposite end of the spectrum :)

  • E.R. Nurwijayadi
    E.R. NurwijayadiDec 23, 2019

    Parts in terminal ricing 🐧:

    📍 Terminal: urxvt, xfce4-terminal, termite
    📍 Shell: bash, zsh, fish
    📍 Shell Prompt: powerline, oh-my-bash, oh-my-zsh, oh-my-fish
    📍 Multiplexer: tmux, gnu screen
    📍 Multiplexer Wrapper: teamocil, byobu
    📍 Compositor Decoration: Compton
    📍 Padding Decoration: gtk.css
    📍 Background Decoration: Wallpaper
    📍 Example CLI application: neofetch
    📍 Special CLI application: ViM Text Editor
    📍 Pixel Art

    🕷 epsi-rns.github.io/desktop/2018/08...

    Terminal Customization

Add comment