Commit | Line | Data |
---|---|---|
715a2ca2 | 1 | ;;; gnus-audio.el --- sound effects for Gnus |
50e488b1 | 2 | ;; Copyright (C) 1996, 2000 Free Software Foundation |
eec82323 LMI |
3 | |
4 | ;; Author: Steven L. Baur <steve@miranova.com> | |
50e488b1 | 5 | ;; Keywords: news, mail, multimedia |
eec82323 LMI |
6 | |
7 | ;; This file is part of GNU Emacs. | |
8 | ||
9 | ;; GNU Emacs is free software; you can redistribute it and/or modify | |
10 | ;; it under the terms of the GNU General Public License as published by | |
11 | ;; the Free Software Foundation; either version 2, or (at your option) | |
12 | ;; any later version. | |
13 | ||
14 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | ;; GNU General Public License for more details. | |
18 | ||
19 | ;; You should have received a copy of the GNU General Public License | |
20 | ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
21 | ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
22 | ;; Boston, MA 02111-1307, USA. | |
23 | ||
24 | ;;; Commentary: | |
50e488b1 | 25 | |
eec82323 | 26 | ;; This file provides access to sound effects in Gnus. |
50e488b1 | 27 | ;; This file is partially stripped to support earcons.el. |
eec82323 | 28 | |
50e488b1 | 29 | ;;; Code: |
eec82323 LMI |
30 | |
31 | (require 'nnheader) | |
eec82323 | 32 | |
50e488b1 DL |
33 | (defgroup gnus-audio nil |
34 | "Playing sound in Gnus." | |
35 | :version "21.1" | |
36 | :group 'gnus-visual | |
37 | :group 'multimedia) | |
eec82323 | 38 | |
50e488b1 DL |
39 | (defvar gnus-audio-inline-sound |
40 | (or (if (fboundp 'device-sound-enabled-p) | |
41 | (device-sound-enabled-p)) ; XEmacs | |
42 | (fboundp 'play-sound)) ; Emacs 21 | |
43 | "Non-nil means try to play sounds without using an external program.") | |
44 | ||
45 | (defcustom gnus-audio-directory (nnheader-find-etc-directory "sounds") | |
46 | "The directory containing the Sound Files." | |
9b708394 | 47 | :type '(choice directory (const nil)) |
50e488b1 DL |
48 | :group 'gnus-audio) |
49 | ||
50 | (defcustom gnus-audio-au-player "/usr/bin/showaudio" | |
51 | "Executable program for playing sun AU format sound files." | |
52 | :group 'gnus-audio | |
53 | :type 'string) | |
54 | ||
55 | (defcustom gnus-audio-wav-player "/usr/local/bin/play" | |
56 | "Executable program for playing WAV files." | |
57 | :group 'gnus-audio | |
58 | :type 'string) | |
eec82323 | 59 | |
6748645f | 60 | ;;; The following isn't implemented yet. Wait for Millennium Gnus. |
16409b0b GM |
61 | ;;(defvar gnus-audio-effects-enabled t |
62 | ;; "When t, Gnus will use sound effects.") | |
63 | ;;(defvar gnus-audio-enable-hooks nil | |
64 | ;; "Functions run when enabling sound effects.") | |
65 | ;;(defvar gnus-audio-disable-hooks nil | |
66 | ;; "Functions run when disabling sound effects.") | |
67 | ;;(defvar gnus-audio-theme-song nil | |
68 | ;; "Theme song for Gnus.") | |
69 | ;;(defvar gnus-audio-enter-group nil | |
70 | ;; "Sound effect played when selecting a group.") | |
71 | ;;(defvar gnus-audio-exit-group nil | |
72 | ;; "Sound effect played when exiting a group.") | |
73 | ;;(defvar gnus-audio-score-group nil | |
74 | ;; "Sound effect played when scoring a group.") | |
75 | ;;(defvar gnus-audio-busy-sound nil | |
76 | ;; "Sound effect played when going into a ... sequence.") | |
eec82323 LMI |
77 | |
78 | ||
79 | ;;;###autoload | |
16409b0b GM |
80 | ;;(defun gnus-audio-enable-sound () |
81 | ;; "Enable Sound Effects for Gnus." | |
82 | ;; (interactive) | |
83 | ;; (setq gnus-audio-effects-enabled t) | |
84 | ;; (gnus-run-hooks gnus-audio-enable-hooks)) | |
eec82323 LMI |
85 | |
86 | ;;;###autoload | |
87 | ;(defun gnus-audio-disable-sound () | |
16409b0b GM |
88 | ;; "Disable Sound Effects for Gnus." |
89 | ;; (interactive) | |
90 | ;; (setq gnus-audio-effects-enabled nil) | |
91 | ;; (gnus-run-hooks gnus-audio-disable-hooks)) | |
eec82323 LMI |
92 | |
93 | ;;;###autoload | |
94 | (defun gnus-audio-play (file) | |
50e488b1 | 95 | "Play a sound FILE through the speaker." |
eec82323 LMI |
96 | (interactive) |
97 | (let ((sound-file (if (file-exists-p file) | |
98 | file | |
50e488b1 | 99 | (expand-file-name file gnus-audio-directory)))) |
eec82323 | 100 | (when (file-exists-p sound-file) |
50e488b1 DL |
101 | (cond ((and gnus-audio-inline-sound |
102 | (condition-case nil | |
103 | ;; Even if we have audio, we may fail with the | |
104 | ;; wrong sort of sound file. | |
105 | (progn (play-sound-file sound-file) | |
106 | t) | |
107 | (error nil)))) | |
108 | ;; If we don't have built-in sound, or playing it failed, | |
109 | ;; try with external program. | |
110 | ((equal "wav" (file-name-extension sound-file)) | |
111 | (call-process gnus-audio-wav-player | |
112 | sound-file | |
113 | 0 | |
114 | nil | |
115 | sound-file)) | |
116 | ((equal "au" (file-name-extension sound-file)) | |
117 | (call-process gnus-audio-au-player | |
118 | sound-file | |
119 | 0 | |
120 | nil | |
121 | sound-file)))))) | |
eec82323 LMI |
122 | |
123 | ||
124 | ;;; The following isn't implemented yet, wait for Red Gnus | |
16409b0b GM |
125 | ;;(defun gnus-audio-startrek-sounds () |
126 | ;; "Enable sounds from Star Trek the original series." | |
127 | ;; (interactive) | |
128 | ;; (setq gnus-audio-busy-sound "working.au") | |
129 | ;; (setq gnus-audio-enter-group "bulkhead_door.au") | |
130 | ;; (setq gnus-audio-exit-group "bulkhead_door.au") | |
131 | ;; (setq gnus-audio-score-group "ST_laser.au") | |
132 | ;; (setq gnus-audio-theme-song "startrek.au") | |
133 | ;; (add-hook 'gnus-select-group-hook 'gnus-audio-startrek-select-group) | |
134 | ;; (add-hook 'gnus-exit-group-hook 'gnus-audio-startrek-exit-group)) | |
eec82323 LMI |
135 | ;;;*** |
136 | ||
137 | (defvar gnus-startup-jingle "Tuxedomoon.Jingle4.au" | |
138 | "Name of the Gnus startup jingle file.") | |
139 | ||
140 | (defun gnus-play-jingle () | |
141 | "Play the Gnus startup jingle, unless that's inhibited." | |
142 | (interactive) | |
143 | (gnus-audio-play gnus-startup-jingle)) | |
144 | ||
145 | (provide 'gnus-audio) | |
146 | ||
147 | (run-hooks 'gnus-audio-load-hook) | |
148 | ||
149 | ;;; gnus-audio.el ends here |