Tmux Xmonad and HHKB

* Terminal Multiplexer

I used screen for a really long time, but then I descovered tmux which is activiely developed not like screen which it’s development kind of stopped. I don’t really use tmux’s features that aren’t available in screen much. I just wanted to move to something newer and activily developed. Just for a change.

I’ve configured tmux to have almost the same most-used keybinds of screen, added a status bar, and other things. Here’s my dot file

# Keybinds
set -g prefix C-a
bind-key C-a last-window
bind-key k confirm-before -p "kill-window #W? (y/n)" kill-windo
unbind %
bind | split-window -h
bind - split-window -v

# Look n feel
set -g status-bg black
set -g status-fg white
set -g status-left "#[fg=red]#(flip-table)"
set -g status-right ""
set -g status-utf8 on
set -g set-titles off

# highlight active window
set-window-option -g window-status-current-bg blue

# scroll with shift-up-down
set -g terminal-overrides 'xterm*:smcup@:rmcup@'

# Set window notifications
setw -g monitor-activity on
set -g visual-activity on

# set scroll back to 10000 lines
set -g history-limit 10000

# disable visual activity reporting
set -g visual-activity off
set -g visual-content off

* Window Manager (Xmonad)

I’ve always enjoyed tiling window manager because they’re small, faster, and makes my life simplier. Dwm been an awesome WM and I’ve used it for a while. Finally decided to move to something new, and intresting. I found Qtile, awesome, and xmonad. Those and even dwm does the same job, but I wanted something different and xmonad seemed the right choice specially that it’s written in Haskell which I knew nothing about before moving to this WM, and learned quiet much about it since I moved.

dot file

-- Hook send specific application so
-- specific window
myManageHook :: ManageHook
myManageHook = composeAll . concat $
[ [ className =? "firefox" --> doShift "web" ]
, [ className =? "pidgin"  --> doShift "chat" ]
, [ className =? "urxvt"   --> doShift "term" ]
, [ className =? "Xfce4-notifyd" -->; doF W.focusDown <+> doF copyToAll ]

-- main function
main = do
xmproc <- spawnPipe "/usr/bin/xmobar /atom/.xmobarrc"
xmonad $ defaultConfig
{ terminal    = "urxvt"
, modMask     = mod1Mask
, borderWidth = 3
, manageHook  = myManageHook <-> manageHook defaultConfig
--, layoutHook  = avoidStruts  $  layoutHook defaultConfig
, layoutHook  = smartBorders (avoidStruts  $  layoutHook defaultConfig)
, logHook     = dynamicLogWithPP $ xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle  = xmobarColor "green" "" . shorten 50
, ppHiddenNoWindows = xmobarColor "grey" ""
, workspaces  = ["1:term","2:web","3:chat","4:code", "5:other"]

The bar I use is xmobar and I use it on top of the left monitor, it contains the workspaces names numbers, title of active window, the tiling mode, cpu, memory, swap, date, time and weather.

Config { font = "xft:terminus-medium:pixelsize=19"
       , bgColor = "black"
       , fgColor = "grey"
       , position = TopW L 100
       , lowerOnStart = True
       , border = TopB
       , borderColor = "red"
       , commands = [  Run Weather "EGPF" ["-t"," <tempF>F","-L","64","-H","77","--normal","green","--high","red","--low","lightblue"] 36000
                    , Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
                    , Run Memory ["-t","Mem: <usedratio>%"] 10
                    , Run Swap [] 10
                    , Run Date "%a %b %_d %l:%M" "date" 10
                    , Run StdinReader
       , sepChar = "%"
       , alignSep = "}{"
       , template = "%StdinReader% }{ %cpu% | %memory% * %swap%    <fc=#ee9a00>%date%</fc> | %EGPF%"



* Keyboard (Happy Hacking Keyboard)

A very intresting mechanical compact keyboard that wasn’t easy to get used to at the beginning, but as soon as you do. You’ll notice the difference. It only has 60keys, so no arrows, no numpad, no capslock, no f1f2f3f4 or any of the other things that you don’t really use.They can be reached using Fn or anykey you set. This makes the keyboard really small so you don’t have to move your hands around a lot. In one position you’ll be able to reach all the keys. You also can set the DIPs on the back of the keyboard to make it work as you like or as you’re keyboard used to work in either windows, linux, and macOS. I’ve set my DIPs to 011010.


I’ve got the non-printed keys for the keyboard it looks better now :)

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>