Free Disk Space Status Bar Component

This program defines a status bar component that shows the amount of free disk space. It demonstrates a status bar component that updates itself on a timer.

You’ll need to place the script in ~/Library/Application Support/iTerm2/Scripts/AutoLaunch. Then manually launch it or restart the app. Then, navigate to Preferences > Profiles > Session. Turn on Status Bar Enabled and select Configure Status Bar. Drag the 123 Fb 💾 component into the bottom section.

#!/usr/bin/env python3.7

import asyncio
import iterm2
import os

def FormatBytes(num, suffix='B'):
    for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']:
        if abs(num) < 1024.0:
            return "%3.1f %s%s" % (num, unit, suffix)
        num /= 1024.0
    return "%.1f %s%s" % (num, 'Yi', suffix)

def GetFreeSpace():
    statvfs = os.statvfs('/')
    return FormatBytes(statvfs.f_frsize * statvfs.f_bavail)

async def main(connection):
    app = await iterm2.async_get_app(connection)

    component = iterm2.StatusBarComponent(
        short_description="Free Space",
        detailed_description="Shows the amount of free disk space",
        exemplar="💾 " + GetFreeSpace(),

    # This function gets called once per second.
    async def coro(knobs, space=iterm2.Reference("iterm2.user.diskspace")):
        return str("💾 " + GetFreeSpace())

    # Register the component.
    await component.async_register(connection, coro)

# This instructs the script to run the "main" coroutine and to keep running even after it returns.