Skip to content

Commit 9870524

Browse files
mswiszczclaude
andcommitted
feat(badge): add --sound, --border, --border-color flags to wsh badge
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent a357cc3 commit 9870524

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

cmd/wsh/cmd/wshcmd-badge.go

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,25 @@ var badgeCmd = &cobra.Command{
2626
}
2727

2828
var (
29-
badgeColor string
30-
badgePriority float64
31-
badgeClear bool
32-
badgeBeep bool
33-
badgePid int
29+
badgeColor string
30+
badgePriority float64
31+
badgeClear bool
32+
badgeBeep bool
33+
badgeSound string
34+
badgeBorder bool
35+
badgeBorderColor string
36+
badgePid int
3437
)
3538

3639
func init() {
3740
rootCmd.AddCommand(badgeCmd)
3841
badgeCmd.Flags().StringVar(&badgeColor, "color", "", "badge color")
3942
badgeCmd.Flags().Float64Var(&badgePriority, "priority", 10, "badge priority")
4043
badgeCmd.Flags().BoolVar(&badgeClear, "clear", false, "clear the badge")
41-
badgeCmd.Flags().BoolVar(&badgeBeep, "beep", false, "play system bell sound")
44+
badgeCmd.Flags().BoolVar(&badgeBeep, "beep", false, "play system bell sound (alias for --sound system)")
45+
badgeCmd.Flags().StringVar(&badgeSound, "sound", "", "play a sound preset (system, chime, ping, gentle) or custom .mp3 filename from ~/.waveterm/sounds/")
46+
badgeCmd.Flags().BoolVar(&badgeBorder, "border", false, "show a persistent border highlight on the block")
47+
badgeCmd.Flags().StringVar(&badgeBorderColor, "border-color", "", "border color override (defaults to --color, then #fbbf24)")
4248
badgeCmd.Flags().IntVar(&badgePid, "pid", 0, "watch a pid and automatically clear the badge when it exits (default priority 5)")
4349
}
4450

@@ -54,6 +60,12 @@ func badgeRun(cmd *cobra.Command, args []string) (rtnErr error) {
5460
badgePriority = 5
5561
}
5662

63+
// --beep is an alias for --sound system
64+
resolvedSound := badgeSound
65+
if badgeBeep && resolvedSound == "" {
66+
resolvedSound = "system"
67+
}
68+
5769
oref, err := resolveBlockArg()
5870
if err != nil {
5971
return fmt.Errorf("resolving block: %v", err)
@@ -64,6 +76,9 @@ func badgeRun(cmd *cobra.Command, args []string) (rtnErr error) {
6476

6577
var eventData baseds.BadgeEvent
6678
eventData.ORef = oref.String()
79+
eventData.Sound = resolvedSound
80+
eventData.Border = badgeBorder
81+
eventData.BorderColor = badgeBorderColor
6782

6883
if badgeClear {
6984
eventData.Clear = true
@@ -96,13 +111,6 @@ func badgeRun(cmd *cobra.Command, args []string) (rtnErr error) {
96111
return fmt.Errorf("publishing badge event: %v", err)
97112
}
98113

99-
if badgeBeep {
100-
err = wshclient.ElectronSystemBellCommand(RpcClient, &wshrpc.RpcOpts{Route: "electron"})
101-
if err != nil {
102-
return fmt.Errorf("playing system bell: %v", err)
103-
}
104-
}
105-
106114
if badgePid > 0 && eventData.Badge != nil {
107115
conn := RpcContext.Conn
108116
if conn == "" {

0 commit comments

Comments
 (0)