@@ -26,19 +26,25 @@ var badgeCmd = &cobra.Command{
2626}
2727
2828var (
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
3639func 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