Unofficial community helper — make Hermes Desktop GUI font bigger in one command.
Project description
hermes-font-scale
Unofficial community helper — patch Hermes Desktop GUI font size in one command, atomically and reversibly. NOT affiliated with NousResearch/hermes-agent.
English
The Problem
Hermes Desktop hard-codes its base font size at 14 px inside a CSS file. There is no GUI setting to change it. On high-DPI or 4K displays, 14 px is too small to read comfortably.
What This Tool Does
hermes-font-scale rewrites the one CSS line that controls the font size — atomically, reversibly, with a backup — so you can set any size from 10 to 32 px.
Before: font-size: clamp(14px, calc(14px + 2 * ((100vw - 1400px) / 400)), 18px)
After: font-size: clamp(18px, calc(18px + 2 * ((100vw - 1400px) / 400)), 22px)
Requirements
- Python 3.9 or later
- Hermes Desktop installed
Installation
pip install hermes-font-scale
Quick Start
# 1. Check current state and locate globals.css
hermes-font-scale status
# 2. Set font size (10–32 px)
hermes-font-scale set 18
# 3. Restart Hermes Desktop to see the change
All Commands
| Command | Description |
|---|---|
hermes-font-scale set <PX> |
Set base font size (10–32 px) |
hermes-font-scale set <PX> --dry-run |
Preview the change without writing |
hermes-font-scale reset |
Restore original CSS from .bak |
hermes-font-scale status |
Show current patch state |
hermes-font-scale status --json |
Same, in JSON format |
hermes-font-scale doctor |
Run 4 diagnostic checks |
Environment Variables
| Variable | Description |
|---|---|
HERMES_HOME |
Override Hermes install root path |
# Example: non-standard install location
HERMES_HOME=/opt/my-hermes hermes-font-scale set 18
How It Works
hermes-font-scale set 18
│
├─ 1. Locate globals.css (HERMES_HOME → env var → OS search paths)
├─ 2. Validate font size is in range [10, 32]
├─ 3. Create globals.css.bak (first run only)
├─ 4. Write to globals.css.tmp
└─ 5. os.replace(tmp → globals.css) ← atomic, crash-safe
Only the font-size: clamp(...) line is touched. Nothing else in the CSS is modified.
Supported Install Paths
The tool automatically searches these locations:
Windows
%LOCALAPPDATA%\hermes\C:\Program Files\Hermes\
macOS
/Applications/Hermes.app/Contents/Resources/~/Applications/Hermes.app/Contents/Resources/
Linux
~/.local/share/hermes//opt/hermes//usr/local/share/hermes/
Set HERMES_HOME if your install is elsewhere.
Troubleshooting
hermes-font-scale doctor shows "font-size clause present: FAIL"
The CSS file may be inside an .asar archive (common with some Hermes installer versions). Run:
hermes-font-scale doctor
and check the "CSS file exists" line. If the path ends in app.asar (not app.asar.unpacked), see Issue #1 for workarounds.
Font size reverted after Hermes update
Hermes updates overwrite node_modules. Re-run hermes-font-scale set <PX> after updating.
Permission denied on Linux
If Hermes is installed system-wide:
sudo hermes-font-scale set 18
Uninstall
# Restore original CSS first
hermes-font-scale reset
# Then uninstall the tool
pip uninstall hermes-font-scale
Contributing
git clone https://github.com/hsukevin0407-crypto/hermes-font-scale.git
cd hermes-font-scale
pip install -e ".[dev]"
pytest
ruff check src tests
CI runs Python 3.9–3.12 on Ubuntu, Windows, and macOS.
中文
問題說明
Hermes Desktop 把基礎字體大小寫死在一個 CSS 檔案裡,預設 14px,沒有任何設定介面可以調整。在高 DPI 或 4K 螢幕上,14px 的字體太小,很難閱讀。
這個工具做什麼
hermes-font-scale 會修改控制字體大小的那一行 CSS,操作是原子性的(crash-safe)、可還原的(自動備份),支援設定 10 到 32px 的任意大小。
需求
- Python 3.9 以上
- 已安裝 Hermes Desktop
安裝
pip install hermes-font-scale
快速開始
# 1. 確認目前狀態並找到 globals.css
hermes-font-scale status
# 2. 設定字體大小(10–32 px)
hermes-font-scale set 18
# 3. 重新啟動 Hermes Desktop 即可看到變化
所有指令
| 指令 | 說明 |
|---|---|
hermes-font-scale set <PX> |
設定字體大小(10–32 px) |
hermes-font-scale set <PX> --dry-run |
預覽變更,不實際寫入 |
hermes-font-scale reset |
從備份還原原始 CSS |
hermes-font-scale status |
顯示目前 patch 狀態 |
hermes-font-scale status --json |
同上,輸出 JSON 格式 |
hermes-font-scale doctor |
執行 4 項診斷檢查 |
環境變數
| 變數 | 說明 |
|---|---|
HERMES_HOME |
覆蓋 Hermes 安裝根目錄路徑 |
# 範例:非標準安裝位置
HERMES_HOME=/opt/my-hermes hermes-font-scale set 18
運作原理
hermes-font-scale set 18
│
├─ 1. 定位 globals.css(HERMES_HOME → 環境變數 → OS 搜尋路徑)
├─ 2. 驗證字體大小在範圍內 [10, 32]
├─ 3. 建立 globals.css.bak(僅第一次執行)
├─ 4. 寫入 globals.css.tmp
└─ 5. os.replace(tmp → globals.css) ← 原子操作,crash-safe
只修改 font-size: clamp(...) 這一行,CSS 檔案其他內容完全不動。
疑難排解
doctor 顯示「font-size clause present: FAIL」
CSS 檔可能在 .asar 壓縮檔內(部分 Hermes 安裝版本)。執行:
hermes-font-scale doctor
確認「CSS file exists」那行的路徑。若路徑結尾是 app.asar(而不是 app.asar.unpacked),請參考 Issue #1。
Hermes 更新後字體大小被重置
Hermes 更新時會覆蓋 node_modules。更新後重新執行 hermes-font-scale set <PX> 即可。
Linux 上出現權限錯誤
若 Hermes 安裝在系統目錄:
sudo hermes-font-scale set 18
解除安裝
# 先還原原始 CSS
hermes-font-scale reset
# 再移除工具
pip uninstall hermes-font-scale
Disclaimer
Unofficial community project. Not affiliated with or endorsed by Nous Research. Patching application files carries inherent risk — always keep a backup. Use at your own risk.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hermes_font_scale-0.1.5.tar.gz.
File metadata
- Download URL: hermes_font_scale-0.1.5.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6533f5509dbe92ea3ce1a3ea39d635d75f7c5587e729089cdbf53b2e88c34dd
|
|
| MD5 |
ee250428b63c9a876593e137358022c4
|
|
| BLAKE2b-256 |
200af9555d271e1f9518ba17d62b41da207ad541a5e43e660d40a1a41c791137
|
Provenance
The following attestation bundles were made for hermes_font_scale-0.1.5.tar.gz:
Publisher:
release.yml on hsukevin0407-crypto/hermes-font-scale
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_font_scale-0.1.5.tar.gz -
Subject digest:
e6533f5509dbe92ea3ce1a3ea39d635d75f7c5587e729089cdbf53b2e88c34dd - Sigstore transparency entry: 1908490057
- Sigstore integration time:
-
Permalink:
hsukevin0407-crypto/hermes-font-scale@6a90ccdaf1c49dbf395c6385bc760f776f47fc9e -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/hsukevin0407-crypto
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6a90ccdaf1c49dbf395c6385bc760f776f47fc9e -
Trigger Event:
push
-
Statement type:
File details
Details for the file hermes_font_scale-0.1.5-py3-none-any.whl.
File metadata
- Download URL: hermes_font_scale-0.1.5-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36547f4377e390f146d944453baee061448414a582b4debd29aadc3df222c740
|
|
| MD5 |
35ad49dd6a90ebbcd2b2d01e881d38ee
|
|
| BLAKE2b-256 |
24b004032f1505f5d2764e913bd9c3864350c5c7ffcafba4fd0a0e39f4ef73d9
|
Provenance
The following attestation bundles were made for hermes_font_scale-0.1.5-py3-none-any.whl:
Publisher:
release.yml on hsukevin0407-crypto/hermes-font-scale
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_font_scale-0.1.5-py3-none-any.whl -
Subject digest:
36547f4377e390f146d944453baee061448414a582b4debd29aadc3df222c740 - Sigstore transparency entry: 1908490174
- Sigstore integration time:
-
Permalink:
hsukevin0407-crypto/hermes-font-scale@6a90ccdaf1c49dbf395c6385bc760f776f47fc9e -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/hsukevin0407-crypto
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6a90ccdaf1c49dbf395c6385bc760f776f47fc9e -
Trigger Event:
push
-
Statement type: