Mike Kitanoski - Personal Website

My i3status.conf Configuration

As you probably know, I use the i3 Window Manager — for reasons that are obvious to anyone who values speed, minimalism, and total control over their workflow. If you haven’t read my dedicated post about why I use i3, you can check it out here: Why I Use the i3 Window Manager. This article builds on that by showing my exact i3status.conf configuration, which keeps my status bar clean, informative, and distraction-free.

Over the years I’ve tried a lot of different status bar setups for i3, but I always come back to simple, fast, and functional. This configuration file is what I use daily. It’s tuned for quick visual feedback, clear color coding, and the ability to keep track of multiple time zones without cluttering the screen.

Configuration File

# i3status configuration file.
# see "man i3status" for documentation.

# It is important that this file is edited as UTF-8.
# The following line should contain a sharp s:
# ß
# If the above line is not correctly displayed, fix your editor first!

general {
	output_format = "i3bar"
	colors = true
	color_good = "#00ff00"
	color_degraded = "#ffff00"
	color_bad = "#ff0000"
	interval = 5
}

order += "battery all"
order += "wireless _first_"
order += "ethernet _first_"
order += "cpu_usage"
order += "load"
order += "cpu_temperature 0"
order += "memory"
order += "disk /"
order += "ipv6"
order += "tztime pacific"
order += "tztime central"
order += "tztime eastern"
order += "tztime local"

battery all {
	format = "%status %percentage %remaining %emptytime %consumption"
	format_down = "No battery"
	low_threshold = "10"
	threshold_type = "percentage"
}

wireless _first_ {
	format_up = "W %signal %essid %ip"
	format_down = "W down"
}

ethernet _first_ {
	format_up = "E %ip (%speed)"
	format_down = "E down"
}

cpu_usage {
	format = "CPU %usage"
	degraded_threshold = "25"
	max_threshold = "75"
}

load {
	format = "%1min-%5min-%15min"
	max_threshold = "4.0"
}

cpu_temperature 0 {
	format = "%degrees°C"
	max_threshold = 80
}

memory {
	format = "M %used *%available"
	threshold_degraded = "80"
	threshold_critical = "90"
}

disk "/" {
	format = "%avail"
}

tztime pacific {
	format = "%Y-%m-%d %H:%M %Z"
	timezone = "US/Pacific"
}

tztime central {
	format = "%H:%M %Z"
	timezone = "US/Central"
}

tztime eastern {
	format = "%H:%M %Z"
	timezone = "US/Eastern"
}

tztime local {
	format = "%Y-%m-%d %H:%M:%S %Z"
}
			

Why This Setup Works for Me

The general section defines the look and feel — I’m using hex color codes for good (green), degraded (yellow), and bad (red) states so issues pop out immediately. The interval of 5 seconds keeps the bar up-to-date without constantly hammering the CPU.

Module Order

The order lines determine what shows up and in what sequence. I like starting with battery status because on a laptop it’s the most critical. Network info comes next, then CPU usage, load averages, temperature, memory, and disk. Finally, I include IPv6 status and four clocks — Pacific, Central, Eastern, and my local time. This lets me coordinate with friends, clients, and colleagues across time zones without mental math.

Battery

I use a very detailed battery format: charge status, percentage, time remaining, empty time, and consumption. If no battery is detected, it shows “No battery.” A low threshold of 10% means I get plenty of warning before a shutdown.

Networking

For wireless, I display signal strength, ESSID, and IP address; for Ethernet, IP and speed. Both modules have simple “down” messages if disconnected, so I can see at a glance when the link is dead.

System Health

CPU usage shows a percentage with degraded and high usage thresholds. The load module uses the familiar 1/5/15-minute averages and warns if load exceeds 4.0. The temperature module warns above 80°C, which for my machine is the point where I want to start cooling it down. Memory usage is displayed as used and available, with clear degraded and critical thresholds.

Disk & Time

I track available space on root (/) because that’s where trouble starts if it fills up. For time, I keep multiple zones visible — not just for work but for personal calls, travel planning, and event coordination.

Final Thoughts

This config is a balance between useful information and readability. It’s compact enough to fit neatly in my i3bar without feeling cluttered, but rich enough that I almost never have to check a separate terminal for system info.