claude-status 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- claude_status-0.1.0/LICENSE +21 -0
- claude_status-0.1.0/PKG-INFO +185 -0
- claude_status-0.1.0/README.md +156 -0
- claude_status-0.1.0/claude_status.egg-info/PKG-INFO +185 -0
- claude_status-0.1.0/claude_status.egg-info/SOURCES.txt +17 -0
- claude_status-0.1.0/claude_status.egg-info/dependency_links.txt +1 -0
- claude_status-0.1.0/claude_status.egg-info/entry_points.txt +2 -0
- claude_status-0.1.0/claude_status.egg-info/top_level.txt +1 -0
- claude_status-0.1.0/claude_statusline/__init__.py +3 -0
- claude_status-0.1.0/claude_statusline/__main__.py +5 -0
- claude_status-0.1.0/claude_statusline/bar.py +56 -0
- claude_status-0.1.0/claude_statusline/cli.py +407 -0
- claude_status-0.1.0/claude_statusline/colors.py +48 -0
- claude_status-0.1.0/claude_statusline/formatters.py +109 -0
- claude_status-0.1.0/claude_statusline/git.py +61 -0
- claude_status-0.1.0/claude_statusline/themes.py +95 -0
- claude_status-0.1.0/pyproject.toml +45 -0
- claude_status-0.1.0/setup.cfg +4 -0
- claude_status-0.1.0/tests/test_all.py +527 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mallikarjuna
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: claude-status
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Beautiful, informative status line for Claude Code — zero dependencies, cross-platform
|
|
5
|
+
Author: Mallikarjuna
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/mkalkere/claude-statusline
|
|
8
|
+
Project-URL: Repository, https://github.com/mkalkere/claude-statusline
|
|
9
|
+
Project-URL: Issues, https://github.com/mkalkere/claude-statusline/issues
|
|
10
|
+
Keywords: claude-code,claude,statusline,status-bar,cli,terminal,developer-tools,anthropic,claude-status
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
|
+
Classifier: Topic :: Software Development :: User Interfaces
|
|
24
|
+
Classifier: Topic :: Terminals
|
|
25
|
+
Requires-Python: >=3.8
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# claude-status
|
|
31
|
+
|
|
32
|
+
**Beautiful, informative status line for Claude Code — zero dependencies, cross-platform.**
|
|
33
|
+
|
|
34
|
+
[](https://pypi.org/project/claude-status/)
|
|
35
|
+
[](https://pypi.org/project/claude-status/)
|
|
36
|
+
[](https://opensource.org/licenses/MIT)
|
|
37
|
+
[](https://github.com/mkalkere/claude-statusline/actions)
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
[████████░░░░░░░░░░░░] in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Why claude-status?
|
|
44
|
+
|
|
45
|
+
- **Zero dependencies** — pure Python stdlib, installs in seconds
|
|
46
|
+
- **Cross-platform** — Windows, macOS, Linux — tested on all three
|
|
47
|
+
- **pip install** — no npm, no cargo, no compilation
|
|
48
|
+
|
|
49
|
+
## Quick Start
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install claude-status
|
|
53
|
+
claude-status --install
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Restart Claude Code. Done.
|
|
57
|
+
|
|
58
|
+
## Installation
|
|
59
|
+
|
|
60
|
+
### pip (recommended)
|
|
61
|
+
```bash
|
|
62
|
+
pip install claude-status
|
|
63
|
+
claude-status --install
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### pipx (isolated)
|
|
67
|
+
```bash
|
|
68
|
+
pipx install claude-status
|
|
69
|
+
claude-status --install
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### uvx (fast)
|
|
73
|
+
```bash
|
|
74
|
+
uvx claude-status --install
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### From source
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/mkalkere/claude-statusline.git
|
|
80
|
+
cd claude-status
|
|
81
|
+
pip install -e .
|
|
82
|
+
claude-status --install
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### What `--install` does
|
|
86
|
+
|
|
87
|
+
Adds `statusLine` to `~/.claude/settings.json` — preserves all existing settings.
|
|
88
|
+
Use `--theme` to pick a theme: `claude-status --install --theme powerline`
|
|
89
|
+
|
|
90
|
+
> **Command not found?** Make sure your Python scripts directory is in PATH.
|
|
91
|
+
> Fallback: `python -m claude_statusline --install`
|
|
92
|
+
|
|
93
|
+
## Features
|
|
94
|
+
|
|
95
|
+
| Feature | Description |
|
|
96
|
+
|---------|-------------|
|
|
97
|
+
| Context bar | 20-char progress bar, green/yellow/red adaptive |
|
|
98
|
+
| Token counts | Input/output with human-readable formatting (245K, 1.2M) |
|
|
99
|
+
| Cache efficiency | % of tokens served from prompt cache |
|
|
100
|
+
| Cost tracking | Session cost in USD |
|
|
101
|
+
| Burn rate | Tokens/min consumption rate |
|
|
102
|
+
| Session duration | Wall-clock time |
|
|
103
|
+
| Lines changed | +added / -removed with git-diff colors |
|
|
104
|
+
| Git branch | Color-coded (green=main, yellow=feature) |
|
|
105
|
+
| Context size | (200K) vs (1M) indicator |
|
|
106
|
+
| !CTX warning | Red alert when exceeding 200K tokens |
|
|
107
|
+
| Vim mode | NORMAL/INSERT indicator |
|
|
108
|
+
| Agent name | Shows active subagent |
|
|
109
|
+
| Worktree | Branch indicator when in worktree |
|
|
110
|
+
|
|
111
|
+
## Themes
|
|
112
|
+
|
|
113
|
+
### default
|
|
114
|
+
```
|
|
115
|
+
[████████░░░░░░░░░░░░] │ in:245K out:18K │ cache:78% │ $0.73 │ burn:2.1K/min │ 12m05s │ +247 -38 │ ⎇ feat/statusline │ (200K)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### minimal
|
|
119
|
+
```
|
|
120
|
+
●●●●●●●●·············· 245K $0.73 12m05s ⎇ feat/statusline
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### powerline
|
|
124
|
+
```
|
|
125
|
+
████████░░░░░░░░░░░░ in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Preview all themes: `claude-status --demo`
|
|
129
|
+
|
|
130
|
+
## CLI Reference
|
|
131
|
+
|
|
132
|
+
| Command | Description |
|
|
133
|
+
|---------|-------------|
|
|
134
|
+
| `claude-status --install` | Auto-configure Claude Code |
|
|
135
|
+
| `claude-status --install --theme powerline` | Install with specific theme |
|
|
136
|
+
| `claude-status --demo` | Preview all themes with sample data |
|
|
137
|
+
| `claude-status --doctor` | Diagnostics: Python, OS, terminal, settings |
|
|
138
|
+
| `claude-status --version` | Version info |
|
|
139
|
+
| `claude-status --help` | Usage |
|
|
140
|
+
|
|
141
|
+
## Manual Configuration
|
|
142
|
+
|
|
143
|
+
If you prefer manual setup, add to `~/.claude/settings.json`:
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"statusLine": "claude-status"
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Or with a theme:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"statusLine": "claude-status --theme minimal"
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Comparison
|
|
160
|
+
|
|
161
|
+
| Feature | claude-status | ccstatusline | claude-powerline |
|
|
162
|
+
|---------|:-:|:-:|:-:|
|
|
163
|
+
| Language | Python | Node.js | Bash |
|
|
164
|
+
| Dependencies | 0 | npm | bash-only |
|
|
165
|
+
| pip install | Yes | No | No |
|
|
166
|
+
| Cross-platform | Yes | Partial | Unix only |
|
|
167
|
+
| Themes | 3 | 1 | 1 |
|
|
168
|
+
| Burn rate | Yes | No | No |
|
|
169
|
+
| Auto-install | Yes | Manual | Manual |
|
|
170
|
+
|
|
171
|
+
## Uninstall
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
pip uninstall claude-status
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Then remove `"statusLine"` from `~/.claude/settings.json`.
|
|
178
|
+
|
|
179
|
+
## Contributing
|
|
180
|
+
|
|
181
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
182
|
+
|
|
183
|
+
## License
|
|
184
|
+
|
|
185
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# claude-status
|
|
2
|
+
|
|
3
|
+
**Beautiful, informative status line for Claude Code — zero dependencies, cross-platform.**
|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/claude-status/)
|
|
6
|
+
[](https://pypi.org/project/claude-status/)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://github.com/mkalkere/claude-statusline/actions)
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
[████████░░░░░░░░░░░░] in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Why claude-status?
|
|
15
|
+
|
|
16
|
+
- **Zero dependencies** — pure Python stdlib, installs in seconds
|
|
17
|
+
- **Cross-platform** — Windows, macOS, Linux — tested on all three
|
|
18
|
+
- **pip install** — no npm, no cargo, no compilation
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install claude-status
|
|
24
|
+
claude-status --install
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Restart Claude Code. Done.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
### pip (recommended)
|
|
32
|
+
```bash
|
|
33
|
+
pip install claude-status
|
|
34
|
+
claude-status --install
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### pipx (isolated)
|
|
38
|
+
```bash
|
|
39
|
+
pipx install claude-status
|
|
40
|
+
claude-status --install
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### uvx (fast)
|
|
44
|
+
```bash
|
|
45
|
+
uvx claude-status --install
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### From source
|
|
49
|
+
```bash
|
|
50
|
+
git clone https://github.com/mkalkere/claude-statusline.git
|
|
51
|
+
cd claude-status
|
|
52
|
+
pip install -e .
|
|
53
|
+
claude-status --install
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### What `--install` does
|
|
57
|
+
|
|
58
|
+
Adds `statusLine` to `~/.claude/settings.json` — preserves all existing settings.
|
|
59
|
+
Use `--theme` to pick a theme: `claude-status --install --theme powerline`
|
|
60
|
+
|
|
61
|
+
> **Command not found?** Make sure your Python scripts directory is in PATH.
|
|
62
|
+
> Fallback: `python -m claude_statusline --install`
|
|
63
|
+
|
|
64
|
+
## Features
|
|
65
|
+
|
|
66
|
+
| Feature | Description |
|
|
67
|
+
|---------|-------------|
|
|
68
|
+
| Context bar | 20-char progress bar, green/yellow/red adaptive |
|
|
69
|
+
| Token counts | Input/output with human-readable formatting (245K, 1.2M) |
|
|
70
|
+
| Cache efficiency | % of tokens served from prompt cache |
|
|
71
|
+
| Cost tracking | Session cost in USD |
|
|
72
|
+
| Burn rate | Tokens/min consumption rate |
|
|
73
|
+
| Session duration | Wall-clock time |
|
|
74
|
+
| Lines changed | +added / -removed with git-diff colors |
|
|
75
|
+
| Git branch | Color-coded (green=main, yellow=feature) |
|
|
76
|
+
| Context size | (200K) vs (1M) indicator |
|
|
77
|
+
| !CTX warning | Red alert when exceeding 200K tokens |
|
|
78
|
+
| Vim mode | NORMAL/INSERT indicator |
|
|
79
|
+
| Agent name | Shows active subagent |
|
|
80
|
+
| Worktree | Branch indicator when in worktree |
|
|
81
|
+
|
|
82
|
+
## Themes
|
|
83
|
+
|
|
84
|
+
### default
|
|
85
|
+
```
|
|
86
|
+
[████████░░░░░░░░░░░░] │ in:245K out:18K │ cache:78% │ $0.73 │ burn:2.1K/min │ 12m05s │ +247 -38 │ ⎇ feat/statusline │ (200K)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### minimal
|
|
90
|
+
```
|
|
91
|
+
●●●●●●●●·············· 245K $0.73 12m05s ⎇ feat/statusline
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### powerline
|
|
95
|
+
```
|
|
96
|
+
████████░░░░░░░░░░░░ in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Preview all themes: `claude-status --demo`
|
|
100
|
+
|
|
101
|
+
## CLI Reference
|
|
102
|
+
|
|
103
|
+
| Command | Description |
|
|
104
|
+
|---------|-------------|
|
|
105
|
+
| `claude-status --install` | Auto-configure Claude Code |
|
|
106
|
+
| `claude-status --install --theme powerline` | Install with specific theme |
|
|
107
|
+
| `claude-status --demo` | Preview all themes with sample data |
|
|
108
|
+
| `claude-status --doctor` | Diagnostics: Python, OS, terminal, settings |
|
|
109
|
+
| `claude-status --version` | Version info |
|
|
110
|
+
| `claude-status --help` | Usage |
|
|
111
|
+
|
|
112
|
+
## Manual Configuration
|
|
113
|
+
|
|
114
|
+
If you prefer manual setup, add to `~/.claude/settings.json`:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"statusLine": "claude-status"
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Or with a theme:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"statusLine": "claude-status --theme minimal"
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Comparison
|
|
131
|
+
|
|
132
|
+
| Feature | claude-status | ccstatusline | claude-powerline |
|
|
133
|
+
|---------|:-:|:-:|:-:|
|
|
134
|
+
| Language | Python | Node.js | Bash |
|
|
135
|
+
| Dependencies | 0 | npm | bash-only |
|
|
136
|
+
| pip install | Yes | No | No |
|
|
137
|
+
| Cross-platform | Yes | Partial | Unix only |
|
|
138
|
+
| Themes | 3 | 1 | 1 |
|
|
139
|
+
| Burn rate | Yes | No | No |
|
|
140
|
+
| Auto-install | Yes | Manual | Manual |
|
|
141
|
+
|
|
142
|
+
## Uninstall
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
pip uninstall claude-status
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Then remove `"statusLine"` from `~/.claude/settings.json`.
|
|
149
|
+
|
|
150
|
+
## Contributing
|
|
151
|
+
|
|
152
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
153
|
+
|
|
154
|
+
## License
|
|
155
|
+
|
|
156
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: claude-status
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Beautiful, informative status line for Claude Code — zero dependencies, cross-platform
|
|
5
|
+
Author: Mallikarjuna
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/mkalkere/claude-statusline
|
|
8
|
+
Project-URL: Repository, https://github.com/mkalkere/claude-statusline
|
|
9
|
+
Project-URL: Issues, https://github.com/mkalkere/claude-statusline/issues
|
|
10
|
+
Keywords: claude-code,claude,statusline,status-bar,cli,terminal,developer-tools,anthropic,claude-status
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
|
+
Classifier: Topic :: Software Development :: User Interfaces
|
|
24
|
+
Classifier: Topic :: Terminals
|
|
25
|
+
Requires-Python: >=3.8
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# claude-status
|
|
31
|
+
|
|
32
|
+
**Beautiful, informative status line for Claude Code — zero dependencies, cross-platform.**
|
|
33
|
+
|
|
34
|
+
[](https://pypi.org/project/claude-status/)
|
|
35
|
+
[](https://pypi.org/project/claude-status/)
|
|
36
|
+
[](https://opensource.org/licenses/MIT)
|
|
37
|
+
[](https://github.com/mkalkere/claude-statusline/actions)
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
[████████░░░░░░░░░░░░] in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Why claude-status?
|
|
44
|
+
|
|
45
|
+
- **Zero dependencies** — pure Python stdlib, installs in seconds
|
|
46
|
+
- **Cross-platform** — Windows, macOS, Linux — tested on all three
|
|
47
|
+
- **pip install** — no npm, no cargo, no compilation
|
|
48
|
+
|
|
49
|
+
## Quick Start
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install claude-status
|
|
53
|
+
claude-status --install
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Restart Claude Code. Done.
|
|
57
|
+
|
|
58
|
+
## Installation
|
|
59
|
+
|
|
60
|
+
### pip (recommended)
|
|
61
|
+
```bash
|
|
62
|
+
pip install claude-status
|
|
63
|
+
claude-status --install
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### pipx (isolated)
|
|
67
|
+
```bash
|
|
68
|
+
pipx install claude-status
|
|
69
|
+
claude-status --install
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### uvx (fast)
|
|
73
|
+
```bash
|
|
74
|
+
uvx claude-status --install
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### From source
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/mkalkere/claude-statusline.git
|
|
80
|
+
cd claude-status
|
|
81
|
+
pip install -e .
|
|
82
|
+
claude-status --install
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### What `--install` does
|
|
86
|
+
|
|
87
|
+
Adds `statusLine` to `~/.claude/settings.json` — preserves all existing settings.
|
|
88
|
+
Use `--theme` to pick a theme: `claude-status --install --theme powerline`
|
|
89
|
+
|
|
90
|
+
> **Command not found?** Make sure your Python scripts directory is in PATH.
|
|
91
|
+
> Fallback: `python -m claude_statusline --install`
|
|
92
|
+
|
|
93
|
+
## Features
|
|
94
|
+
|
|
95
|
+
| Feature | Description |
|
|
96
|
+
|---------|-------------|
|
|
97
|
+
| Context bar | 20-char progress bar, green/yellow/red adaptive |
|
|
98
|
+
| Token counts | Input/output with human-readable formatting (245K, 1.2M) |
|
|
99
|
+
| Cache efficiency | % of tokens served from prompt cache |
|
|
100
|
+
| Cost tracking | Session cost in USD |
|
|
101
|
+
| Burn rate | Tokens/min consumption rate |
|
|
102
|
+
| Session duration | Wall-clock time |
|
|
103
|
+
| Lines changed | +added / -removed with git-diff colors |
|
|
104
|
+
| Git branch | Color-coded (green=main, yellow=feature) |
|
|
105
|
+
| Context size | (200K) vs (1M) indicator |
|
|
106
|
+
| !CTX warning | Red alert when exceeding 200K tokens |
|
|
107
|
+
| Vim mode | NORMAL/INSERT indicator |
|
|
108
|
+
| Agent name | Shows active subagent |
|
|
109
|
+
| Worktree | Branch indicator when in worktree |
|
|
110
|
+
|
|
111
|
+
## Themes
|
|
112
|
+
|
|
113
|
+
### default
|
|
114
|
+
```
|
|
115
|
+
[████████░░░░░░░░░░░░] │ in:245K out:18K │ cache:78% │ $0.73 │ burn:2.1K/min │ 12m05s │ +247 -38 │ ⎇ feat/statusline │ (200K)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### minimal
|
|
119
|
+
```
|
|
120
|
+
●●●●●●●●·············· 245K $0.73 12m05s ⎇ feat/statusline
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### powerline
|
|
124
|
+
```
|
|
125
|
+
████████░░░░░░░░░░░░ in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Preview all themes: `claude-status --demo`
|
|
129
|
+
|
|
130
|
+
## CLI Reference
|
|
131
|
+
|
|
132
|
+
| Command | Description |
|
|
133
|
+
|---------|-------------|
|
|
134
|
+
| `claude-status --install` | Auto-configure Claude Code |
|
|
135
|
+
| `claude-status --install --theme powerline` | Install with specific theme |
|
|
136
|
+
| `claude-status --demo` | Preview all themes with sample data |
|
|
137
|
+
| `claude-status --doctor` | Diagnostics: Python, OS, terminal, settings |
|
|
138
|
+
| `claude-status --version` | Version info |
|
|
139
|
+
| `claude-status --help` | Usage |
|
|
140
|
+
|
|
141
|
+
## Manual Configuration
|
|
142
|
+
|
|
143
|
+
If you prefer manual setup, add to `~/.claude/settings.json`:
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"statusLine": "claude-status"
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Or with a theme:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"statusLine": "claude-status --theme minimal"
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Comparison
|
|
160
|
+
|
|
161
|
+
| Feature | claude-status | ccstatusline | claude-powerline |
|
|
162
|
+
|---------|:-:|:-:|:-:|
|
|
163
|
+
| Language | Python | Node.js | Bash |
|
|
164
|
+
| Dependencies | 0 | npm | bash-only |
|
|
165
|
+
| pip install | Yes | No | No |
|
|
166
|
+
| Cross-platform | Yes | Partial | Unix only |
|
|
167
|
+
| Themes | 3 | 1 | 1 |
|
|
168
|
+
| Burn rate | Yes | No | No |
|
|
169
|
+
| Auto-install | Yes | Manual | Manual |
|
|
170
|
+
|
|
171
|
+
## Uninstall
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
pip uninstall claude-status
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Then remove `"statusLine"` from `~/.claude/settings.json`.
|
|
178
|
+
|
|
179
|
+
## Contributing
|
|
180
|
+
|
|
181
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
182
|
+
|
|
183
|
+
## License
|
|
184
|
+
|
|
185
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
claude_status.egg-info/PKG-INFO
|
|
5
|
+
claude_status.egg-info/SOURCES.txt
|
|
6
|
+
claude_status.egg-info/dependency_links.txt
|
|
7
|
+
claude_status.egg-info/entry_points.txt
|
|
8
|
+
claude_status.egg-info/top_level.txt
|
|
9
|
+
claude_statusline/__init__.py
|
|
10
|
+
claude_statusline/__main__.py
|
|
11
|
+
claude_statusline/bar.py
|
|
12
|
+
claude_statusline/cli.py
|
|
13
|
+
claude_statusline/colors.py
|
|
14
|
+
claude_statusline/formatters.py
|
|
15
|
+
claude_statusline/git.py
|
|
16
|
+
claude_statusline/themes.py
|
|
17
|
+
tests/test_all.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
claude_statusline
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Progress bar rendering with adaptive colors."""
|
|
2
|
+
|
|
3
|
+
from . import colors
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def _bar_color(pct):
|
|
7
|
+
"""Return color code based on context usage percentage.
|
|
8
|
+
|
|
9
|
+
Green: 0-60% (comfortable)
|
|
10
|
+
Yellow: 61-85% (caution)
|
|
11
|
+
Red: 86-100% (danger)
|
|
12
|
+
"""
|
|
13
|
+
if pct <= 60:
|
|
14
|
+
return colors.GREEN
|
|
15
|
+
if pct <= 85:
|
|
16
|
+
return colors.YELLOW
|
|
17
|
+
return colors.RED
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def render_bar(pct, width=20, theme=None):
|
|
21
|
+
"""Render a progress bar with adaptive coloring.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
pct: Percentage (0-100) of context used.
|
|
25
|
+
width: Character width of the bar.
|
|
26
|
+
theme: Optional theme dict with 'bar_filled' and 'bar_empty' chars.
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
Colored string like [████████░░░░░░░░░░░░]
|
|
30
|
+
"""
|
|
31
|
+
if pct is None:
|
|
32
|
+
return ""
|
|
33
|
+
pct = max(0, min(100, int(pct)))
|
|
34
|
+
|
|
35
|
+
filled_char = "█"
|
|
36
|
+
empty_char = "░"
|
|
37
|
+
left_bracket = "["
|
|
38
|
+
right_bracket = "]"
|
|
39
|
+
|
|
40
|
+
if theme:
|
|
41
|
+
filled_char = theme.get("bar_filled", filled_char)
|
|
42
|
+
empty_char = theme.get("bar_empty", empty_char)
|
|
43
|
+
left_bracket = theme.get("bar_left", left_bracket)
|
|
44
|
+
right_bracket = theme.get("bar_right", right_bracket)
|
|
45
|
+
|
|
46
|
+
filled = int(width * pct / 100)
|
|
47
|
+
empty = width - filled
|
|
48
|
+
color = _bar_color(pct)
|
|
49
|
+
|
|
50
|
+
bar_content = colors.colorize(
|
|
51
|
+
filled_char * filled, color
|
|
52
|
+
) + colors.colorize(
|
|
53
|
+
empty_char * empty, colors.BRIGHT_BLACK
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
return "{}{}{}".format(left_bracket, bar_content, right_bracket)
|