Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#1165 closed enhancement (fixed)

Mute sounds while not away.

Reported by: anonymous Owned by: nobody
Milestone: Adium X 1.0 Component: Adium UI
Version: Severity: minor
Keywords: Cc:
Patch Status:


Gaim allows me to mute sounds while I'm not away through a menu item. This allows users to temporarily mute IM sounds while keeping another app's sound alive, so you can keep iTunes playing while being online. I often see people "away for the sake of mute", so being able to be not away and muted at the same time would be useful. (yes, I know you could change sound profiles, but that's a much more time-consuming process than needed, and it requires the user to create a sound profile if they want their settings back.)

Change History (10)

comment:1 Changed 15 years ago by Chris Forsythe

Milestone: Adium X 0.90
priority: normallow
Severity: normalminor
Version: 0.82

May fit into 1.0 instead of .9, moving to .9 for now though.

May not happen either.

comment:2 Changed 15 years ago by Augie Fackler

A better way to do this would be to allow users to save internal custom sound sets. I've been meaning to fix that lack of functionality anyway.

comment:3 Changed 15 years ago by swein@…

I second this. I global mute button in the toolbar would be very helpful, and very simple to implement. Sometimes I want to chat without sound, or simply want to ignore adium (but not be "away") and the current muting method is laborious.

comment:4 Changed 15 years ago by nanovivid

This is very similar to #1738, which I think suggests a good approach to the problem.

comment:5 Changed 15 years ago by Kiel Gillard

I'd like to take this ticket. The user could be able to specify what I call a "Mute Preset", a regular event preset that Adium automatically switches to when the user mutes Adium. This way users have flexibility in what exactly is muted, as well as muting Growl and stuff like that.

Plan of Attack

When Adium starts up, it finds the user's desired event preset for the Mute state. If no preset is found, Adium uses an inbuilt mute preset.

Adium remembers if it was muted or not when it last quit and resumes this state the next time the Duck jumps.

Adium can be muted (or un-muted) in three ways:

  1. Choosing Mute in the Status menu item.
  2. Choosing Mute in the Dock menu.
  3. Preferences > General (ticking or unticking the Mute check box).

When the user tells Adium to mute, the mute event set is made active and the name of the current event preset is stored in the preferences so that when Adium is un-muted, the previous sound set is made active.

If an event preset is chosen when Adium is muted, the mute is automatically turned off, as the mute event preset has been changed. A notification needs to be sent to update appropriate mute-related UI elements.

The user could specify (that is we need to discuss this!) which custom event preset shall be the mute preset by clicking the "Use as Mute Preset" button, which might be located underneath or beside the event preset popup button in the Preferences window. The name of the mute event preset chosen is immediately written to the preferences.

When Adium quits, it writes to the defaults if Adium was muted.

Technical Issues

I have investigated how I could implement this. The only way I think I can do this is by modifying the ESGlobalEventsPreferences and ESGlobalEventsPreferencesPlugin classes to access the events, as it is impossible to access them via a plugin. When a menu item or check box is toggled, a notification for the ESGlobalEventsPreferencesPlugin would be broadcasted that specifies if the mute event set should be made active or if the previously used event set should be used.

Is it a good idea to add this proposed muting code to these existing classes/plugins or is there some way of doing what I need in my own plugin?

Everything else should be fairly simple/self explanatory to implement.

A Cool Extension of this Functionality

Hypothetically speaking: I'm running Adium, nobody's talking to me and I pop in a DVD into my computer to watch. Wouldn't it be nice if Adium automatically muted itself when DVD Player started, instead of either quitting Adium or changing the volume/event preset myself?

This could be so easily done and I'll do it for 1.0 if everyone is kosher with it. NSWorkspace has the notifications, NSWorkspaceDidLaunchApplicationNotification and NSWorkspaceDidTerminateApplicationNotification. The user simply tells Adium which applications it should automatically mute for and mute itself if any one of those applications runs or is running. Would you all like me to write this functionality into Adium as a plugin when I get manually invoked muting merged into trunk? (Yes, I guess I should make another ticket if we're gunna implement this fancy feature).

Please contact me if you'd like to discuss further :-)

comment:6 Changed 15 years ago by anonymous

When you do this, could you also make the doc icon stop bouncing? I really want to be able to be online and ignore some people.

comment:7 Changed 15 years ago by eric

I also would be pleased to see a button for mute Adium.

comment:8 Changed 15 years ago by Chris Forsythe

field_haspatch: 0
Milestone: Adium X 1.0Adium X 1.1

comment:9 Changed 15 years ago by Augie Fackler

Resolution: fixed
Status: newclosed

(In [14883]) Add the ability for statuses to mute sounds while they're set. Unbreak the away status window's "Mute while away" button. Added a call in !AISoundController (and by association AdiumSound) that allows one to mute/unmute sound easily.

Fixes #1165 (you can make a non-away status that mutes sound and save it) Fixes #2449 Fixes #1738 Fixes #2509 (you can make a saved busy status that mutes sound and save it)

comment:10 Changed 15 years ago by Evan Schoenberg

Milestone: Adium X 1.1Adium X 1.0
Note: See TracTickets for help on using tickets.