[Pkg-pulseaudio-devel] [SCM] pavucontrol packaging branch, upstream, updated. upstream/0.9.4-1-g12996f1

neurocyte-guest at users.alioth.debian.org neurocyte-guest at users.alioth.debian.org
Wed Nov 21 16:03:20 UTC 2007


The branch, upstream has been updated
       via  12996f175c937741aab610af559abbc4a57ae8ee (commit)
      from  d1176279e0fb35a2632bcdc520c9fcbb645f326d (commit)


- Shortlog ------------------------------------------------------------
12996f1 Imported upstream version 0.9.5

Summary of changes:
 ChangeLog             |  251 ++++++++
 LICENSE               |   27 +-
 Makefile.am           |   12 +-
 Makefile.in           |   39 +-
 README                |  113 ++--
 aclocal.m4            |    5 +-
 configure             |  561 ++++++-----------
 configure.ac          |    6 +-
 doc/README            |  113 ++--
 doc/README.html       |   18 +-
 doc/README.html.in    |   12 +-
 doc/style.css         |    6 +-
 src/pavucontrol.cc    |  321 +++++++++-
 src/pavucontrol.glade | 1669 ++++++++++++++++++++-----------------------------
 14 files changed, 1600 insertions(+), 1553 deletions(-)
-----------------------------------------------------------------------
Details of changes:

commit 12996f175c937741aab610af559abbc4a57ae8ee
Author: CJ van den Berg <cj at vdbonline.com>
Date:   Wed Oct 31 11:35:38 2007 +0100

    Imported upstream version 0.9.5

diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..86fded1
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,251 @@
+2007-10-30 16:43  lennart
+
+	* doc/README.html.in: prepare next release
+
+2007-10-30 16:27  lennart
+
+	* Makefile.am: add changelog to tarball
+
+2007-10-30 14:28  lennart
+
+	* src/pavucontrol.glade: make stream title selectable, Closes #140
+	  in pa trac
+
+2007-09-02 23:53  lennart
+
+	* src/pavucontrol.cc: add option to kill a stream to popup menu
+
+2007-09-02 23:38  lennart
+
+	* src/pavucontrol.cc: add popup menu to sink/source view to choose
+	  default device
+
+2007-09-02 21:29  lennart
+
+	* src/pavucontrol.cc, src/pavucontrol.glade: use pretty channel
+	  names
+
+2007-08-31 01:16  lennart
+
+	* src/pavucontrol.cc, src/pavucontrol.glade: add a combobox to the
+	  streams page, to filter application streams
+
+2007-08-24 14:43  lennart
+
+	* src/pavucontrol.cc: Don't pass the button index to popup() for
+	  the GtkMenu to avoid strange GTK behaviour in newer versions.
+	  Identified by coling
+
+2007-08-15 23:19  lennart
+
+	* Makefile.am: add fedora-snapshot target
+
+2007-08-15 19:37  lennart
+
+	* configure.ac: bump deps
+
+2007-08-15 19:37  lennart
+
+	* src/pavucontrol.cc: support muting sink inputs, avoid duplicate
+	  events
+
+2007-08-15 15:14  lennart
+
+	* src/pavucontrol.glade: fix button tooltips
+
+2007-08-09 00:04  lennart
+
+	* src/pavucontrol.glade: fix lock icon
+
+2007-08-07 00:17  lennart
+
+	* src/pavucontrol.glade: minor tweaks
+
+2007-05-23 23:34  lennart
+
+	* LICENSE, autogen.sh, doc/style.css, src/pavucontrol.cc: Fix
+	  license mess: change everything to GPL
+
+2006-08-26 21:12  lennart
+
+	* doc/README.html.in: fix typo
+
+2006-08-26 21:11  lennart
+
+	* doc/README.html.in: update docs for 0.9.5
+
+2006-08-26 21:06  lennart
+
+	* configure.ac: bump requirements
+
+2006-08-25 22:49  lennart
+
+	* src/pavucontrol.glade: add lightbulb
+
+2006-08-21 00:56  lennart
+
+	* src/pavucontrol.cc, src/pavucontrol.glade: - add new option "All
+	  Except Monitor Sources" to sources option menu
+	  - show a nice hint that one can right click on a stream
+
+2006-08-11 23:56  lennart
+
+	* src/pavucontrol.cc: use the sink descripion instead of the name
+	  for the stream popup menu
+
+2006-08-11 17:25  lennart
+
+	* src/pavucontrol.cc: In times where the sink/source names are
+	  generated from HAL UDIs don't show the cryptic device name any
+	  more
+
+2006-08-07 16:45  lennart
+
+	* src/pavucontrol.cc: optimize redraw a little
+
+2006-08-07 15:26  lennart
+
+	* src/pavucontrol.cc, src/pavucontrol.glade: add popup menu to
+	  stream list, allowing "hot" moving of playback streams between
+	  sinks
+
+2006-08-07 13:54  lennart
+
+	* src/pavucontrol.glade: add focus target
+
+2006-08-07 13:50  lennart
+
+	* src/pavucontrol.cc: show an watch cursor while loading device
+	  data
+
+2006-08-07 13:29  lennart
+
+	* src/pavucontrol.cc, src/pavucontrol.glade: add combobox to show
+	  only a subset of sinks/sources, replacing the old monitor
+	  expander
+
+2006-07-24 20:49  lennart
+
+	* doc/README.html.in: prepare release 0.9.3
+
+2006-07-24 20:37  lennart
+
+	* configure.ac: bump version
+
+2006-07-24 20:18  lennart
+
+	* autogen.sh: Make jhbuild happy by adding a file autgen.sh
+
+2006-07-21 20:17  lennart
+
+	* src/pavucontrol.cc: show client name only if we have it
+
+2006-07-08 13:52  lennart
+
+	* doc/README.html.in: prepare 0.9.2 release
+
+2006-06-21 14:10  lennart
+
+	* src/pavucontrol.cc: include config.h properly
+
+2006-06-20 23:54  lennart
+
+	* doc/README.html.in: s/polyp/pulse/ in README
+
+2006-06-20 23:48  lennart
+
+	* configure.ac, src/Makefile.am, src/pavucontrol.cc,
+	  src/pavucontrol.desktop, src/pavucontrol.glade: s/polyp/pulse/g
+
+2006-06-02 20:43  lennart
+
+	* doc/README.html.in: update docs for 0.9.1
+
+2006-06-02 20:42  lennart
+
+	* configure.ac: bump version number to 0.9.1
+
+2006-06-02 20:41  lennart
+
+	* src/Makefile.am: actually ship the .desktop file
+
+2006-06-01 13:39  lennart
+
+	* src/pavucontrol.cc: use gtk_widget_queue_redraw() to try to
+	  workaround an issues that the sources are not shown
+
+2006-05-31 12:15  ossman
+
+	* src/Makefile.am, src/pavucontrol.desktop: Add .desktop file.
+
+2006-05-28 00:34  lennart
+
+	* src/pavucontrol.glade: set icon for the main window
+
+2006-05-28 00:32  lennart
+
+	* src/pavucontrol.glade: use some icons from the icon spec
+
+2006-05-26 23:29  lennart
+
+	* doc/README.html.in: minor updates
+
+2006-05-26 23:27  lennart
+
+	* doc/README.html.in: prepare release 0.9.0
+
+2006-05-20 17:28  lennart
+
+	* src/pavucontrol.cc, src/pavucontrol.glade: Show client name for
+	  playback streams
+
+2006-05-16 21:13  lennart
+
+	* configure.ac, src/pavucontrol.cc, src/pavucontrol.glade: * change
+	  scale behaviour to be more resposive
+	  * make "Streams" page the default
+
+2006-05-16 20:30  lennart
+
+	* configure.ac: bump version number for polypaudio 0.9.0
+
+2006-05-13 23:25  lennart
+
+	* configure.ac: bump for polypadio 0.8.1
+
+2006-04-22 18:21  lennart
+
+	* src/pavucontrol.cc: make SIGPIPE warning disappear
+
+2006-04-21 20:38  lennart
+
+	* doc/README.html.in, src/pavucontrol.cc: fix glade file path
+
+2006-04-21 20:05  lennart
+
+	* doc/screenshot.png: add screenshot for website
+
+2006-04-21 19:55  lennart
+
+	* bootstrap.sh, configure.ac: build system updates
+
+2006-04-21 19:46  lennart
+
+	* ., LICENSE, Makefile.am, configure.ac, doc, doc/Makefile.am,
+	  doc/README.html.in, doc/style.css: add coumentation and license
+
+2006-04-21 19:24  lennart
+
+	* src/pavucontrol.cc: show proper message boxes in case of error
+	  instead of printing just to STDERR
+
+2006-04-21 14:51  lennart
+
+	* ., Makefile.am, bootstrap.sh, configure.ac, src, src/Makefile.am,
+	  src/pavucontrol.cc, src/pavucontrol.glade,
+	  src/pavucontrol.gladep: initial commit
+
+2006-04-21 14:46  lennart
+
+	* .: Create trunk directory
+
diff --git a/LICENSE b/LICENSE
index b7b5f53..d511905 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,8 +1,8 @@
 		    GNU GENERAL PUBLIC LICENSE
 		       Version 2, June 1991
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-	51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users.  This
 General Public License applies to most of the Free Software
 Foundation's software and to any other program whose authors commit to
 using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
+the GNU Lesser General Public License instead.)  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, not
@@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
 
   The precise terms and conditions for copying, distribution and
 modification follow.
-
+
 		    GNU GENERAL PUBLIC LICENSE
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
     License.  (Exception: if the Program itself is interactive but
     does not normally print such an announcement, your work based on
     the Program is not required to print an announcement.)
-
+
 These requirements apply to the modified work as a whole.  If
 identifiable sections of that work are not derived from the Program,
 and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
 access to copy the source code from the same place counts as
 distribution of the source code, even though third parties are not
 compelled to copy the source along with the object code.
-
+
   4. You may not copy, modify, sublicense, or distribute the Program
 except as expressly provided under this License.  Any attempt
 otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
 
 This section is intended to make thoroughly clear what is believed to
 be a consequence of the rest of this License.
-
+
   8. If the distribution and/or use of the Program is restricted in
 certain countries either by patents or by copyrighted interfaces, the
 original copyright holder who places the Program under this License
@@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGES.
 
 		     END OF TERMS AND CONDITIONS
-
+
 	    How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
@@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 Also add information on how to contact you by electronic and paper mail.
 
 If the program is interactive, make it output a short notice like this
 when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision version 69, Copyright (C) year name of author
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
@@ -336,5 +335,5 @@ necessary.  Here is a sample; alter the names:
 This General Public License does not permit incorporating your program into
 proprietary programs.  If your program is a subroutine library, you may
 consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
+library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.
diff --git a/Makefile.am b/Makefile.am
index 7c8a6d1..caff22c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-# $Id: Makefile.am 5 2006-04-21 19:46:29Z lennart $
+# $Id: Makefile.am 64 2007-10-30 16:27:50Z lennart $
 #
 # This file is part of pavucontrol.
 #
@@ -35,4 +35,14 @@ homepage: all dist
 	cp doc/README.html doc/screenshot.png doc/style.css $$HOME/homepage/private/projects/pavucontrol
 	ln -sf README.html $$HOME/homepage/private/projects/pavucontrol/index.html
 
+fedora-snapshot: dist
+	cp $(distdir).tar.gz $$HOME/cvs.fedora/pavucontrol/devel/$(distdir).svn`date +%Y%m%d`.tar.gz
+
 .PHONY: homepage
+
+dist-hook:
+	if test -d .svn ; then \
+		svn update ; \
+		chmod u+w ${distdir}/ChangeLog || true ; \
+		svn2cl -o ${distdir}/ChangeLog ; \
+	fi
diff --git a/Makefile.in b/Makefile.in
index 043f061..2ec1670 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -14,7 +14,7 @@
 
 @SET_MAKE@
 
-# $Id: Makefile.am 5 2006-04-21 19:46:29Z lennart $
+# $Id: Makefile.am 64 2007-10-30 16:27:50Z lennart $
 #
 # This file is part of pavucontrol.
 #
@@ -421,6 +421,9 @@ distdir: $(DISTFILES)
 	      || exit 1; \
 	  fi; \
 	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
 	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
 	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
 	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
@@ -601,18 +604,18 @@ uninstall-info: uninstall-info-recursive
 
 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
 	check-am clean clean-generic clean-recursive ctags \
-	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
-	dist-tarZ dist-zip distcheck distclean distclean-generic \
-	distclean-hdr distclean-recursive distclean-tags \
-	distcleancheck distdir distuninstallcheck dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-exec install-exec-am install-info \
-	install-info-am install-man install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic maintainer-clean-recursive \
-	mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
-	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
-	uninstall-info-am
+	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \
+	dist-shar dist-tarZ dist-zip distcheck distclean \
+	distclean-generic distclean-hdr distclean-recursive \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-exec install-exec-am \
+	install-info install-info-am install-man install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am
 
 
 README:
@@ -627,7 +630,17 @@ homepage: all dist
 	cp doc/README.html doc/screenshot.png doc/style.css $$HOME/homepage/private/projects/pavucontrol
 	ln -sf README.html $$HOME/homepage/private/projects/pavucontrol/index.html
 
+fedora-snapshot: dist
+	cp $(distdir).tar.gz $$HOME/cvs.fedora/pavucontrol/devel/$(distdir).svn`date +%Y%m%d`.tar.gz
+
 .PHONY: homepage
+
+dist-hook:
+	if test -d .svn ; then \
+		svn update ; \
+		chmod u+w ${distdir}/ChangeLog || true ; \
+		svn2cl -o ${distdir}/ChangeLog ; \
+	fi
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/README b/README
index e3d609f..b5326b0 100644
--- a/README
+++ b/README
@@ -1,8 +1,7 @@
+                        PulseAudio Volume Control 0.9.5
 
-                        PulseAudio Volume Control 0.9.4
-
-   Copyright 2006 Lennart Poettering <mzcnihpbageby (at) 0pointer (dot)
-   de>
+   Copyright 2006-2007 Lennart Poettering <mzcnihpbageby (at) 0pointer
+   (dot) de>
      * [1]License
      * [2]News
      * [3]Overview
@@ -15,58 +14,65 @@
 
 License
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or (at
-   your option) any later version.
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2 of the License, or (at your
+   option) any later version.
 
    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation, Inc.,
+   675 Mass Ave, Cambridge, MA 02139, USA.
 
 News
 
+   Tue Oct 30 2007:
+
+   [10]Version 0.9.5 released; rework UI; add context menu option to kill
+   a playback stream; add context menu option to select the default
+   device; use prettier channel names; filter non-application streams by
+   default; support muting streams
+
    Sat Aug 26 2006:
 
-   [10]Version 0.9.4 released; add the ability to move a stream to
-   another device while it is playing; limit the list of sinks/sources
-   shown by their type; other cleanups
+   [11]Version 0.9.4 released; add the ability to move a stream to another
+   device while it is playing; limit the list of sinks/sources shown by
+   their type; other cleanups
 
    Mon Jul 24 2006:
 
-   [11]Version 0.9.3 released; show client names only if they are set
+   [12]Version 0.9.3 released; show client names only if they are set
 
    Sat Jul 8 2006:
 
-   [12]Version 0.9.2 released; update for [13]PulseAudio 0.9.2
+   [13]Version 0.9.2 released; update for [14]PulseAudio 0.9.2
 
    Fri Jun 2 2006:
 
-   [14]Version 0.9.1 released; add a .desktop file; update icons
+   [15]Version 0.9.1 released; add a .desktop file; update icons
    everywhere
 
    Sat May 27 2006:
 
-   [15]Version 0.9.0 released; update for Polypaudio 0.9.0; show client
+   [16]Version 0.9.0 released; update for Polypaudio 0.9.0; show client
    name of playback streams; make volume slider more responsive
 
    Fri Apr 21 2006:
 
-   [16]Version 0.8 released; initial release
+   [17]Version 0.8 released; initial release
 
 Overview
 
    PulseAudio Volume Control (pavucontrol) is a simple GTK based volume
-   control tool ("mixer") for the [17]PulseAudio sound server. In
-   contrast to classic mixer tools this one allows you to control both
-   the volume of hardware devices and of each playback stream seperately.
+   control tool ("mixer") for the [18]PulseAudio sound server. In contrast
+   to classic mixer tools this one allows you to control both the volume
+   of hardware devices and of each playback stream seperately.
 
-   Everybody loves [18]screenshots.
+   Everybody loves [19]screenshots.
 
 Current Status
 
@@ -80,14 +86,14 @@ Requirements
 
    Currently, pavucontrol is tested on Linux only.
 
-   pavucontrol was developed and tested on Debian GNU/Linux "testing"
-   from April 2006, it should work on most other Linux distributions (and
-   maybe Unix versions) since it uses GNU autoconf for source code
+   pavucontrol was developed and tested on Debian GNU/Linux "testing" from
+   April 2006, it should work on most other Linux distributions (and maybe
+   Unix versions) since it uses GNU autoconf for source code
    configuration.
 
-   pavucontrol requires [19]gtkmm and glademmm installed.
+   pavucontrol requires [20]gtkmm and glademmm installed.
 
-   Obviously pavucontrol requires an installation of [20]PulseAudio
+   Obviously pavucontrol requires an installation of [21]PulseAudio
    (version 0.9.5).
 
 Installation
@@ -104,22 +110,22 @@ Acknowledgements
 Download
 
    The newest release is always available from
-   [21]http://0pointer.de/lennart/projects/pavucontrol/
+   [22]http://0pointer.de/lennart/projects/pavucontrol/
 
-   The current release is [22]0.9.4
+   The current release is [23]0.9.5
 
-   Get pavucontrol's development sources from the [23]Subversion
-   [24]repository ([25]viewcvs):
+   Get pavucontrol's development sources from the [24]Subversion
+   [25]repository ([26]viewcvs):
 svn checkout svn://svn.0pointer.net/pavucontrol/trunk pavucontrol
 
    If you want to be notified whenever I release a new version of this
-   software use the subscription feature of [26]Freshmeat.
-     _________________________________________________________________
+   software use the subscription feature of [27]Freshmeat.
+     __________________________________________________________________
 
 
-    Lennart Poettering <mzcnihpbageby (at) 0pointer (dot) de>, Aug 2006
+    Lennart Poettering <mzcnihpbageby (at) 0pointer (dot) de>, Oct 2007
 
-   $Id: README.html.in 49 2006-08-26 21:12:46Z lennart $
+   $Id: README.html.in 65 2007-10-30 16:43:12Z lennart $
 
 References
 
@@ -132,20 +138,21 @@ References
    7. README#installation
    8. README#acks
    9. README#download
-  10. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.4.tar.gz
-  11. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.3.tar.gz
-  12. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.2.tar.gz
-  13. http://pulseaudio.org/
-  14. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.1.tar.gz
-  15. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.0.tar.gz
-  16. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.8.tar.gz
-  17. http://0pointer.de/lennart/projects/pulseaudio/
-  18. http://0pointer.de/lennart/projects/pavucontrol//screenshot.png
-  19. http://gtkmm.sf.net/
-  20. http://pulseaudio.org/
-  21. http://0pointer.de/lennart/projects/pavucontrol/
-  22. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.4.tar.gz
-  23. http://subversion.tigris.org/
-  24. svn://svn.0pointer.net/pavucontrol
-  25. http://0pointer.net/cgi-bin/viewcvs.cgi/?root=pavucontrol
-  26. http://freshmeat.net/projects/pavucontrol/
+  10. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.5.tar.gz
+  11. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.4.tar.gz
+  12. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.3.tar.gz
+  13. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.2.tar.gz
+  14. http://pulseaudio.org/
+  15. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.1.tar.gz
+  16. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.0.tar.gz
+  17. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.8.tar.gz
+  18. http://0pointer.de/lennart/projects/pulseaudio/
+  19. http://0pointer.de/lennart/projects/pavucontrol//screenshot.png
+  20. http://gtkmm.sf.net/
+  21. http://pulseaudio.org/
+  22. http://0pointer.de/lennart/projects/pavucontrol/
+  23. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.5.tar.gz
+  24. http://subversion.tigris.org/
+  25. svn://svn.0pointer.net/pavucontrol
+  26. http://0pointer.net/cgi-bin/viewcvs.cgi/?root=pavucontrol
+  27. http://freshmeat.net/projects/pavucontrol/
diff --git a/aclocal.m4 b/aclocal.m4
index bc2e921..1f2b461 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -149,7 +149,8 @@ installed software in a non-standard prefix.
 
 _PKG_TEXT
 ])],
-		[$4])
+		[AC_MSG_RESULT([no])
+                $4])
 elif test $pkg_failed = untried; then
 	ifelse([$4], , [AC_MSG_FAILURE(dnl
 [The pkg-config script could not be found or is too old.  Make sure it
@@ -158,7 +159,7 @@ path to pkg-config.
 
 _PKG_TEXT
 
-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
 		[$4])
 else
 	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
diff --git a/configure b/configure
index debbc40..4bf1e14 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.60 for pavucontrol 0.9.4.
+# Generated by GNU Autoconf 2.61 for pavucontrol 0.9.5.
 #
 # Report bugs to <mzcnihpbageby (at) 0pointer (dot) de>.
 #
@@ -12,7 +12,8 @@
 ## M4sh Initialization.  ##
 ## --------------------- ##
 
-# Be Bourne compatible
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
@@ -21,10 +22,13 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
 fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+
+
 
 
 # PATH needs CR
@@ -217,7 +221,7 @@ test \$exitcode = 0) || { (exit 1); exit 1; }
 else
   as_candidate_shells=
     as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
@@ -235,7 +239,6 @@ IFS=$as_save_IFS
 	 # Try only shells that exist, to save several forks.
 	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
 		{ ("$as_shell") 2> /dev/null <<\_ASEOF
-# Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
@@ -244,10 +247,12 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
 fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+
 
 :
 _ASEOF
@@ -255,7 +260,6 @@ _ASEOF
   CONFIG_SHELL=$as_shell
 	       as_have_required=yes
 	       if { "$as_shell" 2> /dev/null <<\_ASEOF
-# Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
@@ -264,10 +268,12 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
 fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+
 
 :
 (as_func_return () {
@@ -514,19 +520,28 @@ else
   as_mkdir_p=false
 fi
 
-# Find out whether ``test -x'' works.  Don't use a zero-byte file, as
-# systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
-  as_executable_p="test -x"
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
 else
-  as_executable_p=:
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+        test -d "$1/.";
+      else
+	case $1 in
+        -*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
 fi
-rm -f conf$$.file
+as_executable_p=$as_test_x
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -559,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='pavucontrol'
 PACKAGE_TARNAME='pavucontrol'
-PACKAGE_VERSION='0.9.4'
-PACKAGE_STRING='pavucontrol 0.9.4'
+PACKAGE_VERSION='0.9.5'
+PACKAGE_STRING='pavucontrol 0.9.5'
 PACKAGE_BUGREPORT='mzcnihpbageby (at) 0pointer (dot) de'
 
 ac_unique_file="src/pavucontrol.cc"
@@ -666,6 +681,7 @@ target_alias
 CXX
 CXXFLAGS
 LDFLAGS
+LIBS
 CPPFLAGS
 CCC
 CC
@@ -781,10 +797,10 @@ do
   -disable-* | --disable-*)
     ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       { echo "$as_me: error: invalid feature name: $ac_feature" >&2
    { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
     eval enable_$ac_feature=no ;;
 
   -docdir | --docdir | --docdi | --doc | --do)
@@ -800,10 +816,10 @@ do
   -enable-* | --enable-*)
     ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       { echo "$as_me: error: invalid feature name: $ac_feature" >&2
    { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
     eval enable_$ac_feature=\$ac_optarg ;;
 
   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
@@ -997,19 +1013,19 @@ do
   -with-* | --with-*)
     ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       { echo "$as_me: error: invalid package name: $ac_package" >&2
    { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
     eval with_$ac_package=\$ac_optarg ;;
 
   -without-* | --without-*)
     ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       { echo "$as_me: error: invalid package name: $ac_package" >&2
    { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
     eval with_$ac_package=no ;;
 
   --x)
@@ -1178,7 +1194,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures pavucontrol 0.9.4 to adapt to many kinds of systems.
+\`configure' configures pavucontrol 0.9.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1244,7 +1260,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pavucontrol 0.9.4:";;
+     short | recursive ) echo "Configuration of pavucontrol 0.9.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1260,6 +1276,7 @@ Some influential environment variables:
   CXXFLAGS    C++ compiler flags
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
   CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CC          C compiler command
@@ -1338,8 +1355,8 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pavucontrol configure 0.9.4
-generated by GNU Autoconf 2.60
+pavucontrol configure 0.9.5
+generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -1352,8 +1369,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by pavucontrol $as_me 0.9.4, which was
-generated by GNU Autoconf 2.60.  Invocation command line was
+It was created by pavucontrol $as_me 0.9.5, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
 
@@ -1776,7 +1793,7 @@ case $as_dir/ in
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
 	  if test $ac_prog = install &&
 	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
 	    # AIX install.  It has an incompatible calling convention.
@@ -1942,7 +1959,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_AWK="$ac_prog"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2025,7 +2042,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='pavucontrol'
- VERSION='0.9.4'
+ VERSION='0.9.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2077,7 +2094,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2117,7 +2134,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_STRIP="strip"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2210,7 +2227,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2254,7 +2271,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CXX="$ac_prog"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2388,7 +2405,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
 # so that the user can short-circuit this test for compilers unknown to
 # Autoconf.
-for ac_file in $ac_files
+for ac_file in $ac_files ''
 do
   test -f "$ac_file" || continue
   case $ac_file in
@@ -2416,6 +2433,12 @@ done
 test "$ac_cv_exeext" = no && ac_cv_exeext=
 
 else
+  ac_file=''
+fi
+
+{ echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6; }
+if test -z "$ac_file"; then
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
@@ -2427,8 +2450,6 @@ See \`config.log' for more details." >&2;}
 fi
 
 ac_exeext=$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
 
 # Check that the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
@@ -2606,27 +2627,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_compiler_gnu=yes
 else
   echo "$as_me: failed program was:" >&5
@@ -2681,27 +2685,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_cv_prog_cxx_g=yes
 else
   echo "$as_me: failed program was:" >&5
@@ -2736,27 +2723,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   :
 else
   echo "$as_me: failed program was:" >&5
@@ -2792,27 +2762,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_cv_prog_cxx_g=yes
 else
   echo "$as_me: failed program was:" >&5
@@ -3049,7 +3002,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3089,7 +3042,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="gcc"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3146,7 +3099,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3187,7 +3140,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -3245,7 +3198,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3289,7 +3242,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3409,27 +3362,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_compiler_gnu=yes
 else
   echo "$as_me: failed program was:" >&5
@@ -3484,27 +3420,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_g=yes
 else
   echo "$as_me: failed program was:" >&5
@@ -3539,27 +3458,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   :
 else
   echo "$as_me: failed program was:" >&5
@@ -3595,27 +3497,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_g=yes
 else
   echo "$as_me: failed program was:" >&5
@@ -3731,27 +3616,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_cv_prog_cc_c89=$ac_arg
 else
   echo "$as_me: failed program was:" >&5
@@ -3944,27 +3812,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_cv_type_signal=int
 else
   echo "$as_me: failed program was:" >&5
@@ -4035,17 +3886,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
   :
 else
   echo "$as_me: failed program was:" >&5
@@ -4079,17 +3923,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
   # Broken: success on invalid input.
 continue
 else
@@ -4154,17 +3991,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
   :
 else
   echo "$as_me: failed program was:" >&5
@@ -4198,17 +4028,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
   # Broken: success on invalid input.
 continue
 else
@@ -4263,7 +4086,7 @@ do
   for ac_prog in grep ggrep; do
   for ac_exec_ext in '' $ac_executable_extensions; do
     ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue
+    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
     # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
@@ -4345,7 +4168,7 @@ do
   for ac_prog in egrep; do
   for ac_exec_ext in '' $ac_executable_extensions; do
     ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue
+    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
     # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
@@ -4441,27 +4264,10 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
   ac_cv_header_stdc=yes
 else
   echo "$as_me: failed program was:" >&5
@@ -4618,7 +4424,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4661,7 +4467,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4807,7 +4613,7 @@ Alternatively, you may set the environment variables GUILIBS_CFLAGS
 and GUILIBS_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
 echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
@@ -4817,7 +4623,7 @@ Alternatively, you may set the environment variables GUILIBS_CFLAGS
 and GUILIBS_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 else
@@ -4845,12 +4651,12 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_PULSE_CFLAGS="$PULSE_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \" libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 \"") >&5
-  ($PKG_CONFIG --exists --print-errors " libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 ") 2>&5
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \" libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 \"") >&5
+  ($PKG_CONFIG --exists --print-errors " libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 ") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-  pkg_cv_PULSE_CFLAGS=`$PKG_CONFIG --cflags " libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 " 2>/dev/null`
+  pkg_cv_PULSE_CFLAGS=`$PKG_CONFIG --cflags " libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 " 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -4863,12 +4669,12 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_PULSE_LIBS="$PULSE_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \" libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 \"") >&5
-  ($PKG_CONFIG --exists --print-errors " libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 ") 2>&5
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \" libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 \"") >&5
+  ($PKG_CONFIG --exists --print-errors " libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 ") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-  pkg_cv_PULSE_LIBS=`$PKG_CONFIG --libs " libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 " 2>/dev/null`
+  pkg_cv_PULSE_LIBS=`$PKG_CONFIG --libs " libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 " 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -4887,14 +4693,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        PULSE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors " libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 "`
+	        PULSE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors " libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 "`
         else
-	        PULSE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors " libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 "`
+	        PULSE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors " libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 "`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$PULSE_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: Package requirements ( libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 ) were not met:
+	{ { echo "$as_me:$LINENO: error: Package requirements ( libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 ) were not met:
 
 $PULSE_PKG_ERRORS
 
@@ -4905,7 +4711,7 @@ Alternatively, you may set the environment variables PULSE_CFLAGS
 and PULSE_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 " >&5
-echo "$as_me: error: Package requirements ( libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 ) were not met:
+echo "$as_me: error: Package requirements ( libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 ) were not met:
 
 $PULSE_PKG_ERRORS
 
@@ -4926,7 +4732,7 @@ Alternatively, you may set the environment variables PULSE_CFLAGS
 and PULSE_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&5
 echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
@@ -4936,7 +4742,7 @@ Alternatively, you may set the environment variables PULSE_CFLAGS
 and PULSE_LIBS to avoid the need to call pkg-config.
 See the pkg-config man page for more details.
 
-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details." >&2;}
    { (exit 1); exit 1; }; }
 else
@@ -4989,7 +4795,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_have_lynx="yes"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5180,7 +4986,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF
 ## M4sh Initialization.  ##
 ## --------------------- ##
 
-# Be Bourne compatible
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
@@ -5189,10 +4996,13 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
 fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
+
+
 
 
 # PATH needs CR
@@ -5416,19 +5226,28 @@ else
   as_mkdir_p=false
 fi
 
-# Find out whether ``test -x'' works.  Don't use a zero-byte file, as
-# systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
-  as_executable_p="test -x"
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
 else
-  as_executable_p=:
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+        test -d "$1/.";
+      else
+	case $1 in
+        -*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
 fi
-rm -f conf$$.file
+as_executable_p=$as_test_x
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -5443,8 +5262,8 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by pavucontrol $as_me 0.9.4, which was
-generated by GNU Autoconf 2.60.  Invocation command line was
+This file was extended by pavucontrol $as_me 0.9.5, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -5473,7 +5292,7 @@ current configuration.
 Usage: $0 [OPTIONS] [FILE]...
 
   -h, --help       print this help, then exit
-  -V, --version    print version number, then exit
+  -V, --version    print version number and configuration settings, then exit
   -q, --quiet      do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
@@ -5496,8 +5315,8 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-pavucontrol config.status 0.9.4
-configured by $0, generated by GNU Autoconf 2.60,
+pavucontrol config.status 0.9.5
+configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
 Copyright (C) 2006 Free Software Foundation, Inc.
diff --git a/configure.ac b/configure.ac
index 8b17668..28edd0a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 # -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
-# $Id: configure.ac 47 2006-08-26 21:06:25Z lennart $
+# $Id: configure.ac 56 2007-08-15 19:37:38Z lennart $
 
 # This file is part of pavucontrol.
 #
@@ -20,7 +20,7 @@
 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 
 AC_PREREQ(2.57)
-AC_INIT([pavucontrol],[0.9.4],[mzcnihpbageby (at) 0pointer (dot) de])
+AC_INIT([pavucontrol],[0.9.5],[mzcnihpbageby (at) 0pointer (dot) de])
 AC_CONFIG_SRCDIR([src/pavucontrol.cc])
 AC_CONFIG_HEADERS([config.h])
 AM_INIT_AUTOMAKE([foreign 1.9 -Wall])
@@ -48,7 +48,7 @@ if test -d ../pulseaudio ; then
    PULSE_LIBS='-L$(top_srcdir)/../pulseaudio/src/.libs -lpulse -lpulse-mainloop-glib'
    echo "*** Found pulseaudio in ../pulseaudio, using that version ***"
 else
-   PKG_CHECK_MODULES(PULSE, [ libpulse >= 0.9.5 libpulse-mainloop-glib >= 0.9.5 ])
+   PKG_CHECK_MODULES(PULSE, [ libpulse >= 0.9.7 libpulse-mainloop-glib >= 0.9.5 ])
 fi
 
 AC_SUBST(PULSE_LIBS)
diff --git a/doc/README b/doc/README
index e3d609f..b5326b0 100644
--- a/doc/README
+++ b/doc/README
@@ -1,8 +1,7 @@
+                        PulseAudio Volume Control 0.9.5
 
-                        PulseAudio Volume Control 0.9.4
-
-   Copyright 2006 Lennart Poettering <mzcnihpbageby (at) 0pointer (dot)
-   de>
+   Copyright 2006-2007 Lennart Poettering <mzcnihpbageby (at) 0pointer
+   (dot) de>
      * [1]License
      * [2]News
      * [3]Overview
@@ -15,58 +14,65 @@
 
 License
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or (at
-   your option) any later version.
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2 of the License, or (at your
+   option) any later version.
 
    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, write to the Free Software Foundation, Inc.,
+   675 Mass Ave, Cambridge, MA 02139, USA.
 
 News
 
+   Tue Oct 30 2007:
+
+   [10]Version 0.9.5 released; rework UI; add context menu option to kill
+   a playback stream; add context menu option to select the default
+   device; use prettier channel names; filter non-application streams by
+   default; support muting streams
+
    Sat Aug 26 2006:
 
-   [10]Version 0.9.4 released; add the ability to move a stream to
-   another device while it is playing; limit the list of sinks/sources
-   shown by their type; other cleanups
+   [11]Version 0.9.4 released; add the ability to move a stream to another
+   device while it is playing; limit the list of sinks/sources shown by
+   their type; other cleanups
 
    Mon Jul 24 2006:
 
-   [11]Version 0.9.3 released; show client names only if they are set
+   [12]Version 0.9.3 released; show client names only if they are set
 
    Sat Jul 8 2006:
 
-   [12]Version 0.9.2 released; update for [13]PulseAudio 0.9.2
+   [13]Version 0.9.2 released; update for [14]PulseAudio 0.9.2
 
    Fri Jun 2 2006:
 
-   [14]Version 0.9.1 released; add a .desktop file; update icons
+   [15]Version 0.9.1 released; add a .desktop file; update icons
    everywhere
 
    Sat May 27 2006:
 
-   [15]Version 0.9.0 released; update for Polypaudio 0.9.0; show client
+   [16]Version 0.9.0 released; update for Polypaudio 0.9.0; show client
    name of playback streams; make volume slider more responsive
 
    Fri Apr 21 2006:
 
-   [16]Version 0.8 released; initial release
+   [17]Version 0.8 released; initial release
 
 Overview
 
    PulseAudio Volume Control (pavucontrol) is a simple GTK based volume
-   control tool ("mixer") for the [17]PulseAudio sound server. In
-   contrast to classic mixer tools this one allows you to control both
-   the volume of hardware devices and of each playback stream seperately.
+   control tool ("mixer") for the [18]PulseAudio sound server. In contrast
+   to classic mixer tools this one allows you to control both the volume
+   of hardware devices and of each playback stream seperately.
 
-   Everybody loves [18]screenshots.
+   Everybody loves [19]screenshots.
 
 Current Status
 
@@ -80,14 +86,14 @@ Requirements
 
    Currently, pavucontrol is tested on Linux only.
 
-   pavucontrol was developed and tested on Debian GNU/Linux "testing"
-   from April 2006, it should work on most other Linux distributions (and
-   maybe Unix versions) since it uses GNU autoconf for source code
+   pavucontrol was developed and tested on Debian GNU/Linux "testing" from
+   April 2006, it should work on most other Linux distributions (and maybe
+   Unix versions) since it uses GNU autoconf for source code
    configuration.
 
-   pavucontrol requires [19]gtkmm and glademmm installed.
+   pavucontrol requires [20]gtkmm and glademmm installed.
 
-   Obviously pavucontrol requires an installation of [20]PulseAudio
+   Obviously pavucontrol requires an installation of [21]PulseAudio
    (version 0.9.5).
 
 Installation
@@ -104,22 +110,22 @@ Acknowledgements
 Download
 
    The newest release is always available from
-   [21]http://0pointer.de/lennart/projects/pavucontrol/
+   [22]http://0pointer.de/lennart/projects/pavucontrol/
 
-   The current release is [22]0.9.4
+   The current release is [23]0.9.5
 
-   Get pavucontrol's development sources from the [23]Subversion
-   [24]repository ([25]viewcvs):
+   Get pavucontrol's development sources from the [24]Subversion
+   [25]repository ([26]viewcvs):
 svn checkout svn://svn.0pointer.net/pavucontrol/trunk pavucontrol
 
    If you want to be notified whenever I release a new version of this
-   software use the subscription feature of [26]Freshmeat.
-     _________________________________________________________________
+   software use the subscription feature of [27]Freshmeat.
+     __________________________________________________________________
 
 
-    Lennart Poettering <mzcnihpbageby (at) 0pointer (dot) de>, Aug 2006
+    Lennart Poettering <mzcnihpbageby (at) 0pointer (dot) de>, Oct 2007
 
-   $Id: README.html.in 49 2006-08-26 21:12:46Z lennart $
+   $Id: README.html.in 65 2007-10-30 16:43:12Z lennart $
 
 References
 
@@ -132,20 +138,21 @@ References
    7. README#installation
    8. README#acks
    9. README#download
-  10. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.4.tar.gz
-  11. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.3.tar.gz
-  12. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.2.tar.gz
-  13. http://pulseaudio.org/
-  14. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.1.tar.gz
-  15. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.0.tar.gz
-  16. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.8.tar.gz
-  17. http://0pointer.de/lennart/projects/pulseaudio/
-  18. http://0pointer.de/lennart/projects/pavucontrol//screenshot.png
-  19. http://gtkmm.sf.net/
-  20. http://pulseaudio.org/
-  21. http://0pointer.de/lennart/projects/pavucontrol/
-  22. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.4.tar.gz
-  23. http://subversion.tigris.org/
-  24. svn://svn.0pointer.net/pavucontrol
-  25. http://0pointer.net/cgi-bin/viewcvs.cgi/?root=pavucontrol
-  26. http://freshmeat.net/projects/pavucontrol/
+  10. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.5.tar.gz
+  11. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.4.tar.gz
+  12. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.3.tar.gz
+  13. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.2.tar.gz
+  14. http://pulseaudio.org/
+  15. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.1.tar.gz
+  16. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.0.tar.gz
+  17. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.8.tar.gz
+  18. http://0pointer.de/lennart/projects/pulseaudio/
+  19. http://0pointer.de/lennart/projects/pavucontrol//screenshot.png
+  20. http://gtkmm.sf.net/
+  21. http://pulseaudio.org/
+  22. http://0pointer.de/lennart/projects/pavucontrol/
+  23. http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.5.tar.gz
+  24. http://subversion.tigris.org/
+  25. svn://svn.0pointer.net/pavucontrol
+  26. http://0pointer.net/cgi-bin/viewcvs.cgi/?root=pavucontrol
+  27. http://freshmeat.net/projects/pavucontrol/
diff --git a/doc/README.html b/doc/README.html
index 09a0d43..ad0d865 100644
--- a/doc/README.html
+++ b/doc/README.html
@@ -3,14 +3,14 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 
 <head>
-<title>PulseAudio Volume Control 0.9.4</title>
+<title>PulseAudio Volume Control 0.9.5</title>
 <link rel="stylesheet" type="text/css" href="style.css" />
 </head>
 
 <body>
-<h1><a name="top">PulseAudio Volume Control 0.9.4</a></h1>
+<h1><a name="top">PulseAudio Volume Control 0.9.5</a></h1>
 
-<p><i>Copyright 2006 Lennart Poettering &lt;mzcnihpbageby (at) 0pointer (dot) de&gt;</i></p>
+<p><i>Copyright 2006-2007 Lennart Poettering &lt;mzcnihpbageby (at) 0pointer (dot) de&gt;</i></p>
 
 <ul class="toc">
     <li><a href="#license">License</a></li>
@@ -42,6 +42,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</p>
 
 <h2><a name="news">News</a></h2>
 
+<div class="news-date">Tue Oct 30 2007: </div> <p class="news-text"><a
+href="http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.5.tar.gz">Version 0.9.5</a>
+released; rework UI; add context menu option to kill a playback stream; add context menu option to select the default device; use prettier channel names; filter non-application streams by default; support muting streams</p>
+
 <div class="news-date">Sat Aug 26 2006: </div> <p class="news-text"><a
 href="http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.4.tar.gz">Version 0.9.4</a>
 released; add the ability to move a stream to another device while it
@@ -76,7 +80,7 @@ playback stream seperately.</p>
 <h2><a name="status">Current Status</a></h2>
 
 <p>Works perfectly.</p>
-  
+
 <h2><a name="documentation">Documentation</a></h2>
 
 <p>There is not much to say. Just run <tt>pavucontrol</tt> and see for yourself.</p>
@@ -110,7 +114,7 @@ compilation and <tt>make install</tt> (as root) for installation of
 
 <p>The newest release is always available from <a href="http://0pointer.de/lennart/projects/pavucontrol/">http://0pointer.de/lennart/projects/pavucontrol/</a></p>
 
-<p>The current release is <a href="http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.4.tar.gz">0.9.4</a></p>
+<p>The current release is <a href="http://0pointer.de/lennart/projects/pavucontrol/pavucontrol-0.9.5.tar.gz">0.9.5</a></p>
 
 <p>Get <tt>pavucontrol</tt>'s development sources from the <a href="http://subversion.tigris.org/">Subversion</a> <a href="svn://svn.0pointer.net/pavucontrol">repository</a> (<a href="http://0pointer.net/cgi-bin/viewcvs.cgi/?root=pavucontrol">viewcvs</a>): </p>
 
@@ -119,8 +123,8 @@ compilation and <tt>make install</tt> (as root) for installation of
 <p>If you want to be notified whenever I release a new version of this software use the subscription feature of <a href="http://freshmeat.net/projects/pavucontrol/">Freshmeat</a>.</p>
 
 <hr/>
-<address class="grey">Lennart Poettering &lt;mzcnihpbageby (at) 0pointer (dot) de&gt;, Aug 2006</address>
-<div class="grey"><i>$Id: README.html.in 49 2006-08-26 21:12:46Z lennart $</i></div>
+<address class="grey">Lennart Poettering &lt;mzcnihpbageby (at) 0pointer (dot) de&gt;, Oct 2007</address>
+<div class="grey"><i>$Id: README.html.in 65 2007-10-30 16:43:12Z lennart $</i></div>
 
 </body>
 </html>
diff --git a/doc/README.html.in b/doc/README.html.in
index ed4467f..05b8c26 100644
--- a/doc/README.html.in
+++ b/doc/README.html.in
@@ -10,7 +10,7 @@
 <body>
 <h1><a name="top">PulseAudio Volume Control @PACKAGE_VERSION@</a></h1>
 
-<p><i>Copyright 2006 Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;</i></p>
+<p><i>Copyright 2006-2007 Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;</i></p>
 
 <ul class="toc">
     <li><a href="#license">License</a></li>
@@ -42,6 +42,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</p>
 
 <h2><a name="news">News</a></h2>
 
+<div class="news-date">Tue Oct 30 2007: </div> <p class="news-text"><a
+href="@PACKAGE_URL at pavucontrol-0.9.5.tar.gz">Version 0.9.5</a>
+released; rework UI; add context menu option to kill a playback stream; add context menu option to select the default device; use prettier channel names; filter non-application streams by default; support muting streams</p>
+
 <div class="news-date">Sat Aug 26 2006: </div> <p class="news-text"><a
 href="@PACKAGE_URL at pavucontrol-0.9.4.tar.gz">Version 0.9.4</a>
 released; add the ability to move a stream to another device while it
@@ -76,7 +80,7 @@ playback stream seperately.</p>
 <h2><a name="status">Current Status</a></h2>
 
 <p>Works perfectly.</p>
-  
+
 <h2><a name="documentation">Documentation</a></h2>
 
 <p>There is not much to say. Just run <tt>pavucontrol</tt> and see for yourself.</p>
@@ -119,8 +123,8 @@ compilation and <tt>make install</tt> (as root) for installation of
 <p>If you want to be notified whenever I release a new version of this software use the subscription feature of <a href="http://freshmeat.net/projects/pavucontrol/">Freshmeat</a>.</p>
 
 <hr/>
-<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, Aug 2006</address>
-<div class="grey"><i>$Id: README.html.in 49 2006-08-26 21:12:46Z lennart $</i></div>
+<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, Oct 2007</address>
+<div class="grey"><i>$Id: README.html.in 65 2007-10-30 16:43:12Z lennart $</i></div>
 
 </body>
 </html>
diff --git a/doc/style.css b/doc/style.css
index 0e69787..c3b41e6 100644
--- a/doc/style.css
+++ b/doc/style.css
@@ -1,10 +1,10 @@
-/* $Id: style.css 5 2006-04-21 19:46:29Z lennart $ */
+/* $Id: style.css 51 2007-05-23 23:34:52Z lennart $ */
 
 /***
  * This file is part of pavucontrol.
  *
  * pavucontrol is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
+ * under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  *
@@ -13,7 +13,7 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * General Public License for more details.
  *
- * You should have received a copy of the GNU Lesser General Public License
+ * You should have received a copy of the GNU General Public License
  * along with pavucontrol; if not, write to the Free Software Foundation,
  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  ***/
diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc
index 8198ff0..7518ddf 100644
--- a/src/pavucontrol.cc
+++ b/src/pavucontrol.cc
@@ -1,10 +1,10 @@
-/* $Id: pavucontrol.cc 45 2006-08-21 00:56:38Z lennart $ */
+/* $Id: pavucontrol.cc 62 2007-09-02 23:53:16Z lennart $ */
 
 /***
   This file is part of pavucontrol.
  
   pavucontrol is free software; you can redistribute it and/or modify
-  it under the terms of the GNU Lesser General Public License as published
+  it under the terms of the GNU General Public License as published
   by the Free Software Foundation; either version 2 of the License,
   or (at your option) any later version.
  
@@ -13,7 +13,7 @@
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   General Public License for more details.
  
-  You should have received a copy of the GNU Lesser General Public License
+  You should have received a copy of the GNU General Public License
   along with pavucontrol; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
   USA.
@@ -38,6 +38,12 @@
 static pa_context *context = NULL;
 static int n_outstanding = 0;
 
+enum SinkInputType {
+    SINK_INPUT_ALL,
+    SINK_INPUT_CLIENT,
+    SINK_INPUT_VIRTUAL
+};
+
 enum SinkType {
     SINK_ALL,
     SINK_HARDWARE,
@@ -88,6 +94,8 @@ public:
     Gtk::VBox *channelsVBox;
     Gtk::ToggleButton *lockToggleButton, *muteToggleButton;
 
+    bool updating;
+    
     pa_channel_map channelMap;
     pa_cvolume volume;
     
@@ -109,10 +117,18 @@ public:
 
     SinkType type;
     Glib::ustring description;
+    Glib::ustring name;
+    uint32_t index;
+
+    Gtk::Menu menu;
+    Gtk::CheckMenuItem defaultMenuItem;
     
     virtual void onMuteToggleButton();
-    uint32_t index;
     virtual void executeVolumeUpdate();
+    virtual void onDefaultToggle();
+
+protected:
+    virtual bool on_button_press_event(GdkEventButton* event);
 };
 
 class SourceWidget : public StreamWidget {
@@ -121,10 +137,18 @@ public:
     static SourceWidget* create();
 
     SourceType type;
+    Glib::ustring name;
+    uint32_t index;
+
+    Gtk::Menu menu;
+    Gtk::CheckMenuItem defaultMenuItem;
     
     virtual void onMuteToggleButton();
-    uint32_t index;
     virtual void executeVolumeUpdate();
+    virtual void onDefaultToggle();
+
+protected:
+    virtual bool on_button_press_event(GdkEventButton* event);
 };
 
 class SinkInputWidget : public StreamWidget {
@@ -133,12 +157,16 @@ public:
     static SinkInputWidget* create();
     virtual ~SinkInputWidget();
 
+    SinkInputType type;
+    
     uint32_t index, clientIndex, sinkIndex;
     virtual void executeVolumeUpdate();
-
+    virtual void onMuteToggleButton();
+    virtual void onKill();
+    
     MainWindow *mainWindow;
     Gtk::Menu menu, submenu;
-    Gtk::MenuItem titleMenuItem;
+    Gtk::MenuItem titleMenuItem, killMenuItem;
 
     struct SinkMenuItem {
         SinkMenuItem(SinkInputWidget *w, const char *label, uint32_t i, bool active) :
@@ -174,6 +202,7 @@ public:
     void updateSource(const pa_source_info &info);
     void updateSinkInput(const pa_sink_input_info &info);
     void updateClient(const pa_client_info &info);
+    void updateServer(const pa_server_info &info);
 
     void removeSink(uint32_t index);
     void removeSource(uint32_t index);
@@ -183,21 +212,25 @@ public:
     Gtk::VBox *streamsVBox, *sinksVBox, *sourcesVBox;
     Gtk::EventBox *titleEventBox;
     Gtk::Label *noStreamsLabel, *noSinksLabel, *noSourcesLabel;
-    Gtk::ComboBox *sinkTypeComboBox, *sourceTypeComboBox;
+    Gtk::ComboBox *sinkInputTypeComboBox, *sinkTypeComboBox, *sourceTypeComboBox;
 
     std::map<uint32_t, SinkWidget*> sinkWidgets;
     std::map<uint32_t, SourceWidget*> sourceWidgets;
-    std::map<uint32_t, SinkInputWidget*> streamWidgets;
+    std::map<uint32_t, SinkInputWidget*> sinkInputWidgets;
     std::map<uint32_t, char*> clientNames;
 
+    SinkInputType showSinkInputType;
     SinkType showSinkType;
     SourceType showSourceType;
-
+    
+    virtual void onSinkInputTypeComboBoxChanged();
     virtual void onSinkTypeComboBoxChanged();
     virtual void onSourceTypeComboBoxChanged();
 
     void updateDeviceVisibility();
 
+    Glib::ustring defaultSinkName, defaultSourceName;
+    
 protected:
     virtual void on_realize();
 };
@@ -253,6 +286,9 @@ void ChannelWidget::onVolumeScaleValueChanged() {
     if (!volumeScaleEnabled)
         return;
 
+    if (streamWidget->updating)
+        return;
+
     pa_volume_t volume = (pa_volume_t) ((volumeScale->get_value() * PA_VOLUME_NORM) / 100);
     streamWidget->updateChannelVolume(channel, volume);
 }
@@ -268,7 +304,8 @@ void ChannelWidget::set_sensitive(bool enabled) {
 /*** StreamWidget ***/
 
 StreamWidget::StreamWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
-    Gtk::VBox(cobject) {
+    Gtk::VBox(cobject),
+    updating(false) {
 
     x->get_widget("channelsVBox", channelsVBox);
     x->get_widget("nameLabel", nameLabel);
@@ -290,7 +327,7 @@ void StreamWidget::setChannelMap(const pa_channel_map &m) {
         cw->channel = i;
         cw->streamWidget = this;
         char text[64];
-        snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_string(m.map[i]));
+        snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i]));
         cw->channelLabel->set_markup(text);
         channelsVBox->pack_start(*cw, false, false, 0);
     }
@@ -327,6 +364,7 @@ void StreamWidget::updateChannelVolume(int channel, pa_volume_t v) {
 }
 
 void StreamWidget::onMuteToggleButton() {
+
     lockToggleButton->set_sensitive(!muteToggleButton->get_active());
 
     for (int i = 0; i < channelMap.channels; i++)
@@ -342,7 +380,15 @@ void StreamWidget::executeVolumeUpdate() {
 }
 
 SinkWidget::SinkWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
-    StreamWidget(cobject, x) {
+    StreamWidget(cobject, x),
+    defaultMenuItem("_Default", true){
+
+    add_events(Gdk::BUTTON_PRESS_MASK);
+
+    defaultMenuItem.set_active(false);
+    defaultMenuItem.signal_toggled().connect(sigc::mem_fun(*this, &SinkWidget::onDefaultToggle));
+    menu.append(defaultMenuItem);
+    menu.show_all();
 }
 
 SinkWidget* SinkWidget::create() {
@@ -366,6 +412,9 @@ void SinkWidget::executeVolumeUpdate() {
 void SinkWidget::onMuteToggleButton() {
     StreamWidget::onMuteToggleButton();
 
+    if (updating)
+        return;
+    
     pa_operation* o;
     if (!(o = pa_context_set_sink_mute_by_index(context, index, muteToggleButton->get_active(), NULL, NULL))) {
         show_error("pa_context_set_sink_mute_by_index() failed");
@@ -375,8 +424,42 @@ void SinkWidget::onMuteToggleButton() {
     pa_operation_unref(o);
 }
 
+bool SinkWidget::on_button_press_event(GdkEventButton* event) {
+    if (StreamWidget::on_button_press_event(event))
+        return TRUE;
+
+    if (event->type == GDK_BUTTON_PRESS && event->button == 3) {
+        
+        menu.popup(0, event->time);
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+void SinkWidget::onDefaultToggle() {
+    pa_operation* o;
+
+    if (updating)
+        return;
+    
+    if (!(o = pa_context_set_default_sink(context, name.c_str(), NULL, NULL))) {
+        show_error("pa_context_set_default_sink() failed");
+        return;
+    }
+    pa_operation_unref(o);
+}
+
 SourceWidget::SourceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
-    StreamWidget(cobject, x) {
+    StreamWidget(cobject, x),
+    defaultMenuItem("_Default", true){
+
+    add_events(Gdk::BUTTON_PRESS_MASK);
+
+    defaultMenuItem.set_active(false);
+    defaultMenuItem.signal_toggled().connect(sigc::mem_fun(*this, &SourceWidget::onDefaultToggle));
+    menu.append(defaultMenuItem);
+    menu.show_all();
 }
 
 SourceWidget* SourceWidget::create() {
@@ -399,6 +482,9 @@ void SourceWidget::executeVolumeUpdate() {
 
 void SourceWidget::onMuteToggleButton() {
     StreamWidget::onMuteToggleButton();
+
+    if (updating)
+        return;
     
     pa_operation* o;
     if (!(o = pa_context_set_source_mute_by_index(context, index, muteToggleButton->get_active(), NULL, NULL))) {
@@ -409,15 +495,45 @@ void SourceWidget::onMuteToggleButton() {
     pa_operation_unref(o);
 }
 
+bool SourceWidget::on_button_press_event(GdkEventButton* event) {
+    if (StreamWidget::on_button_press_event(event))
+        return TRUE;
+
+    if (event->type == GDK_BUTTON_PRESS && event->button == 3) {
+        
+        menu.popup(0, event->time);
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+void SourceWidget::onDefaultToggle() {
+    pa_operation* o;
+
+    if (updating)
+        return;
+    
+    if (!(o = pa_context_set_default_source(context, name.c_str(), NULL, NULL))) {
+        show_error("pa_context_set_default_source() failed");
+        return;
+    }
+    pa_operation_unref(o);
+}
+
 SinkInputWidget::SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
     StreamWidget(cobject, x),
     mainWindow(NULL),
-    titleMenuItem("Move Stream...") {
+    titleMenuItem("_Move Stream...", true),
+    killMenuItem("_Terminate Stream", true) {
 
     add_events(Gdk::BUTTON_PRESS_MASK);
 
     menu.append(titleMenuItem);
     titleMenuItem.set_submenu(submenu);
+
+    menu.append(killMenuItem);
+    killMenuItem.signal_activate().connect(sigc::mem_fun(*this, &SinkInputWidget::onKill));
 }
 
 SinkInputWidget::~SinkInputWidget() {
@@ -442,6 +558,21 @@ void SinkInputWidget::executeVolumeUpdate() {
     pa_operation_unref(o);
 }
 
+void SinkInputWidget::onMuteToggleButton() {
+    StreamWidget::onMuteToggleButton();
+
+    if (updating)
+        return;
+    
+    pa_operation* o;
+    if (!(o = pa_context_set_sink_input_mute(context, index, muteToggleButton->get_active(), NULL, NULL))) {
+        show_error("pa_context_set_sink_input_mute() failed");
+        return;
+    }
+
+    pa_operation_unref(o);
+}
+
 bool SinkInputWidget::on_button_press_event(GdkEventButton* event) {
     if (StreamWidget::on_button_press_event(event))
         return TRUE;
@@ -449,7 +580,7 @@ bool SinkInputWidget::on_button_press_event(GdkEventButton* event) {
     if (event->type == GDK_BUTTON_PRESS && event->button == 3) {
         clearMenu();
         buildMenu();
-        menu.popup(event->button, event->time);
+        menu.popup(0, event->time);
         return TRUE;
     }
 
@@ -475,8 +606,21 @@ void SinkInputWidget::buildMenu() {
     menu.show_all();
 }
 
+void SinkInputWidget::onKill() {
+    pa_operation* o;
+    if (!(o = pa_context_kill_sink_input(context, index, NULL, NULL))) {
+        show_error("pa_context_kill_sink_input() failed");
+        return;
+    }
+
+    pa_operation_unref(o);
+}
+
 void SinkInputWidget::SinkMenuItem::onToggle() {
 
+    if (widget->updating)
+        return;
+    
     if (!menuItem.get_active())
         return;
 
@@ -493,6 +637,7 @@ void SinkInputWidget::SinkMenuItem::onToggle() {
 
 MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
     Gtk::Window(cobject),
+    showSinkInputType(SINK_INPUT_CLIENT),
     showSinkType(SINK_ALL),
     showSourceType(SOURCE_NO_MONITOR) {
 
@@ -503,6 +648,7 @@ MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade:
     x->get_widget("noStreamsLabel", noStreamsLabel);
     x->get_widget("noSinksLabel", noSinksLabel);
     x->get_widget("noSourcesLabel", noSourcesLabel);
+    x->get_widget("sinkInputTypeComboBox", sinkInputTypeComboBox);
     x->get_widget("sinkTypeComboBox", sinkTypeComboBox);
     x->get_widget("sourceTypeComboBox", sourceTypeComboBox);
 
@@ -510,9 +656,11 @@ MainWindow::MainWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade:
     streamsVBox->set_reallocate_redraws(true);
     sinksVBox->set_reallocate_redraws(true);
 
+    sinkInputTypeComboBox->set_active((int) showSinkInputType);
     sinkTypeComboBox->set_active((int) showSinkType);
     sourceTypeComboBox->set_active((int) showSourceType);
 
+    sinkInputTypeComboBox->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::onSinkInputTypeComboBoxChanged));
     sinkTypeComboBox->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::onSinkTypeComboBoxChanged));
     sourceTypeComboBox->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::onSourceTypeComboBoxChanged));
 
@@ -555,8 +703,11 @@ void MainWindow::updateSink(const pa_sink_info &info) {
         is_new = true;
     }
 
-    w->type = info.flags & PA_SINK_HARDWARE ? SINK_HARDWARE : SINK_VIRTUAL;
+    w->updating = true;
+    
+    w->name = info.name;
     w->description = info.description;
+    w->type = info.flags & PA_SINK_HARDWARE ? SINK_HARDWARE : SINK_VIRTUAL;
 
     w->boldNameLabel->set_text("");
     gchar *txt;
@@ -566,8 +717,12 @@ void MainWindow::updateSink(const pa_sink_info &info) {
     w->setVolume(info.volume);
     w->muteToggleButton->set_active(info.mute);
 
+    w->defaultMenuItem.set_active(w->name == defaultSinkName);
+
     if (is_new)
         updateDeviceVisibility();
+
+    w->updating = false;
 }
 
 void MainWindow::updateSource(const pa_source_info &info) {
@@ -584,6 +739,9 @@ void MainWindow::updateSource(const pa_source_info &info) {
         is_new = true;
     }
 
+    w->updating = true;
+    
+    w->name = info.name;
     w->type = info.monitor_of_sink != PA_INVALID_INDEX ? SOURCE_MONITOR : (info.flags & PA_SOURCE_HARDWARE ? SOURCE_HARDWARE : SOURCE_VIRTUAL);
 
     w->boldNameLabel->set_text("");
@@ -594,25 +752,34 @@ void MainWindow::updateSource(const pa_source_info &info) {
     w->setVolume(info.volume);
     w->muteToggleButton->set_active(info.mute);
 
+    w->defaultMenuItem.set_active(w->name == defaultSourceName);
+    
     if (is_new)
         updateDeviceVisibility();
+
+    w->updating = false;
 }
 
 void MainWindow::updateSinkInput(const pa_sink_input_info &info) {
     SinkInputWidget *w;
+    bool is_new = false;
 
-    if (streamWidgets.count(info.index))
-        w = streamWidgets[info.index];
+    if (sinkInputWidgets.count(info.index))
+        w = sinkInputWidgets[info.index];
     else {
-        streamWidgets[info.index] = w = SinkInputWidget::create();
+        sinkInputWidgets[info.index] = w = SinkInputWidget::create();
         w->setChannelMap(info.channel_map);
         streamsVBox->pack_start(*w, false, false, 0);
-        w->muteToggleButton->hide();
         w->index = info.index;
         w->clientIndex = info.client;
         w->mainWindow = this;
+        is_new = true;
     }
 
+    w->updating = true;
+
+    w->type = info.client != PA_INVALID_INDEX ? SINK_INPUT_CLIENT : SINK_INPUT_VIRTUAL;
+
     w->sinkIndex = info.sink;
 
     char *txt;
@@ -627,9 +794,12 @@ void MainWindow::updateSinkInput(const pa_sink_input_info &info) {
     }
     
     w->setVolume(info.volume);
+    w->muteToggleButton->set_active(info.mute);
 
-    w->show();
-    updateDeviceVisibility();
+    if (is_new)
+        updateDeviceVisibility();
+
+    w->updating = false;
 }
 
 void MainWindow::updateClient(const pa_client_info &info) {
@@ -637,7 +807,7 @@ void MainWindow::updateClient(const pa_client_info &info) {
     g_free(clientNames[info.index]);
     clientNames[info.index] = g_strdup(info.name);
 
-    for (std::map<uint32_t, SinkInputWidget*>::iterator i = streamWidgets.begin(); i != streamWidgets.end(); ++i) {
+    for (std::map<uint32_t, SinkInputWidget*>::iterator i = sinkInputWidgets.begin(); i != sinkInputWidgets.end(); ++i) {
         SinkInputWidget *w = i->second;
 
         if (!w)
@@ -651,18 +821,56 @@ void MainWindow::updateClient(const pa_client_info &info) {
     }
 }
 
-void MainWindow::updateDeviceVisibility() {
+void MainWindow::updateServer(const pa_server_info &info) {
 
-    if (streamWidgets.empty())
-        noStreamsLabel->show();
-    else
-        noStreamsLabel->hide();
+    for (std::map<uint32_t, SinkWidget*>::iterator i = sinkWidgets.begin(); i != sinkWidgets.end(); ++i) {
+        SinkWidget *w = i->second;
+
+        if (!w)
+            continue;
+
+        w->updating = true;
+        w->defaultMenuItem.set_active(w->name == info.default_sink_name);
+        w->updating = false;
+    }
+
+    for (std::map<uint32_t, SourceWidget*>::iterator i = sourceWidgets.begin(); i != sourceWidgets.end(); ++i) {
+        SourceWidget *w = i->second;
+
+        if (!w)
+            continue;
 
+        w->updating = true;
+        w->defaultMenuItem.set_active(w->name == info.default_source_name);
+        w->updating = false;
+    }
+
+    defaultSourceName = info.default_source_name;
+    defaultSinkName = info.default_sink_name;
+}
+
+void MainWindow::updateDeviceVisibility() {
+
+    streamsVBox->hide_all();
     sourcesVBox->hide_all();
     sinksVBox->hide_all();
 
     bool is_empty = true;
 
+    for (std::map<uint32_t, SinkInputWidget*>::iterator i = sinkInputWidgets.begin(); i != sinkInputWidgets.end(); ++i) {
+        SinkInputWidget* w = i->second;
+
+        if (showSinkInputType == SINK_INPUT_ALL || w->type == showSinkInputType) {
+            w->show_all();
+            is_empty = false;
+        }
+    }
+    
+    if (is_empty)
+        noStreamsLabel->show();
+
+    is_empty = true;
+    
     for (std::map<uint32_t, SinkWidget*>::iterator i = sinkWidgets.begin(); i != sinkWidgets.end(); ++i) {
         SinkWidget* w = i->second;
 
@@ -693,6 +901,7 @@ void MainWindow::updateDeviceVisibility() {
 
     sourcesVBox->show();
     sinksVBox->show();
+    streamsVBox->show();
 }
 
 void MainWindow::removeSink(uint32_t index) {
@@ -714,11 +923,11 @@ void MainWindow::removeSource(uint32_t index) {
 }
 
 void MainWindow::removeSinkInput(uint32_t index) {
-    if (!streamWidgets.count(index))
+    if (!sinkInputWidgets.count(index))
         return;
     
-    delete streamWidgets[index];
-    streamWidgets.erase(index);
+    delete sinkInputWidgets[index];
+    sinkInputWidgets.erase(index);
     updateDeviceVisibility();
 }
 
@@ -745,6 +954,15 @@ void MainWindow::onSourceTypeComboBoxChanged() {
     updateDeviceVisibility();
 }
 
+void MainWindow::onSinkInputTypeComboBoxChanged() {
+    showSinkInputType = (SinkInputType) sinkInputTypeComboBox->get_active_row_number();
+
+    if (showSinkInputType == (SinkInputType) -1)
+        sinkInputTypeComboBox->set_active((int) SINK_INPUT_CLIENT);
+
+    updateDeviceVisibility();
+}
+
 static void dec_outstanding(MainWindow *w) {
     if (n_outstanding <= 0)
         return;
@@ -817,6 +1035,18 @@ void client_cb(pa_context *, const pa_client_info *i, int eol, void *userdata) {
     w->updateClient(*i);
 }
 
+void server_info_cb(pa_context *, const pa_server_info *i, void *userdata) {
+    MainWindow *w = static_cast<MainWindow*>(userdata);
+
+    if (!i) {
+        show_error("Server info callback failure");
+        return;
+    }
+
+    w->updateServer(*i);
+    dec_outstanding(w);
+}
+
 void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t index, void *userdata) {
     MainWindow *w = static_cast<MainWindow*>(userdata);
 
@@ -833,6 +1063,7 @@ void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t index,
                 pa_operation_unref(o);
             }
             break;
+            
         case PA_SUBSCRIPTION_EVENT_SOURCE:
             if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE)
                 w->removeSource(index);
@@ -845,6 +1076,7 @@ void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t index,
                 pa_operation_unref(o);
             }
             break;
+            
         case PA_SUBSCRIPTION_EVENT_SINK_INPUT:
             if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE)
                 w->removeSinkInput(index);
@@ -857,6 +1089,7 @@ void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t index,
                 pa_operation_unref(o);
             }
             break;
+            
         case PA_SUBSCRIPTION_EVENT_CLIENT:
             if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE)
                 w->removeClient(index);
@@ -869,6 +1102,15 @@ void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t index,
                 pa_operation_unref(o);
             }
             break;
+
+        case PA_SUBSCRIPTION_EVENT_SERVER: {
+            pa_operation *o;
+            if (!(o = pa_context_get_server_info(c, server_info_cb, w))) {
+                show_error("pa_context_get_server_info() failed");
+                return;
+            }
+            pa_operation_unref(o);
+        }
     }
 }
 
@@ -889,12 +1131,23 @@ void context_state_callback(pa_context *c, void *userdata) {
             
             pa_context_set_subscribe_callback(c, subscribe_cb, w);
             
-            if (!(o = pa_context_subscribe(c, (pa_subscription_mask_t) (PA_SUBSCRIPTION_MASK_SINK|PA_SUBSCRIPTION_MASK_SOURCE|PA_SUBSCRIPTION_MASK_SINK_INPUT|PA_SUBSCRIPTION_MASK_CLIENT), NULL, NULL))) {
+            if (!(o = pa_context_subscribe(c, (pa_subscription_mask_t)
+                                           (PA_SUBSCRIPTION_MASK_SINK|
+                                            PA_SUBSCRIPTION_MASK_SOURCE|
+                                            PA_SUBSCRIPTION_MASK_SINK_INPUT|
+                                            PA_SUBSCRIPTION_MASK_CLIENT|
+                                            PA_SUBSCRIPTION_MASK_SERVER), NULL, NULL))) {
                 show_error("pa_context_subscribe() failed");
                 return;
             }
             pa_operation_unref(o);
 
+            if (!(o = pa_context_get_server_info(c, server_info_cb, w))) {
+                show_error("pa_context_get_server_info() failed");
+                return;
+            }
+            pa_operation_unref(o);
+            
             if (!(o = pa_context_get_client_info_list(c, client_cb, w))) {
                 show_error("pa_context_client_info_list() failed");
                 return;
@@ -919,7 +1172,7 @@ void context_state_callback(pa_context *c, void *userdata) {
             }
             pa_operation_unref(o);
 
-            n_outstanding = 4;
+            n_outstanding = 5;
                 
             break;
         }
diff --git a/src/pavucontrol.glade b/src/pavucontrol.glade
index 19e62de..3f7918c 100644
--- a/src/pavucontrol.glade
+++ b/src/pavucontrol.glade
@@ -1,997 +1,676 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
 <glade-interface>
-
-<widget class="GtkWindow" id="mainWindow">
-  <property name="title" translatable="yes">PulseAudio Volume Control</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="default_width">500</property>
-  <property name="default_height">500</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="icon_name">multimedia-volume-control</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-
-  <child>
-    <widget class="GtkVBox" id="vbox3">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-	<widget class="GtkEventBox" id="titleEventBox">
-	  <property name="visible">True</property>
-	  <property name="visible_window">True</property>
-	  <property name="above_child">False</property>
-
-	  <child>
-	    <widget class="GtkHBox" id="hbox2">
-	      <property name="border_width">12</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">12</property>
-
-	      <child>
-		<widget class="GtkImage" id="image19">
-		  <property name="visible">True</property>
-		  <property name="icon_size">6</property>
-		  <property name="icon_name">multimedia-volume-control</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox22">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="titleLabel">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span size=&quot;18000&quot; color=&quot;black&quot;&gt;&lt;b&gt;PulseAudio Volume Control&lt;/b&gt;&lt;/span&gt;</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">True</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">1</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label4825">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Use this application to view and modify the volumes of audio streams and devices</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkHSeparator" id="hseparator1">
-	  <property name="visible">True</property>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkVBox" id="vbox20">
-	  <property name="border_width">12</property>
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">12</property>
-
-	  <child>
-	    <widget class="GtkNotebook" id="notebook">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="show_tabs">True</property>
-	      <property name="show_border">False</property>
-	      <property name="tab_pos">GTK_POS_TOP</property>
-	      <property name="scrollable">False</property>
-	      <property name="enable_popup">False</property>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox32">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
-
-		  <child>
-		    <widget class="GtkScrolledWindow" id="scrolledwindow5">
-		      <property name="border_width">12</property>
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-		      <property name="shadow_type">GTK_SHADOW_NONE</property>
-		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-		      <child>
-			<widget class="GtkViewport" id="viewport1">
-			  <property name="visible">True</property>
-			  <property name="shadow_type">GTK_SHADOW_IN</property>
-
-			  <child>
-			    <widget class="GtkVBox" id="streamsVBox">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">0</property>
-
-			      <child>
-				<widget class="GtkLabel" id="noStreamsLabel">
-				  <property name="visible">True</property>
-				  <property name="sensitive">False</property>
-				  <property name="label" translatable="yes">&lt;i&gt;No Streams Available&lt;/i&gt;</property>
-				  <property name="use_underline">False</property>
-				  <property name="use_markup">True</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">16</property>
-				  <property name="ypad">16</property>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment3">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">12</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">12</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox5">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">True</property>
-			  <property name="spacing">0</property>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox6">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">6</property>
-
-			      <child>
-				<widget class="GtkImage" id="image21">
-				  <property name="visible">True</property>
-				  <property name="icon_size">6</property>
-				  <property name="icon_name">gtk-dialog-info</property>
-				  <property name="xalign">1</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">True</property>
-				  <property name="fill">True</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkLabel" id="label4828">
-				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">&lt;b&gt;Hint:&lt;/b&gt; Right click on a playback stream to move it to another output device.</property>
-				  <property name="use_underline">False</property>
-				  <property name="use_markup">True</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">0</property>
-				  <property name="ypad">0</property>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">True</property>
-				  <property name="fill">True</property>
-				</packing>
-			      </child>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="tab_expand">False</property>
-		  <property name="tab_fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label34">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">S_treams</property>
-		  <property name="use_underline">True</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="type">tab</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox30">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
-
-		  <child>
-		    <widget class="GtkScrolledWindow" id="scrolledwindow8">
-		      <property name="border_width">12</property>
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-		      <property name="shadow_type">GTK_SHADOW_NONE</property>
-		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-		      <child>
-			<widget class="GtkViewport" id="viewport4">
-			  <property name="visible">True</property>
-			  <property name="shadow_type">GTK_SHADOW_IN</property>
-
-			  <child>
-			    <widget class="GtkVBox" id="sinksVBox">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">0</property>
-
-			      <child>
-				<widget class="GtkLabel" id="noSinksLabel">
-				  <property name="visible">True</property>
-				  <property name="sensitive">False</property>
-				  <property name="label" translatable="yes">&lt;i&gt;No Sinks Available&lt;/i&gt;</property>
-				  <property name="use_underline">False</property>
-				  <property name="use_markup">True</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">16</property>
-				  <property name="ypad">16</property>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment1">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">12</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">12</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox3">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="label4826">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">&lt;b&gt;S_how:&lt;/b&gt;</property>
-			      <property name="use_underline">True</property>
-			      <property name="use_markup">True</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			      <property name="mnemonic_widget">sinkTypeComboBox</property>
-			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			      <property name="width_chars">-1</property>
-			      <property name="single_line_mode">False</property>
-			      <property name="angle">0</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkComboBox" id="sinkTypeComboBox">
-			      <property name="visible">True</property>
-			      <property name="items" translatable="yes">All Sinks
-Hardware Sinks
-Virtual Sinks</property>
-			      <property name="add_tearoffs">False</property>
-			      <property name="focus_on_click">True</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="tab_expand">False</property>
-		  <property name="tab_fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label4711">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">S_inks</property>
-		  <property name="use_underline">True</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="type">tab</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox31">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
-
-		  <child>
-		    <widget class="GtkScrolledWindow" id="scrolledwindow7">
-		      <property name="border_width">12</property>
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-		      <property name="shadow_type">GTK_SHADOW_NONE</property>
-		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-		      <child>
-			<widget class="GtkViewport" id="viewport3">
-			  <property name="visible">True</property>
-			  <property name="shadow_type">GTK_SHADOW_IN</property>
-
-			  <child>
-			    <widget class="GtkVBox" id="sourcesVBox">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">0</property>
-
-			      <child>
-				<widget class="GtkLabel" id="noSourcesLabel">
-				  <property name="visible">True</property>
-				  <property name="sensitive">False</property>
-				  <property name="label" translatable="yes">&lt;i&gt;No Sources Available&lt;/i&gt;</property>
-				  <property name="use_underline">False</property>
-				  <property name="use_markup">True</property>
-				  <property name="justify">GTK_JUSTIFY_LEFT</property>
-				  <property name="wrap">False</property>
-				  <property name="selectable">False</property>
-				  <property name="xalign">0</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xpad">16</property>
-				  <property name="ypad">16</property>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</property>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-			    </widget>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment2">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">12</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">12</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox4">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="label4827">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">&lt;b&gt;Sh_ow:&lt;/b&gt;</property>
-			      <property name="use_underline">True</property>
-			      <property name="use_markup">True</property>
-			      <property name="justify">GTK_JUSTIFY_LEFT</property>
-			      <property name="wrap">False</property>
-			      <property name="selectable">False</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			      <property name="mnemonic_widget">sourceTypeComboBox</property>
-			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			      <property name="width_chars">-1</property>
-			      <property name="single_line_mode">False</property>
-			      <property name="angle">0</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkComboBox" id="sourceTypeComboBox">
-			      <property name="visible">True</property>
-			      <property name="items" translatable="yes">All Sources
-All Except Monitor Sources
-Hardware Sources
-Virtual Sources
-Monitor Sources</property>
-			      <property name="add_tearoffs">False</property>
-			      <property name="focus_on_click">True</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="tab_expand">False</property>
-		  <property name="tab_fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="label4717">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">S_ources</property>
-		  <property name="use_underline">True</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="type">tab</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="streamWindow">
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">window1</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-
-  <child>
-    <widget class="GtkEventBox" id="streamWidget">
-      <property name="visible">True</property>
-      <property name="visible_window">True</property>
-      <property name="above_child">False</property>
-
-      <child>
-	<widget class="GtkVBox" id="streamWidget2">
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">0</property>
-
-	  <child>
-	    <widget class="GtkVBox" id="vbox26">
-	      <property name="border_width">12</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">6</property>
-
-	      <child>
-		<widget class="GtkHBox" id="hbox1">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="boldNameLabel">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes"></property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">True</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="nameLabel">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Stream Title</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">True</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_MIDDLE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkHBox" id="streamHBox">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkVBox" id="vbox29">
-		      <property name="visible">True</property>
-		      <property name="homogeneous">True</property>
-		      <property name="spacing">6</property>
-
-		      <child>
-			<widget class="GtkToggleButton" id="lockToggleButton">
-			  <property name="visible">True</property>
-			  <property name="tooltip" translatable="yes">Lock Channels Together</property>
-			  <property name="can_focus">True</property>
-			  <property name="relief">GTK_RELIEF_NONE</property>
-			  <property name="focus_on_click">True</property>
-			  <property name="active">True</property>
-			  <property name="inconsistent">False</property>
-
-			  <child>
-			    <widget class="GtkImage" id="image18">
-			      <property name="visible">True</property>
-			      <property name="stock">gtk-dialog-authentication</property>
-			      <property name="icon_size">1</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			  </child>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkToggleButton" id="muteToggleButton">
-			  <property name="visible">True</property>
-			  <property name="tooltip" translatable="yes">Lock Channels Together</property>
-			  <property name="can_focus">True</property>
-			  <property name="relief">GTK_RELIEF_NONE</property>
-			  <property name="focus_on_click">True</property>
-			  <property name="active">True</property>
-			  <property name="inconsistent">False</property>
-
-			  <child>
-			    <widget class="GtkImage" id="image20">
-			      <property name="visible">True</property>
-			      <property name="icon_size">1</property>
-			      <property name="icon_name">audio-volume-muted</property>
-			      <property name="xalign">0.5</property>
-			      <property name="yalign">0.5</property>
-			      <property name="xpad">0</property>
-			      <property name="ypad">0</property>
-			    </widget>
-			  </child>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkVBox" id="channelsVBox">
-		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">6</property>
-
-		      <child>
-			<placeholder/>
-		      </child>
-
-		      <child>
-			<placeholder/>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkHSeparator" id="hseparator2">
-	      <property name="visible">True</property>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
-	  </child>
-	</widget>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="channelWindow">
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">window2</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-
-  <child>
-    <widget class="GtkHBox" id="channelWidget">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">6</property>
-
-      <child>
-	<widget class="GtkLabel" id="channelLabel">
-	  <property name="visible">True</property>
-	  <property name="label" translatable="yes">&lt;b&gt;left-front&lt;/b&gt;</property>
-	  <property name="use_underline">False</property>
-	  <property name="use_markup">True</property>
-	  <property name="justify">GTK_JUSTIFY_LEFT</property>
-	  <property name="wrap">False</property>
-	  <property name="selectable">False</property>
-	  <property name="xalign">0</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-	  <property name="width_chars">10</property>
-	  <property name="single_line_mode">False</property>
-	  <property name="angle">0</property>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkHScale" id="volumeScale">
-	  <property name="visible">True</property>
-	  <property name="can_focus">True</property>
-	  <property name="draw_value">False</property>
-	  <property name="value_pos">GTK_POS_TOP</property>
-	  <property name="digits">0</property>
-	  <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
-	  <property name="inverted">False</property>
-	  <property name="adjustment">44.2408370972 0 100 5 0 0</property>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkLabel" id="volumeLabel">
-	  <property name="visible">True</property>
-	  <property name="label" translatable="yes">50%</property>
-	  <property name="use_underline">False</property>
-	  <property name="use_markup">False</property>
-	  <property name="justify">GTK_JUSTIFY_LEFT</property>
-	  <property name="wrap">False</property>
-	  <property name="selectable">False</property>
-	  <property name="xalign">1</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-	  <property name="width_chars">5</property>
-	  <property name="single_line_mode">False</property>
-	  <property name="angle">0</property>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
+  <widget class="GtkWindow" id="mainWindow">
+    <property name="title" translatable="yes">PulseAudio Volume Control</property>
+    <property name="default_width">500</property>
+    <property name="default_height">500</property>
+    <property name="icon_name">multimedia-volume-control</property>
+    <child>
+      <widget class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <child>
+          <widget class="GtkEventBox" id="titleEventBox">
+            <property name="visible">True</property>
+            <child>
+              <widget class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">12</property>
+                <child>
+                  <widget class="GtkImage" id="image19">
+                    <property name="visible">True</property>
+                    <property name="icon_size">6</property>
+                    <property name="icon_name">multimedia-volume-control</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox22">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="titleLabel">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">1</property>
+                        <property name="label" translatable="yes">&lt;span size="18000" color="black"&gt;&lt;b&gt;PulseAudio Volume Control&lt;/b&gt;&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label4825">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">&lt;span color="black"&gt;View and control the volumes of your audio streams and devices&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkVBox" id="vbox20">
+            <property name="visible">True</property>
+            <property name="border_width">12</property>
+            <property name="spacing">12</property>
+            <child>
+              <widget class="GtkNotebook" id="notebook">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="show_border">False</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox32">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="border_width">12</property>
+                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <child>
+                          <widget class="GtkViewport" id="viewport1">
+                            <property name="visible">True</property>
+                            <property name="shadow_type">GTK_SHADOW_NONE</property>
+                            <child>
+                              <widget class="GtkVBox" id="streamsVBox">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="noStreamsLabel">
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="xpad">16</property>
+                                    <property name="ypad">16</property>
+                                    <property name="label" translatable="yes">&lt;i&gt;No Streams Available&lt;/i&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment3">
+                        <property name="visible">True</property>
+                        <property name="bottom_padding">12</property>
+                        <property name="left_padding">12</property>
+                        <property name="right_padding">12</property>
+                        <child>
+                          <widget class="GtkHBox" id="hbox5">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkImage" id="image21">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="stock">gtk-dialog-info</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkAlignment" id="alignment6">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="right_padding">12</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label4828">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;Hint:&lt;/b&gt; &lt;i&gt;Right click on a playback stream to move it to another output device.&lt;/i&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label1">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;_Show:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                                <property name="use_underline">True</property>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkComboBox" id="sinkInputTypeComboBox">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="items" translatable="yes" comments="Applications&#10;All streams">All Streams
+Applications
+Virtual Streams</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label34">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_Playback</property>
+                    <property name="use_underline">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">tab</property>
+                    <property name="tab_fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox30">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow8">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="border_width">12</property>
+                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <child>
+                          <widget class="GtkViewport" id="viewport4">
+                            <property name="visible">True</property>
+                            <property name="shadow_type">GTK_SHADOW_NONE</property>
+                            <child>
+                              <widget class="GtkVBox" id="sinksVBox">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="noSinksLabel">
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="xpad">16</property>
+                                    <property name="ypad">16</property>
+                                    <property name="label" translatable="yes">&lt;i&gt;No Sinks Available&lt;/i&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="bottom_padding">12</property>
+                        <property name="left_padding">12</property>
+                        <property name="right_padding">12</property>
+                        <child>
+                          <widget class="GtkHBox" id="hbox3">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkImage" id="image2">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="stock">gtk-dialog-info</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkAlignment" id="alignment5">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="right_padding">12</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label3">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;Hint:&lt;/b&gt; &lt;i&gt;Right click on an output device to make it the default.&lt;/i&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label4826">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;S_how:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                                <property name="use_underline">True</property>
+                                <property name="mnemonic_widget">sinkTypeComboBox</property>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkComboBox" id="sinkTypeComboBox">
+                                <property name="visible">True</property>
+                                <property name="items" translatable="yes">All Output Devices
+Hardware Output Devices
+Virtual Output Devices</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label4711">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_Output Devices</property>
+                    <property name="use_underline">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">tab</property>
+                    <property name="position">1</property>
+                    <property name="tab_fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox31">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow7">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="border_width">12</property>
+                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <child>
+                          <widget class="GtkViewport" id="viewport3">
+                            <property name="visible">True</property>
+                            <property name="shadow_type">GTK_SHADOW_NONE</property>
+                            <child>
+                              <widget class="GtkVBox" id="sourcesVBox">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="noSourcesLabel">
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="xalign">0</property>
+                                    <property name="xpad">16</property>
+                                    <property name="ypad">16</property>
+                                    <property name="label" translatable="yes">&lt;i&gt;No Sources Available&lt;/i&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="bottom_padding">12</property>
+                        <property name="left_padding">12</property>
+                        <property name="right_padding">12</property>
+                        <child>
+                          <widget class="GtkHBox" id="hbox4">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkImage" id="image5">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="stock">gtk-dialog-info</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkAlignment" id="alignment4">
+                                <property name="visible">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="right_padding">12</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label5">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">&lt;b&gt;Hint:&lt;/b&gt; &lt;i&gt;Right click on an input device to make it the default.&lt;/i&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label4827">
+                                <property name="visible">True</property>
+                                <property name="xalign">1</property>
+                                <property name="label" translatable="yes">&lt;b&gt;Sho_w:&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                                <property name="use_underline">True</property>
+                                <property name="mnemonic_widget">sourceTypeComboBox</property>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkComboBox" id="sourceTypeComboBox">
+                                <property name="visible">True</property>
+                                <property name="items" translatable="yes">All Input Devices
+All Except Monitors
+Hardware Input Devices
+Virtual Input Devices
+Monitors</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label4717">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_Input Devices</property>
+                    <property name="use_underline">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">tab</property>
+                    <property name="position">2</property>
+                    <property name="tab_fill">False</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="GtkWindow" id="streamWindow">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">window1</property>
+    <child>
+      <widget class="GtkEventBox" id="streamWidget">
+        <property name="visible">True</property>
+        <child>
+          <widget class="GtkVBox" id="streamWidget2">
+            <property name="visible">True</property>
+            <child>
+              <widget class="GtkVBox" id="vbox26">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">6</property>
+                <child>
+                  <widget class="GtkHBox" id="hbox1">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkLabel" id="boldNameLabel">
+                        <property name="visible">True</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="nameLabel">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Stream Title</property>
+                        <property name="use_markup">True</property>
+                        <property name="selectable">True</property>
+                        <property name="ellipsize">PANGO_ELLIPSIZE_MIDDLE</property>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHBox" id="streamHBox">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkVBox" id="vbox29">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <property name="homogeneous">True</property>
+                        <child>
+                          <widget class="GtkToggleButton" id="lockToggleButton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Lock channels together</property>
+                            <property name="relief">GTK_RELIEF_NONE</property>
+                            <property name="response_id">0</property>
+                            <property name="active">True</property>
+                            <child>
+                              <widget class="GtkImage" id="image18">
+                                <property name="visible">True</property>
+                                <property name="icon_size">1</property>
+                                <property name="icon_name">stock_lock</property>
+                              </widget>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkToggleButton" id="muteToggleButton">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Mute audio</property>
+                            <property name="relief">GTK_RELIEF_NONE</property>
+                            <property name="response_id">0</property>
+                            <property name="active">True</property>
+                            <child>
+                              <widget class="GtkImage" id="image20">
+                                <property name="visible">True</property>
+                                <property name="icon_size">1</property>
+                                <property name="icon_name">audio-volume-muted</property>
+                              </widget>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkVBox" id="channelsVBox">
+                        <property name="visible">True</property>
+                        <property name="spacing">6</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkHSeparator" id="hseparator2">
+                <property name="visible">True</property>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="GtkWindow" id="channelWindow">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">window2</property>
+    <child>
+      <widget class="GtkHBox" id="channelWidget">
+        <property name="visible">True</property>
+        <property name="spacing">6</property>
+        <child>
+          <widget class="GtkLabel" id="channelLabel">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="label" translatable="yes">&lt;b&gt;left-front&lt;/b&gt;</property>
+            <property name="use_markup">True</property>
+            <property name="width_chars">15</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHScale" id="volumeScale">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="adjustment">44.2408370972 0 100 5 0 0</property>
+            <property name="digits">0</property>
+            <property name="draw_value">False</property>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="volumeLabel">
+            <property name="visible">True</property>
+            <property name="xalign">1</property>
+            <property name="label" translatable="yes">50%</property>
+            <property name="width_chars">5</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
 </glade-interface>

-- 
pavucontrol packaging



More information about the Pkg-pulseaudio-devel mailing list