bestK/taskpin

Windows taskbar-embedded status display tool. Pure C + Win32 API.

★ 5Forks 0CGitHub ↗Compare

README

TaskPin

TaskPin

Pin anything to your Windows taskbar.
C/C++ + Lua scripted, single file 450KB, zero runtime dependencies.

Download | 中文 | API Docs | Plugin Market


What it does

Write a Lua script, TaskPin displays the result in your taskbar:

-- Monitor Claude Code working status
return icon("claude.png", 16, 16) .. font(" thinking", "#FFAA00", 9)
-- System resources at a glance
local cpu = sys.cpu()
local mem = sys.memory().percent
return font("CPU:" .. cpu .. "%", "#0F0", 9) .. font(" MEM:" .. mem .. "%", "#FA0", 9)
-- AI API balance
local r = json.decode(http.get("https://api.example.com/balance"))
return font("$" .. r.balance, "#4FC3F7", 10)

Click to open a detail panel — supports images, tables, and transparent HUD overlays:

return bar, true, dialog({
    borderless = true, opacity = 200,
    content = {
        { type = "text", value = "Claude Code", image = "claude.png", image_width = 16, image_height = 16 },
        { type = "table", columns = {"Metric", "Value"}, rows = {{"CPU", "45%"}, {"MEM", "8GB"}} },
    }
})

Features

Taskbar embedded Lives inside the taskbar, no desktop space wasted
Lua scripted Display anything — built-in HTTP, JSON, system monitoring APIs
Plugin market Browse and download community scripts in one click
Rich text + images Multi-color text, PNG/GIF animation, alignment, two-line display
Popup dialogs Click to expand detail panels with images, tables, HUD overlays
Multiple bars Pin multiple scripts side by side, each refreshes independently
Native Windows UI Dear ImGui management window with DirectX 11, taskbar integration stays native
Zero runtime dependencies Dear ImGui and Lua 5.4 are bundled or statically linked, single file ~450KB
Auto update Silent version check, download, replace, and restart

Quick Start

  1. Download the latest release
  2. Run taskpin.exe
  3. Double-click the taskbar strip → management window opens
  4. Click Market to browse plugins, or Add to add scripts manually
  5. Pin to Bar to display

Shortcuts

Action Shortcut
Adjust bar width Scroll wheel on bar
Move bar position Shift + scroll wheel on bar
Move borderless dialog Shift + drag
Resize borderless dialog Shift + scroll wheel
Close borderless dialog ESC (while hovering)

Example Scripts

Claude Code Status Demo
claude_status.lua — real-time Claude Code working status in taskbar

Script Purpose
claude_status Claude Code real-time working status
system_monitor CPU + memory + network speed
net_monitor Network process traffic monitor
hud_clock Desktop floating clock (transparent + clickthrough)
newapi_balance AI API balance query
zentao_task Zentao pending tasks
oracle_sessions Oracle database session monitor

More scripts at the plugin repository.

Write a script

-- @param city string City name
-- @refresh 60000

local r = json.decode(http.get("https://wttr.in/" .. args.city .. "?format=j1"))
local temp = r.current_condition[1].temp_C
local desc = r.current_condition[1].weatherDesc[1].value

return font(temp .. "°C " .. desc, "#4FC3F7", 9), true, dialog({
    title = args.city,
    width = 280, height = 120,
    content = {
        { type = "text", value = args.city .. " " .. temp .. "°C", size = 14, bold = true },
        { type = "text", value = desc, color = "#AAAAAA", size = 10 },
    }
})

@param declares UI input fields, @refresh sets the interval. That's it.

Documentation

Build

# MinGW-w64 + GNU Make + DirectX 11 SDK libraries
make

License

MIT

Contributors

bestK

Issues