Pin anything to your Windows taskbar.
C/C++ + Lua scripted, single file 450KB, zero runtime dependencies.
Download | 中文 | API Docs | Plugin Market
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"}} },
}
})| 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 |
- Download the latest release
- Run
taskpin.exe - Double-click the taskbar strip → management window opens
- Click Market to browse plugins, or Add to add scripts manually
- Pin to Bar to display
| 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) |
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.
-- @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.
# MinGW-w64 + GNU Make + DirectX 11 SDK libraries
make