Editor guide

On my home machine 😄



FYI You can get rid of the "Last login" with touch .hushlogin

Also, I really like the "cash cow" prompt :)


Here's my work machine 😇



Any macOS terminal has tabs.

This is just the iTerm app as a Terminal replacement. But you can make "bash has tabs" with screen or tmux :) have a look, it's really great for remote work too.

Linux OS have tabs as well. Try ctr+shift+t ;)


Quick tip: If you press Cmd+Shift+4 and then press Space you can take a screenshot of a single application :)


What they didn't tell me: Cmd+Ctrl+Shift+4 will put the screenshot into the clipboard, which is a lot easier when what you want is to paste directly into Slack.

This is awesome too! Unless you use Safari, because Safari doesn't support this =/

My final recommendation for screenshots is Skitch, which has very nifty tools for annotating. I love the arrows especially.

Skitch is great, I stopped using it when I found out that Preview has a lot of those annotating features. It isn't as feature full as Skitch, but it fits me well.


If on Windows 10 there is the WinKey + Shift + S keycombo to launch selecting an area to screen shot which gets copied to the clipboard.
Or just hit WinKey, type snip, and hit enter, then select the Window selection.
Or use the WinKey + Alt + prntscrn shortcut with the correct window selected and a shot will be saved to your Captures directory

All these crazy key combinations, on Linux all you need to do is press the regular old print screen button, and it lets you do any of those things without having to remember arcane sequences ;)

And if you hit Alt + Print,
you get a screenshot of the current focused window.

Good old print screen still works on Windows. These are for custom crops.


Woah that is a neat tip.


In case someone asks, this is the theme.


Nord is the best theme for terminal


Nice post, here is mine. It's really "classic" with a little companion:



that's cool. how?


Just one line in my .zshrc. ;)

export PROMPT='%F{235}%B%c%b%f$(_currentKubernetesContextName)$(_currentEnvironmentName)%(?.(%F{198}♥%f‿%F{198}♥%f.(%F{75}ಥ%f_%F{75}ಥ%f)) '

NB: You can omit the Kubernetes part.


I use termite with zsh. The calendar is when. Font is Inconsolata-dz (a variant with straight quotation marks). Window titles are displayed in my statusbar so I save a tiny bit of space by eliminating borders and titlebars. Pressing ESC or Ctrl+[ switches the command line from insert to command mode so I can navigate as in vi.

dotfiles here

terminal with calendar and git status


is that massive-js as in the not-really-an-orm for postgres? if so i discovered it yesterday - great package!


It is, yes! Glad you like it!


Love the question and all the responses. I'm using zsh and the man theme - ran a few dir and speak commands to show how git and time are incorporated.


This kinda looks like a giant Post-It note. I like that.


I stumbled on the yellow while playing around with the default choices in Terminal. :) I like it...almost all of my other coding screens are dark grey.


I try to keep it pretty minimal

iTerm with zsh


Here is my minimal setup:

minimal terminal setup


how to have 3 different color please

Default Oh My ZSH setup

Seems more like prezto and not Oh My ZSH.

Yeah you are correct, my bad. I have since switched over to fish shell.


Nothing special, iTerm2 with a few custom preferences.
terminal pic


I have this in a separate iTerm window. Love tiny-care-terminal.


I have a random happy ascii character and a motivational phrase every new window. :)


Here is mine.

Terminal panes:

I do like termite, but this is the normal terminal in gnome. I just never got around to compiling termite on this machine.


Here's where I make the money...


This is the ideal terminal. You may not like it, but this is what peak performance looks like.


Is it? From my experience, the windows terminal is both less useful and simply slower to use than any Unix terminal. But it certainly gets the job done.

GG Allyn is referencing this: twitter.com/scrowder/status/687260...

There are definitely better terminals, even on Windows. Still, this is what I get paid for

Ah, I get it. Yeah, for our Windows servers I like git bash.

Our environment is locked down enough that git bash isn’t an option for me. I like it when I get the chance, though!

The Linux simulation you see when you open Git Bash is actually MSYS2 which you can find right here

You can do really cool things with it, like using the GCC tool-chain right inside of Windows.


Here's mine :D

And on Windows:


Hold on while I go install neofetch...


What terminal are you using for Windows. I've been using Git Bash but am looking for something better, preferably something with ZSH.


Sorry to disappoint, I'm actually using the Windows Subsystem for Linux together with VcXsrv and basically I just compiled my regular linux terminal for it ( st.suckless.org/ )
The font I'm using is Realtime by Juri Zaech in case anybody cares.

I hope this helps, but I'm sorry if it doesn't.

Edit: st has quite a few drawbacks. It's a terminal emulator and literally nothing else. You don't even have a scrollback buffer. There are patches on the website for it, but expect to manually splice them in with some code surgery, because those patches are always out of date.


Is that NERDTree or something different?


How's react dev in vim?

I ended up moving away because I couldn't deal with large projects - I've started pulling it up for quick edits in my Vs code terminal though. I miss the utility


Works very well for me and especially with the combination of tmux I do all my coding in one terminal window. I can even zoom in one pane, do something and zoom back out.


What editor is that? Looks neat.


Lol I know how to exit vim, I swear. Didn't recognize it with the file explorer showing.


Any way you can share your .vimrc? would like to check out your settings.


Sure thing, use this branch it is up to date github.com/Khaledgarbaya/dotfiles/...


termux on android
Termux on android - I use default terminals (nothing fancy) with dotfiles in source control so all my devices are matching and I can re-provision if I want to destroy them with fire.

My desktop/laptop/server are all the same format (different uname in PS1, semi-transparent background, otherwise default gnome-terminal), and red PS1 when ssh'd in (since I used to shut down the wrong box from time to time). Obviously programming on my phone is a last resort, but it's saved me from production fires before - ssh and data, what else do you need?


That's my terminal, I use Hyper with the zsh theme zeit.zsh-theme. I like to keep it simple.


Really don't get why anyone would run node just to type in a terminal... This confuses me. Though it does look pretty.


My work linux box:
 ✔ jacoby@oz 16:40 42°F    ~

Meaning, left-to-right:
My computer is up-to-date
TaskWarrior is happy with me
I'm me on my computer
It's almost time to go
It's not too cold out
I've had two cups of coffee today
I'm in my home directory


Wow...and I immediately had to go and look up Taskwarrior :)


How??? I want this config!


It helps if you have Font Awesome set up on your system.

This needs cleaning up. As pasted from my prompt.sh

# prompt.sh

# the unified prompt for Dave Jacoby, based on system settings
# and capabilities.

# if a capability is absent for an entry, such as TaskWarrior
# or ACPI, the prompt will drop that in favor of entries it
# can handle.

# Tasks

#   * I have partially added Font Awesome to the prompt,
#     especially for the buttons. I need to more fully 
#     integrate FA fonts. For example, with TaskWarrior 
#     icons

# this part is just fun-with-utf8
# https://twitter.com/pjf/status/852466839145795584

# shows if any TaskWarrior tasks are in need of attention
function task_indicator {
    if [ `task +READY +OVERDUE count` -gt "0" ]  ; then
        printf "%b" "\u$OVERDUE"
    elif [ `task +READY +DUETODAY count` -gt "0" ]  ; then
        printf "%b" "\u$DUETODAY"
    elif [ `task +READY +DUETomorrow count` -gt "0" ]  ; then
        printf "%b" "\u$DUETOMORROW"
    elif [ `task +READY urgency \> 10 count` -gt "0" ]  ; then
        printf "%b" "\u$URGENT"
        printf "%b" "\u$OK"

# here I switch to Font-Awesome, which might not show for dev.to
fa_plug="" # fa-plug [&#xf1e6
fa_battery="" # fa-battery (alias) [] 4.4
fa_battery_0="" # fa_battery_0 (alias) [] 4.4
fa_battery_1="" # fa_battery_1 (alias) [] 4.4
fa_battery_2="" # fa_battery_2 (alias) [] 4.4
fa_battery_3="" # fa_battery_3 (alias) [] 4.4
fa_battery_4="" # fa_battery_4 (alias) [] 4.4
fa_battery_empty="" # fa_battery_empty [] 4.4
fa_battery_full="" # fa_battery_full [] 4.4
fa_battery_half="" # fa_battery_half [] 4.4
fa_battery_quarter="" # fa_battery_quarter [] 4.4
fa_battery_three="" # fa_battery_three-quarters [] 4.3 fa-bed [&

# works on my Linux laptop, not on my desktop

# shows if the battery is currently charging
function battery_charging {
    CHARGING=`/usr/bin/acpi | awk '{ print $3}'`
    if [ $CHARGING = 'Discharging,' ];  then
        printf '%s' $fa_plug
        printf '%s' $fa_bolt

# shows current status of battery
# 0  - 12     EMPTY
# 13 - 37     QUARTER
# 38 - 62     HALF
# 63 - 87     THREE-QUARTER
# 88 - 100    FULL
function battery_life {
    ACPI=`/usr/bin/acpi | awk '{ print $4}'`
    if   [ $ACPI == "100" ];then 
        printf '%s ' $fa_battery_4
    elif [   $ACPI -lt "13" ];then
        printf '%s ' $fa_battery_0
    elif [ $ACPI -lt "38" ];then
        printf '%s ' $fa_battery_1
    elif [ $ACPI -lt "63" ];then
        printf '%s ' $fa_battery_2
    elif [ $ACPI -lt "88" ];then
        printf '%s ' $fa_battery_3
        printf '%s ' $fa_battery_4

# opening tag for setting color. depends on a lot of
# variations, including host
function opentag {
    if [ -f "/bin/hostname" ] ; then

    if [[ $HOST == *"purdue.edu" ]] ; then
        HOST=`/bin/hostname -s`

    bold='1;'   #1
    dim=''      #2
    italic=''   #3
    reverse=''  #7

    if [ $HOST = 'oz' ]; then
        if [[ -z $DESKTOP_SESSION ]] ; then

    elif [ $HOST = 'Lion' ];then
        # if [ -z $SYSTEMDRIVE ] ; then
        #    foreground='38;5;196'
        #     bold='1;'
        # fi

    elif [ $HOST = 'gort' ]; then

    # works in WSL, not in Git4Windows Bash
    elif [ $HOST = 'K9' ]; then

    printf "\e[%s%s%s%s%sm" $bold $dim $italic $reverse $background $foreground
    # unset HOST foreground background bold dim italic reverse 

# closes all open tag types
function closetag {
    printf "\e[0m"

# if wanted, just bold and white
function boldwhite {
    printf "\e\[1;38;5;255m"

# sets the PS1 variable
# function set_ps1 {

    header="\[\033]0;\u@\h: \w\007\]"
    # chroot="${debian_chroot:+($debian_chroot)}"
    userhost="\u@\h "
    localtime="\A "
    path="\w "
    end="\n\$ "

    # the coffee, weather and reboot info are called in other programs
    # every time the prompt is run
    coffee="\$(~/bin/get_coffee.pl) "



    # I add getting and storing the DBUS address so I can 
    # control Spotify from the command line and take webcam
    # pictures via Crontab
    if [ -f ~/local/bin/pull_dbus_address.sh ];then


    if [ -f ~/bin/need_reboot.pl ];then
        prompt="$prompt$reboot "

    if [ -f /usr/bin/acpi ];then
        prompt="$prompt$battery_charging "
        prompt="$prompt$battery_life "

    if [ -f /usr/bin/task ];then
        prompt="$prompt$task "


    if [ -f ~/bin/get_temp.pl ];then
        prompt="$prompt$temp "

    if [ -f ~/bin/get_coffee.pl ];then
        prompt="$prompt$coffee "


    if [ -f ~/.timing ];then
        prompt="$prompt$timer_show "


    trap 'timer_start' DEBUG
    export PS1=$prompt
    # unset chroot close coffee dbus end git header open path prompt reboot task temp localtime userhost
# }

# set_ps1

and this in my .bashrc:

if [ -f /home/jacoby/bin/prompt.sh ]; then
    source /home/jacoby/bin/prompt.sh 
    export PS1="\n\
\[\033]0;\u@\h: \w\007\]\
\u@\h \
\A \
\n\$ "


The // ♥ is the default prompt in Flatiron School's IDE (a play on their motto "Learn, Love, Code"), and I've been adding it to my terminal ever since.

My Terminal


how do i get out of script and the // ♥ prompt? I can't use terminal for anything else.


The settings for the prompt are usually in a file in the home directory called .bashrc or .bash_profile, search for PS1, that's the variable that holds your bash prompt. If you want to change it just change the value of PS1.

There are lots of tutorials online that teach how to add dynamic information to the prompt, like the current working directory, the time, and how to add color.

Thanks for the help,

It seems that some kind of script was running and even when I exit it, It would restart when opened terminal again.

It started after I followed the set up the Flatiron school tutorials.

In the end I deleted all the .bashxx files and restarted terminal.

Nothing succeeds like excess!


Here's mine! Tmux + fish + custom themes for both iterm and emacs
(github.com/olkinn/forest-blue-iTerm and github.com/olkinn/forest-blue-emacs)



WSL (Windows Subsystem for Linux) in Hyper with ZSH
Hyper Config: gist.github.com/TimothyCole/a15953...

WSL in Hyper


Pretty! But how is Hyper performance? (startup times, execution, etc)


The Hyper buffer is very bad... You can't run cat on large files. But the rest is acceptable, the slowest thing is WSL with OhMyZSH

I do find OhMyZsh kinda slow on WSL. There are ways of reducing the issue but not completely :-\


I don't have any problems with startup times or anything. It takes like half a second to open and it's fine. (I have an i7-6700k with 32GB of Ram if that helps)


Work Macbook: Hyper with Pure, and Zsh using the Spaceship theme

Hyper screenshot


This is the best, because I use the same😁


spaceship-prompt + tmux in Hyper with hypernasa plugin. Left pane is gtop.

The entire .zshrc can be found in my setup repo


What's performance on Hyper like? I ask because I know how slow atom can be and seeing as how this is also built on electron I'm a little skeptical on it's performance potential.
Also, my terminal:

Thermatix's Terminal

I run Tmux with vim as my main editor and zsh as my shell, I use zplug for zsh plugin management.
My theme is gruvbox on my term and in vim


It's not fantastic, but good enough for how I use it. Performance degrades quickly as you start adding plugins.

I typically use VS Code's terminal for the convenience, but it's also wicked fast. Sure do miss the APOD background though...

EDIT: Hyper 2 uses VS Code's renderer, thus it's now also wicked fast.


I use hyper as terminal, zsh as shell and pure (github.com/sindresorhus/pure).



here is mine, every time someone says something about it, it gets more colorful.

a photo of my terminal


You can make a picture show up by using markdown, like this.

![alt text](https://thepracticaldev.s3.amazonaws.com/i/l7x9ht1ynb1n053xwoyo.png)

Where the url is your own, of course.


I like it simple and clean :)

Hyper (w/ Hyper One Light theme for the white background) + Zsh + Spaceship theme



Here's mine, I'm using iTerm2 on macOS with oh-my-zsh, color theme is nova and the iTerm theme is cobalt2



Are you using git bash on Windows 10? What's wrong with WSL?

I have Ubuntu WSL with a console theme and oh my zsh with power-line theme and a patched font, for use as regular terminal. But I also have it set for using as the terminal in vscode.


Wsl is the best thing in Windows. Nothing is wrong with it. 😋


How did you patch your fonts on WSL? I noticed some icons are not displaying on my terminal. I use fira code


The one I was using was from the power line font pack, there is a patched power line pack. I'm not sure if that had First.

However, there is now Nerd Fonts (github.com/ryanoasis/nerd-fonts) which is a much larger pack of patched fonts - still not sure if first is in that.

To use any of the forms from any pack, simply unzip the font you want, install it on windows in the normal manner (right click & install iirc) then restart the shell and check the shell properties to select the new font.

Thanks alot for replying. Let me try this right away.

Edit: Hey @toby it worked.

I don't like the amount of information being displayed there. Any tip on how to make it lean like yours?

Thank You


My terminal: hyper-terminal

Configuration: .hyper.js (Still a long way from complete)



I use Guake drop-down terminal with plain ol' bash, a hotkey to open the pane on demand, and semi-transparent so I can see what's going on underneath--often because I have a how-to of some sort open at the same time for reference.

Guake drop-down terminal


Konsole with several tabs. DejaVu Sans Mono font (since I've yet to find proportional font friendly terminals and apps). Very large scroll-back buffer, though I clear it often. Bash.


alacritty + tmux + zsh



tmux, and always a pane with htop and another with docker stats.


I don't think mine is much to look at, other than the status bar at the top. Looking at everyone else's terminals makes me want to fancy mine up more. I mainly wanted to post this because I only saw one other PowerShell user.

powershell lol


Why don't you user hyper. It's cool. But powershell is too.


Because Hyper appears to be only for OSX and I use Windows?

nope, it's cross-platform.


Nothing fancy here.

Mac OS terminal


I am using Terminal.app with zsh and sobole as theme.
I wrote two articles about my setup: Instant +100% command line productivity boost, Using better CLIs

You can copy all my dotfiles from github: github.com/sobolevn/dotfiles



You can see my terminal setup in My Mac Setup. TLDR fish shell and iTerm2 with Joker theme, but about to switch back to agnoster. I'm on public transportation at the moment, but there's a screenshot in my setup post.


Alright, back in front of my laptop. Here you go.



Same setup at home and work since I keep all my dotfiles in git.

iTerm, running ZSH (configured via Prezto + custom prompt), font is the excellent FiraCode (12pt Retina). Some things of note:

  1. Prompt autodetects type of project and shows me the relevant Ruby/Node/Python etc versions
  2. Syntax highlighting for commands (that's why "wrong" on the fist line is in red, it's an invalid command)
  3. Mark failure of last command at beginning of prompt (the red [✘] at the second prompt)
  4. "ls" and all corresponding aliases replaced by exa
  5. Excellent ZSH autocomplete in action

OhMyZSH + Iterm + spaceship theme


This is my work machine
I'm using Iterm2 with zsh shell. The font is mononoki and the syntax theme is panda syntax. Also the system default fullscreen is disabled and has a toggle hotkey for cmd + (dot). So anytime i want something i can toggle my terminal.


Standard OS X Terminal with slightly tweaked Novel theme.

Standard OS X Terminal with slightly tweaked Novel theme.


Here is mine: bash with nerd fonts, tuned git prompt, icons based on location + files in folder & custom colors

Bash term


I'll bite!

Zsh with oh-my-zsh and zsh syntax highlighting. Stock Gnome colors... I'll see if I can find an old setup, when I didn't like anything stock



Emacs in a Mac Terminal.
The bottom buffer is a shell, the top buffer is whatever I am working on (at the moment, a document for docs.opendatakit.org).

When working on web stuff, including docs (which I usually am), I also keep a second terminal open that runs a Python http.server in the build directory.

Emacs has a few different terminal options. I only really like shell, but none of them quite work like I want to.

Emacs in Terminal


I've got two. Guake is used whenever I need a terminal alongside other windows...


...but if I need to work exclusively in the terminal for a while, I use Terminator...



Using spaceship prompt & a terminal color theme of my own devising:


Love it! Do you have a link to the image you have as the background?


It's from one of the wallpapers in this pack, if I remember correctly!


Here's mine.

iTerm 2, running oh-my-zsh with the Spaceship theme.

Font is Operator Mono, color scheme is Cobalt2.

AC Terminal


My home setup uses st, tmux with my own theme, zsh with oh-my-zsh and my own theme. The editor is kakoune with theme desertex (comes with the editor). The low contrast shows that the pane is currently not active.


How did you get tmux to work with st / kakoune if you don't mind me asking? I'm absolutely loving kakoune + tmux, but the colors are all wonky at the moment. If I try the color overrides in my tmux.conf, then tmux panes fail to work when using Kakoune to invoke them ;(


[EDIT] Nevermind! I discovered that I had the wrong overrides :D Thank you for your configs!! I never did take the time to understand the whole tmux color business; I think it's now time that I did.


I'm still looking forward to tweaking it more ... but so far I like it.
My terminal


How do you add the background photo?