Compare commits

...
2 Commits
Author SHA1 Message Date
avandClaude Opus 4.8 dd9a31e301 Stabilize panel speed label width
Cap formatBytesShort at four characters by rolling the mantissa up to the
next unit once it reaches 1000, and give .sbx-speed-label a fixed min-width
so the panel widget no longer shifts horizontally as speed values change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 14:49:59 +03:00
avandClaude Opus 4.8 11c69bf012 Center the panel menu under the button
The button was created with menuAlignment 0.0, which places the arrow at
the menu's left edge while it still points at the button's center, so the
menu opened from the middle of the widget. Use 0.5 to match the default
source alignment and center the menu under the button like other indicators.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 14:49:15 +03:00
3 changed files with 13 additions and 2 deletions
+8 -1
View File
@@ -21,8 +21,15 @@ export function formatBytes(n) {
} }
// Compact for the panel: "2.4M", "120K", "0". // Compact for the panel: "2.4M", "120K", "0".
// Keeps the mantissa under three integer digits so a value is at most four
// characters wide ("999K", "9.9M", "1023") — the panel field has a fixed width
// and must never overflow it (see .sbx-speed-label in stylesheet.css).
export function formatBytesShort(n) { export function formatBytesShort(n) {
const [v, i] = scale(n); let [v, i] = scale(n);
if (i > 0 && v >= 1000 && i < SHORT_UNITS.length - 1) {
v /= 1024;
i += 1;
}
if (i === 0) if (i === 0)
return `${Math.round(v)}`; return `${Math.round(v)}`;
const digits = v < 10 ? 1 : 0; const digits = v < 10 ? 1 : 0;
+1 -1
View File
@@ -17,7 +17,7 @@ import { formatSpeed, formatSpeedShort } from './format.js';
export const SingBoxIndicator = GObject.registerClass( export const SingBoxIndicator = GObject.registerClass(
class SingBoxIndicator extends PanelMenu.Button { class SingBoxIndicator extends PanelMenu.Button {
_init(extension) { _init(extension) {
super._init(0.0, 'sing-box Status', false); super._init(0.5, 'sing-box Status', false);
this._extension = extension; this._extension = extension;
this._settings = extension.getSettings(); this._settings = extension.getSettings();
+4
View File
@@ -15,6 +15,10 @@
.sbx-speed-label { .sbx-speed-label {
font-feature-settings: "tnum"; font-feature-settings: "tnum";
font-size: 0.9em; font-size: 0.9em;
/* Fixed width so the panel widget doesn't shift as speed values change.
Sized for the widest field: "↓1023 ↑1023" (see formatBytesShort). */
min-width: 7.5em;
text-align: left;
} }
.sbx-status-item { .sbx-status-item {