[Xfce4-commits] [apps/xfce4-screensaver] 01/425: first commit

noreply at xfce.org noreply at xfce.org
Mon Oct 15 01:47:28 CEST 2018


This is an automated email from the git hooks/post-receive script.

b   l   u   e   s   a   b   r   e       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository apps/xfce4-screensaver.

commit fff4ecc82f2bcfa7427596e7ad9c3769fcab040b
Author: Perberos <perberos at gmail.com>
Date:   Fri Nov 4 22:16:15 2011 -0300

    first commit
---
 AUTHORS                                      |    1 +
 COPYING                                      |  340 ++++
 COPYING.LIB                                  |  482 +++++
 ChangeLog                                    |    7 +
 Makefile.am                                  |   56 +
 NEWS                                         | 1576 +++++++++++++++
 README                                       |   59 +
 autogen.sh                                   |   23 +
 configure.ac                                 | 1129 +++++++++++
 data/Makefile.am                             |  116 ++
 data/images/Makefile.am                      |   14 +
 data/images/cosmos/CREDITS                   |   29 +
 data/images/cosmos/Makefile.am               |   54 +
 data/images/cosmos/background-1.xml.in       |   92 +
 data/images/cosmos/blue-marble-west.jpg      |  Bin 0 -> 456110 bytes
 data/images/cosmos/cloud.jpg                 |  Bin 0 -> 1379759 bytes
 data/images/cosmos/comet.jpg                 |  Bin 0 -> 141297 bytes
 data/images/cosmos/cosmos.xml.in.in          |   11 +
 data/images/cosmos/earth-horizon.jpg         |  Bin 0 -> 210180 bytes
 data/images/cosmos/galaxy-ngc3370.jpg        |  Bin 0 -> 460107 bytes
 data/images/cosmos/helix-nebula.jpg          |  Bin 0 -> 138039 bytes
 data/images/cosmos/jupiter.jpg               |  Bin 0 -> 44528 bytes
 data/images/cosmos/sombrero.jpg              |  Bin 0 -> 552723 bytes
 data/images/cosmos/whirlpool.jpg             |  Bin 0 -> 659143 bytes
 data/images/mate-logo-white.svg              |   14 +
 data/lock-dialog-default.ui                  |  505 +++++
 data/mate-screensaver                        |   15 +
 data/mate-screensaver-command.1              |   70 +
 data/mate-screensaver-preferences.1          |   37 +
 data/mate-screensaver-preferences.desktop.in |   13 +
 data/mate-screensaver-preferences.ui         |  620 ++++++
 data/mate-screensaver.1                      |   41 +
 data/mate-screensaver.directory.in           |    8 +
 data/mate-screensaver.pc.in                  |   17 +
 data/mate-screensaver.schemas.in             |  257 +++
 data/mate-screensavers.menu.in               |   20 +
 data/migrate-xscreensaver-config.sh          |   34 +
 data/org.mate.ScreenSaver.service.in         |    3 +
 data/xscreensaver-config.xsl                 |   27 +
 distro/archlinux/PKGBUILD                    |   35 +
 distro/archlinux/mate-screensaver.install    |   18 +
 doc/Makefile.am                              |   27 +
 doc/config.xsl                               |    6 +
 doc/dbus-interface.xml                       |  479 +++++
 doc/docbook.css                              |   18 +
 doc/mate-screensaver.xml.in                  |   23 +
 po/ChangeLog                                 | 2622 +++++++++++++++++++++++++
 po/LINGUAS                                   |   82 +
 po/Makefile.in.in                            |  217 +++
 po/POTFILES.in                               |   24 +
 po/POTFILES.skip                             |    6 +
 po/ar.po                                     |  766 ++++++++
 po/as.po                                     |  739 +++++++
 po/ast.po                                    |  764 ++++++++
 po/be.po                                     |  742 ++++++++
 po/be at latin.po                               | 1000 ++++++++++
 po/bg.po                                     |  783 ++++++++
 po/bn.po                                     |  774 ++++++++
 po/bn_IN.po                                  |  767 ++++++++
 po/br.po                                     |  694 +++++++
 po/ca.po                                     | 1097 +++++++++++
 po/ca at valencia.po                            | 1096 +++++++++++
 po/crh.po                                    |  829 ++++++++
 po/cs.po                                     |  772 ++++++++
 po/cy.po                                     |  831 ++++++++
 po/da.po                                     | 1056 ++++++++++
 po/de.po                                     |  839 ++++++++
 po/dz.po                                     |  859 +++++++++
 po/el.po                                     |  786 ++++++++
 po/en at shaw.po                                |  656 +++++++
 po/en_CA.po                                  |  811 ++++++++
 po/en_GB.po                                  | 1107 +++++++++++
 po/es.po                                     |  787 ++++++++
 po/et.po                                     |  600 ++++++
 po/eu.po                                     |  762 ++++++++
 po/fa.po                                     |  938 +++++++++
 po/fi.po                                     | 1142 +++++++++++
 po/fr.po                                     |  788 ++++++++
 po/ga.po                                     |  721 +++++++
 po/gl.po                                     |  788 ++++++++
 po/gu.po                                     |  772 ++++++++
 po/he.po                                     |  756 ++++++++
 po/hi.po                                     |  754 ++++++++
 po/hr.po                                     |  744 ++++++++
 po/hu.po                                     |  772 ++++++++
 po/id.po                                     |  933 +++++++++
 po/is.po                                     |  729 +++++++
 po/it.po                                     |  824 ++++++++
 po/ja.po                                     |  769 ++++++++
 po/ka.po                                     |  812 ++++++++
 po/kn.po                                     |  759 ++++++++
 po/ko.po                                     | 1031 ++++++++++
 po/ku.po                                     |  978 ++++++++++
 po/lt.po                                     |  778 ++++++++
 po/lv.po                                     |  775 ++++++++
 po/mai.po                                    |  728 +++++++
 po/mg.po                                     |  866 +++++++++
 po/mk.po                                     |  754 ++++++++
 po/ml.po                                     |  758 ++++++++
 po/mn.po                                     |  957 ++++++++++
 po/mr.po                                     |  752 ++++++++
 po/nb.po                                     |  759 ++++++++
 po/nds.po                                    |  781 ++++++++
 po/ne.po                                     |  762 ++++++++
 po/nl.po                                     | 1458 ++++++++++++++
 po/nn.po                                     |  955 ++++++++++
 po/oc.po                                     |  710 +++++++
 po/or.po                                     |  760 ++++++++
 po/pa.po                                     |  796 ++++++++
 po/pl.po                                     |  707 +++++++
 po/ps.po                                     |  699 +++++++
 po/pt.po                                     | 1046 ++++++++++
 po/pt_BR.po                                  |  787 ++++++++
 po/ro.po                                     |  774 ++++++++
 po/ru.po                                     |  781 ++++++++
 po/si.po                                     |  765 ++++++++
 po/sk.po                                     |  776 ++++++++
 po/sl.po                                     |  718 +++++++
 po/sq.po                                     |  808 ++++++++
 po/sr.po                                     |  846 ++++++++
 po/sr at latin.po                               |  846 ++++++++
 po/sv.po                                     |  887 +++++++++
 po/ta.po                                     |  755 ++++++++
 po/te.po                                     |  749 ++++++++
 po/th.po                                     | 1039 ++++++++++
 po/tr.po                                     |  994 ++++++++++
 po/uk.po                                     |  771 ++++++++
 po/vi.po                                     |  691 +++++++
 po/zh_CN.po                                  |  790 ++++++++
 po/zh_HK.po                                  |  959 ++++++++++
 po/zh_TW.po                                  |  978 ++++++++++
 savers/Makefile.am                           |  142 ++
 savers/cosmos-slideshow.desktop.in.in        |   10 +
 savers/floaters.c                            | 1269 ++++++++++++
 savers/floaters.c.orig                       | 1256 ++++++++++++
 savers/footlogo-floaters.desktop.in.in       |   10 +
 savers/gs-theme-engine-marshal.list          |    1 +
 savers/gs-theme-engine.c                     |  226 +++
 savers/gs-theme-engine.c.orig                |  216 +++
 savers/gs-theme-engine.h                     |   88 +
 savers/gs-theme-engine.h.orig                |   88 +
 savers/gs-theme-window.c                     |  214 +++
 savers/gs-theme-window.c.orig                |  208 ++
 savers/gs-theme-window.h                     |   72 +
 savers/gs-theme-window.h.orig                |   72 +
 savers/gste-popsquares.c                     |  622 ++++++
 savers/gste-popsquares.c.orig                |  563 ++++++
 savers/gste-popsquares.h                     |   57 +
 savers/gste-popsquares.h.orig                |   57 +
 savers/gste-slideshow.c                      | 1082 +++++++++++
 savers/gste-slideshow.c.orig                 | 1001 ++++++++++
 savers/gste-slideshow.h                      |   69 +
 savers/gste-slideshow.h.orig                 |   69 +
 savers/personal-slideshow.desktop.in.in      |   10 +
 savers/popsquares.c                          |   73 +
 savers/popsquares.c.orig                     |   72 +
 savers/popsquares.desktop.in.in              |   10 +
 savers/slideshow.c                           |  143 ++
 savers/slideshow.c.orig                      |  127 ++
 savers/xdg-user-dir-lookup.c                 |  168 ++
 savers/xdg-user-dir-lookup.c.orig            |  168 ++
 savers/xdg-user-dir-lookup.h                 |   28 +
 src/Makefile.am                              |  268 +++
 src/copy-theme-dialog.c                      |  545 ++++++
 src/copy-theme-dialog.c.orig                 |  545 ++++++
 src/copy-theme-dialog.h                      |   56 +
 src/copy-theme-dialog.h.orig                 |   56 +
 src/debug-screensaver.sh                     |   42 +
 src/gs-auth-helper.c                         |  213 +++
 src/gs-auth-helper.c.orig                    |  213 +++
 src/gs-auth-pam.c                            |  843 ++++++++
 src/gs-auth-pam.c.orig                       |  843 ++++++++
 src/gs-auth-pwent.c                          |  291 +++
 src/gs-auth-pwent.c.orig                     |  291 +++
 src/gs-auth.h                                |   67 +
 src/gs-auth.h.orig                           |   65 +
 src/gs-debug.c                               |  163 ++
 src/gs-debug.c.orig                          |  163 ++
 src/gs-debug.h                               |   71 +
 src/gs-fade.c                                |  987 ++++++++++
 src/gs-fade.c.orig                           |  987 ++++++++++
 src/gs-fade.h                                |   77 +
 src/gs-fade.h.orig                           |   77 +
 src/gs-grab-x11.c                            |  672 +++++++
 src/gs-grab-x11.c.orig                       |  672 +++++++
 src/gs-grab.h                                |   79 +
 src/gs-grab.h.orig                           |   79 +
 src/gs-job.c                                 |  567 ++++++
 src/gs-job.c.orig                            |  567 ++++++
 src/gs-job.h                                 |   69 +
 src/gs-job.h.orig                            |   69 +
 src/gs-listener-dbus.c                       | 2272 ++++++++++++++++++++++
 src/gs-listener-dbus.c.orig                  | 2272 ++++++++++++++++++++++
 src/gs-listener-dbus.h                       |   89 +
 src/gs-listener-dbus.h.orig                  |   89 +
 src/gs-lock-plug.c                           | 2050 ++++++++++++++++++++
 src/gs-lock-plug.c.orig                      | 2050 ++++++++++++++++++++
 src/gs-lock-plug.h                           |   82 +
 src/gs-lock-plug.h.orig                      |   82 +
 src/gs-manager.c                             | 2030 ++++++++++++++++++++
 src/gs-manager.c.orig                        | 2030 ++++++++++++++++++++
 src/gs-manager.h                             |  107 ++
 src/gs-manager.h.orig                        |  107 ++
 src/gs-marshal.list                          |    4 +
 src/gs-monitor.c                             |  528 +++++
 src/gs-monitor.c.orig                        |  528 +++++
 src/gs-monitor.h                             |   57 +
 src/gs-monitor.h.orig                        |   57 +
 src/gs-prefs.c                               |  995 ++++++++++
 src/gs-prefs.c.orig                          |  995 ++++++++++
 src/gs-prefs.h                               |   85 +
 src/gs-prefs.h.orig                          |   85 +
 src/gs-theme-manager.c                       |  453 +++++
 src/gs-theme-manager.c.orig                  |  453 +++++
 src/gs-theme-manager.h                       |   65 +
 src/gs-theme-manager.h.orig                  |   65 +
 src/gs-visual-gl.c                           |  116 ++
 src/gs-visual-gl.c.orig                      |  116 ++
 src/gs-visual-gl.h                           |   32 +
 src/gs-watcher-x11.c                         |  680 +++++++
 src/gs-watcher-x11.c.orig                    |  680 +++++++
 src/gs-watcher.h                             |   65 +
 src/gs-watcher.h.orig                        |   65 +
 src/gs-window-x11.c                          | 2647 ++++++++++++++++++++++++++
 src/gs-window-x11.c.orig                     | 2647 ++++++++++++++++++++++++++
 src/gs-window.h                              |  106 ++
 src/gs-window.h.orig                         |  106 ++
 src/mate-screensaver-command.c               |  551 ++++++
 src/mate-screensaver-command.c.orig          |  551 ++++++
 src/mate-screensaver-dialog.c                |  665 +++++++
 src/mate-screensaver-dialog.c.orig           |  665 +++++++
 src/mate-screensaver-gl-helper.c             |   83 +
 src/mate-screensaver-gl-helper.c.orig        |   83 +
 src/mate-screensaver-preferences.c           | 1781 +++++++++++++++++
 src/mate-screensaver-preferences.c.orig      | 1781 +++++++++++++++++
 src/mate-screensaver.c                       |  132 ++
 src/mate-screensaver.c.orig                  |  132 ++
 src/mate-screensaver.desktop.in.in           |   14 +
 src/mate-screensaver.h                       |   32 +
 src/setuid.c                                 |  247 +++
 src/setuid.c.orig                            |  247 +++
 src/setuid.h                                 |   25 +
 src/setuid.h.orig                            |   25 +
 src/subprocs.c                               |  166 ++
 src/subprocs.c.orig                          |  166 ++
 src/subprocs.h                               |   39 +
 src/subprocs.h.orig                          |   39 +
 src/test-fade.c                              |  134 ++
 src/test-fade.c.orig                         |  134 ++
 src/test-passwd.c                            |  288 +++
 src/test-passwd.c.orig                       |  288 +++
 src/test-watcher.c                           |  106 ++
 src/test-watcher.c.orig                      |  106 ++
 src/test-window.c                            |  180 ++
 src/test-window.c.orig                       |  180 ++
 255 files changed, 127227 insertions(+)

diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..41ab7cb
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+William Jon McCann <mccann at jhu.edu>
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..ba35a54
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+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
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+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
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    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
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+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
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+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
+may add an explicit geomraphical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+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
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  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 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.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+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
+Public License instead of this License.
diff --git a/COPYING.LIB b/COPYING.LIB
new file mode 100644
index 0000000..66e2234
--- /dev/null
+++ b/COPYING.LIB
@@ -0,0 +1,482 @@
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+                    675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geomraphical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+     Appendix: How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library 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
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..a51a1c8
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,7 @@
+
+==== 2.30.2 ====
+
+2010-09-28  William Jon McCann  <jmccann at redhat.com>
+
+	* FORK: please, see full changelog at
+	http://git.gnome.org/browse/gnome-screensaver/log/
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..d9d2ad1
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,56 @@
+# This file will be processed with automake-1.7 to create Makefile.in
+
+AUTOMAKE_OPTIONS = 1.7
+
+NULL =
+
+SUBDIRS =			\
+	src			\
+	savers			\
+	po 			\
+	data			\
+	doc			\
+	$(NULL)
+
+EXTRA_DIST =			\
+	COPYING			\
+	COPYING.LIB		\
+	AUTHORS			\
+	INSTALL			\
+	README			\
+	ChangeLog		\
+	NEWS			\
+	TODO			\
+	HACKING			\
+	intltool-extract.in     \
+	intltool-merge.in       \
+	intltool-update.in	\
+	$(NULL)
+
+DISTCLEANFILES =		\
+	intltool-extract	\
+	intltool-merge		\
+	intltool-update		\
+	./po/.intltool-merge-cache	\
+	$(NULL)
+
+MAINTAINERCLEANFILES =		\
+	*~			\
+	intltool-*.in		\
+	compile			\
+	configure		\
+	INSTALL			\
+	COPYING			\
+	install-sh		\
+	missing			\
+	mkinstalldirs		\
+	config.guess		\
+	ltmain.sh		\
+	config.sub		\
+	depcomp			\
+	Makefile.in		\
+	config.h.*		\
+	aclocal.m4		\
+	acinclude.m4		\
+	$(NULL)
+
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..c54238e
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,1576 @@
+===============
+Version  2.30.2
+===============
+
+Brown paper-bag release. Fix unclosed quote in sed in configure.ac.
+
+
+===============
+Version  2.30.1
+===============
+
+Non-maintainer release. Translation updates and fixes for systems that don't
+support fading, properly grabbing input after wake from suspend, starting DBUS
+if needed, and building without XF86VMODE.
+
+Shortlog below:
+
+Carles Ferrando (1):
+      Updated Catalan (Valencian) translation
+
+Chris Coulson (1):
+      Don't crash on systems that don't support XF86VM or XRANDR gamma fade
+
+Gil Forcada (1):
+      Minor fix in Catalan translation
+
+Ivar Smolin (1):
+      Estonian translation updated
+
+Jordi Serratosa (1):
+      Fixes to Catalan translation
+
+Manoj Kumar Giri (1):
+      Updated Oriya Translation
+
+Matthias Clasen (1):
+      Bump version
+
+Olav Vitters (1):
+      Fix doap file
+
+Ray Strode (1):
+      Add session service activation file
+
+Rudols Mazurs (1):
+      Updated Latvian translation.
+
+William Jon McCann (2):
+      Properly handle monitor configuration changes
+      Fix building without XF86VMODE gamma
+
+Wouter Bolsterlee (3):
+      Dutch translation updated by Wouter Bolsterlee
+      Fix compiler warning by adding GTK_WIDGET() cast
+
+
+===============
+Version  2.30.0
+===============
+
+Translation updates
+
+===============
+Version 2.29.92
+===============
+
+Fixed bugs:
+ - Build fix for systems with x11 < 1.3
+
+===============
+Version 2.29.91
+===============
+
+Fixed bugs:
+ - #609789 - CVE-2010-0422, handle monitor hotplugging more securely
+ - Fix screen dirt in floaters screensaver
+
+===============
+Version 2.29.90
+===============
+
+Fixed bugs:
+ - #609337, CVE-2010-0414, handle monitor removal more securely
+
+===============
+Version 2.29.1
+===============
+
+Fixed bugs:
+ - #597874, Use xrandr 1.2 gamma fading
+ - RH bug #546656, Fix crash in popsquares
+ - #598476, Don't crash when lock dialog dies during shake
+ - #593616, Fix multi-head issues
+ - #600488, Remove session inhibitors if the originator falls of the bus
+
+
+===============
+Version 2.28.0
+===============
+
+Fixed bugs:
+
+ - #444927, get idle time from xorg
+ - #463010, Port mate-screensaver from libglade to gtkbuilder
+ - #564061, Install .desktop file
+ - #570402, screensaver crash if number of screens changes
+ - #570941, String not marked for translation mate-screensaver-command.c
+ - #574896, [Leave message] Cancel button should clean clipboard buffe
+ - #576463, can't unlock screen after upgrade until restarting mate-
+            screensaver
+ - #581995, Fade out doesn't properly fall back to gamma number if X server
+            only supports 0-size ramp
+ - #586174, Encoding key in desktop files is deprecated
+ - #589728, mate-screensaver: implicit declaration g_printf
+ - #590776, screensaver is never activated
+ - #591193, Update/Create .gitignore
+ - #591194, Add Comment and Icon in mate-screensaver.desktop
+ - #594082, mate-screensaver ignores input when fading to black
+
+Translators:
+
+- Khaled Hosny (ar)
+- Amitakhya Phukan (as)
+- Alexander Shopov (bg)
+- Runa Bhattacharjee (bn_IN)
+- Jamil Ahmed (bn)
+- Denis ARNAUD (br)
+- Carles Ferrando (ca at valencia)
+- Petr Kovar (cz)
+- Ask H. Larsen (da)
+- Mario Blättermann, Christian Kirbach (de)
+- Philip Withnall (en_GB)
+- Jorge González (es)
+- Ivar Smolin, Mattias Põldaru (et)
+- Inaki Larranaga Murgoitio (eu)
+- Tommi Vainikainen (fi)
+- Claude Paroz (fr)
+- Seán de Búrca (ga)
+- Antón Méixome (gl)
+- Sweta Kothari (gu)
+- Yaron Shahrabani (he)
+- Rajesh Ranjan (hi)
+- Gabor Kelemen (hu)
+- Luca Ferretti (it)
+- Shankar Prasad (kn)
+- Changwoo Ryu (ko)
+- Gintautas Miliauskas (lt)
+- Rajesh Ranjan (mai)
+- Ani (ml)
+- Sandeep Shedmake (mr)
+- Kjartan Maraas (nb)
+- Niels-Christoph Fiedler (nds)
+- Manoj Kumar Giri (or)
+- A S Alam (pa)
+- Tomasz Dominikowski (pl)
+- Rodrigo L. M. Flores, Krix Apolinário (pt_BR)
+- Duarte Loreto (pt)
+- Lucian Adrian Grijincu (ro)
+- Matej Urbančič (sl)
+- Miloš Popović (sr at latin)
+- Miloš Popović (sr)
+- Daniel Nylander (sv)
+- ifelix (ta)
+- krishnababu k (te)
+- Theppitak Karoonboonyanan (th)
+- Maxim V. Dziumanenko (uk)
+- Chao-Hsiung Liao (zh_HK)
+- Chao-Hsiung Liao (zh_TW)
+
+===============
+Version 2.27.0
+===============
+
+- Add an autostart file for mate-screensaver (#585485)
+
+Updated Translations: Telugu, Catalan, zh_CN, Crimean Tatar
+
+===============
+Version 2.26.1
+===============
+
+- Fixed #572955, audit GError usage (William Jon McCann)
+- Fixed #572956, use g_strerror (William Jon McCann)
+- Fixed #573495, logout_command setting may be overwritten with keyboard_command value (William Jon McCann)
+- Fixed #577739, mate-screensaver-gl-helper calls gdk_x11_visual_get_xvisual with NULL visual (William Jon McCann)
+- Fixed #578669, Screenserver (William Jon McCann)
+
+Translations:
+- Updated crh: Reşat SABIQ
+- Updated ja: Takeshi AIHANA
+- Updated kn: Shankar Prasad
+
+===============
+Version 2.26.0
+===============
+
+- Remove power notice signal
+- Rely on MATE session idle detection
+- Proxy g-s inhibitors over to the session
+- Read status message from session
+- Accept a full path for theme (Matthias Clasen)
+
+===============
+Version 2.25.2
+===============
+
+- Fix pixmap leak (Matthias Clasen)
+- Fix dialog border width
+
+===============
+Version 2.25.1
+===============
+
+- Add bevel around dialog
+- Fixed #444927, get idle time from xorg
+- Fixed #492949, screensavers-personal-slideshow should not show hidden directories (Jörg)
+- Fixed #530561, "Random" preview is always the last saver (Maxim Ermilov)
+- Fixed #561855, Calls wrong slideshow binary if there is one installed in $PATH (Frederic Crozat)
+
+Translations:
+None
+
+===============
+Version 2.24.1
+===============
+
+- Fixed #555701, libmate-desktop:mate_bg_create_pixmap() leaks pixmaps and X clients (Scott Remnant)
+- Fixed #451498, Preview of "Blank screen" is not consistent (Neil Patel)
+- Fixed #552119, Add GTK and MATE to screensaver desktop (William Jon McCann)
+- Fixed #552523, Screensaver suddenly stopped working (William Jon McCann)
+- Fixed #555254, mate-screensaver-dialog NULL pointer crash (William Jon McCann)
+- Fixed #555491, mate-screensaver should release mouse/keyboard when failed to grab both of them (Joey Yu Zheng)
+- Fixed #560456, Cleaning up GTK Includes in mate-screensaver (Maxim Ermilov)
+
+Translations:
+- Updated ar: Djihed Afifi
+- Updated ast: Andre Klapper, Astur
+- Updated be at latin: Ihar Hračyška, Ihar Hrachyshka
+- Updated pt_BR: Leonardo Ferreira Fontenelle, Vladimir Melo
+
+
+===============
+Version 2.24.0
+===============
+
+- Updated LINGUAS, sr at latin.po, sr at Latn: Arangel Angov
+- Updated ar: Djihed Afifi, Khaled Hosny
+- Updated bg: Alexander Shopov
+- Updated bn_IN: Runa Bhattacharjee
+- Updated ca: Gil Forcada
+- Updated da: Kenneth Nielsen
+- Updated de: Hendrik Richter
+- Updated dz: Pema Geyleg, Dawa pemo
+- Updated en_GB: Philip Withnall, David Lodge
+- Updated et: Ivar Smolin
+- Updated fr: Claude Paroz
+- Updated ga: Seán de Búrca
+- Updated hr: Robert Sedak, Ante Karamatić
+- Updated hu: Gabor Kelemen
+- Updated it: Luca Ferretti
+- Updated kn: Shankar Prasad
+- Updated ko: Changwoo Ryu
+- Updated mk: Arangel Angov, Clytie Siddall <clytie at riverland.net.au>
+- Updated ml: Praveen Arimbrathodiyil, പ്രവീണ്‍ അരിമ്പ്രത്തൊടിയില്‍
+- Updated mr: Sandeep Shedmake
+- Updated nl: Wouter Bolsterlee
+- Updated pl: Wadim Dziedzic, wadim dziedzic
+- Updated pt_BR: Vladimir Melo
+- Updated ro: Mugurel Tudor, Mișu Moldovan
+- Updated sr.po, sr at latin: Goran Rakić
+- Updated ta: I. Felix
+- Updated tr: Baris Cicek
+
+
+===============
+Version 2.23.90
+===============
+
+- use standard icon names (Matthias Clasen)
+- Paint widget background color as face background color.
+- Add/remove windows as necessary in response to RANDR 1.2 events
+- Honor the disable_user_switching lockdown key.
+- Fixed #547013, The dialog incorrectly tell that the numlock is on (William Jon McCann)
+
+Translations:
+- Updated LINGUAS, sr at latin.po, sr at Latn: Goran Rakic
+- Updated ar: Khaled Hosny
+- Updated cs: Petr Kovar
+- Updated eu: Inaki Larranaga Murgoitio, Iñaki Larrañaga Murgoitio
+- Updated fi: Ilkka Tuohela, Timo Jyrinki
+- Updated gu: Daniel Nylander, Sweta Kothari
+- Updated he: Yair Hershkovitz  <yairhr at gmail.com>, Yaniv Abir <yanivabir at gmail dot com>
+- Updated ja: Takeshi AIHANA
+- Updated lt: Gintautas Miliauskas
+- Updated pt: Duarte Loreto
+- Updated pt_BR: Vladimir Melo
+- Updated sv: Daniel Nylander
+
+Help Manual Translations:
+None
+
+===============
+Version 2.23.3
+===============
+
+        * Fix build issue (Wouter Bolsterlee)
+        * Add a simple frame around user icon
+        * Add a new child widget to use for themes to draw on
+
+===============
+Version 2.23.2
+===============
+
+        * Fix gamma lost during fade
+        * Show default desktop background behind lock dialog
+        * Add reporting of inhibitors to --query command
+
+===============
+Version 2.22.2
+===============
+
+        * Add a 160 char limit to the message text box.
+
+===============
+Version 2.22.1
+===============
+
+       * Fix for bug 525785 – CVE-2008-0887
+
+===============
+Version 2.22.0
+===============
+
+  Translators
+
+        - Updated oc: Yannig Marchegay
+        - Updated ca: Gil Forcada
+        - Updated eu: Inaki Larranaga Murgoitio, Djihed Afifi <djihed at gmail.com>
+        - Updated as: Amitakhya Phukan
+        - Updated ar: Artur Flinta, Djihed Afifi <djihed at gmail.com>
+        - Updated cs: Petr Kovar, Clytie Siddall <clytie at riverland.net.au>
+        - Updated et: Priit Laes  <plaes at svn dot mate dot
+        - Updated gl: Ignacio Casal Quinteiro
+        - Updated es: Jorge Gonzalez, Djihed Afifi <djihed at gmail.com>
+        - Updated bn_IN: Runa Bhattacharjee
+        - Updated nl: Wouter Bolsterlee
+        - Updated pt: Duarte Loreto
+        - Updated nb: Kjartan Maraas
+        - Updated tr: Baris Cicek
+        - Updated ne: Pawan Chitrakar
+        - Updated lt: Gintautas Miliauskas
+        - Updated th: Theppitak Karoonboonyanan
+        - Updated zh_TW: Taiwan
+        - Updated en_GB: Philip Withnall
+        - Updated be: Alexander Nyakhaychyk
+        - Updated fr: Claude Paroz
+        - Updated zh_HK: Hong Kong
+        - Updated pt_BR: Leonardo Ferreira Fontenelle
+        - Updated de: Andre Klapper
+        - Updated hu: Gabor Kelemen
+        - Updated fi: bug #518255, Ilkka Tuohela
+        - Updated da: Kenneth Nielsen
+        - Updated ja: Takeshi AIHANA
+        - Updated he: Yair Hershkovitz  <yairhr at gmail.com>
+        - Updated be at latin: Ihar Hrachyshka
+        - Updated ko: Changwoo Ryu
+        - Updated sv: Daniel Nylander
+        - Updated mk: Arangel Angov, Ignacio Casal Quinteiro  <nacho.resa at gmail.com>, Clytie Siddall <clytie at riverland.net.au>
+        - Updated sk: Marcel Telka
+        - Updated pl: Artur Flinta
+        - Updated uk: Maxim Dziumanenko
+        - Updated mr: Rahul Bhalerao, mr
+
+===============
+Version 2.21.6
+===============
+
+        * New theme transfer progress dialog. (John Millikin)
+        * Migrate mate-vfs to GIO (John Millikin)
+        * Set default action after cancelling note.
+
+===============
+Version 2.20.0
+===============
+
+  mate-screensaver
+
+        * Fixed #442853, Unlock dialog shows Switch User button when /apps/mate-screensaver/user_switch_enabled is false (William Jon McCann)
+
+  Translators
+
+        * Updated el: Nikos Charonitakis
+        * Updated vi: Clytie Siddall
+        * Updated ca: Gil Forcada
+        * Updated it: Luca Ferretti
+        * Updated ar: Djihed Afifi <djihed at gmail.com>
+        * Updated et: Priit Laes
+        * Updated ru: Nickolay V. Shmyrev
+        * Updated nl: Wouter Bolsterlee
+        * Updated pt: Duarte Loreto
+        * Updated nb: Kjartan Maraas
+        * Updated tr: Baris Cicek
+        * Updated lt: Gintautas Miliauskas
+        * Updated ro: Mugurel Tudor
+        * Updated ta: I. Felix
+        * Updated fr: Stéphane Raimbault
+        * Updated da: Kenneth Nielsen
+        * Updated hu: Gabor Kelemen
+        * Updated ja: Takeshi AIHANA
+        * Updated ml: Ani Peter
+        * Updated mk: Jovan Naumovski  <jovan at lugola.net>
++
+        * Updated sk: Andre Klapper
+        * Updated si: Danishka Navin
+        * Updated uk: Maxim Dziumanenko
+
+
+
+===============
+Version 2.19.7
+===============
+
+  mate-screensaver
+
+        * Fixed #437225, Solaris needs additional libs linked with to build (William Jon McCann)
+        * Fixed #463754, remove last dep on libmate (Jani Monoses)
+        * Initialize XWindowAttributes (Rodrigo Moya)
+        * Improvements to slideshow (Frederic Crozat)
+
+  Translators
+
+        * Updated gu: Ankit Patel
+        * Updated be at latin: Ihar Hrachyshka
+        * Updated pt_BR: Leonardo Ferreira Fontenelle
+        * Updated ml: Ani Peter
+        * Updated de: Hendrik Richter
+        * Updated ko: Changwoo Ryu
+        * Updated sv: Daniel Nylander
+        * Updated es: Jorge Gonzalez
+        * Updated th: Theppitak Karoonboonyanan
+        * Updated fi: Ilkka Tuohela
+        * Updated eu: Inaki Larranaga Murgoitio
+        * Updated et: Priit Laes
+        * Updated te: Sunil Mohan Adapa
+        * Updated ja: Takeshi AIHANA
+        * Updated pl: Artur Flinta
+
+
+
+===============
+Version 2.19.6
+===============
+
+  mate-screensaver
+
+        * Fixed #327602, mate-screensaver never propagates the environment to its helper dialog (William Jon McCann)
+        * Fixed #456705, useless message on stdout (Bill Nottingham)
+        * Fixed #461028, console-kit ActiveChanged (VC switch) does not trigger unlock request (Ian Jackson)
+        * Fixed #461722, Add support to disable slideshow randomization (Frederic Crozat)
+        * Fixed #461814, Allow to specify background color for image slideshow (Frederic Crozat)
+        * Fixed #461824, remove libexif dependency (Frederic Crozat)
+
+  Translators
+
+        * Updated mn: Djihed Afifi <djihed at gmail.com>
+        * Updated nl: Wouter Bolsterlee
+        * Updated be at latin: Ihar Hrachyshka
+        * Updated vi: Nguyễn Thái Ngọc Duy, Clytie Siddall
+        * Updated nb: Kjartan Maraas
+        * Updated de: Andre Klapper
+        * Updated sv: Daniel Nylander
+        * Updated mk: Daniel Nylander
+        * Updated hu: Gabor Kelemen
+        * Updated lv: Daniel Nylander, Djihed Afifi <djihed at gmail.com>
+        * Updated si: I. Felix, si
+        * Updated en_GB: David Lodge
+        * Updated dz: Pema Geyleg
+        * Updated pl: Artur Flinta
+        * Updated th: Theppitak Karoonboonyanan
+        * Updated fi: Ilkka Tuohela
+        * Updated et: Priit Laes
+        * Updated ja: Takeshi AIHANA
+        * Updated es: Jorge Gonzalez
+        * Updated ta: I. Felix, I Felix
+
+
+
+===============
+Version 2.19.5
+===============
+
+  mate-screensaver
+
+        * Fixed #331515, No translation for themes in command line help (William Jon McCann)
+        * Fixed #354663, lock dialog not visible when using nvidia clone (William Jon McCann)
+        * Fixed #434712, mate-screensaver crashes without dbus system bus (William Jon McCann)
+        * Fixed #436818, replace mate_help_display (William Jon McCann)
+        * Fixed #445443, Screensaver deactivation is not correct (William Jon McCann)
+
+  Translators
+
+        * Updated be at latin: Ihar Hrachyshka
+        * Updated vi: Nguyễn Thái Ngọc Duy, Clytie Siddall
+        * Updated nb: Kjartan Maraas
+        * Updated sv: Daniel Nylander
+        * Updated lv: Daniel Nylander
+        * Updated si: I. Felix, si
+        * Updated en_GB: David Lodge
+        * Updated dz: Pema Geyleg
+        * Updated es: Jorge Gonzalez
+        * Updated th: Theppitak Karoonboonyanan
+        * Updated et: Priit Laes
+        * Updated pl: Artur Flinta
+        * Updated ta: I Felix
+
+
+===============
+Version 2.19.1
+===============
+
+  mate-screensaver
+
+        * Fixed #384509, mate-screensaver could allow users to leave notes when screen is locked (William Jon McCann)
+        * Fixed #411252, Use xdg-user-dirs to find pictures directory (William Jon McCann)
+        * Fixed #428199, Make fast-user-switching work with mdm configurations involving multiple X servers (William Jon McCann)
+
+
+===============
+Version 2.18.1
+===============
+
+  mate-screensaver
+
+        * Fixed #424165, power management button should reflect g-p-m status (William Jon McCann)
+        * Fixed #425550, mate-screensaver should probably require mouse grab to lock (Ray Strode)
+
+  Translators
+
+        * Updated zh_CN: Funda Wang
+        * Updated ca: Josep Puigdemont i Casamajó
+        * Updated da: Peter Bach
+        * Updated lv: Raivis Dejus
+        * Updated sl: Matic Zgur
+        * Updated eu: Inaki Larranaga Murgoitio
+        * Updated gl: Ignacio Casal Quinteiro
+
+
+===============
+Version 2.18.0
+===============
+
+  mate-screensaver
+
+        * Fixed #412486, mate-screensaver doesn't work with xnest (William Lachance)
+        * Fixed #412492, mate-screensaver won't build
+        * Fixed #417323, build from trunk fails; undefined reference to pango symbols (Elijah Newren)
+        * Fixed #417538, unapproved change broke theme management (William Jon McCann)
+
+  Translators
+
+        * Updated ru: Nickolay V. Shmyrev
+        * Updated gu: Ankit Patel
+        * Updated zh_HK.po, zh_TW: Abel Cheung
+        * Updated it: Luca Ferretti
+        * Updated mk: Jovan Naumovski  <jovan at lugola.net>
++
+        * Updated lt: Gintautas Miliauskas
+        * Updated ar: Djihed Afifi <djihed at gmail.com>
+        * Updated dz: Pema Geyleg
+        * Updated pl: Artur Flinta
+        * Updated he: Yair Hershkovitz
+
+
+
+===============
+Version 2.17.8
+===============
+
+  mate-screensaver
+
+        * Fixed #400579, mate-screensaver fails to compile against openpam (Ray Strode)
+        * Fixed #407524, Freeze on unlock screen (William Jon McCann)
+        * Fixed #407964, direct fast user switching (William Jon McCann)
+        * Fixed #411393, 'switch user' button needs to turn inactive on selection (William Jon McCann)
+        * Set ConsoleKit idle-hint state
+
+  Translators
+
+        * Updated bg: Alexander Shopov
+        * Updated pt: Duarte Loreto
+        * Updated ko: Changwoo Ryu
+        * Updated hu: Gabor Kelemen
+        * Updated lt: Gintautas Miliauskas
+        * Updated uk: Maxim Dziumanenko
+        * Updated fi: Ilkka Tuohela
+        * Updated ja: Takeshi AIHANA
+        * Updated pl: Artur Flinta
+
+
+
+===============
+Version 2.17.7
+===============
+
+  mate-screensaver
+
+        * #402183, use mdm socket command to start a login procedure when available (Matthias Clasen)
+        * #403936, Specifically block shaping the window (William Jon McCann)
+        * Sync FUSA code with upstream
+
+  Translators
+
+        * Updated fr: Stéphane Raimbault
+        * Updated nl: Wouter Bolsterlee
+        * Updated ca: Josep Puigdemont i Casamajó
+        * Updated pt_BR: Leonardo Ferreira Fontenelle
+        * Updated da: Lasse Bang Mikkelsen
+
+
+===============
+Version 2.17.6
+===============
+
+  mate-screensaver
+
+        * Categorize preferences for the control center (Denis Washington)
+
+  Translators
+
+        * Updated nb: Kjartan Maraas
+        * Updated ca: Josep Puigdemont i Casamajó
+
+===============
+Version 2.17.5
+===============
+
+  mate-screensaver
+
+        * Fix some PAM threading issues
+        * Fixed #387572, auth hangs when password is expired
+        * Fixed #392780, Pass DBUS_SESSION_BUS_ADDRESS into hack environment
+
+  Translators
+
+        * Updated lv: Raivis Dejus
+        * Updated et: Priit Laes
+        * Updated ar: Djihed Afifi <djihed at gmail.com>
+        * Updated en_GB: British
+        * Updated vi: Clytie Siddall
+
+
+===============
+Version 2.17.4
+===============
+
+  mate-screensaver
+
+        * Fix non-ramp gamma fading
+        * Add script to help debugging
+        * Be sure to initialize threading
+
+  Themes
+
+        * (slideshow) Check for empty file list
+
+  Translators
+
+        * Khaled Hosny (ar)
+        * Francisco Javier F. Serrador (es)
+        * Kjartan Maraas (nb)
+        * Theppitak Karoonboonyanan (th)
+
+===============
+Version 2.17.3
+===============
+
+  mate-screensaver
+
+        * Convert PAM messages to UTF-8 (Ray Strode)
+        * Make PAM authentication async (Ray Strode)
+
+  Translators
+
+        * Ivar Smolin (et)
+        * Daniel Nylander (sv)
+
+===============
+Version 2.17.2
+===============
+
+  mate-screensaver
+
+        * Remove the pointer polling
+        * Add a keyboard layout indicator (Sergey Udaltsov)
+        * Only notice mouse motion of 10% of screen width (Thomas Andersen)
+        * Add SessionPowerManagementIdleChanged D-Bus signal
+        * Add GetInhibitors D-Bus method
+
+  mate-screensaver-preferences
+
+        * Add a button to launch the power management preferences
+
+  mate-screensaver-command
+
+        * Add option to how long screensaver was active (Patrick McLean)
+
+  Translators
+
+        * Francisco Javier F. Serrador (es)
+        * Ivar Smolin (et)
+        * Ilkka Tuohela (fi)
+        * Ankit Patel (gu)
+        * Jovan Naumovski (mk)
+        * Kjartan Maraas (nb)
+
+===============
+Version 2.17.1
+===============
+
+  mate-screensaver
+
+        * Don't poll in dialog
+
+  mate-screensaver-preferences
+
+        * Don't show expander column
+
+  Translators
+
+        * Gil Forcada (ca)
+        * Jakub Friedl (cs)
+        * Ivar Smolin (et)
+        * Ignacio Casal Quinteiro (gl)
+
+===============
+Version 2.16.1
+===============
+
+  mate-screensaver
+
+        * Set the correct value of DISPLAY for the gl helper
+        * Don't queue keys that may cause focus navigation (Bruno Boaventura)
+
+  mate-screensaver-preferences
+
+        * Don't explicitly set icon sizes in preview bar (Dimitur Kirov)
+
+  Translators
+
+        * David Lodge (en_GB)
+        * Ivar Smolin (et)
+        * Rajesh Ranjan (hi)
+        * Luca Ferretti (it)
+        * Satoru SATOH (ja)
+        * Leonardo Ferreira Fontenelle (pt_BR)
+
+===============
+Version 2.16.0
+===============
+
+  Translators
+
+        * Kostas Papadimas (el)
+        * Iñaki Larrañaga Murgoitio (eu)
+        * Meelad Zakaria (fa)
+        * Robert-André Mauchin (fr)
+        * Rajesh Ranjan (hi)
+        * Gabor Kelemen (hu)
+        * Gintautas Miliauskas (lt)
+        * Raivis Dejus (lv)
+        * Jovan Naumovski (mk)
+        * Subhransu Behera (or)
+        * Duarte Loreto (pt)
+        * Matic %GŽ%@gur (sl)
+        * Theppitak Karoonboonyanan (th)
+        * Deniz Koçak (tr)
+        * Ching-Hung Lin (zh_HK)
+        * Ching-Hung Lin (zh_TW)
+
+===============
+Version 2.15.7
+===============
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Gil Forcada (ca)
+        * Hendrik Richter (de)
+        * Ivar Smolin (et)
+        * Ilkka Tuohela (fi)
+        * Ankit Patel (gu)
+        * Gabor Kelemen (hu)
+        * Satoru SATOH (ja)
+        * Vladimer Sichinava (ka)
+        * Changwoo Ryu (ko)
+        * rizoye-xerzi (ku)
+        * Ani Peter (ml)
+        * Badral (mn)
+        * Wouter Bolsterlee (nl)
+        * Subhransu Behera (or)
+        * Leonid Kanter (ru)
+        * Daniel Nylander (sv)
+        * Maxim V. Dziumanenko (uk)
+        * Clytie Siddall (vi)
+
+===============
+Version 2.15.6
+===============
+
+  mate-screensaver
+
+        * Support drag-n-drop of themes to preferences dialog
+        * Add support for embedding a keyboard in window
+        * More memory usage reduction
+        * Only allow a small number of queued key events
+
+  Translators
+
+        * Francisco Javier F. Serrador (es)
+        * Ivar Smolin (et)
+        * Ilkka Tuohela (fi)
+        * Christophe Merlet (RedFox) (fr)
+        * Ankit Patel (gu)
+        * ahmad riza h nst (id)
+        * %GŽ%@ygimantas Beru%Gč%@ka (lt)
+        * Jovan Naumovski (mk)
+        * Kjartan Maraas (nb)
+        * Matic %GŽ%@gur (sl)
+        * Theppitak Karoonboonyanan (th)
+
+===============
+Version 2.15.5
+===============
+
+  mate-screensaver
+
+        * Turn off themes when screen is not visible
+        * Make the unlock dialog show on correct window under Xinerama
+        * Prevent theme flickering from watchdog timer
+        * Listen for HAL coffee key events
+        * Ignore brightness key events
+
+  mate-screensaver-preferences
+
+        * Populate themes list in an idle after startup
+
+  Translators
+
+        * Mahay Alam Khan (bn_IN)
+        * Gil Forcada (ca)
+        * Jakub Friedl (cs)
+        * Hendrik Richter (de)
+        * Kostas Papadimas (el)
+        * Francisco Javier F. Serrador (es)
+        * Priit Laes (et)
+        * Ankit Patel (gu)
+        * Rajesh Ranjan (hi)
+        * Changwoo Ryu (ko)
+        * Fano Rajaonarisoa (mg)
+        * Daniel Nylander (sv)
+        * Theppitak Karoonboonyanan (th)
+
+===============
+Version 2.15.4
+===============
+
+  mate-screensaver
+
+        * Override gtk+ theme background style
+        * Use helper command to get best GL visual
+        * Add a blocking inhibit option to the command-line tool
+        * Add short options to the command-line tool
+        * Misc memory reduction
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Mahay Alam Khan (bn_IN)
+        * Jakub Friedl (cs)
+        * Hendrik Richter (de)
+        * Francisco Javier F. Serrador (es)
+        * Ilkka Tuohela (fi)
+        * Robert-André Mauchin (fr)
+        * Ignacio Casal Quinteiro (gl)
+        * Ankit Patel (gu)
+        * Yaniv Abir (he)
+        * Rajesh Ranjan (hi)
+        * Raivis Dejus (lv)
+        * Jovan Naumovski (mk)
+        * Kjartan Maraas (nb)
+        * Shyam Krishna Bal (ne)
+        * Daniel Nylander (sv)
+        * Felix (ta)
+        * Theppitak Karoonboonyanan (th)
+
+===============
+Version 2.15.3
+===============
+
+  mate-screensaver
+
+        * Fully support PAM driving the unlock dialog
+        * Only support one auth backend configured at build time
+        * Don't try to unlock using root's password
+        * DBUS API changes based on XDG feedback
+        * Add docbook documentation (Richard Hughes)
+        * Use replacable tokens in the lock dialog theme glade file
+        * Set lock flag before activating (Rodrigo Moya)
+        * Fix support for RUNNING_UNDER_MDM environment variable
+        * Increase minimum distance the mouse must move to detect motion
+        * Add theme engine profiling support
+        * Switch user when double clicking in treeview
+        * Don't reset throttle when deactivating
+        * Try to grab keyboard before doing idle notice fade-out
+        * Make activation wait for fade to complete.
+
+  mate-screensaver-preferences
+
+        * Print a warning that locking is disabled when running as root
+
+  Themes
+
+        * (slideshow) Performance improvements (L. David Baron)
+
+  Translators
+
+        * Jakub Friedl (cs)
+        * Francisco Javier F. Serrador (es)
+        * Ankit Patel (gu)
+        * Kjartan Maraas (nb)
+        * Theppitak Karoonboonyanan (th)
+        * Clytie Siddall (vi)
+
+===============
+Version 2.15.2
+===============
+
+  mate-screensaver
+
+        * Sync with FUSA code (fixes MDM configuration)
+        * Make cancel close the unlock dialog
+        * Make button presses and scroll events request an unlock
+        * Send DBUS signals before/after authentication is requested
+        * Various fixes for async fade out
+        * Fix potential crasher when poked while fading
+        * Support short username in themed dialog (Matthias Clasen)
+
+  Themes
+
+        * (popsquares) Fix crash when window is NULL (Joe Marcus Clarke)
+
+  Translators
+
+        * Francisco Javier F. Serrador (es)
+        * Ignacio Casal Quinteiro (gl)
+        * Ankit Patel (gu)
+        * Kjartan Maraas (nb)
+        * Chao-Hsiung Liao (zh_HK)
+        * Chao-Hsiung Liao (zh_TW)
+
+===============
+Version 2.15.1
+===============
+
+  mate-screensaver
+
+        * Add support for theming the lock dialog
+        * Use OpenGL to get the best visual and use it
+        * Shorten mouse poll interval
+        * New DBUS API for throttle and inhibit
+        * Support themes in all XDG dirs (including $HOME)
+        * Make caps-lock warning more accurate
+
+  mate-screensaver-preferences
+
+        * Add fullscreen preview
+        * Update wording
+
+  Translators
+
+        * Priit Laes (et)
+        * Ilkka Tuohela (fi)
+        * Ignacio Casal Quinteiro (gl)
+        * Ankit Patel (gu)
+        * Clytie Siddall (vi)
+
+===============
+Version 2.14.1
+===============
+
+  mate-screensaver
+
+        * Detect button press activity (Ray Strode)
+        * Make operation after system suspend (Ray Strode)
+        * Cygwin build fix
+        * Use GTimer for portability
+        * Obtain new Kerberos credentials when unlocking screen
+
+  Themes
+
+        * (floaters) Use the entire screen at start
+
+  Translators
+
+        * Lukas Novotny (cs)
+        * Ivar Smolin (et)
+        * Benoît Dejean (fr)
+        * Wouter Bolsterlee (nl)
+        * Andrzej PolatyÅski (pl)
+        * Theppitak Karoonboonyanan (th)
+        * Clytie Siddall (vi)
+
+===============
+Version 2.14.0
+===============
+
+  mate-screensaver
+
+        * Removed unused MateConf keys from schemas
+        * Don't queue keypad enter keypresses
+        * Use black circle as invisible character in password entry
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Mahay Alam Khan (bn)
+        * Gil Forcada (ca)
+        * Petr Tomeš (cs)
+        * Rhys Jones (cy)
+        * David Nielsen (da)
+        * Frank Arnold (de)
+        * Ivar Smolin (et)
+        * Rajesh Ranjan (hi)
+        * Luca Ferretti (it)
+        * Young-Ho Cha (ko)
+        * Kjartan Maraas (nb)
+        * Kjartan Maraas (no)
+        * Raphael Higino (pt_BR)
+        * Duarte Loreto (pt)
+        * Laurent Dhima (sq)
+        * Daniel Nylander (sv)
+        * Maxim V. Dziumanenko (uk)
+
+===============
+Version 2.13.92
+===============
+
+  mate-screensaver
+
+        * Fix problems when some other program has keyboard grabbed
+        * Add a pkg-config file for out of tree themes
+        * Use a black bullet character instead of * for password entry
+        * Capitalize DBUS method names that weren't already
+
+  mate-screensaver-preferences
+
+        * Track mateconf key changes for themes
+
+  Translators
+
+        * Kostas Papadimas (el)
+        * Francisco Javier F. Serrador (es)
+        * Ilkka Tuohela (fi)
+        * Ignacio Casal Quinteiro (gl)
+        * Ankit Patel (gu)
+        * Gabor Kelemen (hu)
+        * Luca Ferretti (it)
+        * Satoru SATOH (ja)
+        * Vladimer SIchinava (ka)
+        * Hyun-Jin Moon (ko)
+        * Žygimantas BeruÄka (lt)
+        * Kjartan Maraas (nb)
+        * Tino Meinen (nl)
+        * Kjartan Maraas (no)
+        * Raphael Higino (pt_BR)
+        * Leonid Kanter (ru)
+        * Theppitak Karoonboonyanan (th)
+        * Clytie Siddall (vi)
+
+===============
+Version 2.13.91
+===============
+
+  mate-screensaver
+
+        * Maintain a pointer grab unless the unlock dialog is up
+        * Convert the real and user names to UTF8
+        * Use G_GUINT32_FORMAT for communicating XID
+        * Start themes after grabbing window
+        * Handle broken grabs
+        * Don't abort when fade isn't available
+        * Display host name in unlock dialog
+
+  mate-screensaver-preferences
+
+        * Add help
+        * Don't make heading bold or indent under it
+
+  Themes
+
+        * (floaters) More performance work (Ray Strode)
+
+  Translators
+
+        * Gil Forcada (ca)
+        * Lukas Novotny (cs)
+        * Žygimantas BeruÄka (lt)
+        * Ãivind Hoel (nb)
+
+===============
+Version 2.13.90
+===============
+
+  mate-screensaver
+
+        * Ignore our windows when watching for map and configure events
+        * Clear window after showing to prevent flashing
+        * Don't start child processes in home directory
+
+  themes
+
+        * (floaters) Cap update rate (Ray Strode)
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Hendrik Brandt (de)
+        * Ilkka Tuohela (fi)
+        * Ignacio Casal Quinteiro (gl)
+        * Ankit Patel (gu)
+        * Tino Meinen (nl)
+        * Theppitak Karoonboonyanan (th)
+        * Chao-Hsiung Liao (zh_HK)
+        * Chao-Hsiung Liao (zh_TW)
+
+==============
+Version 2.13.5
+==============
+
+  mate-screensaver
+
+        * Move DPMS functionality to mate-power-manager
+        * Rename the DBUS interface from screensaver to ScreenSaver
+        * Disable the X.org grab smasher
+        * Don't do the slow fade if we are inhibited
+        * Fix screen flashing after idle activation
+
+  mate-screensaver-preferences
+
+        * Rework dialog for setting session idle timeout
+        * Remove unused help button
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Adam Weinberger (en_CA)
+        * Francisco Javier F. Serrador (es)
+        * Ilkka Tuohela (fi)
+        * Ignacio Casal Quinteiro (gl)
+        * Takeshi AIHANA (ja)
+        * Tino Meinen (nl)
+        * Clytie Siddall (vi)
+        * Abel Cheung (zh_HK)
+        * Abel Cheung (zh_TW)
+
+==============
+Version 0.0.24
+==============
+
+  mate-screensaver
+
+        * Add proper session idle reporting
+        * Clear all children of toplevel windows
+
+  Translators
+
+        * Josep Puigdemont i Casamajó (ca)
+        * Adam Weinberger (en_CA)
+        * Francisco Javier F. Serrador (es)
+        * Ilkka Tuohela (fi)
+        * Ankit Patel (gu)
+        * Žygimantas BeruÄka (lt)
+        * Tino Meinen (nl)
+        * Слободан Ð. СÑедоÑÐµÐ²Ð¸Ñ (sr)
+        * Theppitak Karoonboonyanan (th)
+        * Clytie Siddall (vi)
+
+==============
+Version 0.0.23
+==============
+
+  mate-screensaver
+
+        * Fix idle warning cancellation
+        * Changes to D-Bus API
+        * Add --debug command line option
+        * Build fix when DPMS disabled
+
+  themes
+
+        * (floaters) New theme engine (Ray Strode et al)
+
+  Translators
+
+        * Francisco Javier F. Serrador (es)
+        * Ignacio Casal Quinteiro (gl)
+        * Ankit Patel (gu)
+        * Takeshi AIHANA (ja)
+        * Theppitak Karoonboonyanan (th)
+
+==============
+Version 0.0.22
+==============
+
+  mate-screensaver
+
+        * Don't mess up event mask for root window.
+
+  Translators
+
+        * Miloslav Trmac (cs)
+        * Gabor Kelemen (hu)
+        * Kjartan Maraas (nb)
+        * Kjartan Maraas (no)
+
+==============
+Version 0.0.21
+==============
+
+  mate-screensaver
+
+        * Try to prevent popups over screensaver window
+        * Use an interruptable slow fade before idle activation
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Ilkka Tuohela (fi)
+        * Åygimantas BeruÄka (lt)
+        * Amanpreet Singh Alam (pa)
+        * Marcel Telka (sk)
+        * Theppitak Karoonboonyanan (th)
+
+==============
+Version 0.0.20
+==============
+
+  mate-screensaver
+
+        * Fix blanking when running under Xnest
+
+==============
+Version 0.0.19
+==============
+
+  mate-screensaver
+
+        * Allow trying password after auth failure
+        * Allow more space for user list
+        * Make unlock dialog centered vertically
+        * Use OverrideRedirect windows
+        * Sync with latest FUSA version
+        * Add test for window/dialog subsystem
+        * Fix leaking of signal handlers
+        * Misc correctness fixes
+
+  Translators
+
+        * Adam Weinberger (en_CA)
+        * Francisco Javier F. Serrador (es)
+        * Davy Defaud (fr)
+        * Takeshi AIHANA (ja)
+        * Åygimantas Beruka (lt)
+
+==============
+Version 0.0.18
+==============
+
+  mate-screensaver
+
+        * UI tweaks for unlock dialog
+        * Fix Intel compiler warnings (Kjartan Maraas)
+        * Do more error checking of MateConf input
+        * Check for command parsing errors
+        * Fix leaks
+        * Redesign the idle watcher and fix leaks
+        * Solaris build fixes (Damien Carbery)
+
+  mate-screensaver-preferences
+
+        * Make lock toggle work again
+
+  Translators
+
+        * Miloslav Trmac (cs)
+        * Adam Weinberger (en_CA)
+        * Francisco Javier F. Serrador (es)
+        * Davy Defaud (fr)
+        * Gabor Kelemen (hu)
+        * Takeshi AIHANA (ja)
+        * Tino Meinen (nl)
+
+==============
+Version 0.0.17
+==============
+
+  mate-screensaver
+
+        * Restart idle watch if can't grab keyboard
+        * Make timeout in preferences work again
+        * Daemonize process by default
+        * Add option --no-daemon
+        * Don't use any icon if face image is not found
+
+  Translators
+
+        * Adam Weinberger (en_CA)
+        * Kjartan Maraas (nb)
+        * Kjartan Maraas (no)
+
+==============
+Version 0.0.16
+==============
+
+  mate-screensaver
+
+        * Shake the dialog when authentication fails
+        * Maintain nicer aspect ratio on unlock dialog
+        * Only notice motion of 10 pixels or more
+        * Periodically raise windows
+        * Don't emit duplicate response signals from dialog
+        * Make dialog buttons insensitive when input isn't allowed
+        * Add a mateconf setting for the logout command
+
+  themes
+
+        * (slideshow) Skip thumbnail images
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Adam Weinberger (en_CA)
+        * Francisco Javier F. Serrador (es)
+        * Takeshi AIHANA (ja)
+        * Tino Meinen (nl)
+        * Funda Wang (zh_CN)
+
+==============
+Version 0.0.15
+==============
+
+  mate-screensaver
+
+        * First version with working power management
+        * Add Gamma fade out
+        * Don't forward first enter or space to unlock dialog
+        * Make poke command work when screen is blanked
+        * Add getIdleTime dbus method
+        * Translation fixes
+
+  themes
+
+        * (slideshow) Optionally use EXIF info to rotate images
+                (torkel at acc.umu.se)
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Miloslav Trmac (cs)
+        * Adam Weinberger (en_CA)
+        * Žygimantas BeruÄka (lt)
+        * Kjartan Maraas (nb)
+        * Tino Meinen (nl)
+        * Kjartan Maraas (no)
+
+==============
+Version 0.0.14
+==============
+
+  mate-screensaver
+
+        * Don't drop keypresses before unlock dialog appears
+        * Use .desktop files and menu spec to find themes
+        * Simplify unlock dialog
+        * Make user switching a mateconf option (Matthias Clasen)
+        * Make user switching disabled by default
+        * Fix a crash due to a missing error handler
+
+  mate-screensaver-preferences
+
+        * Use new themes API that will theme list to be
+          modified by distro/sysadmin/user.
+
+  Translators
+
+        * Ilkka Tuohela (fi)
+        * Luca Ferretti (it)
+        * Takeshi AIHANA (ja)
+        * Tino Meinen (nl)
+        * Clytie Siddall (vi)
+
+==============
+Version 0.0.13
+==============
+
+  mate-screensaver
+
+        * Fix problem when starting MATE from KDM
+        * Only look for theme files that end in .xml
+        * Look for xscreensaver themes in a few more places
+
+==============
+Version 0.0.12
+==============
+
+  mate-screensaver
+
+        * Fix crasher caused by destroying NULL hash table
+        * Don't activate after last inhibitor is removed
+
+  Translators
+
+        * Adam Weinberger (en_CA)
+
+==============
+Version 0.0.11
+==============
+
+  mate-screensaver
+
+        * Make unlock dialog show more quickly
+        * Support the mateconf cycle timeout key
+        * Add system name to unlock dialog
+
+  mate-screensaver-preferences
+
+        * Add random theme (Rodrigo)
+
+  Translators
+
+        * Francisco Javier F. Serrador (es)
+        * Tino Meinen (nl)
+        * Clytie Siddall (vi)
+
+==============
+Version 0.0.10
+==============
+
+  mate-screensaver
+
+        * Fix hang on system resume
+        * Actually use the mateconf lock key
+        * Add configure option to look for xscreensaver hacks (Rodrigo)
+
+  mate-screensaver-preferences
+
+        * Add checkbox to enable/disable locking (Rodrigo)
+        * Make type ahead find work correctly
+        * HIG fixes (Dennis Cranston)
+
+  Translators
+
+        * Adam Weinberger (en_CA)
+        * Eric Maeker (fr)
+        * Takeshi AIHANA (ja)
+        * Clytie Siddall (vi)
+
+=============
+Version 0.0.9
+=============
+
+  mate-screensaver
+
+        * Added slideshow theme engine
+        * Display username if real name is unknown (Rodrigo)
+
+  themes
+
+        * Added personal slideshow theme
+        * Added cosmos slideshow theme
+
+  Translators
+
+        * Rostislav \"zbrox\" Raykov (bg)
+        * Tommi Vainikainen (fi)
+        * Maxim V. Dziumanenko (uk)
+
+=============
+Version 0.0.8
+=============
+
+  mate-screensaver
+
+        * Add Dbus API for inhibiting the idle activation
+        * Integrate fast-user-switching directly into the unlock dialog.
+        * Restart unlock dialog timer after every keystroke
+        * Fix leaks
+        * Fix xauth problems for some displays
+
+  Translators
+
+        * Adam Weinberger (en_CA)
+        * Takeshi AIHANA (ja)
+        * Tino Meinen (nl)
+        * Abel Cheung (zh_TW)
+
+=============
+Version 0.0.7
+=============
+
+  mate-screensaver
+
+        * Fix authentication on SuSE/Novell
+        * Automatically find the SuSE/Novell mdm.conf file
+        * Don't require the mdm.conf file to exist at build time
+        * Actually ship the translations
+        * Fix crash in popsquares
+        * Reset throttle value after deactivation
+
+  Translators
+
+        * Hendrik Richter (de)
+        * Adam Weinberger (en_CA)
+        * Takeshi AIHANA (ja)
+        * Christian Rose (sv)
+
+=============
+Version 0.0.6
+=============
+
+  mate-screensaver
+
+        * Added Multi-head/Xinerama support
+        * Added screensaver throttle capability
+        * Depend on dbus >= 0.3
+        * Use property based dbus methods/signals
+        * Fix Solaris build
+        * Install own PAM configuration instead of relying on xscreensaver
+        * Add ability to disable 'New Login' button
+
+  mate-screensaver-preferences
+
+        * Support drag and drop of theme configuration files
+        * Display a nicer form of the activation time value
+
+  Translators
+
+        * Frank Arnold (de)
+        * Adam Weinberger (en_CA)
+        * James Ogley (en_GB)
+        * Francisco Javier F. Serrador (es)
+        * Raphael Higino (pt_BR)
+        * Christian Rose (sv)
+        * Funda Wang (zh_CN)
+
+=============
+Version 0.0.5
+=============
+
+  mate-screensaver
+
+        * Support user themes in USER_DATA_DIR/mate-screensaver/themes/
+        * Send activation/deactivation signals on session message bus
+        * Added DPMS support
+        * Added xscreensaver compatible XML configuration for themes
+        * Add optional logout button after a specified amount of time
+        * Fix leaking of file descriptors
+
+  mate-screensaver-preferences
+
+        * Added configuration applet
+        * Use screensaver icon
+
+  themes
+
+        * Added version of popsquares that follows MATE theme
diff --git a/README b/README
new file mode 100644
index 0000000..1ca70a1
--- /dev/null
+++ b/README
@@ -0,0 +1,59 @@
+mate-screensaver
+=================
+
+mate-screensaver is a screen saver and locker that aims to have
+simple, sane, secure defaults and be well integrated with the desktop.
+It is designed to support:
+
+        * the ability to lock down configuration settings
+        * translation into many languages
+        * user switching
+
+
+Known Issues
+============
+
+
+Installation
+============
+
+See the file 'INSTALL'
+
+
+How to report bugs
+==================
+
+Bugs should be reported to the MATE bug tracking
+system:
+    http://bugzilla.gnome.org/simple-bug-guide.cgi?product=mate-screensaver
+
+You will need to create an account if you don't have one already.
+
+Please read the following page on how to prepare a useful
+bug report:
+    http://bugzilla.gnome.org/bug-HOWTO.html
+
+
+In the bug report please include information about your system, if possible:
+
+   - What operating system and version
+
+   - What version of mate-screenaver
+
+        The output of the "mate-screensaver-command --version" command.
+
+
+How to submit patches
+=====================
+
+Patches should also be submitted to bugzilla.gnome.org. If the
+patch fixes an existing bug, add the patch as an attachment
+to that bug report.
+
+Otherwise, enter a new bug report that describes the patch,
+and attach the patch to that bug report.
+
+Patches should be in unified diff form. (The -u -p options to GNU
+diff.)
+
+ 
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..0e5cb77
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+PKG_NAME=mate-screensaver
+
+(test -f $srcdir/configure.ac \
+  && test -f $srcdir/autogen.sh \
+  && test -d $srcdir/src \
+  && test -f $srcdir/src/mate-screensaver.c) || {
+    echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
+    echo " top-level $PKG_NAME directory"
+    exit 1
+}
+
+which mate-autogen.sh || {
+    echo "You need to install mate-common from the MATE CVS"
+    exit 1
+}
+
+REQUIRED_AUTOMAKE_VERSION=1.9 MATE_DATADIR="$mate_datadir" . mate-autogen.sh
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..6e2e9cf
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,1129 @@
+dnl -*- mode: m4 -*-
+
+AC_PREREQ(2.60)
+AC_INIT([mate-screensaver],
+        [2.30.2],
+        [http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver])
+
+AC_CONFIG_SRCDIR(src/mate-screensaver.c)
+
+AM_INIT_AUTOMAKE([1.9 no-dist-gzip dist-bzip2])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+AM_CONFIG_HEADER(config.h)
+
+AM_MAINTAINER_MODE
+
+IT_PROG_INTLTOOL([0.35.0])
+AC_ISC_POSIX
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_STDC_HEADERS
+AC_PROG_LIBTOOL
+AC_CANONICAL_HOST
+
+AC_HEADER_STDC
+
+AC_SUBST(VERSION)
+
+# Save flags to aclocal
+ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+GETTEXT_PACKAGE=mate-screensaver
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Name of default gettext domain])
+
+AM_GLIB_GNU_GETTEXT
+
+# Dependencies
+
+DBUS_REQUIRED_VERSION=0.30
+GLIB_REQUIRED_VERSION=2.15.0
+MATECONF_REQUIRED_VERSION=2.6.1
+GDK_REQUIRED_VERSION=2.14.0
+GTK_REQUIRED_VERSION=2.11.5
+X11_REQUIRED_VERSION=1.0
+LIBMATE_MENU_REQUIRED_VERSION=2.11.1
+MATE_DESKTOP_REQUIRED_VERSION=2.29.0
+
+LIBMATEKBDUI_REQUIRED_VERSION=0.1
+
+AC_CHECK_HEADERS(unistd.h)
+AC_CHECK_HEADERS(crypt.h sys/select.h)
+AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
+AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
+AC_CHECK_FUNCS(getresuid)
+AC_TYPE_UID_T
+
+AC_CHECK_FUNCS([setresuid setenv unsetenv clearenv])
+PKG_CHECK_MODULES(MATE_SCREENSAVER,
+        x11 >= $X11_REQUIRED_VERSION
+        gtk+-2.0 >= $GTK_REQUIRED_VERSION
+        dbus-glib-1 >= $DBUS_REQUIRED_VERSION
+        mateconf-2.0 >= $MATECONF_REQUIRED_VERSION
+        mate-desktop-2.0 >= $MATE_DESKTOP_REQUIRED_VERSION
+        libmate-menu >= $LIBMATE_MENU_REQUIRED_VERSION)
+AC_SUBST(MATE_SCREENSAVER_CFLAGS)
+AC_SUBST(MATE_SCREENSAVER_LIBS)
+
+PKG_CHECK_MODULES(MATE_SCREENSAVER_DIALOG,
+        mateconf-2.0 >= $MATECONF_REQUIRED_VERSION
+        gthread-2.0
+        gtk+-2.0 >= $GTK_REQUIRED_VERSION)
+AC_SUBST(MATE_SCREENSAVER_DIALOG_CFLAGS)
+AC_SUBST(MATE_SCREENSAVER_DIALOG_LIBS)
+
+PKG_CHECK_MODULES(MATE_SCREENSAVER_CAPPLET,
+        gio-2.0 >= $GLIB_REQUIRED_VERSION
+        mateconf-2.0 >= $MATECONF_REQUIRED_VERSION
+        gtk+-2.0 >= $GTK_REQUIRED_VERSION
+        libmate-menu >= $LIBMATE_MENU_REQUIRED_VERSION)
+AC_SUBST(MATE_SCREENSAVER_CAPPLET_CFLAGS)
+AC_SUBST(MATE_SCREENSAVER_CAPPLET_LIBS)
+
+PKG_CHECK_MODULES(MATE_SCREENSAVER_COMMAND,
+        gobject-2.0 >= $GLIB_REQUIRED_VERSION
+        dbus-glib-1 >= $DBUS_REQUIRED_VERSION)
+AC_SUBST(MATE_SCREENSAVER_COMMAND_CFLAGS)
+AC_SUBST(MATE_SCREENSAVER_COMMAND_LIBS)
+
+AC_PATH_XTRA
+
+ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS"
+SAVER_LIBS="$ALL_X_LIBS"
+
+AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
+AC_PATH_PROG(MATECONFTOOL, mateconftool-2)
+
+AM_MATECONF_SOURCE_2
+
+MATE_COMPILE_WARNINGS(yes)
+
+# Solaris requires libresolv for daemon()
+case "$host" in
+	*-*-solaris*)
+		AC_CHECK_LIB(resolv, daemon, [MATE_SCREENSAVER_LIBS="$MATE_SCREENSAVER_LIBS -lresolv"])
+	;;
+esac
+
+# Optional dependencies for the theme engines
+
+SAVER_MODULES="gthread-2.0 gtk+-2.0 >= $GTK_REQUIRED_VERSION"
+
+PKG_CHECK_MODULES(MATE_SCREENSAVER_SAVER, $SAVER_MODULES)
+AC_SUBST(MATE_SCREENSAVER_SAVER_CFLAGS)
+AC_SUBST(MATE_SCREENSAVER_SAVER_LIBS)
+
+# Find out the version of DBUS we're using
+
+dbus_version=`pkg-config --modversion dbus-1`
+DBUS_VERSION_MAJOR=`echo $dbus_version | awk -F. '{print $1}'`
+DBUS_VERSION_MINOR=`echo $dbus_version | awk -F. '{print $2}'`
+DBUS_VERSION_MICRO=`echo $dbus_version | awk -F. '{print $3}'`
+if test "z$DBUS_VERSION_MAJOR" = "z"; then
+        DBUS_VERSION_MAJOR="0"
+fi
+if test "z$DBUS_VERSION_MINOR" = "z"; then
+        DBUS_VERSION_MINOR="0"
+fi
+if test "z$DBUS_VERSION_MICRO" = "z"; then
+        DBUS_VERSION_MICRO="0"
+fi
+
+if test "z$DBUS_VERSION_MAJOR" = "z0" -a "z$DBUS_VERSION_MINOR" = "z0" -a "z$DBUS_VERSION_MICRO" = "z0"; then        echo "Error: Couldn't determine the version of your DBUS package."
+        echo "  This is probably an error in this script, please report it"
+        echo "  along with the following information:"
+        echo "      Base DBUS version ='$dbus_version'"
+        echo "      DBUS_VERSION_MAJOR='$DBUS_VERSION_MAJOR'"
+        echo "      DBUS_VERSION_MINOR='$DBUS_VERSION_MINOR'"
+        echo "      DBUS_VERSION_MICRO='$DBUS_VERSION_MICRO'"
+        exit 1
+else
+
+        echo "Your dbus version is $DBUS_VERSION_MAJOR,$DBUS_VERSION_MINOR,$DBUS_VERSION_MICRO."
+        DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MAJOR=$DBUS_VERSION_MAJOR"
+        DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MINOR=$DBUS_VERSION_MINOR"
+        DBUS_CFLAGS="$DBUS_CFLAGS -DDBUS_VERSION_MICRO=$DBUS_VERSION_MICRO"
+
+        AC_SUBST(DBUS_CFLAGS)
+fi
+
+# Find out where the session service file goes
+# The sad sed hack is recomended by section 27.10 of the automake manual.
+DBUS_SESSION_SERVICE_DIR=`pkg-config --variable session_bus_services_dir dbus-1 | sed -e 's,/usr/share,${datarootdir},g'`
+AC_SUBST(DBUS_SESSION_SERVICE_DIR)
+
+# Determine PAM prefix
+
+withval=""
+AC_ARG_WITH(pam-prefix,
+[  --with-pam-prefix=<prefix>   specify where pam files go],[
+if test x$withval != x; then
+   AC_MSG_RESULT("PAM files will be installed in prefix ${withval}.")
+fi])
+if test x$withval != x; then
+	PAM_PREFIX_UNEXPANDED="$withval"
+else
+	PAM_PREFIX_UNEXPANDED="$sysconfdir"
+fi
+PAM_PREFIX=`eval echo $PAM_PREFIX_UNEXPANDED`
+AC_SUBST(PAM_PREFIX)
+
+# Desktop entry handling
+
+PKG_CHECK_MODULES(LIB_MATE_MENU,
+        gtk+-2.0 >= $GTK_REQUIRED_VERSION)
+
+AC_SUBST(LIB_MATE_MENU_CFLAGS)
+AC_SUBST(LIB_MATE_MENU_LIBS)
+
+dnl ---------------------------------------------------------------------------
+dnl - Where should we put documentation ?
+dnl ---------------------------------------------------------------------------
+AC_ARG_WITH(doc-dir,
+              [AC_HELP_STRING([--with-doc-dir=<dir>],
+              [directory to install documentation])])
+if ! test -z "$with_doc_dir"; then
+   DOCDIR="$with_doc_dir/mate-screensaver-$VERSION"
+else
+   DOCDIR="$datadir/doc/mate-screensaver-$VERSION"
+fi
+AC_SUBST(DOCDIR)
+
+dnl ---------------------------------------------------------------------------
+dnl - DocBook Documentation
+dnl ---------------------------------------------------------------------------
+AC_ARG_ENABLE(docbook-docs, [  --enable-docbook-docs   build documentation (requires xmlto)],enable_docbook_docs=$enableval,enable_docbook_docs=no)
+AC_PATH_PROG(XMLTO, xmlto, no)
+AC_MSG_CHECKING([whether to build DocBook documentation])
+if test x$XMLTO = xno ; then
+    have_docbook=no
+else
+    have_docbook=yes
+fi
+if test x$enable_docbook_docs = xauto ; then
+    if test x$have_docbook = xno ; then
+        enable_docbook_docs=no
+    else
+        enable_docbook_docs=yes
+    fi
+fi
+if test x$enable_docbook_docs = xyes; then
+    if test x$have_docbook = xno; then
+	AC_MSG_ERROR([Building DocBook docs explicitly required, but DocBook not found])
+    fi
+fi
+AM_CONDITIONAL(DOCBOOK_DOCS_ENABLED, test x$enable_docbook_docs = xyes)
+AC_MSG_RESULT(yes)
+
+dnl ---------------------------------------------------------------------------
+dnl - Some utility functions to make checking for X things easier.
+dnl ---------------------------------------------------------------------------
+
+# Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
+#
+AC_DEFUN(AC_CHECK_X_HEADER, [
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  if test \! -z "$includedir" ; then 
+    CPPFLAGS="$CPPFLAGS -I$includedir"
+  fi
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+  AC_CHECK_HEADER([$1],[$2],[$3],[$4])
+  CPPFLAGS="$ac_save_CPPFLAGS"])
+
+# Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
+#
+AC_DEFUN(AC_TRY_X_COMPILE, [
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  if test \! -z "$includedir" ; then 
+    CPPFLAGS="$CPPFLAGS -I$includedir"
+  fi
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+  AC_TRY_COMPILE([$1], [$2], [$3], [$4])
+  CPPFLAGS="$ac_save_CPPFLAGS"])
+
+
+# Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
+# Use this sparingly; it probably doesn't work very well on X programs.
+#
+AC_DEFUN(AC_CHECK_X_LIB, [
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  ac_save_LDFLAGS="$LDFLAGS"
+#  ac_save_LIBS="$LIBS"
+
+  if test \! -z "$includedir" ; then 
+    CPPFLAGS="$CPPFLAGS -I$includedir"
+  fi
+  # note: $X_CFLAGS includes $x_includes
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+
+  if test \! -z "$libdir" ; then
+    LDFLAGS="$LDFLAGS -L$libdir"
+  fi
+  # note: $X_LIBS includes $x_libraries
+  LDFLAGS="$LDFLAGS $ALL_X_LIBS"
+
+  AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
+  CPPFLAGS="$ac_save_CPPFLAGS"
+  LDFLAGS="$ac_save_LDFLAGS"
+#  LIBS="$ac_save_LIBS"
+  ])
+
+
+# Usage: HANDLE_X_PATH_ARG([variable_name],
+#                          [--command-line-option],
+#                          [descriptive string])
+#
+# All of the --with options take three forms:
+#
+#   --with-foo (or --with-foo=yes)
+#   --without-foo (or --with-foo=no)
+#   --with-foo=/DIR
+#
+# This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
+# a directory (string beginning with a slash) it checks to see whether
+# /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
+# as appropriate.
+#
+AC_DEFUN(HANDLE_X_PATH_ARG, [
+   case "$[$1]" in
+    yes) ;;
+    no)  ;;
+
+    /*)
+     AC_MSG_CHECKING([for [$3] headers])
+     d=$[$1]/include
+     if test -d $d; then
+       X_CFLAGS="-I$d $X_CFLAGS"
+       AC_MSG_RESULT($d)
+     else
+       AC_MSG_RESULT(not found ($d: no such directory))
+     fi
+
+     AC_MSG_CHECKING([for [$3] libs])
+     d=$[$1]/lib
+     if test -d $d; then
+       X_LIBS="-L$d $X_LIBS"
+       AC_MSG_RESULT($d)
+     else
+       AC_MSG_RESULT(not found ($d: no such directory))
+     fi
+
+     # replace the directory string with "yes".
+     [$1]_req="yes"
+     [$1]=$[$1]_req
+     ;;
+
+    *)
+     echo ""
+     echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
+     echo "       If it is a directory, then \`DIR/include' will be added to"
+     echo "       the -I list, and \`DIR/lib' will be added to the -L list."
+     exit 1
+     ;;
+   esac
+  ])
+
+dnl ---------------------------------------------------------------------------
+dnl - Check for shaped window extension
+dnl ---------------------------------------------------------------------------
+
+have_shape=no
+AC_CHECK_X_HEADER(X11/extensions/shape.h, [have_shape=yes],,
+                    [#include <X11/Xlib.h>])
+if test "$have_shape" = yes; then
+  AC_DEFINE(HAVE_SHAPE_EXT, 1, [Define if shape extension is available])
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl - Check for the MIT-SCREEN-SAVER server extension.
+dnl ---------------------------------------------------------------------------
+
+have_mit=no
+with_mit_req=unspecified
+AC_ARG_WITH(mit-ext,
+[  --with-mit-ext          Include support for the MIT-SCREEN-SAVER extension.],
+  [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
+
+HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
+
+if test "$with_mit" = yes; then
+  AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes],,
+                    [#include <X11/Xlib.h>])
+
+  # Now check to see if it's really in the library; XF86Free-3.3 ships
+  # scrnsaver.h, but doesn't include the code in libXext.a
+  if test "$have_mit" = yes; then
+    AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm)
+
+    if test "$have_mit" = no; then
+      # Looks like XF86Free-3.3 actually puts it in XExExt instead
+      # of in Xext.
+      AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
+                     [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
+                     [true], -lX11 -lXext -lm)
+    fi
+
+    if test "$have_mit" = no; then
+      # Looks like some versions of XFree86 (whichever version
+      # it is that comes with RedHat Linux 2.0 -- I can't find a version 
+      # number) put this in Xss instead of Xext.
+      AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
+                     [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
+                     [true], -lX11 -lXext -lm)
+    fi
+
+  if test "$have_mit" = yes; then
+    AC_DEFINE(HAVE_MIT_SAVER_EXTENSION, 1, [Define if the MIT screensaver extension is available])
+  fi
+
+  fi
+
+elif test "$with_mit" != no; then
+  echo "error: must be yes or no: --with-mit-ext=$with_mit"
+  exit 1
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl - Check for the XF86VMODE server extension (for gamma fading.)
+dnl ---------------------------------------------------------------------------
+
+have_xf86vmode=no
+have_xf86gamma=no
+have_xf86gamma_ramp=no
+with_xf86gamma_req=unspecified
+AC_ARG_WITH(xf86gamma-ext,
+[  --with-xf86gamma-ext    Include support for XFree86 gamma fading.],
+  [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
+  [with_xf86gamma=yes])
+
+HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
+
+if test "$with_xf86gamma" = yes; then
+
+  # first check for xf86vmode.h, if we haven't already
+  if test "$have_xf86vmode" = yes; then
+    have_xf86gamma=yes
+  else
+    AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],,
+                      [#include <X11/Xlib.h>])
+  fi
+
+  # if that succeeded, then check for the -lXxf86vm
+  if test "$have_xf86gamma" = yes; then
+    have_xf86gamma=no
+    AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
+                  [have_xf86gamma=yes],
+                   [true], -lXext -lX11)
+  fi
+
+  # check for the Ramp versions of the functions too.
+  if test "$have_xf86gamma" = yes; then
+    have_xf86gamma_ramp=no
+    AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
+                  [have_xf86gamma_ramp=yes],
+                   [true], -lXext -lX11)
+  fi
+
+  # if those tests succeeded, then we've really got the functions.
+  if test "$have_xf86gamma" = yes; then
+    AC_DEFINE(HAVE_XF86VMODE_GAMMA, 1, [Define if XF86VMODE Gamma is available])
+  fi
+
+  if test "$have_xf86gamma_ramp" = yes; then
+    AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP, 1, [Define if XF86VMODE Gamma Ramp is available])
+  fi
+
+  # pull in the lib, if we haven't already
+  if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
+    SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
+  fi
+
+elif test "$with_xf86gamma" != no; then
+  echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
+  exit 1
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl - Check for XF86MiscSetGrabKeysState (but only bother if we are already
+dnl - using other XF86 stuff.)
+dnl ---------------------------------------------------------------------------
+
+
+have_xf86miscsetgrabkeysstate=no
+if test "$have_xf86gamma" = yes -o "$have_xf86vmode" = yes; then
+  AC_CHECK_X_LIB(Xxf86misc, XF86MiscSetGrabKeysState,
+                [have_xf86miscsetgrabkeysstate=yes],
+                [true], -lXext -lX11)
+  if test "$have_xf86miscsetgrabkeysstate" = yes ; then
+    SAVER_LIBS="$SAVER_LIBS -lXxf86misc"
+    AC_DEFINE(HAVE_XF86MISCSETGRABKEYSSTATE, , [Define this if you have the XF86MiscSetGrabKeysState function])
+  fi
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl - The --enable-locking option
+dnl ---------------------------------------------------------------------------
+
+AC_ARG_ENABLE(locking,[
+Screen locking options:
+
+  --enable-locking        Compile in support for locking the display.
+  --disable-locking       Do not allow locking at all.],
+  [enable_locking="$enableval"],[enable_locking=yes])
+if test "$enable_locking" = yes; then
+  true
+elif test "$enable_locking" = no; then
+  AC_DEFINE(NO_LOCKING, 1, [Define if screen locking support is disabled])
+else
+  echo "error: must be yes or no: --enable-locking=$enable_locking"
+  exit 1
+fi
+
+# We can't lock on MacOS X, so don't compile in support for it.
+#
+if test "$ac_macosx" = yes; then
+  if test "$enable_locking" = yes; then
+    AC_MSG_RESULT(locking disabled: it doesn't work on MacOS X)
+    enable_locking=no
+    AC_DEFINE(NO_LOCKING, 1, [Define if screen locking support is disabled])
+  fi
+fi
+
+# Check whether to use a xscreensaver hacks configuration directory
+AC_MSG_CHECKING([whether to use xscreensaver hacks configuration])
+AC_ARG_WITH(xscreensaverdir, AC_HELP_STRING([--with-xscreensaverdir=dir], [Use xscreensaver hack configs found in directory],))
+xscreensaverdir=
+if test "x$with_xscreensaverdir" = "xyes"; then
+  if test -d /usr/share/xscreensaver/config; then
+    xscreensaverdir=/usr/share/xscreensaver/config
+  elif test -d /etc/xscreensaver; then
+    xscreensaverdir=/etc/xscreensaver
+  fi
+elif test "x$with_xscreensaverdir" = "x" -o "x$with_xscreensaverdir" = "xno"; then
+  xscreensaverdir=
+else
+  xscreensaverdir="$with_xscreensaverdir"
+fi
+
+if test "x$xscreensaverdir" != "x" ; then
+  AC_DEFINE_UNQUOTED(XSCREENSAVER_CONFIG_DIR, "$xscreensaverdir", [Define to the directory containing XScreensaver configuration files])
+  AC_MSG_RESULT([$xscreensaverdir])
+else
+  AC_MSG_RESULT([no])
+fi
+
+# Path to xscreensaver hack executables
+AC_ARG_WITH(xscreensaverhackdir, AC_HELP_STRING([--with-xscreensaverhackdir=dir], [Look for xscreensaver hack executables in directory],))
+AC_MSG_CHECKING([for location of xscreensaver hack executables])
+xscreensaverhackdir=
+if test "x$with_xscreensaverhackdir" = "xyes" -o "x$with_xscreensaverhackdir" = "x"; then
+  if test -d /usr/X11R6/lib/xscreensaver; then
+    xscreensaverhackdir=/usr/X11R6/lib/xscreensaver
+  elif test -d $prefix/libexec/xscreensaver; then
+    xscreensaverhackdir=$prefix/libexec/xscreensaver
+  elif test -d /usr/libexec/xscreensaver; then
+    xscreensaverhackdir=/usr/libexec/xscreensaver
+  elif test -d /usr/lib/xscreensaver; then
+    xscreensaverhackdir=/usr/lib/xscreensaver
+  elif test -d /usr/lib64/xscreensaver; then
+    xscreensaverhackdir=/usr/lib64/xscreensaver
+  fi
+elif test "x$with_xscreensaverhackdir" != "xno"; then
+  xscreensaverhackdir="$with_xscreensaverhackdir"
+fi
+
+if test "x$xscreensaverhackdir" != "x" ; then
+  AC_DEFINE_UNQUOTED(XSCREENSAVER_HACK_DIR, "$xscreensaverhackdir", [Define to the directory containing XScreensaver hack executables])
+  AC_MSG_RESULT([$xscreensaverhackdir])
+else
+  AC_MSG_RESULT([no])
+  AC_MSG_WARN([could not find directory containing xscreensaver hacks])
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl - Check for GL
+dnl ---------------------------------------------------------------------------
+
+AC_ARG_WITH(gl, [  --with-libgl	  build with GL support])
+have_libgl=no
+GL_LIBS=""
+
+if test x$with_libgl != xno; then
+  AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
+  if test "$have_gl" = yes ; then
+    AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no,
+                      [#include <GL/gl.h>])
+  fi
+
+  if test "$have_gl" = yes ; then
+    AC_CHECK_X_LIB(GL, glXChooseVisual, have_libgl=yes, have_libgl=no, -lm)
+  fi
+fi
+
+if test "x$have_libgl" = "xyes"; then
+    AC_DEFINE(HAVE_LIBGL, 1, [Define if libgl is available])
+    GL_LIBS="-lGL $GL_LIBS"
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl - Check for PAM
+dnl ---------------------------------------------------------------------------
+
+have_pam=no
+AC_ARG_ENABLE(pam, AC_HELP_STRING([--enable-pam],
+                   [Enable PAM support @<:@default=auto@:>@],
+                   ),,enable_pam=auto)
+
+if test "x$enable_locking" = "xyes" -a  "x$enable_pam" != "xno"; then
+AC_CHECK_LIB(pam, pam_start, have_pam=yes)
+fi
+if test "x$have_pam" = "xyes"; then
+
+    AUTH_LIBS="${AUTH_LIBS} -lpam"
+    AC_DEFINE(HAVE_PAM, 1, [Define if PAM support is included])
+
+    # On Linux, sigtimedwait() is in libc; on Solaris, it's in librt.
+    have_timedwait=no
+    AC_CHECK_LIB(c, sigtimedwait, [have_timedwait=yes])
+    if test "$have_timedwait" = no ; then
+      AC_CHECK_LIB(rt, sigtimedwait, [AUTH_LIBS="${AUTH_LIBS} -lrt"])
+    fi
+
+    AC_MSG_CHECKING(how to call pam_strerror)
+    AC_CACHE_VAL(ac_cv_pam_strerror_args,
+     [AC_TRY_COMPILE([#include <stdio.h>
+                      #include <stdlib.h>
+                      #include <security/pam_appl.h>],
+                     [pam_handle_t *pamh = 0;
+                      char *s = pam_strerror(pamh, PAM_SUCCESS);],
+                     [ac_pam_strerror_args=2],
+                     [AC_TRY_COMPILE([#include <stdio.h>
+                                      #include <stdlib.h>
+                                      #include <security/pam_appl.h>],
+                                     [char *s =
+                                       pam_strerror(PAM_SUCCESS);],
+                                     [ac_pam_strerror_args=1],
+                                     [ac_pam_strerror_args=0])])
+      ac_cv_pam_strerror_args=$ac_pam_strerror_args])
+    ac_pam_strerror_args=$ac_cv_pam_strerror_args
+    if test "$ac_pam_strerror_args" = 1 ; then
+      AC_MSG_RESULT(one argument)
+    elif test "$ac_pam_strerror_args" = 2 ; then
+      AC_DEFINE(PAM_STRERROR_TWO_ARGS, 1, [Define if pam_strerror takes two arguments])
+      AC_MSG_RESULT(two arguments)
+    else
+      AC_MSG_RESULT(unknown)
+    fi
+
+fi
+AM_CONDITIONAL(HAVE_PAM, test x$have_pam = xyes)
+AC_SUBST(HAVE_PAM)
+
+
+#       Check for the nine billion variants of shadow passwords...
+
+need_setuid=no
+
+have_shadow=no
+have_shadow_enhanced=no
+have_shadow_adjunct=no
+have_shadow_hpux=no
+have_passwd_helper=no
+
+with_shadow_req=unspecified
+
+AC_ARG_WITH(shadow,
+[  --with-shadow           Include support for shadow password authentication.],
+  [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
+
+HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
+
+if test "$enable_locking" = no ; then
+  with_shadow_req=no
+  with_shadow=no
+fi
+
+
+#       Check for Sun "adjunct" passwords.
+
+if test "$with_shadow" = yes ; then
+  AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
+                 [AC_TRY_X_COMPILE([#include <stdlib.h>
+                                    #include <unistd.h>
+                                    #include <sys/types.h>
+                                    #include <sys/label.h>
+                                    #include <sys/audit.h>
+                                    #include <pwdadj.h>],
+                      [struct passwd_adjunct *p = getpwanam("nobody");
+                       const char *pw = p->pwa_passwd;],
+                      [ac_cv_sun_adjunct=yes],
+                      [ac_cv_sun_adjunct=no])])
+  if test "$ac_cv_sun_adjunct" = yes; then
+    have_shadow_adjunct=yes
+    have_shadow=yes
+    need_setuid=yes
+  fi
+fi
+
+
+#       Check for DEC and SCO so-called "enhanced" security.
+
+if test "$with_shadow" = yes ; then
+  AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
+                 [AC_TRY_X_COMPILE([#include <stdlib.h>
+                                    #include <unistd.h>
+                                    #include <sys/types.h>
+                                    #include <pwd.h>
+                                    #include <sys/security.h>
+                                    #include <prot.h>],
+                      [struct pr_passwd *p;
+                       const char *pw;
+                       set_auth_parameters(0, 0);
+                       check_auth_parameters();
+                       p = getprpwnam("nobody");
+                       pw = p->ufld.fd_encrypt;],
+                      [ac_cv_enhanced_passwd=yes],
+                      [ac_cv_enhanced_passwd=no])])
+  if test $ac_cv_enhanced_passwd = yes; then
+    have_shadow_enhanced=yes
+    have_shadow=yes
+    need_setuid=yes
+
+    # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
+    # (I'm told it needs -lcurses too, but I don't understand why.)
+    # But on DEC, it's in -lsecurity.
+    #
+    AC_CHECK_LIB(prot, getprpwnam,
+                 [AUTH_LIBS="$AUTH_LIBS -lprot -lcurses -lx"],
+                 [AC_CHECK_LIB(security, getprpwnam,
+                               [AUTH_LIBS="$AUTH_LIBS -lsecurity"])],
+                 [-lx])
+  fi
+fi
+
+#       Check for HP's entry in the "Not Invented Here" Sweepstakes.
+
+if test "$with_shadow" = yes ; then
+  AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
+                 [AC_TRY_X_COMPILE([#include <stdlib.h>
+                                    #include <unistd.h>
+                                    #include <sys/types.h>
+                                    #include <pwd.h>
+                                    #include <hpsecurity.h>
+                                    #include <prot.h>],
+                      [struct s_passwd *p = getspwnam("nobody");
+                       const char *pw = p->pw_passwd;],
+                      [ac_cv_hpux_passwd=yes],
+                      [ac_cv_hpux_passwd=no])])
+  if test "$ac_cv_hpux_passwd" = yes; then
+    have_shadow_hpux=yes
+    have_shadow=yes
+    need_setuid=yes
+
+    # on HPUX, bigcrypt is in -lsec
+    AC_CHECK_LIB(sec, bigcrypt, [AUTH_LIBS="$AUTH_LIBS -lsec"])
+  fi
+fi
+
+
+#       Check for FreeBSD-style shadow passwords.
+#
+#       On FreeBSD, getpwnam() and friends work just like on non-shadow-
+#       password systems -- except you only get stuff in the pw_passwd field
+#       if the running program is setuid.  So, guess that we've got this
+#       lossage to contend with if /etc/master.passwd exists, and default to
+#       a setuid installation.
+
+if test "$with_shadow" = yes ; then
+  AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
+                 [if test -f /etc/master.passwd ; then
+                    ac_cv_master_passwd=yes
+                  else
+                    ac_cv_master_passwd=no
+                  fi])
+  if test "$ac_cv_master_passwd" = yes; then
+    need_setuid=yes
+  fi
+fi
+
+
+#       Check for "traditional" shadow passwords.
+
+if test "$with_shadow" = yes ; then
+  AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
+                 [AC_TRY_X_COMPILE([#include <stdlib.h>
+                                    #include <unistd.h>
+                                    #include <sys/types.h>
+                                    #include <pwd.h>
+                                    #include <shadow.h>],
+                      [struct spwd *p = getspnam("nobody");
+                       const char *pw = p->sp_pwdp;],
+                      [ac_cv_shadow=yes],
+                      [ac_cv_shadow=no])])
+  if test "$ac_cv_shadow" = yes; then
+    have_shadow=yes
+    need_setuid=yes
+
+    # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
+    have_getspnam=no
+    AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
+    if test "$have_getspnam" = no ; then
+      AC_CHECK_LIB(gen, getspnam,
+                   [have_getspnam=yes; AUTH_LIBS="$AUTH_LIBS -lgen"])
+    fi
+  fi
+fi
+
+
+#       Check for other libraries needed for non-shadow passwords.
+
+if test "$enable_locking" = yes ; then
+
+  # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
+  have_crypt=no
+  AC_CHECK_LIB(c, crypt, [have_crypt=yes])
+  if test "$have_crypt" = no ; then
+    AC_CHECK_LIB(crypt, crypt,
+                 [have_crypt=yes; AUTH_LIBS="${AUTH_LIBS} -lcrypt"])
+  fi
+fi
+
+# Most of the above shadow mechanisms will have set need_setuid to yes,
+# if they were found.  But, on some systems, we need setuid even when
+# using plain old vanilla passwords.
+#
+if test "$enable_locking" = yes ; then
+  case "$host" in
+    *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
+      need_setuid=yes
+    ;;
+  esac
+fi
+
+if test "$have_shadow_adjunct" = yes ; then
+  AC_DEFINE(HAVE_ADJUNCT_PASSWD, 1, [Define if system uses adjunct shadow passwords])
+elif test "$have_shadow_enhanced" = yes ; then
+  AC_DEFINE(HAVE_ENHANCED_PASSWD, 1, [Define if system uses enhanced shadow passwords])
+elif test "$have_shadow_hpux" = yes ; then
+  AC_DEFINE(HAVE_HPUX_PASSWD, 1, [Define if system uses HPUX shadow passwords])
+elif test "$have_shadow" = yes ; then
+  AC_DEFINE(HAVE_SHADOW_PASSWD, 1, [Define if system uses traditional shadow passwords])
+fi
+
+#       Check for external password helper
+#       On SuSE, instead of having xscreensaver be a setuid program, they
+#       fork an external program that takes the password on stdin, and
+#       returns true if that password is a valid one.  Then only that
+#       smaller program needs to be setuid.
+#
+#       (Note that this external program is not a GUI: the GUI is still
+#       all in xscreensaver itself; the external program just does auth.)
+
+have_passwd_helper=no
+with_passwd_helper_req=unspecified
+
+AC_ARG_WITH(passwd-helper,
+[  --with-passwd-helper    Include support for an external password
+                          verification helper program.],
+  [with_passwd_helper="$withval"; with_passwd_helper_req="$withval"],[with_passwd_helper=no])
+# no HANDLE_X_PATH_ARG for this one
+
+if test "$enable_locking" = no ; then
+  with_passwd_helper_req=no
+  with_passwd_helper=no
+fi
+
+case "$with_passwd_helper" in
+  ""|no) : ;;
+  /*)
+    AC_DEFINE_UNQUOTED(PASSWD_HELPER_PROGRAM, "$with_passwd_helper", [Full pathname of password helper application])
+    have_passwd_helper=yes;;
+  *)
+    echo "error: --with-passwd-helper needs full pathname of helper (not '$with_passwd_helper')." >&2
+    exit 1
+esac
+AM_CONDITIONAL(HAVE_PASSWD_HELPER, test x$have_passwd_helper = xyes)
+AC_SUBST(HAVE_PASSWD_HELPER)
+
+if test "$need_setuid" = yes -a "$have_pam" != yes ; then
+  NEED_SETUID=yes
+else
+  NEED_SETUID=no
+fi
+AC_SUBST(NEED_SETUID)
+
+dnl ---------------------------------------------------------------------------
+dnl  Authentication scheme
+dnl ---------------------------------------------------------------------------
+
+AC_ARG_ENABLE(authentication-scheme,
+  [  --enable-authentication-scheme=[auto/pam/helper/pwent]  Choose a specific
+                          authentication scheme [default=auto]],,
+  enable_authentication_scheme=auto)
+
+AUTH_SCHEME="auth-pam"
+
+if test x$enable_authentication_scheme = xpam -a x$have_pam = xno ; then
+	AC_MSG_ERROR(PAM support requested but not available)
+fi
+if test x$enable_authentication_scheme = xhelper -a x$have_passwd_helper = xno ; then
+	AC_MSG_ERROR(Password helper support requested but not available)
+fi
+
+if test x$enable_authentication_scheme = xpam ; then
+        AUTH_SCHEME="pam"
+elif test x$enable_authentication_scheme = xhelper ; then
+        AUTH_SCHEME="helper"
+elif test x$enable_authentication_scheme = xpwent ; then
+        AUTH_SCHEME="pwent"
+elif test x$enable_authentication_scheme = xauto ; then
+	if test x$have_pam != xno ; then
+		AUTH_SCHEME="pam"
+	elif test x$have_passwd_helper != xno ; then
+		AUTH_SCHEME="helper"
+	else
+		AUTH_SCHEME="pwent"
+        fi
+else
+	AC_MSG_ERROR(Unknown authentication scheme)
+fi
+
+AC_SUBST(AUTH_SCHEME)
+
+dnl ---------------------------------------------------------------------------
+dnl libmatekbd
+dnl ---------------------------------------------------------------------------
+
+have_libmatekbdui=no
+AC_ARG_WITH(kbd-layout-indicator,[  --without-kbd-layout-indicator         disable keyboard layout indicator],
+            [with_kbd_layout_indicator="$withval"],[with_kbd_layout_indicator=yes])
+if test x$with_kbd_layout_indicator != xno; then
+  PKG_CHECK_MODULES(LIBMATEKBDUI, libmatekbdui >= $LIBMATEKBDUI_REQUIRED_VERSION, have_libmatekbdui=yes, have_libmatekbdui=no)
+fi
+if test "x$have_libmatekbdui" = "xyes"; then
+  AC_SUBST(LIBMATEKBDUI_CFLAGS)
+  AC_SUBST(LIBMATEKBDUI_LIBS)
+  AC_DEFINE(WITH_KBD_LAYOUT_INDICATOR, 1, [Define if keyboard layout indicator should be built])
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl libmatenotify
+dnl ---------------------------------------------------------------------------
+
+have_libmatenotify=no
+AC_ARG_WITH(libmatenotify,[  --without-libmatenotify         disable libmatenotify support])
+if test x$with_libmatenotify != xno; then
+	PKG_CHECK_MODULES(LIBMATENOTIFY, libmatenotify, have_libmatenotify=yes, have_libmatenotify=no)
+fi
+if test "x$have_libmatenotify" = "xyes"; then
+  AC_SUBST(LIBMATENOTIFY_CFLAGS)
+  AC_SUBST(LIBMATENOTIFY_LIBS)
+  AC_DEFINE(WITH_LIBMATENOTIFY, 1, [Define for libmatenotify support])
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl Finish
+dnl ---------------------------------------------------------------------------
+
+AC_SUBST(AUTH_LIBS)
+AC_SUBST(SAVER_LIBS)
+AC_SUBST(GL_LIBS)
+
+
+REAL_PREFIX=
+if test "x$prefix" = "xNONE"; then
+  REAL_PREFIX=$ac_default_prefix
+else
+  REAL_PREFIX=$prefix
+fi
+
+## temporarily change prefix and exec_prefix
+old_prefix=$prefix
+prefix=$REAL_PREFIX
+
+if test "x$exec_prefix" = xNONE ; then
+   REAL_EXEC_PREFIX=$REAL_PREFIX
+else
+   REAL_EXEC_PREFIX=$exec_prefix
+fi
+old_exec_prefix=$exec_prefix
+exec_prefix=$REAL_EXEC_PREFIX
+
+## eval everything
+LOCALSTATEDIR_TMP="$localstatedir"
+EXPANDED_LOCALSTATEDIR=`eval echo $LOCALSTATEDIR_TMP`
+AC_SUBST(EXPANDED_LOCALSTATEDIR)
+
+SYSCONFDIR_TMP="$sysconfdir"
+EXPANDED_SYSCONFDIR=`eval echo $SYSCONFDIR_TMP`
+AC_SUBST(EXPANDED_SYSCONFDIR)
+
+BINDIR_TMP="$bindir"
+EXPANDED_BINDIR=`eval echo $BINDIR_TMP`
+AC_SUBST(EXPANDED_BINDIR)
+
+LIBDIR_TMP="$libdir"
+EXPANDED_LIBDIR=`eval echo $LIBDIR_TMP`
+AC_SUBST(EXPANDED_LIBDIR)
+
+DATADIR_TMP="$datadir"
+EXPANDED_DATADIR=`eval echo $DATADIR_TMP`
+AC_SUBST(EXPANDED_DATADIR)
+
+## put prefix and exec_prefix back
+prefix=$old_prefix
+exec_prefix=$old_exec_prefix
+
+# Turn on the additional warnings last, so -Werror doesn't affect other tests.
+
+AC_ARG_ENABLE(more-warnings,
+  AC_HELP_STRING([--enable-more-warnings], [Maximum compiler warnings]),
+set_more_warnings="$enableval",[
+if test -d $srcdir/.git; then
+        is_cvs_version=true
+        set_more_warnings=yes
+else
+        set_more_warnings=no
+fi
+])
+AC_MSG_CHECKING(for more warnings)
+if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
+        AC_MSG_RESULT(yes)
+        CFLAGS="\
+        -Wall \
+        -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
+        -Wnested-externs -Wpointer-arith \
+        -Wcast-align -Wsign-compare \
+        $CFLAGS"
+
+        for option in -Wno-strict-aliasing -Wno-sign-compare; do
+                SAVE_CFLAGS="$CFLAGS"
+                CFLAGS="$CFLAGS $option"
+                AC_MSG_CHECKING([whether gcc understands $option])
+                AC_TRY_COMPILE([], [],
+                        has_option=yes,
+                        has_option=no,)
+                if test $has_option = no; then
+                        CFLAGS="$SAVE_CFLAGS"
+                fi
+                AC_MSG_RESULT($has_option)
+                unset has_option
+                unset SAVE_CFLAGS
+        done
+        unset option
+else
+        AC_MSG_RESULT(no)
+fi
+
+#
+# Enable Debug
+#
+AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug=[no/yes]], [turn on debugging])],, enable_debug=yes)
+if test "$enable_debug" = "yes"; then
+  DEBUG_CFLAGS="-DG_ENABLE_DEBUG"
+else
+  if test "x$enable_debug" = "xno"; then
+    DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
+  else
+    DEBUG_CFLAGS=""
+  fi
+fi
+AC_SUBST(DEBUG_CFLAGS)
+
+# Flags
+
+AC_SUBST(CFLAGS)
+AC_SUBST(CPPFLAGS)
+AC_SUBST(LDFLAGS)
+
+# Saver engine stuff
+SLIDESHOW_COSMOS_DIR="${EXPANDED_DATADIR}/backgrounds/cosmos"
+
+AC_SUBST(SLIDESHOW_COSMOS_DIR)
+
+FLOATERS_FOOT_LOGO_IMAGE="${EXPANDED_DATADIR}/pixmaps/mate-logo-white.svg"
+AC_SUBST(FLOATERS_FOOT_LOGO_IMAGE)
+
+# Menu stuff
+
+MATE_SCREENSAVER_THEMES_DIR="${EXPANDED_DATADIR}/applications/screensavers"
+AC_SUBST(MATE_SCREENSAVER_THEMES_DIR)
+
+# Special directories
+# Used for .pc.in file
+
+privlibexecdir='${libexecdir}'/mate-screensaver
+AC_SUBST(privlibexecdir)
+
+privdatadir='${datadir}'/mate-screensaver
+AC_SUBST(privdatadir)
+
+themesdir='${datadir}'/applications/screensavers
+AC_SUBST(themesdir)
+
+
+# Files
+
+AC_OUTPUT([
+Makefile
+po/Makefile.in
+src/Makefile
+src/mate-screensaver.desktop.in
+data/Makefile
+data/mate-screensavers.menu
+data/mate-screensaver.pc
+data/org.mate.ScreenSaver.service
+data/images/Makefile
+data/images/cosmos/Makefile
+savers/Makefile
+doc/Makefile
+doc/mate-screensaver.xml
+])
+
+echo "
+                    mate-screensaver $VERSION
+                    ========================
+
+	prefix:                   ${prefix}
+	exec_prefix:              ${exec_prefix}
+        libdir:                   ${EXPANDED_LIBDIR}
+        bindir:                   ${EXPANDED_BINDIR}
+        sysconfdir:               ${EXPANDED_SYSCONFDIR}
+        localstatedir:            ${EXPANDED_LOCALSTATEDIR}
+        datadir:                  ${EXPANDED_DATADIR}
+        PAM prefix:               ${PAM_PREFIX}
+	source code location:	  ${srcdir}
+	compiler:		  ${CC}
+	cflags:		          ${CFLAGS}
+        Base libs:                ${MATE_SCREENSAVER_LIBS}
+        Extension libs:           ${SAVER_LIBS}
+        Maintainer mode:          ${USE_MAINTAINER_MODE}
+        Docs enabled:             ${enable_docbook_docs}
+
+	GL:                       ${have_libgl}
+
+        Screen locking enabled:   ${enable_locking}
+        User switching enabled:   ${enable_user_switching}
+        Show keyboard indicator:  ${with_kbd_layout_indicator}
+        Have libmatenotify support:   ${have_libmatenotify}
+        PAM support:              ${have_pam}
+        Have shadow passwords:    ${have_shadow}
+        Have adjunct shadow:      ${have_shadow_adjunct}
+        Have enhanced shadow:     ${have_shadow_enhanced}
+        Have HPUX shadow:         ${have_shadow_hpux}
+        Have password helper:     ${have_passwd_helper}
+        Authentication scheme:    ${AUTH_SCHEME}"
+
+if test "x$need_setuid" = "xyes" -a "x$have_pam" != "xyes" ; then
+echo \
+"        Need setuid dialog:       yes
+"
+else
+echo \
+"        Need setuid dialog:       no
+"
+fi
+
+
+echo ""
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..1bae8e9
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,116 @@
+SUBDIRS =			\
+	images
+
+NULL =
+
+man_MANS = 				\
+	mate-screensaver.1		\
+	mate-screensaver-command.1	\
+	mate-screensaver-preferences.1	\
+	$(NULL)
+
+ at INTLTOOL_SCHEMAS_RULE@
+
+schemasdir   = @MATECONF_SCHEMA_FILE_DIR@
+schemas_in_files = mate-screensaver.schemas.in
+schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
+
+ at INTLTOOL_DESKTOP_RULE@
+
+desktopdir = $(datadir)/applications
+desktop_in_files = mate-screensaver-preferences.desktop.in
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+
+ at INTLTOOL_DIRECTORY_RULE@
+
+directorydir = $(datadir)/desktop-directories
+directory_in_files =                            \
+	mate-screensaver.directory.in		\
+	$(NULL)
+directory_DATA = $(directory_in_files:.directory.in=.directory)
+
+menudir = $(sysconfdir)/xdg/menus
+menu_DATA =					\
+	mate-screensavers.menu			\
+	$(NULL)
+
+gtkbuilderdir = $(pkgdatadir)
+gtkbuilder_DATA = 					\
+	mate-screensaver-preferences.ui	\
+	lock-dialog-default.ui		\
+	$(NULL)
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = mate-screensaver.pc
+
+dbussessionservicedir = $(DBUS_SESSION_SERVICE_DIR)
+dbussessionservice_DATA = org.mate.ScreenSaver.service
+
+EXTRA_DIST = 				\
+	$(schemas_in_files)		\
+	$(desktop_in_files)		\
+	$(directory_in_files)		\
+	$(gtkbuilder_DATA)		\
+	$(man_MANS)			\
+	mate-screensaver		\
+	mate-screensaver.pc.in		\
+	org.mate.ScreenSaver.service.in\
+	xscreensaver-config.xsl		\
+	migrate-xscreensaver-config.sh	\
+	$(NULL)
+
+DISTCLEANFILES = 			\
+	$(schemas_DATA)			\
+	$(desktop_DATA)			\
+	$(directory_DATA)		\
+	$(NULL)
+
+MAINTAINERCLEANFILES =			\
+	*~				\
+	Makefile.in
+
+if MATECONF_SCHEMAS_INSTALL
+# don't do this if we are building in eg. rpm
+install-data-local: $(schemas_DATA)
+	if test -z "$(DESTDIR)" ; then \
+		for p in $(schemas_DATA) ; do \
+			MATECONF_CONFIG_SOURCE=$(MATECONF_SCHEMA_CONFIG_SOURCE) $(MATECONFTOOL) --makefile-install-rule $(top_builddir)/data/$$p ; \
+		done \
+	fi
+else
+install-data-local:
+endif
+
+install-data-hook:
+	@system=`uname`; \
+	if test -f /usr/include/security/pam_appl.h; then \
+	  if test '!' -d $(DESTDIR)$(PAM_PREFIX)/pam.d; then \
+		$(mkinstalldirs) $(DESTDIR)$(PAM_PREFIX)/pam.d; \
+		chmod 755 $(DESTDIR)$(PAM_PREFIX)/pam.d; \
+	   fi; \
+	   if test $$system = Linux; then \
+		if test '!' -f $(DESTDIR)$(PAM_PREFIX)/pam.d/mate-screensaver; then \
+		     $(INSTALL_DATA) mate-screensaver $(DESTDIR)$(PAM_PREFIX)/pam.d/mate-screensaver; \
+		fi; \
+		if test "x$(PAM_PREFIX)" != "x/etc/pam.d"; then \
+	             echo "***" ; \
+	             echo "***  Warning: mate-screensaver has been compiled with support for" ; \
+	             echo "***           Pluggable Authentication Modules (PAM).  However, you may need to" ; \
+	             echo "***           manually install $(PAM_PREFIX)/pam.d/mate-screensaver" ; \
+	             echo "***           to /etc/pam.d/mate-screensaver.  Otherwise, unlocking might" ; \
+	             echo "***           not work." ; \
+	             echo "***" ; \
+	             echo "***           Note: If you are using SuSE/Novell you may have to modify this file." ; \
+	             echo "***" ; \
+		fi; \
+	   fi; \
+	   if test $$system = SunOS; then \
+	        echo "***" ; \
+	        echo "***  Warning: mate-screensaver has been compiled with support for" ; \
+	        echo "***           Pluggable Authentication Modules (PAM).  However, you" ; \
+	        echo "***           need to manually add authentication for mate-screensaver in" ; \
+	        echo "***           $(PAM_PREFIX)/pam.conf or /etc/pam.conf." ; \
+	        echo "***           Otherwise, unlocking might not work." ; \
+	        echo "***" ; \
+	   fi; \
+	fi
diff --git a/data/images/Makefile.am b/data/images/Makefile.am
new file mode 100644
index 0000000..e23dc87
--- /dev/null
+++ b/data/images/Makefile.am
@@ -0,0 +1,14 @@
+NULL =
+
+SUBDIRS =			\
+	cosmos			\
+	$(NULL)
+
+imagedir   = $(datadir)/pixmaps
+image_DATA = 			\
+	mate-logo-white.svg 	\
+	$(NULL)
+
+EXTRA_DIST =			\
+	$(image_DATA)		\
+	$(NULL)
diff --git a/data/images/cosmos/CREDITS b/data/images/cosmos/CREDITS
new file mode 100644
index 0000000..6ecc9ab
--- /dev/null
+++ b/data/images/cosmos/CREDITS
@@ -0,0 +1,29 @@
+All of these images are in the public domain courtesy of NASA.
+
+blue-marble-west.jpg:
+http://visibleearth.nasa.gov/view_rec.php?id=2429
+
+cloud.jpg:
+www.spacetelescope.org/images/html/heic0601a.html
+
+comet.jpg:
+http://hubblesite.org/newscenter/newsdesk/archive/releases/2004/52/
+
+earth-horizon.jpg:
+http://spaceflight.nasa.gov/gallery/images/station/crew-7/html/iss007e16249.html
+
+galaxy-ngc3370.jpg:
+http://hubblesite.org/newscenter/newsdesk/archive/releases/2003/24/
+
+helix-nebula.jpg:
+http://hubblesite.org/newscenter/newsdesk/archive/releases/2003/11/
+
+jupiter.jpg:
+http://hubblesite.org/newscenter/newsdesk/archive/releases/1999/29/
+
+sombrereo.jpg:
+http://hubblesite.org/newscenter/newsdesk/archive/releases/2003/28/
+
+whirlpool.jpg:
+http://hubblesite.org/newscenter/newsdesk/archive/releases/2005/12/image/a
+
diff --git a/data/images/cosmos/Makefile.am b/data/images/cosmos/Makefile.am
new file mode 100644
index 0000000..6cc80d8
--- /dev/null
+++ b/data/images/cosmos/Makefile.am
@@ -0,0 +1,54 @@
+NULL =
+
+BACKGROUNDS = \
+	blue-marble-west.jpg	\
+	cloud.jpg 		\
+	comet.jpg 		\
+	earth-horizon.jpg	\
+	galaxy-ngc3370.jpg	\
+	helix-nebula.jpg	\
+	jupiter.jpg		\
+	sombrero.jpg		\
+	whirlpool.jpg		\
+	$(NULL)
+
+imagesdir   = $(SLIDESHOW_COSMOS_DIR)
+images_DATA =			\
+	$(BACKGROUNDS)		\
+	background-1.xml	\
+	$(NULL)
+
+cosmos.xml.in: cosmos.xml.in.in Makefile
+	$(edit) $< >$@
+
+background-1.xml: background-1.xml.in Makefile
+	$(edit) $< >$@
+
+metadata_in_files = cosmos.xml.in
+metadatadir = $(datadir)/mate-background-properties
+metadata_DATA = $(metadata_in_files:.xml.in=.xml)
+ at INTLTOOL_XML_RULE@
+
+edit = sed \
+	-e 's|@IMAGESDIR[@]|$(imagesdir)|g'
+
+EXTRA_DIST =			\
+	CREDITS 		\
+	$(BACKGROUNDS)		\
+	background-1.xml.in	\
+	cosmos.xml.in.in	\
+	$(NULL)
+
+CLEANFILES = \
+	cosmos.xml.in			\
+	$(NULL)
+
+DISTCLEANFILES = \
+	cosmos.xml			\
+	background-1.xml		\
+	$(NULL)
+
+MAINTAINERCLEANFILES =                  \
+	*~				\
+	Makefile.in			\
+	$(NULL)
diff --git a/data/images/cosmos/background-1.xml.in b/data/images/cosmos/background-1.xml.in
new file mode 100644
index 0000000..698b4b5
--- /dev/null
+++ b/data/images/cosmos/background-1.xml.in
@@ -0,0 +1,92 @@
+<background>
+  <starttime>
+    <year>2009</year>
+    <month>08</month>
+    <day>04</day>
+    <hour>00</hour>
+    <minute>00</minute>
+    <second>00</second>
+  </starttime>
+<!-- This animation will start at midnight. -->
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/cloud.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/cloud.jpg</from>
+    <to>@IMAGESDIR@/comet.jpg</to>
+  </transition>
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/comet.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/comet.jpg</from>
+    <to>@IMAGESDIR@/earth-horizon.jpg</to>
+  </transition>
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/earth-horizon.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/earth-horizon.jpg</from>
+    <to>@IMAGESDIR@/blue-marble-west.jpg</to>
+  </transition>
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/blue-marble-west.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/blue-marble-west.jpg</from>
+    <to>@IMAGESDIR@/galaxy-ngc3370.jpg</to>
+  </transition>
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/galaxy-ngc3370.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/galaxy-ngc3370.jpg</from>
+    <to>@IMAGESDIR@/helix-nebula.jpg</to>
+  </transition>
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/helix-nebula.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/helix-nebula.jpg</from>
+    <to>@IMAGESDIR@/jupiter.jpg</to>
+  </transition>
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/jupiter.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/jupiter.jpg</from>
+    <to>@IMAGESDIR@/sombrero.jpg</to>
+  </transition>
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/sombrero.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/sombrero.jpg</from>
+    <to>@IMAGESDIR@/whirlpool.jpg</to>
+  </transition>
+  <static>
+    <duration>1795.0</duration>
+    <file>@IMAGESDIR@/whirlpool.jpg</file>
+  </static>
+  <transition>
+    <duration>5.0</duration>
+    <from>@IMAGESDIR@/whirlpool.jpg</from>
+    <to>@IMAGESDIR@/cloud.jpg</to>
+  </transition>
+</background>
diff --git a/data/images/cosmos/blue-marble-west.jpg b/data/images/cosmos/blue-marble-west.jpg
new file mode 100644
index 0000000..7cd8be1
Binary files /dev/null and b/data/images/cosmos/blue-marble-west.jpg differ
diff --git a/data/images/cosmos/cloud.jpg b/data/images/cosmos/cloud.jpg
new file mode 100644
index 0000000..066e983
Binary files /dev/null and b/data/images/cosmos/cloud.jpg differ
diff --git a/data/images/cosmos/comet.jpg b/data/images/cosmos/comet.jpg
new file mode 100644
index 0000000..5de37cf
Binary files /dev/null and b/data/images/cosmos/comet.jpg differ
diff --git a/data/images/cosmos/cosmos.xml.in.in b/data/images/cosmos/cosmos.xml.in.in
new file mode 100644
index 0000000..b9cf666
--- /dev/null
+++ b/data/images/cosmos/cosmos.xml.in.in
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE wallpapers SYSTEM "mate-wp-list.dtd">
+<wallpapers>
+  <wallpaper deleted="false">
+    <!-- Translators: This is the name of a desktop background image that shows outer space images.
+         You might want to translate it into the equivalent words of your language  -->
+    <_name>Cosmos</_name>
+    <filename>@IMAGESDIR@/background-1.xml</filename>
+    <options>zoom</options>
+  </wallpaper>
+</wallpapers>
diff --git a/data/images/cosmos/earth-horizon.jpg b/data/images/cosmos/earth-horizon.jpg
new file mode 100644
index 0000000..1abefd2
Binary files /dev/null and b/data/images/cosmos/earth-horizon.jpg differ
diff --git a/data/images/cosmos/galaxy-ngc3370.jpg b/data/images/cosmos/galaxy-ngc3370.jpg
new file mode 100644
index 0000000..46113b2
Binary files /dev/null and b/data/images/cosmos/galaxy-ngc3370.jpg differ
diff --git a/data/images/cosmos/helix-nebula.jpg b/data/images/cosmos/helix-nebula.jpg
new file mode 100644
index 0000000..19f02b2
Binary files /dev/null and b/data/images/cosmos/helix-nebula.jpg differ
diff --git a/data/images/cosmos/jupiter.jpg b/data/images/cosmos/jupiter.jpg
new file mode 100644
index 0000000..396af35
Binary files /dev/null and b/data/images/cosmos/jupiter.jpg differ
diff --git a/data/images/cosmos/sombrero.jpg b/data/images/cosmos/sombrero.jpg
new file mode 100644
index 0000000..6d7d2ff
Binary files /dev/null and b/data/images/cosmos/sombrero.jpg differ
diff --git a/data/images/cosmos/whirlpool.jpg b/data/images/cosmos/whirlpool.jpg
new file mode 100644
index 0000000..4fe2ff8
Binary files /dev/null and b/data/images/cosmos/whirlpool.jpg differ
diff --git a/data/images/mate-logo-white.svg b/data/images/mate-logo-white.svg
new file mode 100644
index 0000000..b8ee84d
--- /dev/null
+++ b/data/images/mate-logo-white.svg
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 
+          'http://www.w3.org/TR//REC-SVG-0904/DTD/svg10.dtd'>
+<svg xmlns='http://www.w3.org/2/svg' version='1.0' 
+     x='0' y='0' width='128' height='128' 
+     viewBox='0 0 96 118'>
+  <g style='fill:#ffffff;'>
+      <path d='M 86.068,0.0 C 61.466,0.0 56.851,35.041 70.691,35.041 C 84.529,35.041 110.67100,0.0 86.068,0.0 z '/>
+      <path d='M 45.217,30.699 C 52.586,31.149 60.671,2.5770 46.821,4.3740 C 32.976,6.1710 37.845,30.249 45.217,30.699 z '/>
+      <path d='M 11.445,48.453 C 16.686,46.146 12.120,23.581 3.2080,29.735 C -5.7,35.890 6.2040,50.759 11.445,48.453 z '/>
+      <path d='M 26.212,36.642 C 32.451,35.370 32.793,9.7780 21.667,14.369 C 10.539,18.961 19.978,37.916 26.212,36.642 L 26.212,36.642 z '/>
+      <path d='M 58.791,93.913 C 59.898,102.367 52.589,106.542 45.431,101.092 C 22.644,83.743 83.160,75.088 79.171,51.386 C 75.860,31.712 15.495,37.769 8.6210,68.553 C 3.9680,89.374 27.774,118.26 52.614,118.26 C 64.834,118.26 78.929,107.226 81.566,93.248 C 83.580,82.589 57.867,86.860 58.791,93.913 L 58.791,93.913 z '/>
+  </g>
+</svg>
diff --git a/data/lock-dialog-default.ui b/data/lock-dialog-default.ui
new file mode 100644
index 0000000..5dfa8a2
--- /dev/null
+++ b/data/lock-dialog-default.ui
@@ -0,0 +1,505 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+      <object class="GtkFrame" id="lock-dialog">
+        <property name="visible">True</property>
+        <property name="label_xalign">0</property>
+        <property name="label_yalign">0.5</property>
+        <property name="shadow_type">GTK_SHADOW_OUT</property>
+        <child>
+          <object class="GtkAlignment" id="alignment1">
+            <property name="border_width">12</property>
+            <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">0</property>
+            <property name="left_padding">0</property>
+            <property name="right_padding">0</property>
+            <child>
+              <object class="GtkVBox" id="lock-box">
+                <property name="border_width">18</property>
+                <property name="visible">True</property>
+                <property name="homogeneous">False</property>
+                <property name="spacing">0</property>
+                <child>
+                  <object class="GtkNotebook" id="notebook">
+                    <property name="visible">True</property>
+                    <property name="show_tabs">False</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>
+                      <object 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">0</property>
+                        <property name="left_padding">0</property>
+                        <property name="right_padding">0</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox2">
+                            <property name="visible">True</property>
+                            <property name="homogeneous">False</property>
+                            <property name="spacing">12</property>
+                            <child>
+                              <object class="GtkImage" id="auth-face-image">
+                                <property name="visible">True</property>
+                                <property name="xalign">0.5</property>
+                                <property name="yalign">1</property>
+                                <property name="xpad">0</property>
+                                <property name="ypad">0</property>
+                              </object>
+                              <packing>
+                                <property name="padding">0</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" id="vbox3">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">False</property>
+                                <property name="spacing">0</property>
+                                <child>
+                                  <object class="GtkLabel" id="auth-realname-label">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes"><span size="x-large">%R</span></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>
+                                  </object>
+                                  <packing>
+                                    <property name="padding">0</property>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="auth-username-label">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes"><span size="small">%U on %h</span></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>
+                                  </object>
+                                  <packing>
+                                    <property name="padding">0</property>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="padding">0</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="status-message-label">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes"/>
+                                <property name="use_underline">False</property>
+                                <property name="use_markup">False</property>
+                                <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                <property name="wrap">True</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>
+                              </object>
+                              <packing>
+                                <property name="padding">0</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" id="auth-prompt-box">
+                                <property name="visible">True</property>
+                                <property name="homogeneous">False</property>
+                                <property name="spacing">0</property>
+                                <child>
+                                  <object class="GtkHBox" id="hbox1">
+                                    <property name="visible">True</property>
+                                    <property name="homogeneous">False</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <object class="GtkLabel" id="auth-prompt-label">
+                                        <property name="label" translatable="yes"/>
+                                        <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.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>
+                                      </object>
+                                      <packing>
+                                        <property name="padding">0</property>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkEntry" id="auth-prompt-entry">
+                                        <property name="can_focus">True</property>
+                                        <property name="editable">True</property>
+                                        <property name="visibility">False</property>
+                                        <property name="max_length">0</property>
+                                        <property name="text" translatable="yes"/>
+                                        <property name="has_frame">True</property>
+                                        <property name="activates_default">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="padding">0</property>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="auth-prompt-kbd-layout-indicator">
+                                        <property name="visible">True</property>
+                                        <property name="homogeneous">False</property>
+                                        <property name="spacing">0</property>
+                                        <child>
+                                          <placeholder/>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="padding">0</property>
+                                        <property name="expand">False</property>
+                                        <property name="fill">True</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="padding">0</property>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="auth-capslock-label">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes"/>
+                                    <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.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>
+                                  </object>
+                                  <packing>
+                                    <property name="padding">0</property>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="padding">0</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="auth-status-label">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes"/>
+                                <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.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>
+                              </object>
+                              <packing>
+                                <property name="padding">0</property>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHButtonBox" id="auth-action-area">
+                                <property name="visible">True</property>
+                                <property name="layout_style">GTK_BUTTONBOX_END</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <object class="GtkButton" id="auth-note-button">
+                                    <property name="visible">True</property>
+                                    <property name="can_default">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">_Leave Message</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <property name="focus_on_click">False</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="auth-switch-button">
+                                    <property name="visible">True</property>
+                                    <property name="can_default">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">_Switch User</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <property name="focus_on_click">False</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="auth-logout-button">
+                                    <property name="visible">True</property>
+                                    <property name="can_default">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">_Log Out</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <property name="focus_on_click">False</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="auth-cancel-button">
+                                    <property name="visible">True</property>
+                                    <property name="can_default">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">_Cancel</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <property name="focus_on_click">False</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="auth-unlock-button">
+                                    <property name="visible">True</property>
+                                    <property name="can_default">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">_Unlock</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <property name="focus_on_click">True</property>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="padding">0</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                              </packing>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="tab_expand">False</property>
+                        <property name="tab_fill">True</property>
+                      </packing>
+                    </child>
+                    <child type="tab">
+                      <object class="GtkLabel" id="label1">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes"/>
+                        <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.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>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="note-tab">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">10</property>
+                        <child>
+                          <object class="GtkLabel" id="note-tab-label">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes"><b>Leave a message for %R:</b></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>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                            <property name="shadow_type">GTK_SHADOW_IN</property>
+                            <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+                            <child>
+                              <object class="GtkTextView" id="note-text-view">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="editable">True</property>
+                                <property name="overwrite">False</property>
+                                <property name="accepts_tab">True</property>
+                                <property name="justification">GTK_JUSTIFY_LEFT</property>
+                                <property name="wrap_mode">GTK_WRAP_WORD</property>
+                                <property name="cursor_visible">True</property>
+                                <property name="pixels_above_lines">0</property>
+                                <property name="pixels_below_lines">0</property>
+                                <property name="pixels_inside_wrap">0</property>
+                                <property name="left_margin">0</property>
+                                <property name="right_margin">0</property>
+                                <property name="indent">0</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHButtonBox" id="hbuttonbox1">
+                            <property name="visible">True</property>
+                            <property name="layout_style">GTK_BUTTONBOX_END</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <object class="GtkButton" id="note-cancel-button">
+                                <property name="visible">True</property>
+                                <property name="can_default">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label">gtk-cancel</property>
+                                <property name="use_stock">True</property>
+                                <property name="relief">GTK_RELIEF_NORMAL</property>
+                                <property name="focus_on_click">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="note-ok-button">
+                                <property name="visible">True</property>
+                                <property name="can_default">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label">gtk-save</property>
+                                <property name="use_stock">True</property>
+                                <property name="relief">GTK_RELIEF_NORMAL</property>
+                                <property name="focus_on_click">True</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="tab_expand">False</property>
+                        <property name="tab_fill">True</property>
+                      </packing>
+                    </child>
+                    <child type="tab">
+                      <object class="GtkLabel" id="label9">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes"/>
+                        <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.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>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+</interface>
diff --git a/data/mate-screensaver b/data/mate-screensaver
new file mode 100644
index 0000000..4bd6427
--- /dev/null
+++ b/data/mate-screensaver
@@ -0,0 +1,15 @@
+#%PAM-1.0
+
+# Fedora Core
+auth       include	system-auth
+auth       optional     pam_mate_keyring.so
+account    include	system-auth
+password   include	system-auth
+session    include	system-auth
+
+# SuSE/Novell
+#auth       include      common-auth
+#auth       optional     pam_mate_keyring.so
+#account    include      common-account
+#password   include      common-password
+#session    include      common-session
diff --git a/data/mate-screensaver-command.1 b/data/mate-screensaver-command.1
new file mode 100644
index 0000000..34fb95a
--- /dev/null
+++ b/data/mate-screensaver-command.1
@@ -0,0 +1,70 @@
+.\" Copyright (C) 2007 Sven Arvidsson <sa at whiz.se>
+.\"
+.\" This is free software; you may 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,
+.\" or (at your option) any later version.
+.\"
+.\" This 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.,
+.\"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+.TH mate-screensaver-command 1 "2007\-09\-27" "MATE"
+.SH NAME
+mate-screensaver-command \- controls MATE screensaver
+.SH SYNOPSIS
+.B mate-screensaver-command
+.RI [ OPTION... ]
+.SH DESCRIPTION
+mate-screensaver-command is a tool for controlling an already
+running instance of mate-screensaver.
+.SH OPTIONS
+.TP
+.B \-\-exit
+Causes the screensaver to exit gracefully
+.TP
+.B \-q, \-\-query
+Query the state of the screensaver
+.TP
+.B \-t, \-\-time
+Query the length of time the screensaver has been active
+.TP
+.B \-l, \-\-lock
+Tells the running screensaver process to lock the screen immediately
+.TP
+.B \-c, \-\-cycle
+If the screensaver is active then switch to another graphics demo
+.TP
+.B \-a, \-\-activate
+Turn the screensaver on (blank the screen)
+.TP
+.B \-d, \-\-deactivate
+If the screensaver is active then deactivate it (un-blank the screen)
+.TP
+.B \-p, \-\-poke
+Poke the running screensaver to simulate user activity
+.TP
+.B \-i, \-\-inhibit
+Inhibit the screensaver from activating. Command blocks while inhibit
+is active.
+.TP
+.B \-n, \-\-application-name
+The calling application that is inhibiting the screensaver
+.TP
+.B \-r, \-\-reason
+The reason for inhibiting the screensaver
+.TP
+.B \-V, \-\-version
+Version of this application
+.SH AUTHORS
+.B mate-screensaver-command
+is written by William Jon McCann <mccann at jhu.edu>.
+.P
+This manual page was written by Sven Arvidsson <sa at whiz.se>.
+.SH SEE ALSO
+.BR "mate-screensaver" (1)
+
diff --git a/data/mate-screensaver-preferences.1 b/data/mate-screensaver-preferences.1
new file mode 100644
index 0000000..b00176c
--- /dev/null
+++ b/data/mate-screensaver-preferences.1
@@ -0,0 +1,37 @@
+.\" Copyright (C) 2007 Sven Arvidsson <sa at whiz.se>
+.\"
+.\" This is free software; you may 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,
+.\" or (at your option) any later version.
+.\"
+.\" This 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.,
+.\"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+.TH mate-screensaver-preferences 1 "2007\-09\-27" "MATE"
+.SH NAME
+mate-screensaver-preferences \- configure MATE Screensaver
+.SH SYNOPSIS
+.B mate-screensaver-preferences
+.RI [ OPTIONS... ]
+.SH DESCRIPTION
+Manages preferences for the MATE screen saver.
+.SH OPTIONS
+This program only accepts the standard GTK options.
+.SH AUTHORS
+.B mate-screensaver-preferences
+is written by William Jon McCann <mccann at jhu.edu>.
+.P
+This manual page was written by Sven Arvidsson <sa at whiz.se>.
+.SH SEE ALSO
+.BR "mate-screensaver" (1),
+.BR "gtk-options" (7)
+.P
+The online documentation available through the program's
+.I Help
+menu.
diff --git a/data/mate-screensaver-preferences.desktop.in b/data/mate-screensaver-preferences.desktop.in
new file mode 100644
index 0000000..9800ad8
--- /dev/null
+++ b/data/mate-screensaver-preferences.desktop.in
@@ -0,0 +1,13 @@
+[Desktop Entry]
+_Name=Screensaver
+_Comment=Set your screensaver preferences
+Icon=preferences-desktop-screensaver
+Exec=mate-screensaver-preferences
+Terminal=false
+Type=Application
+Categories=GTK;MATE;Settings;DesktopSettings;
+OnlyShowIn=MATE;
+StartupNotify=true
+X-MATE-Bugzilla-Bugzilla=MATE
+X-MATE-Bugzilla-Product=mate-screensaver
+X-MATE-Bugzilla-Component=general
diff --git a/data/mate-screensaver-preferences.ui b/data/mate-screensaver-preferences.ui
new file mode 100644
index 0000000..cfa6ccd
--- /dev/null
+++ b/data/mate-screensaver-preferences.ui
@@ -0,0 +1,620 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkImage" id="preview_image">
+    <property name="stock">gtk-fullscreen</property>
+    <property name="icon_size">4</property>
+  </object>
+  <object class="GtkImage" id="power_image">
+    <property name="stock">gtk-jump-to</property>
+    <property name="icon_size">4</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">120</property>
+    <property name="lower">1</property>
+    <property name="page_increment">10</property>
+    <property name="step_increment">1</property>
+    <property name="page_size">0</property>
+    <property name="value">10</property>
+  </object>
+  <object class="GtkDialog" id="prefs_dialog">
+    <property name="border_width">5</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Screensaver Preferences</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">600</property>
+    <property name="default_height">400</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_DIALOG</property>
+    <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+    <property name="focus_on_map">True</property>
+    <property name="urgency_hint">False</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="orientation">vertical</property>
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <object class="GtkButton" id="helpbutton1">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-help</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="gpm_button">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <property name="image">power_image</property>
+                <property name="label" translatable="yes">Power _Management</property>
+                <property name="use_underline">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="visible">True</property>
+                <property name="can_default">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-close</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="orientation">vertical</property>
+            <property name="border_width">5</property>
+            <property name="visible">True</property>
+            <property name="homogeneous">False</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="homogeneous">False</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkVBox" id="vbox8">
+                    <property name="orientation">vertical</property>
+                    <property name="visible">True</property>
+                    <property name="homogeneous">False</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkLabel" id="savers_label">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Screensaver theme:</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</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>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="hbox6">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">0</property>
+                        <child>
+                          <object class="GtkTable" id="table1">
+                            <property name="visible">True</property>
+                            <property name="n_rows">2</property>
+                            <property name="n_columns">2</property>
+                            <property name="homogeneous">False</property>
+                            <property name="row_spacing">6</property>
+                            <property name="column_spacing">6</property>
+                            <child>
+                              <object class="GtkScrolledWindow" id="themes_scrolled_window">
+                                <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_IN</property>
+                                <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+                                <child>
+                                  <object class="GtkTreeView" id="savers_treeview">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="headers_visible">False</property>
+                                    <property name="rules_hint">False</property>
+                                    <property name="reorderable">False</property>
+                                    <property name="enable_search">True</property>
+                                    <property name="fixed_height_mode">False</property>
+                                    <property name="hover_selection">False</property>
+                                    <property name="hover_expand">False</property>
+                                    <accessibility>
+                                      <relation target="savers_treeview" type="label-for"/>
+                                    </accessibility>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="right_attach">1</property>
+                                <property name="top_attach">0</property>
+                                <property name="bottom_attach">1</property>
+                                <property name="x_options">fill</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkDrawingArea" id="preview_area">
+			    </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">0</property>
+                                <property name="bottom_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHButtonBox" id="hbuttonbox1">
+                                <property name="visible">True</property>
+                                <property name="layout_style">GTK_BUTTONBOX_START</property>
+                                <property name="spacing">0</property>
+                                <child>
+                                  <object class="GtkButton" id="preview_button">
+                                    <property name="visible">True</property>
+                                    <property name="can_default">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <property name="focus_on_click">True</property>
+                                    <property name="image">preview_image</property>
+                                    <property name="label" translatable="yes">_Preview</property>
+                                    <property name="use_underline">True</property>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="left_attach">0</property>
+                                <property name="right_attach">1</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                                <property name="x_options">fill</property>
+                                <property name="y_options">fill</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <property name="homogeneous">False</property>
+                <property name="spacing">0</property>
+                <child>
+                  <object class="GtkVBox" id="vbox5">
+                    <property name="orientation">vertical</property>
+                    <property name="visible">True</property>
+                    <property name="homogeneous">False</property>
+                    <property name="spacing">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox3">
+                        <property name="visible">True</property>
+                        <property name="homogeneous">False</property>
+                        <property name="spacing">0</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox6">
+                            <property name="orientation">vertical</property>
+                            <property name="visible">True</property>
+                            <property name="homogeneous">False</property>
+                            <property name="spacing">0</property>
+                            <child>
+                              <object class="GtkVBox" id="vbox3">
+                                <property name="orientation">vertical</property>
+                                <property name="visible">True</property>
+                                <property name="homogeneous">False</property>
+                                <property name="spacing">6</property>
+                                <child>
+                                  <object class="GtkHBox" id="activate_delay_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="homogeneous">False</property>
+                                    <property name="spacing">12</property>
+                                    <child>
+                                      <object class="GtkLabel" id="activate_delay_label">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Regard the computer as _idle after:</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>
+                                      </object>
+                                      <packing>
+                                        <property name="padding">0</property>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox4">
+                                        <property name="visible">True</property>
+                                        <property name="homogeneous">False</property>
+                                        <property name="spacing">6</property>
+                                        <child>
+                                          <object class="GtkHScale" id="activate_delay_hscale">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">True</property>
+                                            <property name="draw_value">True</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">adjustment1</property>
+                                          </object>
+                                          <packing>
+                                            <property name="padding">0</property>
+                                            <property name="expand">True</property>
+                                            <property name="fill">True</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="padding">0</property>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="padding">0</property>
+                                    <property name="expand">False</property>
+                                    <property name="fill">True</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" id="enable_checkbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">_Activate screensaver when computer is idle</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <property name="focus_on_click">True</property>
+                                    <property name="active">False</property>
+                                    <property name="inconsistent">False</property>
+                                    <property name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="padding">0</property>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkCheckButton" id="lock_checkbox">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">_Lock screen when screensaver is active</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="relief">GTK_RELIEF_NORMAL</property>
+                                    <property name="focus_on_click">True</property>
+                                    <property name="active">False</property>
+                                    <property name="inconsistent">False</property>
+                                    <property name="draw_indicator">True</property>
+                                  </object>
+                                  <packing>
+                                    <property name="padding">0</property>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="root_warning_label">
+                                    <property name="label" translatable="yes"><b>Warning: the screen will not be locked for the root user.</b></property>
+                                    <property name="use_underline">False</property>
+                                    <property name="use_markup">True</property>
+                                    <property name="justify">GTK_JUSTIFY_LEFT</property>
+                                    <property name="wrap">True</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>
+                                  </object>
+                                  <packing>
+                                    <property name="padding">0</property>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="padding">0</property>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="padding">0</property>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">0</property>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="padding">0</property>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-11">helpbutton1</action-widget>
+      <action-widget response="-2">gpm_button</action-widget>
+      <action-widget response="-7">button1</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkWindow" id="fullscreen_preview_window">
+    <property name="can_focus">True</property>
+    <property name="has_focus">True</property>
+    <property name="title" translatable="yes">Screensaver Preview</property>
+    <property name="type">GTK_WINDOW_TOPLEVEL</property>
+    <property name="window_position">GTK_WIN_POS_CENTER</property>
+    <property name="modal">True</property>
+    <property name="resizable">True</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="decorated">False</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</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>
+      <object class="GtkVBox" id="vbox10">
+        <property name="orientation">vertical</property>
+        <property name="visible">True</property>
+        <property name="homogeneous">False</property>
+        <property name="spacing">0</property>
+        <child>
+          <object class="GtkHBox" id="hbox9">
+            <property name="visible">True</property>
+            <property name="homogeneous">False</property>
+            <property name="spacing">0</property>
+            <child>
+              <object class="GtkImage" id="image2">
+                <property name="visible">True</property>
+                <property name="stock">gtk-dialog-warning</property>
+                <property name="icon_size">4</property>
+                <property name="xalign">0.5</property>
+                <property name="yalign">0.5</property>
+                <property name="xpad">10</property>
+                <property name="ypad">0</property>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label15">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes"><b>Screensaver preview</b></property>
+                <property name="use_underline">False</property>
+                <property name="use_markup">True</property>
+                <property name="justify">GTK_JUSTIFY_FILL</property>
+                <property name="wrap">True</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>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="fullscreen_preview_theme_label">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes"/>
+                <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.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>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="fullscreen_preview_previous_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <child>
+                  <object class="GtkImage" id="image5">
+                    <property name="visible">True</property>
+                    <property name="stock">gtk-go-back</property>
+                    <property name="icon_size">4</property>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xpad">0</property>
+                    <property name="ypad">0</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="fullscreen_preview_next_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+                <child>
+                  <object class="GtkImage" id="image4">
+                    <property name="visible">True</property>
+                    <property name="stock">gtk-go-forward</property>
+                    <property name="icon_size">4</property>
+                    <property name="xalign">0.5</property>
+                    <property name="yalign">0.5</property>
+                    <property name="xpad">0</property>
+                    <property name="ypad">0</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="fullscreen_preview_close">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="label">gtk-leave-fullscreen</property>
+                <property name="use_stock">True</property>
+                <property name="relief">GTK_RELIEF_NORMAL</property>
+                <property name="focus_on_click">True</property>
+              </object>
+              <packing>
+                <property name="padding">0</property>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkDrawingArea" id="fullscreen_preview_area">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="padding">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/data/mate-screensaver.1 b/data/mate-screensaver.1
new file mode 100644
index 0000000..a9539a0
--- /dev/null
+++ b/data/mate-screensaver.1
@@ -0,0 +1,41 @@
+.\" Copyright (C) 2007 Sven Arvidsson <sa at whiz.se>
+.\"
+.\" This is free software; you may 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,
+.\" or (at your option) any later version.
+.\"
+.\" This 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.,
+.\"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+.TH mate-screensaver 1 "2007\-09\-27" "MATE"
+.SH NAME
+mate-screensaver \- screen saver and locker
+.SH SYNOPSIS
+.B mate-screensaver
+.RI [ OPTIONS... ]
+.SH DESCRIPTION
+MATE Screensaver is the default screen saver and locker in a MATE
+desktop. It is designed with simplicity and security in mind.
+.SH OPTIONS
+.TP
+.B \-\-no\-daemon
+Don't become a daemon
+.TP
+.B \-\-debug
+Enable debugging code
+.P
+This program also accepts the standard GTK options.
+.SH AUTHORS
+.B mate-screensaver
+is written by William Jon McCann <mccann at jhu.edu>.
+.P
+This manual page was written by Sven Arvidsson <sa at whiz.se>.
+.SH SEE ALSO
+.BR "gtk-options" (7)
+
diff --git a/data/mate-screensaver.directory.in b/data/mate-screensaver.directory.in
new file mode 100644
index 0000000..3733bbd
--- /dev/null
+++ b/data/mate-screensaver.directory.in
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Encoding=UTF-8
+_Name=Screensavers
+_Comment=Screensaver themes
+Icon=screensaver
+Type=Directory
+OnlyShowIn=MATE;
+NoDisplay=false
diff --git a/data/mate-screensaver.pc.in b/data/mate-screensaver.pc.in
new file mode 100644
index 0000000..4294e22
--- /dev/null
+++ b/data/mate-screensaver.pc.in
@@ -0,0 +1,17 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+libexecdir=@libexecdir@
+includedir=@includedir@
+datadir=@datadir@
+
+privlibexecdir=@privlibexecdir@
+privdatadir=@privdatadir@
+themesdir=@themesdir@
+
+Name: mate-screensaver
+Description: mate screensaver
+Version: @VERSION@
+Requires:
+Libs:
+Cflags:
diff --git a/data/mate-screensaver.schemas.in b/data/mate-screensaver.schemas.in
new file mode 100644
index 0000000..5767b17
--- /dev/null
+++ b/data/mate-screensaver.schemas.in
@@ -0,0 +1,257 @@
+<mateconfschemafile>
+  <schemalist>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/idle_activation_enabled</key>
+      <applyto>/apps/mate-screensaver/idle_activation_enabled</applyto>
+      <owner>mate-screensaver</owner>
+      <type>bool</type>
+      <default>TRUE</default>
+      <locale name="C">
+        <short>Activate when idle</short>
+        <long>
+          Set this to TRUE to activate the screensaver
+          when the session is idle.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/lock_enabled</key>
+      <applyto>/apps/mate-screensaver/lock_enabled</applyto>
+      <owner>mate-screensaver</owner>
+      <type>bool</type>
+      <default>TRUE</default>
+      <locale name="C">
+        <short>Lock on activation</short>
+        <long>
+          Set this to TRUE to lock the screen when the screensaver
+          goes active.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/mode</key>
+      <applyto>/apps/mate-screensaver/mode</applyto>
+      <owner>mate-screensaver</owner>
+      <type>string</type>
+      <default>blank-only</default>
+      <locale name="C">
+        <short>Screensaver theme selection mode</short>
+        <long>
+	  The selection mode used by screensaver.  May be "blank-only"
+          to enable the screensaver without using any theme on activation,
+          "single" to enable screensaver using only one theme on activation
+          (specified in "themes" key), and "random" to enable the
+          screensaver using a random theme on activation.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/themes</key>
+      <applyto>/apps/mate-screensaver/themes</applyto>
+      <owner>mate-screensaver</owner>
+      <type>list</type>
+      <list_type>string</list_type>
+      <default>[]</default>
+      <locale name="C">
+        <short>Screensaver themes</short>
+        <long>
+	  This key specifies the list of themes to be used by the
+          screensaver. It's ignored when "mode" key is 
+          "blank-only", should provide the theme name when "mode" is
+          "single", and should provide a list of themes when "mode" is
+          "random".
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/idle_delay</key>
+      <applyto>/apps/mate-screensaver/idle_delay</applyto>
+      <owner>mate-screensaver</owner>
+      <type>int</type>
+      <default>10</default>
+      <locale name="C">
+        <short>Time before session is considered idle</short>
+        <long>
+          The number of minutes of inactivity before the
+          session is considered idle.
+        </long>
+      </locale>
+     </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/power_management_delay</key>
+      <applyto>/apps/mate-screensaver/power_management_delay</applyto>
+      <owner>mate-screensaver</owner>
+      <type>int</type>
+      <default>30</default>
+      <locale name="C">
+        <short>Time before power-management baseline</short>
+        <long>
+          The number of seconds of inactivity before signalling
+          to power-management.  This key is set and maintained
+          by the session power-management agent.
+        </long>
+      </locale>
+     </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/cycle_delay</key>
+      <applyto>/apps/mate-screensaver/cycle_delay</applyto>
+      <owner>mate-screensaver</owner>
+      <type>int</type>
+      <default>10</default>
+      <locale name="C">
+        <short>Time before theme change</short>
+        <long>
+          The number of minutes to run before changing the
+          screensaver theme.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/lock_delay</key>
+      <applyto>/apps/mate-screensaver/lock_delay</applyto>
+      <owner>mate-screensaver</owner>
+      <type>int</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Time before locking</short>
+        <long>
+          The number of minutes after screensaver activation
+          before locking the screen.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/embedded_keyboard_enabled</key>
+      <applyto>/apps/mate-screensaver/embedded_keyboard_enabled</applyto>
+      <owner>mate-screensaver</owner>
+      <type>bool</type>
+      <default>FALSE</default>
+      <locale name="C">
+        <short>Allow embedding a keyboard into the window</short>
+        <long>
+          Set this to TRUE to allow embedding a keyboard into the
+          window when trying to unlock.  The "keyboard_command" key
+          must be set with the appropriate command.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/embedded_keyboard_command</key>
+      <applyto>/apps/mate-screensaver/embedded_keyboard_command</applyto>
+      <owner>mate-screensaver</owner>
+      <type>string</type>
+      <default></default>
+      <locale name="C">
+        <short>Embedded keyboard command</short>
+        <long>
+          The command that will be run, if the "embedded_keyboard_enabled" key
+          is set to TRUE, to embed a keyboard widget into the window.
+          This command should implement an XEMBED plug interface and
+          output a window XID on the standard output.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/logout_enabled</key>
+      <applyto>/apps/mate-screensaver/logout_enabled</applyto>
+      <owner>mate-screensaver</owner>
+      <type>bool</type>
+      <default>FALSE</default>
+      <locale name="C">
+        <short>Allow logout</short>
+        <long>
+          Set this to TRUE to offer an option in unlock dialog to
+          logging out after a delay.  The Delay is specified in the
+          "logout_delay" key.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/logout_delay</key>
+      <applyto>/apps/mate-screensaver/logout_delay</applyto>
+      <owner>mate-screensaver</owner>
+      <type>int</type>
+      <default>120</default>
+      <locale name="C">
+        <short>Time before logout option</short>
+        <long>
+          The number of minutes after the screensaver activation
+          before a logout option will appear in unlock dialog. This
+          key has effect only if the "logout_enable" key is set to TRUE.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/logout_command</key>
+      <applyto>/apps/mate-screensaver/logout_command</applyto>
+      <owner>mate-screensaver</owner>
+      <type>string</type>
+      <default></default>
+      <locale name="C">
+        <short>Logout command</short>
+        <long>
+          The command to invoke when the logout button is clicked.  This
+          command should simply log the user out without any interaction.
+          This key has effect only if the "logout_enable" key is set to TRUE.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/user_switch_enabled</key>
+      <applyto>/apps/mate-screensaver/user_switch_enabled</applyto>
+      <owner>mate-screensaver</owner>
+      <type>bool</type>
+      <default>TRUE</default>
+      <locale name="C">
+        <short>Allow user switching</short>
+        <long>
+          Set this to TRUE to offer an option in the unlock dialog to
+          switch to a different user account.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/lock_dialog_theme</key>
+      <applyto>/apps/mate-screensaver/lock_dialog_theme</applyto>
+      <owner>mate-screensaver</owner>
+      <type>string</type>
+      <default>default</default>
+      <locale name="C">
+        <short>Theme for lock dialog</short>
+        <long>
+          Theme to use for the lock dialog.
+        </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/mate-screensaver/status_message_enabled</key>
+      <applyto>/apps/mate-screensaver/status_message_enabled</applyto>
+      <owner>mate-screensaver</owner>
+      <type>bool</type>
+      <default>TRUE</default>
+      <locale name="C">
+        <short>Allow the session status message to be displayed</short>
+        <long>
+        Allow the session status message to be displayed when the screen is locked.
+        </long>
+      </locale>
+    </schema>
+
+  </schemalist>
+</mateconfschemafile>
diff --git a/data/mate-screensavers.menu.in b/data/mate-screensavers.menu.in
new file mode 100644
index 0000000..881a28a
--- /dev/null
+++ b/data/mate-screensavers.menu.in
@@ -0,0 +1,20 @@
+<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
+ "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
+
+<Menu>
+
+  <Name>Screensavers</Name>
+  <Directory>mate-screensaver.directory</Directory>
+
+  <!-- Read standard .directory and .desktop file locations -->
+  <DefaultAppDirs/>
+  <DefaultDirectoryDirs/>
+
+  <!-- Read in overrides and child menus from applications-merged/ -->
+  <DefaultMergeDirs/>
+
+  <Include>
+    <Category>Screensaver</Category>
+  </Include>
+
+</Menu>
diff --git a/data/migrate-xscreensaver-config.sh b/data/migrate-xscreensaver-config.sh
new file mode 100755
index 0000000..860a0d5
--- /dev/null
+++ b/data/migrate-xscreensaver-config.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+DIST_BIN=`dirname "$0"`
+
+CMD=xsltproc
+XSL=${DIST_BIN}/xscreensaver-config.xsl
+
+if test "x$1" = "x" -o  "x$1" = "x-h" -o "x$1" = "x--help"; then
+    echo "usage: $0 [file] ..."
+    exit 1
+fi
+
+if [ ! -r ${XSL} ]; then
+    echo "Cannot find XSLT file"
+    exit 1
+fi
+
+FILES="$@"
+for FILE in $FILES; do
+    echo "${FILE}" | grep ".xml$" > /dev/null
+    if [ $? -ne 0 ]; then
+        echo "Skipping non-xml file: ${FILE}"
+        continue
+    fi
+
+    d=`dirname ${FILE}`
+    b=`basename ${FILE} .xml`
+
+    outfile="${b}.desktop"
+    echo "Creating: ${outfile}"
+    ${CMD} -o ${outfile} ${XSL} ${FILE}
+done
+
+ exit 0
diff --git a/data/org.mate.ScreenSaver.service.in b/data/org.mate.ScreenSaver.service.in
new file mode 100644
index 0000000..412ddfa
--- /dev/null
+++ b/data/org.mate.ScreenSaver.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.mate.ScreenSaver
+Exec=@EXPANDED_BINDIR@/mate-screensaver --no-daemon
diff --git a/data/xscreensaver-config.xsl b/data/xscreensaver-config.xsl
new file mode 100644
index 0000000..089193b
--- /dev/null
+++ b/data/xscreensaver-config.xsl
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+<xsl:output method="text" indent="no" />
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="screensaver">
+[Desktop Entry]
+Encoding=UTF-8
+Name=<xsl:value-of select="@_label" />
+Comment=<xsl:value-of select="normalize-space(_description)" />
+<xsl:if test="count(command/@name) != 0">
+TryExec=<xsl:value-of select="normalize-space(command/@name)" />
+Exec=<xsl:value-of select="normalize-space(command/@name)" /><xsl:text> </xsl:text><xsl:value-of select="normalize-space(command/@arg)" />
+</xsl:if>
+<xsl:if test="count(command/@name) = 0">
+TryExec=<xsl:value-of select="normalize-space(@name)" />
+Exec=<xsl:value-of select="normalize-space(@name)" /><xsl:text> </xsl:text><xsl:value-of select="normalize-space(command/@arg)" />
+</xsl:if>
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=Screensaver;
+OnlyShowIn=MATE;
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/distro/archlinux/PKGBUILD b/distro/archlinux/PKGBUILD
new file mode 100644
index 0000000..e642901
--- /dev/null
+++ b/distro/archlinux/PKGBUILD
@@ -0,0 +1,35 @@
+pkgname=mate-screensaver
+pkgver=2.10.2
+pkgrel=1
+pkgdesc='Screensaver for MATE'
+arch=('i686' 'x86_64')
+url='http://system-tools-backends.freedesktop.org/'
+license=('GPL')
+depends=('gtk2' 'dbus' 'mate-conf' 'mate-desktop' 'mate-menus')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.10/${pkgname}.tar.gz)
+#install=system-tools-backends.install
+sha256sums=('5b0dabd93635c9cb15bb150cb2f2093232764a97227fe9b4f927db640d35775f')
+
+build() {
+	cd ${pkgname}
+
+	./configure \
+		--prefix=/usr --sysconfdir=/etc \
+		--mandir=/usr/share \
+		--disable-static \
+		--libexecdir=/usr/lib/${pkgname} || return 1
+
+	make || return 1
+}
+
+package() {
+	cd ${pkgname}
+
+	make MATECONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR=${pkgdir} install || return 1
+	
+	install -m755 -d "${pkgdir}/usr/share/mateconf/schemas"
+	mateconf-merge-schema "${pkgdir}/usr/share/mateconf/schemas/${pkgname}.schemas" --domain ${pkgname} ${pkgdir}/etc/mateconf/schemas/*.schemas || return 1
+	rm -f ${pkgdir}/etc/mateconf/schemas/*.schemas
+}
diff --git a/distro/archlinux/mate-screensaver.install b/distro/archlinux/mate-screensaver.install
new file mode 100644
index 0000000..962976d
--- /dev/null
+++ b/distro/archlinux/mate-screensaver.install
@@ -0,0 +1,18 @@
+pkgname=mate-screensaver
+
+post_install() {
+	usr/sbin/mateconfpkg --install ${pkgname}
+	gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+pre_upgrade() {
+	pre_remove $1
+}
+
+post_upgrade() {
+	post_install $1
+}
+
+pre_remove() {
+	usr/sbin/mateconfpkg --uninstall ${pkgname}
+}
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..a8851b7
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,27 @@
+NULL =
+
+SPEC_XML_FILES =			\
+	mate-screensaver.xml		\
+	dbus-interface.xml		\
+	$(NULL)
+
+if DOCBOOK_DOCS_ENABLED
+
+htmldocdir = $(DOCDIR)/spec
+htmldoc_DATA = mate-screensaver.html
+
+mate-screensaver.html : dbus-interface.xml
+	$(XMLTO) html-nochunks -m config.xsl mate-screensaver.xml
+
+endif # DOCBOOK_DOCS_ENABLED
+
+EXTRA_DIST =				\
+	mate-screensaver.xml.in	\
+	config.xsl			\
+	docbook.css			\
+	$(SPEC_XML_FILES)
+	$(NULL)
+
+clean-local:
+	rm -f *~
+	rm -f mate-screensaver.html
diff --git a/doc/config.xsl b/doc/config.xsl
new file mode 100644
index 0000000..7aa9def
--- /dev/null
+++ b/doc/config.xsl
@@ -0,0 +1,6 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                version="1.0">
+  <xsl:param name="html.stylesheet" select="'docbook.css'"/>
+</xsl:stylesheet>
diff --git a/doc/dbus-interface.xml b/doc/dbus-interface.xml
new file mode 100644
index 0000000..d245bf1
--- /dev/null
+++ b/doc/dbus-interface.xml
@@ -0,0 +1,479 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
+
+<chapter id="dbus-interface">
+  <title>DBUS Interface</title>
+  <para>
+    This API is currently unstable and is likely to change in the future.
+  </para>
+
+  <sect1 id="gs-intro">
+    <title>Introduction</title>
+    <para>
+      MATE Screensaver exposes a DBUS API for programs to obtain information about
+      the screensaver state and to interact with the screensaver in limited ways.
+    </para>
+    <para>
+      The following constants are used to uniquely refer to the MateScreensaver
+      object when making DBUS method calls:
+    </para>
+    <informaltable>
+      <tgroup cols="2">
+        <tbody>
+          <row>
+            <entry>DBUS Service:</entry>
+            <entry><literal>org.mate.ScreenSaver</literal></entry>
+          </row>
+          <row>
+            <entry>DBUS Object Path:</entry>
+            <entry><literal>/org/mate/ScreenSaver</literal></entry>
+          </row>
+          <row>
+            <entry>DBUS Interface:</entry>
+            <entry><literal>org.mate.ScreenSaver</literal></entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+  </sect1>
+
+  <sect1 id="gs-methods">
+    <title>Methods</title>
+    <para>
+      These are the DBUS methods.
+    </para>
+
+    <sect2 id="gs-method-Lock">
+      <title>
+        <literal>Lock</literal>
+      </title>
+      <para>
+        Request that the screen be locked.  This bypasses all Inhibit requests.
+      </para>
+    </sect2>
+
+    <sect2 id="gs-method-Cycle">
+      <title>
+        <literal>Cycle</literal>
+      </title>
+      <para>
+        Request that the screen saver theme be restarted and, if applicable,
+        switch to the next one in the list.
+      </para>
+    </sect2>
+
+    <sect2 id="gs-method-SimulateUserActivity">
+      <title>
+        <literal>SimulateUserActivity</literal>
+      </title>
+      <para>
+        Simulate user activity.  If the screensaver is activated this
+        will attempt to deactivate and authentication will be
+        requested if necessary.  If the screensaver is not activated
+        then the idle timers will be reset.
+      </para>
+    </sect2>
+
+    <sect2 id="gs-method-Inhibit">
+      <title>
+        <literal>Inhibit</literal>
+      </title>
+      <para>
+        Request that saving the screen due to system idleness be blocked until
+        UnInhibit is called or the calling process exits.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>in</entry>
+              <entry>string</entry>
+              <entry>the application name, e.g. "totem"</entry>
+            </row>
+            <row>
+              <entry>in</entry>
+              <entry>string</entry>
+              <entry>the localized reason to inhibit, e.g. "playing movie"</entry>
+            </row>
+            <row>
+              <entry>out</entry>
+              <entry>unsigned integer</entry>
+              <entry>the cookie</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+      <para>
+        A cookie is a random, unique, non-zero UINT32 used to identify the inhibit request.
+      </para>
+    </sect2>
+
+    <sect2 id="gs-method-UnInhibit">
+      <title>
+        <literal>UnInhibit</literal>
+      </title>
+      <para>
+        Cancel a previous call to Inhibit() identified by the cookie.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>in</entry>
+              <entry>unsigned integer</entry>
+              <entry>the cookie</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="gs-method-Throttle">
+      <title>
+        <literal>Throttle</literal>
+      </title>
+      <para>
+        Request that running themes while the screensaver is active be blocked
+        until UnThrottle is called or the calling process exits.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>in</entry>
+              <entry>string</entry>
+              <entry>the application name, e.g. "mate-power-manager"</entry>
+            </row>
+            <row>
+              <entry>in</entry>
+              <entry>string</entry>
+              <entry>the localized reason to inhibit, e.g. "on battery power"</entry>
+            </row>
+            <row>
+              <entry>out</entry>
+              <entry>unsigned integer</entry>
+              <entry>the cookie</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+      <para>
+        A cookie is a random, unique, non-zero UINT32 used to identify the throttle request.
+      </para>
+    </sect2>
+
+    <sect2 id="gs-method-UnThrottle">
+      <title>
+        <literal>UnThrottle</literal>
+      </title>
+      <para>
+        Cancel a previous call to Throttle() identified by the cookie.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>in</entry>
+              <entry>unsigned integer</entry>
+              <entry>the cookie</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="gs-method-SetActive">
+      <title>
+        <literal>SetActive</literal>
+      </title>
+      <para>
+        Request a change in the state of the screensaver.
+        Set to TRUE to request that the screensaver activate.
+        Active means that the screensaver has blanked the screen and may run a
+        graphical theme.  This does not necessary mean that the screen is locked.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>in</entry>
+              <entry>boolean</entry>
+              <entry>TRUE to request activation, FALSE to request deactivation</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="gs-method-GetActive">
+      <title>
+        <literal>GetActive</literal>
+      </title>
+      <para>
+        Returns the value of the current state of activity. See SetActive().
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>out</entry>
+              <entry>boolean</entry>
+              <entry>Activation state</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="gs-method-GetActiveTime">
+      <title>
+        <literal>GetActiveTime</literal>
+      </title>
+      <para>
+        Returns the number of seconds that the screensaver has been active.
+        Returns zero if the screensaver is not active.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>out</entry>
+              <entry>unsigned integer</entry>
+              <entry>Active time in seconds</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="gs-method-GetSessionIdle">
+      <title>
+        <literal>GetSessionIdle</literal>
+      </title>
+      <para>
+        Returns the value of the current state of session idleness.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>out</entry>
+              <entry>boolean</entry>
+              <entry>If the session is idle</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="gs-method-GetSessionIdleTime">
+      <title>
+        <literal>GetSessionIdleTime</literal>
+      </title>
+      <para>
+        Returns the number of seconds that the session has been idle.
+        Returns zero if the session is not idle.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>out</entry>
+              <entry>unsigned integer</entry>
+              <entry>Idle time in seconds</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+  </sect1>
+
+  <sect1 id="gs-signals">
+    <title>Signals</title>
+    <para>
+      These are the DBUS signals.
+    </para>
+
+    <sect2 id="gs-signal-ActiveChanged">
+      <title>
+        <literal>ActiveChanged</literal>
+      </title>
+      <para>
+        See method GetActive().
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>out</entry>
+              <entry>boolean</entry>
+              <entry>Returns the value of the current state of activity.</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="gs-signal-SessionIdleChanged">
+      <title>
+        <literal>SessionIdleChanged</literal>
+      </title>
+      <para>
+        See method GetActive().
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Direction</entry>
+              <entry>Type</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>out</entry>
+              <entry>boolean</entry>
+              <entry>Returns the value of the current state of activity.</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="gs-signal-AuthenticationRequestBegin">
+      <title>
+        <literal>AuthenticationRequestBegin</literal>
+      </title>
+      <para>
+        Emitted before an authentication request
+      </para>
+    </sect2>
+
+    <sect2 id="gs-signal-AuthenticationRequestEnd">
+      <title>
+        <literal>AuthenticationRequestEnd</literal>
+      </title>
+      <para>
+        Emitted after an authentication request
+      </para>
+    </sect2>
+  </sect1>
+
+  <sect1 id="gs-examples">
+    <title>Examples</title>
+    <para>
+      You can get the number of seconds the screensaver has been active by
+      running the following:
+    </para>
+    <screen>
+dbus-send --session \
+          --dest=org.mate.ScreenSaver \
+          --type=method_call \
+          --print-reply \
+          --reply-timeout=20000 \
+          /org/mate/ScreenSaver \
+          org.mate.ScreenSaver.GetSessionIdleTime
+    </screen>
+    <para>
+      You can activate the screensaver like so:
+    </para>
+    <screen>
+dbus-send --session \
+          --dest=org.mate.ScreenSaver \
+          --type=method_call \
+          --print-reply \
+          --reply-timeout=20000 \
+          /org/mate/ScreenSaver \
+          org.mate.ScreenSaver.SetActive \
+          boolean:true
+    </screen>
+
+    <para>
+      You can monitor screensaver changes:
+    </para>
+    <screen>
+dbus-monitor --session \
+          "type='signal',interface='org.mate.ScreenSaver'"
+    </screen>
+
+    <para>
+      Or watch for a specific screensaver signal:
+    </para>
+    <screen>
+dbus-monitor --session \
+          "type='signal',interface='org.mate.ScreenSaver',member='SessionIdleChanged'"
+    </screen>
+  </sect1>
+
+</chapter>
diff --git a/doc/docbook.css b/doc/docbook.css
new file mode 100644
index 0000000..9a0e72a
--- /dev/null
+++ b/doc/docbook.css
@@ -0,0 +1,18 @@
+body {
+	font-family: luxi sans,sans-serif;
+}
+
+table {
+	border: solid 1pt; 
+	border-collapse: collapse;
+}
+
+th {
+	background: #eeeeee; 
+	padding: 5px;
+}
+
+td {
+	border: solid 1pt;
+	padding: 5px;
+}
diff --git a/doc/mate-screensaver.xml.in b/doc/mate-screensaver.xml.in
new file mode 100644
index 0000000..51a747a
--- /dev/null
+++ b/doc/mate-screensaver.xml.in
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+
+<book id="index">
+  <bookinfo>
+    <title>MATE Screensaver @VERSION@ Documentation</title>
+    <releaseinfo>Version @VERSION@</releaseinfo>
+    <date>6 June, 2006</date>
+    <authorgroup>
+      <author>
+        <firstname>William Jon</firstname>
+        <surname>McCann</surname>
+        <affiliation>
+          <address>
+            <email>mccann at jhu.edu</email>
+          </address>
+        </affiliation>
+      </author>
+    </authorgroup>
+  </bookinfo>
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dbus-interface.xml" />
+
+</book>
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644
index 0000000..9e93f1c
--- /dev/null
+++ b/po/ChangeLog
@@ -0,0 +1,2622 @@
+2009-04-18  Funda Wang  <fundawang at gmail.com>
+
+	* zh_CN.po: Updated zh_CN translation.
+
+2009-04-14  Reşat SABIQ <tilde.birlik at gmail.com>
+
+        * crh.po: Updated Crimean Tatar (Crimean Turkish) translation.
+
+2009-04-06  Reşat SABIQ <tilde.birlik at gmail.com>
+
+	* LINGUAS: crh
+	* crh.po: Added Crimean Tatar (Crimean Turkish) translation.
+
+2009-04-05  Takeshi AIHANA <takeshi.aihana at gmail.com>
+
+	* ja.po: Fixed #576532. 
+
+2009-03-24 Shankar Prasad  <svenkate at redhat.com>
+
+        * kn.po: Updated Kannada Translation.
+
+2009-03-18  Djihed Afifi <djihed at gmail.com>
+
+	* ar.po: Updated Arabic translation by Djihed Afifi.
+
+2009-03-16  Nickolay V. Shmyrev  <nshmyrev at yandex.ru>
+
+	* ru.po: Updated Russian translation.
+
+2009-03-16  Ignacio Casal Quinteiro  <icq at gnome.org>
+
+	 * gl.po: Updated Galician translation by Suso Baleato.
+
+2009-03-14  Praveen Arimbrathodiyil <pravi.a at gmail.com>
+
+	* ml.po: Updated Malayalam Translation by Abhshek Jacob.
+
+2009-03-14  Rajesh Ranjan <rranjan at redhat.com>
+
+	* hi.po: Updated Hindi Translation.
+
+2009-03-14 Kenneth Nielsen <k.nielsen81 at gmail.com>
+
+	* da.po: Updated Danish translation by Ask H. Larsen
+
+2009-03-13  Kostas Papadimas <pkst at gnome.org>
+
+	* el.po: Updated Greek Translation by Jennie Petoumenou.
+
+2009-03-13  Sandeep Shedmake  <sshedmak at redhat.com>
+
+	* mr.po: Updated Marathi Translations.
+
+2009-03-11  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2009-03-10  Jorge Gonzalez  <jorgegonz at svn.gnome.org>
+
+	* es.po: Updated Spanish translation
+
+2009-03-11  Manoj Kumar Giri  <mgiri at redhat.com>
+
+	* or.po: Updated Oriya Translation.
+
+2009-03-10  I. Felix <ifelix at redhat.com>
+
+	* ta.po:  Tamil Translation updated
+
+2009-03-08  Petr Kovar  <pknbe at volny.cz>
+
+	* cs.po: Updated Czech translation.
+
+2009-03-04  Luca Ferretti  <elle.uca at libero.it>
+
+	* it.po: Updated Italian translation.
+
+2009-03-03  Runa Bhattacharjee  <runab at redhat.com>
+
+	* bn_IN.po: Updated Bengali India Translation.
+
+2009-03-02  Manoj Kumar Giri  <mgiri at redhat.com>
+
+	* or.po: Updated Oriya Translation.
+
+2009-03-02  Sweta Kothari  <swkothar at redhat.com>
+
+	* gu.po: Committed Gujarati Translation.
+
+2009-02-28  Yair Hershkovitz  <yairhr at gmail.com> 
+
+	* he.po: Updated Hebrew translation.
+
+2009-02-25  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2009-02-25  Takeshi AIHANA <takeshi.aihana at gmail.com>
+
+	* ja.po: Updated Japanese translation.
+
+2009-02-23  Philip Withnall  <philip at tecnocode.co.uk>
+
+	* en_GB.po: Updated British English translation.
+
+2009-02-23  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated.
+
+2009-02-21  Claude Paroz  <claude at 2xlibre.net>
+
+	* fr.po: Updated French translation.
+
+2009-02-21  Baris Cicek  <baris at teamforce.name.tr>
+
+	* tr.po: Updated Turkish translation
+
+2009-02-21  Christian Kirbach  <Christian.Kirbach at googlemail.com>
+
+	* de.po: Updated German translation by Wolfgang Stöggl.
+
+2009-02-17  Gil Forcada  <gforcada at gnome.org>
+
+	* ca.po: Updated Catalan translation.
+
+2009-02-17  Chao-Hsiung Liao  <j_h_liau at yahoo.com.tw>
+
+	* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
+	* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
+
+2009-02-15  Duarte Loreto <happyguy_pt at hotmail.com>
+
+	* pt.po: Updated Portuguese translation.
+
+2009-02-14  Jorge Gonzalez  <jorgegonz at svn.gnome.org>
+
+	* es.po: Updated Spanish translation, fixes bug #569457
+
+2009-02-14  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated.
+
+2009-02-14  Wouter Bolsterlee  <wbolster at svn.gnome.org>
+
+	* nl.po: Updated Dutch translation by Wouter Bolsterlee.
+
+2009-02-11  Inaki Larranaga Murgoitio  <dooteo at euskalgnu.org>
+
+	* eu.po: Updated Basque translation.
+
+2009-02-11  Gil Forcada  <gforcada at gnome.org>
+
+	* ast.po: Added Asturian translation on behalf of Mikel González.
+
+2009-02-11  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Alexander Shopov <ash at contact.bg>
+
+2009-02-11  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+>>>>>>> .r1619
+2009-02-06  Chao-Hsiung Liao  <j_h_liau at yahoo.com.tw>
+
+	* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
+	* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
+
+2009-02-06   Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2009-02-05  Sweta Kothari  <swkothar at redhat.com>
+
+	* gu.po: Committed Gujarati Translation.
+
+2009-02-03  Tomasz Dominikowski  <tdominikowski at aviary.pl>
+
+	* pl.po: Updated Polish translation
+
+2009-02-02  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2009-01-28  Changwoo Ryu  <cwryu at debian.org>
+
+	* ko.po: Updated Korean translation.
+
+2009-01-27  Ilkka Tuohela <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2009-01-26  Jonh Wendell <jwendell at gnome.org>
+
+	* pt_BR.po: Updated translation by André Gondim.
+
+2009-01-25  Raivis Dejus  <orvils at gmail.com>
+
+	* lv.po: Updated Latvian translation.
+
+2009-01-22  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2009-01-20  Jorge Gonzalez  <jorgegonz at svn.gnome.org>  
+
+	* es.po: Updated Spanish translation.   
+
+2008-10-23  Andre Klapper  <a9016009 at gmx.de>
+
+        * LINGUAS: Added ast.
+        * ast.po: Added Asturian translation on behalf of Mikel González.
+
+2008-10-19  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Djihed Afifi.
+
+2008-10-11  Ihar Hrachyshka <booxter at lacinka.org>
+
+	* be at latin.po: Updated Belarusian Latin translation by Ihar Hračyška.
+
+2008-09-27  Leonardo Ferreira Fontenelle  <leonardof at gnome.org>
+
+	* pt_BR.po: Removed obsolete translations because of bug #549898.
+
+2008-09-23  Pema Geyleg  <pema.geyleg at gmail.com>
+
+        * dz.po: Updated Dzongkha Translation
+
+2008-09-21 Kenneth Nielsen <k.nielsen81 at gmail.com>
+
+	* da.po: Updated Danish translation by Kenneth Nielsen
+
+2008-09-21  Wadim Dziedzic  <wdziedzic at aviary.pl>
+
+	* pl.po: Updated Polish translation
+
+2008-09-20  Mugurel Tudor  <mugurelu at mate.ro>
+
+	* ro.po: Updated Romanian translation by
+	Mişu Moldovan <dumol at mate.ro>
+
+2008-09-20  Goran Rakić  <grakic at devbase.net>
+
+	* sr.po, sr at latin.po: Updated Serbian Translation.
+
+2008-09-18  Runa Bhattacharjee  <runab at redhat.com>
+
+	* bn_IN.po: Updated Bengali India Translation
+
+2008-09-18  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Djihed Afifi.
+
+2008-09-17  I. Felix <ifelix at redhat.com>
+
+	* ta.po:  Tamil Translation updated
+
+2008-09-16  Gil Forcada  <gforcada at gnome.org>
+
+	* ca.po: Updated Catalan translation.
+
+2008-09-16 Shankar Prasad  <svenkate at redhat.com>
+
+	* kn.po: Updated Kannada Translation.
+
+2008-09-15  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated.
+
+2008-09-15  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Khaled Hosny.
+
+2008-09-14  Priit Laes  <plaes at svn dot mate dot org>
+
+	* et.po: Translation updated by Ivar Smolin
+
+2008-09-13  Leonardo Ferreira Fontenelle  <leonardof at gnome.org>
+
+	* pt_BR.po: Terminology in Brazilian Portuguese translation.
+
+2008-09-13  Praveen Arimbrathodiyil <pravi.a at gmail.com>
+
+	* ml.po: Malayalam translation updated.
+
+2008-09-13  Baris Cicek  <baris at teamforce.name.tr>
+
+	* tr.po: Updated Turkish Translation.
+
+2008-09-12  Sandeep Shedmake  <sshedmak at redhat.com>
+
+	* mr.po: Updated Marathi translations.
+
+2008-09-10  Shankar Prasad  <svenkate at redhat.com>
+
+        * kn.po: Added Kannada translation
+        * LINGUAS: Added Kannada(kn) to the list of Languages
+
+2008-09-10  Luca Ferretti  <elle.uca at libero.it>
+
+	* it.po: Updated Italian translation.
+
+2008-09-09  Robert Sedak  <robert.sedak at sk.t-com.hr>
+
+	* hr.po: Added Croatian translation.
+	* LINGUAS: Added hr
+
+2008-09-08  Changwoo Ryu  <cwryu at debian.org>
+
+	* ko.po: Updated Korean translation.
+
+2008-09-07  Wouter Bolsterlee  <wbolster at svn.gnome.org>
+
+	* nl.po: Updated Dutch translation by Wouter Bolsterlee.
+
+2008-09-06  Philip Withnall  <philip at tecnocode.co.uk>
+
+	* en_GB.po: Updated British English translation.
+
+2008-09-05  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Alexander Shopov <ash at contact.bg>
+
+2008-09-01  Hendrik Richter  <hendrikr at gnome.org>
+
+	* de.po: Updated German translation.
+
+2008-08-30  Seán de Búrca  <sdeburca at svn.gnome.org>
+
+	* ga.po: Updated Irish translation.
+
+2008-08-29  Claude Paroz  <claude at 2xlibre.net>
+
+	* fr.po: Updated French translation.
+
+2008-08-29  Arangel Angov <arangel at linux.net.mk>
+
+	* mk.po: Updated Macedonian translation.
+
+2008-08-28  Petr Kovar  <pknbe at volny.cz>
+
+	* cs.po: Updated Czech translation.
+
+2008-08-25  Goran Rakic  <grakic at devbase.net>
+
+	* LINGUAS, sr at latin.po, sr at Latn.po: Conversion from sr at Latn to sr at latin.
+
+2008-08-24  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2008-08-22  Inaki Larranaga Murgoitio  <dooteo at euskalgnu.org>
+
+	* eu.po: Updated Basque translation.
+
+2008-08-20  Takeshi AIHANA <takeshi.aihana at gmail.com>
+
+	* ja.po: Updated Japanese translation.
+
+2008-08-12  Duarte Loreto <happyguy_pt at hotmail.com>
+
+	* pt.po: Updated Portuguese translation.
+
+2008-08-11  Ilkka Tuohela <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2008-08-07  Og Maciel <ogmaciel at gnome.org>
+
+	* pt_BR.po: Updated translation by Vladimir Melo.
+
+2008-08-06  Yair Hershkovitz  <yairhr at gmail.com> 
+
+	* he.po: Updated Hebrew translation.
+
+2008-08-6  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Khaled Hosny.
+
+2008-08-05  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2008-08-04: Sweta Kothari  <swkothar at redhat.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2008-08-02  Leonardo Ferreira Fontenelle  <leonardof at gnome.org>
+
+	* pt_BR.po: Terminology fixes by Vladimir Melo.
+
+2008-07-29  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Khaled Hosny.
+
+2008-07-10  Matej Urbančič  <mateju at svn.gnome.org>
+
+	* sl.po: Updated Slovenian translation.
+
+2008-07-02  Yannig Marchegay <yannig at marchegay.org>
+
+	* oc.po: Updated Occitan translation.
+
+2008-06-30  Yair Hershkovitz  <yairhr at gmail.com> 
+
+	* he.po: Updated Hebrew translation.
+
+2008-06-11  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Khaled Hosny.
+
+2008-06-11  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2008-06-05  Priit Laes  <plaes at svn dot mate dot org>
+
+	* et.po: Translation updated by Ivar Smolin
+
+2008-06-01  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2008-05-25  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2008-05-23  Jorge Gonzalez  <jorgegonz at svn.gnome.org>  
+
+	* es.po: Updated Spanish translation
+
+2008-05-22  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Khaled Hosny.
+
+2008-05-19  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Khaled Hosny.
+
+2008-05-14  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2008-05-07  Andre Klapper  <a9016009 at gmx.de>
+
+	* LINGUAS:
+	* is.po: Added Icelandic Translation on behalf of Anna 
+	Ármannsdóttir <annajonna at gmail.com>
+
+2008-04-21  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Yavor Doganov <yavor at gnu.org>
+
+2008-04-04  Eskild Hustvedt  <eskildh at gnome.org>
+
+	* nn.po: Updated Norwegian Nynorsk translation
+
+2008-03-16  Kostas Papadimas <pkst at gnome.org>
+
+	* el.po: Updated  Greek translation.
+
+2008-03-12  Sunil Mohan Adapa  <sunilmohan at fsf.org.in>
+
+	* te.po: Updated Telugu traslation done by
+	Krishna Babu K <kkrothap at redhat.com>.
+
+2008-03-11  Andre Klapper  <a9016009 at gmx.de>
+
+	* LINGUAS:
+	* ps.po:
+	Added Pashto translation on behalf of Zabeeh Khan (bug #521378).
+
+2008-03-10  Marcel Telka  <marcel at telka.sk>
+
+	* sk.po: Updated Slovak translation.
+
+2008-03-10  Alexander Nyakhaychyk  <nab at mail.by>
+
+	* be.po: Added Belarusian Translation.
+	* LINGUAS: Added Belarusian Translation.
+
+2008-03-10 Baris Cicek <baris at teamforce.name.tr>
+
+	* tr.po: Updated Turkish translation from Deniz Kocak
+	
+2008-03-09  Kenneth Nielsen  <k.nielsen81 at gmail.com>
+
+	* da.po: Updated Danish translation
+
+2008-03-09  Runa Bhattacharjee <runab at fedoraproject.org>
+
+	* bn_IN.po: Updated Bengali India Translation by Sankarshan Mukhopadhyay
+
+2008-03-09  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated
+
+2008-03-07  Mugurel Tudor  <mugurelu at mate.ro>
+
+	*ro.po: Updated Romanian translation
+	by Mişu Moldovan <dumol at mate.ro>
+
+2008-03-07 Maxim Dziumanenko <dziumanenko at gmail.com>
+
+	* uk.po: Update Ukrainian translation.
+
+2008-03-05  Rahul Bhalerao <b.rahul.pm at gmail.com>
+
+	* mr.po: Added Marathi Translations by Sandeep Shedmake.
+	* LINGUAS: Added an entry for Marathi (mr).
+
+2008-03-03  Jorge Gonzalez  <jorgegonz at svn.gnome.org>
+
+	* es.po: Updated Spanish translation
+
+2008-03-03  Philip Withnall  <pwithnall at svn.gnome.org>
+
+	* en_GB.po: Updated British English translation.
+
+2008-03-02  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2008-02-28  Takeshi AIHANA <takeshi.aihana at gmail.com>
+
+	* ja.po: Updated Japanese translation.
+
+2008-02-26  Changwoo Ryu  <cwryu at debian.org>
+
+	* ko.po: Updated Korean translation.
+
+2008-02-24  Ilkka Tuohela <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation (bug #518255).
+
+2008-02-23  Yair Hershkovitz  <yairhr at gmail.com> 
+
+	* he.po: Updated Hebrew translation.
+
+2008-02-22  Claude Paroz  <claude at 2xlibre.net>
+
+	* fr.po: Updated French translation by Robert-André Mauchin.
+
+2008-02-22 Arangel Angov <arangel at linux.net.mk>
+
+	* mk.po: Updated Macedonian translation.
+
+2008-02-19  Priit Laes  <plaes at svn dot mate dot org>
+
+	* et.po: Translation updated by Ivar Smolin
+
+2008-02-17  Ihar Hrachyshka <booxter at lacinka.org>
+
+	* be at latin.po: Updated Belarusian Latin translation.
+
+2008-02-16  Gil Forcada  <gforcada at svn.gnome.org>
+
+	* ca.po: Updated Catalan translation.
+
+2008-02-14  Priit Laes  <plaes at svn dot mate dot org>
+
+	* et.po: Translation updated by Ivar Smolin
+
+2008-02-14  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2008-02-14  Pawan Chitrakar <chautari at gmail.com>
+
+	* ne.po: Updated Nepali Translation.
+
+2008-02-13  Ilkka Tuohela <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2008-02-11  Petr Kovar  <pknbe at volny.cz>
+
+	* cs.po: Updated Czech translation.
+
+2008-02-09  Duarte Loreto <happyguy_pt at hotmail.com>
+
+	* pt.po: Updated Portuguese translation.
+
+2008-02-09  Andre Klapper  <a9016009 at gmx.de>
+
+	* de.po: Updated German translation.
+
+2008-02-08  Inaki Larranaga Murgoitio  <dooteo at euskalgnu.org>
+
+	* eu.po: Updated Basque translation.
+
+2008-02-08  Chao-Hsiung Liao  <j_h_liau at yahoo.com.tw>
+
+	* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
+	* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
+
+2008-02-07  Artur Flinta  <aflinta at svn.gnome.org>
+
+	* pl.po: Updated Polish translation by MATE PL Team.
+
+2008-02-6  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Khaled Hosny.
+
+2008-02-05  Amitakhya Phukan <amitakhya at svn.gnome.org>
+
+	* LINGUAS: Added as.
+	* as.po: Updated assamese translations.
+
+2008-02-04  Wouter Bolsterlee  <wbolster at svn.gnome.org>
+
+	* nl.po: Dutch translation updated by Wouter Bolsterlee.
+
+2008-02-02  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2008-02-02  Yannig Marchegay <yannig at marchegay.org>
+
+	* oc.po: Updated Occitan translation.
+
+2008-02-02  Leonardo Ferreira Fontenelle  <leonardof at svn.gnome.org>
+
+	* pt_BR.po: Brazilian Portuguese translation updated by Vladimir Melo.
+
+2008-02-02  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2008-02-01  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2008-01-31  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Anas Husseini.
+
+2008-01-30  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES.in: Update files.
+
+2008-01-29  Jorge Gonzalez  <jorgegonz at svn.gnome.org>
+
+	* es.po: Updated Spanish translation
+
+2008-01-29  Luca Ferretti  <elle.uca at libero.it>
+
+	* POTIFILES.in: added new file.
+	* it.po: Updated Italian translation.
+
+2008-01-21  Gil Forcada  <gforcada at gnome.org>
+
+	* ca.po: Small fix thanks to David Planella.
+
+2008-01-16  Yair Hershkovitz  <yairhr at gmail.com>
+
+	* he.po: Updated Hebrew translation from Rosseta.
+
+2008-01-09  Inaki Larranaga Murgoitio  <dooteo at euskalgnu.org>
+
+	* eu.po: Updated Basque translation.
+
+2007-12-31  Yannig Marchegay <yannig at marchegay.org>
+
+	* oc.po: Updated Occitan translation.
+
+2007-12-20  Seán de Búrca  <sdeburca at svn.gnome.org>
+
+	* ga.po: Added Irish translation.
+	* LINGUAS: Added Irish.
+
+2007-12-13  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation
+	from Eskild.
+
+2007-12-13  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nn.po: Added Norwegian nynorsk translation from
+	Eskild Hustvedt <eskild at zerodogg org>
+
+2007-12-08  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Czech Translation updated by Petr Kovar.
+
+2007-12-01  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2007-11-25  Nickolay V. Shmyrev  <nshmyrev at yandex.ru>
+
+	* ru.po: Updated Russian translation
+	by Vasiliy Faronov <qvvx at yandex.ru>
+
+2007-11-14  Matej Urbančič  <mateju at svn.gnome.org>
+
+	* sl.po: Updated Slovenian translation.
+
+2007-10-31  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2007-10-23  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Anas Husseini.
+
+2007-10-21  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Anas Husseini.
+
+2007-10-21  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Anas Husseini.
+
+2007-10-15  Matej Urbančič  <mateju at svn.gnome.org>
+
+	* sl.po: Updated Slovenian translation.
+
+2007-10-15  Yair Hershkovitz  <yairhr at gmail.com>
+
+	* he.po: Updated Hebrew translation.
+
+2007-09-30  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Alexander Shopov <ash at contact.bg>
+
+2007-09-24  Changwoo Ryu  <cwryu at debian.org>
+
+	* ko.po: Updated Korean translation.
+
+2007-09-18  Goran Rakić  <grakic at devbase.net>
+
+	* sr.po, sr at Latn.po: Updated Serbian translation (by Miloš Popović)
+
+2007-09-17  Baris Cicek <baris at teamforce.name.tr>
+
+	* tr.po: Updated Turkish translation from Deniz Kocak
+
+2007-09-17  Takeshi AIHANA <takeshi.aihana at gmail.com>
+
+	* ja.po: Fixed wrong translation.
+
+2007-09-17  Danishka Navin <danishka at gnome.org>
+
+	* si.po:  Sinhala Translation updated by Danishka Navin
+
+2007-09-16  Nickolay V. Shmyrev  <nshmyrev at yandex.ru>
+
+	* ru.po: Updated Russian translation.
+
+2007-09-16  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2007-09-15  Andre Klapper  <a9016009 at gmx.de>
+
+	* sk.po: Updated Slovak translation on behalf of Peter Tuharsky
+	<tuharsky at misbb.sk>.
+
+2007-09-15  Mugurel Tudor  <mugurelu at mate.ro>
+
+	* LINGUAS: added ro
+	* ro.po: Added Romanian translation
+	by Alexandru Szasz <alexxed at gmail.com>
+
+2007-09-13  Djihed Afifi <djihed at gmail.com> 
+
+	* ar.po: Updated Arabic Translation by Anas Husseini.
+
+2007-09-12 Maxim Dziumanenko <dziumanenko at gmail.com>
+
+	* uk.po: Update Ukrainian translation.
+
+2007-09-09  Nikos Charonitakis  <nikosx at gmail.com>
+	
+	* el.po: Updated Greek translation.
+
+2007-09-09  Kenneth Nielsen  <k.nielsen81 at gmail.com>
+
+	* da.po: Updated Danish translation
+
+2007-09-06  Wouter Bolsterlee  <wbolster at svn.gnome.org>
+
+	* nl.po: Translation updated by Wouter Bolsterlee.
+
+2007-09-06  Stéphane Raimbault  <stephane.raimbault at gmail.com>
+
+	* fr.po: Updated French translation by Jonathan Ernst and Stéphane
+	Raimbault.
+
+2007-09-05  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2007-09-05  Ani Peter <peter.ani at gmail.com>
+
+	* ml.po: Updated Malayalam Translation
+
+2007-09-04  Luca Ferretti  <elle.uca at libero.it>
+
+	* it.po: Updated Italian translation.
+
+2007-09-04  Jovan Naumovski  <jovan at lugola.net>
+
+	 * mk.po: Updated Macedonian translation.
+
+2007-09-04 Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated.
+
+2007-09-03  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2007-09-03  Priit Laes  <plaes at svn.gnome.org>
+
+	* et.po: Estonian translation updates by Ivar Smolin
+
+2007-09-03  Duarte Loreto <happyguy_pt at hotmail.com>
+
+	* pt.po: Updated Portuguese translation.
+
+2007-09-01  Gil Forcada  <gforcada at svn.gnome.org>
+
+	* ca.po: Updated catalan translation.
+
+2007-08-31  Ani Peter <peter.ani at gmail.com>
+
+	* ml.po: Updated Malayalam Translation
+
+2007-08-29  I. Felix <ifelix at svn.gnome.org>
+
+	* ta.po:  Tamil Translation updated by Tirumurthi Vasudevan
+
+2007-08-27  Changwoo Ryu  <cwryu at debian.org>
+
+	* ko.po: Updated Korean translation by Young-Ho Cha.
+
+2007-08-23  Artur Flinta  <aflinta at svn.gnome.org>
+
+	* pl.po: Updated Polish translation by MATE PL Team.
+
+2007-08-23  Sunil Mohan Adapa  <sunil at atc.tcs.com>
+
+	* te.po: Added Telugu translation done by
+	Srinivas Chary <srinu.kolpur at gmail.com>.
+
+2007-08-17  Ani Peter <peter.ani at gmail.com>
+
+	* ml.po: Updated Malayalam TRanslation
+
+2007-08-16  Priit Laes  <plaes at svn.gnome.org>
+
+	* et.po: Estonian translation updates by Ivar Smolin <okul at linux.ee>
+
+2007-08-16  Priit Laes  <plaes at svn.gnome.org>
+
+	* et.po: Estonian translation update by Ivar Smolin.
+
+2007-08-15  Hendrik Richter  <hendrikr at gnome.org>
+
+	* de.po: Updated German translation.
+
+2007-08-13  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2007-08-12  Takeshi AIHANA <takeshi.aihana at gmail.com>
+
+	* ja.po: Updated Japanese translation.
+
+2007-08-11  Leonardo Ferreira Fontenelle  <leonardof at svn.gnome.org>
+
+	* pt_BR.po: Brazilian Portuguese translation updated by Vladimir Melo
+	<vladimirmelo at foresightlinux.org>.
+
+2007-08-11  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2007-08-06  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2007-08-04  Inaki Larranaga Murgoitio  <dooteo at zundan.com>
+
+	* eu.po: Updated Basque translation
+
+2007-08-03  Jorge Gonzalez <jorgegonz at svn.gnome.org>
+
+	* es.po: Updated Spanish translation
+
+2007-08-03  Ihar Hrachyshka <ihar.hrachyshka at gmail.com>
+
+	* be at latin.po: Updated Belarusian Latin translation.
+
+2007-08-03  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2007-08-01  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2007-07-31  Jorge Gonzalez <jorgegonz at svn.gnome.org>
+
+	* es.po: Updated Spanish translation
+
+2007-07-25  Andre Klapper  <a9016009 at gmx.de>
+
+	* de.po: updated german translation.
+
+2007-07-24  Priit Laes  <plaes at svn.gnome.org>
+
+	* et.po: Estonian translation update by Ivar Smolin.
+
+2007-07-21  Wouter Bolsterlee  <wbolster at svn.gnome.org>
+
+	* nl.po: Translation updated by Wouter Bolsterlee.
+
+2007-07-17  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2007-07-17  Takeshi AIHANA <takeshi.aihana at gmail.com>
+
+	* ja.po: Updated Japanese translation.
+
+2007-07-16  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2007-07-13  Priit Laes  <plaes at svn.gnome.org>
+
+	* et.po: Estonian translation update by Ivar Smolin.
+
+2007-07-13  I. Felix <ifelix at svn.gnome.org>
+
+	* ta.po:  Tamil Translation updated by Tirumurthi Vasudevan
+
+2007-07-11 Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated.
+
+2007-07-10  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2007-07-06  Jorge Gonzalez <jorgegonz at svn.gnome.org>
+
+	* es.po: Updated Spanish translation
+
+2007-07-01  Nguyễn Thái Ngọc Duy <pclouds at gmail.com>
+
+	* vi.po: Updated Vietnamese translation.
+
+2007-06-29  Artur Flinta  <aflinta at svn.gnome.org>
+
+	* pl.po: Updated Polish translation by MATE PL Team.
+
+2007-06-27  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2007-06-22  I. Felix <ifelix at svn.gnome.org>
+
+	* si.po:  Sinhala Translation updated by Danishka Navin
+	* LINGUAS: Added Sinhala (si) to The List of Languages.
+
+2007-06-21  I Felix  <ifelix25 at gmail.com>
+
+	* ta.po: Updated Tamil Translation.
+
+2007-06-13  Pema Geyleg <pema.geyleg at gmail.com>
+
+	* dz.po: Updated dzongkha translation.
+
+2007-05-31  Priit Laes  <plaes at svn.gnome.org>
+
+	* et.po: Updated Estonian translation by Ivar Smolin <okul at linux.ee>.
+
+2007-05-30  Priit Laes  <plaes at svn.gnome.org>
+
+	* et.po: Updated Estonian translation by Ivar Smolin <okul at linux.ee>.
+
+2007-05-29  Ihar Hrachyshka <iharh at gnome.org>
+
+	* be at latin.po: Added Belarusian Latin translation.
+
+2007-05-18  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2007-05-08  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2007-05-04  Jorge Gonzalez <jorgegonz at svn.gnome.org>
+
+	* es.po: Updated Spanish translation
+
+2007-04-25  David Lodge <dave at cirt.net>
+
+	* en_GB.po: Updated British English translation
+
+2007-04-24  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2007-04-05  Raivis Dejus <orvils at gmail.com>
+
+	* lv.po: Updated Latvian Translation.
+
+2007-04-02  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Updated Catalan translation.
+
+2007-03-31  Inaki Larranaga Murgoitio  <dooteo at euskalgnu.org>
+
+	* eu.po: Updated Basque translation.
+
+2007-03-31  Funda Wang  <fundawang at gmail.com>
+
+	* zh_CN.po: Updated Simplified Chinese translation from Yang Zhang.
+
+2007-03-27  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+	* POTFILES.in: Updated.
+
+2007-03-22  Peter Bach  <bach.peter at gmail.com>
+
+	* da.po: Updated Danish translation.
+
+2007-03-18  Matic Zgur  <mr.zgur at gmail.com>
+
+	* sl.po: Updated Slovenian translation.
+
+2007-03-10  Nickolay V. Shmyrev  <nshmyrev at yandex.ru>
+
+	* ru.po: Updated Russian translation.
+
+2007-03-06  Pema Geyleg  <pema.geyleg at gmail.com>
+
+	* dz.po: Updated Dzongkha Translation.
+
+2007-03-06  Jovan Naumovski  <jovan at lugola.net>
+
+	 * mk.po: Updated Macedonian translation.
+
+2007-03-05  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2007-03-04  Luca Ferretti  <elle.uca at libero.it>
+
+	* it.po: Updated Italian translation.
+
+2007-03-03  Yair Hershkovitz  <yairhr at gmail.com>
+
+	* he.po: Updated Hebrew translation.
+
+2007-02-28  Artur Flinta  <aflinta at svn.gnome.org>
+
+	* pl.po: Updated Polish translation by MATE PL Team.
+
+2007-02-28  Djihed Afifi <djihed at gmail.com>
+
+	* ar.po: Updated Arabic Translation by Khaled Hosny.
+
+2007-02-27  Abel Cheung  <abelcheung at gmail.com>
+
+	* POTFILES.in: Some desktop files have been renamed.
+
+2007-02-27  Abel Cheung  <abelcheung at gmail.com>
+
+	* zh_HK.po, zh_TW.po: Updated traditional Chinese translation by
+	Woodman Tuen <wmtuen at gmail.com>.
+
+2007-02-27  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2007-02-25  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Alexander Shopov <ash at contact.bg>
+
+2007-02-24  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated.
+
+2007-02-25  Changwoo Ryu  <cwryu at debian.org>
+
+	* ko.po: Updated Korean translation.
+
+2007-02-22  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2007-02-21  Maxim Dziumanenko <dziumanenko at gmail.com>
+
+	* uk.po: Update Ukrainian translation.
+
+2007-02-20  Artur Flinta  <aflinta at cvs.gnome.org>
+
+	* pl.po: Updated Polish translation by MATE PL Team.
+
+2007-02-19  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2007-02-18  Takeshi AIHANA <takeshi.aihana at gmail.com>
+
+	* ja.po: Updated Japanese translation.
+
+2007-02-17  Hendrik Brandt  <heb at mate-de.org>
+
+	* de.op: Updated German translation.
+
+2007-02-17  David Lodge <dave at cirt.net>
+
+	* POTFILES.in: Changed a couple of the savers to use .in.in instead of .in so that the pot file would generate
+
+2007-02-15  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES.in: Remove FUSA.
+
+2007-02-14  Duarte Loreto <happyguy_pt at hotmail.com>
+
+	* pt.po: Updated Portuguese translation.
+
+2007-02-10  Lasse Bang Mikkelsen  <lbm at fatalerror.dk>
+
+	* da.po: Updated Danish translation by Kenneth Nielsen <k.nielsen at gmail.com>
+
+2007-02-06  Leonardo Ferreira Fontenelle  <leonardof at svn.gnome.org>
+
+	* pt_BR.po: Updated Brazilian Portuguese translation by Og Maciel
+	<ogmaciel at ubuntu.com>.
+
+2007-02-02  Wouter Bolsterlee  <wbolster at svn.gnome.org>
+
+	* nl.po: Translation updated by Wouter Bolsterlee.
+
+2007-01-31  Stéphane Raimbault  <stephane.raimbault at gmail.com>
+
+	* fr.po: Updated French translation by Robert-André Mauchin and
+	Stéphane Raimbault.
+
+2007-01-30  Wouter Bolsterlee  <wbolster at svn.gnome.org>
+
+	* nl.po: Translation updated by Wouter Bolsterlee.
+
+2007-01-30  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES.in: Removed deleted file
+
+2007-01-26  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Updated Catalan translation.
+
+2007-01-12  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Fix a typo. Thanks to Bjarte Lund for saving me from
+	some embarrassment. Closes bug #395567.
+
+2007-01-11  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Updated Catalan translation by
+	Gil Forcada <gilforcada at guifi.net>.
+
+2007-01-07  Priit Laes  <plaes at svn.gnome.org>
+
+	* et.po: Estonian translation update by Ivar Smolin.
+
+2007-01-06  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2007-01-01  David Lodge <dave at cirt.net>
+
+	* en_GB.po: Updated English (British) translation
+
+2006-12-27  Djihed Afifi <djihed at gmail.com>
+
+	* ar.po: Updated Arabic Translation.
+
+2006-12-24  Djihed Afifi <djihed at gmail.com>
+
+	* ar.po: Updated Arabic Translation.
+
+2006-12-20  Raivis Dejus <orvils at gmail.com>
+
+	* lv.po: Updated Latvian Translation.
+
+2006-12-18  Djihed Afifi <djihed at gmail.com>
+
+	* ar.po: Added Arabic Translation.
+	* LINGUAS: Added ar.
+
+2006-12-14  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-12-11  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-12-11  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2006-12-07  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-11-19  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2006-11-08  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-11-01  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-10-26  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2006-10-21  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-10-20  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-10-20  Jovan Naumovski  <jovan at lugola.net>
+
+	* mk.po: Updated Macedonian translation.
+
+2006-10-19  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2006-10-19  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-10-17  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2006-10-13  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-10-13  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Updated Catalan translation.
+
+2006-10-09  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2006-10-08  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-10-07  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-10-05  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-10-04  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-10-03  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Czech translation update.
+
+2006-10-02  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-09-27  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-09-25  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-09-14  Luca Ferretti  <elle.uca at libero.it>
+
+	* it.po: Updated Italian translation.
+
+2006-09-14  Satoru SATOH <ss at mate.gr.jp>
+
+	* ja.po: Fixed up mismatch between nplurals and number of
+	plural forms some messages have.
+
+2006-09-10  David Lodge <dave at cirt.net>
+
+	* en_GB.po: Updated English (British) translation.
+
+2006-09-05  Lucas Rocha  <lucasr at gnome.org>
+
+	* pt_BR.po: Updated Brazilian Portuguese translation
+	by Leonardo Ferreira Fontenelle <leo.fontenelle at gmail.com> and
+	Henrique Grolli Bassotto <henrique.grolli at gmail.com>
+
+2006-09-04  Baris Cicek <baris at teamforce.name.tr>
+
+	* tr.po: Added Turkish Translation from Deniz Kocak
+	* LINGUAS: Added entry for "tr" (turkish);
+
+2006-09-04  Roozbeh Pournader  <roozbeh at farsiweb.info>
+
+	* fa.po: Added Persian translation by Elnaz Sarbar and Meelad
+	  Zakaria.
+	* LINGUAS: Added entry for "fa" (Persian).
+
+2006-09-04  Abel Cheung  <abel at oaka.org>
+
+	* zh_HK.po: Updated Chinese (Hong Kong) translation from
+	  Ching-Hung Lin <billlin at wshlab2.ee.kuas.edu.tw>.
+	* zh_TW.po: Updated Chinese (Taiwan) translation from
+	  Ching-Hung Lin <billlin at wshlab2.ee.kuas.edu.tw>.
+
+2006-09-03 Subhransu Behera  <arya_subhransu at yahoo.co.in>
+
+	* or.po: Updated Oriya Translation.
+
+2006-09-02 Kostas Papadimas <pkst at gnome.org>
+
+	* el.po: Updated Greek Translation
+
+2006-09-01  Jovan Naumovski  <jovan at lugola.net>
+
+	* mk.po: Updated Macedonian translation.
+
+2006-08-31  Rajesh Ranjan <rajeshkajha at yahoo.com>
+
+	* hi.po: Updated Hindi Translation.
+
+2006-08-31  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated.
+
+2006-08-31  Duarte Loreto <happyguy_pt at hotmail.com>
+
+	* pt.po: Updated Portuguese translation.
+
+2006-08-30  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2006-08-29  Christophe Merlet  <redfox at redfoxcenter.org>
+
+	* fr.po: Updated French translation from
+	Robert-André Mauchin <zebob.m at gmail.com>.
+
+2006-08-29  Gintautas Miliauskas  <gintas at akl.lt>
+
+	* lt.po: Updated Lithuanian translation.
+
+2006-08-27  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Fixed plural forms.
+
+2006-08-26  Jovan Naumovski  <jovan at lugola.net>
+
+	* mk.po: Updated Macedonian translation.
+
+2006-08-24  Raivis Dejus  <orvils at gmail.com>
+
+	* lv.po: Updated Latvian translation.
+
+2006-08-24  Inaki Larranaga  <dooteo at euskalgnu.org>
+
+	* eu.po: Added Basque translation.
+	* LINGUAS: Added "eu" (Basque) entry.
+
+2006-08-22  Matic Žgur  <mr.zgur at gmail.com>
+
+	* sl.po: Updated Slovenian translation.
+
+2006-08-21  Subhransu Behera  <arya_subhransu at yahoo.co.in>
+
+	* or.po: Added and Updated Oriya Translation.
+	* LINGUAS: Added Oriya (or) to The List of Languages.
+
+2006-08-19  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Alexander Shopov <ash at contact.bg>
+
+2006-08-19  Maxim Dziumanenko <dziumanenko at gmail.com>
+
+	* uk.po: Update Ukrainian translation.
+
+2006-08-16  Erdal Ronahi  <erdal.ronahi at gmail.com>
+
+	* ku.po: Updated Kurdish translations by Riza Seckin
+
+2006-08-16  Hendrik Richter  <hendrikr at gnome.org>
+
+	* de.po: Updated German translation.
+
+2006-08-16  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+	
+2006-08-16  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Translation updated.
+
+2006-08-15  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-08-15  Leonid Kanter <leon at asplinux.ru>
+
+	* ru.po: Updated Russian translation
+
+2006-08-14  Sanlig Badral  <badral at openmn.org>
+
+	* mn.po: Added Mongolian translation.
+	* LINGUAS: Added mn entry.
+
+2006-08-14  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2006-08-12  Wouter Bolsterlee  <uws+mate at xs4all.nl>
+
+	* nl.po: Translation updated by Wouter Bolsterlee.
+
+2006-08-12  Changwoo Ryu  <cwryu at debian.org>
+
+	* ko.po: Updated Korean translation.
+
+2008-08-10  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Updated Catalan translation by
+	Gil Forcada <gilforcada at guifi.net>
+
+2006-08-10  Guntupalli Karunakar  <karunakar at freedomink.org>
+
+	* dz.po: Updated Dzongkha translation by
+	Dzongkhalinux team, DIT
+
+2006-08-09  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2006-08-09  Satoru SATOH <ss at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2006-08-08  Ani Peter <peter.ani at gmail.com>
+
+	* ml.po: Added and Updated Malayalam translation
+	* LINGUAS: Added Malayalam (ml) to the list of Languages
+
+2006-08-02  Jovan Naumovski  <jovan at lugola.net>
+	* mk.po: Updated Macedonian translation.
+
+2006-08-02  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2006-08-02  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-08-01  Jovan Naumovski  <jovan at lugola.net>
+
+	* mk.po: Updated/fixed Macedonian translation.
+
+2006-08-01  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-08-01  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-07-31  Christophe Merlet  <redfox at redfoxcenter.org>
+
+	* fr.po: Updated French translation.
+
+2006-07-30  Arangel Angov <ufo at linux.net.mk>
+
+	* sl.po: Added Slovenian translation.
+
+2006-07-30  Žygimantas Beručka  <zygis at gnome.org>
+
+	* lt.po: Updated Lithuanian translation.
+
+2006-07-29  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-07-27  Ahmad Riza H Nst  <rizahnst at eriagempita.co.id>
+
+	* id.po: Updated.
+
+2006-07-27  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2006-07-26  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-07-25  Priit Laes  <plaes at cvs.gnome.org>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-07-23  Changwoo Ryu  <cwryu at debian.org>
+
+	* ko.po: Updated Korean translation.
+
+2006-07-21  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Updated Czech translation
+
+2006-07-21  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Updated Catalan translation by Gil Forcada.
+
+2006-07-20  Hendrik Richter  <hendrikr at gnome.org>
+
+	* de.po: Updated German translation.
+
+2006-07-20  Kostas Papadimas <pkst at gnome.org>
+
+	 * el.po: Updated Greek translation.
+
+2006-07-20  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-07-19  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-07-19  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-07-18  Guntupalli Karunakar  <karunakar at freedomink.org>
+
+	* dz.po: Updated Dzongkha translation by
+	Dzongkhalinux team, DIT
+
+2006-07-17  Thierry Randrianiriana  <thierryR at cvs.gnome.org>
+
+	* mg.po: Added Malagasy translation.
+	* LINGUAS: Added Malagasy 'mg'.
+
+2006-07-16  Daniel Nylander  <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2006-07-14  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation updated.
+
+2006-07-14  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Updated Czech translation
+
+2006-07-05  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Rostislav Raykov <zbrox at i-space.org>
+
+2006-07-03  Runa Bhattacharjee <runabh at gmail.com>
+
+	* bn_IN.po: Added Bengali India Translation
+	* LINGUAS: Added Bengali India (bn_IN) to the list of languages.
+
+2006-07-03  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2006-07-02  Benoît Dejean  <benoit at placenet.org>
+
+	* fr.po: Updated French translation.
+
+2006-07-01  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2006-07-01  Pawan Chitrakar  <pchitrakar at gmail.com>
+
+	* ne.po: Added Nepali translation
+
+	* LINGUAS: Added ne
+
+2006-06-30  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-06-30  Rajesh Ranjan <rajeshkajha at yahoo.com>
+
+	* hi.po: Updated Hindi Translation.
+
+2006-06-30  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-06-30  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2006-06-29  Rajesh Ranjan <rajeshkajha at yahoo.com>
+
+	* hi.po: Updated Hindi Translation.
+
+2006-06-29  Yair Hershkovitz  <yairhr at gmail.com>
+
+	* he.po: Added Hebrew translation.
+
+2006-06-28  Guntupalli Karunakar  <karunakar at indlinux.org>
+
+	* dz.po: Updated Dzongkha translation
+	by Dzongkhalinux, DIT
+
+2006-06-27  Jovan Naumovski  <jovan at lugola.net>
+
+	* mk.po: Updated Macedonian Translation.
+
+2006-06-23  I. felix  <ifelix25 at gmail.com>
+
+	* ta.po: Added Tamil translation.
+
+	* LINGUAS: Added Tamil (ta) entry.
+
+2006-06-19  Raivis Dejus  <orvils at gmail.com>
+
+	* lv.po: Added Latvian translation.
+
+	* LINGUAS: Added Latvian (lv) entry.
+
+2006-06-16  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Updated Czech translation.
+
+2006-06-15  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2006-06-15  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-06-15  Hendrik Richter  <hendrikr at gnome.org>
+
+	* de.po: Updated German translation.
+
+2006-06-15  Daniel Nylander  <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2006-06-15  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2006-06-14  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-06-13  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2006-06-13  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-06-12  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-06-12  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Updated Czech translation.
+
+2006-06-12  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* POTFILES.in: Add src/gs-auth-pam.c
+	* nb.po: Updated Norwegian bokmål translation.
+
+2006-06-12  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-06-11  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2006-06-09  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-06-09  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-06-09  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Updated Czech translation.
+
+2006-06-07  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-06-06  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Updated Czech translation.
+
+2006-05-30  Pema Geyleg  <pema.geyleg at gmail.com>
+
+	* dz.po: Updated Dzongkha translation.
+
+2006-05-29  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-05-29  Francisco Javier F. Serrador  <serrador at openshine.com>
+
+	* es.po: Updated Spanish translation.
+
+2006-05-29  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-05-29  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2006-05-28  Pema Geyleg  <pema.geyleg at gmail.com>
+
+	* dz.po: updated Dzongkha translation.
+
+2006-05-26  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2006-05-25  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-05-23  Jakub Friedl  <jfriedl at suse.cz>
+
+	* cs.po: Updated Czech translation.
+
+2006-05-19  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2006-05-19  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-05-16  Nickolay V. Shmyrev  <nshmyrev at yandex.ru>
+
+	* LINGUAS: Added Russian translation.
+
+2006-05-14  Chao-Hsiung Liao  <j_h_liau at yahoo.com.tw>
+
+	* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
+	* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
+
+2006-05-11  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2006-05-06  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2006-04-30  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+
+2006-04-26  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-04-25  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-04-24  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES.in: Add new file.
+
+2006-04-19  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-04-18  William Jon McCann  <mccann at jhu.edu>
+
+	* LINGUAS: Don't split over multiple lines as it
+	breaks the build.
+
+2006-04-18  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-04-17  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* LINGUAS: Remove obsolete entry for no_NO
+	* no.po: And the translation.
+
+2006-04-17  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2006-04-13  Vladimer Sichinava  <vlsichinava at gmail.com>
+
+	* ka.po: Updated Georgian translation.
+
+2006-04-10  Artur Flinta  <aflinta at cvs.gnome.org>
+
+	* pl.po: Updated Polish translation by MATE PL Team.
+
+2006-04-08  Benoît Dejean  <benoit at placenet.org>
+
+	* fr.po: Updated French translation.
+
+2007-04-05  Pema Geyleg  <pema.geyleg at gmail.com>
+
+	* dz.po: Added Dzongkha translation.
+
+2006-04-03  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-03-31  Lukas Novotny  <lukasnov at cvs.gnome.org>
+
+	* cs.po: Updated Czech translation.
+
+2006-03-20  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-03-17  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-03-17  Wouter Bolsterlee  <uws+mate at xs4all.nl>
+
+	* nl.po: Translation updated by Wouter Bolsterlee.
+
+2006-03-17  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-03-14  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2006-03-13  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-03-13  Erdal Ronahi <erdal.ronahi at gmail.com>
+
+	* ku.po: Added initial Kurdish translation
+
+2006-03-13  Runa Bhattacharjee <runa at bengalinux.org>
+
+	* bn.po: Added Bengali Translation (partial) by Mahay Alam Khan.
+
+2006-03-12  Miloslav Trmac  <mitr at volny.cz>
+
+	* cs.po: Updated Czech translation by Petr Tomeš.
+
+2006-03-11  Guilherme de S. Pastore  <gpastore at gnome.org>
+
+	* pt_BR.po: Updated Brazilian Portuguese translation.
+
+2006-03-11  Jens Seidel <jseidel at cvs.gnome.org>
+
+	* de.po: Proofreading.
+
+2006-03-11  Frank Arnold  <farnold at cvs.gnome.org>
+
+	* de.po: Replaced wrong spaces caused by copy/paste inside gtranslator.
+
+2006-03-11  Duarte Loreto <happyguy_pt at hotmail.com>
+
+	* pt.po: Added Portuguese translation.
+
+2006-03-10  Luca Ferretti  <elle.uca at libero.it>
+
+	* it.po: Updated Italian translation
+
+2006-03-08  Rajesh Ranjan  <rranjan at redhat.com>
+
+	* hi.po: Added Hindi tranlsation.
+
+2006-03-08  Lasse Bang Mikkelsen  <lbm at fatalerror.dk>
+
+	* da.po: Added Danish translation by David Nielsen.
+
+2006-03-08  Laurent Dhima  <laurenti at alblinux.net>
+
+	* sq.po: Added Albanian translation.
+
+2006-03-08  Rhys Jones  <rhys at sucs.org>
+
+	* cy.po: Added Welsh translation.
+
+2006-03-07  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-03-07  Daniel Nylander <po at danielnylander.se>
+
+	* sv.po: Updated Swedish translation.
+
+2006-03-06  Maxim Dziumanenko <mvd at mylinux.ua>
+
+	* uk.po: Updated Ukrainian translation.
+
+2006-03-05  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+	* no.po: Same.
+
+2006-03-05  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation updated by Ivar Smolin.
+
+2006-03-04  Priit Laes  <amd at store20.com>
+
+	* et.po: Translation added by Ivar Smolin.
+
+2006-03-02  Hendrik Richter  <hendrikr at gnome.org>
+
+	* de.po: Updated German translation.
+
+2003-03-02  Kang Jeong-Hee  <keizie at gmail.com>
+
+	* ko.po: Updated Korean translation.
+
+2006-03-01  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Rostislav Raykov <zbrox at i-space.org>
+
+2006-03-01  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Updated Catalan translation.
+
+2006-02-25  Luca Ferretti  <elle.uca at libero.it>
+
+	* it.po: Italian translation updated.
+
+2006-02-25  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Hungarian translation updated.
+
+2006-02-23  Leonid Kanter <leon at asplinux.ru>
+
+	* ru.po: Initial Russian translation
+
+2006-02-23  Kostas Papadimas <pkst at gnome.org>
+
+	  *el.po Updated Greek Translation
+
+2006-02-23  Kostas Papadimas <pkst at gnome.org>
+
+	  *el.po Updated Greek Translation
+
+2006-02-23  Clytie Siddall <clytie at riverland.net.au>
+
+	* ka.po: Added Georgian translation by Alexander Didebulidze <didebuli at in.tum.de> and Vladimer SIchinava <alinux at siena.linux.it>.
+
+2006-02-23  Žygimantas Beručka  <zygis at gnome.org>
+
+	* lt.po: Updated Lithuanian translation.
+
+2006-02-21  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2006-02-21  Kang Jeong-Hee  <keizie at gmail.com>
+
+	* ko.po: Added Korean translation
+
+2006-02-21  Slobodan D. Sredojevic  <slobo at akrep.be>
+
+	* sr.po, sr at Latn.po: Updated Serbian translation
+
+2006-02-21  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-02-18  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2006-02-18  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+	* no.po: Same.
+
+2006-02-17  Satoru SATOH <ss at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2006-02-16  Nikos Charonitakis  <nikosx at gmail.com>
+
+	* el.po: Added Greek translation.
+
+2006-02-16  Luca Ferretti  <elle.uca at libero.it>
+
+	* it.po: Updated Italian translation.
+
+2006-02-16  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2006-02-16  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-02-15  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Changed "%s on %s" to %s@%s for Finnish.
+
+2006-02-15  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2006-02-15  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2006-02-15  Raphael Higino  <raphaelh at cvs.gnome.org>
+
+	* pt_BR.po: Updated Brazilian Portuguese translation.
+
+2006-02-11  Øivind Hoel  <ohoel at cvs.gnome.org>
+
+	* nb.po: Updated Norwegian Bokmål translation.
+
+2006-02-10  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Updated Catalan translation, by
+	Gil Forcada <gilforcada at guifi.net>
+
+2006-02-06  Žygimantas Beručka  <zygis at gnome.org>
+
+	* lt.po: Updated Lithuanian translation.
+
+2006-01-31  Lukas Novotny  <lukasnov at cvs.gnome.org>
+
+	* cs.po: Updated Czech translation.
+
+2006-01-30  Hendrik Brandt  <heb at mate-de.org>
+
+	* de.po: Updated German translation.
+
+2006-01-29  Hendrik Brandt  <heb at mate-de.org>
+
+	* de.po: Updated German translation, plural bugfix.
+
+2006-01-29  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2006-01-27  Chao-Hsiung Liao  <j_h_liau at yahoo.com.tw>
+
+	* zh_TW.po: Updated Traditional Chinese translation(Taiwan).
+	* zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
+
+2006-01-25  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Alexander Shopov <ash at contact.bg>
+
+2006-01-18  Slobodan D. Sredojevic  <slobo at akrep.be>
+
+	* sr.po, sr at Latn.po: Updated Serbian translation
+
+2006-01-18  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-01-18  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2006-01-17  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2006-01-16  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2006-01-16  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2006-01-15  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2006-01-15  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2006-01-08  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2006-01-08  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2006-01-07  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2006-01-07  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2006-01-07  Chao-Hsiung Liao  <j_h_liau at yahoo.com.tw>
+
+	* zh_TW.po: Updated Traditional Chinese Translation.(Taiwan)
+	* zh_HK.po: Added Traditional Chinese Translation.(Hong Kong)
+
+2006-01-06  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Alexander Shopov <ash at contact.bg>
+
+2006-01-03  Slobodan D. Sredojevic  <ssl at uns.ns.ac.yu>
+
+	* sr.po, sr at Latn.po: Added Serbian translation
+
+2006-01-02  Josep Puigdemont i Casamajó  <josep.puigdemont at gmail.com>
+
+	* ca.po: Added Catalan translation.
+
+2006-01-01  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Updated Gujarati Translation.
+
+2006-01-01  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2005-12-31  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2005-12-31  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2005-12-30  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-12-26  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2005-12-26  Žygimantas Beručka  <zygis at gnome.org>
+
+	* lt.po: Updated Lithuanian translation.
+
+2005-12-23  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-12-20  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2005-12-20  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2005-12-19  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2005-12-19  Ankit Patel  <ankit644 at yahoo.com>
+
+	* gu.po: Added Gujarati Translation.
+
+2005-12-19  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2005-12-18  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2005-12-17  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Updated Thai translation.
+
+2005-12-14  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES.in: Updated.
+
+2005-12-13  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Hungarian translation updated.
+
+2005-12-13  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Hungarian translation updated.
+
+2005-12-13  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Hungarian translation updated.
+
+2005-12-11  Miloslav Trmac  <mitr at volny.cz>
+
+	* cs.po: Updated Czech translation.
+
+2005-12-08  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+	* no.po: Same.
+
+2005-12-04  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Fixed typos.
+
+2005-11-28  Ignacio Casal Quinteiro  <nacho.resa at gmail.com>
+
+	* gl.po: Updated Galician Translation.
+
+2005-11-27  Žygimantas Beručka  <zygis at gnome.org>
+
+	* lt.po: Updated Lithuanian translation.
+
+2005-11-27  Theppitak Karoonboonyanan  <thep at linux.thai.net>
+
+	* th.po: Added Thai translation.
+
+2005-11-27  Marcel Telka  <marcel at telka.sk>
+
+	* sk.po: Updated Slovak translation.
+
+2005-11-22  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Alexander Shopov <ash at contact.bg>
+
+2005-11-20  Amanpreet Singh Alam <amanpreetalam at yahoo.com>
+
+	* pa.po: Add Punjabi (pa) Translaiton
+
+2005-11-20  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Updated Finnish translation.
+
+2005-11-17  Marcel Telka  <marcel at telka.sk>
+
+	* sk.po: Added Slovak translation.
+
+2005-11-14  Christophe Merlet  <redfox at redfoxcenter.org>
+
+	* fr.po: Updated French translation from
+	Davy Defaud <davy.defaud at posteasy.com>.
+
+2005-11-11  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2005-11-06  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2005-11-04  Žygimantas Beručka  <zygis at gnome.org>
+
+	* lt.po: Updated Lithuanian translation.
+
+2005-11-04  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-11-02  Miloslav Trmac  <mitr at volny.cz>
+
+	* cs.po: Updated Czech translation.
+
+2005-11-03  Christophe Merlet  <redfox at redfoxcenter.org>
+
+	* fr.po: Updated French translation from
+	Davy Defaud <davy.defaud at posteasy.com>.
+
+2005-11-01  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2005-10-31  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-10-29  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2005-10-28  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2005-10-26  Gabor Kelemen  <kelemeng at mate.hu>
+
+	* hu.po: Hungarian translation added.
+
+2005-10-19  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-10-16  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Updated Norwegian bokmål translation.
+	* no.po: Same.
+
+2005-10-14  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-10-11  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2005-10-11  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2005-10-09  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2005-10-08  Funda Wang  <fundawang at linux.net.cn>
+
+	* zh_CN.po: Updated Simplified Chinese translation.
+
+2005-10-07  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-10-06  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Rostislav Raykov <zbrox at i-space.org>
+
+2005-10-05  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-10-04  Žygimantas Beručka  <zygis at gnome.org>
+
+	* lt.po: Added Lithuanian translation.
+
+2005-10-02  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-10-02  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2005-09-30  Kjartan Maraas  <kmaraas at gnome.org>
+
+	* nb.po: Added Norwegian bokmål translation.
+	* no.po: Same.
+
+2005-09-29  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-09-29  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Updated Bulgarian translation by
+	Rostislav Raykov <zbrox at i-space.org>
+
+2005-09-27  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2005-09-25  Miloslav Trmac  <mitr at volny.cz>
+
+	* cs.po: Added Czech translation.
+
+2005-09-24  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-09-23  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES.in: Remove obsolete and add new files.
+
+2005-09-22  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2005-09-21  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po Updated Finnish translation
+
+2005-09-18  Alessio Frusciante  <algol at firenze.linux.it>
+
+	* it.po: Added Italian translation by
+	Luca Ferretti <elle.uca at infinito.it>.
+
+2005-09-17  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2005-09-16  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2005-09-06  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-09-05  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2005-09-02  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2005-09-01  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation updated by Tino Meinen.
+
+2005-08-31  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2005-08-31  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2005-08-27  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-08-27  Clytie Siddall <clytie at riverland.net.au>
+
+	* vi.po: Updated Vietnamese translation.
+
+2005-08-26  Christophe Merlet  <redfox at redfoxcenter.org>
+
+	* fr.po: Added French translation from
+	Eric Maeker <eric.maeker at free.fr>.
+
+2005-08-24  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES.in: Add missing files.
+
+2005-08-10  Alexander Shopov  <ash at contact.bg>
+
+	* bg.po: Added Bulgarian translation by
+	Rostislav Raykov <zbrox at i-space.org>
+
+2005-08-02  Maxim Dziumanenko <mvd at mylinux.ua>
+
+	* uk.po: Added Ukrainian translation.
+
+2005-07-25  Tommi Vainikainen  <thv at iki.fi>
+
+	* fi.po: Added Finnish translation.
+
+2005-07-19  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Updated Japanese translation.
+
+2005-07-18  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-07-18  Vincent van Adrighem  <adrighem at gnome.org>
+
+	* nl.po: Translation added by Tino Meinen.
+
+2005-07-15  Abel Cheung  <maddog at linuxhall.org>
+
+	* zh_TW.po: New traditional Chinese translation from MATE HK Team
+
+2005-07-06  Christian Rose  <menthos at menthos.com>
+
+	* sv.po: Updated Swedish translation.
+
+2005-07-04  Hendrik Richter  <hendi at mate-de.org>
+
+	* de.po: Fixed German translation by
+	Jens Seidel <jensseidel at users.sf.net>.
+
+2005-07-03  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-07-03  Takeshi AIHANA <aihana at mate.gr.jp>
+
+	* ja.po: Added Japanese translation.
+
+2005-06-26  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2005-06-23  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-06-17  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-06-13  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES: Add new file.
+
+2005-06-05  James Ogley  <james at usr-local-bin.org>
+
+	* en_GB.po: Updated British English translation.
+
+2005-06-04  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Updated Spanish translation.
+
+2005-05-24  Frank Arnold  <farnold at cvs.gnome.org>
+
+	* de.po: Updated German translation.
+
+2005-05-23  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-05-23  William Jon McCann  <mccann at jhu.edu>
+
+	* POTFILES.in: Add missing file.
+
+2005-05-21  Frank Arnold  <farnold at cvs.gnome.org>
+
+	* de.po: Added German translation.
+
+2005-05-19  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-05-05  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-05-04  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Updated Canadian English translation.
+
+2005-05-01  Francisco Javier F. Serrador  <serrador at cvs.gnome.org>
+
+	* es.po: Added Spanish translation.
+
+2005-04-29  Christian Rose  <menthos at menthos.com>
+
+	* POTFILES.in: Added missing files.
+	* sv.po: Updated Swedish translation.
+
+2005-04-24  Raphael Higino  <raphaelh at cvs.gnome.org>
+
+	* pt_BR.po: Updated Brazilian Portuguese translation.
+
+2005-04-19  Gareth Owen  <gowen72 at yahoo.com>
+
+	* en_GB.po: Added British English translation
+
+2005-04-15  Adam Weinberger  <adamw at gnome.org>
+
+	* en_CA.po: Added Canadian English translation.
+
+2005-04-15  Raphael Higino  <raphaelh at cvs.gnome.org>
+
+	* pt_BR.po: Added Brazilian Portuguese translation.
+
+2005-04-15  Funda Wang  <fundawang at linux.net.cn>
+
+	* zh_CN.po: Added Simplified Chinese translation.
+
+2005-04-14  Christian Rose  <menthos at menthos.com>
+
+	* sv.po: Added Swedish translation.
+
+2005-04-14  Christian Rose  <menthos at menthos.com>
+
+	* POTFILES.in: Added this file.
+	* .cvsignore: Updated this file.
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644
index 0000000..752531a
--- /dev/null
+++ b/po/LINGUAS
@@ -0,0 +1,82 @@
+# please keep this list sorted alphabetically
+#
+ar
+as
+ast
+be
+be at latin
+bg
+bn
+bn_IN
+br
+ca
+ca at valencia
+crh
+cs
+cy
+da
+de
+dz
+el
+en_CA
+en_GB
+en at shaw
+es
+et
+eu
+fa
+fi
+fr
+ga
+gl
+gu
+he
+hi
+hr
+hu
+id
+is
+it
+ja
+ka
+kn
+ko
+ku
+lt
+lv
+mai
+mg
+mk
+ml
+mn
+mr
+nb
+nds
+ne
+nl
+nn
+oc
+or
+pa
+pl
+ps
+pt
+pt_BR
+ro
+ru
+si
+sk
+sl
+sq
+sr
+sr at latin
+sv
+ta
+te
+th
+tr
+uk
+vi
+zh_CN
+zh_HK
+zh_TW
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 0000000..cc8a222
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,217 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper at gnu.ai.mit.edu>
+# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns at gmail.com>
+#
+# This file may be copied and used freely without restrictions.  It may
+# be used in projects which are not available under a GNU Public License,
+# but which still want to provide support for the GNU gettext functionality.
+#
+# - Modified by Owen Taylor <otaylor at redhat.com> to use GETTEXT_PACKAGE
+#   instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob at ximian.com> to install
+#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey.pwns at gmail.com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+DATADIRNAME = @DATADIRNAME@
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+subdir = po
+install_sh = @install_sh@
+# Automake >= 1.8 provides @mkdir_p at .
+# Until it can be supposed, use the safe fallback:
+mkdir_p = $(install_sh) -d
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT   = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+ALL_LINGUAS = @ALL_LINGUAS@
+
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi)
+
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi)
+
+USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
+
+POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
+DISTFILES = Makefile.in.in POTFILES.in $(POFILES)
+EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+# This comment gets stripped out
+
+CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+
+.SUFFIXES:
+.SUFFIXES: .po .pox .gmo .mo .msg .cat
+
+.po.pox:
+	$(MAKE) $(GETTEXT_PACKAGE).pot
+	$(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+	$(MSGFMT) -o $@ $<
+
+.po.gmo:
+	file=`echo $* | sed 's,.*/,,'`.gmo \
+	  && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+	sed -f ../intl/po2msg.sed < $< > $*.msg \
+	  && rm -f $@ && gencat $@ $*.msg
+
+
+all: all- at USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+	$(GENPOT)
+
+install: install-data
+install-data: install-data- at USE_NLS@
+install-data-no: all
+install-data-yes: all
+	linguas="$(USE_LINGUAS)"; \
+	for lang in $$linguas; do \
+	  dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+	  $(mkdir_p) $$dir; \
+	  if test -r $$lang.gmo; then \
+	    $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+	    echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+	  else \
+	    $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+	    echo "installing $(srcdir)/$$lang.gmo as" \
+		 "$$dir/$(GETTEXT_PACKAGE).mo"; \
+	  fi; \
+	  if test -r $$lang.gmo.m; then \
+	    $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+	    echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+	  else \
+	    if test -r $(srcdir)/$$lang.gmo.m ; then \
+	      $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
+		$$dir/$(GETTEXT_PACKAGE).mo.m; \
+	      echo "installing $(srcdir)/$$lang.gmo.m as" \
+		   "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
+	    else \
+	      true; \
+	    fi; \
+	  fi; \
+	done
+
+# Empty stubs to satisfy archaic automake needs
+dvi info ctags tags CTAGS TAGS ID:
+
+# Define this as empty until I found a useful application.
+install-exec installcheck:
+
+uninstall:
+	linguas="$(USE_LINGUAS)"; \
+	for lang in $$linguas; do \
+	  rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+	  rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+	done
+
+check: all $(GETTEXT_PACKAGE).pot
+	rm -f missing notexist
+	srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
+	if [ -r missing -o -r notexist ]; then \
+	  exit 1; \
+	fi
+
+mostlyclean:
+	rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+	rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+	rm -f Makefile Makefile.in POTFILES stamp-it
+	rm -f *.mo *.msg *.cat *.cat.m *.gmo
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+	rm -f Makefile.in.in
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+	dists="$(DISTFILES)"; \
+	extra_dists="$(EXTRA_DISTFILES)"; \
+	for file in $$extra_dists; do \
+	  test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
+	done; \
+	for file in $$dists; do \
+	  test -f $$file || file="$(srcdir)/$$file"; \
+	  ln $$file $(distdir) 2> /dev/null \
+	    || cp -p $$file $(distdir); \
+	done
+
+update-po: Makefile
+	$(MAKE) $(GETTEXT_PACKAGE).pot
+	tmpdir=`pwd`; \
+	linguas="$(USE_LINGUAS)"; \
+	for lang in $$linguas; do \
+	  echo "$$lang:"; \
+	  result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+	  if $$result; then \
+	    if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+	      rm -f $$tmpdir/$$lang.new.po; \
+            else \
+	      if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	        :; \
+	      else \
+	        echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	        rm -f $$tmpdir/$$lang.new.po; \
+	        exit 1; \
+	      fi; \
+	    fi; \
+	  else \
+	    echo "msgmerge for $$lang.gmo failed!"; \
+	    rm -f $$tmpdir/$$lang.new.po; \
+	  fi; \
+	done
+
+Makefile POTFILES: stamp-it
+	@if test ! -f $@; then \
+	  rm -f stamp-it; \
+	  $(MAKE) stamp-it; \
+	fi
+
+stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+	cd $(top_builddir) \
+	  && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
+	       $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..b259d8a
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,24 @@
+# List of source files containing translatable strings.
+# Please keep this file sorted alphabetically.
+data/mate-screensaver-preferences.desktop.in
+[type: gettext/glade]data/mate-screensaver-preferences.ui
+data/mate-screensaver.directory.in
+data/mate-screensaver.schemas.in
+[type: gettext/glade]data/lock-dialog-default.ui
+data/images/cosmos/cosmos.xml.in.in
+savers/cosmos-slideshow.desktop.in.in
+savers/footlogo-floaters.desktop.in.in
+savers/personal-slideshow.desktop.in.in
+savers/popsquares.desktop.in.in
+savers/popsquares.c
+savers/floaters.c
+savers/slideshow.c
+src/copy-theme-dialog.c
+src/mate-screensaver-command.c
+src/mate-screensaver-dialog.c
+src/mate-screensaver-preferences.c
+src/mate-screensaver.c
+src/mate-screensaver.desktop.in.in
+src/gs-auth-pam.c
+src/gs-listener-dbus.c
+src/gs-lock-plug.c
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
new file mode 100644
index 0000000..7bcd47f
--- /dev/null
+++ b/po/POTFILES.skip
@@ -0,0 +1,6 @@
+data/images/cosmos/cosmos.xml.in
+savers/cosmos-slideshow.desktop.in
+savers/footlogo-floaters.desktop.in
+savers/personal-slideshow.desktop.in
+savers/popsquares.desktop.in
+src/mate-screensaver.desktop.in
diff --git a/po/ar.po b/po/ar.po
new file mode 100644
index 0000000..df6eaab
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,766 @@
+# translation of mate-screensaver.HEAD.ar.po to Arabic
+# Djihed Afifi <djihed at gmail.com>, 2006.
+# Khaled Hosny <khaledhosny at eglug.org>, 2006, 2008, 2009.
+# Anas Husseini <linux.anas at gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.HEAD.ar\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-21 06:39+0300\n"
+"PO-Revision-Date: 2009-08-21 06:54+0300\n"
+"Last-Translator: Khaled Hosny <khaledhosny at eglug.org>\n"
+"Language-Team: Arabic <doc at arabeyes.org>\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+"X-Generator: Virtaal 0.4.0\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "حافظة الشاشة"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "اضبط خصائص حافظة الشاشة"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>معاينة حافظة الشاشة</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>تنبيه: لا تُوصد الشاشة للجذر.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "إ_دارة الطاقة"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "اعتبر الحاسوب _ساكنا بعد:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "تفضيلات حافظة الشاشة"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "معاينة حافظة الشاشة"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "نشّط _حافظة الشاشة عند السكون"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "أو_صد الشاشة عند تفعيل حافظة الشاشة"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_معاينة"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "سِمة حافظ ال_شاشة:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "سِمات حافظة الشاشة"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "حافظات الشاشة"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "نشّط عند السكون"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "اسمح بغرس لوحة مفاتيح في النافذة"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "اسمح بالخروج"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "اسمح بعرض رسالة حالة الجلسة"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "اسمح بعرض رسالة حالة الجلسة عندما تكون الشاشة موصدة."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "اسمح بتبديل المستخدم"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "أمر لوحة المفاتيح المدرجة"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "أوصِد عند التفعيل"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "أمر الخروج"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "نمط اختيار سِمة حافظة الشاشة"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "حدد TRUE لتفعيل حافظة الشاشة عند خمول الجلسة."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"اختر TRUE للسماح بإدراج لوحة مفاتيح في النافذة عند محاولة إلغاء القفل. "
+"\"keyboard_command\" يجب أن تكون أمرا صحيحا."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "حدد TRUE لقفل الشاشة عند تفعيل حافظة الشاشة."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr "حدد TRUE لإعطاء إمكانية تغيير المستخدم."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"حدد TRUE لإعطاء إمكانية تسجيل الخروج بعد الفترة المحددة في مفتاح "
+"\"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"الأمر الذي سيتم تشغيله، إذا كان مفتاح \"embedded_keyboard_enabled\" TRUE، "
+"لإدراج لوحة مفاتيح في النافذة. هذا الأمر يجب أن يدرج شاشة إدراج XEMBED ، و "
+"يعطي رمز  XID عند في المخرج."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"الأمر المنفَذ عند الضغط على زر تسجيل الخروج. هذا الزر يعمل فقط عندما يكون "
+"الزر  \"logout_enable\" محددا إلى TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "عدد الدقائق بعد تفعيل حافظة الشاشة قبل قفل الشاشة."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"عدد الدقائق بعد تفعيل حافظة الشاشة قبل إظهار زر تسجيل الخروج.  هذا الزر يعمل "
+"فقط عندما يكون الزر  \"logout_enable\" محددا إلى TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "عدد الدقائق من السكون قبل اعتبار الجلسة ساكنة."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "عدد الدقائق قبل تغيير سِمة حافظة الشاشة."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"عدد الثواني من الخمول قبل إرسال إشارة إلى إدارة الطاقة. يُضبط ويدار هذا "
+"المفتاح بواسطة عميل إدارة الطاقة."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"نمط الإختيار لحافظة الشاشة. قد يكون \"blank-only\" لعدم استعمال أي سِمة عند "
+"التفعيل،  \"single\" لاستعمال سِمة واحدة (تحدد في مفتاح \"themes\")، و "
+"\"random\" لاستعمال نمط عشوائي عند التفعيل."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "سِمة حوار الإيصاد"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "السِّمة المستعملة لحوار الإيصاد."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name when "
+"\"mode\" is \"single\", and should provide a list of themes when \"mode\" is "
+"\"random\"."
+msgstr ""
+"يحدد هذا الزر قائمة السِمة المستعملة من حافظة الشاشة. يتم تجاهله إذا كان زر "
+"\"mode\" هو  \"blank-only\"، يجب توفير اسم السِمة عندما يكون  \"mode\" هو "
+"\"single\"، يجب أيضا توفير قائمة السِمة عندما يكون \"mode\" هو \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "مدة الانتظار قبل الإيصاد"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "مدة الانتظار قبل الخروج"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "مدة الانتظار قبل خط إدارة الطاقة الأساسي"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "مدة الانتظار قبل اعتبار الجلسة خاملة"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "مدة الانتظار قبل تغيير السِّمة"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>اترك رسالة ل‍ %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">‏%U على %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">‏%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "أل_غ"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "ا_ترك رسالة"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "ا_خرج"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_بدّل المستخدم"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "ا_فتح القفل"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "الكَوْن"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "أظهر عرض شرائح من صور الكَوْن"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "تفقيع شعار قدم جنوم حول الشاشة"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "أقدام طافية"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "أظهر عرض شرائح من مجلد الصور الخاص بك"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "مجلّد الصور"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "شَبَكَة شبه فنية للألوان النابضة."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "المربعات الفنية"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "أظهر مسارات تنقل الصور"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "دوّر الصور أحيانًا عند تحركها"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "اطبع معدّل الإطارات وإحصائيات أخرى"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "العدد الأقصى للصور الظاهرة على الشاشة"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "عدد الصور الأقصى"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "الحجم والمكان الأولان للنافذة  "
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "العرض×الطول+س+ص"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "مصدر الصورة المستعملة"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "صورة - طَفْو الصورة حول الشاشة"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. انظر ‪--help‬ للمزيد من المعلومات.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "يجب اختيار صورة. انظر ‪--help‬ للمزيد من المعلومات.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "المكان الذي تُفتَح منه الصور"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "المسار"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "اللون المستخدم لخلفيات الصور"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "لا تختر الصور عشوائيًا من المكان"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "لا تقم بمطّ الصور على الشاشة"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ينسخ الملفات"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "من:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "إلى:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "ينسخ السِمات"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "سِمة حافظة شاشة غير سليمة"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "يبدو أن الملف %s لا يمثل سِمة حافظة شاشة سليمة."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ينسخ الملف: '%u من %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "يسبب خروج حافظة الشاشة بسلام"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "أظهر حالة حافظة الشاشة"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "استعلم عن مدّة الزمن التي كانت فيها حافظة الشاشة نشطة"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "تخبر عملية حافظة الشاشة التي تعمل بقفل الشاشة مباشرة "
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "انتقل إلى عرض رسومي آخر  إذا كانت حافظة الشاشة  نشِطة"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "شغّل حافظة الشاشة (أفرغ الشاشة)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "أوقف حافظة الشاشة إذا كانت نشِطة (الغي إفراغ الشاشة)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "وكز حافظة الشاشة المشتغل لمحاكاة نشاط من المستخدم"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "امنع حافظة الشاشة من التفعيل. الأمر يتوقف عندما يكون المنع نشطا."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "التطبيق المنادي الذي يمنع حافظة الشاشة"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "السبب وراء توقف حافظة الشاشة"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "نسخة هذا التّطبيق"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "حافظة الشاشة هي %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "نشط"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "غير نشط"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "حافظة الشاشة غير مُثبطة\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "حافظة الشاشة أثبطها:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "حافظة الشاشة نشِطة منذ %Id ثواني.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "حافظة الشاشة غير غير نشطة حاليا\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "أظهر خرْجَ التنقيح"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "أظهر زر الخروج"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "الأمر عند الضغط على زر الخروج"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "أظهر زر تبديل المستخدم"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "الرسالة التي ستظهر في نافذة الحوار"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "الرسالة"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "غير مُستخدَمة"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "اسم المستخدم:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "كلمة السر:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "يجب أن تغير كلمة سرك حالا (كلمة السر قديمة)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "يجب أن تغير كلمة سرك حالا (فرض الجذر ذلك)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "انقضى حسابك، الرجاء الاتصال بمدير النظام"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "لم تمدّ كلمة سر جديدة"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "لم تغير كلمة السر"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "لا يمكن تلقي اسم المستخدم"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "أعد كتابة كلمة سر يونكس الجديدة:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "أدخل كلمة سر يونكس جديدة:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "كلمة سر يونكس (الحالية):"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "خطأ أثناء تغيير كلمة سر NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "يجب أن تختار كلمة سر أطول"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "كلمة السر مستخدمة. الرجاء اختيار كلمة مغايرة."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "يجب أن تنتظر مدة أطول لتتمكن من تغيير كلمة سرك"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "عفوا، كلمتا السر لا تتطابقان"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "يفحص..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "فشل الاستيثاق."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "شاشة فارغة"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "عشوائية"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "أقل من ساعة"
+msgstr[1] "ساعة"
+msgstr[2] "ساعتين"
+msgstr[3] "%Id ساعات"
+msgstr[4] "%Id ساعة"
+msgstr[5] "%Id ساعة"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "أقل من دقيقة"
+msgstr[1] "دقيقة"
+msgstr[2] "دقيقتين"
+msgstr[3] "%Id دقائق"
+msgstr[4] "%Id دقيقة"
+msgstr[5] "%Id دقيقة"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "حالا"
+msgstr[1] "ثانية"
+msgstr[2] "ثانيتين"
+msgstr[3] "%Id ثوان"
+msgstr[4] "%Id ثانية"
+msgstr[5] "%Id ثانية"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "أبدًا"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "تعذّر تحميل الواجهة الرئيسيّة"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "الرجاء التثبت من أن حافظة الشاشة مثبتة بنجاح"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "لا تصبح عفريتا"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "فعّل التنقيح"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "شغّل برنامج حافظة الشاشة"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "تعذّر تنصيب الخدمة %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "تعذّر ضبط PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "كلمة السر غير صحيحة."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "منع المستخدم من النفاذ الآن."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "لم يعد يسمح بالنفاذ إلى النظام."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "فشل الاتصال بمخرج الرسائل"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "غير متصل بمخرج الرسائل"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "حافظة الشاشة مشتغلة مسبقا في هذه الجلسة"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "انتهت المدة."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "مفتاح الحروف الكبيرة مفعل"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_بدّل المستخدم..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "ا_خرج"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "‏%U على %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_كلمة السر:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "سبب الذهاب بعيدًا"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "السبب وراء الذهاب بعيدًا عن الحاسوب."
diff --git a/po/as.po b/po/as.po
new file mode 100644
index 0000000..5607e73
--- /dev/null
+++ b/po/as.po
@@ -0,0 +1,739 @@
+# translation of as.po to Assamese
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Amitakhya Phukan <amitakhya at svn.gnome.org>, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: as\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
+"cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-09-21 09:22+0530\n"
+"Last-Translator: \n"
+"Language-Team: Assamese <>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1)\n"
+"X-Generator: Lokalize 0.2\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "স্ক্ৰীনছেভাৰ"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "আপোনাৰ স্ক্ৰীনছেভাৰেৰ পছন্দসমূহ নিৰ্ধাৰণ কৰক"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b> স্ক্ৰীনছেভাৰ</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b> সতৰ্কবাণী উল্লিখিত সময় অবধি</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Power _Management"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "পিছত:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "স্ক্ৰীনছেভাৰৰ পছন্দতালিকা"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "স্ক্ৰীনছেভাৰ Preview"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activate screensaver when computer is idle"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "লক কৰা হ'ব হলো সক্ৰিয়"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "পূৰ্বৰূপ (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "স্ক্ৰীনছেভাৰ:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "স্ক্ৰীনছেভাৰ থিম"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "স্ক্ৰীনছেভাৰ"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "যখন নিস্ক্ৰিয় থাকবে তখন সক্ৰিয় কৰো"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "a"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "লগআউট অনুমোদন কৰক"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "অধিবেশনৰ অৱস্থা সূচনাকাৰী বাৰ্তা প্ৰদৰ্শন কৰা হ'ব"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "পৰ্দা লক কৰা হলে, অধিবেশনৰ অৱস্থা সূচনাকাৰী বাৰ্তা প্ৰদৰ্শন কৰা হ'ব ।"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "ব্যৱহাৰকাৰীদেৰ পৰিবৰ্তন অনুমোদন কৰক"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "এমবেড কৰা"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "সক্ৰিয় হলে লক কৰা হ'ব"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "লগআউট কমান্ড"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "স্ক্ৰীনছেভাৰ"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Set সক্ৰিয় কৰক হলো."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr "Set a."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Set সক্ৰিয়."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr "Set a."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "Set পিছত a হলো."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr "হলো a এবং a চলি আছে."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr "হলো ইফেক্ট হলো."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "সংখ্যা সৰ্বমোট মিনিট পিছত পূৰ্বে."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr "সংখ্যা সৰ্বমোট মিনিট পিছত পূৰ্বে a ইফেক্ট হলো."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "সংখ্যা সৰ্বমোট মিনিট সৰ্বমোট পূৰ্বে হলো."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "সংখ্যা সৰ্বমোট মিনিট পূৰ্বে."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr "সংখ্যা সৰ্বমোট সেকেন্ড সৰ্বমোট পূৰ্বে হলো এবং."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr "মে চলি আছে চলি আছে এবং a চলি আছে."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "থিম উল্লিখিত সময় অবধি"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "থিম উল্লিখিত সময় অবধি."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr "তালিকা সৰ্বমোট হলো হলো এবং a তালিকা সৰ্বমোট হলো."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "সময়, লক কৰাৰ পূৰ্বে"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "সময়, লগ-আউট অপশন এৰ পূৰ্বে"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "সময় পূৰ্বে"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "সময় পূৰ্বে হলো"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "সময়, থিম পৰিবৰ্তনৰ পূৰ্বে"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b> Leave a বাৰ্তা উল্লিখিত সময় অবধি R</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\"> চলি আছে h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\"> R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "বাতিল (_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Leave বাৰ্তা"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "লগ-আউট (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "ব্যৱহাৰকাৰী পৰিবৰ্তন (_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "আনলক (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "কসমস"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "কসমস এৰ ছবিগুলোৰ একটি স্লাইডশো প্ৰদৰ্শন কৰক"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "ভাসমান পা"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "আপনাৰ ছবিৰ ফোল্ডাৰ এৰ োৰ একটি স্লাইডশো প্ৰদৰ্শন কৰক"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "ছবিৰ ফোল্ডাৰ"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "A pop-art-ish grid of pulsing colors."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "পপ আৰ্ট স্কোয়াৰ"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Show paths that images follow"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Occasionally rotate images as they move"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "প্ৰিন্ট কৰক এবং"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "সংখ্যা সৰ্বমোট চলি আছে"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "এবং সৰ্বমোট"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "এক্স স্থানাঙ্ক ওয়াই স্থানাঙ্ক"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "উৎস"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - ভাসাবে images পৰ্দা জুড়ে"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. দেখুন --ব্যৱহাৰেৰ তথ্যেৰ জন্য.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "You must specify one image.  See --help for usage information.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "অৱস্থান"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "উল্লিখিত সময় অবধি"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Do not randomize pictures from location"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "চলি আছে"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ফাইল কপি কৰা হচ্ছে"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "প্ৰেৰক:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "অভিমুখে:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Copying themes"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "অৱৈধ"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s does not appear to be a valid screensaver theme."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copying file: %u of %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Causes the screensaver to exit gracefully"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "স্ক্ৰিনছেভাৰেৰ অৱস্থা জানুন"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "অনুসন্ধান সৰ্বমোট সক্ৰিয়"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "চলমান"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "হলো সক্ৰিয় ডেমো"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "চলি আছে"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "হলো সক্ৰিয়"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "চলমান"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "Inhibit কমান্ড হলো সক্ৰিয়."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "হলো"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "উল্লিখিত সময় অবধি"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "এই অ্যাপলিকেশনটিৰ সংস্কৰণ"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "স্ক্ৰিনছেভাৰটি হচ্ছে %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "সক্ৰিয়"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "নিষ্ক্ৰিয়"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+#| msgid "The screensaver is %s\n"
+msgid "The screensaver is not inhibited\n"
+msgstr "স্ক্ৰিন-ছেভাৰ প্ৰতিৰোধ কৰা নহয়\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+#| msgid "The screensaver is %s\n"
+msgid "The screensaver is being inhibited by:\n"
+msgstr "স্ক্ৰিন-ছেভাৰ প্ৰতিৰোধকাৰী:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "The screensaver has been active for %d seconds.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver has been active for %d seconds.\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "স্ক্ৰিন-ছেভাৰ বৰ্তমানে সক্ৰিয় নহয় ।\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "ডিবাগিং আউটপুট প্ৰদৰ্শন কৰক"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "লগ আউট বাটন দেখাও"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "কমান্ড"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Show the switch user button"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "বাৰ্তা"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "ব্যৱহৃত নহয়"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ব্যৱহাৰকাৰীৰ নাম:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "পাসওয়াৰ্ড:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "এই মুহূৰ্তে পাসওয়াৰ্ড পৰিবৰ্তন কৰা আবশ্যক (পাসওয়াৰ্ডেৰ মেয়াদ পূৰণ হতে চলেছে)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "এই মুহূৰ্তে পাসওয়াৰ্ড পৰিবৰ্তন কৰা আবশ্যক (root ব্যৱহাৰকাৰীৰ নিৰ্দেশানুযায়ী)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"আপনাৰ অ্যাকাউন্টেৰ মেয়াদ উত্তীৰ্ণ হয়েছে; অনুগ্ৰহ কৰে সিস্টেম অ্যাডমিনস্ট্ৰেটৰেৰ সাথে "
+"যোগাযোগ কৰক ।"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "পাসওয়াৰ্ড উল্লেখ কৰা নহয়"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "পাসওয়াৰ্ড অপৰিবৰ্তিত ৰয়েছে"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "ব্যৱহাৰকাৰীৰ নাম পাওয়া যায়নি"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "নতুন UNIX পাসওয়াৰ্ড পুনৰায় লিখুন:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "নতুন UNIX পাসওয়াৰ্ড লিখুন:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(বৰ্তমান) UNIX পাসওয়াৰ্ড:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS পাসওয়াৰ্ড পৰিবৰ্তনে সমস্যা ।"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "অত্যাধিক লম্বা পাসওয়াৰ্ড নিৰ্বাচন কৰা আবশ্যক"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr ""
+"উল্লিখিত পাসওয়াৰ্ডে পূৰ্বে ব্যৱহৃত হয়েছে । অনুগ্ৰহ কৰে একটি পৃথক পাসওয়াৰ্ড নিৰ্বাচন কৰক ।"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "পাসওয়াৰ্ড পৰিবৰ্তনৰ জন্য কিছু সময় উপেক্ষা কৰতে হ'ব"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "দুঃক্ষিত, পাসওয়াৰ্ডে গৰমিল"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Checking..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "অনুমোদন ব্যৱস্থা."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "পৰ্দা ফাঁকা"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Random"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ঘন্টা"
+msgstr[1] "%d ঘন্টা"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d মিনিট"
+msgstr[1] "%d মিনিট"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d সেকেন্ড"
+msgstr[1] "%d সেকেন্ড"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "কেতিয়াও নহয়"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "মূল ইন্টাৰফেস লোড কৰা নাযায়"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "অনুগ্ৰহ কৰি স্ক্ৰিন-ছেভাৰ সঠিক ৰূপে সংস্থাপন কৰা হৈছে নে নাই সেইটো নিশ্চিত কৰক"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ডেমন সৃষ্টি কৰা ন'হ'ব"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "সক্ৰিয়"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "স্ক্ৰিন-ছেভাৰ আৰু লকিং প্ৰোগ্ৰাম আৰম্ভ কৰক"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%s পৰিসেবা স্থাপন কৰতে ব্যৰ্থ: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s নিৰ্ধাৰণ কৰতে ব্যৰ্থ"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "অশুদ্ধ গুপ্তশব্দ  ।"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Not."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "না."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "বাৰ্তা"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "সংযুক্ত বাৰ্তা"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "চলমান"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "সময় অতিবাহিত হয়ে গেছে ।"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "You লক কৰা হ'ব চলি আছে."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "এস ব্যৱহাৰকৰ্তা."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "লগ আউট (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "চলি আছে h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "পাসওয়াৰ্ড: (_P)"
+
+#~ msgid "Reason for being away"
+#~ msgstr "কাৰণ উল্লিখিত সময় অবধি"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "উল্লিখিত সময় অবধি."
+
diff --git a/po/ast.po b/po/ast.po
new file mode 100644
index 0000000..d39144e
--- /dev/null
+++ b/po/ast.po
@@ -0,0 +1,764 @@
+# translation of mate-screensaver.po to Asturian
+# Asturian translation for mate-screensaver
+# Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2007.
+# Xose S. Puente <xspuente at gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-11 09:55+0100\n"
+"PO-Revision-Date: 2008-10-16 20:53+0000\n"
+"Last-Translator: Astur <malditoastur at gmail.com>\n"
+"Language-Team: Asturian <mate at softastur.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Launchpad-Export-Date: 2009-02-10 00:24+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Curiapantalles"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Afite les sos preferencies pal curiapantalles"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Previsualización del curiapantalles</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Atención: la pantalla nun sedrá bloqueada pol usuariu root.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "_Xestor Enerxía"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Considerar l'equipu como _inactivu después de:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferencies del Curiapantalles"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Previsualización del curiapantalles"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activar el curiapantalles cuando l'equipu tea inactivu"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "B_loquiar la pantalla cuando'l curiapantalles tea activu"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "Vista _previa"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema del _curiapantalles:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Temes del Curiapantalles"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Curiapantalles"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activalu cuando tea inactivu"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Permitir incluyir un tecláu na ventana"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Permitir colar"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Permitir cambiu d'usuariu"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Comandu teclau incluyíu"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Bloquiar al activase"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Comandu pa colar"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Mou d'esbilla de curiapantalles"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Ponga esto como TRUE p'activar el curiapantalles cuando esta sesión tea "
+"inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Establecer en TRUE pa permitir incrustar un tecláu na ventana al tentar de "
+"descandar. La clave \"keyboard_command\" ha ser establecida col comandu "
+"afechiscu."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Ponga esto como TRUE pa bloquiar la pantalla cuando s'active'l "
+"curiapantalles."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Ponga esto como TRUE pa ufiertar una opción nel diálogu de desbloquiar pa "
+"cambiar a una cuenta d'usuariu distintu."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Ponga esto como TRUE pa ufiertar una opción nel diálogu de desbloquiar pa "
+"desconeutase depués d'un cachu. El cachu especifícase na tecla \"logout_delay"
+"\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"El comandu que va ser executáu, si la clave \"embedded_keyboard_enabled\" ta "
+"definida como TRUE,  pa incorporar un widget de tecláu na ventana. Esti "
+"comandu habría implementar una interfaz XEMBED de conexión y sacar una "
+"ventana XID na salidad estándar."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"El comandu a invocar cuando se calca'l botón de salida de sesión. Esti "
+"comandu habría sacar al usuariu ensin nenguna interaición. Esta clave namái "
+"tien efeutu si la clave \"logout_enable\" ta definida como TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"El númberu de minutos que pasen desque'l curiapantalles s'activa hasta que "
+"se bloquia la sesión."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"El númberu de minutos depués de l'activación del curiapantalles y enantes "
+"d'apaecer la opción de salir de la sesión nel diálogu de desbloquéu. Esta "
+"clave namái tien efeutu si la clave \"logout_enable\" ta definida como TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"El númberu de minutos d'inactividá antes de considerar la sesión inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"El númberu de minutos que pasen enantes de cambiar el tema del "
+"curiapantalles."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"El númberu de segundos d'inactividá enantes de señalar haza la xestión "
+"d'enerxía. Esta clave ta definida y caltenida pol axente de xestión "
+"d'enerxía de la sesión."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"El mou de seleición usáu pol curiapantalles. Pue ser \"blank-only\" "
+"p'activar el curiapantalles ensin usar nengún tema, \"single\" p'activar el "
+"curiapantalles usando namái un tema (especificáu na clave \"themes\") y "
+"\"random\" p'activa el curiapantalles usando un tema al debalu."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema pal diálogu de la candadura"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema  que s'usará pal diálogu de la candadura."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Esta clave especifica la llista de temes que van ser usaos pol "
+"curiapantalles. Ye inorada cuando la clave \"mode\" ta \"blank-only\", "
+"habría proporcionar el nome del tema cuando \"mode\" ta \"single\", y habría "
+"proporcionar una llista de temes cuando \"mode\" ta \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tiempu antes de bloquiase"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tiempu antes de la opción de colar"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tiempu enantes de la llinia de base del xestor d'enerxía"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tiempu enantes de considerar la sesión como inactiva"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tiempu antes de cambiar tema"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Dexar un mensaxe pa %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U en %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Encaboxar"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "_Dexar Mensaxe"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "_Desconeutar"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "Camudar d'U_suariu"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1366
+msgid "_Unlock"
+msgstr "Desbloq_uiar"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Amuesa una presentación de semeyes del cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Borboya'l logo del piesón de MATE alredior de la pantalla"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Pies Flotando"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Amuesa una presentación de la so carpeta de Semeyes"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Carpeta de Semeyes"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Una rede pop-artística de colores rescamplantes."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Cuadraos pop art"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Amosar los caminos que siguen les imáxenes"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Rotar ocasionalmente les imáxenes mentes se mueven"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Amosar la tasa de cuadros per segundu y otres estadístiques"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Másimu númberu de semeyes manteníes en pantalla"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Tamañu y posición de ventana inicial"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ANCHUxALTOR+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "La fonte de semeya a usar"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - les semeyes floten pela pantalla"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Consulte --help pa información d'usu.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Tien d'especificar una semeya. Consulte --help pa información d'usu.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Señes de dónde garrar les semeyes"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "RUTA"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Color a usar pa semeyes en fondu"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Semeyes nun aleatories dende llocalización"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Nun intentar axustar semeya a pantalla"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Copiando ficheros"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "A:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Copiando temes"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Tema de curiapantalles nun válidu"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s nun paez un tema de curiapantalles válidu."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copiando ficheru: %u de %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Fai que'l curiapantalles zarre bien"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Entrugar estáu del curiapantalles"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Entrugar la duración del tiempu dende que fue activáu'l curiapantalles"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Indica al procesu de curiapantalles n'execución que cande la pantalla nel "
+"intre"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Si'l curiapantalles ta activu entós camudar a otra demo gráfica"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Prender el curiapantalles (apagar la pantalla)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Si'l curiapantalles ta activu entós desactivalu (prender la pantalla)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Unviar mensaxes al curiapantalles n'execución pa simular actividá del usuariu"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inhibir l'activación del curiapantalles. El comandu blóquiase mentes la "
+"inhibición ta activa."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "La llamada de l'aplicación deshabilitó'l curiapantalles"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "El motivu pa inhibir el curiapantalles"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versión d'esta aplicación"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "El curiapantalles ye %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "activu"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "inactivu"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "El curiapantalles nun ta inhibíu\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "El curiapantalles ta siendo inhibíu por:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "El curiapantalles foi activáu pa %d segundos.\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "Amosar salida depuración"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "Amosar el botón de logout"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "Comandu invocáu dende'l botón logout"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "Amosar el botón de camudar usuariu"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "Mensaxe a amosar nel diálogu"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "MENSAXE"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Nome d'usuariu:"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Tienes que camudar la to contraseña nel intre (contraseña caducada)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Fuiste requeríu pa camudar la clave inmediatamente (forzáu pol root)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"La to cuenta espiró; por favor, contauta col to alministrador del sistema"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "Nun s'especificó contraseña dala"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "Clave non camudada"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Nun pudo garrase nome d'usuariu"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "Reescribe la nueva clave UNIX"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "Introduz nueva clave UNIX"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "(actual) Clave UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "Error al camudar la contraseñar NIS."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "Tienes qu'escoyer una clave llarga"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "Clave ta n'usu. Escueye otra."
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "Debes esperar pa camudar la to clave"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "Sientolo, clave nun camudada"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Comprobando..."
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Falló l'autentificación."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Pantalla en blancu"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aleatoriu"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hores"
+msgstr[1] "%d hores"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minutos"
+msgstr[1] "%d minutos"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segundos"
+msgstr[1] "%d segundos"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Enxamás"
+
+#: ../src/mate-screensaver-preferences.c:1453
+msgid "Could not load the main interface"
+msgstr "Nun fue a cargar la interfaz principal"
+
+#: ../src/mate-screensaver-preferences.c:1455
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Por favor, asegúrese de que'l curiapantalles tea bien instaláu"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nun convertise nun daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Activar códigu de depuración"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nun pudo establecese serviciu %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Nun pudo afitase PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Contraseña incorrecta."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Nun se permite acceder nesti momentu."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Yá nun se te permite acceder más al sistema."
+
+#: ../src/gs-listener-dbus.c:1847
+msgid "failed to register with the message bus"
+msgstr "falló'l rexistru col bus de mensaxes"
+
+#: ../src/gs-listener-dbus.c:1857
+msgid "not connected to the message bus"
+msgstr "nun se coneutó al bus de mensaxes"
+
+#: ../src/gs-listener-dbus.c:1866
+msgid "screensaver already running in this session"
+msgstr "el curiapantalles yá se ta executando nesta sesión"
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "Pasó'l tiempu."
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr "Tien les mayúscules prendíes."
+
+#: ../src/gs-lock-plug.c:1346
+msgid "S_witch User..."
+msgstr "_Trocar usuariu..."
+
+#: ../src/gs-lock-plug.c:1355
+msgid "Log _Out"
+msgstr "Dec_oneutar"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1531
+msgid "%U on %h"
+msgstr "%U en %h"
+
+#: ../src/gs-lock-plug.c:1545
+msgid "_Password:"
+msgstr "_Contraseña:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Razón pa entamar otra vegada"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "El motivu pa tar ausente del equipu."
diff --git a/po/be.po b/po/be.po
new file mode 100644
index 0000000..9509b15
--- /dev/null
+++ b/po/be.po
@@ -0,0 +1,742 @@
+# Belarusian translation for mate-screensaver
+# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006
+# This file is distributed under the same license as the mate-screensaver package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-09 22:48+0000\n"
+"PO-Revision-Date: 2008-03-10 02:19+0200\n"
+"Last-Translator: Alexander Nyakhaychyk <nyakhaychyk at gmail.com>\n"
+"Language-Team: Belarusian <i18n at mova.rg>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Ахоўнік экрана"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Вызначэньне пераваг ахоўніка экрана"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Дэманстрацыя ахоўніка</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Увага: для карыстальніка root экран ня будзе заблякаваны.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "Кіраваньне с_ілкаваньнем"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Лічыць, што кампутар бязьдзейнічае, _пасьля:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Перавагі ахоўніка экрана"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Дэманстрацыя ахоўніка"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "Зад_зейнічаць ахоўнік экрана, калі кампутар бяздзейнічае"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "За_мкнуць экран, калі ахоўнік экрана задзейнічаны"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "Д_эманстрацыя"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "_Тэма ахоўніка:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "Тэмы ахоўніка экрана"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Ахоўнікі экрана"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Задзейнічаць, калі не заняты"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Дазволіць убудаваную ў вакно клявіятуру"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Дазволіць завяршэньне сэансу"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Дазволіць пераключэньне карыстальнікаў"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "Загад для ўбудаванай клявіятуры"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "Дазволіць замыкаць экран"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "Загад завяршэньня сэансу"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "Прычына адсутнічаньня"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "Рэжым вылучэньня тэмы ахоўніка экрана"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Выстаўце ў TRUE (ісьціна), каб задзейнічаць ахоўнік экрана ў час прастою "
+"сэанса."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Зьмяніце на TRUE, каб дазволіць убудаваньне экраннай клявіятуры ў час спробы "
+"разблякаваньня экрану. Ключ \"keyboard_command\" мусіць вызначаць адпаведны "
+"загад."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Выстаўце ў TRUE (ісьціна), каб замкнуць экран калі будзе задзейнічаны "
+"ахоўнік экрана."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Выстаўце ў TRUE (ісьціна), каб прапанаваць пераключэньне карыстальніка ў "
+"дыялёзе адмыканьня экрана."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Выстаўце у TRUE (ісьціна), каб прапанаваць опцыю завяршэньне сэанса ў дыялёгу "
+"адмыканьня экрана паьсля пэўнай затрымкі. Затрымка задаецца ключом \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Загад, які будзе выкананы, калі ісьцінны ключ \"embedded_keyboard_enabled\", "
+"каб убудаваць віджэт клявіятуры ў вакно. Гэты загад мусіць зьдзяйсьняць "
+"інтэрфэйс XEMBED і выводзіць XID вакна ў стандартны вывад."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Загад, які трэба выклікаць, калі пстрыкнута кнопка завяршэньня сэансу. Гэты загад "
+"мусіць завяршаць сэанс карыстальніка без аніякага ўзаемадзеяньня зь ім. Гэты "
+"ключ дзейнічае толькі тады, калі ключ \"logout_enable\" мае значэньне TRUE (ісьціна)."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Колькасьць хвілін, пасьля задзейнічаньня ахоўніка экран, перад тым, як будзе "
+"замкнёны экран."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Колькасьць хвілін пасьля актывацыі ахоўніка экрана, першы чым опцыя "
+"завяршэньня сэансу зьявіцца ў дыялёзе адмыканьня. Гэты ключ дзейнічае "
+"толькі калі \"logout_enable\" выстаўлены ў ісьціну."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Колькасьць хвілін без актыўнасьці, перш чым сэанс будзе лічыцца бязьдзейсным."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Колькасьць хвілін паміж зьменамі тэм ахоўніка экрану."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Колькасьць сэкундаў без актыўнасьці, пер чым сыгналізаваць кіраўніку сілкаваньня. "
+"Гэты ключ падтрымліваецца сэансам агента кіраўніка сілкаваньня."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "Прычына адсутнічаньня за кампутарам."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Рэжым ахоўніка экрану. Можа быць: \"blank-only\" - каб уключыць ахоўнік бяз "
+"тэмы, \"single\" - каб уключыць ахоўнік з тэмай (вызначаецца ў ключы \"themes"
+"\") і \"random\" - каб уключыць ахоўнік з выпадковай тэмай."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Тэма дыялёгу замыканьня"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Тэма для дыялёга замыканьня."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Гэты ключ задае сьпіс тэм, якія будзе выкарыстоўваць ахоўнік экрану. Ён "
+"ігнаруецца, калі ключ \"mode\" мае значэньне \"blank-only\", мусіць "
+"прадастаўляць толькі адну назву, калі \"mode\" = \"single\" і мусіць "
+"прадастаўляць сьпіс, калі \"mode\" = \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Час да замыканьня"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Час да зьяўленьня магчымасьці выхаду"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Час да адключэньня сілкаваньня"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Час, пасьля якога лічыцца, што сэанс бязьдзейнічае"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Час перад зьменай тэмы"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Пакінуць паведамленьне для %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U на %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Скасаваць"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "Пакінуць _цэдулку"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "Вы_йсьце"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "Кары_стальнік..."
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1212
+msgid "_Unlock"
+msgstr "Ада_мкнуць"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Космас"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Адлюстроўвае слайд-шоў зь відарысамі космасу"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Ступы MATE лётаюць па экране"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Лятучыя стопы"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Адлюстроўвае слайд-шоў з вашых відарысаў"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Тэчка з відарысамі"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Папулярныя краты пулюсуючых колераў."
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Каляровыя квадраты"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Паказваць траэкторыі відарысаў"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Выпадкова варочваць відарысы ў час руху"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Друкаваць частату кадраў і іншыя даныя"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Найбольшая колькасьць відарысаў на экране"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Пачатковы памер і пазыцыя вакна"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ШЫРЫНЯxВЫШЫНЯ+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Зыходны відарыс"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - відарысы, якія лётаюц на экране"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Глядзіце --help для зьвестак аб выкарыстаньні.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Вы мусіце задаць адзін відарыс. Глядзіце --help для зьвестак аб "
+"выкарыстаньні.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Шлях, дзе знаходзяцца відарысы"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ШЛЯХ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Колер для тла відарысаў"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#ччззсс\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Не перамешваць відарысы пэўнага места"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Не спрабаваць расьцягнуць відарысы на ўвесь экран"
+
+#: ../src/copy-theme-dialog.c:211
+msgid "Copying files"
+msgstr "Капіяваньне файлаў"
+
+#: ../src/copy-theme-dialog.c:229
+msgid "From:"
+msgstr "Адкуль:"
+
+#: ../src/copy-theme-dialog.c:233
+msgid "To:"
+msgstr "Куды:"
+
+#: ../src/copy-theme-dialog.c:253
+msgid "Copying themes"
+msgstr "Капіяваньне тэмаў"
+
+#: ../src/copy-theme-dialog.c:297
+msgid "Invalid screensaver theme"
+msgstr "Нерэчаісная тэма"
+
+#: ../src/copy-theme-dialog.c:300
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s не зьяўляецца рэчаіснай тэмай ахоўніка экрана."
+
+#: ../src/copy-theme-dialog.c:480
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Капяваньне файла: %u з %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Прымушае ахоўнік экрану зграбна завяршыць працу"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Апытвае стан ахоўніка экрану"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Запыт часу актыўнай працы ахоўніка экрана"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Паведамі бягучаму працэсу ахоўніка экрана неадкладна замкнуць экран"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Калі ахоўнік экрана актыўны, пераключыцца на інушю графічную дэманстрацыю"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Уключыць ахоўнік экрана (пусты экран)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Калі ахоўнік экрана актыўны, дэактывізаваць яго (скасаваць пусты экран)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Піхнуць бягучы ахоўнік экрана, каб эмітаваць актыўнасьць карыстальніка"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Стрымаць ахоўнік экрана ад працы.  Загад заблякаваны, покуль актыўна "
+"стрымліваньне."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Названае дастасаваньне стрымлівае ахоўніка экрана"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Прычына стрымліваньня ахоўніка экрана"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:55
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Вэрсія гэтага дастасаваньня"
+
+#: ../src/mate-screensaver-command.c:249
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Ахоўнік экрана %s\n"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "active"
+msgstr "актыўны"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "inactive"
+msgstr "неактыўны"
+
+#: ../src/mate-screensaver-command.c:274
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Ахоўні экрана быў актыўны %d сэкундаў.\n"
+
+#: ../src/mate-screensaver-dialog.c:53
+msgid "Show debugging output"
+msgstr "Паказваць вывад адладкі"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show the logout button"
+msgstr "Паказваць кнопку выхаду"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Command to invoke from the logout button"
+msgstr "Загад, які выклікаецца ў час актывацыі кнопкі выхаду"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the switch user button"
+msgstr "Пакзаваць кнопку пераключэньня карыстальнікаў"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Message to show in the dialog"
+msgstr "Тэкст дыялёгу:"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:173 ../src/mate-screensaver-dialog.c:174
+#: ../src/mate-screensaver-dialog.c:175 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Карыстальнік:"
+
+#: ../src/mate-screensaver-dialog.c:176 ../src/mate-screensaver-dialog.c:177
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Пароль:"
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Вам мусіце неадкладна зьмяніць ваш пароль (скончыўся час яго існаваньня)"
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Вам мусіце неадкладна зьмяніць ваш пароль (прымушае root)"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Скончыўся час існаваньня рахунка; калі ласка, зьвяжыцеся з сыстэмным "
+"адміністратарам"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "No password supplied"
+msgstr "Пароль не прадастаўлены"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Password unchanged"
+msgstr "Пароль ня зьменены"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "Can not get username"
+msgstr "Немагчыма вызначыць уліковае імя"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Retype new UNIX password:"
+msgstr "Паўтарыце новы UNIX проль:"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Enter new UNIX password:"
+msgstr "Увядзіце новы UNIX пароль:"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "(current) UNIX password:"
+msgstr "(бягучы) UNIX пароль:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Error while changing NIS password."
+msgstr "Памылка ў час зьмены паролю ў NIS."
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "You must choose a longer password"
+msgstr "Вы мусіце выбраць даўжэйшы пароль"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Password has been already used. Choose another."
+msgstr "Пароль ужо выкарыстоўваўся раней. Выбярыце іншы."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must wait longer to change your password"
+msgstr "Вы мусіце чакаць крыху больш, калі зьмяняеце ваш пароль"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Sorry, passwords do not match"
+msgstr "Нажаль, паролі не супадаюць"
+
+#: ../src/mate-screensaver-dialog.c:257
+msgid "Checking..."
+msgstr "Праверка..."
+
+#: ../src/mate-screensaver-dialog.c:299 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Збой аўтэнтыфікацыі."
+
+#: ../src/mate-screensaver-preferences.c:498
+msgid "Blank screen"
+msgstr "Чорны экран"
+
+#: ../src/mate-screensaver-preferences.c:504
+msgid "Random"
+msgstr "Выпадковая тэма"
+
+#: ../src/mate-screensaver-preferences.c:954
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d гадзіна"
+msgstr[1] "%d гадзіны"
+msgstr[2] "%d гадзін"
+
+#: ../src/mate-screensaver-preferences.c:957
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d хвіліна"
+msgstr[1] "%d хвіліны"
+msgstr[2] "%d хвілін"
+
+#: ../src/mate-screensaver-preferences.c:960
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d сэкунда"
+msgstr[1] "%d сэкунды"
+msgstr[2] "%d сэкундаў"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:966
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:969
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:972
+#: ../src/mate-screensaver-preferences.c:980
+#: ../src/mate-screensaver-preferences.c:984
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:999
+#, c-format
+msgid "Never"
+msgstr "Ніколі"
+
+#: ../src/mate-screensaver-preferences.c:1398
+msgid "Could not load the main interface"
+msgstr "Не загружаць асноўнае спалучэньне"
+
+#: ../src/mate-screensaver-preferences.c:1400
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Калі ласка, упэўніцеся, што ахоўнік экрана правільна ўсталяваны"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Не працаваць як дэман"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Задзейнічаць код адладкі"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Немагчыма ўсталяваць службу %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Немагчыма задаць PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Няслушны пароль."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Доступ да сыстэмы ў гэты час забаронены."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Доступ да сыстэмы забаронены."
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "немагчыма зарэгістравацца на шыне паведамленьняў"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "не далучаны да шыны паведамленьняў"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "ахоўнік экрана ўжо працуе ў гэтым сэансе"
+
+#: ../src/gs-lock-plug.c:269
+msgid "Time has expired."
+msgstr "Час выйшаў."
+
+#: ../src/gs-lock-plug.c:297
+msgid "You have the Caps Lock key on."
+msgstr "У вас уключаны Caps Lock."
+
+#: ../src/gs-lock-plug.c:1192
+msgid "S_witch User..."
+msgstr "Карыстальнік..."
+
+#: ../src/gs-lock-plug.c:1201
+msgid "Log _Out"
+msgstr "Завяршыць _сэанс"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1378
+msgid "%U on %h"
+msgstr "%U на %h"
+
+#: ../src/gs-lock-plug.c:1392
+msgid "_Password:"
+msgstr "_Пароль:"
diff --git a/po/be at latin.po b/po/be at latin.po
new file mode 100644
index 0000000..568815c
--- /dev/null
+++ b/po/be at latin.po
@@ -0,0 +1,1000 @@
+# Biełaruski pierakład mate-screensaver.
+# Copyright (C) 2007 THE mate-screensaver'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the marco.mate package.
+# Alaksandar Navicki <zolak at lacinka.org> & Łacinka.org 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-10-11 12:28+0300\n"
+"PO-Revision-Date: 2008-02-17 00:31+0200\n"
+"Last-Translator: Ihar Hrachyshka <ihar.hrachyshka at gmail.com>\n"
+"Language-Team: i18n at mova.org <i18n at mova.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Belarusian latin\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Źbierahalnik ekranu"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Nałady źbierahalnika ekranu"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Pieradahlad źbierahalnika ekranu</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Uvaha: ekran nia budzie blakavany dla karystalnika root.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "Kiravańnie _enerhijaj"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Pierachod u stan _biaździejańnia paśla:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Nałady źbierahalnika ekranu"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Pieradahlad źbierahalnika ekranu"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Uruchom źbierahalnika ekranu, kali kamputar u stanie biaździejańnia"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Blakuj ekran, kali źbierahalnik aktyŭny"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "_Pieradahlad"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "_Matyŭ źbierahalnika ekranu:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "Matyvy źbierahalnika ekranu"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Źbierahalniki ekranu"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktyvizuj u vypadku stanu biaździejańnia"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Dazvalaj pakazvać klavijaturu ŭ vaknie"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Dazvalaj karystalniku vyjści"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Dazvalaj pieraklučać karystalnikaŭ"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "Zahad ekrannaj klavijatury"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "Blakuj ekran pry aktyvizacyi"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "Zahad dla vyjścia karystalnika"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "Pryčyna adychodu"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "Režym vybaru matyvu źbierahalnika ekranu"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Zaznač hetuju opcyju, kab aktyvizavać źbierahalnika ekranu ŭ stanie "
+"biaździejańnia."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Zaznač hetuju opcyju, kab pakazvać klavijaturu na zablakavanym ekranie. U "
+"klučy \"keyboard_command\" musić być naładžany adpaviedny zahad."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Zaznač hetuju opcyju, kab blakavać ekran pry ŭruchamleńni źbierahalnika."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Zaznač hetuju opcyju, kab mahčy pieraklučać karystalnikaŭ niepasredna z "
+"zablakavanaha ekranu."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Zaznač hetuju opcyju, kab mahčy vyjści karystalnikam niepasredna z "
+"zablakavanaha ekranu paśla zadadzienaha pramiežku času. Hety pramiežak "
+"naładžvajuć u klučy \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Zahad uklučeńnia ekrannaj klavijatury, jaki budzie vykanany, kali kluč "
+"\"embedded_keyboard_enabled\" aktyŭny. Hety zahad pavinien mieć "
+"zaimplementavany interfejs plugina XEMBED i pavinna vyvodzić XID vakna na "
+"standartnaje vyjście."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Zahad, kab vykanać paśla nacisku knopki \"vyjdzi\". Hety zahad pavinien "
+"vyvieści karystalnika bieź nijakaha jahonaha ŭdziełu. Hety kluč budzie ŭžyty "
+"tolki tady, kali kluč \"logout_enable\" znachodzicca ŭ pazycyi PRAŬDA."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Kolkaść chvilin spaźnieńnia blakavańnia ekranu ad času ŭruchamleńnia "
+"źbierahalnika."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Čas u chvilinach, paśla jakoha pajavicca opcyja vyjścia, ad času "
+"ŭruchamleńnia źbierahalnika ekranu. Hety kluč budzie ŭžyty tolki tady, kali "
+"kluč \"logout_enable\" u pazycyi PRAŬDA."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Čas adsutnaści aktyŭnaści ŭ chvilinach, paśla jakoha adbyvajecca pierachod u "
+"stan biaździejnaści."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Kolkaść chvilin pamiž źmienami matyvaŭ źbierahalnika ekranu."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Kolkaść sekundaŭ adsutnaści aktyŭnaści, paśla jakoj budzie vysłany syhnał da "
+"kiravańnia enerhijaj. Hety kluč stvarajecca i naładžvajecca ahientam sesii "
+"kiravańnia enerhijaj."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "Pryčyna adychodu ad kamputara."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Režym vybaru źbierahalnika ekranu. Moža być adnoj z nastupnych vartaściaŭ: "
+"\"blank-only\" – čorny ekran (matyvy vyklučanyja), \"single\" – užyvańnie "
+"adnaho matyvu (abranaha ŭ klučy \"themes\"), \"random\" – vypadkovy vybar "
+"matyvu."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Matyŭ zablakavanaha ekranu"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Matyŭ, užyvany dla vakna dyjalohu zablakavanaha ekranu."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Hety kluč akreślivaje, katoryja z matyvaŭ źbierahalnika ekranu buduć "
+"vykarystanyja. Kali kluč \"mode\" maje vartaść \"blank-only\", hety "
+"parametar budzie ihnaravany. U vypadku, kali \"mode\" maje vartaść \"single"
+"\", hety kluč pavinien mieć adnu nazvu matyvu, a ŭ vypadku, kali \"mode\" "
+"maje vartaść \"random\", u im pavinien być śpis nazvaŭ."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Adstup času pierad zablakavańniem ekranu"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Adstup času pierad aktyvizacyjaj opcyi vyjścia karystalnika"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Adstup času pierad aktyvizacyjaj kiravańnia enerhijaj"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Čas, paśla jakoha sesija budzie ličycca biaździejnaj"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Adstup času pamiž źmienami matyvaŭ"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Pakiń paviedamleńnie dla %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U na %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Anuluj"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "_Pakiń paviedamleńnie"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "_Vyjdzi"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Pieraklučy karystalnika"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1366
+msgid "_Unlock"
+msgstr "_Adblakuj"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmas"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Pakazvaje zdymki kosmasu"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Pakazvaje na ekranie stopy (lahatyp MATE)"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Latučyja stopy"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Pakazvaje vyjavy z tvajoj tečki pad nazvaj Vyjavy"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Tečka z vyjavami"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pakazvaje sietku kvadrataŭ z pulsavańniem koleraŭ."
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Kalarovyja kvadraty"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Pakazvaje ściežki, pa jakich ruchajucca vyjavy"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Vypadkova abaročvaje vyjavy ŭ ruchu"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Pakazvaje kolkaść kadraŭ na sekundu i inšuju statystyku"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Maksymalnaja kolkaść vyjavaŭ, pakazvanaja na ekranie"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAKS_VYJAVAŬ"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Pačatkovy pamier i pałažeńnie vakna"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ŠYRYNIAxVYŠYNIA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Vytočnaja vyjava"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image – pakazvaje na ekranie latučyja vyjavy"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Skarystaj parametar --help, kab pabačyć instrukcyju.\n"
+
+#: ../savers/floaters.c:1209
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Treba abrać adnu vyjavu. Skarystaj parametar --help, kab pabačyć "
+"instrukcyju.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Pałažeńnie, ź jakoha buduć pachodzić vyjavy"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ŚCIEŽKA"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Fonavy koler dla vyjavaŭ"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Nie pakazvaj vypadkova vyjavy z pałažeńnia"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Nie sprabuj raściahnuć vyjavy na ŭvieś ekran"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kapijavańnie fajłaŭ"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Z:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Da:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kapijavańnie matyvaŭ"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Niapravilny matyŭ źberahalnika ekranu"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s nie źjaŭlajecca pravilnym matyvam źbierahalnika ekranu."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kapijavańnie fajłu: %u z %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Vyklučaje źbierahalnik ekranu"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Apisvaje stan źbierahalnika ekranu"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Apisvaje čas aktyŭnaści źbierahalnika ekranu"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Pryvodzić da nieadkładnaha zablakavańnia ekranu pry ŭruchomlenym "
+"źbierahalniku"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Kali źbierahalnik ekranu aktyŭny, pieraklučaje na nastupny hrafičny matyŭ"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Aktyvizuje źbierahalnik ekranu"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Kali źbierahalnik aktyŭny, pieraklučaje ŭ nieaktyŭny stan"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Hieneruje padzieju, jakaja symuluje aktyŭnaść karystalnika"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Strymvaj aktyvizacyju źbierahalnika ekranu. Zahady blakavanyja, pakul "
+"ustrymańnie ŭklučanaje."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Aplikacyja, jakaja strymvaje aktyvizacyju źbierahalnika ekranu"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Pryčyna ŭstrymvańnia źbierahalnika ekranu"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Apisvaje versiju hetaj aplikacyi"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Źbierahalnikam ekranu źjaŭlajecca %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "aktyŭny"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "nieaktyŭny"
+
+#: ../src/mate-screensaver-command.c:321
+msgid "The screensaver is not inhibited\n"
+msgstr "Źbierahalnik ekranu nia ŭstrymany\n"
+
+#: ../src/mate-screensaver-command.c:327
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Źbierahalnik ekranu ŭstrymany prahramaju:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Źbierahalnik ekranu aktyŭny %d sekundaŭ.\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "Pakazvaj vyjście debugavańnia"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "Pakazvaj knopku vyjścia"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "Zahad, kab vykanać pry nacisku knopki vyjścia"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "Pakazvaj knopku pieraklučeńnia karystalnikaŭ"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "Paviedamleńnie, kab pakazać u vaknie dyjalohu"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "PAVIEDAMLEŃNIE"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Karystalnik:"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Parol:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Vymahanaja nieadkładnaja źmiena parolu (minuŭ peryjad prydatnaści parolu)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Vymahanaja nieadkładnaja źmiena parolu (hetaha vymahaje root)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Tvoj kont praterminavany; skantaktujsia z administrataram systemy"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "Parol nia ŭviedzieny"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "Parol nia źmienieny"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Niemahčyma atrymać nazvy karystalnika"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "Napišy parol UNIX znoŭ:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "Novy parol UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "parol UNIX (dzejny):"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "Pamyłka pry źmienie parolu NIS."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "Treba abrać daŭžejšy parol"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "Hety parol užo byŭ užyvany. Treba abrać inšy."
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "Pry źmienie parolu treba pačakać trochi daŭžej"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "Paroli nie adnolkavyja"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Pravierka..."
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Aŭtaryzacyja nie ŭdałasia"
+
+#: ../src/mate-screensaver-preferences.c:515
+msgid "Blank screen"
+msgstr "Čorny ekran"
+
+#: ../src/mate-screensaver-preferences.c:521
+msgid "Random"
+msgstr "Vypadkova"
+
+#: ../src/mate-screensaver-preferences.c:971
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hadzinu"
+msgstr[1] "%d hadziny"
+msgstr[2] "%d hadzinaŭ"
+
+#: ../src/mate-screensaver-preferences.c:974
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d chvilinu"
+msgstr[1] "%d chviliny"
+msgstr[2] "%d chvilinaŭ"
+
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekundu"
+msgstr[1] "%d sekundy"
+msgstr[2] "%d sekundaŭ"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:986
+#: ../src/mate-screensaver-preferences.c:994
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:989
+#: ../src/mate-screensaver-preferences.c:997
+#: ../src/mate-screensaver-preferences.c:1001
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1016
+msgid "Never"
+msgstr "Nikoli"
+
+#: ../src/mate-screensaver-preferences.c:1443
+msgid "Could not load the main interface"
+msgstr "Niemahčyma zahruzić hałoŭny interfejs"
+
+#: ../src/mate-screensaver-preferences.c:1445
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Upeŭnisia, ci źbierahalnik ekranu pravilna zainstalavany"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nie stanavisia demanam (fonavaj pasłuhaj)"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Aktyvizuj kod debugavańnia"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Niemahčyma ŭstalavać pasłuhu %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Niemahčyma naładzić PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Parol niapravilny."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "U dadzieny momant dostup nie dazvoleny."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Dazvoł na dostup da systemy admienieny."
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "niemahčyma zarehistravacca na šynie paviedamleńniaŭ"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "niama padłučeńnia da šyny paviedamleńniaŭ"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "źbierahalnik ekranu ŭžo ŭruchomleny ŭ hetaj sesii"
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "Limit času pierakročany."
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr "Klaviša Caps Lock nacisnutaja."
+
+#: ../src/gs-lock-plug.c:1346
+msgid "S_witch User..."
+msgstr "_Pieraklučy karystalnika..."
+
+#: ../src/gs-lock-plug.c:1355
+msgid "Log _Out"
+msgstr "_Vyjście"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1532
+msgid "%U on %h"
+msgstr "%U na %h"
+
+#: ../src/gs-lock-plug.c:1546
+msgid "_Password:"
+msgstr "_Parol:"
+
+#~ msgid "Copying '%s'"
+#~ msgstr "Kapijavańnie \"%s\""
+
+#~ msgid "From URI"
+#~ msgstr "Z URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "Vytočny URI"
+
+#~ msgid "To URI"
+#~ msgstr "Da URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "Metavy URI"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Skončanaja častka"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Skončanaja častka pieradačy"
+
+#~ msgid "Current URI index"
+#~ msgstr "Dziejny indeks URI"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Dziejny indeks URI – pačynajučy ad 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Usich URI"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Kolkaść usich URI"
+
+#~ msgid "Connecting..."
+#~ msgstr "Spałučeńnie..."
+
+#~ msgid "Authentication"
+#~ msgstr "Aŭtaryzacyja"
+
+#~ msgid "Note"
+#~ msgstr "Zaŭvaha"
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "_Switch user..."
+#~ msgstr "_Pieraklučy karystalnika..."
+
+#~ msgid "S_witch to user:"
+#~ msgstr "Przełączenie na _użytkownika:"
+
+#~ msgid "Time before activation"
+#~ msgstr "Odstęp czasu przed aktywacją"
+
+#~ msgid "Manager"
+#~ msgstr "Menedżer"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "Menedżer, który jest właścicielem tego obiektu."
+
+#~ msgid "Name"
+#~ msgstr "Nazwa"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "Nazwa ekranu X11, do którego odnosi się ten obiekt."
+
+#~ msgid "User"
+#~ msgstr "Użytkownik"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr ""
+#~ "Użytkownik, który jest aktualnie zalogowany na wirtualnym terminalu."
+
+#~ msgid "Console"
+#~ msgstr "Konsola"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr "Numer wirtualnej konsoli, na której znajduje się ekran, lub %-1."
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Określa czy ten ekran jest ekranem zagnieżdżonym."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr ""
+#~ "Z nieznanych przyczyn nie można połączyć się z menedżerem wyświetlania."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr ""
+#~ "Menedżer wyświetlania jest wyłączony, lub zbyt stara wersja menedżera."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "Przekroczono ustalony limit ilości elastycznych serwerów."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "Wystąpił nieokreślony błąd podczas uruchamiania X serwera."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X serwer nie zakończył procesu uruchamiania."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "Zbyt dużo uruchomionych sesji X."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "Zagnieżdżony serwer X (Xnest) nie mógł skomunikować się z X serwerem."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "X serwer, określony w konfiguracji MDM, nie został odnaleziony."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "Próba ustawienia nieznanej akcji wylogowania, lub próba ustawienia "
+#~ "niedostępnej akcji wylogowania."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Wirtualne terminale nie są obsługiwane."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Nieprawidłowy numer wirtualnego terminala."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "Próba aktualizacji nieobsługiwanego klucza konfiguracji."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "Brak pliku ~/.Xauthority, lub plik źle skonfigurowany."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr ""
+#~ "Menedżer wyświetlania zawieszony z powodu zbyt dużej ilości odebranych "
+#~ "komunikatów."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "Menedżer wyświetlania wysłał nieznany komunikat o błędzie."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "Użytkownik, którego reprezentuje ta pozycja menu."
+
+#~ msgid "Icon Size"
+#~ msgstr "Rozmiar ikony"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "Rozmiar ikony."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Rozmiar wskaźnika"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Rozmiar wskaźnika zaznaczenia"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Odstęp wskaźnika"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Odstęp między nazwą użytkownika a wskaźnikiem"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "Obiekt menedżera użytkowników, który kontroluje tego użytkownika."
+
+#~ msgid "Show Details"
+#~ msgstr "Wyświetl szczegóły"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (menedżer logowania MATE) nie jest uruchomiony."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Prawdopobnie w systemie uruchomiony jest inny menedżer wyświetlania, taki "
+#~ "jak KDM (menedżer wyświetlania KDE) lub xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Aby nadal korzystać z tej funkcji, należy uruchomić MDM. W przypadku "
+#~ "problemów z uruchamianiem MDM, pomoc administratora systemowego może "
+#~ "okazać się niezbędna."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "Nie można skontaktować się z MDM (menedżerem wyświetlania MATE)."
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Być może uruchomiona wersja MDM jest zbyt stara."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "Nie można skomunikować się z mdm. Być może uruchomiona wersja jest zbyt "
+#~ "stara."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "Przekroczono ustalony limit ilości elastycznych X serwerów."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "Podczas uruchamiania X serwera wystąpiły błędy."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr ""
+#~ "Uruchamianie X serwera nie powiodło się.  Być może jest źle "
+#~ "skonfigurowany."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "Zbyt wiele uruchomionych sesji X."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "Zagnieżdżony serwer X (Xnest) nie mógł połączyć się z twoim serwerem X.  "
+#~ "Być może brakuje piku autoryzacji X."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "Zagnieżdżony serwer X (Xnest) jest niedostępny lub mdm jest źle "
+#~ "skonfigurowany. \n"
+#~ "Aby skorzystać z zagnieżdżonego logowania, należy zainstalować pakiet "
+#~ "Xnest."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "Serwer X jest niedostępny. Prawdopodobnie mdm jest źle skonfigurowany."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Próba zmiany na nieprawidłowy numer wirtualnego terminala."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Brak wystarczających uprawnień do wykonania tej operacji. Być może plik ."
+#~ "Xauthority jest niepoprawnie skonfigurowany."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "MDM zawieszony z powodu zbyt dużej ilości odebranych komunikatów."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "Wystąpił nieznany błąd."
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..664427a
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,783 @@
+# Bulgarian translation of mate-screensaver po-file.
+# Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+# Rostislav "zbrox" Raykov <zbrox at i-space.org>, 2005, 2006.
+# Alexander Shopov <ash at contact.bg>, 2005, 2006, 2007, 2008, 2009.
+# Yavor Doganov <yavor at gnu.org>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-22 18:55+0300\n"
+"PO-Revision-Date: 2009-08-22 18:55+0300\n"
+"Last-Translator: Alexander Shopov <ash at contact.bg>\n"
+"Language-Team: Bulgarian <dict at fsa-bg.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Предпазител на екрана"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Настройване на предпазителя на екрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Преглед на темата</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Внимание: екранът няма да бъде заключен за администратора.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Управление на захранването"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Сесията е _неактивна след:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Настройки на предпазителя на екрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Преглед на предпазителя на екрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "В_ключване на предпазителя на екрана при неактивна сесия"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Заключване на екрана при задействане на предпазителя"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Преглед"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Тема на предпазителя на екрана:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Теми за предпазителя"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Предпазители на екрана"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Включване при неактивна сесия"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Позволяване на вграждането на клавиатура в прозореца"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Позволяване на изход"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Позволяване на показването на състоянието на сесията"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Позволяване на показването на съобщение за състоянието на сесията, когато "
+"екранът е заключен."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Позволяване на превключването на потребител"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Вградена клавиатурна команда"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Заключване при задействане"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Команда за изход"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Режим на избор на тема на екранния предпазител"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Дали екранният предпазител да се задейства при неактивна сесия."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Задайте това да е истина, за да се позволи вграждане на клавиатура в "
+"прозореца при опит за отключване. Клавишът „keyboard_command“ трябва да "
+"съдържа подходящата команда."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Дали екранният предпазител да заключва екрана при задействането си."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Дали да се дава възможност за превключване към друг потребител в диалога за "
+"отключване"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Дали да се дава възможността за изход в диалога за отключване след известно "
+"време. То се задава в ключа „logout_delay“."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Командата, която ще бъде стартирана, ако ключът „embedded_keyboard_enabled“ "
+"е зададен да е истина, за да се вгради графичен обект-клавиатура в "
+"прозореца. Тази команда трябва да ползва интерфейса XEMBED и на стандартния "
+"изход да извежда идентификаторът на прозореца — XID."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Коя команда да се изпълнява при натискането на бутона за изход. Командата "
+"трябва да доведе до изхода на потребителя без вход от потребителя. Този ключ "
+"е в сила, единствено ако ключът „logout_enable“ е истина."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Броят минути време след задействане на екранния предпазител преди да се "
+"изчисти екрана"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Броят минути след задействане на екранния предпазител, преди да се появи "
+"бутон за изход в диалога за отключване. Този ключ е в сила, единствено ако "
+"ключът „logout_enable“ е истина."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Броят минути време бездействие, за да се счете сесията за неактивна"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"Броят минути изпълнение, преди да се смени темата на екранния предпазител"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Броят секунди бездействие, преди да се сигнализира на управлението на "
+"захранването. Този ключ се задава и се поддържа от програмата за "
+"управлението на захранването."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Режимът за избор на екранния предпазител. „blank-only“ позволява задействане "
+"без никаква тема, „single“ позволява задействане с една тема (тя е указана в "
+"ключа „themes“), а „random“ позволява случайна тема при задействане на "
+"предпазителя."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Тема за прозореца за заключен екран"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Тема на прозореца за заключен екран."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Ключът указва списъка с темите за екранния предпазител. Този ключ е без "
+"значение, когато режимът в ключа „mode“ е „blank-only“. Този ключ трябва да "
+"съдържа името на темата, когато режимът е „single“, а когато режимът е "
+"„random“, трябва да съдържа списък с имена на темите."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Време преди заключване"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Време преди възможност за изход"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Време преди съобщаване на управлението на захранване"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Време, за да се счете сесията за неактивна"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Време преди промяна на темата"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Оставяне на съобщение за %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U на %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Отказ"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Оставяне на _съобщение"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Изход"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Смяна на потребител"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Отключване"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Космос"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Показва прожекция със снимки от космоса"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Логото на MATE със стъпалото се движи по екрана"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Летящи табани"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Показва прожекция от папката със снимки"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Папка за снимки"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Мрежа от пулсиращи цветове в стил поп-арт."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Квадрати поп-арт"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Показване на пътищата, по които се движат изображенията"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Изображенията понякога да се въртят при движението си"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Отпечатване на броя кадри в секунда и други статистики"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Максималният брой изображения, които да се държат на екрана"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "МАКС_ИЗОБРАЖЕНИЯ"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Първоначалният размер и местоположение на прозореца"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ШИР.xВИС.+ОТМ.поX+ОТМ.поY"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Изображение, което да се ползва"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image — разни изображения движат по екрана"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. За помощ използвайте опцията „--help“.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Трябва да укажете едно изображение. За помощ използвайте опцията „--help“.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Място, от което да се вземат изображенията"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ПЪТ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Цвят за фона на изображенията"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "„#rrggbb“"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Изображенията от местоположението да се показват последователно"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Изображенията да не се разтягат по екрана"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Копиране на файлове"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "От:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "До:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Копиране на теми"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Грешна тема за екранния предпазител"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s не изглежда да е валидна тема за екранния предпазител."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Копиране на файл: %u от %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Кара екранният предпазител да се затвори"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Запитване за състоянието на екранния предпазител"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr ""
+"Запитване за времето на активност на екранния\n"
+"                             предпазител"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Съобщава на стартирания екранен предпазител\n"
+"                             веднага да заключи екрана"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Ако екранният предпазител е включен, да се\n"
+"                             превключи към друга визуализация"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr ""
+"Включване на екранния предпазител (изчистване\n"
+"                             на екрана)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Ако екранният предпазител е активен — да се\n"
+"                             деактивира (включване на екрана)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Взаимодействане с работещия екранен предпазител за\n"
+"                             симулация на потребителска дейност"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Да не се допуска стартиране на предпазителя на\n"
+"                             екрана. Командата блокира докато забраната е\n"
+"                             активна."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+"Викащата програма, която не допуска стартирането на\n"
+"                             предпазителя на екрана"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr ""
+"Причината за недопускането на стартирането на\n"
+"                             предпазителя на екрана"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Версия на програмата"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Екранният предпазител е %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "активен"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "неактивен"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Стартирането на екранният предпазител не се допуска\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Стартирането на екранният предпазител не се допуска от:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Екранният предпазител се е задействал преди %d секунди.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "В момента екранният предпазител не е включен.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Показване на информацията за изчистване на грешки"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Показване на бутона за изход"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Команда стартирана от бутона за изход"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Показване на бутона за смяна на потребителя"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Съобщение, което да се покаже в прозореца"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "СЪОБЩЕНИЕ"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Не се използва"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Потребител:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Парола:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Изисква се да смените паролата си незабавно (остаряла парола)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Необходимо е незабавно да смените паролата (администраторът ви е задължил)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Регистрацията ви е изтекла. Свържете се със системния администратор."
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Не е предоставена парола"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Паролата е непроменена"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Не може да се получи потребителското име"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Въведете отново новата парола за UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Въведете нова парола за UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(текуща) парола за UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Грешка при сменяне на паролата за NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Трябва да изберете друга парола."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Паролата вече е използвана. Изберете друга."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Трябва да изчакате по-дълго, за да смените паролата си."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Паролите не съвпадат."
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Проверка…"
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Неуспех при удостоверяването."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Черен екран"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Произволна"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d час"
+msgstr[1] "%d часа"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d минута"
+msgstr[1] "%d минути"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d секунда"
+msgstr[1] "%d секунди"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s, %s и %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s и %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Никога"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Неуспех при зареждането на главния интерфейс"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Уверете се, че предпазителя на екрана е инсталиран правилно."
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Да не се преминава в режим на демон"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Да се включи режим на изчистване на грешки"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Стартиране на предпазителя на екрана и заключване"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Не може да се установи услугата %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Не може да се настрои PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Неправилна парола."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "В момента нямате право на достъп."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Вече нямате право на достъп до системата."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "неуспех при регистрирането към шината за съобщенията"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "няма връзка с шината за съобщенията"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "предпазителят на екрана вече е стартиран в тази сесия"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Времето изтече."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Клавишът „Caps Lock“ е натиснат."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Смяна на потребител…"
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Изход"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U на %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "Па_рола:"
diff --git a/po/bn.po b/po/bn.po
new file mode 100644
index 0000000..379b535
--- /dev/null
+++ b/po/bn.po
@@ -0,0 +1,774 @@
+# Bengali translation for mate-screensaver
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Mahay Alam Khan (মাহে আলম খান) <makl10n at yahoo.com>, 2006.
+# Runa Bhattacharjee <runab at fedoraproject.org>, 2008.
+# Runa Bhattacharjee <runab at redhat.com>, 2008, 2009.
+# Loba Yeasmeen <loba at ankur.org.bd>, 2009.
+# Israt Jahan <israt at ankur.org.bd>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: bn\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-12-14 20:28+0000\n"
+"PO-Revision-Date: 2010-03-24 14:53+0600\n"
+"Last-Translator: Israt Jahan <israt at ankur.org.bd>\n"
+"Language-Team: Bengali <ankur-bd-l10n at googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "স্ক্রিন-সেভার"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "স্ক্রিন-সেভারের পছন্দসমূহ নির্ধারণ করুন"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>স্ক্রিন-সেভারের প্রাকদর্শন</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>সতর্কবার্তা: root ব্যবহারকারীর জন্য পর্দা লক করা হবে না।</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "বিদ্যুৎ ব্যবস্থাপনা (_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "কিছু সময় অতিবাহিত হলে কম্পিউটারে স্থগিত বিবেচনা করা হবে: (_i)"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "স্ক্রীনসেভারের পছন্দসমূহ"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "স্ক্রিন-সেভারের প্রাকদর্শন"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "নিষ্ক্রিয় অবস্থায় কম্পিউটারে স্ক্রিন-সেভার সক্রিয় করা হবে (_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "স্ক্রিন-সেভার সক্রিয় হলে পর্দা লক করা হবে (_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "প্রাকদর্শন (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "স্ক্রিন-সেভারের থীম: (_S)"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "স্ক্রীনসেভার থীম"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "স্ক্রীন সেভার"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "যখন নিষ্ক্রিয় থাকবে তখন সক্রিয় করা হবে"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "উইন্ডোর মধ্যে কীবোর্ড সন্নিবেশ করা যাবে"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "লগআউট অনুমোদন করুন"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "প্রদর্শন করার জন্য সেশনের অবস্থার বার্তা অনুমোদন করা হবে"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "পর্দা লক করা হলে, প্রদর্শন করার জন্য সেশনের অবস্থার বার্তা অনুমোদন করা হবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "ব্যবহারকারী পরিবর্তন অনুমোদন করুন"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "সন্নিবেশিত কীবোর্ড কমান্ড"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "সক্রিয় হলে লক করা হবে"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "লগআউট কমান্ড"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "স্ক্রিন-সেভারের থীম নির্বাচনের মোড"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "সেশন নিষ্ক্রিয় হলে স্ক্রিন-সেভার সক্রিয় করার জন্য এই মান TRUE নির্ধারণ করুন।"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"অনবরুদ্ধ করার প্রচেষ্টাকালে উইন্ডোর মধ্যে একটি কীবোর্ড সন্নিবেশ করার জন্য মান TRUE "
+"নির্ধারণ করুন। \"keyboard_command\" কী এর ক্ষেত্রে প্রযোজ্য মান নির্ধারণ করা আবশ্যক।"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "স্ক্রিন-সেভার সক্রিয় করার সময় পর্দা লক করার জন্য মান TRUE নির্ধারণ করুন।"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"অনবরুদ্ধ করার ডায়ালগ বাক্সের মধ্যে ভিন্ন অ্যাকাউন্টে পরিবর্তনের অপশন প্রস্তাব করার জন্য "
+"মান TRUE নির্ধারণ করুন।"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"অনবরুদ্ধ করার ডায়ালগ বাক্সের মধ্যে কিছু সময়ের বিলম্বের পরে লগ-আউট করার বিকল্প "
+"প্রস্থাব করার জন্য মান TRUE নির্ধারণ করুন। \"logout_delay\" কী দ্বারা বিলম্বকাল "
+"নির্ধারণ করা হয়।"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" কী এর মান TRUE নির্ধারণ করা হলে, উইন্ডোর মধ্যে "
+"কীবোর্ড উইজেট সন্নিবেশ করার জন্য যে কমান্ড সঞ্চালিত হবে। এই কমান্ড দ্বারা একটি "
+"XEMBED প্লাগ ইন্টারফেস প্রয়োগ করা হবে ও আদর্শ আউটপুটের মধ্যে একটি উইন্ডো XID প্রদর্শন "
+"করা হবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"লগ-আউটের বোতাম ক্লিক করা হলে যে কমান্ড প্রয়োগ করা হবে। এই কমান্ডের সাহায্যে, কোনো "
+"ধরনের যোগাযোগ ব্যতীত ব্যবহারকারীকে লগ-আউট করা হবে। \"logout_enable\" কী এর মান "
+"TRUE নির্ধারণ করা হলেই এই বৈশিষ্ট্য প্রয়োগ করা যাবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"স্ক্রিন-সেভার সক্রিয়করণ ও পর্দা লক করার মধ্যে সময়ের ব্যবধান, মিনিট অনুযায়ী নির্ধারিত।"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"স্ক্রিন-সেভার সক্রিয়করণ ও অনবরুদ্ধ ডায়ালগ বাক্সের মধ্যে লগ-আউটের বিকল্প প্রদর্শন করার "
+"মধ্যে সময়ের ব্যবধান, মিনিট অনুযায়ী নির্ধারিত। \"logout_enable\" কী এর মান TRUE "
+"নির্ধারণ করা হলে এই বৈশিষ্ট্য প্রয়োগ করা যাবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"সেশনক নিষ্ক্রিয় বিবেচনা করার পূর্বে নিষ্ক্রিয়তার অবস্থার সময়কাল, মিনিট অনুযায়ী "
+"নির্ধারিত।"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"স্ক্রিন-সেভারের থীম পরিবর্তনের পূর্ব স্ক্রিন-সেভার চালনার সময়কাল, মিনিট অনুযায়ী ধার্য।"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"বিদ্যুৎ ব্যবস্থাপনাকে চিহ্নিত করার পূর্বে নিষ্ক্রিয়তার সময়কাল, সেকেন্ড অনুযায়ী "
+"নির্ধারিত। সেশনের ক্ষেত্রে প্রযোজ্য বিদ্যুৎ ব্যবস্থাপনার এজেন্ট দ্বারা এই কী এর মান "
+"নির্ধারণ এবং পরিচালনা করা হয়।"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"স্ক্রিন-সেভার দ্বারা ব্যবহৃত নির্বাচনের মোড। সম্ভাব্য মান \"blank-only\" - স্ক্রিন-"
+"সেভার আরম্ভ করা হলে কোনো থীম প্রয়োগ করা হবে না, \"single\" - স্ক্রিন-সেভার আরম্ভ "
+"করা হলে শুধুমাত্র একটি থীম প্রয়োগ করা হবে (\"themes\" কী এর মান দ্বারা নির্দিষ্ট), "
+"এবং \"random\" - স্ক্রিন-সেভার আরম্ভ করা হলে যে কোনো একটি থীম যথেচ্ছ ভাবে "
+"নির্বাচন করে প্রয়োগ করা হবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "লক ডায়ালগে ব্যবহারের জন্য থীম"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "লক ডায়ালগে ব্যবহারের জন্য নির্ধারিত থীম"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"স্ক্রিন-সেভার দ্বারা ব্যবহারযোগ্য থীমের তালিকা এই কী দ্বারা নির্ধারণ করা হয়। \"mode"
+"\" কী এর মান \"blank-only\" হলে এটি অগ্রাহ্য করা হবে, \"mode\" কী এর মান  "
+"\"single\" হলে থীমের নাম সরবরাহ করা হবে ও \"mode\" কী এর মান \"random\" হলে "
+"থীমের তালিকা সরবরাহ করা হবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "লক করার পূর্বের সময়"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "লগ-আউট অপশনের পূর্বের সময়"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "বিদ্যুৎ ব্যবস্থাপনার বেসলাইনের পূর্বের সময়"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "সেশনকে নিষ্ক্রিয় নির্ধারণের পূর্বের সময়"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "থীম পরিবর্তনের পূর্বের সময়"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R এর জন্য বার্তা লিখুন:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U, %h এর উপর</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "বাতিল (_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "বার্তা লিখুন (_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "লগ আউট (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "ব্যবহারকারী পরিবর্তন করুন (_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "অনবরুদ্ধ (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "কসমস"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "কসমস এর ছবিগুলোর একটি স্লাইডশো প্রদর্শন করুন"
+
+# Please Fix Me- mak
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "পর্দার মধ্যে MATE এর পায়ের লোগোটি বুদবুদের মতো প্রদর্শন"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "ভাসমান পা"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "আপনার ছবির ফোল্ডার থেকে একটি স্লাইডশো প্রদর্শন করুন"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "ছবির ফোল্ডার"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "পপ-আর্টের মত একটি স্পন্দনরত রঙের গ্রিড"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "পপ আর্ট বর্গক্ষেত্র"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "ছবিগুলি দ্বারা অনুসরণযোগ্য পাথ"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "ছবিগুলির অবস্থা পরিবর্তনের সময় কয়েকবার ঘোরানো হবে"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "ফ্রেমের হার ও অন্যান্য পরিসংখ্যান মুদ্রণ করা হবে"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "পর্দায় প্রদর্শনযোগ্য সর্বাধিক ছবির সংখ্যা"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "উইন্ডোর প্রারম্ভিক মাপ ও অবস্থান"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "ব্যবহারযোগ্য মূল ছবি"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "চিত্র - পর্দা জুড়ে চিত্র ভাসমান"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. দেখুন --ব্যবহারের তথ্যের জন্য সহায়তা।\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"একটি ছবি উল্লেখ করা আবশ্যক।  ব্যবহারপ্রণালী সম্পর্কিত তথ্য জানার জন্য --help দেখুন।\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ছবি প্রাপ্তির অবস্থান"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "ছবির পটভূমিতে ব্যবহারযোগ্য রং"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "মূল অবস্থান থেকে প্রাপ্ত ছবিগুলি যথেচ্ছ ভাবে প্রদর্শিত হবে না"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "পর্দার মধ্যে ছবিগুলিকে প্রসারিত করা হবে না"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ফাইলের অনুলিপি করা হচ্ছে"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "হতে:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "প্রতি:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "থীম কপি করা হচ্ছে"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "স্ক্রিন-সেভারের থীম বৈধ নয়"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s সম্ভবত বৈধ স্ক্রিন-সেভারের থীম নয়।"
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ফাইল কপি করা হচ্ছে: %2$u এর %1$u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "এর ফলে, স্ক্রিন-সেভার থেকে সঠিকরূপে প্রস্থান করবে"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "স্ক্রিনসেভারের অবস্থা জানুন"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "স্ক্রিন-সেভার সক্রিয়তার সময়কাল অনুসন্ধান করুন"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "এর ফলে, স্ক্রিন-সেভার প্রক্রিয়াকে অবিলম্বে পর্দা লক করার নির্দেশ দেওয়া হয়"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "স্ক্রিন-সেভার সক্রিয় থাকলে ভিন্ন গ্রাফিক্স ডেমোতে পরিবর্তন করা হয়"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "স্ক্রিন-সেভার সক্রিয় করুন (পর্দা ফাঁকা থাকবে)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "স্ক্রিন-সেভার সক্রিয় থাকলে তা নিষ্ক্রিয় করা হবে (পর্দা ফাঁকা থাকবে না)"
+
+# নাড়িয়ে দিন পরিবর্তন করতে পারলে ভাল
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "ব্যবহারকারীর কাজের অনুকরণ করার জন্য চলমান স্ক্রিন-সেভার প্রবেশ করানো হয়"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"স্ক্রিন-সেভার সক্রিয় করতে প্রতিরোধ করা হবে।  প্রতিরোধ ব্যবস্থা সক্রিয় থাকাকালীন "
+"কমান্ডের সক্রিয়তা সীমাবদ্ধতা।"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "স্ক্রিন-সেভার প্রতিরোধকারী কল করার অ্যাপ্লিকেশন"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "স্ক্রিন-সেভার প্রতিরোধের কারণ"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "এই অ্যাপলিকেশনটির সংস্করণ"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "স্ক্রিনসেভারটি হচ্ছে %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "সক্রিয়"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "নিষ্ক্রিয়"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "স্ক্রিন-সেভার প্রতিরোধ করা হয়নি\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "স্ক্রিন-সেভার প্রতিরোধকারী:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "%d সেকেন্ড অবধি স্ক্রিন-সেভার সক্রিয় ছিল।\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "স্ক্রিন-সেভার বর্তমানে সক্রিয় নয়।\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "ডিবাগিং আউটপুট প্রদর্শন করা হবে"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "লগ আউট বোতাম প্রদর্শন করা হবে"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "লগ-আউট বোতাম থেকে প্রাপ্ত কমান্ড"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "ব্যবহারকারী পরিবর্তনের বোতাম প্রদর্শন করা হবে"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "ডায়ালগের মধ্যে প্রদর্শনের জন্য নির্ধারিত পাঠ্য"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "ব্যবহৃত হয়নি"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ব্যবহারকারী নাম:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "পাসওয়ার্ড:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "অবিলম্বে পাসওয়ার্ড পরিবর্তন করা আবশ্যক (পাসওয়ার্ডের মেয়াদ পূর্ণ হয়েছে)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "অবিলম্বে পাসওয়ার্ড পরিবর্তন করা আবশ্যক (root দ্বারা বাধ্যতামূলক)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"আপনার অ্যাকাউন্টের ব্যবহারকালের মেয়াদ উত্তীর্ণ হয়েছে; অনুগ্রহ করে সিস্টেম "
+"অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "পাসওয়ার্ড উল্লেখ করা হয়নি"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "পাসওয়ার্ড পরিবর্তন করা হয়নি"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "ব্যবহারকারীর নাম পাওয়া যায় না"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "নতুন UNIX পাসওয়ার্ড পুনরায় লিখুন:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "নতুন UNIX পাসওয়ার্ড লিখুন:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(বর্তমান) UNIX পাসওয়ার্ড:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS পাসওয়ার্ড পরিবর্তন করতে ত্রুটি।"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "দীর্ঘ পাসওয়ার্ড নির্বাচন করা আবশ্যক"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "এই পাসওয়ার্ড ইতোমধ্যেই ব্যবহৃত হয়েছে। অনুগ্রহ করে একটি পৃথক পাসওয়ার্ড লিখুন।"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "পাসওয়ার্ড পরিবর্তনের জন্য আরো কিছু সময় অপেক্ষা করা আবশ্যক"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "দুঃখিত, পাসওয়ার্ডে মিলে না"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "পরীক্ষা করা হচ্ছে..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "প্রমানিকরণ ব্যর্থ।"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "ফাঁকা পর্দা"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "যথেচ্ছ"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ঘন্টা"
+msgstr[1] "%d ঘন্টা"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d মিনিট"
+msgstr[1] "%d মিনিট"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d সেকেন্ড"
+msgstr[1] "%d সেকেন্ড"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "কখনোই না"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "প্রধান ইন্টারফেস লোড করা যায়নি"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "অনুগ্রহ করে স্ক্রিন-সেভার সঠিক রূপে ইনস্টল করা হয়েছে কি না তা নিশ্চিত করুন"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ডেমন তৈরি করা হবে না"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "কোড ডিবাগ সক্রিয় করা হবে"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "স্ক্রিন-সেভার এবং লক করার প্রোগ্রাম আরম্ভ করুন"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%s পরিসেবা নির্ধারণ করতে ব্যর্থ: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s নির্ধারণ করতে ব্যর্থ"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "ভুল পাসওয়ার্ড।"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "এই মুহূর্তে প্রবেশ অনুমোদিত নয়।"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "সিস্টেম ব্যবহারের অনুমতি প্রদান করে না।"
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "মেসেজ বাসের সাথে নিবন্ধন করতে ব্যর্থ"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "মেসেজ বাসের সাথে সংযুক্ত নয়"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "বর্তমান সেশনে ইতোমধ্যেই স্ক্রিন-সেভার চলছে"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "সময় অতিবাহিত হয়ে গেছে।"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Caps Lock কী সক্রিয়।"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "ব্যবহারকারী পরিবর্তন করুন (_w)"
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "লগ আউট (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U, %h এর উপর"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "পাসওয়ার্ড (_P):"
diff --git a/po/bn_IN.po b/po/bn_IN.po
new file mode 100644
index 0000000..aeb43e2
--- /dev/null
+++ b/po/bn_IN.po
@@ -0,0 +1,767 @@
+# translation of bn_IN.po to Bengali INDIA
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Mahay Alam Khan (মাহে আলম খান) <makl10n at yahoo.com>, 2006.
+# Runa Bhattacharjee <runab at fedoraproject.org>, 2008.
+# Runa Bhattacharjee <runab at redhat.com>, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: bn_IN\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-08-28 12:14+0530\n"
+"Last-Translator: Runa Bhattacharjee <runab at redhat.com>\n"
+"Language-Team: Bengali INDIA <anubad at lists.ankur.org.in>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "স্ক্রিন-সেভার"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "স্ক্রিন-সেভার সংক্রান্ত পছন্দ নির্ধারণ করুন"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>স্ক্রিন-সেভারের পূর্বরূপ প্রদর্শন</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>সতর্কবার্তা: root ব্যবহারকারীর জন্য পর্দা লক করা হবে না।</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "বিদ্যৎ সরবরাহ পরিচালনা (_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "চিহ্নিত সময় অতিবাহিত হলে কম্পিউটারে কর্ম সঞ্চালন স্থগিত ধার্য করা হবে: (_i)"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "স্ক্রীনসেভারের পছন্দতালিকা"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "স্ক্রিন-সেভারের পূর্বরূপ প্রদর্শন"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "কর্মহীন অবস্থায় কম্পিউটারে স্ক্রিন-সেভার সক্রিয় করা হবে (_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "স্ক্রিন-সেভার সক্রিয় হলে পর্দা লক করা হবে (_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "পূর্বরূপ প্রদর্শন (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "স্ক্রিন-সেভারের থিম: (_S)"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "স্ক্রীনসেভার থিম"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "স্ক্রীনসেভার"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "যখন নিস্ক্রিয় থাকবে তখন সক্রিয় করো"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "উইন্ডোর মধ্যে কি-বোর্ড এমবেড করা যাবে"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "লগআউট অনুমোদন করুন"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "সেশানের অবস্থা সূচনাকারী বার্তা প্রদর্শন করা হবে"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "পর্দা লক করা হলে, সেশানের অবস্থা সূচনাকারী বার্তা প্রদর্শন করা হবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "ব্যবহারকারীদের পরিবর্তন অনুমোদন করুন"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "এমবেড করা কি-বোর্ড সংক্রান্ত কমান্ড"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "সক্রিয় হলে লক করা হবে"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "লগআউট কমান্ড"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "স্ক্রিন-সেভারের থিম নির্বাচনের মোড"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "সেশনের মধ্যে কর্ম স্থগিত হলে স্ক্রিন-সেভার সক্রিয় করার জন্য এই মান TRUE নির্ধারণ করুন।"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"আন-লক করার প্রচেষ্টাকালে উইন্ডোর মধ্যে একটি কি-বোর্ড এমবেড করার জন্য মান TRUE "
+"(সত্য) নির্ধারণ করুন। \"keyboard_command\" কি-র ক্ষেত্রে প্রযোজ্য মান নির্ধারণ করা "
+"আবশ্যক।"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "স্ক্রিন-সেভার সক্রিয় করার সময় পর্দা লক করার জন্য মান TRUE নির্ধারণ করুন।"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"আন-লক ডায়লগ বক্সের মধ্যে ভিন্ন অ্যাকাউন্টে পরিবর্তনের বিকল্প উপলব্ধ করার জন্য মান "
+"TRUE (সত্য) নির্ধারণ করুন।"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"আন-লক ডায়লগ বক্সের মধ্যে কিছু সময়ের বিলম্বের পরে লগ-আউট করার বিকল্প উপলব্ধ করার "
+"জন্য মান TRUE (সত্য) নির্ধারণ করুন। \"logout_delay\" কি দ্বারা বিলম্ব কাল নির্ধারণ "
+"করা হয়।"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" কি-র মান TRUE (সত্য) ধার্য করা হলে, উইন্ডোর মধ্যে "
+"কি-বোর্ড উইজেট এমবেড করার জন্য যে কমান্ড সঞ্চালিত হবে। এই কমান্ড দ্বারা একটি "
+"XEMBED প্লাগ ইন্টারফেস প্রয়োগ করা হবে ও স্ট্যান্ডার্ড আউটপুটের মধ্যে একটি উইন্ডো XID "
+"প্রদর্শন করা হবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"লগ-আউটের বাটন ক্লিক করা হলে যে কমান্ড প্রয়োগ করা হবে। এই কমান্ডের সাহায্যে, কোনো "
+"ধরনের আলাপনবিনা ব্যবহারকারীকে লগ-আউট করা হবে। \"logout_enable\" কি-র মান TRUE "
+"(সত্য) ধার্য করা হলেই এই বৈশিষ্ট্য প্রয়োগ করা যাবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "স্ক্রিন-সেভার সক্রিয়করণ ও পর্দা লক করার মধ্যে সময়ের ব্যবধান, মিনিট অনুযায়ী ধার্য।"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"স্ক্রিন-সেভার সক্রিয়করণ ও আন-লক ডায়লগ বক্সের মধ্যে লগ-আউটের বিকল্প প্রদর্শন করার "
+"মধ্যে সময়ের ব্যবধান, মিনিট অনুযায়ী ধার্য। \"logout_enable\" কি-র মান TRUE (সত্য) "
+"ধার্য করা হলে এই বৈশিষ্ট্য প্রয়োগ করা যাবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "সেশানকে কর্মবিহীন চিহ্নিত করার পূর্বে কর্মবিহীন অবস্থার সময়কাল, মিনিট অনুযায়ী ধার্য।"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "স্ক্রিন-সেভারের থিম পরিবর্তনের পূর্ব স্ক্রিন-সেভার চালনার সময়কাল, মিনিট অনুযায়ী ধার্য।"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"বিদ্যুৎ পরিচালন ব্যবস্থাকে চিহ্নিত করার পূর্বে কর্মবিহীন অবস্থার সময়কাল, সেকেন্ড "
+"অনুযায়ী ধার্য। সেশানের ক্ষেত্রে প্রযোজ্য বিদ্যুৎ-পরিচালনার এজেন্ট দ্বারা এই কি-র মান "
+"ধার্য ও পরিচালনা করা হয়।"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"স্ক্রিন-সেভার দ্বারা ব্যবহৃত নির্বাচনের মোড। সম্ভাব্য মান \"blank-only\" - স্ক্রিন-"
+"সেভার আরম্ভ করা হলে কোনো থিম প্রয়োগ করা হবে না, \"single\" - স্ক্রিন-সেভার আরম্ভ "
+"করা হলে শুধুমাত্র একটি থিম প্রয়োগ করা হবে (\"themes\" কি-র মান দ্বারা নির্দিষ্ট), "
+"এবং \"random\" - স্ক্রিন-সেভার আরম্ভ করা হলে যে কোনো একটি থিম যথেচ্ছ ভাবে "
+"নির্বাচন করে প্রয়োগ করা হবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "লক ডায়লগে ব্যবহারের জন্য থিম"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "লক ডায়লগে ব্যবহারের জন্য নির্ধারিত থিম"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"স্ক্রিন-সেভার দ্বারা ব্যবহারযোগ্য থিমের তালিকা এই কি দ্বারা নির্ধারণ করা হয়। \"mode"
+"\" কি-র মান \"blank-only\" হলে এটি অগ্রাহ্য করা হবে, \"mode\" কি-র মান  "
+"\"single\" হলে থিমের নাম উপলব্ধ করা হবে ও \"mode\" কি-র মান \"random\" হলে "
+"থিমের তালিকা উপলব্ধ করা হবে।"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "সময়, লক করার পূর্বে"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "সময়, লগ-আউট অপশন এর পূর্বে"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "বিদ্যুৎ পরিচালনার পূর্বে অপেক্ষাকাল"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "সেশানকে কর্মবিহীন নির্ধারণের পূর্বে অপেক্ষাকাল"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "সময়, থিম পরিবর্তনের পূর্বে"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R-র জন্য বার্তা লিখুন:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U, %h-র উপর</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "বাতিল (_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "বার্তা লিখুন (_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "লগ আউট করুন (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "ব্যবহারকারী পরিবর্তন করুন (_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "আনলক (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "কসমস"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "কসমস এর ছবিগুলোর একটি স্লাইডশো প্রদর্শন করুন"
+
+# Please Fix Me- mak
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "পর্দার মধ্যে MATE-র পায়ের লোগোটি বুদবুদের মতো প্রদর্শন"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "ভাসমান পা"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "আপনার ছবির ফোল্ডার এর োর একটি স্লাইডশো প্রদর্শন করুন"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "ছবির ফোল্ডার"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "A pop-art-ish grid of pulsing colors."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "পপ আর্ট স্কোয়ার"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "ছবিগুলি দ্বারা অনুসরণযোগ্য পাথ"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "ছবিগুলির অবস্থা পরিবর্তনের সময় কয়েকবার ঘোরানো হবে"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "ফ্রেমের গতি ও অন্যান্য পরিসংখ্যান প্রদর্শন করা হবে"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "পর্দায় প্রদর্শনযোগ্য সর্বাধিক ছবির সংখ্যা"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "উইন্ডোর প্রারম্ভিক মাপ ও অবস্থান"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "ব্যবহারযোগ্য মূল ছবি"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - ভাসাবে images পর্দা জুড়ে"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. দেখুন --ব্যবহারের তথ্যের জন্য.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"একটি ছবি উল্লেখ করা আবশ্যক।  ব্যবহারপ্রণালী সম্পর্কিত তথ্য জানার জন্য --help প্রয়োগ "
+"করুন।\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ছবি প্রাপ্ত করার অবস্থান"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "ছবির পটভূমিতে ব্যবহারযোগ্য রঙ"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "মূল অবস্থান থেকে প্রাপ্ত ছবিগুলি যথেচ্ছ ভাবে প্রদর্শিত হবে না"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "পর্দার মধ্যে ছবিগুলিকে প্রসারিত করা হবে না"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ফাইল কপি করা হচ্ছে"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "হইতে:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "প্রতি:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "থিম কপি করার প্রণালী"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "স্ক্রিন-সেভারের থিম বৈধ নয়"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s সম্ভবত বৈধ স্ক্রিন-সেভারের থিম নয়।"
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ফাইল কপি করা হচ্ছে: %u, সর্বমোট %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "এর ফলে, স্ক্রিন-সেভার সঠিকরূপে বন্ধ হবে"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "স্ক্রিনসেভারের অবস্থা জানুন"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "স্ক্রিন-সেভার চালনার অবকাল অনুসন্ধান করুন"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "এর ফলে, স্ক্রিন-সেভার পরিসেবাকে অবিলম্বে পর্দা লক করার নির্দেশ দেওয়া হয়"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "স্ক্রিন-সেভার সক্রিয় থাকলে ভিন্ন গ্রাফিক্স ডেমোতে পরিবর্তন করা হয়"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "স্ক্রিন-সেভার সক্রিয় করুন (পর্দা ফাঁকা থাকবে)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "স্ক্রিন-সেভার সক্রিয় থাকলে তা নিষ্ক্রিয় করা হবে (পর্দা ফাঁকা থাকবে না)"
+
+# নাড়িয়ে দিন পরিবর্তন করতে পারলে ভাল
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "ব্যবহারকারী দ্বারা সঞ্চালিত কর্মের অনুকরণ করার জন্য স্ক্রিন-সেভার নাড়িয়ে দিন"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"স্ক্রিন-সেভার আরম্ভ করতে প্রতিরোধ করা হবে।  প্রতিরোধ ব্যবস্থা সক্রিয় থাকাকালীন "
+"কমান্ডের সঞ্চালনের সীমাবদ্ধতা।"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "স্ক্রিন-সেভার প্রতিরোধকারী অ্যাপ্লিকেশন"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "স্ক্রিন-সেভার প্রতিরোধের কারণ"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "এই অ্যাপলিকেশনটির সংস্করণ"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "স্ক্রিনসেভারটি হচ্ছে %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "সক্রিয়"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "নিষ্ক্রিয়"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "স্ক্রিন-সেভার প্রতিরোধ করা হয়নি\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "স্ক্রিন-সেভার প্রতিরোধকারী:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "%d সেকেন্ড অবধি স্ক্রিন-সেভার সক্রিয় ছিল।\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "স্ক্রিন-সেভার বর্তমানে সক্রিয় নয়।\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "ডিবাগিং আউটপুট প্রদর্শন করুন"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "লগ আউট বাটন দেখাও"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "লগ-আউট বাটন দ্বারা সঞ্চালিত কমান্ড"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "ব্যবহারকারী পরিবর্তনের বাটন প্রদর্শন করা হবে"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "ডায়লগের মধ্যে প্রদর্শনের জন্য নির্ধারিত টেক্সট"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "ব্যবহৃত হয়নি"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ব্যবহারকারী:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "পাসওয়ার্ড:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "অবিলম্বে পাসওয়ার্ড পরিবর্তন করা আবশ্যক (পাসওয়ার্ডের মেয়াদ পূর্ণ হয়েছে)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "অবিলম্বে পাসওয়ার্ড পরিবর্তন করা আবশ্যক (root দ্বারা বাধ্যতামূলক)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"আপনার অ্যাকাউন্টের ব্যবহারকালের মেয়াদ উত্তীর্ণ হয়েছে; অনুগ্রহ করে সিস্টেম "
+"অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "পাসওয়ার্ড উল্লেখ করা হয়নি"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "পাসওয়ার্ড পরিবর্তন করা হয়নি"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "ব্যবহারকারীর নাম"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "নতুন UNIX পাসওয়ার্ড পুনরায় লিখুন:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "নতুন UNIX পাসওয়ার্ড লিখুন:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(বর্তমান) UNIX পাসওয়ার্ড:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS পাসওয়ার্ড পরিবর্তন করতে ত্রুটি।"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "দীর্ঘ মাপের পাসওয়ার্ড নির্বাচন করা আবশ্যক"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "এই পাসওয়ার্ড ব্যবহৃত হয়েছে। অনুগ্রহ করে একটি পৃথক পাসওয়ার্ড লিখুন।"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "পাসওয়ার্ড পরিবর্তনের জন্য আরো কিছু কাল অপেক্ষা করা আবশ্যক"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "দুঃখিত, পাসওয়ার্ডে গরমিল"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "পরীক্ষা করা হচ্ছে..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "অনুমোদন বিফল।"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "ফাঁকা পর্দা"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "যথেচ্ছ"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ঘন্টা"
+msgstr[1] "%d ঘন্টা"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d মিনিট"
+msgstr[1] "%d মিনিট"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d সেকেন্ড"
+msgstr[1] "%d সেকেন্ড"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "কখনোই না"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "প্রধান ইন্টারফেস লোড করা যায়নি"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "অনুগ্রহ করে স্ক্রিন-সেভা সঠিক রূপে ইনস্টল করা হয়েছে কি না তা নিশ্চিত করুন"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ডেমন তৈরি করা হবে না"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "কোড ডিবাগের ব্যবস্থা সক্রিয় করা হবে"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "স্ক্রিন-সেভার ও লকিং প্রোগ্রাম আরম্ভ করুন"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%s পরিসেবা নির্ধারণ করতে ব্যর্থ: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s নির্ধারণ করতে ব্যর্থ"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "পাসওয়ার্ড সঠিক নয়।"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "এই মুহূর্তে ব্যবহারের অধিকার প্রাপ্ত করা যাবে না।"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "সিস্টেম ব্যবহারের অধিকার উপস্থিত নেই।"
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "মেসেজ বাসের সাথে নিবন্ধন করতে ব্যর্থ"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "মেসেজ বাসের সাথে সংযুক্ত নয়"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "বর্তমান সেশানে স্ক্রিন-সেভার চলছে"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "সময় অতিবাহিত হয়ে গেছে।"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "ক্যাপস-লক কি চালু আছে।"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "ব্যবহারকারী পরিবর্তন করুন (_w)"
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "লগ আউট (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U, %h-র উপর"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "পাসওয়ার্ড (_P):"
+
diff --git a/po/br.po b/po/br.po
new file mode 100644
index 0000000..ff415a0
--- /dev/null
+++ b/po/br.po
@@ -0,0 +1,694 @@
+# Breton translation for mate-screensaver
+# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006
+# This file is distributed under the same license as the mate-screensaver package.
+# Giulia Fraboulet <djoulia at gmail.com>, 2006.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-POT-Creation-Date: 2009-08-12 21:27+0000\n"
+"PO-Revision-Date: 2009-09-17 11:18+0100\n"
+"Last-Translator: Giulia <Unknwon>\n"
+"Language-Team: Breton <br at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"POT-Creation-Date: \n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Screensaver"
+msgstr "Damanter skramm"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Arventenniñ gwellvezioù ho tamanter skramm"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+#, fuzzy
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Alberz an damanter skramm<b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Diwallit: Ne vo ket prennet ar skramm evit an arveriad root.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "Merour _Energiezh"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Sell pizh an urzhiataer ouzh dizoberiant goude:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Gwellvezioù an damanter skramm"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Alberz an damanter skramm"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Gweredekaat an damanter skramm pa z'eo dizoberiant an urzhiataer"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Prennañ ar skramm p'emañ an damanter skramm war enaou"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "_Alberz"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "_Tem skramm kousk:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Neuzioù an damanter skramm"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Damanterioù skramm"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+#, fuzzy
+msgid "Activate when idle"
+msgstr "Enaouiñ p'emañ dizoberiant"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Aotren enkorfañ ar c'hlavier er prenestr"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Aotren an dilugañ"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Aotren ar c'hemm-arveriad-ez"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Arc'had ar c'hlavier enkorfet"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Prennañ en ur enaouiñ"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Arc'had an dilugañ"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Mod dibab neuz an damanter skramm"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Lakait an dra-mañ da TRUE evit enaouiñ ar skramm-kousk p'emañ dizoberiant an estez"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The \"keyboard_command\" key must be set with the appropriate command."
+msgstr "Lakaat GWIR a-benn aotren toueziañs ur c'hlavier e kreiz ar prenestr e-pad an easañ divorailhañ. Ret eo bezañ an alc'hwez \"keyboard_command\" termenet gant an urzh jaojet."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Lakait an dra-mañ da TRUE evit prennañ ar skramm pa grog ar skramm-kousk."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+msgstr "Lakait an dra-mañ da TRUE evit kinnig un dibab er c'hendiviz dilugañ, a-benn  mont war ur gont-arveriad-ez all."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "Lakaat GWIR a-benn reiñ un dibarzh er voest merour divorailhañ evit en em digennaskañ war-lerc'h un amzer resis. Skrivet eo an amzer en alc'hwez \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The command that will be run, if the \"embedded_keyboard_enabled\" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output."
+msgstr "An urzh a vo bezañ lañset, Ma z'eo an alc'hwez \"embedded_keyboard_enabled\" zo lakaat GWIR, evit toueziañ ur widget c'hlavier er prenestr. Ret eo vefe ouzhpenn ur merour kennask XEMBED an urzh mañ ha diskouez ur prenestr XID war an ec'hank skouer."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "An niver a vunut etre bep cheñchamant skramm kousk."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The number of seconds of inactivity before signalling to power-management. This key is set and maintained by the session power-management agent."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Koulzad a-raok prennañ"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Koulzad a-raok an dibab dilugañ"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Koulzad a-raok kemmañ an neuz"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Skrivañ ur gemenn evit %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U war %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Nullañ"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "_Skrivañ ur gemenn"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "Di_lugañ"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Kemmañ an arveriad"
+
+#: ../data/lock-dialog-default.glade.h:11
+#: ../src/gs-lock-plug.c:1366
+msgid "_Unlock"
+msgstr "_Dibrennañ"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr ""
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Al logo MATE mont war wel tu pe du ar skramm"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr ""
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr ""
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Teuliad ar skeudennoù"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr ""
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr ""
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr ""
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr ""
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr ""
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Tarzh ar skeudenn da arverañ"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr ""
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Grit --help evit gouzout hiroc'h.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Ret eo deoc'h erspizañ ur skeudenn.  Grit --help evit gouzout hiroc'h.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr ""
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "TREUG"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Liv da implij evit drekleur ar skeudennoù"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr ""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr ""
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "O eilañ restroù"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Eus:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Ouzh:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Oc'h eilañ an neuzioù"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Didalvoudek eo neuz an damnter skramm"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "O kopiañ ar restr: %u eus %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:78
+msgid "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:84
+#: ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Handlev an arload"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "%s eo an damanter skramm\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "oberiat"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "dizoberiant"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:66
+#: ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "KEMENNADENN"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Message to show in the dialog (deprecated)"
+msgstr ""
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178
+#: ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180
+#: ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Anv an arveriad :"
+
+#: ../src/mate-screensaver-dialog.c:181
+#: ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Ger-tremen :"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Diamzeret eo ho kont ; kit e darempred gant hoc'h ardoer reizhiad"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "N'eus ket ger-tremen"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "N'eo ket kemmet ar ger-tremen"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "N'eus ket tu da gaout un anv implijour"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Roit ur ger-tremen UNIX nevez :"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Ger-tremen UNIX (a-vremañ):"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Digarez, ne glot ket ar ger-tremen"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "O wiriañ..."
+
+#: ../src/mate-screensaver-dialog.c:304
+#: ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Dilesadur sac'het."
+
+#: ../src/mate-screensaver-preferences.c:525
+#, fuzzy
+msgid "Blank screen"
+msgstr "Skramm gwenn"
+
+#: ../src/mate-screensaver-preferences.c:531
+msgid "Random"
+msgstr "Dargouezhek"
+
+#: ../src/mate-screensaver-preferences.c:981
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d eurvezh"
+msgstr[1] "%d eurvezh"
+
+#: ../src/mate-screensaver-preferences.c:984
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d vunutenn"
+msgstr[1] "%d a vunutennoù"
+
+#: ../src/mate-screensaver-preferences.c:987
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d eilenn"
+msgstr[1] "%d eilennoù"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:993
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:996
+#: ../src/mate-screensaver-preferences.c:1004
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:999
+#: ../src/mate-screensaver-preferences.c:1007
+#: ../src/mate-screensaver-preferences.c:1011
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1026
+#, c-format
+msgid "Never"
+msgstr "Morse"
+
+#: ../src/mate-screensaver-preferences.c:1463
+msgid "Could not load the main interface"
+msgstr "N'eus ket tu da gargañ ar c'hetal pennañ"
+
+#: ../src/mate-screensaver-preferences.c:1465
+msgid "Please make sure that the screensaver is properly installed"
+msgstr ""
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr ""
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Gweredekaat ar boneg diveugañ"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Ger-tremen dreizh."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr ""
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr ""
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "Echu eo an amzer."
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr ""
+
+#: ../src/gs-lock-plug.c:1346
+msgid "S_witch User..."
+msgstr "_Kemmañ an arveriad..."
+
+#: ../src/gs-lock-plug.c:1355
+msgid "Log _Out"
+msgstr "En em di_gennaskañ"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1531
+msgid "%U on %h"
+msgstr "%U war %h"
+
+#: ../src/gs-lock-plug.c:1545
+msgid "_Password:"
+msgstr "Ger-_tremen :"
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..0a3151d
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,1097 @@
+# Catalan translations for mate-screensaver package
+# Traduccions al català del paquet «mate-screensaver».
+# Copyright (C) 2006 The Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver
+# package.
+# Josep Puigdemont i Casamajó <josep.puigdemont at gmail.com>, 2006.
+# Gil Forcada <gilforcada at guifi.net>, 2006, 2007, 2008, 2009.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-05-22 23:24+0200\n"
+"PO-Revision-Date: 2010-05-22 23:24+0200\n"
+"Last-Translator: Gil Forcada <gilforcada at guifi.net>\n"
+"Language-Team: Catalan <tradmate at softcatala.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Estalvi de pantalla"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Establiu les preferències de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Previsualització de l'estalvi de pantalla</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Avís: la pantalla no es bloquejarà per al superusuari (root).</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Gestor d'energia"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Considera l'ordinador com a _inactiu després de:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferències de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Previsualització de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activa l'estalvi de pantalla quan l'ordinador estigui inactiu"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Bloca la pantalla quan l'estalvi de pantalla estigui actiu"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Previsualització"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema de l'e_stalvi de pantalla:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Temes de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Estalvis de pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activa quan estigui inactiu"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Permet incrustar un teclat a la pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Permet sortir"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Permet que es mostri el missatge d'estat de la sessió"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Permet que es mostri el missatge d'estat de la sessió quan la pantalla "
+"estigui blocada."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Permet canviar d'usuari"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Ordre per incrustar el teclat a la pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Bloca en activar-se"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Ordre de sortida"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Mode de selecció del tema de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Establiu-ho com a cert per activar l'estalvi de pantalla quan la sessió "
+"estigui inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Establiu-ho com a CERT per permetre la incrustació d'un teclat a la pantalla "
+"quan es provi de desblocar. La clau «keyboard_command» s'ha d'establir a "
+"l'ordre apropiada."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Establiu-ho com a cert per blocar la pantalla quan l'estalvi de pantalla "
+"estigui actiu."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Establiu-ho com a cert per oferir una opció en el diàleg de desbloqueig per "
+"canviar a una compte d'usuari diferent."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Establiu-ho com a cert per oferir una opció en el diàleg de desbloqueig per "
+"sortir després d'un retard. El retard està especificat a la clau "
+"«logout_delay»."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"L'ordre que s'executarà, si la clau «embedded_keyboard_enabled» s'estableix a "
+"CERT, per incrustar un teclat a la pantalla. Aquesta ordre hauria "
+"d'implementar un connector d'interfície XEMBED, i escriure a la sortida "
+"estàndard un XID de finestra."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"L'ordre a invocar en prémer el botó de sortida. Aquesta ordre només hauria "
+"de tancar la sessió de l'usuari sense cap interacció. Aquesta clau només té "
+"efecte si la clau «logout_enable» està a cert."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"El nombre de minuts que han de passar perquè es bloqui la pantalla un cop "
+"activat l'estalvi de pantalla."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"El nombre de minuts que han de passar perquè aparegui l'opció de sortir en "
+"el diàleg de desbloqueig un cop activat l'estalvi de pantalla. Aquesta clau "
+"només té efecte si la clau «logout_enable» està a cert."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"El nombre de minuts d'inactivitat que han de passar perquè la sessió es "
+"consideri inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"El nombre de minuts que ha de passar abans de canviar el tema de l'estalvi "
+"de pantalla."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"El nombre de segons d'inactivitat abans d'avisar el gestor d'energia. "
+"Aquesta clau s'estableix i es manté per l'agent de la sessió del gestor "
+"d'energia."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"El mode de selecció utilitzat per l'estalvi de pantalla. Podria ser «blank-"
+"only» per habilitar l'estalvi de pantalla sense utilitzar cap tema en "
+"l'activació, «single» per habilitar que l'estalvi de pantalla utilitzi només "
+"un tema en activar-se (especificat en la clau «themes»), i «random» per "
+"habilitar que l'estalvi de pantalla utilitzi un tema aleatori en activar-se."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema pel diàleg de bloqueig"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema que es farà servir pel diàleg de bloqueig."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Aquesta clau especifica la llista de temes a utilitzar per l'estalvi de "
+"pantalla. S'ignora si la clau «mode» és «blank-only», hauria de tenir el nom "
+"del tema quan «mode» és «single», i hauria de tenir una llista de temes quan "
+"«mode» és «random»."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Temps abans de blocar"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Temps abans de l'opció de sortida"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Temps abans de la línia base del gestor d'energia"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Temps abans que la sessió es consideri inactiva"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Temps abans de canviar el tema"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Deixeu un missatge per a %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U a %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Cancel·la"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Deixeu un _missatge"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Surt"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Canvia d'_usuari"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1372
+msgid "_Unlock"
+msgstr "_Desbloca"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Mostra una projecció amb diapositives d'imatges del cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bombolles amb el logotip del peu del MATE per tota la pantalla"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Peus flotants"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Mostra una projecció amb diapositives de la vostre carpeta d'imatges"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Carpeta d'imatges"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Una xarxa de colors de pulsació d'estil pop-art."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Quadrats pop-art"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Vegeu --help per a la informació sobre la forma d'ús.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "Mostra els camins que segueixen les imatges"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "De tant en tant gireu les imatges mentre es mouen"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Mostra les imatges per segon i altres estadístiques"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "El nombre màxim d'imatges a mantenir en pantalla"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_IMATGES"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "La mida i posició inicials de la finestra"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "AMPLADAxALÇADA+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "La imatge que s'utilitzarà"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "image - fa flotar imatges per la pantalla"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Heu d'indicar una imatge. Vegeu --help per a la informació sobre la forma "
+"d'ús.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Ubicació d'on obtenir les imatges"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CAMÍ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "El color a utilitzar per a les imatges de fons"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "«#rrggbb»"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "No mostris imatges aleatòries de la ubicació"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "No intentis encabir les imatges a la pantalla"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "S'estan copiant fitxers"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "A:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "S'estan copiant els temes"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Tema de l'estalvi de pantalla invàlid"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Sembla que el %s no sigui un tema d'estalvi de pantalla vàlid."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "S'està copiant el fitxer: %u de %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Fa que l'estalvi de pantalla surti sense errors"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Consulta l'estat de l'estalvi de pantalla"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Consulta quan temps fa que l'estalvi de pantalla s'ha activat"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Diu al procés d'estalvi de pantalla en funcionament que bloquegi la pantalla "
+"immediatament"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Si l'estalvi de pantalla està actiu llavors canvia a una altra demostració "
+"de gràfics"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Activa l'estalvi de pantalla (enfosqueix la pantalla)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Si l'estalvi de pantalla està actiu, desactiva'l (restableix la pantalla)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Burxa l'estalvi de pantalla actiu per simular activitat de l'usuari"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inhibeix l'activació de l'estalvi de pantalla. L'ordre bloqueja mentre la "
+"inhibició està activa."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "L'aplicació que està demanant d'inhibir l'estalvi de pantalla"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "El motiu per inhibir l'estalvi de pantalla"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versió d'aquesta aplicació"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "L'estalvi de pantalla està %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "activat"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "desactivat"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "L'estalvi de pantalla està inhibit\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "L'estalvi de pantalla l'inhibeix:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Fa %d segons que l'estalvi de pantalla s'ha activat.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "L'estalvi de pantalla no és actiu.\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Mostra els missatges de depuració"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Mostra el botó de sortida"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "Ordre per invocar des del botó de sortir"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Mostra el botó de canvi d'usuari"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "Missatge que es mostrarà en el diàleg"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "MISSATGE"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "No s'utilitza"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Nom d'usuari:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Contrasenya:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Heu de canviar la contrasenya immediatament (la contrasenya s'ha fet vella)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Heu de canviar la contrasenya immediatament (us hi obliga el superusuari)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"El vostre compte ha expirat, contacteu amb l'administrador d'aquest sistema"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "No s'ha proporcionat cap contrasenya"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "No s'ha canviat la contrasenya"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "No s'ha pogut obtenir el nom d'usuari"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Reescriviu la nova contrasenya UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Entreu la nova contrasenya UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "Contrasenya UNIX (actual):"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "S'ha produït un error en canviar la contrasenya NIS."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "Heu d'escollir una contrasenya més llarga"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "La contrasenya ja s'ha fet servir. Escolliu-ne una altra."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "Heu d'esperar més per canviar la contrasenya"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Les contrasenyes no coincideixen"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "S'està comprovant..."
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Ha fallat l'autenticació."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Pantalla en negre"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aleatori"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hora"
+msgstr[1] "%d hores"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minut"
+msgstr[1] "%d minuts"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segon"
+msgstr[1] "%d segons"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Mai"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "No s'ha pogut carregar la interfície principal"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Assegureu-vos que l'estalvi de pantalla estigui ben instal·lat"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "No esdevinguis un dimoni"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Habilita el codi de depuració"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Executa l'estalvi de pantalla i el programa de blocatge"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "No s'ha pogut establir el servei %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "No s'ha pogut establir PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Contrasenya incorrecta."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "No podeu accedir-hi ara mateix."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Ja no podeu accedir al sistema."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "no s'ha pogut registrar en el bus de missatges"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "no s'ha pogut connectar al bus de missatges"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "l'estalvi de pantalla ja està funcionant en aquesta sessió"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "S'ha excedit el temps."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Teniu la tecla de fixació de majúscules activada."
+
+#: ../src/gs-lock-plug.c:1352
+msgid "S_witch User..."
+msgstr "Canvia d'_usuari..."
+
+#: ../src/gs-lock-plug.c:1361
+msgid "Log _Out"
+msgstr "_Surt"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1537
+msgid "%U on %h"
+msgstr "%U a %h"
+
+#: ../src/gs-lock-plug.c:1551
+msgid "_Password:"
+msgstr "_Contrasenya:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Motiu pel que esteu absent"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "El motiu pel que esteu allunyat de l'ordinador."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "S'està copiant «%s»"
+
+#~ msgid "From URI"
+#~ msgstr "De l'URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "L'URI des d'on es transfereix"
+
+#~ msgid "To URI"
+#~ msgstr "A l'URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "L'URI a on es transfereix"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Fracció completada"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Fracció de la transferència actualment completada"
+
+#~ msgid "Current URI index"
+#~ msgstr "Índex de l'URI actual"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Índex de l'URI actual - comença des d'1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Total de URIs"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "El nombre total d'URIs"
+
+#~ msgid "Connecting..."
+#~ msgstr "S'està connectant..."
+
+#~ msgid "_Switch user..."
+#~ msgstr "Canvia d'_usuari..."
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "S_witch to user:"
+#~ msgstr "Ca_nvia a l'usuari:"
+
+#~ msgid "Manager"
+#~ msgstr "Gestor"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "El gestor al que pertany aquest objecte."
+
+#~ msgid "Name"
+#~ msgstr "Nom"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "El nom de la pantalla X11 a la que aquest objecte fa referència."
+
+#~ msgid "User"
+#~ msgstr "Usuari"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "L'usuari identificat actualment en aquest terminal virtual."
+
+#~ msgid "Console"
+#~ msgstr "Consola"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr ""
+#~ "El nombre de consoles virtuals on s'hi pot trobar aquesta pantalla, o %-1."
+
+#~ msgid "Nested"
+#~ msgstr "Imbricada"
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Si aquesta pantalla és una pantalla en una finestra (Xnest)."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr ""
+#~ "Per raons desconegudes no s'ha pogut contactar amb el gestor de pantalla."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "No s'està executant el gestor de pantalla, o bé és massa antic."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "S'ha arribat al límit configurat de servidors flexibles."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "S'ha produït un error desconegut en iniciar X."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "El servidor de les X ha fallat en acabar l'iniciació."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "Hi ha massa sessions X executant-se."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "El servidor de les X imbricat (Xnest) no s'ha pogut connectar al servidor "
+#~ "de les X actual."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr ""
+#~ "No s'ha pogut trobar el servidor de les X de la configuració del MDM."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "S'està intentant establir una acció de sortida desconeguda, o que no està "
+#~ "disponible."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "No estan suportats els terminals virtuals."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "El número de terminal virtual no és vàlid."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "S'està intentant actualitzar una clau de configuració no suportada."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "El fitxer ~/.Xauthority no existeix o està mal configurat."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "S'ha enviat massa missatges al gestor de pantalla, i s'ha penjat."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "El gestor de pantalla ha enviat un missatge d'error desconegut."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "L'usuari a qui representa aquesta entrada del menú."
+
+#~ msgid "Icon Size"
+#~ msgstr "Mida de la icona"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "La mida de la icona a utilitzar."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Mida de l'indicador"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Mida de l'indicador de comprovació"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Espai de l'indicador"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Espai entre el nom d'usuari i l'indicador"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "L'objecte gestor d'usuaris que controla a aquest usuari."
+
+#~ msgid "Show Details"
+#~ msgstr "Mostra els detalls"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "El MDM (el gestor de pantalla del MATE) no s'està executant."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Deveu estar fent servir un gestor de pantalla diferent, com el KDM "
+#~ "(gestor de pantalla del KDE) o el xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Si encara desitgeu utilitzar aquesta característica, engegueu el MDM o "
+#~ "demaneu al vostre administrador del sistema que l'engegui."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr ""
+#~ "No s'ha pogut comunicar amb el MDM (El gestor de pantalla del MATE)"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Potser teniu una versió vella del MDM funcionant."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "No es pot comunicar amb el MDM, potser s'està executant teniu una versió "
+#~ "vella."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "S'ha arribat al límit de servidors flexibles de les X permesos."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "S'ha produït errors en intentar iniciar el servidor de les X."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr ""
+#~ "S'ha produït un error en el servidor de les X. Potser no està ben "
+#~ "configurat."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "Hi ha massa sessions X executant-se."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "El servidor imbricat X (Xnest) no es pot comunicar amb el vostre servidor "
+#~ "actual d'X. Potser li falta un fitxer d'autorització d'X."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "No està disponible el servidor imbricat d'X (Xnest), o el MDM està mal "
+#~ "configurat.\n"
+#~ "Instal·leu el paquet Xnest per poder utilitzar l'entrada imbricada."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "No està disponible el servidor de les X, sembla que el MDM està mal "
+#~ "configurat."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Intentant canviar a un nombre de terminal virtual invàlid."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Sembla que no teniu l'autorització necessària per a aquesta operació. "
+#~ "Potser el vostre fitxer .Xauthority no està correctament establert."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "S'ha enviat massa missatges al MDM i aquest s'ha penjat."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "S'ha produït un error desconegut."
+
+#~ msgid "Time before activation"
+#~ msgstr "Temps abans d'activar-se"
+
+#~ msgid "_Screensaver"
+#~ msgstr "_Estalvi de pantalla"
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "Permet la monitorització de la gestió d'energia"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr ""
+#~ "Establiu-ho com a cert per permetre a l'estalvi de pantalla apagar el "
+#~ "monitor."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "El nombre de minuts que ha de passar perquè el monitor es posi en mode "
+#~ "d'espera un cop activat l'estalvi de pantalla."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "El nombre de minuts que ha de passar perquè el monitor s'apagui "
+#~ "temporalment, un cop activat l'estalvi de pantalla."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr ""
+#~ "El nombre de minuts que ha de passar perquè el monitor s'apagui un cop "
+#~ "activat l'estalvi de pantalla."
+
+#~ msgid "Time before power off"
+#~ msgstr "Temps abans d'apagar"
+
+#~ msgid "Time before standby"
+#~ msgstr "Temps abans de posar-se en mode d'espera"
+
+#~ msgid "Time before suspend"
+#~ msgstr "Temps abans d'apagar temporalment"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Inhabilita els temes gràfics mentre la pantalla estigui en negre"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr ""
+#~ "Habilita els temes gràfics encara que la pantalla estigui en negre (si és "
+#~ "aplicable)"
+
+#~ msgid "0 seconds"
+#~ msgstr "0 segons"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "La contrasenya no és correcta."
+
+#~ msgid "    "
+#~ msgstr "    "
+
+#~ msgid "_Activate after:"
+#~ msgstr "_Activa al cap de:"
+
+#~ msgid "Disabled"
+#~ msgstr "Inhabilita"
diff --git a/po/ca at valencia.po b/po/ca at valencia.po
new file mode 100644
index 0000000..84c29e7
--- /dev/null
+++ b/po/ca at valencia.po
@@ -0,0 +1,1096 @@
+# Catalan translations for mate-screensaver package
+# Traduccions al català del paquet «mate-screensaver».
+# Copyright (C) 2006 The Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver
+# package.
+# Josep Puigdemont i Casamajó <josep.puigdemont at gmail.com>, 2006.
+# Gil Forcada <gilforcada at guifi.net>, 2006, 2007, 2008, 2009.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-04-21 23:24+0200\n"
+"PO-Revision-Date: 2010-04-02 18:08+0200\n"
+"Last-Translator: Gil Forcada <gilforcada at guifi.net>\n"
+"Language-Team: Catalan <tradmate at softcatala.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Estalvi de pantalla"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Establiu les preferències de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Previsualització de l'estalvi de pantalla</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Avís: la pantalla no es bloquejarà per al superusuari (root).</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Gestor d'energia"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Considera l'ordinador com a _inactiu després de:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferències de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Previsualització de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activa l'estalvi de pantalla quan l'ordinador estiga inactiu"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Bloca la pantalla quan l'estalvi de pantalla estiga actiu"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Previsualització"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema de l'e_stalvi de pantalla:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Temes de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Estalvis de pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activa quan estiga inactiu"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Permet incrustar un teclat a la pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Permet eixir"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Permet que es mostre el missatge d'estat de la sessió"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Permet que es mostre el missatge d'estat de la sessió quan la pantalla "
+"estiga blocada."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Permet canviar d'usuari"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Orde per incrustar el teclat a la pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Bloca en activar-se"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Orde d'eixida"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Mode de selecció del tema de l'estalvi de pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Establiu-ho com a cert per activar l'estalvi de pantalla quan la sessió "
+"estiga inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Establiu-ho com a CERT per permetre la incrustació d'un teclat a la pantalla "
+"quan es prove de desblocar. La clau «keyboard_command» s'ha d'establir a "
+"l'orde apropiada."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Establiu-ho com a cert per blocar la pantalla quan l'estalvi de pantalla "
+"estiga actiu."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Establiu-ho com a cert per oferir una opció en el diàleg de desbloqueig per "
+"canviar a una compte d'usuari diferent."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Establiu-ho com a cert per oferir una opció en el diàleg de desbloqueig per "
+"eixir després d'un retard. El retard està especificat a la clau "
+"«logout_delay»."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"L'orde que s'executarà, si la clau «embedded_keyboard_enabled» s'estableix a "
+"CERT, per incrustar un teclat a la pantalla. Esta orde hauria d'implementar "
+"un connector d'interfície XEMBED, i escriure a l'eixida estàndard un XID de "
+"finestra."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"L'orde a invocar en prémer el botó d'eixida. Esta orde només hauria de "
+"tancar la sessió de l'usuari sense cap interacció. Esta clau només te efecte "
+"si la clau «logout_enable» està a cert."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"El nombre de minuts que han de passar perquè es bloqui la pantalla un cop "
+"activat l'estalvi de pantalla."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"El nombre de minuts que han de passar perquè aparega l'opció d'eixir en el "
+"diàleg de desbloqueig un cop activat l'estalvi de pantalla. Esta clau només "
+"té efecte si la clau «logout_enable» està a cert."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"El nombre de minuts d'inactivitat que han de passar perquè la sessió es "
+"consideri inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"El nombre de minuts que ha de passar abans de canviar el tema de l'estalvi "
+"de pantalla."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"El nombre de segons d'inactivitat abans d'avisar el gestor d'energia. Esta "
+"clau s'estableix i es manté per l'agent de la sessió del gestor d'energia."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"El mode de selecció utilitzat per l'estalvi de pantalla. Podria ser «blank-"
+"only» per habilitar l'estalvi de pantalla sense utilitzar cap tema en "
+"l'activació, «single» per habilitar que l'estalvi de pantalla utilitze només "
+"un tema en activar-se (especificat en la clau «themes»), i «random» per "
+"habilitar que l'estalvi de pantalla utilitze un tema aleatori en activar-se."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema pel diàleg de bloqueig"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema que es farà servir pel diàleg de bloqueig."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Esta clau especifica la llista de temes a utilitzar per l'estalvi de "
+"pantalla. S'ignora si la clau «mode» és «blank-only», hauria de tindre el nom "
+"del tema quan «mode» és «single», i hauria de tindre una llista de temes quan "
+"«mode» és «random»."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Temps abans de blocar"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Temps abans de l'opció d'eixida"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Temps abans de la línia base del gestor d'energia"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Temps abans que la sessió es consideri inactiva"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Temps abans de canviar el tema"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Deixeu un missatge per a %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U a %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Cancel·la"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Deixeu un _missatge"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "I_x"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Canvia d'_usuari"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1372
+msgid "_Unlock"
+msgstr "_Desbloca"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Mostra una projecció amb diapositives d'imatges del cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bombolles amb el logotip del peu del MATE per tota la pantalla"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Peus flotants"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Mostra una projecció amb diapositives de la vostre carpeta d'imatges"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Carpeta d'imatges"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Una xarxa de colors de pulsació d'estil pop-art."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Quadrats pop-art"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Vegeu --help per a la informació sobre la forma d'ús.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "Mostra els camins que segueixen les imatges"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "De tant en tant gireu les imatges mentre es mouen"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Mostra les imatges per segon i altres estadístiques"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "El nombre màxim d'imatges a mantindre en pantalla"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_IMATGES"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "La mida i posició inicials de la finestra"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "AMPLADAxALÇADA+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "La imatge que s'utilitzarà"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "image - fa flotar imatges per la pantalla"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Heu d'indicar una imatge. Vegeu --help per a la informació sobre la forma "
+"d'ús.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Ubicació d'on obtindre les imatges"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CAMÍ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "El color a utilitzar per a les imatges de fons"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "«#rrggbb»"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "No mostres imatges aleatòries de la ubicació"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "No intentes encabir les imatges a la pantalla"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "S'estan copiant fitxers"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "A:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "S'estan copiant els temes"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Tema de l'estalvi de pantalla invàlid"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Pareix que el %s no siga un tema d'estalvi de pantalla vàlid."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "S'està copiant el fitxer: %u de %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Fa que l'estalvi de pantalla isca sense errors"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Consulta l'estat de l'estalvi de pantalla"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Consulta quan temps fa que l'estalvi de pantalla s'ha activat"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Diu al procés d'estalvi de pantalla en funcionament que bloquegi la pantalla "
+"immediatament"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Si l'estalvi de pantalla està actiu llavors canvia a una altra demostració "
+"de gràfics"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Activa l'estalvi de pantalla (enfosqueix la pantalla)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Si l'estalvi de pantalla està actiu, desactiva'l (restableix la pantalla)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Burxa l'estalvi de pantalla actiu per simular activitat de l'usuari"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inhibeix l'activació de l'estalvi de pantalla. L'orde bloqueja mentre la "
+"inhibició està activa."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "L'aplicació que està demanant d'inhibir l'estalvi de pantalla"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "El motiu per inhibir l'estalvi de pantalla"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versió d'esta aplicació"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "L'estalvi de pantalla està %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "activat"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "desactivat"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "L'estalvi de pantalla està inhibit\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "L'estalvi de pantalla l'inhibeix:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Fa %d segons que l'estalvi de pantalla s'ha activat.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "L'estalvi de pantalla no és actiu.\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Mostra els missatges de depuració"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Mostra el botó d'eixida"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "Orde per invocar des del botó d'eixir"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Mostra el botó de canvi d'usuari"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "Missatge que es mostrarà en el diàleg"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "MISSATGE"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "No s'utilitza"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Nom d'usuari:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Contrasenya:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Heu de canviar la contrasenya immediatament (la contrasenya s'ha fet vella)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Heu de canviar la contrasenya immediatament (vos hi obliga el superusuari)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"El vostre compte ha expirat, contacteu amb l'administrador d'este sistema"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "No s'ha proporcionat cap contrasenya"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "No s'ha canviat la contrasenya"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "No s'ha pogut obtindre el nom d'usuari"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Reescriviu la nova contrasenya UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Entreu la nova contrasenya UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "Contrasenya UNIX (actual):"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "S'ha produït un error en canviar la contrasenya NIS."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "Heu d'escollir una contrasenya més llarga"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "La contrasenya ja s'ha fet servir. Escolliu-ne una altra."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "Heu d'esperar més per canviar la contrasenya"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Les contrasenyes no coincideixen"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "S'està comprovant..."
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Ha fallat l'autenticació."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Pantalla en negre"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aleatori"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hora"
+msgstr[1] "%d hores"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minut"
+msgstr[1] "%d minuts"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segon"
+msgstr[1] "%d segons"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Mai"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "No s'ha pogut carregar la interfície principal"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Assegureu-vos que l'estalvi de pantalla estiga ben instal·lat"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "No esdevinguis un dimoni"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Habilita el codi de depuració"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Executa l'estalvi de pantalla i el programa de blocatge"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "No s'ha pogut establir el servei %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "No s'ha pogut establir PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Contrasenya incorrecta."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "No podeu accedir-hi ara mateix."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Ja no podeu accedir al sistema."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "no s'ha pogut registrar en el bus de missatges"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "no s'ha pogut connectar al bus de missatges"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "l'estalvi de pantalla ja està funcionant en esta sessió"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "S'ha excedit el temps."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Teniu la tecla de fixació de majúscules activada."
+
+#: ../src/gs-lock-plug.c:1352
+msgid "S_witch User..."
+msgstr "Canvia d'_usuari..."
+
+#: ../src/gs-lock-plug.c:1361
+msgid "Log _Out"
+msgstr "I_x"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1537
+msgid "%U on %h"
+msgstr "%U a %h"
+
+#: ../src/gs-lock-plug.c:1551
+msgid "_Password:"
+msgstr "_Contrasenya:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Motiu pel que esteu absent"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "El motiu pel que esteu allunyat de l'ordinador."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "S'està copiant «%s»"
+
+#~ msgid "From URI"
+#~ msgstr "De l'URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "L'URI des d'on es transfereix"
+
+#~ msgid "To URI"
+#~ msgstr "A l'URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "L'URI a on es transfereix"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Fracció completada"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Fracció de la transferència actualment completada"
+
+#~ msgid "Current URI index"
+#~ msgstr "Índex de l'URI actual"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Índex de l'URI actual - comença des d'1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Total de URIs"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "El nombre total d'URIs"
+
+#~ msgid "Connecting..."
+#~ msgstr "S'està connectant..."
+
+#~ msgid "_Switch user..."
+#~ msgstr "Canvia d'_usuari..."
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "S_witch to user:"
+#~ msgstr "Ca_nvia a l'usuari:"
+
+#~ msgid "Manager"
+#~ msgstr "Gestor"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "El gestor al que pertany aquest objecte."
+
+#~ msgid "Name"
+#~ msgstr "Nom"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "El nom de la pantalla X11 a la que aquest objecte fa referència."
+
+#~ msgid "User"
+#~ msgstr "Usuari"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "L'usuari identificat actualment en aquest terminal virtual."
+
+#~ msgid "Console"
+#~ msgstr "Consola"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr ""
+#~ "El nombre de consoles virtuals on s'hi pot trobar aquesta pantalla, o %-1."
+
+#~ msgid "Nested"
+#~ msgstr "Imbricada"
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Si aquesta pantalla és una pantalla en una finestra (Xnest)."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr ""
+#~ "Per raons desconegudes no s'ha pogut contactar amb el gestor de pantalla."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "No s'està executant el gestor de pantalla, o bé és massa antic."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "S'ha arribat al límit configurat de servidors flexibles."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "S'ha produït un error desconegut en iniciar X."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "El servidor de les X ha fallat en acabar l'iniciació."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "Hi ha massa sessions X executant-se."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "El servidor de les X imbricat (Xnest) no s'ha pogut connectar al servidor "
+#~ "de les X actual."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr ""
+#~ "No s'ha pogut trobar el servidor de les X de la configuració del MDM."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "S'està intentant establir una acció de sortida desconeguda, o que no està "
+#~ "disponible."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "No estan suportats els terminals virtuals."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "El número de terminal virtual no és vàlid."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "S'està intentant actualitzar una clau de configuració no suportada."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "El fitxer ~/.Xauthority no existeix o està mal configurat."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "S'ha enviat massa missatges al gestor de pantalla, i s'ha penjat."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "El gestor de pantalla ha enviat un missatge d'error desconegut."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "L'usuari a qui representa aquesta entrada del menú."
+
+#~ msgid "Icon Size"
+#~ msgstr "Mida de la icona"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "La mida de la icona a utilitzar."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Mida de l'indicador"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Mida de l'indicador de comprovació"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Espai de l'indicador"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Espai entre el nom d'usuari i l'indicador"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "L'objecte gestor d'usuaris que controla a aquest usuari."
+
+#~ msgid "Show Details"
+#~ msgstr "Mostra els detalls"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "El MDM (el gestor de pantalla del MATE) no s'està executant."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Deveu estar fent servir un gestor de pantalla diferent, com el KDM "
+#~ "(gestor de pantalla del KDE) o el xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Si encara desitgeu utilitzar aquesta característica, engegueu el MDM o "
+#~ "demaneu al vostre administrador del sistema que l'engegui."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr ""
+#~ "No s'ha pogut comunicar amb el MDM (El gestor de pantalla del MATE)"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Potser teniu una versió vella del MDM funcionant."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "No es pot comunicar amb el MDM, potser s'està executant teniu una versió "
+#~ "vella."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "S'ha arribat al límit de servidors flexibles de les X permesos."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "S'ha produït errors en intentar iniciar el servidor de les X."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr ""
+#~ "S'ha produït un error en el servidor de les X. Potser no està ben "
+#~ "configurat."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "Hi ha massa sessions X executant-se."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "El servidor imbricat X (Xnest) no es pot comunicar amb el vostre servidor "
+#~ "actual d'X. Potser li falta un fitxer d'autorització d'X."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "No està disponible el servidor imbricat d'X (Xnest), o el MDM està mal "
+#~ "configurat.\n"
+#~ "Instal·leu el paquet Xnest per poder utilitzar l'entrada imbricada."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "No està disponible el servidor de les X, sembla que el MDM està mal "
+#~ "configurat."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Intentant canviar a un nombre de terminal virtual invàlid."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Sembla que no teniu l'autorització necessària per a aquesta operació. "
+#~ "Potser el vostre fitxer .Xauthority no està correctament establert."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "S'ha enviat massa missatges al MDM i aquest s'ha penjat."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "S'ha produït un error desconegut."
+
+#~ msgid "Time before activation"
+#~ msgstr "Temps abans d'activar-se"
+
+#~ msgid "_Screensaver"
+#~ msgstr "_Estalvi de pantalla"
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "Permet la monitorització de la gestió d'energia"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr ""
+#~ "Establiu-ho com a cert per permetre a l'estalvi de pantalla apagar el "
+#~ "monitor."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "El nombre de minuts que ha de passar perquè el monitor es posi en mode "
+#~ "d'espera un cop activat l'estalvi de pantalla."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "El nombre de minuts que ha de passar perquè el monitor s'apagui "
+#~ "temporalment, un cop activat l'estalvi de pantalla."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr ""
+#~ "El nombre de minuts que ha de passar perquè el monitor s'apagui un cop "
+#~ "activat l'estalvi de pantalla."
+
+#~ msgid "Time before power off"
+#~ msgstr "Temps abans d'apagar"
+
+#~ msgid "Time before standby"
+#~ msgstr "Temps abans de posar-se en mode d'espera"
+
+#~ msgid "Time before suspend"
+#~ msgstr "Temps abans d'apagar temporalment"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Inhabilita els temes gràfics mentre la pantalla estigui en negre"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr ""
+#~ "Habilita els temes gràfics encara que la pantalla estigui en negre (si és "
+#~ "aplicable)"
+
+#~ msgid "0 seconds"
+#~ msgstr "0 segons"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "La contrasenya no és correcta."
+
+#~ msgid "    "
+#~ msgstr "    "
+
+#~ msgid "_Activate after:"
+#~ msgstr "_Activa al cap de:"
+
+#~ msgid "Disabled"
+#~ msgstr "Inhabilita"
diff --git a/po/crh.po b/po/crh.po
new file mode 100644
index 0000000..38c6992
--- /dev/null
+++ b/po/crh.po
@@ -0,0 +1,829 @@
+# Qırımtatarca mate-screensaver.
+# This file is distributed under the same license as the mate-screensaver package.
+#
+#  Reşat SABIQ <tilde.birlik at gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-10-21 00:44-0500\n"
+"PO-Revision-Date: 2009-10-21 00:49-0500\n"
+"Last-Translator: Reşat SABIQ <tilde.birlik at gmail.com>\n"
+"Language-Team: Qırımtatarca (Qırım Türkçesi) <tilde-birlik-tercime at lists."
+"sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Ekran qoruyıcısı"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Ekran qoruyıcısı tercihleriñizni tesbit etiñiz"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Ekran qoruyıcısı ög-baquvı</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>İhtar: root (tamır) qullanıcısı içün ekran kilitlenmeycektir.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Quvet _İdaresi"
+
+# tr
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Sonrasında bilgisayarı _boş duran olarak say:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Ekran Qoruyıcısı Tercihleri"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Ekran Qoruyıcısı Ög-baquvı"
+
+# tr
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "Bilgis_ayar bekleme durumundayken ekran koruyucuyu etkinleştir"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "Ekran qoruyıcısı faal olğanda ekrannı ki_litle"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Ög-baquv"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Ekran qoruyıcısı teması:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Ekran qoruyıcısı temaları"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Ekran qoruyıcıları"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aylaq olğanda faalleştir"
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Pencereye bir klavye gömmeye izin ver"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Tışarı imzalanmağa izin ber"
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Oturum durum mesajının gösterilmesine izin ver"
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Ekran kilitlendiğinde oturum durum mesajının gösterilmesine izin ver."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Qullanıcı almaştırmağa izin ber"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "İçeri yatqızılğan klavye emri"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Faalleşme üzerine kilitle"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Tışarı imzalanuv emri"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Ekran qoruyıcısı tema saylamı tarzı"
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Oturum bekleme durumundayken ekran koruyucuyu etkinleştirmek için bunu TRUE "
+"yapın."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Kilidi kaldırmaya çalışırken ekrana bir klavye gömmek için bunu TRUE olarak "
+"seçin.\"keyboard_command\" anahtarı uygun bir komutla tanımlanmalıdır."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Ekran koruyucu etkin olduğu zaman ekranın kilitlenmesi için bunu TRUE olarak "
+"tanımla."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Kilidi kaldırma penceresinde başka bir kullanıcıya geçme seçeneğini önermek "
+"için bunu TRUE yapın."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Kilidi kaldırma penceresinde belli bir süre beklemeden sonra oturumu kapatma "
+"seçeneğini önermek için bunu TRUE yapın.Bekleme süresi \"logout_delay\" "
+"anahtarı ile belirtilir."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" anahtarı TRUE yapılmışsa, bir klavye "
+"bileşenini pencereye gömmek için bu komut çalıştırılacaktır.Bu komut bir "
+"XEMBED fiş arayüzü gerçekleştirmeli ve standart çıktıya bir XID penceresi "
+"çıktısı vermelidir."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Tışarı imzalanuv dögmesi çertilgeninde çağırılacaq emir. Bu emirniñ er "
+"angi tesirleşim olmadan sadece qullanıcını tışarı imzalandıruvı lâzim. Bu "
+"anahtar, faqat \"logout_enable\" anahtarı DOĞRU ise tesirge saiptir."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Ekran koruyucunun etkinleşmesinden sonra ekranın kilitlenmesine kadarki "
+"dakikaların sayısı."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Ekran qoruyıcısı faalleşüvinden soñ, kilitsizleme dialogında bir tışarı "
+"imzalanuv dögmesi körünmeden evelki daqqa sayısı. Bu anahtar, faqat "
+"\"logout_enable\" anahtarı DOĞRU ise tesirge saiptir."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Oturum boş duran olarak değerlendirilmeden önce aktivite olmadan geçen "
+"dakikaların sayısı."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Ekran koruyucu temasını değiştirmeden önce geçen dakikaların sayısı."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Güç-yöneticisi'ne sinyal göndermeden önce aktif olunmayan saniyelerin "
+"sayısı. Bu anahtar güç-yöneticisi ajanının oturumu tarafından belirlenir ve "
+"sürdürülür."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Ekran koruyucu tarafından kullanılan seçim kipi. Ekran koruyucuyu "
+"etkinleştirmede herhangi bir tema kullanmamak için \"blank-only\", ekran "
+"koruyucuyu etkinleştirmede sadece bir tema kullanarak etkinleştirmek için "
+"( \"themes\" anahtarında belirtildiği gibi) \"single\", etkinleştirmede "
+"ekran koruyucunun rastgele bir tema kullanarak etkinleştirilmesi için "
+"\"random\" olabilir.  "
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Kilit dialogı içün tema"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Kilit dialogı içün tema qullanılacaq tema."
+
+# tr
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Bu anahtar ekran koruyucu tarafından kullanılacak temaların listesini "
+"belirtir. \"mode\" anahtarı \"blank-only\" olduğu zaman bu yoksayılır, \"mode"
+"\" \"single\" olduğu zaman tema adı sağlanmalı ve \"mode\" \"random\" "
+"olduğunda temaların bir listesi sağlanmalı."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Kilitlemeden evelki vaqıt"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tışarı imzalanuv ihtiyarından evelki vaqıt"
+
+# tüklü
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Quvet idaresi taban sızığından evelki vaqıt"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Oturım aylaq mulâaza etilmeden evelki vaqıt"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tema deñişiminden evelki vaqıt"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R içün bir mesaj qaldırıñız:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%h üzerinde %U</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Vazgeç"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Mesaj _Qaldır"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Tışarı İmzalan"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Qullanıcı _Almaştır"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Kilitsizle"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kâinat"
+
+# tüklü
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Kâinat resimleri slayt temaşasını köster"
+
+# tr
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE ayak logosunu ekran etrafında dolandır"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Yaldavuq Ayaqlar"
+
+# tr
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Resim klasörünüzden bir slayt gösterisi göster"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Resimler fihristi"
+
+# tr
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Bir pop-art-ish nabız gibi atan renklerin ızgarası."
+
+# tr
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop art kareleri"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Suretlerniñ taqip etkeni yolçıqlarnı köster"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Suretler areket etkende olarnı arada bir aylandır"
+
+# tr
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Saniyedeki kare hızını ve diğer istatistikleri yazdır"
+
+# tr
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Ekranda tutulacak en fazla görüntü sayısı"
+
+# tüklü
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Pencereniñ başlanğıç ölçüsi ve qonumı"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "KENİŞLİKxYÜKSEKLİK+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Qullanılacaq menba suret"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image  - suretlerni ekran etrafında yaldata"
+
+# tr
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Kullanım bilgisi için --help çıktısına bakınız.\n"
+
+# tr
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Bir görüntü belirtmelisiniz.  Kullanım bilgisi için --help çıktısına "
+"bakınız.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Suretlerniñ alınacağı qonum"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "YOLÇIQ"
+
+# tr
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Arkaplan görüntüleri için kullanılacak renk"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Qonumdaki resimlerni rastkeleleştirme"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Suretlerni ekran üzerinde kermege talpınma"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Dosyeler kopiyalana"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Kimden:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Kimge:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Temalar kopiyalana"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Keçersiz ekran qoruyıcısı teması"
+
+# tr
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s geçerli bir ekran koruyucu teması gibi görünmüyor."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Dosye kopiyalana: %u / %u"
+
+# tr
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Ekran koruyucudan nazikçe çıkmasına sebep olur"
+
+# tüklü
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Ekran qoruyıcısınıñ durumını sorğula"
+
+# tr
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Ekran koruyucusunun etkin olduğu zamanı sorgula"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Çapmaqta olğan ekran qoruyıcısı esnasına ekrannı deral kilitlemege söyler"
+
+# tr
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Eğer ekran koruyucu etkin ise başka bir grafik gösterimine geç"
+
+# tr
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Ekran koruyucuyu aç (ekranı boş bırak)"
+
+# tr
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Eğer ekran koruyucu etkin ise etkinliğini kaldır (ekranı boş bırakma)"
+
+# tr
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Kullanıcı aktivitesini taklit etmek için çalışan ekran koruyucuyu dürt"
+
+# tr
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Ekran koruyucunun etkinleşmesini engelle. Engelleme etkin iken komut bloke "
+"edilir."
+
+# tr
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Ekran koruyucuyu engelleyen çağrılan uygulama"
+
+# tr
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Ekran koruyucuya engel olmak için sebep"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Bu uygulamanıñ sürümi"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Ekran qoruyıcısı: %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "faal"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "ğayrı faal"
+
+# tüklü
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Ekran qoruyıcı manialı degil\n"
+
+# tr
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Ekran koruyucuyu durduran:\n"
+
+# tr
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Ekran koruyucu %d saniyedir etkin.\n"
+
+# tüklü
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Ekran qoruyıcı al-azırda faal degildir.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Arızasızlandıruv çıqtısını köster"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Tışarı imzalanuv dögmesini köster"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Oturumu kapat düğmesinden çağrılacak komut"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Qullanıcı almaştıruv dögmesini köster"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Dialogta kösterilecek mesaj"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESAJ"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Qullanılmay"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Qullanıcı adı:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Sır-söz:"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Hemen parolanızı değiştirmeniz gerekiyor (parolanız eskidi)"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Parolanızı hemen değiştirmeniz gerekiyor (root zorluyor)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Esabıñız eskirgendir; lütfen sistem memurıñız ile temasqa keçiñiz"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Bir parola sağlanmadı"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Parola değişmedi"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Qullanıcı adı alınamay"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Yañı UNIX sır-sözüñizni kene daktilo etiñiz:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Yañı UNIX sır-sözüñizni kirsetiñiz:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(cari) UNIX sır-sözüñiz:"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS parolası değiştirilirken hata"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Daha uzun bir parola seçmelisiniz"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Parola kullanılmaktadır. Başka bir tane seçin."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Sır-sözüñizni deñiştirmek içün daa uzun beklemelisiñiz"
+
+# tr
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Üzgünüm, parolalar uyuşmuyor"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Teşkerile..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Sahihlenme muvafaqiyetsiz."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Boş ekran"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Rastkele"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d saat"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d daqqa"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d saniye"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Asla"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Ana arayüz yüklenamadı"
+
+# tr
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr ""
+"Lütfen ekran koruyucusunun düzgün bir şekilde kurulmuş olduğundan emin olun"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Bir cınğa dönüşme"
+
+# tr
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Hata ayıklama kodunu etkinleştir"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Ekran qoruyıcı ve kilitleyici programnı fırlat"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Servis %s qurulamadı: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s tesbit etilamadı"
+
+# tr
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Yanlış parola."
+
+# tr
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Şu an erişim kazanmaya izinli değil."
+
+# tr
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Sisteme erişimine artık izin verilmiyor."
+
+# tr
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "mesaj veri yoluna kayıt başarısız"
+
+# tr
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "mesaj veri yoluna bağlı değil"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "Bu oturımda ekran qoruyıcısı endi çapmaqta"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Zaman aşıldı."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Büyük Arif Kiliti (Caps Lock) tuşuñız faaldir."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "Qullanıcı _Almaştır..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Tışarı İmzalan"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%h üzerinde %U"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Sır-söz:"
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..6a0cded
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,772 @@
+# Czech translation of mate-screensaver.
+# Copyright (C) 2005, 2007, 2008, 2009 the author(s) of mate-screensaver.
+# Copyright (C) 2005 Miloslav Trmac <mitr at volny.cz>.
+# Copyright (C) 2006 Lukas Novotny <lukasnov at cvs.gnome.org>.
+# This file is distributed under the same license as the mate-screensaver package.
+# Miloslav Trmac <mitr at volny.cz>, 2005.
+# Lukas Novotny <lukasnov at cvs.gnome.org>, 2006.
+# Petr Tomeš <ptomes at gmail.com>, 2006.
+# Jakub Friedl <jfriedl at suse.cz>, 2006.
+# Petr Kovar <pknbe at volny.cz>, 2007, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-21 05:37+0200\n"
+"PO-Revision-Date: 2009-09-21 05:36+0200\n"
+"Last-Translator: Petr Kovar <pknbe at volny.cz>\n"
+"Language-Team: Czech <mate-cs-list at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Šetřič obrazovky"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Nastaví šetřič obrazovky"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Náhled šetřiče obrazovky</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Varování: obrazovka nebude uzamčena pro superuživatele.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Správa napá_jení"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Doba, po které považovat počítač za neč_inný:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Předvolby šetřiče obrazovky"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Náhled šetřiče obrazovky"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "Spouštět šetřič obr_azovky při nečinnosti"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "Uzamykat o_brazovku po spuštění šetřiče"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "Ná_hled"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Motiv šetřiče obrazovky:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Motivy šetřiče obrazovky"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Šetřiče obrazovky"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Spustit při nečinnosti"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Povolit vložení klávesnice do okna"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Povolit odhlášení"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Povolit zobrazení zprávy o stavu sezení"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Povolit zobrazení zprávy o stavu sezení, je-li uzamčena obrazovka."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Povolit přepínání uživatelů"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Příkaz vložené klávesnice"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Uzamknout při aktivaci"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Příkaz odhlášení"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Režim výběru motivu šetřiče obrazovky"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Nastavte na hodnotu \"TRUE\", chcete-li spustit šetřič obrazovky při "
+"nečinném sezení."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Nastavte na hodnotu \"TRUE\", chcete-li povolit vložení klávesnice do okna "
+"při pokusu o odemknutí. Klíč \"keyboard_command\" musí obsahovat vhodný "
+"příkaz."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Nastavte na hodnotu \"TRUE\", chcete-li uzamknout obrazovku při aktivaci "
+"šetřiče obrazovky."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Nastavte na hodnotu \"TRUE\", chcete-li mít v dialogu odemčení obrazovky "
+"možnost přepínat na různé uživatelské účty."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Nastavení na hodnotu \"TRUE\" poskytne v dialogu odemčení obrazovky možnost "
+"odhlásit se po uplynutí určité doby. Tato doba je zadána klíčem "
+"\"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Příkaz k vložení prvku rozhraní klávesnice, který bude spuštěn, je-li klíč "
+"\"embedded_keyboard_enabled\" nastaven na hodnotu \"TRUE\". Tento příkaz by "
+"měl implementovat zásuvné rozhraní XEMBED a na standardní výstup posílat XID "
+"okna."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Příkaz, který má být spuštěn po kliknutí na tlačítko odhlášení. Tento příkaz "
+"by měl jednoduše odhlásit uživatele bez dalšího dotazování se. Účinné jen v "
+"případě, pokud je klíč \"logout_enable\" nastaven na hodnotu \"TRUE\"."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Počet minut od spuštění šetřiče obrazovky po uzamčení obrazovky."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Počet minut od spuštění šetřiče obrazovky po zobrazení možnosti odhlášení v "
+"dialogu odemčení. Tento klíč je účinný, jestliže je klíč \"logout_enable\" "
+"nastaven na hodnotu \"TRUE\"."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Doba nečinnosti v minutách, po které považovat sezení za nečinné."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Počet minut do změny na další motiv šetřiče obrazovky."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Doba v sekundách před signalizací správě napájení. Klíč je nastaven a "
+"spravován agentem správy napájení."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Režim výběru používaný šetřičem obrazovky. Šetřič obrazovky v režimu \"blank-"
+"only\" nespustí žádný motiv, při použití režimu \"single\" spustí pouze "
+"jeden motiv (zadaný v klíči \"themes\"), při použití režimu \"random\" bude "
+"spouštět motivy v náhodném pořadí."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Motiv dialogu odemčení"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Motiv použitý v dialogu odemčení."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Tento klíč specifikuje seznam motivů pro šetřič obrazovky. Seznam je "
+"ignorován, pokud je klíč \"mode\" s hodnotou \"blank-only\", název motivu "
+"poskytne v případě, že \"mode\" má hodnotu \"single\", celý seznam motivů "
+"poskytne, pokud má \"mode\" hodnotu \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Čas do uzamčení"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Čas do odhlášení ze systému"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Doba, po které informovat správu napájení"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Doba, po které se sezení považuje za nečinné"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Čas do změny motivu"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Zanechat zprávu pro %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U na %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Zrušit"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Zane_chat zprávu"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "O_dhlásit se"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Přepnout uživatele"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Odemknout"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Zobrazovat obrázky z kosmu jako prezentaci"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Zobrazí bubliny s logem \"MATE foot\""
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Plovoucí chodidla"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Zobrazovat obrázky z vaší složky obrázků"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Složka obrázků"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pop-artová mřížka pulzujících barev."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop-artové čtverce"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Zobrazit cesty sledované obrázky"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Občas otočit obrázky během pohybu"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Vypsat frekvenci snímků a další statistiky"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Maximální počet obrázků, který zobrazovat na obrazovce"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Výchozí velikost a umístění okna"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ŠÍŘKAxVÝŠKA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Zdrojový obrázek, který použít"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - přesouvá obrázky přes obrazovku"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Informace o použití viz --help.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Je nutné zadat alespoň jeden obrázek. Informace o použití viz --help.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Umístění, odkud získávat obrázky"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CESTA"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Barvu, kterou použít na pozadí obrázků"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Nevolit obrázky z umístění náhodně"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Nepokoušet se na obrazovce roztahovat obrázky"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopírování souborů"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Z:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Do:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopírování motivů"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Neplatný motiv šetřiče obrazovky"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s zřejmě není platným motivem šetřiče obrazovky."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopírování souboru: %u z %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Způsobí běžné ukončení šetřiče obrazovky"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Dotáže se na stav šetřiče obrazovky"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Dotáže se na dobu, po kterou byl šetřič obrazovky aktivní"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Oznámí běžícímu procesu šetřiče obrazovky, že má okamžitě uzamknout obrazovku"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Jestliže je šetřič obrazovky aktivní, přepnout na jiné grafické demo"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Zapne šetřič obrazovky (ztmaví obrazovku)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Jestliže je šetřič obrazovky aktivní, deaktivuje jej (zruší ztmavení "
+"obrazovky)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Šťouchne běžící šetřič obrazovky jako simulaci aktivity uživatele"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Potlačí aktivaci šetřiče obrazovky. Příkaz blokuje během aktivity potlačení."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Volající aplikace, která potlačuje šetřič obrazovky"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Důvod potlačení šetřiče obrazovky"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Verze této aplikace"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Šetřič obrazovky je %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktivní"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "neaktivní"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Šetřič obrazovky není zakázán\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Šetřič obrazovky je zakázán aplikací:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Šetřič obrazovky byl aktivní po dobu %d sekund.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Šetřič obrazovky není právě aktivní.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Zobrazovat ladicí výstup"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Zobrazovat tlačítko odhlášení"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Příkaz, který spustit tlačítkem odhlášení"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Zobrazovat tlačítko přepnutí uživatele"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Zpráva, kterou zobrazit v dialogovém okně"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "ZPRÁVA"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Nepoužito"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Uživatelské jméno:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Heslo:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Je nutné si okamžitě změnit heslo (heslo je staré)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Je nutné si okamžitě změnit heslo (vyžadováno superuživatelem)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Váš účet vypršel; kontaktujte prosím správce systému"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Nebylo zadáno žádné heslo"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Heslo nezměněno"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Nelze získat uživatelské jméno"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Zadejte znovu nové unixové heslo:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Zadejte nové unixové heslo:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(aktuální) unixové heslo:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Chyba při změně hesla NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Je nutné si zvolit delší heslo"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Heslo již bylo použito. Zvolte prosím jiné."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Ke změně hesla je nutné vyčkat déle"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Hesla bohužel nesouhlasí"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Probíhá kontrola..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Ověření selhalo."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Prázdná obrazovka"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Náhodný"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hodina"
+msgstr[1] "%d hodiny"
+msgstr[2] "%d hodin"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuta"
+msgstr[1] "%d minuty"
+msgstr[2] "%d minut"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekunda"
+msgstr[1] "%d sekundy"
+msgstr[2] "%d sekund"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s:%s:%s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s:%s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nikdy"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Nelze načíst hlavní rozhraní"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Přesvědčte se prosím, že šetřič obrazovky je správně nainstalován"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nestane se démonem"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Povolí ladící kód"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Spustí šetřič obrazovky a program uzamknutí"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nelze zavést službu %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Nelze nastavit PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Nesprávné heslo."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "V tento okamžik není povoleno získat přístup."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "K tomuto systému již nadále není dovoleno přistupovat."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "nelze se zaregistrovat u sběrnice zpráv"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "nepřipojen ke sběrnici zpráv"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "šetřič obrazovky již v tomto sezení běží"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Čas vypršel."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Je zapnut \"Caps Lock\"."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Přepnout uživatele..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Odhlásit"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U na %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Heslo:"
diff --git a/po/cy.po b/po/cy.po
new file mode 100644
index 0000000..efb85a2
--- /dev/null
+++ b/po/cy.po
@@ -0,0 +1,831 @@
+# MATE Screensaver in Welsh.
+# This file is distributed under the same license as MATE Screensaver.
+# Rhys Jones <rhys at sucs.org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-backgrounds\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-03-08 13:51+0000\n"
+"PO-Revision-Date: 2006-03-08 12:10-0000\n"
+"Last-Translator: Rhys Jones <rhys at sucs.org>\n"
+"Language-Team: Welsh <mate-cy at lists.linux.org.uk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural= (n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
+"11) ? 2 : 3;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Arbedwr sgrin"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Gosod eich hoffterau arbedwr sgrin"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "Screensaver Preferences"
+msgstr "Hoffterau Arbedwr Sgrin"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "Set session as _idle after:"
+msgstr "Gosod y sesiwn yn _segur ar ôl:"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "_Activate screensaver when session is idle"
+msgstr "_Dechrau'r arbedwr sgrin pan fo'r sesiwn yn segur"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "_Lock screen when screensaver is active"
+msgstr "_Cloi'r sgrin pan mae'r arbedwr sgrin ar waith"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "_Screensaver"
+msgstr "_Arbedwr Sgrin"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Screensaver themes"
+msgstr "Themâu arbedwr sgrin"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Arbedwyr Sgrin"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Rhoi ar waith pan yn segur"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow logout"
+msgstr "Caniatáu allgofnodi"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow monitor power management"
+msgstr "Caniatáu rheolaeth pŵer y monitor"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Caniatáu newid defnyddiwr"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Lock on activation"
+msgstr "Cloi wrth roi ar waith"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Logout command"
+msgstr "Gorchymyn allgofnodi"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Screensaver theme selection mode"
+msgstr "Modd dewis thema arbedwr sgrin"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Gosod hyn yn WIR er mwyn rhoi'r arbedwr sgrin ar waith pan fo'r sesiwn yn "
+"segur."
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+msgstr ""
+"Gosod hyn yn WIR er mwyn caniatáu i'r arbedwr sgrin ddiffodd pŵer y monitor."
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Gosod hyn yn WIR i gloi'r sgrin pan fo'r arbedwr sgrin yn cychwyn ar waith."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Gosod hyn yn WIR er mwyn cynnig opsiwn yn y ddeialog datgloi i newid i "
+"gyfrif defnyddiwr gwahanol."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Gosod hyn yn WIR er mwyn cynnig opsiwn yn y ddeialog datgloi i allgofnodi ar "
+"ôl saib. Penderfynir y saib gan yr allwedd \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Pa orchymyn i'w redeg pan fo'r botwm allgofnodi yn cael ei glicio. Fe "
+"ddylai'r gorchymyn hwn allgofnodi'r defnyddiwr yn unig, heb unrhyw "
+"ryngweithio. Dim ond os yw'r allwedd \"logout_enable\" yn WIR y daw hwn i "
+"rym."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Sawl munud ar ôl cychwyn yr arbedwr sgrin y dylid cloi'r sgrin."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Y nifer o funudau ar ôl cychwyn yr arbedwr sgrin cyn bydd opsiwn i "
+"allgofnodi yn ymddangos yn y ddeialog ddatgloi. Dim ond os yw'r allwedd "
+"\"logout_enable\" yn WIR y daw hyn i rym."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"goes into standby power mode."
+msgstr ""
+"Y nifer o funudau ar ôl cychwyn yr arbedwr sgrin tan i'r monitor fynd i'r "
+"modd pŵer wrth gefn."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"goes into suspend power mode."
+msgstr ""
+"Y nifer o funudau ar ôl cychwyn yr arbedwr sgrin tan i'r monitor fynd i'r "
+"modd atal pŵer."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"powers off."
+msgstr ""
+"Y nifer o funudau ar ôl cychwyn yr arbedwr sgrin tan i'r monitor bweru i "
+"lawr."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Sawl munud sydd raid bod heb weithredu cyn i'r sesiwn gael ei ystyried yn "
+"segur."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Sawl munud i redeg thema arbedwr sgrin cyn newid i un arall."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Y modd dewis a ddefnyddir gan yr arbedwr sgrin. Gall fod yn \"blank-only\" i "
+"alluogi'r arbedwr sgrin heb ddefnyddio unrhyw thema pan gychwynir, \"single"
+"\" i alluogi'r arbedwr sgrin gan ddefnyddio dim ond un thema pan gychwynnir "
+"(penodir hyn yn yr allwedd \"themes\"), a \"random\" i alluogi'r arbedwr "
+"sgrin gyda thema ar hap wrth gychwyn."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Mae'r allwedd hon yn penodi'r rhestr o themâu i'w defnyddio gan yr arbedwr "
+"sgrin. Fe'i hanwybyddir pan fo'r allwedd \"modd\" yn \"blank-only\", fe "
+"ddylai ddarparu enw'r thema pan fo \"mode\" yn \"single\", ac fe ddylai "
+"ddarparu rhestr o enwau themâu pan fo \"mode\" yn \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "Time before activation"
+msgstr "Amser cyn rhoi ar waith"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Time before locking"
+msgstr "Amser cyn cloi"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Time before logout option"
+msgstr "Amser cyn opsiwn allgofnodi"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "Time before power off"
+msgstr "Amser cyn pweru i lawr"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before standby"
+msgstr "Amser cyn gorffwys"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before suspend"
+msgstr "Amser cyn crogi"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before theme change"
+msgstr "Amser cyn newid thema"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Byrlymu logo troed MATE o amgylch y sgrin"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Traed yn Arnofio"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Dangos sioe sleidiau o luniau'r cosmos"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Dangos sioe sleidiau o'ch plygell Lluniau"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Plygell lluniau"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Dangos grid o liwiau sy'n pefrio, tebyg i 'pop-art'"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Sgwariau 'pop art'"
+
+#: ../savers/floaters.c:1165
+msgid "show paths that images follow"
+msgstr "dangos y llwybrau mae delweddau'n eu dilyn"
+
+#: ../savers/floaters.c:1172
+msgid "occasionally rotate images as they move"
+msgstr "cylchdroi delweddau ambell waith, wrth iddyn nhw symud"
+
+#: ../savers/floaters.c:1179
+msgid "print out frame rate and other statistics"
+msgstr "dangos y gyfradd ffrâm ac ystadegau eraill"
+
+#: ../savers/floaters.c:1187
+msgid "the maximum number of images to keep on screen"
+msgstr "uchafswm y delweddau i'w cadw ar y sgrin"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1191
+msgid "N"
+msgstr "N"
+
+#: ../savers/floaters.c:1198
+msgid "the source image to use"
+msgstr "ffynhonnell y ddelwedd i'w defnyddio"
+
+#: ../savers/floaters.c:1205
+msgid "the initial size and position of window"
+msgstr "maint a lleoliad y ffenestr, ar gychwyn"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1210
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LLEDxTALDRA+X+Y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1228
+msgid "image - floats images around the screen"
+msgstr "image - yn arnofio delweddau o amgylch y sgrin"
+
+#: ../savers/floaters.c:1238
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Gweler --help am wybodaeth am ddefnydd y rhaglen.\n"
+
+#: ../savers/floaters.c:1247
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Rhaid i chi benodi un ddelwedd.  Gweler --help am wybodaeth defnydd.\n"
+
+#: ../savers/slideshow.c:47
+msgid "Location to get images from"
+msgstr "Y lleoliad i gael delweddau ohoni"
+
+#: ../savers/slideshow.c:47
+msgid "PATH"
+msgstr "LLWYBR"
+
+#: ../src/cut-n-paste/fusa-display.c:119 ../src/cut-n-paste/fusa-user.c:150
+msgid "Manager"
+msgstr "Rheolwr"
+
+#: ../src/cut-n-paste/fusa-display.c:120
+msgid "The manager which owns this object."
+msgstr "Y rheolwr sy'n berchen ar y gwrthrych."
+
+#: ../src/cut-n-paste/fusa-display.c:127
+msgid "Name"
+msgstr "Enw"
+
+#: ../src/cut-n-paste/fusa-display.c:128
+msgid "The name of the X11 display this object refers to."
+msgstr "Enw'r dangosydd X11 mae'r gwrthrych hwn yn cyfeirio ato."
+
+#: ../src/cut-n-paste/fusa-display.c:134
+#: ../src/cut-n-paste/fusa-user-menu-item.c:164
+msgid "User"
+msgstr "Defnyddiwr"
+
+#: ../src/cut-n-paste/fusa-display.c:135
+msgid "The user currently logged in on this virtual terminal."
+msgstr ""
+"Y defnyddiwr sydd wedi mewngofnodi ar y derfynell rithwir hon ar hyn o bryd."
+
+#: ../src/cut-n-paste/fusa-display.c:141
+msgid "Console"
+msgstr "Consol"
+
+#: ../src/cut-n-paste/fusa-display.c:142
+msgid "The number of the virtual console this display can be found on, or %-1."
+msgstr ""
+"Rhif y consol rhithwir lle gellir dod o hyd i'r dangosydd hwn, neu %-1."
+
+#: ../src/cut-n-paste/fusa-display.c:148
+msgid "Nested"
+msgstr "Nythol"
+
+#: ../src/cut-n-paste/fusa-display.c:149
+msgid "Whether or not this display is a windowed (Xnest) display."
+msgstr "A yw'r dangosydd hwn o fewn ffenestr (Xnest)."
+
+#: ../src/cut-n-paste/fusa-manager.c:1263
+msgid "The display manager could not be contacted for unknown reasons."
+msgstr "Methwyd cysylltu â'r rheolwr dangosydd, am resymau anhysbys."
+
+#: ../src/cut-n-paste/fusa-manager.c:1270
+msgid "The display manager is not running or too old."
+msgstr "Nid yw'r rheolwr dangosydd yn rhedeg, neu mae'n rhy hen."
+
+#: ../src/cut-n-paste/fusa-manager.c:1273
+msgid "The configured limit of flexible servers has been reached."
+msgstr "Cyrhaeddwyd y terfyn (sydd wedi'i gyflunio) o weinyddion hyblyg."
+
+#: ../src/cut-n-paste/fusa-manager.c:1276
+msgid "There was an unknown error starting X."
+msgstr "Roedd gwall anhysbys wrth gychwyn X."
+
+#: ../src/cut-n-paste/fusa-manager.c:1279
+msgid "The X server failed to finish starting."
+msgstr "Methodd y gweinydd X â gorffen cychwyn."
+
+#: ../src/cut-n-paste/fusa-manager.c:1282
+msgid "There are too many X sessions running."
+msgstr "Mae gormod o sesiynau X yn rhedeg."
+
+#: ../src/cut-n-paste/fusa-manager.c:1285
+msgid "The nested X server (Xnest) cannot connect to your current X server."
+msgstr "Ni all y gweinydd X nythog (Xnest) gysylltu â'ch gweinydd X presennol."
+
+#: ../src/cut-n-paste/fusa-manager.c:1288
+msgid "The X server in the MDM configuration could not be found."
+msgstr "Methwyd dod o hyd i'r gweinydd X yn y cyfluniad MDM."
+
+#: ../src/cut-n-paste/fusa-manager.c:1291 ../src/cut-n-paste/mdmcomm.c:492
+msgid ""
+"Trying to set an unknown logout action, or trying to set a logout action "
+"which is not available."
+msgstr ""
+"Ceisio gosod gweithred allgofnodi anhysbys, neu'n ceisio gosod gweithred "
+"allgofnodi nad yw ar gael."
+
+#: ../src/cut-n-paste/fusa-manager.c:1294 ../src/cut-n-paste/mdmcomm.c:495
+msgid "Virtual terminals not supported."
+msgstr "Ni chynhelir rhith-derfynellau."
+
+#: ../src/cut-n-paste/fusa-manager.c:1297
+msgid "Invalid virtual terminal number."
+msgstr "Rhif terfynell rhithwir annilys."
+
+#: ../src/cut-n-paste/fusa-manager.c:1300 ../src/cut-n-paste/mdmcomm.c:499
+msgid "Trying to update an unsupported configuration key."
+msgstr "Ceisio diweddaru allwedd cyflunio sydd heb ei chynnal."
+
+#: ../src/cut-n-paste/fusa-manager.c:1303
+msgid "~/.Xauthority file badly configured or missing."
+msgstr "Ffeil ~/.Xauthority wedi'i chyflunio'n wael, neu ar goll."
+
+#: ../src/cut-n-paste/fusa-manager.c:1306
+msgid "Too many messages were sent to the display manager, and it hung up."
+msgstr "Anfonwyd gormod o negeseuon at y rheolwr dangosydd, ac fe grogodd."
+
+#: ../src/cut-n-paste/fusa-manager.c:1310
+msgid "The display manager sent an unknown error message."
+msgstr "Cafwyd neges gwall anhysbys o'r rheolwr dangosydd."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:165
+msgid "The user this menu item represents."
+msgstr "Y defnyddiwr mae'r opsiwn ddewislen hwn yn ei chynrychioli."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:172
+msgid "Icon Size"
+msgstr "Maint Eicon"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:173
+msgid "The size of the icon to use."
+msgstr "Pa faint o eicon i'w ddefnyddio."
+
+#: ../src/cut-n-paste/fusa-user.c:151
+msgid "The user manager object this user is controlled by."
+msgstr "Y gwrthrych rheolwr defnyddiwr y rheolir y defnyddiwr hwn ganddo."
+
+#: ../src/cut-n-paste/fusa-utils.c:80
+msgid "Show Details"
+msgstr "Dangos Manylion"
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:413
+msgid "MDM (The MATE Display Manager) is not running."
+msgstr "Nid yw MDM (Rheolwr Dangosydd MATE) yn rhedeg."
+
+#: ../src/cut-n-paste/mdmcomm.c:416
+msgid ""
+"You might in fact be using a different display manager, such as KDM (KDE "
+"Display Manager) or xdm."
+msgstr ""
+"Mae'n bosib eich bod chi'n defnyddio rheolwr dangosydd gwahanol, fel KDM "
+"(Rheolwr Dangosydd KDE) neu xdm."
+
+#: ../src/cut-n-paste/mdmcomm.c:419
+msgid ""
+"If you still wish to use this feature, either start MDM yourself or ask your "
+"system administrator to start MDM."
+msgstr ""
+"Os hoffech chi ddefnyddio'r nodwedd hon, gallwch naill ai gychwyn MDM eich "
+"hun, neu ofyn i reolwr eich system i gychwyn MDM."
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:441
+msgid "Cannot communicate with MDM (The MATE Display Manager)"
+msgstr "Methu cysylltu â MDM (Rheolwr Dangosydd MATE)"
+
+#: ../src/cut-n-paste/mdmcomm.c:444
+msgid "Perhaps you have an old version of MDM running."
+msgstr "Hwyrach mai hen fersiwn o MDM sy'n rhedeg."
+
+#: ../src/cut-n-paste/mdmcomm.c:463 ../src/cut-n-paste/mdmcomm.c:466
+msgid "Cannot communicate with mdm, perhaps you have an old version running."
+msgstr "Methu cyfathrebu â MDM. Hwyrach fod gennych hen fersiwn yn rhedeg."
+
+#: ../src/cut-n-paste/mdmcomm.c:469
+msgid "The allowed limit of flexible X servers reached."
+msgstr "Cyrhaeddwyd terfyn y nifer o weinyddion hyblyg X a ganiateir."
+
+#: ../src/cut-n-paste/mdmcomm.c:471
+msgid "There were errors trying to start the X server."
+msgstr "Roedd gwallau wrth geisio cychwyn y gweinydd X."
+
+#: ../src/cut-n-paste/mdmcomm.c:473
+msgid "The X server failed.  Perhaps it is not configured well."
+msgstr "Methodd y gweinydd X.  Hwyrach nad yw wedi ei gyflunio'n dda."
+
+#: ../src/cut-n-paste/mdmcomm.c:476
+msgid "Too many X sessions running."
+msgstr "Gormod o sesiynau X yn rhedeg."
+
+#: ../src/cut-n-paste/mdmcomm.c:478
+msgid ""
+"The nested X server (Xnest) cannot connect to your current X server.  You "
+"may be missing an X authorization file."
+msgstr ""
+"Ni all y gweinydd X nythol (Xnest) gysylltu â'ch gweinydd X presennol.  Gall "
+"fod ffeil ddilysiant X ar goll gennych."
+
+#: ../src/cut-n-paste/mdmcomm.c:483
+msgid ""
+"The nested X server (Xnest) is not available, or mdm is badly configured.\n"
+"Please install the Xnest package in order to use the nested login."
+msgstr ""
+"Nid yw'r gweinydd X nythol (Xnest) ar gael, neu mae mdm wedi ei gyflunio'n "
+"wael.\n"
+"Gosodwch y pecyn Xnest er mwyn defnyddio'r mewngofnodiad nythol."
+
+#: ../src/cut-n-paste/mdmcomm.c:488
+msgid ""
+"The X server is not available, it is likely that mdm is badly configured."
+msgstr ""
+"Nid yw'r gweinydd X ar gael, mae'n debyg fod mdm wedi ei gyflunio'n wael"
+
+#: ../src/cut-n-paste/mdmcomm.c:497
+msgid "Trying to change to an invalid virtual terminal number."
+msgstr "Ceisio newid i rif terfynell rhithwir annilys."
+
+#: ../src/cut-n-paste/mdmcomm.c:501
+msgid ""
+"You do not seem to have authentication needed be for this operation.  "
+"Perhaps your .Xauthority file is not set up correctly."
+msgstr ""
+"Mae'n ymddangos nad oes gennych y dilysiant angenrheidiol ar gyfer y "
+"weithred hon.  Hwyrach nad yw'ch ffeil .Xauthority wedi ei gosod yn gywir."
+
+#: ../src/cut-n-paste/mdmcomm.c:505
+msgid "Too many messages were sent to mdm and it hung upon us."
+msgstr "Anfonwyd gormod o negeseuon at mdm ac fe grogodd."
+
+#: ../src/cut-n-paste/mdmcomm.c:508
+msgid "Unknown error occured."
+msgstr "Digwyddodd gwall anhysbys."
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copïo ffeil: %u o %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "Copïo '%s'"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "O'r URI"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "URI y trosglwyddir ohono ar hyn o bryd"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "I'r URI"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "URI y trosglwyddir ato ar hyn o bryd"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "Ffracsiwn ar ben"
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "Ffracsiwn o'r trosglwyddo sydd wedi'i gwblhau"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "Cynnwys yr URI presennol"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "Mynegrif yr URI presennol - cychwyn o 1"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "Cyfanswm URIau"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "Nifer yr URIau"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "Copïo ffeiliau"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "O:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "I:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "Wrthi'n cysylltu..."
+
+#: ../src/mate-screensaver-command.c:59
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Achosi i'r arbedwr sgrin orffen yn daclus"
+
+#: ../src/mate-screensaver-command.c:61
+msgid "Query the state of the screensaver"
+msgstr "Holi cyflwr yr arbedwr sgrin"
+
+#: ../src/mate-screensaver-command.c:63
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Gorchymyn i'r broses arbedwr sgrin sy'n rhedeg i gloi'r sgrin yn syth"
+
+#: ../src/mate-screensaver-command.c:65
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Os yw'r arbedwr sgrin ar waith, newid i ddemo graffeg gwahanol"
+
+#: ../src/mate-screensaver-command.c:67
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Troi'r arbedwr sgrin ymlaen (clirio'r sgrin)"
+
+#: ../src/mate-screensaver-command.c:69
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Os yw'r arbedwr sgrin ar waith, ei ddi-ysgogi (dad-glirio'r sgrin)"
+
+#: ../src/mate-screensaver-command.c:71
+msgid "Disable running graphical themes while blanked"
+msgstr ""
+"Pan fo'r sgrin wedi'i chlirio, analluogi'r themâu graffigol sy'n rhedeg"
+
+#: ../src/mate-screensaver-command.c:73
+msgid "Enable running graphical themes while blanked (if applicable)"
+msgstr ""
+"Pan fo'r sgrin wedi'i chlirio, galluogi'r themâu graffigol sy'n rhedeg (os "
+"yn berthnasol)"
+
+#: ../src/mate-screensaver-command.c:75
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Procio'r arbedwr sgrin sy'n rhedeg, i ddynwared gweithred defnyddiwr"
+
+#: ../src/mate-screensaver-command.c:77 ../src/mate-screensaver-dialog.c:110
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Fersiwn y rhaglen"
+
+#: ../src/mate-screensaver-command.c:202
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Yr arbedwr sgrin yw %s\n"
+
+#: ../src/mate-screensaver-command.c:202
+msgid "active"
+msgstr "ar waith"
+
+#: ../src/mate-screensaver-command.c:202
+msgid "inactive"
+msgstr "ddim ar waith"
+
+#: ../src/mate-screensaver-dialog.c:108
+msgid "Show debugging output"
+msgstr "Dangos allbwn datnamu"
+
+#: ../src/mate-screensaver-dialog.c:112
+msgid "Show the logout button"
+msgstr "Dangos y botwm allgofnodi"
+
+#: ../src/mate-screensaver-dialog.c:114
+msgid "Command to invoke from the logout button"
+msgstr "Y gorchymyn i'w redeg o'r botwm allgofnodi"
+
+#: ../src/mate-screensaver-dialog.c:116
+msgid "Show the switch user button"
+msgstr "Dangos y botwm i newid defnyddwyr"
+
+#: ../src/mate-screensaver-preferences.c:427
+msgid "Blank screen"
+msgstr "Clirio'r sgrin"
+
+#: ../src/mate-screensaver-preferences.c:433
+msgid "Random"
+msgstr "Ar hap"
+
+#: ../src/mate-screensaver-preferences.c:723
+msgid "Invalid screensaver theme"
+msgstr "Enw thema arbedwr sgrin annilys"
+
+#: ../src/mate-screensaver-preferences.c:726
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "Mae'n ymddangos nad yw'r ffeil hon yn thema arbedwr sgrin ddilys."
+
+#: ../src/mate-screensaver-preferences.c:843
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d awr"
+msgstr[1] "%d awr"
+msgstr[2] "%d awr"
+msgstr[3] "%d awr"
+
+#: ../src/mate-screensaver-preferences.c:846
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d funud"
+msgstr[1] "%d funud"
+msgstr[2] "%d munud"
+msgstr[3] "%d munud"
+
+#: ../src/mate-screensaver-preferences.c:849
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d eiliad"
+msgstr[1] "%d eiliad"
+msgstr[2] "%d eiliad"
+msgstr[3] "%d eiliad"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:855
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:858
+#: ../src/mate-screensaver-preferences.c:866
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:861
+#: ../src/mate-screensaver-preferences.c:869
+#: ../src/mate-screensaver-preferences.c:873
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#. 0 seconds
+#: ../src/mate-screensaver-preferences.c:876
+msgid "0 seconds"
+msgstr "0 eiliad"
+
+#: ../src/mate-screensaver-preferences.c:891
+msgid "Never"
+msgstr "Byth"
+
+#: ../src/mate-screensaver-preferences.c:1047
+msgid "Could not load the main interface"
+msgstr "Methu llwytho'r prif ryngwyneb"
+
+#: ../src/mate-screensaver-preferences.c:1049
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Gwnewch yn siŵr fod yr arbedwr sgrin wedi'i osod yn gywir"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Peidio â throi'n ellyll"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Galluogi cod datnamu"
+
+#: ../src/gs-listener-dbus.c:1219
+msgid "failed to register with the message bus"
+msgstr "methwyd cofrestru gyda'r bws negeseuon"
+
+#: ../src/gs-listener-dbus.c:1229
+msgid "not connected to the message bus"
+msgstr "heb gysylltu â'r bws negeseuon"
+
+#: ../src/gs-listener-dbus.c:1238
+msgid "screensaver already running in this session"
+msgstr "arbedwr sgrin eisoes yn rhedeg o fewn y sesiwn hwn"
+
+#: ../src/gs-lock-plug.c:351
+msgid "Checking password..."
+msgstr "Gwirio'r cyfrinair..."
+
+#: ../src/gs-lock-plug.c:394
+msgid "Time has expired."
+msgstr "Amser ar ben."
+
+#: ../src/gs-lock-plug.c:420
+msgid "You have the Caps Lock key on."
+msgstr "Mae'r fysell Caps Lock ymlaen gennych."
+
+#: ../src/gs-lock-plug.c:707
+msgid "That password was incorrect."
+msgstr "Roedd y cyfrinair hwnnw'n anghywir."
+
+#: ../src/gs-lock-plug.c:733 ../src/gs-lock-plug.c:766
+msgid "_Unlock"
+msgstr "_Datgloi"
+
+#: ../src/gs-lock-plug.c:736 ../src/gs-lock-plug.c:763
+msgid "_Switch User..."
+msgstr "_Newid Defnyddiwr..."
+
+#. Translators: this is "username on hostname".  You
+#. can translate this to "%s@%s" if it is otherwise tricky
+#. for your language.
+#: ../src/gs-lock-plug.c:1366
+#, c-format
+msgid "%s on %s"
+msgstr "%s ar %s"
+
+#: ../src/gs-lock-plug.c:1517
+msgid "_Password:"
+msgstr "_Cyfrinair:"
+
+#: ../src/gs-lock-plug.c:1590
+msgid "S_witch to user:"
+msgstr "_Newid i'r defnyddiwr:"
+
+#: ../src/gs-lock-plug.c:1637
+msgid "Log _Out"
+msgstr "_Allgofnodi"
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 0000000..06f5b60
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,1056 @@
+# Danish translation of mate-screensaver.
+# Copyright (C) 2006-2008
+# This file is distributed under the same license as the mate-screensaver package.
+# David Nielsen <david at lovesunix.net>, 2006.
+# Kenneth Nielsen <k.nielsen at gmail.com>, 2007-08.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-13 03:30+0200\n"
+"PO-Revision-Date: 2009-09-12 18:13+0200\n"
+"Last-Translator: Kenneth Nielsen <k.nielsen81 at gmail.com>\n"
+"Language-Team: Danish <dansk at dansk-gruppen.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Pauseskærm"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Sæt dine indstillinger for pauseskærm"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Forhåndsvisning af pauseskærm</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Advarsel: skærmen vil ikke være låst for administratoren.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Strø_mstyring"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Betragt computeren som værende _i tomgang efter:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Indstillinger for pauseskærm"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Pauseskærms-forhåndsvisning"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktivér pauseskærm når computeren er i tomgang"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Lås skærm mens pauseskærmen er aktiv"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Forhåndsvisning"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema for pause_skærm:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Pauseskærm temaer"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Pauseskærme"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktivér i tomgang"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Tillad at indlejre et tastatur i vinduet"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Tillad at logge ud"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Tillad visning af sessionstatusmeddelelser"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Tillad visning af sessionstatusmeddelelser når skærmen er låst."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Tillad brugerskift"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Indlejret tastatur-kommando"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Lås ved aktivering"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Log ud-kommando"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Temavalgstilstand for pauseskærm"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Sæt denne til SAND for at aktivere pauseskærmen når sessionen er i tomgang."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Sæt denne til TRUE for at muliggøre indlejringen af et tastatur i vinduet "
+"når man prøver at låse skærmen op. Nøglen \"keyboard_command\" skal være sat "
+"til en passende kommando."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Sæt denne til TRUE for at låse skærmen når pauseskærmen bliver aktiv."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Sæt denne til TRUE for at tilbyde mulighed for at skifte bruger i "
+"oplåsningsdialogen."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Sæt denne til SAND for at tilbyde mulighed for at logge ud efter et tidsrum. "
+"Tidsrummet er specificeret i \"logout_delay\"-nøglen."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Kommandoen der skal køres for at indlejre et tastatur i vinduet til at låse "
+"skærmen op med, forudsat at \"embedded_keyboard_enabled\"-nøglen er sat til "
+"TRUE. Kommandoen bør implementere en \"XEMBED plug\"-grænseflade og lave et "
+"XID vindue på stadard-ud."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Kommandoien som skal køres når der trykkes på log ud knappen. Denne kommando "
+"bør logge brugeren af uden interaktion. Denne nøgle har kun effekt hvis "
+"\"logout_enable\"-nøglen er sat til SAND."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Antallet af minutter efter aktivering af pauseskærm før skærmen låses."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Antallet af minutter efter aktivering af pauseskærm før en "
+"udlogningsmulighed vises i oplåsningsdialogen. Denne nøgle har kun effekt "
+"hvis \"logout_enable\"-nøglen er sat til SAND."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Antallet af minutters inaktivitet før sessionen anses for værende i tomgang."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Antallet af minutter der skal køres før der skiftes pauseskærm tema."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Antallet af sekunders inaktivitet før der sendes signal til strømstyringen. "
+"Denne nøgle bliver sat og vedligeholdt af sessions strømstyrings-agent."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Den udvælgingsmåde der bliver brugt af pauseskærmen. Kan være \"blank-only\" "
+"for at sætte pauseskærmen uden noget tema ved aktivering, \"single\" for at "
+"sætte pauseskærmen til kun at bruge ét tema ved aktivering (specificeret i "
+"\"themes\" nøglen), og \"random\" for at sætte pauseskærmen til at bruge et "
+"tilfældigt tema ved aktivering."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema for låsnings-dialog"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema der skal bruger til låsnings-dialogen."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Denne nøgle specificere listen af temaer til brug af skærmskøneren. Den "
+"bliver ignoreret når \"mode\" nøglen er \"blank-only\", bør give temanavnet "
+"når \"mode\" er \"single\" og bør give en liste af temaer når \"mode\" er "
+"\"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tid før låsning"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tid før udlogningsmulighed"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tid før grundlinje for strømstyring"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tid før sessionen anses for at være i tomgang"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tid før temaskift"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Efterlad en besked til %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U på %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Afbryd"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Efterlad besked"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "Log _ud"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Skift bruger"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Lås op"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Viser et billedeshow af billeder af kosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bobler MATE-fodlogoet omkring på skærmen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Flydende fødder"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Viser et billedeshow af billeder fra din billedemappe"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Billedemappe"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Et popkunstagtigt net af pulserende farver."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Firkantet popkunst"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Vis stier som billeder følger"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Rotér billeder i ny og næ mens de flyttes"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Udskriv billedraten og anden statistik"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Det maksimale antal billeder der skal holdes på skærmen"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_BILLEDER"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Startstørrelse og -position af vindue"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "BREDDExHØJDE+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Kildebilledet der skal bruges"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "billede - flyder billeder rundt på skærmen"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Se --help fori hjælp til benyttelse.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Du skal specificere et billede. Se --help for hjælp til benyttelse.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Sted hvor billeder skal hentes fra"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "STI"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Farven der bruges til billedbaggrund"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Sammenbland ikke billeder fra placeringen"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Forsøg ikke at strække billeder på skærmen"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopierer filer"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Fra:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Til:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopierer temaer"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Ugyldigt pauseskærmtema"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s lader ikke til at være et gyldigt pauseskærmstema."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopierer fil: %u af %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "For pauseskærmen til at afslutte med ynde"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Forespørg pauseskærmens tilstand"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Forespørg til hvor lang tid pauseskærmen har været aktiv"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Beordre den kørende pauseskærmproces at låse skærmen øjeblikkeligt"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Hvis pauseskærmen er aktiv, skift da til en anden grafik demonstration"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Slå pauseskærmen til (sorten skærmen)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Hvis pauseskærmen er aktiv, deaktivér den (genopret skærmen)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Prik den kørende pauseskærm for at simulere brugeraktivitet"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Forhindrer pauseskærmen i at aktiveres. Kommandoen blokerer så længe "
+"hindringen er aktiv."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Programmet der undertrykker pauseskærmen"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Grunden til at pauseskærmen undertrykkes"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Version af dette programmel"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Denne pauseskærm er %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktiv"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inaktiv"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Pauseskærm er ikke undertrykt\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Pauseskærm bliver undertrykt af:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Pauseskærmen har været aktiv i %d sekunder.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Pauseskærmen er ikke aktiv i øjeblikket.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Vis fejlfindingsuddata"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Vis log ud-knappen"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Kommando er skal køres fra log ud-knappen"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Vis skift bruger-knappen"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Besked der skal vises i dialogen"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "BESKED"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Bruges ikke"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Brugernavn:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Adgangskode:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Det er påkrævet at du ændrer din adgangskode med det samme (adgangskode er "
+"for gammelt)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Det er påkrævet at du ændrer din adgangskode med det samme (påtvunget af "
+"administrator)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Din konto er udløbet; kontakt venligst din system-administrator"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Ingen adgangskode udleveret"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Adgangskode er uændret"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Kan ikke hente brugernavn"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Skriv ny UNIX-adgangskode igen:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Skriv ny UNIX-adgangskode:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(nuværende) UNIX-adgangskode:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Fejl under ændring af NIS adgangskode."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Du skal vælge en længere adgangskode"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Adgangskoden har allerede været brugt. Vælg en anden."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Du skal vente længere før du kan ændre din adgangskode"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Beklager, adgangskoderne passer ikke sammen"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Kontrollerer..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Godkendelse fejlede."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Sort skærm"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Tilfældig"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d time"
+msgstr[1] "%d timer"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minut"
+msgstr[1] "%d minutter"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekund"
+msgstr[1] "%d sekunder"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Aldrig"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Kunne ikke indlæse hovedgrænsefladen"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Kontrollér venligst at pauseskærmen er installeret korrekt"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Kør ikke som tjeneste"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Slå fejlfindingskode til"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Start pauseskærm og skærmlåseprogram"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Er ikke i stand til at etablere service %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Kan ikke sætte PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Forkert adgangskode."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Adgang er ikke tilladt på dette tidspunkt."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Adgang til systemet er ikke længere tilladt."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "kunne ikke registere med kommunikationsbussen"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "ikke tilsluttet kommunikationsbussen"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "pauseskærm kører allerede i denne session"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Tiden er udløbet."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Du har aktiveret Caps Lock-tasten."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Skift bruger..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Log _ud"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U på %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Adgangskode:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Årsag til fravær"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Grunden til at du ikke er ved computeren."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "Kopierer \"%s\""
+
+#~ msgid "From URI"
+#~ msgstr "Fra URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI der overføres fra i øjeblikket"
+
+#~ msgid "To URI"
+#~ msgstr "Til URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI der overføres til i øjeblikket"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Brøkdel færdiggjort"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Brøkdel af overførelse færdiggjort"
+
+#~ msgid "Current URI index"
+#~ msgstr "Nuværende URI-indeks"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Nuværende URI-indeks - starter fra 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Total URI'er"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Total antal af URI'er"
+
+#~ msgid "Connecting..."
+#~ msgstr "Tilslutter..."
+
+#~ msgid "N"
+#~ msgstr "X"
+
+#~ msgid "_Switch user..."
+#~ msgstr "_Skift bruger..."
+
+#~ msgid "S_witch to user:"
+#~ msgstr "S_kift til bruger:"
+
+#~ msgid "Manager"
+#~ msgstr "Agent"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "Agenten som ejer dette objekt."
+
+#~ msgid "Name"
+#~ msgstr "Navn"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "Navnet på den X11-skærm dette objekt henviser til."
+
+#~ msgid "User"
+#~ msgstr "Bruger"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "Den bruger som er logget ind på denne virtuelle terminal."
+
+#~ msgid "Console"
+#~ msgstr "Konsol"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr ""
+#~ "Antallet af virtuelle konsoller denne skærm kan findes på, eller %-1."
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Om denne skærm er en indlejret (Xnest) visning."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "Skærmhåndteringen kunne ikke kontaktes af ukendte årsager."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "Skærmhåndteringen kører ikke eller er for gammel."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "Den prækonfigurerede grænse af fleksible servere er nået"
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "Der opstod en ukendt fejl ved opstart af X."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X-serveren kunne ikke færdiggøre opstarting."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "Der er for mange X-sessioner kørende."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "Den indlejrede X-server (Xnest) kunne ikke forbinde til din nuværende X "
+#~ "server."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "X-serveren i MDM konfigurationen kunne ikke findes."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "Prøver at sætte en ukendt udlogningshandling, eller forsøger at sætte en "
+#~ "udlogningshandling som ikke er tilgængelig."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Virtuelle terminaler er ikke understøttet."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Ugyldigt nummer på virtual terminal."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "Prøver at opdatere en ikke-understøttet konfigurationsnøgle."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority fil forkert konfigureret eller mangler."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr ""
+#~ "For mange beskeder blev sendt til skærmhåndteringen og den lagde på."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "Skærmhåndteringen sendte en ukendt fejlbesked."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "Den bruger dette menupunkt repræsenterer."
+
+#~ msgid "Icon Size"
+#~ msgstr "Ikonstørrelse"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "Den størrelse ikon der skal bruges."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Indikatorstørrelse"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Størrelse af kontrol-indikator"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Indikator mellemrum"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Afstand mellem brugernavnet og indikatoren"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "Det brugerhåndteringsobjekt denne bruger er kontrolleret af."
+
+#~ msgid "Show Details"
+#~ msgstr "Vis detajler"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (MATEs skærmhåndteringien) kører ikke."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Du bruger måske en anden skærmhåndtering, såsom KDM (KDE skærmhåndtering) "
+#~ "eller xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Hvis du stadig ønsker at bruge denne facilitet, skal du selv starte MDM "
+#~ "eller bede din systemadministrator om det."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "Kan ikke kommunikere med MDM (MATE skærmhåndteringien)"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Måske har du en gammel version af MDM kørende."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "Kan ikke kommunikere med MDM, måske har du en gammel version kørende."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "Det tilladte antal af fleksible X-servere blev nået."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "Der opstod en fejl ved forsøg på at starte X-serveren."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "X-serveren fejlede. Måske er den ikke konfiguret korrekt."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "For many X-sessioner kørende."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "Den indlejrede X-server (Xnest) kan ikke forbinde til din nuværende X-"
+#~ "server. Du mangler måske en X-godkendelsesfil."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "Den indlejrede X-server (Xnest) er ikke tilgængelig eller MDM er forkert "
+#~ "konfigureret.\n"
+#~ "Installér venligst Xnest-pakken for at kunne benyttet det indlejrede log "
+#~ "ind."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "X-serveren er ikke tilgængelig, det er sandsynligt at MDM er konfiguret "
+#~ "forkert"
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Forsøger at skifte et ugyldigt virtuel terminal nummer."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Du lader ikke til at have den nødvendige godkendelse til denne handling. "
+#~ "Måske er din .Xauthority-fil ikke sat korrekt op."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "For mange beskeder blev sendt til MDM og den lagde på."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "En ukendt fejl opstod."
+
+#~ msgid "_Screensaver"
+#~ msgstr "_Pauseskærm"
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "Tillad strømstyringshåndtering for skærm"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr "Sæt denne til SAND for at tillade pauseskærmen at slukke skærmen."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "Antallet af minutter efter aktivering af pauseskærm til skærmen sættes i "
+#~ "dvale tilstand."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "Antallet af minutter efter pauseskærm aktivering til skærmen sættes i "
+#~ "frakoblet tilstand."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr ""
+#~ "Antallet af minutter efter pauseskærm aktivering til skærmen slukkes."
+
+#~ msgid "Time before activation"
+#~ msgstr "Tid før aktivering"
+
+#~ msgid "Time before power off"
+#~ msgstr "Time før maskinen slukkes"
+
+#~ msgid "Time before standby"
+#~ msgstr "Tid før maskinen sættes i dvale"
+
+#~ msgid "Time before suspend"
+#~ msgstr "Tid før maskinen sættes frakoblet tilstand"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Deaktivér kørsel af grafiske temaer, når skærmen er sortnet"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr ""
+#~ "Aktivér kørsel af grafiske temaer, når skærmen er sortnet (hvis relevant)"
+
+#~ msgid "0 seconds"
+#~ msgstr "0 sekunder"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "Adgangskoden var ikke korrekt."
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..fa72e9f
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,839 @@
+# German translation of mate-screensaver.
+# Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+# This file is distributed under the same license as the mate-screensaver
+# package.
+# Frank Arnold <frank at scirocco-5v-turbo.de>, 2005.
+# Hendrik Richter <hendrikr at gnome.org>, 2005, 2006, 2007, 2008.
+# Hendrik Brandt  <heb at mate-de.org>, 2006.
+# Andre Klapper <ak-47 at gmx.net>, 2007, 2008.
+# Christian Kirbach <Christian.Kirbach at googlemail.com>, 2009.
+# Mario Blättermann <mariobl at gnome.org>, 2009.
+#
+# Based on German mdm and fast-user-switch-applet translations.
+# Copyright on mdm and fast-user-switch-applet translations is held
+# by its translators. Please keep in sync with this packages.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-09-03 18:04+0000\n"
+"PO-Revision-Date: 2009-09-04 22:29+0100\n"
+"Last-Translator: Mario Blättermann <mariobl at gnome.org>\n"
+"Language-Team: German <mate-de at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Bildschirmschoner"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Einstellungen des Bildschirmschoners ändern"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Vorschau des Bildschirmschoners</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+"<b>Warnung: Der Bildschirm wird für den Systemadministrator nicht gesperrt.</"
+"b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Energieverwaltung"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Sitzung auf _untätig setzen nach:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Einstellungen des Bildschirmschoners"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Vorschau des Bildschirmschoners"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Bildschirmschoner aktivieren, wenn der Benutzer untätig ist"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "Bildschirm _sperren, wenn der Bildschirmschoner aktiv ist"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Vorschau"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Bildschirmschoner_thema:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Bildschirmschonerthemen"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Bildschirmschoner"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Bei Untätigkeit aktivieren"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Bildschirmtastatur im Fenster zulassen"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Abmelden zulassen"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Anzeige der Nachricht zum Sitzungsstatus zulassen"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Anzeige der Nachricht zum Sitzungsstatus zulassen, wenn der Bildschirm "
+"gesperrt ist."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Benutzerwechsel zulassen"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Befehl für Bildschirmtastatur"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Bei Aktivierung sperren"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Abmeldebefehl"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Bildschirmschonerauswahlmodus"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Setzen Sie diesen Wert auf TRUE (Wahr), um den Bildschirmschoner zu "
+"aktivieren, wenn der Benutzer untätig ist."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Setzen Sie diesen Wert auf TRUE (Wahr), um das Einbetten einer "
+"Bildschirmtastatur in den Entsperrdialog zu erlauben. Der Schlüssel "
+"»keyboard_command« muss einen entsprechenden Befehl enthalten."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Setzen Sie diesen Wert auf TRUE (Wahr), um den Bildschirm zu sperren, wenn "
+"der Bildschirmschoner aktiviert wird."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Setzen Sie diesen Wert auf TRUE (Wahr), um einen Benutzerwechsel an einem "
+"gesperrten Bildschirm zu ermöglichen."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Setzen Sie diesen Wert auf TRUE (Wahr), um bei gesperrtem Bildschirm eine "
+"Option zum Abmelden nach einer festgelegten Zeit anzuzeigen. Die Verzögerung "
+"wird im Schlüssel »logout_delay« festgelegt."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Der auszuführende Befehl um eine Bildschirmtastatur in das Fenster "
+"einzubinden, wenn der Schlüssel »embedded_keyboard_enabled« auf TRUE (Wahr) "
+"gesetzt ist. Dieser Befehl sollte eine XEMBED-Plug-Schnittstelle "
+"implementieren und ein XID-Fenster in der Standardausgabe ausgeben."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Der auszuführende Befehl, wenn der Abmeldeknopf angeklickt wird. Dieser "
+"Befehl sollte den Benutzer ohne weitere Interaktion einfach abmelden. Dieser "
+"Schlüssel wird nur berücksichtigt, wenn der Schlüssel »logout_enable« auf "
+"TRUE (Wahr) gesetzt ist."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Die Anzahl an Minuten nach Aktivierung des Bildschirmschoners, bis der "
+"Bildschirm gesperrt wird."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Die Anzahl an Minuten nach der Aktivierung des Bildschirmschoners, bis eine "
+"Abmeldeoption im Entsperrdialog angezeigt wird. Dieser Schlüssel wird nur "
+"berücksichtigt, wenn der Schlüssel »logout_enable« auf TRUE (Wahr) gesetzt "
+"ist."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Die Anzahl inaktiver Minuten, bis der Benutzer als untätig gilt."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Die Anzahl an Minuten, bis der Bildschirmschoner gewechselt wird."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Die Dauer der Untätigkeit in Sekunden, bevor die Energieverwaltung "
+"benachrichtigt wird. Dieser Schlüssel wird vom Energieverwaltungsdienst der "
+"Sitzung gesteuert."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Der Auswahlmodus des Bildschirmschoners. Mögliche Werte sind »blank-only«, um "
+"den Bildschirm schwarz zu schalten, ohne dass irgendein Thema verwendet "
+"wird, »single«, damit der Bildschirmschoner genau ein Thema verwendet (dieses "
+"wird über den Schlüssel »themes« festgelegt) und »random«, damit der "
+"Bildschirmschoner ein zufälliges Thema auswählt."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Thema des Sperrdialogs"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Das für den Sperrdialog zu verwendende Thema."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Dieser Schlüssel legt die vom Bildschirmschoner verwendeten Themen fest. Der "
+"Wert wird ignoriert, wenn der Schlüssel »mode« auf »blank-only« gesetzt ist. "
+"Im Modus »single« enthält der Schlüssel genau einen Themennamen und im Modus "
+"»random« eine Liste von Themennamen."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Zeit bis zum Sperren"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Zeit bis zur Abmeldeoption"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Zeit bis zum Benachrichtigen der Energieverwaltung"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Zeitdauer, ab der die Sitzung als untätig gilt"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Zeit bis zum Wechsel des Bildschirmschoners"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Eine Nachricht für %R hinterlassen:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U auf %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "A_bbrechen"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Nachricht hinterlassen"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "A_bmelden"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Benutzer _wechseln"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "Sperrung auf_heben"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Weltraum"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Eine Diaschau mit Weltraumbildern anzeigen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Das MATE-Fuß-Logo überall auf dem Bildschirm schweben lassen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Schwebende Füße"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Eine Diaschau mit den Bildern aus Ihrem Bilderordner anzeigen"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Bilderordner"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Ein Raster mit pulsierenden Farben im Pop-Art-Stil."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop-Art-Felder"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Die Pfade anzeigen, denen die Bilder folgen"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Bilder während der Bewegung gelegentlich drehen"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Bildfrequenz und andere Statistiken ausgeben"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr ""
+"Die maximale Anzahl gleichzeitig auf dem Bildschirm dargestellter Bilder"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Die Startgröße und -position des Fensters"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "BREITExHÖHE+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Das zu verwendende Ausgangsbild"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - Bilder bewegen sich über den Bildschirm"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Benutzen Sie --help für weitere Informationen.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Sie müssen ein Bild angeben. Benutzen Sie --help für weitere Informationen.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Der Speicherort, von dem Bilder geholt werden"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PFAD"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Hintergrundfarbe für Bilder"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Bilder nicht zufällig anzeigen"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Bilder nicht auf Bildschirmgröße anpassen"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Dateien werden kopiert"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Von:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Nach:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Themen werden kopiert"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Ungültiger Bildschirmschoner"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s scheint kein gültiger Bildschirmschoner zu sein."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Datei wird kopiert: %u von %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Den Bildschirmschoner beenden"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Den Status des Bildschirmschoners abfragen"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Die Länge der Bildschirmschoneraktivität abfragen"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Den Bildschirm über den laufenden Bildschirmschonerprozess sofort sperren"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Wechseln zu einer anderen Grafik-Demo, falls der Bildschirmschoner aktiv ist"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Den Bildschirmschoner aktivieren (Bildschirm abdunkeln)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Deaktivieren des Bildschirmschoners, falls er aktiv ist "
+"(Bildschirmabdunkelung aufheben)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Den laufenden Bildschirmschonerprozess anstoßen, um Benutzeraktivität zu "
+"simulieren"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Verhindern, dass der Bildschirmschoner aktiviert wird. Befehl wird bei "
+"aktiver Sperre blockiert."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Die Anwendung, die den Bildschirmschoner unterdrückt"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Der Grund für die Unterdrückung des Bildschirmschoners"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Version dieser Anwendung"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Der Bildschirmschoner ist %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktiv"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inaktiv"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Der Bildschirmschoner wird nicht unterdrückt\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Der Bildschirmschoner wird unterdrückt von:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Der Bildschirmschoner war für %d Sekunden aktiv.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Der Bildschirmschoner ist derzeit nicht aktiv.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Fehlerdiagnose-Ausgaben anzeigen"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Den Knopf zum Abmelden anzeigen"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Befehl, der vom Abmeldeknopf aufgerufen wird"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Knopf für den Benutzerwechsel anzeigen"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Die im Dialog anzuzeigende Nachricht"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "NACHRICHT"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Nicht verwendet"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Benutzername:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Passwort:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Sie müssen Ihr Passwort sofort ändern (Passwort veraltet)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Sie müssen Ihr Passwort sofort ändern (durch Systemadministrator erzwungen)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Ihr Benutzerkonto ist abgelaufen. Bitte kontaktieren Sie Ihren "
+"Systemadministrator."
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Kein Passwort angegeben"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Passwort ist unverändert"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Benutzername konnte nicht ermittelt werden"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Neues UNIX-Passwort wiederholen:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Neues UNIX-Passwort:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Altes UNIX-Passwort:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Beim Ändern des NIS-Passworts ist ein Fehler aufgetreten."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Sie müssen ein längeres Passwort wählen"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Dieses Passwort wurde bereits verwendet. Bitte wählen Sie ein anderes."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Sie müssen länger warten, um Ihr Passwort zu ändern."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Entschuldigung, die Passwörter stimmen nicht überein"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Überprüfung läuft …"
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Legitimierung ist gescheitert."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Leerer Bildschirm"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Zufällig"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d Stunde"
+msgstr[1] "%d Stunden"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d Minute"
+msgstr[1] "%d Minuten"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d Sekunde"
+msgstr[1] "%d Sekunden"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s:%s:%s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s:%s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nie"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Die Hauptschnittstelle konnte nicht geladen werden"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr ""
+"Bitte stellen Sie sicher, dass der Bildschirmschoner korrekt installiert ist"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Kein Hintergrundprozess"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Fehlerdiagnosefunktionen aktivieren"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Bildschirmschoner und Bildschirmsperrung starten"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Dienst %s konnte nicht eingerichtet werden: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s konnte nicht gesetzt werden"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Falsches Passwort."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Ein Zugriff ist derzeit nicht gestattet."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Es ist nicht länger gestattet, auf das System zuzugreifen."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "Registrierung am Benachrichtigungssystem fehlgeschlagen"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "Keine Verbindung zum Benachrichtigungssystem"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "Der Bildschirmschoner ist in dieser Sitzung bereits aktiv"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Die Zeit ist abgelaufen."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Die Feststelltaste ist aktiviert."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "Benutzer _wechseln …"
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "A_bmelden"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U auf %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Passwort:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Abwesenheitsgrund"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Der Grund für die Abwesenheit vom Computer."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "»%s« wird kopiert"
+
+#~ msgid "From URI"
+#~ msgstr "Von Adresse"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "Die Adresse von der die Übertragung kommt"
+
+#~ msgid "To URI"
+#~ msgstr "Nach Adresse"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "Die Adresse zu der die Übertragung geht"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Vollständiger Anteil"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Anteil der aktuell abgeschlossenen Übertragung"
+
+#~ msgid "Current URI index"
+#~ msgstr "Aktueller Adressindex"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Aktueller Adressindex - Start bei 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Adressen ingesamt"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Gesamtmenge aller Adressen"
+
+#~ msgid "Connecting..."
+#~ msgstr "Verbinden …"
+
+#~ msgid "Authentication"
+#~ msgstr "Authentifizierung"
diff --git a/po/dz.po b/po/dz.po
new file mode 100644
index 0000000..5fa9496
--- /dev/null
+++ b/po/dz.po
@@ -0,0 +1,859 @@
+# Dzongkha translation of mate-screensaver.
+# Copyright @ 2006 Free Software Foundation, Inc.
+# Mindu Dorji
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.Head\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-05-01 03:23+0000\n"
+"PO-Revision-Date: 2008-09-23 10:31+0530\n"
+"Last-Translator: Dawa pemo <daws_403 at hotmail.com>\n"
+"Language-Team: Dzongkha <pgeyleg at dit.gov.bt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Poedit-Language: Dzongkha\n"
+"X-Poedit-Country: Bhutan\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་།"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "ཁྱོད་རའི་གསལ་གཞི་ཉེནསྲུང་གི་དགའ་གདམ་ཚུ་ གཞི་སྒྲིག་འབད།"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་གི་སྔོན་ལྟ།"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>ཉེན་བརྡ་: རྩ་བའི་ལག་ལེན་པའི་དོན་ལུ་ གསལ་གཞི་ལྡེ་མིག་མི་བརྐྱབ།</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "ནུས་ཤུགས་འཛིན་སྐྱོང་(_M)"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "ཤུལ་ལས་གློག་རིག་ལས་མེད་སྦེ་ཆ་བཞག་:(_i)"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་གི་དགའ་གདམ་ཚུ།"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་གི་སྔོན་ལྟ།"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "གློག་རིག་ལས་མེད་ཨིན་པའི་སྐབས་ གསལ་གཞི་ཉེན་སྲུང་ཤུགས་ལྡན་བཟོ།(_A)"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ཤུགས་ལྡན་སྐབས་ གསལ་གཞི་ལྡེ་མིག་རྐྱབས།(_L)"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "སྔོན་ལྟ།(_P)"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་གི་བརྗོད་དོན་:(_S)"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་བརྗོད་དོན་ཚུ།"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ཚུ།"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "ལས་མེད་སྐབས་ལུ་ ཤུགས་ལྡན་བཟོ།"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "ལྡེ་སྒྲོམ་ཅིག་ སྒོ་སྒྲིག་གུ་ གནས་འདྲེན་འབད་བཅུག།"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "ཕྱིར་བསྐྱོད་འབད་བཅུག"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "ལག་ལེན་པ་སོར་བསྒྱུར་འབད་བཅུག"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "གནས་འདྲེན་འབད་ཡོད་པའི་ལྡེ་སྒྲོམ་བརྡ་བཀོད།"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "ཤུགས་ལྡན་བཟོ་བའི་སྐབས་ལྡེ་མིག་རྐྱབས།"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "ཕྱིར་བསྐྱོད་ཀྱི་བརྡ་བཀོད།"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "ཕ་རོལ་དུ་སྡོད་བའི་རྒྱུ་མཚན"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "གསལ་གཞི་བརྗོད་དོན་ སེལ་འཐུའི་ཐབས་ལམ།"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "ལཱ་ཡུན་དེ་ ལས་མེད་ཨིན་པའི་སྐབས་ གསལ་གཞི་ཉེན་སྲུང་ ཤུགས་ལྡན་བཟོ་ནི་ལུ་ འདི་བདེན་པ་གུ་ གཞི་སྒྲིག་འབད།"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The \"keyboard_command\" key must be set with the appropriate command."
+msgstr "ལྡེ་མིག་ཕྱེ་བའི་སྐབས་ ལྡེ་སྒྲོམ་ཅིག་སྒོ་སྒྲིག་གུ་ གནས་འདྲེན་འབད་ནི་ལུ་ འདི་བདེན་པ་གུ་ གཞི་སྒརིག་འབད། \"ལྡེ་སྒྲོམ་བརྡ་བཀོད་\" དེ་ འོས་འབབ་ཅན་གྱི་བརྡ་ཀབོད་ཐོག་ལས་ གཞི་སྒྲིག་འབད་དགོ།"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ ཤུགས་ལྡན་འགྱོ་བའི་སྐབས་ གསལ་གཞི་ལྡེ་མིག་བརྐྱབ་ནི་ལུ་ འདི་ངེས་བདེན་གུ་ གཞི་སྒྲིག་འབད།"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+msgstr "ལག་ལེན་པའི་རྩིས་ཐོ་སོ་སོ་ཅིག་ལུ་ སོར་བསྒྱུར་འབད་ནི་ལུ་ ལྡེ་མིག་ཕྱེ་ནིའི་ཌའི་ལོག་ནང་ གདམ་ཁ་ཅིག་བྱིན་ཐབས་ལུ་ འདི་ངེས་བདེན་གུ་ གཞི་སྒྲིག་འབད།"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "ཕྱིར་འགྱངས་ཅིག་གི་ཤུལ་ལས་ ཕྱིར་བསྐྱོད་འབད་ནི་ལུ་ ལྡེ་མིག་ཕྱེ་ནིའི་ཌའི་ལོག་ནང་ གདམ་ཁ་ཅིག་བྱིན་ཐབས་ལུ་ འདི་ངེས་བདེན་གུ་ གཞི་སྒྲིག་འབད། ཕྱིར་འགྱངས་དེ་\"logout_delay\" ལྡེ་མིག་ནང་ གསལ་བཀོད་འབད་དེ་ཡོད། "
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "The command that will be run, if the \"embedded_keyboard_enabled\" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output."
+msgstr "སྒོ་སྒྲིག་ནང་ལུ་ ལྡེ་སྒྲོམ་ཝི་གེཊི་ཅིག་ གནས་འདྲེན་འབད་ནི་ལུ་  \"embedded_keyboard_enabled\" ལྡེ་མིག་དེ་ བདེན་པ་གུ་གཞི་སྒྲིག་འབད་དེ་ཡོད་པ་ཅིན་ གཡོག་བཀོལ་ནིའི་བརྡ་བཀོད། བརྡ་ཀབོད་འདི་གིས་ ཨེགསི་ཨི་ཨེམ་བི་ཨི་ཌི་ པ་ལག་གི་ངོས་འདྲ་བ་ཅིག་ ལག་ལེན་འཐབ་སྟེ་ ཚད་ལྡན་ཨའུཊི་པུཊི་གུ་ སྒོ་སྒྲིག་གི་ཨེསི་ཨའི་ཌི་ཅིག་ ཕྱིར་བཏོན་འབདཝ་ཨིན།"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "ཕྱིར་བསྐྱོད་ཨེབ་རྟ་དེ་ལུ་ ཨེབ་གཏང་འབད་བའི་སྐབས་ ལས་བཀོལ་གྱི་བརྡ་བཀོད། བརྡ་བཀོད་འདི་གིས་ ཕན་ཚུན་གྱི་འབྲེལ་བ་ག་ནི་ཡང་མེད་པར་ ལག་ལེན་པ་དེ་ ཕྱིར་བསྐྱོད་འབདཝ་ཨིན། ལྡེ་མིག་འདི་ཡང་ \"logout_enable\" ལྡེ་མིག་དེ་ ངེས་བདེན་གུ་ གཞི་སྒྲིག་འབད་བ་ཅིན་རྐྱངམ་གཅིག་ ནུས་པ་ཡོདཔ་ཨིན།"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ཤུགས་ལྡན་བཟོ་ཞིནམ་ལས་ གསལ་གཞི་ལྡེ་མིག་མ་བརྐྱབས་པའི་ཧེ་མར་ སྐར་མའི་གྱངས་ཁ།"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ཤུགས་ལྡན་བཟོ་ཞིནམ་ལས་ ལྡེ་མིག་ཕྱེ་ནིའི་ཌའི་ལོག་ནང་ ཕྱིར་བསྐྱོད་གདམ་ཁ་ཅིག་ མ་འབྱུང་པའི་ཧེ་མར་ སྐར་མའི་གྱངས་ཁ། ལྡེ་མིག་འདི་ \"logout_enable\"ལྡེ་མིག་དེ་ ངེས་བདེན་གུ་ གཞི་སྒྲིག་ཡོད་པ་ཅིན་རྐྱངམ་གཅིག་ ནུས་པ་ཡོདཔ་ཨིན།"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "ལཱ་ཡུན་འདི་ ལས་མེད་སྦེ་ ཆ་འཇོག་མ་འབད་བའི་ཧེ་མར་ ཤུགས་མེད་སྦེ་གནས་དགོ་པའི་ སྐར་མའི་གྱངས་ཁ།"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "གསལ་གཞི་ཉེན་སྲུང་གི་བརྗོད་དོན་ བསྒྱུར་བཅོས་མ་འབད་བའི་ཧེ་མར་ གཡོག་བཀོལ་དགོ་པའི་ སྐར་མའི་གྱངས་ཁ།"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of seconds of inactivity before signalling to power-management. This key is set and maintained by the session power-management agent."
+msgstr "ནུས་ཤུགས་འཛིན་སྐྱོང་ལུ་བརྡ་སྟོན་མ་འབད་བའི་ཧེ་མ་ ལཱ་མེད་ཀྱི་སྐར་ཆ་གི་གྲངས། ལྡེ་མིག་འདི་ ལཱ་ཡུན་ནུས་ཤུགས་འཛིན་སྐྱོང་ལས་ཚབ་འདི་གིས་ གཞི་སྒྲིག་དང་རྒྱུན་སྐྱོང་འབད་ཡོད།"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "གློག་རིག་ནང་ལས་ཐག་རིང་སར་སྡོད་དགོ་པའི་རྒྱུ་མཚན།"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+msgstr "གསལ་གཞི་ཉེན་སྲུང་གིས་ ལག་ལེན་འཐབ་མི་ སེལ་འཐུའི་ཐབས་ལམ། ཤུགས་བཟོའི་སྐབས་ བརྗོད་དོན་ག་ནི་ཡང་ ལག་ལེན་མ་འཐབ་པར་ གསལ་གཞི་ཉེན་སྲུང་ ལྕོགས་ཅན་བཟོ་ནི་ལུ་\"blank-only\" དང་ ཤུགས་བཟོའི་སྐབས་ བརྗོད་དོན་གཅིག་ ལག་ལེན་འཐབ་སྟེ་ གསལ་གཞི་ཉེན་སྲུང་ལྕོགས་ཅན་བཟོ་ནི་ལུ་(\"themes\" ལྡེ་མིག་ནང་གསལ་བཀོད་འབད་མི)  དེ་ལས་ཤུགས་བཟོའི་སྐབས་ གང་འབྱུང་བརྗོད་དོན་ཅིག་ ལག་ལེན་འཐབ་སྟེ་ གསལ་གཞ
 ི་ཉེན་སྲུང་ ལྕོགས་ཅན་བཟོ་ནི་ལུ་ \"random\"།"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "ཌའི་ལོག་ལྡེ་མིག་བརྐྱབ་ནིའི་བརྗོད་དོན།"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "ཌའི་ལོག་ལྡེ་མིག་བརྐྱབ་ནི་ལུ་ལག་ལེན་འཐབ་མི་བརྗོད་དོན།"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+msgstr "ལྡེ་མིག་འདི་གིས་ གསལ་གཞི་ཉེན་སྲུང་གིས་ ལག་ལེན་འཐབ་མི་བརྗོད་དོན་གྱི་ཐོ་ཡིག་དེ་ གསལ་བཀོད་འབདཝ་ཨིན། \"mode\" ལྡེ་མིག་དེ་ \"blank-only\" ཨིན་པའི་སྐབས་ འདི་སྣང་མེད་བཞགཔ་ཨིན། \"mode\"དེ་ \"single\" ཨིན་པའི་སྐབས་ བརྗོད་དོན་གྱི་མིང་བྱིན་དགོ དེ་ལས་ \"mode\" དེ་ \"random\" ཨིན་པའི་སྐབས་ བརྗོད་དོན་གྱི་ཚུ་གི་ཐོ་ཡིག་ཅིག་བྱིན་དགོ"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "ལྡེ་མིག་མ་བརྐྱབས་པའི་ཧེ་མར་ཆུ་ཚོད།"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "ཕྱིར་བསྐྱོད་ཀྱི་ཧེ་མར་ཆུ་ཚོད།"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "ནུས་ཤུགས་འཛིན་སྐྱོང་གཞི་ཐག་གི་ཧེ་མའི་ཆུ་ཚོད་"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "ལཱ་ཡུན་འདི་ ལས་མེད་སྦེ་ཆ་འཇོག་མ་འབད་བའི་ཧེ་མའི་ཆུ་ཚོད་"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "བརྗོད་དོན་མ་སོར་བའི་ཧེ་མར་ཆུ་ཚོད།"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>འཕྲིན་དོན་འདི་བཞག %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U། %h གུ་</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "ཆ་མེད།(_C)"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "འཕྲིན་དོན་བཞག(_L)"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "ཕྱིར་བསྐྱོད་འབད།(_L)"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "ལག་ལེན་པའི་སོར་བསྒྱུར(_S)"
+
+#: ../data/lock-dialog-default.glade.h:11
+#: ../src/gs-lock-plug.c:1214
+msgid "_Unlock"
+msgstr "ལྡེ་མིག་ཕྱེ།(_U)"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "ཀོསི་མཱོསི།"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "ཀོསི་མཱོསི་གི་ པར་ཚུ་གི་བཤུད་བརྙན་ཅིག་ བཀྲམ་སྟོན་འབད།"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "རྦ་ག་-གསལ་གཞིའི་མཐའ་སྐོར་ ཇི་ནོམ་རྐང་པའི་ལས་རྟགས།"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "ལྡིང་བའི་རྐང་པ།"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "ཁྱོད་རའི་པར་གྱི་སྣོད་འཛིན་ནང་ལས་ བཤུད་བརྙན་ཅིག་ བཀྲམ་སྟོན་འབད།"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "པར་གྱི་སྣོད་འཛིན།"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "འགྱུར་བའི་ཚོས་གཞིའི་ པོཔ་-ཨརཊི་-ཨིཤ་ གིརིཌི།"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "པོཔ་ཨརཊི་གྲུ་བཞི།"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "གཟུགས་བརྙན་གྱིས་ རྗེས་སུ་འབྲང་བའི་འགྲུལ་ལམ་ཚུ་སྟོན་ "
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "གཟུགས་བརྙན་ཚུ་སྤརཝ་དང་འབྲེལ་ཏེ་ འཕྲལ་འཕྲལ་སྦེ་བསྒྱིར་ "
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "གཞི་ཁྲམ་གྱི་གོང་ཚད་དང་ ཚད་རྩིས་གཞན་ཚུ་ དཔར་བསྐྲུན་འབད་ "
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "གསལ་གཞི་གུ་བཞག་དགོ་པའི་ གཟུགས་བརྙན་གྱི་གྱངས་ཁའི་མང་མཐའ་ "
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "མེགསི་_གཟུགས་བརྙན་ཚུ་ "
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "སྒོ་སྒྲིག་གི་ འགོ་ཐོག་གི་ཚད་དང་གནས་ས་ "
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "རྒྱ་ཚད་xམཐོ་ཚད་+ཨེགསི་+ཝའི།"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "ལག་ལེན་འཐབ་ནིའི་ འབྱུང་ཁུངས་གཟུགས་བརྙན་ "
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "གཟུགས་བརྙན་ - གཟུགས་བརྙན་ཚུ་ གསལ་གཞི་མཐའ་བསྐོར་ཏེ་ལྡིངམ་ཨིན།"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s.ལག་ལེན་བརྡ་དོན་གྱི་དོན་ལས་ གྲོགས་རམ་ལུ་བལྟ།\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "ཁྱོད་ཀྱིས་གཟུགས་བརྙན་གཅིག་ གསལ་བཀོད་འབད་དགོ ལག་ལེན་བརྡ་དོན་གྱི་དོན་ལས་ གྲོགས་རམ་ལུ་བལྟ།\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "གཟུགས་བརྙན་ལེན་སའི་གནས་ཁོངས།"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "འགྲུལ་ལམ།"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "གཟུགས་བརྙན་ རྒྱབ་གཞིའི་དོན་ལུ་ ལག་ལེན་འཐབ་ནི་ཨིན་པའི་ ཚོས་གཞི་ "
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "གནས་ས་ཚུ་ལས་ པར་ཚུ་ གང་འབྱུང་མ་འབད་ "
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "གསལ་གཞི་གུ་ལུ་ གཟུགས་བརྙན་ཚུ་ བསྣར་ནིའི་འབད་རྩོལ་མ་བསྐྱེད། "
+
+#: ../src/copy-theme-dialog.c:211
+msgid "Copying files"
+msgstr "ཡིག་སྣོད་འདྲ་བཤུས་རྐྱབ་དོ།"
+
+#: ../src/copy-theme-dialog.c:229
+msgid "From:"
+msgstr "ལས་:"
+
+#: ../src/copy-theme-dialog.c:233
+msgid "To:"
+msgstr "ལུ་:"
+
+#: ../src/copy-theme-dialog.c:253
+msgid "Copying themes"
+msgstr "བརྗོད་དོན་ཚུ་ འདྲ་བཤུས་རྐྱབ་དོ་"
+
+#: ../src/copy-theme-dialog.c:297
+msgid "Invalid screensaver theme"
+msgstr "ནུས་མེད་གསལ་གཞི་ཉེན་སྲུང་བརྗོད་དོན།"
+
+#: ../src/copy-theme-dialog.c:300
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s དེ་ ནུས་ཅན་གྱི་ གསལ་གཞིའི་ཉེན་སྲུང་གི་ བརྗོད་དོན་ཅིག་སྦེ  མི་འབྱུང་མས། "
+
+#: ../src/copy-theme-dialog.c:480
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ཡིག་སྣོད་%uལས་%uའདྲ་བཤུས་རྐྱབ་དོ།"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་དེ་ སྤྲོ་ཉམས་ཐོག་ལས་ ཕྱིར་འཐོན་འབད་བཅུགཔ་ཨིན།"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་གི་གནས་ལུགས་དྲི་དཔྱད་འབད།"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་འདི་ ཤུགས་ལྡན་སྦེ་སྡོད་པའི་ ཆུ་ཚོད་ཀྱི་རིང་ཚད་འདི་ འདྲི་དཔྱད་འབད་"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "གསལ་གཞི་དེ་འཕྲལ་ལས་ལྡེ་མིག་བརྐྱབ་ནིའི་དོན་ལུ་ གཡོག་བཀོལ་བཞིན་ཡོད་མི་ གསལ་གཞི་ཉེན་སྲུང་གི་ལས་སྦྱོར་ལུ་སླབ་ཨིན།"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་དེ་ ཤུགས་ལྡན་ཨིན་པ་ཅིན་ ཚད་རིས་ཌེ་མོ་གཞན་མི་ལུ་ སོར་བསྒྱུར་འབད།"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ཨཱོན་འབད། (གསལ་གཞི་སྟོངམ་བཟོ)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་དེ་ ཤུགས་ལྡན་ཨིན་པ་ཅིན་ ཤུགས་མེད་བཟོ།(གསལ་གཞི་སྟོངམ་བཟོ་ནི་བཤོལ)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "ལག་ལེན་པའི་བྱ་བ་ མཚུངས་བཟོ་འབད་ནི་ལུ་ གཡོག་བཀོལ་བཞིན་ཡོད་མི་གསལ་གཞི་ཉེན་སྲུང་དེ་ལུ་གསོབ།"
+
+#: ../src/mate-screensaver-command.c:78
+msgid "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ཤུགས་ལྡན་བཟོ་ནི་ལུ་ བར་ཆད་རྐྱབས། བར་ཆད་ཤུགས་ལྡན་ཨིན་པའི་སྐབས་ བརྡ་བཀོད་བཀག་ཆ་འབདཝ་ཨིན།"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ལུ་ བར་ཆན་རྐྱབ་མི་ གློག་རིམ་དེ།"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་ལུ་ བར་ཆད་རྐྱབ་དགོ་པའི་རྒྱུ་མཚན།"
+
+#: ../src/mate-screensaver-command.c:84
+#: ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "གློག་རིམ་འདི་གི་ཐོན་རིམ།"
+
+#: ../src/mate-screensaver-command.c:249
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་དེ་%sཨིན།\n"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "active"
+msgstr "ཤུགས་ལྡན།"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "inactive"
+msgstr "ཤུགས་མེད།"
+
+#: ../src/mate-screensaver-command.c:274
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "གཞི་གཞི་ཉེན་སྲུང་འདི་  %d སྐར་ཆ་ཚུ་གི་དོན་ལུ་ ཤུགས་ལྡན་བཟོ་ཡོད།\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "རྐྱེན་སེལ་གྱི་ཨའུཊི་པུཊི་སྟོན།"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "ཕྱིར་བསྐྱོད་ཨེབ་རྟ་སྟོན།"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "ཕྱིར་བསྐྱོད་ཨེབ་རྟའི་ནང་ལས་ ལས་བཀོལ་གྱི་བརྡ་བཀོད།"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "སོར་བསྒྱུར་ལག་ལེན་པའི་ཨེབ་རྟ་སྟོན།"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "ཌའི་ལོག་ལྡེ་མིག་བརྐྱབ་ནི་ལུ་ལག་ལེན་འཐབ་མི་གི་འཕྲིན་དོན"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "འཕྲིན་དོན"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175
+#: ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177
+#: ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ལག་ལེན་པའི་མིང་:"
+
+#: ../src/mate-screensaver-dialog.c:178
+#: ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "ཆོག་ཡིག་:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr "ཁྱོད་ཀྱི་ཆོག་ཡིག་དེ་ དེ་འཕྲལ་ལས་སོར་དགོ་པས། (ཆོག་ཡིག་རྒས་སོ་ནུག)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "ཁྱོད་ཀྱི་ཆོག་ཡིག་དེ་ དེ་འཕྲལ་ལས་སོར་དགོ་པས། (རྩ་བ་ལག་ལེན་འཐབ་ནུག)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr "ཁྱོད་ཀྱི་ཆོག་ཡིག་དེ་དུས་ཡོལ་ཐལ་སོ་ནུག། ཁྱོད་རའི་རིམ་ལུགས་བདག་སྐྱོང་པ་ལུ་ འབྲེལ་བ་འཐབ་གནང་།"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "ཆོག་ཡིག་མ་བྱིན་པས།"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "ཆོག་ཡིག་མ་སོར་བས།"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "ལག་ལེན་པའི་མིང་ འཐོབ་མི་ཚུགས་པས།"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "ཡུ་ཨེན་ཨའི་ཨེགསི་ ཆོག་ཡིག་གསརཔ་ ལོག་ཡིག་དཔར་རྐྱབས།"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "ཡུ་ཨེན་ཨའི་ཨེགསི་ ཆོག་ཡིག་གསར་བཙུགས།"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "(ད་ལྟོའི་)ཡུ་ཨེན་ཨའི་ཨེགསི་ཆོག་ཡིག།"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "ཨེན་ཨའི་ཨེསི་ ཆོག་ཡིག་སོར་བའི་སྐབས་ལུ་འཛོལ་བ།"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "ཁྱོད་ཀྱིས་ཆོག་ཡིག་ དེ་བ་རིང་སུ་ཅིག་ གདམ་ཁ་རྐྱབས།"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "ཆོག་ཡིག་ཧེ་མ་ལས་རང་ ལག་ལེན་འཐབ་སྟེ་འདུག། གཞན་མི་ཅིག་ གདམ་ཁ་རྐྱབས།"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "ཁྱོད་ཀྱི་ཆོག་ཡིག་དེ་ སོར་ནིའི་དོན་ལུ་ དུས་ཡུན་རིང་སུ་ཅིག་ བསྒུག་སྡོད་དགོ།"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "དགོངསམ་མ་ཁྲེལ། ཆོག་ཡིག་མཐུན་སྒྲིག་མིན་འདུག།"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "ཞིབ་དཔྱད་འབད་དོ་..."
+
+#: ../src/mate-screensaver-dialog.c:301
+#: ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "བདེན་བཤད་འབད་མཚུགས།"
+
+#: ../src/mate-screensaver-preferences.c:498
+msgid "Blank screen"
+msgstr "གསལ་གཞི་སྟོངམ།"
+
+#: ../src/mate-screensaver-preferences.c:504
+msgid "Random"
+msgstr "གང་འབྱུང་།"
+
+#: ../src/mate-screensaver-preferences.c:954
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "ཆུ་ཚོད་%d།"
+msgstr[1] "ཆུ་ཚོད་%d།"
+
+#: ../src/mate-screensaver-preferences.c:957
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "སྐར་མ་%d།"
+msgstr[1] "སྐར་མ་%d།"
+
+#: ../src/mate-screensaver-preferences.c:960
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "སྐར་ཆ་%d།"
+msgstr[1] "སྐར་ཆ་%d།"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:966
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:969
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:972
+#: ../src/mate-screensaver-preferences.c:980
+#: ../src/mate-screensaver-preferences.c:984
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:999
+#, c-format
+msgid "Never"
+msgstr "ནམ་ཡང་།"
+
+#: ../src/mate-screensaver-preferences.c:1398
+msgid "Could not load the main interface"
+msgstr "ངོས་འདྲ་བ་གཙོ་བོ་ མངོན་གསལ་འབད་མ་ཚུགས།"
+
+#: ../src/mate-screensaver-preferences.c:1400
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "གསལ་གཞི་ཉེན་སྲུང་དེ་ ཚུལ་ལྡན་སྦེ་ གཞི་བཙུགས་འབད་གནང་།"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ཌེ་མཱོན་ཅིག་ལུ་མ་གྱུར།"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "རྐྱེན་སེལ་གྱི་ཀོཌི་ ལྕོགས་ཅན་བཟོ།"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "ཞབས་ཏོག་%s: %sགཞི་བཙུགས་འབད་མ་ཚུགས།\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "པི་ཨེ་ཨེམ་ཊི་ཊི་ཝའི་=%s གཞི་སྒྲིག་འབད་མི་ཚུགས་པས།"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "ཆོག་ཡིག་མ་བདེནམ།"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "དུས་ཚོད་འདི་ཁར་ འཛུལ་སྤྱོད་འབད་ནིའི་ གནང་བ་མེད།"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "ད་ལས་ཕར་ རིམ་ལུགས་ལུ་འཛུལ་སྤྱོད་འབད་ནིའི་གནང་བ་མེད།"
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "འཕྲིན་དོན་གྱི་བརྡ་རྟགས་འགྲུལ་ལམ་ལུ་ ཐོ་འགོད་འབད་མ་ཚུགས།"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "འཕྲིན་དོན་གྱི་བརྡ་རྟགས་འགྲུལ་ལམ་ལུ་ མ་མཐུད་པས།"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "ལཱ་ཡུན་འདི་ནང་ གསལ་གཞིང་ཉེན་སྲུང་ ཧེ་མ་ལས་རང་ གཡོག་བཀོལ་བཞིན་འདུག"
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "དུས་ཚོད་རྫོགས་ནུག"
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr "ཁྱོད་ཀྱིས་ཚུགས་ལྡེ་ཨེབ་བཞག་ནུག"
+
+#: ../src/gs-lock-plug.c:1194
+msgid "S_witch User..."
+msgstr "ལག་ལེན་པ་སོར་བསྒྱུར་འབད།(_S)"
+
+#: ../src/gs-lock-plug.c:1203
+msgid "Log _Out"
+msgstr "ཕྱིར་བསྐྱོད་འབད།(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1380
+msgid "%U on %h"
+msgstr "%U། %hགུ"
+
+#: ../src/gs-lock-plug.c:1394
+msgid "_Password:"
+msgstr "ཆོག་ཡིག(_P)"
+
+#~ msgid "Authentication"
+#~ msgstr "བདེན་བཤད"
+#~ msgid "Note"
+#~ msgstr "དྲན་འཛིན"
+#~ msgid "N"
+#~ msgstr "ཨེན།"
+#~ msgid "Copying '%s'"
+#~ msgstr "'%s'འདྲ་བཤུས་རྐྱབ་དོ།"
+#~ msgid "From URI"
+#~ msgstr "ཡུ་ཨར་ཨའི་ལས།"
+#~ msgid "URI currently transferring from"
+#~ msgstr "ད་ལྟོ་ཡུ་ཨར་ཨའི་གནས་སོར་འབད་དོ་ལས་་་"
+#~ msgid "To URI"
+#~ msgstr "ཡུ་ཨར་ཨའི་ལུ།"
+#~ msgid "URI currently transferring to"
+#~ msgstr "ད་ལྟོ་ཡུ་ཨར་ཨའི་གནས་སོར་འབད་དོ་ལུ་་་་"
+#~ msgid "Fraction completed"
+#~ msgstr "དཔྱ་ཕྲན་རྫོགས་ཡོདཔ།"
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "ད་ལྟོ་རྫོགས་ཡོད་པའི་ གནས་སོར་གྱི་དཔྱ་ཕྲན།"
+#~ msgid "Current URI index"
+#~ msgstr "ད་ལྟོའི་ཡུ་ཨར་ཨའི་གི་ཟུར་ཐོ།"
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "ད་ལྟོའི་ཡུ་ཨར་ཨའི་གི་ཟུར་ཐོ་ - ༡ ལས་འགོ་བཙུགསཔ་ཨིན།"
+#~ msgid "Total URIs"
+#~ msgstr "ཡུ་ཨར་ཨའི་བསྡོམས།"
+#~ msgid "Total number of URIs"
+#~ msgstr "ཡུ་ཨར་ཨའི་གི་བསྡོམས་གྲངས།"
+#~ msgid "Connecting..."
+#~ msgstr "མཐུད་དོ་..."
+#~ msgid "S_witch to user:"
+#~ msgstr "ལག་ལེན་པ་ལུ་ སོར་བསྒྱུར་འབད།(_w)"
+#~ msgid "_Switch user..."
+#~ msgstr "ལག་ལེན་པ་སོར་བསྒྱུར་འབད།(_S)"
+#~ msgid "Manager"
+#~ msgstr "འཛིན་སྐྱོང་པ།"
+#~ msgid "The manager which owns this object."
+#~ msgstr "དངོས་པོ་འདི་དབང་མི་འཛིན་སྐྱོང་པ་དེ།"
+#~ msgid "Name"
+#~ msgstr "མིང་།"
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "དངོས་པོ་འདི་གིས་ གཞི་བསྟུན་འབད་མི་ བཀྲམ་སྟོན་ཨེགསི་༡༡པའི་མིང་།"
+#~ msgid "User"
+#~ msgstr "ལག་ལེན་པ།"
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "ལག་ལེན་པ་དེ་ ད་ལྟོ་བར་ཅུ་ཡལ་ཊར་མི་ནཱལ་འདི་གུ་ ནང་བསྐྱོད་འབད་ནུག"
+#~ msgid "Console"
+#~ msgstr "མ་སྒྲོམ།"
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr "བཀྲམ་སྟོན་འདི་འཐོབ་ཚུགས་པའི་ བར་ཅུ་ཡལ་མ་སྒྲོམ་དེ་གི་ཨང་།"
+#~ msgid "Nested"
+#~ msgstr "ནེསི་ཊེཌི།"
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "བཀྲམ་སྟོན་འདི་ སྒོ་སྒྲིག་ཅན་གྱི་(ཨེགསི་ནེསིཊི)བཀྲམ་སྟོན་ཅིག་ ཨིན་ན་མེན།"
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "མ་ཤེས་པའི་རྒྱུ་མཚན་ལུ་བརྟེན་ཏེ་ བཀྲམ་སྟོན་འཛིན་སྐྱོང་པ་དེ་ལུ་ འབྲེལ་བ་འཐབ་མ་ཚུགས།"
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "བཀྲམ་སྟོན་འཛིན་སྐྱོང་པ་དེ་ གཡོག་མ་བཀོལ་བའམ་ རྙིངམ་ཐལ་སོངཔ་འོང་ནི་མས།"
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "སྟབས་བདེ་སར་བར་ཚུ་གི་ རིམ་སྒྲིག་ཚད་མཚམས་ལུ་ལྷོོད་ནུག"
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "ཨེགསི་འགོ་བཙུགས་ནི་ལུ་ མ་ཤེས་པའི་འཛོལ་བ་ཅིག་བྱུང་ནུག"
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "ཨེགསི་སར་བར་ འགོ་བཙུགས་དེ་ མཇུག་བསྡུ་མ་ཚུགས།"
+#~ msgid "There are too many X sessions running."
+#~ msgstr "ཨེགསི་ལཱ་ཡུན་ མང་རབས་ཅིག་ གཡོག་བཀོལ་དོ།"
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr "ནེསི་ཊེཌི་ཨེགསི་སར་བར་(ཨེགསི་ནེསིཊི)དེ་ ཁྱོད་ཀྱི་ད་ལྟོའི་ཨེགསི་སར་བར་ལུ་ མཐུད་མི་ཚུགས།"
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "ཇི་ཌི་ཨེམ་རིམ་སྒྲིག་ནང་ ཨེགསི་སར་བར་དེ་ འཚོལ་མ་ཐོབ།"
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "མ་ཤེས་པའི་ཕྱིར་བསྐྱོད་བྱ་བ་ཅིག་ གཞི་སྒྲིག་འབད་ནི་ལུ་ འབད་རྩོལ་བསྐྱེད་དོ་ཡོདཔ་དང་ ཡང་ན་ ཐོབ་མ་ཚུགས་"
+#~ "པའི་ ཕྱིར་བསྐྱོད་བྱ་བ་ཅིག་ གཞི་སྒྲིག་འབད་ནི་ལུ་ འབད་རྩོལ་བསྐྱེད་དོ།"
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "བར་ཅུ་ཡལ་ཊར་མི་ནཱལ་ཚུ་ལུ་ རྒྱབ་སྐྱོར་མིན་འདུག"
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "ནུས་མེད་བར་ཅུ་ཡལ་ཊར་མི་ནཱལ་གྱི་ཨང་།"
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "རྒྱབ་སྐྱོར་མེད་པའི་ རིམ་སྒྲིག་ལྡེ་མིག་ཅིག་ དུས་མཐུན་བཟོ་ནི་ལུ་ འབད་རྩོལ་བསྐྱེད་དོ།"
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority ཡིག་སྣོད་དེ་ བྱང་ཉེས་སྦེ་ རིམ་སྒྲིག་འབད་བའམ་ བརླག་སྟོར་ཞུགས་ནུག"
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "བཀྲམ་སྟོན་འཛིན་སྐྱོང་པ་ལུ་ འཕྲིན་དོན་མང་རབས་ཅིག་བཏང་ཡོདཔ་ལས་ ཐོགས་ལུས་ནུག"
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "བཀྲམ་སྟོན་འཛིན་སྐྱོང་པ་གིས་ མ་ཤེས་པའི་འཕྲིན་དོན་འཛོལ་བ་ཅིག་བཏང་ནུག"
+#~ msgid "The user this menu item represents."
+#~ msgstr "དཀར་ཆག་རྣམ་གྲངས་འདི་གིས་ ཁྱད་ཚབ་འབད་མི་ལག་ལེན་པ།"
+#~ msgid "Icon Size"
+#~ msgstr "ངོས་དཔར་གྱི་ཚད།"
+#~ msgid "The size of the icon to use."
+#~ msgstr "ལག་ལེན་འཐབ་ནིའི་ངོས་དཔར་གྱི་ཚད།"
+#~ msgid "Indicator Size"
+#~ msgstr "བརྡ་སྟོན་པའི་ཚད།"
+#~ msgid "Size of check indicator"
+#~ msgstr "དིབ་དཔྱད་བརྡ་སྟོན་པའི་ཚད།"
+#~ msgid "Indicator Spacing"
+#~ msgstr "བརྡ་སྟོན་པའི་བར་སྟོང་བཞག་ཐངས།"
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "ལག་ལེན་པའི་མིང་དང་བརྡ་སྟོན་པའི་བར་ན་ལུ་བར་སྟོང་།"
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "ལག་ལེན་པ་འདི་ཚད་འཛིན་འབད་མི་ ལག་ལེན་པ་འཛིན་སྐྱོང་པའི་དངོས་པོ།"
+#~ msgid "Show Details"
+#~ msgstr "རྒྱས་བཤད་ཚུ་སྟོན།"
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "ཇི་ཌི་ཨེམ་\t(ཇི་ནོམ་བཀྲམ་སྟོན་འཛིན་སྐྱོང་པ) དེ་ གཡོག་མ་བཀོལ་བས།"
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "ཁྱོད་ཀྱིས་བཀྲམ་སྟོན་འཛིན་སྐྱོང་པ་སོ་སོ་ ཀེ་ཌི་ཨེམ་(ཀེ་ཌི་ཨི་བཀྲམ་སྟོན་འཛིན་སྐྱོང་པ) ཡང་ན་ ཨེགསི་ཌི་ཨེམ་"
+#~ "བཟུམ་ཅིག་ ལག་ལེན་འཐབ་དོ་ཡོདཔ་འོང་ནི་མས།"
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "ཁྱོད་ཀྱིས་ད་རུང་ཡང་ ཁྱད་རྣམ་འདི་ལག་ལེན་འཐབ་འདོད་ཡོད་པ་ཅིན་ ཁྱོད་ར་གིས་ཇི་ཌི་ཨེམ་ འགོ་བཙུགས་ "
+#~ "ཡང་ན་ ཁྱོད་རའི་རིམ་ལུགས་བདག་སྐྱོང་པ་ལུ་ ཇི་ཌི་ཨེམ་ འགོ་བཙུགས་གནང་ཟེར་སླབས།"
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "ཇི་ཌི་ཨེམ་(ཇི་ནོམ་བཀྲམ་སྟོན་འཛིན་སྐྱོང་པ་)དང་གཅིག་ཁར་ བརྒྱུད་འབྲེལ་འཐབ་མི་ཚུགས་པས།"
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "ཁྱོད་ཀྱིས་ཡང་ཅིན་ ཇི་ཌི་ཨེམ་ཐོན་རིམ་རྙིངམ་ཅིག་ གཡོག་བཀོལ་དོ་ཡོདཔ་འོང་ནི་མས།"
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "ཇི་ཌི་ཨེམ་དང་གཅིག་ཁར་ བརྒྱུད་འབྲེལ་འཐབ་མི་ཚུགས་པས། ཁྱོད་ཀྱིས་ཐོན་རིམ་རྙིངམ་ཅིག་ གཡོག་བཀོལ་དོ་ཡོདཔ་"
+#~ "འོང་ནི་མས།"
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "སྟབས་བདེའི་ཨེགསི་སར་བར་ཚུ་གི་ ཆོག་པའི་ཚད་མཚམས་ལུ་ལྷོོད་ནུག"
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "ཨེགསི་སར་བར་འགོ་བཙུགས་ཐབས་འབདཝ་དང་ འཛོལ་བ་ཚུ་བྱུང་ནུག"
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "ཨེགསི་སར་བར་དེ་མ་བཏུབ། འདི་ལེགས་ཤོམ་སྦེ་ རིམ་སྒྲིག་མ་འབདཝ་འོང་ནི་མས།"
+#~ msgid "Too many X sessions running."
+#~ msgstr "ཨེགསི་ལཱ་ཡུན་མང་རབས་ཅིག་ གཡོག་བཀོལ་དོ།"
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "ནེསི་ཊེཌི་ཨེགསི་སར་བར་(ཨེགསི་ནེསིཊི) དེ་ ཁྱོད་ཀྱི་ད་ལྟོའི་ཨེགསི་སར་བར་ལུ་ མཐུད་མི་ཚུགས་པས། ཁྱོད་ལུ་"
+#~ "ཨེགསི་དབང་སྤྲོད་ཡིག་སྣོད་ཅིག་ མེདཔ་འོང་ནི་མས།"
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "ནེསི་ཊེཌི་ཨེགསི་སར་བར་(ཨེགསི་ནེསིཊི)དེ་མིན་འདུག ཡང་ན་ ཇི་ཌི་ཨེམ་ བྱང་ཉེས་སྦེ་ རིམ་སྒྲིག་འབད་འབདཝ་"
+#~ "འོང་ནི་མས།\n"
+#~ "ནེསི་ཊེཌི་ནང་བསྐྱོད་ ལག་ལེན་འཐབ་ནིའི་དོན་ལུ་ ཨེགསི་ནེསིཊི་ཐུམ་སྒྲིལ་དེ་ གཞི་བཙུགས་འབད་གནང་།"
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "ཨེགསི་སར་བར་དེ་མིན་འདུག ཡང་ན་ ཇི་ཌི་ཨེམ་དེ་ བྱང་ཉེས་སྦེ་ རིམ་སྒྲིག་འབད་འབདཝ་བཟུམ་ཅིག་འདུག"
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "ནུས་མེད་བར་ཅུ་ཡལ་ཊར་མི་ནཱལ་ཨང་ཅིག་ལུ་སོར་ནི་འབད་ འབད་རྩོལ་བསྐྱེད་དོ།"
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "ཁྱོད་ལུ་བཀོལ་སྤྱོད་འདི་ལུ་མཁོ་བའི་ བདེན་བཤད་མེདཔ་བཟུམ་ཅིག་འདུག ཡང་ན་ ཁྱོད་རའི.Xauthority ཡིག་"
+#~ "སྣོད་དེ་ ངེས་བདེན་སྦེ་ གཞི་སྒྲིག་མ་འབདཝ་འོང་ནི་མས།"
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "ཇི་ཌི་ཨེམ་ལུ་ འཕྲིན་དོན་མང་རབས་ཅིག་བཏང་ཡོདཔ་ལས་ ང་བཅས་གུ་ཐོགས་ལུས་ནུག"
+#~ msgid "Unknown error occurred."
+#~ msgstr "མ་ཤེས་པའི་འཛོལ་བ་བྱུང་ཡི།"
+#~ msgid "Time before activation"
+#~ msgstr "ཤུགས་བཟོའི་ཧེ་མར་ཆུ་ཚོད།"
+#~ msgid "Prompt:"
+#~ msgstr "ནུས་སྤེལ་:"
+#~ msgid "That password was incorrect."
+#~ msgstr "ཆོག་ཡིག་དེ་ཕྱི་འགྱུར་ཨིན་པས།"
+#~ msgid "_Screensaver"
+#~ msgstr "གསལ་གཞི་ཉེན་སྲུང་།(_S)"
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "སྟོངམ་འབད་བའི་སྐབས་ ཚད་རིས་བརྗོད་དོན་ གཡོག་བཀོལ་ནི་ ལྕོགས་མིན་བཟོ།"
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr "སྟོངམ་འབད་བའི་སྐབས་ ཚད་རིས་བརྗོད་དོན་ གཡོག་བཀོལ་ནི་ ལྕོགས་ཅན་བཟོ།(འཇུག་ཁྱབ་ཡོད་པ་ཅིན)"
+#~ msgid "0 seconds"
+#~ msgstr "སྐར་ཆ་༠།"
+
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000..2643703
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,786 @@
+# translation of el.po to Greek
+# Greek translation of el.
+# Copyright (C) 2006 THE el'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the el package.
+#
+# Nikos Charonitakis <nikosx at gmail.com>, 2006.
+# Kostas Papadimas <pkst at gnome.org>, 2006, 2008.
+# Jennie Petoumenou <epetoumenou at gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: el\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-27 17:29+0200\n"
+"PO-Revision-Date: 2010-03-27 16:05+0200\n"
+"Last-Translator: Bakaoukas Nikolaos <nikolaosx1 at gmail.com>\n"
+"Language-Team: Greek <team at mate.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 0.2\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Προστασία οθόνης"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Ρύθμιση των προτιμήσεων σας για την προστασία οθόνης"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Προεπισκόπηση προστασίας οθόνης</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Προειδοποίηση: η οθόνη δεν θα κλειδώνεται για το χρήστη root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Διαχείριση ενέργειας"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Ορισμός υπολογιστή ως _αδρανή μετά:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Προτιμήσεις προστασίας οθόνης"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Προεπισκόπηση προστασίας οθόνης"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "Ε_νεργοποίηση προστασίας οθόνης όταν ο υπολογιστής είναι αδρανής"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Κλείδωμα οθόνης όταν η προστασία οθόνης είναι ενεργή"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Προεπισκόπηση"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Θέματα προ_στασίας οθόνης:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Θέματα προστασίας οθόνης"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Θέματα"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Ενεργοποίηση στην αδράνεια"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Να επιτρέπεται η ενσωμάτωση πληκτρολογίου σε ένα παράθυρο"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Να επιτρέπεται αποσύνδεση"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Να επιτρέπεται η εμφάνιση του μηνύματος κατάστασης συνεδρίας"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Να επιτρέπεται η εμφάνιση του μηνύματος κατάστασης συνεδρίας όταν η οθόνη "
+"είναι κλειδωμένη."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Να επιτρέπεται η αλλαγή χρήστη"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Εντολή ενσωματωμένου πληκτρολογίου"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Κλείδωμα στην ενεργοποίηση"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Εντολή αποσύνδεσης"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Λειτουργία επιλογής θέματος προστασίας οθόνης"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Ορισμός αυτού σε TRUE για την ενεργοποίηση της προστασίας οθόνης όταν η "
+"συνεδρία είναι σε αδράνεια."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Ορισμός αυτού σε TRUE για να επιτρέπεται η ενσωμάτωση πληκτρολογίου στο "
+"παράθυρο κατα την προσπάθεια ξεκλειδώματις. Το κλειδί \"keyboard_command\" "
+"πρέπει να ορισθεί με την κατάλληλη εντολή."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Ορισμός αυτού σε TRUE για να κλειδώνει η οθόνη όταν ενεργοποιείται η "
+"προστασία οθόνης."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Ορισμός αυτού σε TRUE για να προσφέρεται η επιλογή του διαλόγου "
+"ξεκλειδώματος όταν γίνεται αλλαγή σε διαφορετικό λογαριασμό χρήστη."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Ορισμός αυτού σε TRUE για να προσφέρεται η επιλογή του διαλόγου "
+"ξεκλειδώματος για αποσύνδεση μετά από κάποια καθυστέρηση. Η καθυστέρηση "
+"καθορίζεται στο κλειδί \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Αυτή η εντολή θα εκτελείται αν το κλειδί \"embedded_keyboard_enabled\" έχει "
+"ορισθεί σε  TRUE, ώστε να ενσωματωθεί το πληκτρολόγιο σε ένα παράθυρο. Η "
+"εντολή θα πρέπει να εφαρμόζει μια διεπαφή XEMBED plug και να έχει αποτέλεσμα "
+"ένα παράθυρο XID."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Η εντολή που θα εκτελείται όταν πατιέται το κουμπί της αποσύνδεσης. Αυτή η "
+"εντολή θα πρέπει απλά να αποσυνδέει το χρήστη χωρίς καμία άλλη συναλλαγή. "
+"Αυτό το κλειδί έχει αποτέλεσμα μόνο αν το κλειδί \"logout_enable\" ορισθεί "
+"σε TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Ο αριθμός των λεπτών αφού ενεργοποιηθεί η προστασίας οθόνης για το κλείδωμα "
+"της οθόνης."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Ο αριθμός των λεπτών αφού ενεργοποιηθεί η προστασίας οθόνης μέχρι να "
+"εμφανιστεί η επιλογή αποσύνδεσης. Αυτό το κλειδί έχει αποτέλεσμα μόνο αν το "
+"κλειδί \"logout_enable\" έχει ορισθεί TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Ο αριθμός των λεπτών της αδράνειας για να θεωρηθεί η συνεδρία αδρανής."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Ο αριθμός των λεπτών για να αλλάξει το θέμα της προστασίας οθόνης."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Ο αριθμός των δευτερλέπτων αδράνειας πριν να σταλεί σήμα στην διαχείριση "
+"ενέργειας. Το κλειδί έχει ορισθεί και ανανεώνεται από την το session power-"
+"management agent."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Η λειτουργία επιλογής που χρησιμοποιείται από την προστασία οθόνης. Μπορεί "
+"να είναι \"blank-only\" για ενεργοποίηση της προστασίας οθόνης χωρίς τη "
+"χρήση θέματος,  \"single\" για ενεργοποίηση της προστασίας οθόνης με τη "
+"χρήση μόνο ενός θέματος (που καθορίζεται στο κλειδί \"themes\"), και \"random"
+"\"  για ενεργοποίηση της προστασίας οθόνης με τη χρήση ενόςτυχαίου θέματος"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Θέμα για το διάλογο κλειδώματος"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Θέμα για χρήση στο διάλογο κλειδώματος"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Αυτο το κλειδί καθορίζει τη λίστα θεμάτων της προστασίας οθόνης. Αγνοείται "
+"όταν το κλειδί \"mode\" είναι \"blank-only\". Μπορεί να παρέχει το όνομα "
+"θέματος όταν το κλειδί \"mode\" είναι \"single\", και μπορεί να παρέχει μια "
+"λίστα θεμάτων όταν το κλειδί \"mode\" είναι \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Χρόνος πριν το κλείδωμα"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Χρόνος πριν την επιλογή αποσύνδεσης"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Χρόνος πριν την power-management baseline"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Ο χρόνος για να θεωρηθεί η συνεδρία αδρανής"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Χρόνος πριν την αλλαγή θέματος"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Αφήστε μήνυμα για %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U σε %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "Α_κύρωση"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Αφήστε μήνυμα"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "Α_ποσύνδεση"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Αλλαγή χρήστη"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1372
+msgid "_Unlock"
+msgstr "_Ξεκλείδωμα"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Προβολή μιας παρουσίασης εικόνων του cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Φούσκες του λογότυπου του MATE στην οθόνη"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Floating Feet"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Προβολή μιας παρουσίασης εικόνων του φακέλου των εικόνων σας"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Φάκελος εικόνων"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Ένα πλέγμα παλλόμενων εικόνων pop-art"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Τετράγωνα pop-art"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Βλέπε --help για πληροφορίες χρήσης.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "Εμφάνιση των διαδρομών  των εικόνων"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "Περιοδική επιστροφή εικόνων καθώς κινούνται"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Εκτύπωση του μέγιστου αριθμού καρέ και άλλων στατιστικών"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "Ο μέγιστος αριθμός εικόνων που θα διατηρούνται στην οθόνη"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "Το αρχικό μέγεθος και θέση του παραθύρου"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "Η πηγή εικόνας που θα χρησιμοποιηθεί"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "εικόνα - πλωτές εικόνες στην οθόνη"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Θα πρέπει να καθορίσετε μια εικόνα. Βλέπε --help για πληροφορίες χρήσης.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Τοποθεσία για τη λήψη εικόνων"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ΔΙΑΔΡΟΜΗ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Χρώμα παρασκηνίου που θα έχουν οι εικόνες"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Να μην γίνεται τυχαία επιλογή εικόνων από την τοποθεσία"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Να μην γίνεται προσπάθεια τεντώματος εικόνων στην οθόνη"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Αντιγραφή αρχείων"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Από:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Σε:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Αντιγραφή θεμάτων"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Μη έγκυρο θέμα προστασίας οθόνης"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Το %s δεν φαίνεται να είναι ένα έγκυρο αρχείο προστασίας οθόνης."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Αντιγραφή αρχείου: %u από %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Προκαλεί την έξοδο της προστασίας οθόνης"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Ερώτηση της κατάστασης της προστασίας οθόνης"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Ερώτημα για το χρόνο που ήταν ενεργή η προστασία οθόνης"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Ειδοποιεί την προστασία οθόνης που εκτελείται για να κλειδώσει την οθόνη "
+"άμεσα."
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Αν η προστασία οθόνης είναι ενεργή τότε να γίνει αλλαγή σε ένα άλλο graphics "
+"demo"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Ενεργοποίηση της προστασίας οθόνης (κενή οθόνη)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Αν η προστασία οθόνης είναι ενεργή τότε να γίνει απενεργοποίηση"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Η εκτελούμενη προστασία οθόνης να εξομοιώνει δρλασεις χρήστη"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Παρεμπόδιση της προστασίας οθόνης. Command blocks while inhibit is active."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Η εφαρμογή που παρακωλύει την προστασία οθόνης"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Ο λόγος για την παρακώλυση της προστασίας οθόνης."
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Η Έκδοση αυτής της εφαρμογής"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Η προστασία οθόνης είναι %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "ενεργή"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "ανενεργή"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Η προστασία οθόνης δεν παρεμποδίζεται\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Η προστασία οθόνης παρεμποδίζεται από:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Η προστασία οθόνης ήταν ενεργή για %d δευτερόλεπτα.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Η προστασία οθόνης δεν είναι προς το παρόν ενεργή\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Προβολή επιλογών αποσφαλμάτωσης"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Εμφάνιση του κουμπιού αποσύνδεσης"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "Εντολή για εκτέλεση από το κουμπί αποσύνδεσης"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Προβολή του κουμπιού αλλαγής χρήστη"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "Μήνυμα που θα εμφανίζεται στον διάλογο"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "ΜΗΝΥΜΑ"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "Δεν χρησιμοποιείται"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Όνομα χρήστη:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Κωδικός:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Απαιτείται να αλλάξετε κωδικό άμεσα (ο κωδικός σας έχει ημερομηνία λήξης)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Απαιτείται να αλλάξετε κωδικό άμεσα (εξαναγκασμός από το root)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Ο λογαριασμός σας έχει λήξει. Παρακαλώ επικοινωνήστε με το διαχειριστή του "
+"συστήματος σας"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "Δεν δόθηκε κωδικός"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "Αναλλοίωτος κωδικός"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "Αδυναμία λήψης ονόματος χρήστη"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Επαπληκτρολόγηση νέου κωδικού UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Εισαγωγή νέου κωδικού UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "(τρέχων) κωδικός UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "Σφάλμα κατά την αλλαγή του κωδικού NIS"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "Θα πρέπει να επιλέξετε ένα μεγαλύτερο κωδικό."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "Ο Κωδικός χρησιμοποιείται ήδη. Διαλέξτε έναν άλλο."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "Θα πρέπει να περιμένετε περισσότερο για να αλλάξετε το κωδικό σας"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Συγγνώμη, οι κωδικοί δεν ταιριάζουν"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "Έλεγχος..."
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Αποτυχία πιστοποίησης."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Κενή οθόνη"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Τυχαία"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ώρα"
+msgstr[1] "%d ώρες"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d λεπτό"
+msgstr[1] "%d λεπτά"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d δευτερόλεπτο"
+msgstr[1] "%d δευτερόλεπτα"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Ποτέ"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Αδυναμία φόρτωση της κύριας επιφάνειας χρήσης"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Βεβαιωθείτε ότι η προστασία οθόνης έχει εγκατασταθεί σωστά"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Να μη γίνει daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Ενεργοποίηση κώδικα αποσφαλμάτωσης"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr ""
+"Έναρξη της προφύλαξης οθόνης και του προγράμματος κλειδώματος υπολογιστή"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Αδυναμία διατήρησης υπηρεσίας %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Αδυναμία ορισμού PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Μη έγκυρος κωδικός."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Δεν σας επιτρέπεται η πρόσβαση αυτή τη φορά."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Δεν σας επιτρέπεται πια η πρόσβαση στο σύστημα."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "αποτυχία εγγραφής με το message bus"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "δεν υπάρχει σύωδεση με το message bus"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "η προστασία οθόνης εκτελείται ήδη σε αυτή τη συνεδρία."
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Ο χρόνος έχει λήξει."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Έχετε πατημένο το πλήκτρο Caps Lock."
+
+#: ../src/gs-lock-plug.c:1352
+msgid "S_witch User..."
+msgstr "Α_λλαγή χρήστη..."
+
+#: ../src/gs-lock-plug.c:1361
+msgid "Log _Out"
+msgstr "Α_ποσύνδεση"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1537
+msgid "%U on %h"
+msgstr "%U σε %h"
+
+#: ../src/gs-lock-plug.c:1551
+msgid "_Password:"
+msgstr "_Κωδικός:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Ο λόγος απουσίας"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Ο λόγος απουσίας από τον υπολογιστή."
diff --git a/po/en at shaw.po b/po/en at shaw.po
new file mode 100644
index 0000000..0ae2c92
--- /dev/null
+++ b/po/en at shaw.po
@@ -0,0 +1,656 @@
+# Shavian translation for mate-screensaver.
+# Copyright (C) 2009 The Mate Foundation.
+# Thomas Thurman <tthurman at gnome.org>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: marco\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2009-11-06 19:17+0200\n"
+"Last-Translator: Thomas Thurman <tthurman at gnome.org>\n"
+"Language-Team: Shavian <ubuntu-l10n-en-shaw at lists.launchpad.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "𐑕𐑧𐑑 𐑿𐑼 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑐𐑮𐑧𐑓𐑼𐑩𐑯𐑕𐑩𐑟"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑐𐑮𐑰𐑝𐑿</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>𐑢𐑹𐑯𐑦𐑙: 𐑞 𐑕𐑒𐑮𐑰𐑯 𐑢𐑦𐑤 𐑯𐑪𐑑 𐑚𐑰 𐑤𐑪𐑒𐑑 𐑓𐑹 𐑞 𐑮𐑵𐑑 𐑿𐑟𐑼.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "𐑐𐑬𐑼 _𐑥𐑨𐑯𐑩𐑡𐑥𐑩𐑯𐑑"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "𐑮𐑦𐑜𐑸𐑛 𐑞 𐑒𐑩𐑥𐑐𐑿𐑑𐑼 𐑨𐑟 _𐑲𐑛𐑩𐑤 𐑭𐑓𐑑𐑼:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑐𐑮𐑧𐑓𐑼𐑩𐑯𐑕𐑩𐑟"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑐𐑮𐑰𐑝𐑿"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_𐑨𐑒𐑑𐑦𐑝𐑱𐑑 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑢𐑧𐑯 𐑒𐑩𐑥𐑐𐑿𐑑𐑼 𐑦𐑟 𐑲𐑛𐑩𐑤"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_𐑤𐑪𐑒 𐑕𐑒𐑮𐑰𐑯 𐑢𐑧𐑯 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑦𐑟 𐑨𐑒𐑑𐑦𐑝"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_𐑐𐑮𐑰𐑝𐑿"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑔𐑰𐑥:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑔𐑰𐑥𐑟"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "𐑨𐑒𐑑𐑦𐑝𐑱𐑑 𐑢𐑧𐑯 𐑲𐑛𐑩𐑤"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "𐑩𐑤𐑬 𐑞 𐑕𐑧𐑖𐑩𐑯 𐑕𐑑𐑱𐑑𐑫𐑕 𐑥𐑧𐑕𐑦𐑡 𐑑 𐑚𐑰 𐑛𐑩𐑕𐑐𐑤𐑱𐑛"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "𐑩𐑤𐑬 𐑞 𐑕𐑧𐑖𐑩𐑯 𐑕𐑑𐑱𐑑𐑫𐑕 𐑥𐑧𐑕𐑦𐑡 𐑑 𐑚𐑰 𐑛𐑩𐑕𐑐𐑤𐑱𐑛 𐑢𐑧𐑯 𐑞 𐑕𐑒𐑮𐑰𐑯 𐑦𐑟 𐑤𐑪𐑒𐑑."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "𐑩𐑤𐑬 𐑿𐑟𐑼 𐑕𐑢𐑦𐑗𐑦𐑙"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "𐑧𐑥𐑚𐑧𐑛𐑦𐑛 𐑒𐑰𐑚𐑪𐑮𐑛 𐑒𐑩𐑥𐑭𐑯𐑛"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "𐑤𐑪𐑒 𐑪𐑯 𐑨𐑒𐑑𐑩𐑝𐑱𐑖𐑩𐑯"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑔𐑰𐑥 𐑕𐑦𐑤𐑧𐑒𐑖𐑩𐑯 𐑥𐑴𐑛"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "𐑕𐑧𐑑 𐑞𐑦𐑕 𐑑 𐑑𐑮𐑵 𐑑 𐑨𐑒𐑑𐑦𐑝𐑱𐑑 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑢𐑧𐑯 𐑞 𐑕𐑧𐑖𐑩𐑯 𐑦𐑟 𐑲𐑛𐑩𐑤."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "𐑕𐑧𐑑 𐑞𐑦𐑕 𐑑 𐑑𐑮𐑵 𐑑 𐑤𐑪𐑒 𐑞 𐑕𐑒𐑮𐑰𐑯 𐑢𐑧𐑯 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑜𐑴𐑟 𐑨𐑒𐑑𐑦𐑝."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"𐑕𐑧𐑑 𐑞𐑦𐑕 𐑑 𐑑𐑮𐑵 𐑑 𐑪𐑓𐑼 𐑩𐑯 𐑪𐑐𐑖𐑩𐑯 𐑦𐑯 𐑞 𐑩𐑯𐑤𐑭𐑒 𐑛𐑲𐑩𐑤𐑪𐑜 𐑑 𐑕𐑢𐑦𐑗 𐑑 𐑩 𐑛𐑦𐑓𐑼𐑩𐑯𐑑 𐑿𐑟𐑼 𐑩𐑒𐑬𐑯𐑑."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"𐑕𐑧𐑑 𐑞𐑦𐑕 𐑑 𐑑𐑮𐑵 𐑑 𐑪𐑓𐑼 𐑩𐑯 𐑪𐑐𐑖𐑩𐑯 𐑦𐑯 𐑩𐑯𐑤𐑭𐑒 𐑛𐑲𐑩𐑤𐑪𐑜 𐑑 𐑤𐑪𐑜𐑦𐑙 𐑬𐑑 𐑭𐑓𐑑𐑼 𐑩 𐑛𐑦𐑤𐑱. 𐑞 𐑛𐑦𐑤𐑱 "
+"𐑦𐑟 𐑕𐑐𐑧𐑕𐑦𐑓𐑲𐑛 𐑦𐑯 𐑞 \"logout_delay\" 𐑒𐑰."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "𐑞 𐑯𐑳𐑥𐑚𐑼 𐑝 𐑥𐑦𐑯𐑦𐑑𐑕 𐑭𐑓𐑑𐑼 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑨𐑒𐑑𐑩𐑝𐑱𐑖𐑩𐑯 𐑚𐑦𐑓𐑹 𐑤𐑪𐑒𐑦𐑙 𐑞 𐑕𐑒𐑮𐑰𐑯."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "𐑞 𐑯𐑳𐑥𐑚𐑼 𐑝 𐑥𐑦𐑯𐑦𐑑𐑕 𐑝 𐑦𐑯𐑨𐑒𐑑𐑦𐑝𐑦𐑑𐑰 𐑚𐑦𐑓𐑹 𐑞 𐑕𐑧𐑖𐑩𐑯 𐑦𐑟 𐑒𐑩𐑯𐑕𐑦𐑛𐑼𐑛 𐑲𐑛𐑩𐑤."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "𐑞 𐑯𐑳𐑥𐑚𐑼 𐑝 𐑥𐑦𐑯𐑦𐑑𐑕 𐑑 𐑮𐑳𐑯 𐑚𐑦𐑓𐑹 𐑗𐑱𐑯𐑡𐑦𐑙 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑔𐑰𐑥."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"𐑞 𐑯𐑳𐑥𐑚𐑼 𐑝 𐑕𐑧𐑒𐑩𐑯𐑛𐑟 𐑝 𐑦𐑯𐑨𐑒𐑑𐑦𐑝𐑦𐑑𐑰 𐑚𐑦𐑓𐑹 𐑕𐑦𐑜𐑯𐑩𐑤𐑦𐑙 𐑑 𐑐𐑬𐑼-𐑥𐑨𐑯𐑩𐑡𐑥𐑩𐑯𐑑. 𐑞𐑦𐑕 𐑒𐑰 𐑦𐑟 𐑕𐑧𐑑 "
+"𐑯 𐑥𐑱𐑯𐑑𐑱𐑯𐑛 𐑚𐑲 𐑞 𐑕𐑧𐑖𐑩𐑯 𐑐𐑬𐑼-𐑥𐑨𐑯𐑩𐑡𐑥𐑩𐑯𐑑 𐑱𐑡𐑩𐑯𐑑."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"𐑞 𐑕𐑦𐑤𐑧𐑒𐑖𐑩𐑯 𐑥𐑴𐑛 𐑿𐑕𐑑 𐑚𐑲 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼. 𐑥𐑱 𐑚𐑰 \"blank-only\" 𐑑 𐑦𐑯𐑱𐑚𐑩𐑤 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 "
+"𐑢𐑦𐑞𐑬𐑑 𐑿𐑟𐑦𐑙 𐑧𐑯𐑦 𐑔𐑰𐑥 𐑪𐑯 𐑨𐑒𐑑𐑩𐑝𐑱𐑖𐑩𐑯, \"single\" 𐑑 𐑦𐑯𐑱𐑚𐑩𐑤 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑿𐑟𐑦𐑙 𐑴𐑯𐑤𐑦 𐑢𐑳𐑯 "
+"𐑔𐑰𐑥 𐑪𐑯 𐑨𐑒𐑑𐑩𐑝𐑱𐑖𐑩𐑯 (𐑕𐑐𐑧𐑕𐑦𐑓𐑲𐑛 𐑦𐑯 \"themes\" 𐑒𐑰), 𐑯 \"random\" 𐑑 𐑦𐑯𐑱𐑚𐑩𐑤 𐑞 "
+"𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑿𐑟𐑦𐑙 𐑩 𐑮𐑨𐑯𐑛𐑩𐑥 𐑔𐑰𐑥 𐑪𐑯 𐑨𐑒𐑑𐑩𐑝𐑱𐑖𐑩𐑯."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "𐑔𐑰𐑥 𐑓𐑹 𐑤𐑪𐑒 𐑛𐑲𐑩𐑤𐑪𐑜"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "𐑔𐑰𐑥 𐑑 𐑿𐑕 𐑓𐑹 𐑞 𐑤𐑪𐑒 𐑛𐑲𐑩𐑤𐑪𐑜."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when "
+"\"mode\" is \"random\"."
+msgstr ""
+"𐑞𐑦𐑕 𐑒𐑰 𐑕𐑐𐑧𐑕𐑦𐑓𐑲𐑟 𐑞 𐑤𐑦𐑕𐑑 𐑝 𐑔𐑰𐑥𐑟 𐑑 𐑚𐑰 𐑿𐑟𐑛 𐑚𐑲 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼. 𐑦𐑑𐑕 𐑦𐑜𐑯𐑹𐑛 𐑢𐑧𐑯 "
+"\"mode\" 𐑒𐑰 𐑦𐑟 \"blank-only\", 𐑖𐑫𐑛 𐑐𐑮𐑩𐑝𐑲𐑛 𐑞 𐑔𐑰𐑥 𐑯𐑱𐑥 𐑢𐑧𐑯 \"mode\" 𐑦𐑟 "
+"\"single\", 𐑯 𐑖𐑫𐑛 𐑐𐑮𐑩𐑝𐑲𐑛 𐑩 𐑤𐑦𐑕𐑑 𐑝 𐑔𐑰𐑥𐑟 𐑢𐑧𐑯 \"mode\" 𐑦𐑟 \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "𐑑𐑲𐑥 𐑚𐑦𐑓𐑹 𐑤𐑪𐑒𐑦𐑙"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "𐑑𐑲𐑥 𐑚𐑦𐑓𐑹 𐑐𐑬𐑼-𐑥𐑨𐑯𐑩𐑡𐑥𐑩𐑯𐑑 𐑚𐑱𐑕𐑤𐑲𐑯"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "𐑑𐑲𐑥 𐑚𐑦𐑓𐑹 𐑕𐑧𐑖𐑩𐑯 𐑦𐑟 𐑒𐑩𐑯𐑕𐑦𐑛𐑼𐑛 𐑲𐑛𐑩𐑤"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "𐑑𐑲𐑥 𐑚𐑦𐑓𐑹 𐑔𐑰𐑥 𐑗𐑱𐑯𐑡"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>𐑤𐑰𐑝 𐑩 𐑥𐑧𐑕𐑦𐑡 𐑓𐑹 %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U 𐑪𐑯 %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_𐑒𐑨𐑯𐑕𐑩𐑤"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_𐑤𐑰𐑝 𐑥𐑧𐑕𐑦𐑡"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_𐑤𐑪𐑜 𐑬𐑑"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_𐑕𐑢𐑦𐑗 𐑿𐑟𐑼"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_𐑩𐑯𐑤𐑭𐑒"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "𐑒𐑭𐑟𐑥𐑴𐑕"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "𐑚𐑳𐑚𐑩𐑤𐑟 𐑞 ·𐑜𐑯𐑴𐑥 𐑓𐑫𐑑 𐑤𐑴𐑜𐑴 𐑼𐑬𐑯𐑛 𐑞 𐑕𐑒𐑮𐑰𐑯"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "𐑓𐑤𐑴𐑑𐑦𐑙 𐑓𐑰𐑑"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "𐑐𐑦𐑒𐑑𐑘𐑼𐑟 𐑓𐑴𐑤𐑛𐑼"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "𐑩 𐑐𐑪𐑐-𐑸𐑑-𐑦𐑖 𐑜𐑮𐑦𐑛 𐑝 𐑐𐑩𐑤𐑕𐑦𐑙 𐑒𐑳𐑤𐑼𐑟."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "𐑐𐑪𐑐 𐑸𐑑 𐑕𐑒𐑢𐑺𐑟"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "𐑖𐑴 𐑐𐑭𐑞𐑟 𐑞𐑨𐑑 𐑦𐑥𐑦𐑡𐑩𐑟 𐑓𐑪𐑤𐑴"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "𐑩𐑒𐑱𐑠𐑩𐑯𐑩𐑤𐑦 𐑮𐑴𐑑𐑱𐑑 𐑦𐑥𐑦𐑡𐑩𐑟 𐑨𐑟 𐑞𐑱 𐑥𐑵𐑝"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "𐑐𐑮𐑦𐑯𐑑 𐑬𐑑 𐑓𐑮𐑱𐑥 𐑮𐑱𐑑 𐑯 𐑳𐑞𐑼 𐑕𐑑𐑩𐑑𐑦𐑕𐑑𐑦𐑒𐑕"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "𐑞 𐑥𐑨𐑒𐑕𐑦𐑥𐑩𐑥 𐑯𐑳𐑥𐑚𐑼 𐑝 𐑦𐑥𐑦𐑡𐑩𐑟 𐑑 𐑒𐑰𐑐 𐑪𐑯 𐑕𐑒𐑮𐑰𐑯"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "𐑥𐑩𐑒𐑕_𐑦𐑥𐑩𐑡𐑧𐑟"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "𐑞 𐑦𐑯𐑦𐑖𐑩𐑤 𐑕𐑲𐑟 𐑯 𐑐𐑩𐑟𐑦𐑖𐑩𐑯 𐑝 𐑢𐑦𐑯𐑛𐑴"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "𐑞 𐑕𐑹𐑕 𐑦𐑥𐑦𐑡 𐑑 𐑿𐑕"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "𐑦𐑥𐑦𐑡 - 𐑓𐑤𐑴𐑑𐑕 𐑦𐑥𐑦𐑡𐑩𐑟 𐑼𐑬𐑯𐑛 𐑞 𐑕𐑒𐑮𐑰𐑯"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. 𐑕𐑰 --help 𐑓𐑹 𐑿𐑕𐑦𐑡 𐑦𐑯𐑓𐑼𐑥𐑱𐑖𐑩𐑯.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "𐑿 𐑥𐑳𐑕𐑑 𐑕𐑐𐑧𐑕𐑦𐑓𐑲 𐑢𐑳𐑯 𐑦𐑥𐑦𐑡.  𐑕𐑰 --help 𐑓𐑹 𐑿𐑕𐑦𐑡 𐑦𐑯𐑓𐑼𐑥𐑱𐑖𐑩𐑯.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "𐑤𐑴𐑒𐑱𐑖𐑩𐑯 𐑑 𐑜𐑧𐑑 𐑦𐑥𐑦𐑡𐑩𐑟 𐑓𐑮𐑪𐑥"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "𐑐𐑭𐑔"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "𐑒𐑳𐑤𐑼 𐑑 𐑿𐑕 𐑓𐑹 𐑦𐑥𐑦𐑡𐑩𐑟 𐑚𐑨𐑒𐑜𐑮𐑬𐑯𐑛"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "𐑛𐑵 𐑯𐑪𐑑 𐑮𐑨𐑯𐑛𐑩𐑥𐑲𐑟 𐑐𐑦𐑒𐑑𐑘𐑼𐑟 𐑓𐑮𐑪𐑥 𐑤𐑴𐑒𐑱𐑖𐑩𐑯"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "𐑛𐑵 𐑯𐑪𐑑 𐑑𐑮𐑲 𐑑 𐑕𐑑𐑮𐑧𐑗 𐑦𐑥𐑦𐑡𐑩𐑟 𐑪𐑯 𐑕𐑒𐑮𐑰𐑯"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "𐑒𐑪𐑐𐑦𐑦𐑙 𐑓𐑲𐑤𐑟"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "𐑓𐑮𐑪𐑥:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "𐑑:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "𐑒𐑪𐑐𐑦𐑦𐑙 𐑔𐑰𐑥𐑟"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "𐑦𐑯𐑝𐑨𐑤𐑦𐑛 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑔𐑰𐑥"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s 𐑛𐑳𐑟 𐑯𐑪𐑑 𐑩𐑐𐑽 𐑑 𐑚𐑰 𐑩 𐑝𐑨𐑤𐑦𐑛 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑔𐑰𐑥."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "𐑒𐑪𐑐𐑦𐑦𐑙 𐑓𐑲𐑤: %u 𐑝 %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "𐑒𐑷𐑟𐑩𐑟 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑑 𐑧𐑜𐑟𐑦𐑑 𐑜𐑮𐑱𐑕𐑓𐑫𐑤𐑦"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "𐑒𐑢𐑽𐑦 𐑞 𐑕𐑑𐑱𐑑 𐑝 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "𐑒𐑢𐑽𐑦 𐑞 𐑤𐑧𐑙𐑔 𐑝 𐑑𐑲𐑥 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑣𐑨𐑟 𐑚𐑰𐑯 𐑨𐑒𐑑𐑦𐑝"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "𐑑𐑧𐑤𐑟 𐑞 𐑮𐑳𐑯𐑦𐑙 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑐𐑮𐑴𐑕𐑧𐑕 𐑑 𐑤𐑪𐑒 𐑞 𐑕𐑒𐑮𐑰𐑯 𐑦𐑥𐑰𐑛𐑾𐑑𐑤𐑰"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "𐑦𐑓 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑦𐑟 𐑨𐑒𐑑𐑦𐑝 𐑞𐑧𐑯 𐑕𐑢𐑦𐑗 𐑑 𐑩𐑯𐑳𐑞𐑼 𐑜𐑮𐑨𐑓𐑦𐑒𐑕 𐑛𐑧𐑥𐑴"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "𐑑𐑻𐑯 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑪𐑯 (𐑚𐑤𐑨𐑙𐑒 𐑞 𐑕𐑒𐑮𐑰𐑯)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "𐑦𐑓 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑦𐑟 𐑨𐑒𐑑𐑦𐑝 𐑞𐑧𐑯 𐑛𐑰𐑨𐑒𐑑𐑦𐑝𐑱𐑑 𐑦𐑑 (𐑳𐑯-𐑚𐑤𐑨𐑙𐑒 𐑞 𐑕𐑒𐑮𐑰𐑯)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "𐑐𐑴𐑒 𐑞 𐑮𐑳𐑯𐑦𐑙 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑑 𐑕𐑦𐑥𐑘𐑩𐑤𐑩𐑑 𐑿𐑟𐑼 𐑨𐑒𐑑𐑦𐑝𐑦𐑑𐑦"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"𐑦𐑯𐑣𐑦𐑚𐑩𐑑 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑓𐑮𐑪𐑥 𐑨𐑒𐑑𐑩𐑝𐑱𐑑𐑦𐑙.  𐑒𐑩𐑥𐑭𐑯𐑛 𐑚𐑤𐑪𐑒𐑕 𐑢𐑲𐑤 𐑦𐑯𐑣𐑦𐑚𐑩𐑑 𐑦𐑟 𐑨𐑒𐑑𐑦𐑝."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "𐑞 𐑒𐑷𐑤𐑦𐑙 𐑩𐑐𐑤𐑦𐑒𐑱𐑕𐑩𐑯 𐑞𐑨𐑑 𐑦𐑟 𐑦𐑯𐑣𐑦𐑚𐑩𐑑𐑦𐑙 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "𐑞 𐑮𐑰𐑟𐑩𐑯 𐑓𐑹 𐑦𐑯𐑣𐑦𐑚𐑩𐑑𐑦𐑙 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "𐑝𐑻𐑠𐑩𐑯 𐑝 𐑞𐑦𐑕 𐑩𐑐𐑤𐑦𐑒𐑱𐑕𐑩𐑯"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑦𐑟 %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "𐑨𐑒𐑑𐑦𐑝"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "𐑦𐑯𐑨𐑒𐑑𐑦𐑝"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑦𐑟 𐑯𐑪𐑑 𐑦𐑯𐑣𐑦𐑚𐑩𐑑𐑦𐑛\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑦𐑟 𐑚𐑰𐑦𐑙 𐑦𐑯𐑣𐑦𐑚𐑩𐑑𐑦𐑛 𐑚𐑲:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑣𐑨𐑟 𐑚𐑰𐑯 𐑨𐑒𐑑𐑦𐑝 𐑓𐑹 %d 𐑕𐑧𐑒𐑩𐑯𐑛𐑟.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑦𐑟 𐑯𐑪𐑑 𐑒𐑳𐑮𐑩𐑯𐑑𐑤𐑦 𐑨𐑒𐑑𐑦𐑝.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "𐑖𐑴 𐑛𐑰𐑚𐑳𐑜𐑦𐑙 𐑬𐑑𐑐𐑫𐑑"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "𐑖𐑴 𐑞 𐑕𐑢𐑦𐑗 𐑿𐑟𐑼 𐑚𐑳𐑑𐑩𐑯"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "𐑥𐑧𐑕𐑦𐑡 𐑑 𐑖𐑴 𐑦𐑯 𐑞 𐑛𐑲𐑩𐑤𐑪𐑜"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "𐑥𐑧𐑕𐑦𐑡"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "𐑯𐑪𐑑 𐑿𐑕𐑑"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "𐑿𐑟𐑼𐑯𐑱𐑥:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "𐑐𐑭𐑕𐑢𐑼𐑛:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "𐑿 𐑸 𐑮𐑦𐑒𐑢𐑲𐑼𐑛 𐑑 𐑗𐑱𐑯𐑡 𐑿𐑼 𐑐𐑭𐑕𐑢𐑼𐑛 𐑦𐑥𐑰𐑛𐑾𐑑𐑤𐑰 (𐑐𐑭𐑕𐑢𐑼𐑛 𐑱𐑡𐑛)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "𐑿 𐑸 𐑮𐑦𐑒𐑢𐑲𐑼𐑛 𐑑 𐑗𐑱𐑯𐑡 𐑿𐑼 𐑐𐑭𐑕𐑢𐑼𐑛 𐑦𐑥𐑰𐑛𐑾𐑑𐑤𐑰 (𐑮𐑵𐑑 𐑧𐑯𐑓𐑪𐑮𐑕𐑑)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "𐑿𐑼 𐑩𐑒𐑬𐑯𐑑 𐑣𐑨𐑟 𐑦𐑒𐑕𐑐𐑲𐑮𐑛; 𐑐𐑤𐑰𐑟 𐑒𐑪𐑯𐑑𐑨𐑒𐑑 𐑿𐑼 𐑕𐑦𐑕𐑑𐑩𐑥 𐑩𐑛𐑥𐑦𐑯𐑦𐑕𐑑𐑮𐑱𐑑𐑼"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "𐑯𐑴 𐑐𐑭𐑕𐑢𐑼𐑛 𐑕𐑩𐑐𐑤𐑲𐑛"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "𐑐𐑭𐑕𐑢𐑼𐑛 𐑩𐑯𐑗𐑱𐑯𐑡𐑛"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "𐑒𐑨𐑯 𐑯𐑪𐑑 𐑜𐑧𐑑 𐑿𐑟𐑼𐑯𐑱𐑥"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "𐑧𐑯𐑑𐑼 𐑯𐑿 ·𐑿𐑯𐑦𐑒𐑕 𐑐𐑭𐑕𐑢𐑼𐑛:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(𐑒𐑳𐑮𐑩𐑯𐑑) ·𐑿𐑯𐑦𐑒𐑕 𐑐𐑭𐑕𐑢𐑼𐑛:"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "𐑿 𐑥𐑳𐑕𐑑 𐑗𐑵𐑟 𐑩 𐑤𐑪𐑙𐑜𐑼 𐑐𐑭𐑕𐑢𐑼𐑛"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "𐑐𐑭𐑕𐑢𐑼𐑛 𐑣𐑨𐑟 𐑚𐑰𐑯 𐑷𐑤𐑮𐑧𐑛𐑦 𐑿𐑕𐑑. 𐑗𐑵𐑟 𐑩𐑯𐑳𐑞𐑼."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "𐑿 𐑥𐑳𐑕𐑑 𐑢𐑱𐑑 𐑤𐑪𐑙𐑜𐑼 𐑑 𐑗𐑱𐑯𐑡 𐑿𐑼 𐑐𐑭𐑕𐑢𐑼𐑛"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "𐑕𐑪𐑮𐑦, 𐑐𐑭𐑕𐑢𐑼𐑛𐑟 𐑛𐑵 𐑯𐑪𐑑 𐑥𐑨𐑗"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "𐑗𐑧𐑒𐑦𐑙..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "𐑷𐑔𐑧𐑯𐑑𐑦𐑒𐑱𐑖𐑩𐑯 𐑓𐑱𐑤𐑛."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "𐑚𐑤𐑨𐑙𐑒 𐑕𐑒𐑮𐑰𐑯"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "𐑮𐑨𐑯𐑛𐑩𐑥"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d 𐑬𐑼"
+msgstr[1] "%d 𐑬𐑼𐑟"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d 𐑥𐑦𐑯𐑩𐑑"
+msgstr[1] "%d 𐑥𐑦𐑯𐑩𐑑𐑕"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d 𐑕𐑧𐑒𐑩𐑯𐑛"
+msgstr[1] "%d 𐑕𐑧𐑒𐑩𐑯𐑛𐑟"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "𐑯𐑧𐑝𐑼"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "𐑒𐑫𐑛 𐑯𐑪𐑑 𐑤𐑴𐑛 𐑞 𐑥𐑱𐑯 𐑦𐑯𐑑𐑼𐑓𐑱𐑕"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "𐑐𐑤𐑰𐑟 𐑥𐑱𐑒 𐑖𐑫𐑼 𐑞𐑨𐑑 𐑞 𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑦𐑟 𐑐𐑮𐑪𐑐𐑼𐑤𐑦 𐑦𐑯𐑕𐑑𐑷𐑤𐑛"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "𐑛𐑴𐑯𐑑 𐑚𐑦𐑒𐑳𐑥 𐑩 𐑛𐑰𐑥𐑩𐑯"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "𐑦𐑯𐑱𐑚𐑩𐑤 𐑛𐑰𐑚𐑳𐑜𐑦𐑙 𐑒𐑴𐑛"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "𐑤𐑷𐑯𐑗 𐑕𐑒𐑮𐑰𐑯 𐑕𐑱𐑝𐑼 𐑯 𐑤𐑪𐑒𐑼 𐑐𐑮𐑴𐑜𐑮𐑨𐑥"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "𐑳𐑯𐑱𐑚𐑩𐑤 𐑑 𐑩𐑕𐑑𐑨𐑚𐑤𐑦𐑖 𐑕𐑻𐑝𐑦𐑕 %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "𐑒𐑭𐑯𐑑 𐑕𐑧𐑑 PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "𐑦𐑯𐑒𐑼𐑧𐑒𐑑 𐑐𐑭𐑕𐑢𐑼𐑛."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "𐑯𐑪𐑑 𐑐𐑼𐑥𐑦𐑑𐑩𐑛 𐑑 𐑜𐑱𐑯 𐑨𐑒𐑕𐑧𐑕 𐑨𐑑 𐑞𐑦𐑕 𐑑𐑲𐑥."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "𐑯𐑴 𐑤𐑪𐑙𐑜𐑼 𐑐𐑼𐑥𐑦𐑑𐑩𐑛 𐑑 𐑨𐑒𐑕𐑧𐑕 𐑞 𐑕𐑦𐑕𐑑𐑩𐑥."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "𐑓𐑱𐑤𐑛 𐑑 𐑮𐑧𐑡𐑦𐑕𐑑𐑼 𐑢𐑦𐑞 𐑞 𐑥𐑧𐑕𐑦𐑡 𐑚𐑳𐑕"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "𐑯𐑪𐑑 𐑒𐑩𐑯𐑧𐑒𐑑𐑩𐑛 𐑑 𐑞 𐑥𐑧𐑕𐑦𐑡 𐑚𐑳𐑕"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "𐑕𐑒𐑮𐑰𐑯𐑕𐑱𐑝𐑼 𐑷𐑤𐑮𐑧𐑛𐑦 𐑮𐑳𐑯𐑦𐑙 𐑦𐑯 𐑞𐑦𐑕 𐑕𐑧𐑖𐑩𐑯"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "𐑑𐑲𐑥 𐑣𐑨𐑟 𐑦𐑒𐑕𐑐𐑲𐑮𐑛."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "𐑿 𐑣𐑨𐑝 𐑞 𐑒𐑨𐑐𐑕 𐑤𐑪𐑒 𐑒𐑰 𐑪𐑯."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "𐑕_𐑢𐑦𐑗 𐑿𐑟𐑼..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "𐑤𐑪𐑜 _𐑬𐑑"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U 𐑪𐑯 %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_𐑐𐑭𐑕𐑢𐑼𐑛:"
diff --git a/po/en_CA.po b/po/en_CA.po
new file mode 100644
index 0000000..bc71642
--- /dev/null
+++ b/po/en_CA.po
@@ -0,0 +1,811 @@
+# Canadian English translation for mate-screensaver
+# Copyright (C) 2005-2006 Adam Weinberger and the MATE Foundation
+# This file is distributed under the same licence as the mate-screensaver package.
+# Adam Weinberger <adamw at gnome.org>, 2005, 2006.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-15 23:26-0500\n"
+"PO-Revision-Date: 2005-09-06 11:55-0400\n"
+"Last-Translator: Adam Weinberger <adamw at gnome.org>\n"
+"Language-Team: Canadian English <adamw at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Screensaver"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Set your screensaver preferences"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "    "
+msgstr "    "
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>_Screensaver</b>"
+msgstr "<b>_Screensaver</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Screensaver Preferences"
+msgstr "Screensaver Preferences"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Set session as _idle after:"
+msgstr "Set session as _idle after:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "_Activate screensaver when session is idle"
+msgstr "_Activate screensaver when session is idle"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "_Lock screen when screensaver is active"
+msgstr "_Lock screen when screensaver is active"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Screensaver themes"
+msgstr "Screensaver themes"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Screensavers"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activate when idle"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow logout"
+msgstr "Allow logout"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow monitor power management"
+msgstr "Allow monitor power management"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Allow user switching"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Lock on activation"
+msgstr "Lock on activation"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Logout command"
+msgstr "Logout command"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Screensaver theme selection mode"
+msgstr "Screensaver theme selection mode"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Set this to TRUE to activate the screensaver when the session is idle."
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+msgstr "Set this to TRUE to allow the screensaver to power down the monitor."
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Set this to TRUE to lock the screen when the screensaver activates."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Set this to TRUE to offer an option in the unlock dialogue to switch to a "
+"different user account."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Set this to TRUE to offer an option in the unlock dialogue to log out after "
+"a delay. The delay is specified in the \"logout_delay\" key."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"The number of minutes after screensaver activation before locking the screen."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"The number of minutes after screensaver activation before a logout option "
+"will appear in the unlock dialogue. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"goes into standby power mode."
+msgstr ""
+"The number of minutes after the screensaver activation until the monitor "
+"goes into standby power mode."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"goes into suspend power mode."
+msgstr ""
+"The number of minutes after the screensaver activation until the monitor "
+"goes into power suspend mode."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"powers off."
+msgstr ""
+"The number of minutes after the screensaver activation until the monitor "
+"powers off."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"The number of minutes of inactivity before the session is considered idle."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "The number of minutes to run before changing the screensaver theme."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "Time before activation"
+msgstr "Time before activation"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Time before locking"
+msgstr "Time before locking"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Time before logout option"
+msgstr "Time before logout option"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "Time before power off"
+msgstr "Time before power off"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before standby"
+msgstr "Time before standby"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before suspend"
+msgstr "Time before suspend"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before theme change"
+msgstr "Time before theme change"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bubbles the MATE foot logo around the screen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Floating Feet"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Display a slideshow of pictures of the cosmos"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Display a slideshow from your Pictures folder"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Pictures folder"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "A pop-art-ish grid of pulsing colours."
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Pop art squares"
+
+#: ../savers/floaters.c:1164
+msgid "show paths that images follow"
+msgstr "show paths that images follow"
+
+#: ../savers/floaters.c:1171
+msgid "occasionally rotate images as they move"
+msgstr "occasionally rotate images as they move"
+
+#: ../savers/floaters.c:1178
+msgid "print out frame rate and other statistics"
+msgstr "print out frame rate and other statistics"
+
+#: ../savers/floaters.c:1186
+msgid "the maximum number of images to keep on screen"
+msgstr "the maximum number of images to keep on screen"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1190
+msgid "N"
+msgstr "N"
+
+#: ../savers/floaters.c:1197
+msgid "the source image to use"
+msgstr "the source image to use"
+
+#: ../savers/floaters.c:1204
+msgid "the initial size and position of window"
+msgstr "the initial size and position of window"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1209
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1229
+msgid "image - floats images around the screen"
+msgstr "image - floats images around the screen"
+
+#: ../savers/floaters.c:1239
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. See --help for usage information.\n"
+
+#: ../savers/floaters.c:1248
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "You must specify one image.  See --help for usage information.\n"
+
+#: ../savers/slideshow.c:47
+msgid "Location to get images from"
+msgstr "Location to get images from"
+
+#: ../savers/slideshow.c:47
+msgid "PATH"
+msgstr "PATH"
+
+#: ../src/cut-n-paste/fusa-display.c:119 ../src/cut-n-paste/fusa-user.c:150
+msgid "Manager"
+msgstr "Manager"
+
+#: ../src/cut-n-paste/fusa-display.c:120
+msgid "The manager which owns this object."
+msgstr "The manager which owns this object."
+
+#: ../src/cut-n-paste/fusa-display.c:127
+msgid "Name"
+msgstr "Name"
+
+#: ../src/cut-n-paste/fusa-display.c:128
+msgid "The name of the X11 display this object refers to."
+msgstr "The name of the X11 display this object refers to."
+
+#: ../src/cut-n-paste/fusa-display.c:134
+#: ../src/cut-n-paste/fusa-user-menu-item.c:164
+msgid "User"
+msgstr "User"
+
+#: ../src/cut-n-paste/fusa-display.c:135
+msgid "The user currently logged in on this virtual terminal."
+msgstr "The user currently logged in on this virtual terminal."
+
+#: ../src/cut-n-paste/fusa-display.c:141
+msgid "Console"
+msgstr "Console"
+
+#: ../src/cut-n-paste/fusa-display.c:142
+msgid "The number of the virtual console this display can be found on, or %-1."
+msgstr ""
+"The number of the virtual console this display can be found on, or %-1."
+
+#: ../src/cut-n-paste/fusa-display.c:148
+msgid "Nested"
+msgstr "Nested"
+
+#: ../src/cut-n-paste/fusa-display.c:149
+msgid "Whether or not this display is a windowed (Xnest) display."
+msgstr "Whether or not this display is a windowed (Xnest) display."
+
+#: ../src/cut-n-paste/fusa-manager.c:1263
+msgid "The display manager could not be contacted for unknown reasons."
+msgstr "The display manager could not be contacted for unknown reasons."
+
+#: ../src/cut-n-paste/fusa-manager.c:1270
+msgid "The display manager is not running or too old."
+msgstr "The display manager is not running or too old."
+
+#: ../src/cut-n-paste/fusa-manager.c:1273
+msgid "The configured limit of flexible servers has been reached."
+msgstr "The configured limit of flexible servers has been reached."
+
+#: ../src/cut-n-paste/fusa-manager.c:1276
+msgid "There was an unknown error starting X."
+msgstr "There was an unknown error starting X."
+
+#: ../src/cut-n-paste/fusa-manager.c:1279
+msgid "The X server failed to finish starting."
+msgstr "The X server failed to finish starting."
+
+#: ../src/cut-n-paste/fusa-manager.c:1282
+msgid "There are too many X sessions running."
+msgstr "There are too many X sessions running."
+
+#: ../src/cut-n-paste/fusa-manager.c:1285
+msgid "The nested X server (Xnest) cannot connect to your current X server."
+msgstr "The nested X server (Xnest) cannot connect to your current X server."
+
+#: ../src/cut-n-paste/fusa-manager.c:1288
+msgid "The X server in the MDM configuration could not be found."
+msgstr "The X server in the MDM configuration could not be found."
+
+#: ../src/cut-n-paste/fusa-manager.c:1291 ../src/cut-n-paste/mdmcomm.c:492
+msgid ""
+"Trying to set an unknown logout action, or trying to set a logout action "
+"which is not available."
+msgstr ""
+"Trying to set an unknown logout action, or trying to set a logout action "
+"which is not available."
+
+#: ../src/cut-n-paste/fusa-manager.c:1294 ../src/cut-n-paste/mdmcomm.c:495
+msgid "Virtual terminals not supported."
+msgstr "Virtual terminals not supported."
+
+#: ../src/cut-n-paste/fusa-manager.c:1297
+msgid "Invalid virtual terminal number."
+msgstr "Invalid virtual terminal number."
+
+#: ../src/cut-n-paste/fusa-manager.c:1300 ../src/cut-n-paste/mdmcomm.c:499
+msgid "Trying to update an unsupported configuration key."
+msgstr "Trying to update an unsupported configuration key."
+
+#: ../src/cut-n-paste/fusa-manager.c:1303
+msgid "~/.Xauthority file badly configured or missing."
+msgstr "~/.Xauthority file badly configured or missing."
+
+#: ../src/cut-n-paste/fusa-manager.c:1306
+msgid "Too many messages were sent to the display manager, and it hung up."
+msgstr "Too many messages were sent to the display manager, and it hung up."
+
+#: ../src/cut-n-paste/fusa-manager.c:1310
+msgid "The display manager sent an unknown error message."
+msgstr "The display manager sent an unknown error message."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:165
+msgid "The user this menu item represents."
+msgstr "The user this menu item represents."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:172
+msgid "Icon Size"
+msgstr "Icon Size"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:173
+msgid "The size of the icon to use."
+msgstr "The size of the icon to use."
+
+#: ../src/cut-n-paste/fusa-user.c:151
+msgid "The user manager object this user is controlled by."
+msgstr "The user manager object this user is controlled by."
+
+#: ../src/cut-n-paste/fusa-utils.c:80
+msgid "Show Details"
+msgstr "Show Details"
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:413
+msgid "MDM (The MATE Display Manager) is not running."
+msgstr "MDM (The MATE Display Manager) is not running."
+
+#: ../src/cut-n-paste/mdmcomm.c:416
+msgid ""
+"You might in fact be using a different display manager, such as KDM (KDE "
+"Display Manager) or xdm."
+msgstr ""
+"You might in fact be using a different display manager, such as KDM (KDE "
+"Display Manager) or xdm."
+
+#: ../src/cut-n-paste/mdmcomm.c:419
+msgid ""
+"If you still wish to use this feature, either start MDM yourself or ask your "
+"system administrator to start MDM."
+msgstr ""
+"If you still wish to use this feature, either start MDM yourself or ask your "
+"system administrator to start MDM."
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:441
+msgid "Cannot communicate with MDM (The MATE Display Manager)"
+msgstr "Cannot communicate with MDM (The MATE Display Manager)"
+
+#: ../src/cut-n-paste/mdmcomm.c:444
+msgid "Perhaps you have an old version of MDM running."
+msgstr "Perhaps you have an old version of MDM running."
+
+#: ../src/cut-n-paste/mdmcomm.c:463 ../src/cut-n-paste/mdmcomm.c:466
+msgid "Cannot communicate with mdm, perhaps you have an old version running."
+msgstr "Cannot communicate with MDM. Perhaps you have an old version running."
+
+#: ../src/cut-n-paste/mdmcomm.c:469
+msgid "The allowed limit of flexible X servers reached."
+msgstr "The allowed limit of flexible X servers reached."
+
+#: ../src/cut-n-paste/mdmcomm.c:471
+msgid "There were errors trying to start the X server."
+msgstr "There were errors trying to start the X server."
+
+#: ../src/cut-n-paste/mdmcomm.c:473
+msgid "The X server failed.  Perhaps it is not configured well."
+msgstr "The X server failed.  Perhaps it is misconfigured."
+
+#: ../src/cut-n-paste/mdmcomm.c:476
+msgid "Too many X sessions running."
+msgstr "Too many X sessions running."
+
+#: ../src/cut-n-paste/mdmcomm.c:478
+msgid ""
+"The nested X server (Xnest) cannot connect to your current X server.  You "
+"may be missing an X authorization file."
+msgstr ""
+"The nested X server (Xnest) cannot connect to your current X server.  You "
+"may be missing an X authorization file."
+
+#: ../src/cut-n-paste/mdmcomm.c:483
+msgid ""
+"The nested X server (Xnest) is not available, or mdm is badly configured.\n"
+"Please install the Xnest package in order to use the nested login."
+msgstr ""
+"The nested X server (Xnest) is not available, or MDM is misconfigured.\n"
+"Please install the Xnest package in order to use the nested login."
+
+#: ../src/cut-n-paste/mdmcomm.c:488
+msgid ""
+"The X server is not available, it is likely that mdm is badly configured."
+msgstr "The X server is not available. MDM may be misconfigured."
+
+#: ../src/cut-n-paste/mdmcomm.c:497
+msgid "Trying to change to an invalid virtual terminal number."
+msgstr "Trying to change to an invalid virtual terminal number."
+
+#: ../src/cut-n-paste/mdmcomm.c:501
+msgid ""
+"You do not seem to have authentication needed be for this operation.  "
+"Perhaps your .Xauthority file is not set up correctly."
+msgstr ""
+"You do not seem to have authentication needed be for this operation.  "
+"Perhaps your .Xauthority file is not set up correctly."
+
+#: ../src/cut-n-paste/mdmcomm.c:505
+msgid "Too many messages were sent to mdm and it hung upon us."
+msgstr "Too many messages were sent to MDM and it hung up on us."
+
+#: ../src/cut-n-paste/mdmcomm.c:508
+msgid "Unknown error occured."
+msgstr "Unknown error occurred."
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copying file: %u of %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "Copying '%s'"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "From URI"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "URI currently transferring from"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "To URI"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "URI currently transferring to"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "Fraction completed"
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "Fraction of transfer currently completed"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "Current URI index"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "Current URI index - starts from 1"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "Total URIs"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "Total number of URIs"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "Copying files"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "From:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "To:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "Connecting..."
+
+#: ../src/mate-screensaver-command.c:59
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Causes the screensaver to exit gracefully"
+
+#: ../src/mate-screensaver-command.c:61
+msgid "Query the state of the screensaver"
+msgstr "Query the state of the screensaver"
+
+#: ../src/mate-screensaver-command.c:63
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Tells the running screensaver process to lock the screen immediately"
+
+#: ../src/mate-screensaver-command.c:65
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "If the screensaver is active then switch to another graphics demo"
+
+#: ../src/mate-screensaver-command.c:67
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Turn the screensaver on (blank the screen)"
+
+#: ../src/mate-screensaver-command.c:69
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "If the screensaver is active then deactivate it (un-blank the screen)"
+
+#: ../src/mate-screensaver-command.c:71
+msgid "Disable running graphical themes while blanked"
+msgstr "Disable running graphical themes while blanked"
+
+#: ../src/mate-screensaver-command.c:73
+msgid "Enable running graphical themes while blanked (if applicable)"
+msgstr "Enable running graphical themes while blanked (if applicable)"
+
+#: ../src/mate-screensaver-command.c:75
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Poke the running screensaver to simulate user activity"
+
+#: ../src/mate-screensaver-command.c:77 ../src/mate-screensaver-dialog.c:106
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Version of this application"
+
+#: ../src/mate-screensaver-command.c:202
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "The screensaver is %s\n"
+
+#: ../src/mate-screensaver-command.c:202
+msgid "active"
+msgstr "active"
+
+#: ../src/mate-screensaver-command.c:202
+msgid "inactive"
+msgstr "inactive"
+
+#: ../src/mate-screensaver-dialog.c:104
+msgid "Show debugging output"
+msgstr "Show debugging output"
+
+#: ../src/mate-screensaver-dialog.c:108
+msgid "Show the logout button"
+msgstr "Show the \"logout\" button"
+
+#: ../src/mate-screensaver-dialog.c:110
+msgid "Command to invoke from the logout button"
+msgstr "Command to invoke from the logout button"
+
+#: ../src/mate-screensaver-dialog.c:112
+msgid "Show the switch user button"
+msgstr "Show the \"switch user\" button"
+
+#: ../src/mate-screensaver-preferences.c:417
+msgid "Blank screen"
+msgstr "Blank screen"
+
+#: ../src/mate-screensaver-preferences.c:423
+msgid "Random"
+msgstr "Random"
+
+#: ../src/mate-screensaver-preferences.c:712
+msgid "Invalid screensaver theme"
+msgstr "Invalid screensaver theme"
+
+#: ../src/mate-screensaver-preferences.c:715
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "This file does not appear to be a valid screensaver theme."
+
+#: ../src/mate-screensaver-preferences.c:832
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hour"
+msgstr[1] "%d hours"
+
+#: ../src/mate-screensaver-preferences.c:835
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minute"
+msgstr[1] "%d minutes"
+
+#: ../src/mate-screensaver-preferences.c:838
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d second"
+msgstr[1] "%d seconds"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:844
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:847
+#: ../src/mate-screensaver-preferences.c:855
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:850
+#: ../src/mate-screensaver-preferences.c:858
+#: ../src/mate-screensaver-preferences.c:862
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#. 0 seconds
+#: ../src/mate-screensaver-preferences.c:865
+msgid "0 seconds"
+msgstr "0 seconds"
+
+#: ../src/mate-screensaver-preferences.c:880
+msgid "Never"
+msgstr "Never"
+
+#: ../src/mate-screensaver-preferences.c:1026
+msgid "Could not load the main interface"
+msgstr "Could not load the main interface"
+
+#: ../src/mate-screensaver-preferences.c:1028
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Please make sure that the screensaver is properly installed"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Do not become a daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Enable debugging code"
+
+#: ../src/gs-listener-dbus.c:1188
+msgid "failed to register with the message bus"
+msgstr "Failed to register with the message bus"
+
+#: ../src/gs-listener-dbus.c:1198
+msgid "not connected to the message bus"
+msgstr "not connected to the message bus"
+
+#: ../src/gs-listener-dbus.c:1207
+msgid "screensaver already running in this session"
+msgstr "Screensaver already running in this session"
+
+#: ../src/gs-lock-plug.c:346
+msgid "Checking password..."
+msgstr "Checking password..."
+
+#: ../src/gs-lock-plug.c:389
+msgid "Time has expired."
+msgstr "Time has expired."
+
+#: ../src/gs-lock-plug.c:414
+msgid "You have the Caps Lock key on."
+msgstr "You have the Caps Lock key on."
+
+#: ../src/gs-lock-plug.c:691
+msgid "That password was incorrect."
+msgstr "That password was incorrect."
+
+#: ../src/gs-lock-plug.c:717 ../src/gs-lock-plug.c:750
+msgid "_Unlock"
+msgstr "_Unlock"
+
+#: ../src/gs-lock-plug.c:720 ../src/gs-lock-plug.c:747
+msgid "_Switch User..."
+msgstr "_Switch User..."
+
+#: ../src/gs-lock-plug.c:1432
+msgid "_Password:"
+msgstr "_Password:"
+
+#: ../src/gs-lock-plug.c:1498
+msgid "S_witch to user:"
+msgstr "S_witch to user:"
+
+#: ../src/gs-lock-plug.c:1545
+msgid "Log _Out"
+msgstr "Log _Out"
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644
index 0000000..1229dea
--- /dev/null
+++ b/po/en_GB.po
@@ -0,0 +1,1107 @@
+# English (British) translation.
+# Copyright (C) 2005 THE mate-screensaver'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Abigail Brady <morwen at evilmagic.org>, Bastien Nocera <hadess at hadess.net>, 2005.
+# Philip Withnall <philip at tecnocode.co.uk>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-02-24 23:15+0000\n"
+"PO-Revision-Date: 2008-03-03 18:30+0000\n"
+"Last-Translator: Philip Withnall <philip at tecnocode.co.uk>\n"
+"Language-Team: British English <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Screensaver"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Set your screensaver preferences"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Screensaver preview</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Warning: the screen will not be locked for the root user.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Power _Management"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Regard the computer as _idle after:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Screensaver Preferences"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Screensaver Preview"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activate screensaver when computer is idle"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Lock screen when screensaver is active"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Preview"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Screensaver theme:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Screensaver themes"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Screensavers"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activate when idle"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Allow embedding a keyboard into the window"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Allow logout"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Allow the session status message to be displayed"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Allow the session status message to be displayed when the screen is locked."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Allow user switching"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Embedded keyboard command"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Lock on activation"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Logout command"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Screensaver theme selection mode"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Set this to TRUE to activate the screensaver when the session is idle."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Set this to TRUE to lock the screen when the screensaver goes active."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Set this to TRUE to offer an option in the unlock dialogue to switch to a "
+"different user account."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Set this to TRUE to offer an option in the unlock dialogue to allow logging out "
+"after a delay. The delay is specified in the \"logout_delay\" key."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"The number of minutes after screensaver activation before locking the screen."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in the unlock dialogue. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"The number of minutes of inactivity before the session is considered idle."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "The number of minutes to run before changing the screensaver theme."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"The number of seconds of inactivity before signalling to power management. "
+"This key is set and maintained by the session power management agent."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Theme for lock dialogue"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Theme to use for the lock dialogue."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Time before locking"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Time before logout option"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Time before power management baseline"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Time before session is considered idle"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Time before theme change"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Leave a message for %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Cancel"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Leave Message"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Log Out"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Switch User"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Unlock"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Display a slideshow of pictures of the cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bubbles the MATE foot logo around the screen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Floating Feet"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Display a slideshow from your Pictures folder"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Pictures folder"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "A pop-art-ish grid of pulsing colours."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop art squares"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. See --help for usage information.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "Show paths that images follow"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "Occasionally rotate images as they move"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Print out frame rate and other statistics"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "The maximum number of images to keep on screen"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "The initial size and position of window"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "The source image to use"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "image — floats images around the screen"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "You must specify one image.  See --help for usage information.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Location to get images from"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Colour to use for image background"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Do not randomise pictures from location"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Do not try to stretch images on screen"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Copying files"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "From:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "To:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Copying themes"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Invalid screensaver theme"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s does not appear to be a valid screensaver theme."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copying file: %u of %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Causes the screensaver to exit gracefully"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Query the state of the screensaver"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Query the length of time the screensaver has been active"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Tells the running screensaver process to lock the screen immediately"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "If the screensaver is active then switch to another graphics demo"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Turn the screensaver on (blank the screen)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "If the screensaver is active then deactivate it (un-blank the screen)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Poke the running screensaver to simulate user activity"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "The calling application that is inhibiting the screensaver"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "The reason for inhibiting the screensaver"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Version of this application"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "The screensaver is %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "active"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inactive"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "The screensaver is not inhibited\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "The screensaver is being inhibited by:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "The screensaver has been active for %d seconds.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "The screensaver is not currently active.\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Show debugging output"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Show the logout button"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "Command to invoke from the logout button"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Show the switch user button"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "Message to show in the dialogue"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "Not used"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Username:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Password:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr "You are required to change your password immediately (password aged)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "You are required to change your password immediately (root enforced)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Your account has expired; please contact your system administrator"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "No password supplied"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "Password unchanged"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "Cannot get username"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Retype new Unix password:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Enter new Unix password:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "(current) Unix password:"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "Error while changing NIS password."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "You must choose a longer password"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "Password has been already used. Choose another."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "You must wait longer to change your password"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Sorry, passwords do not match"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "Checking…"
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Authentication failed."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Blank screen"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Random"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hour"
+msgstr[1] "%d hours"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minute"
+msgstr[1] "%d minutes"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d second"
+msgstr[1] "%d seconds"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Never"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Could not load the main interface"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Please make sure that the screensaver is properly installed"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Don't become a daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Enable debugging code"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Launch screensaver and locker program"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Unable to establish service %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Can't set PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Incorrect password."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Not permitted to gain access at this time."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "No longer permitted to access the system."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "failed to register with the message bus"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "not connected to the message bus"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "screensaver already running in this session"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Time has expired."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "You have the Caps Lock key on."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "S_witch User…"
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Log _Out"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U on %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Password:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Reason for being away"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "The reason for being away from the computer."
+
+#~ msgid "Authentication"
+#~ msgstr "Authentication"
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "Copying '%s'"
+#~ msgstr "Copying '%s'"
+
+#~ msgid "From URI"
+#~ msgstr "From URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI currently transferring from"
+
+#~ msgid "To URI"
+#~ msgstr "To URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI currently transferring to"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Fraction completed"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Fraction of transfer currently completed"
+
+#~ msgid "Current URI index"
+#~ msgstr "Current URI index"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Current URI index — starts from 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Total URIs"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Total number of URIs"
+
+#~ msgid "Connecting..."
+#~ msgstr "Connecting…"
+
+#~ msgid "S_witch to user:"
+#~ msgstr "S_witch to user:"
+
+#~ msgid "_Switch user..."
+#~ msgstr "_Switch user…"
+
+#~ msgid "Manager"
+#~ msgstr "Manager"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "The manager which owns this object."
+
+#~ msgid "Name"
+#~ msgstr "Name"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "The name of the X11 display this object refers to."
+
+#~ msgid "User"
+#~ msgstr "User"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "The user currently logged in on this virtual terminal."
+
+#~ msgid "Console"
+#~ msgstr "Console"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Whether or not this display is a windowed (Xnest) display."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "The display manager could not be contacted for unknown reasons."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "The display manager is not running or too old."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "The configured limit of flexible servers has been reached."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "There was an unknown error starting X."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "The X server failed to finish starting."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "There are too many X sessions running."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "The nested X server (Xnest) cannot connect to your current X server."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "The X server in the MDM configuration could not be found."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Virtual terminals not supported."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Invalid virtual terminal number."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "Trying to update an unsupported configuration key."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority file badly configured or missing."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "Too many messages were sent to the display manager, and it hung up."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "The display manager sent an unknown error message."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "The user this menu item represents."
+
+#~ msgid "Icon Size"
+#~ msgstr "Icon Size"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "The size of the icon to use."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Indicator Size"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Size of check indicator"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Indicator Spacing"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Space between the username and the indicator"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "The user manager object this user is controlled by."
+
+#~ msgid "Show Details"
+#~ msgstr "Show Details"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (The MATE Display Manager) is not running."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "Cannot communicate with MDM (The MATE Display Manager)"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Perhaps you have an old version of MDM running."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "The allowed limit of flexible X servers reached."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "There were errors trying to start the X server."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "The X server failed.  Perhaps it is not configured well."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "Too many X sessions running."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorisation file."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Trying to change to an invalid virtual terminal number."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "Too many messages were sent to mdm and it hung upon us."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "Unknown error occurred."
+
+#~ msgid "Time before activation"
+#~ msgstr "Time before activation"
+
+#~ msgid "    "
+#~ msgstr "    "
+
+#~ msgid "_Activate after:"
+#~ msgstr "_Activate after:"
+
+#~ msgid "How many minutes until the monitor goes black"
+#~ msgstr "How many minutes until the monitor goes black"
+
+#~ msgid "How many minutes until the monitor goes black."
+#~ msgstr "How many minutes until the monitor goes black."
+
+#~ msgid "How many minutes until the monitor power-saves"
+#~ msgstr "How many minutes until the monitor power-saves"
+
+#~ msgid "How many minutes until the monitor power-saves."
+#~ msgstr "How many minutes until the monitor power-saves."
+
+#~ msgid "How many minutes until the monitor powers down"
+#~ msgstr "How many minutes until the monitor powers down"
+
+#~ msgid "How many minutes until the monitor powers down."
+#~ msgstr "How many minutes until the monitor powers down."
+
+#, fuzzy
+#~ msgid ""
+#~ "The number of minutes after blanking the screen before a logout option "
+#~ "will appear"
+#~ msgstr "The number of minutes after blanking the screen before locking"
+
+#, fuzzy
+#~ msgid ""
+#~ "The number of minutes after blanking the screen before a logout option "
+#~ "will appear."
+#~ msgstr "The number of minutes after blanking the screen before locking."
+
+#~ msgid "The number of minutes after blanking the screen before locking"
+#~ msgstr "The number of minutes after blanking the screen before locking"
+
+#~ msgid "The number of minutes after blanking the screen before locking."
+#~ msgstr "The number of minutes after blanking the screen before locking."
+
+#~ msgid "The number of minutes of idle time before blanking the screen"
+#~ msgstr "The number of minutes of idle time before blanking the screen"
+
+#~ msgid "This key specifies the selected themes to used by the screensaver."
+#~ msgstr ""
+#~ "This key specifies the selected themes to be used by the screensaver."
+
+#~ msgid ""
+#~ "This key specifies the selection mode used by the screensaver. Possible "
+#~ "values are \"disabled\", \"blank-only\", \"single\", and \"random\"."
+#~ msgstr ""
+#~ "This key specifies the selection mode used by the screensaver. Possible "
+#~ "values are \"disabled\", \"blank-only\", \"single\", and \"random\"."
+
+#, fuzzy
+#~ msgid "Whether to lock as well as blank"
+#~ msgstr "Whether or not to lock as well as save"
+
+#, fuzzy
+#~ msgid "Whether to lock as well as blank."
+#~ msgstr "Whether or not to lock as well as save."
+
+#~ msgid "Whether to offer the option of logging out after logout_delay"
+#~ msgstr "Whether to offer the option of logging out after logout_delay"
+
+#~ msgid "Whether to offer the option of logging out after logout_delay."
+#~ msgstr "Whether to offer the option of logging out after logout_delay."
+
+#~ msgid "Whether to power down the monitor"
+#~ msgstr "Whether to power down the monitor"
+
+#~ msgid "Whether to power down the monitor."
+#~ msgstr "Whether to power down the monitor."
+
+#~ msgid "Verifying password..."
+#~ msgstr "Verifying password…"
+
+#~ msgid "About %ld seconds left"
+#~ msgstr "About %ld seconds left"
+
+#~ msgid "Password verification failed!"
+#~ msgstr "Password verification failed!"
+
+#~ msgid "_Login Screen"
+#~ msgstr "_Login Screen"
+
+#~ msgid "Enter password to unlock screen"
+#~ msgstr "Enter password to unlock screen"
+
+#~ msgid "Name:"
+#~ msgstr "Name:"
+
+#~ msgid "Log in as another user?"
+#~ msgstr "Log in as another user?"
+
+#~ msgid ""
+#~ "This option will bring you to the Login Screen.\n"
+#~ "From the Login Screen you may log in to this system\n"
+#~ "as another user or select 'Quit' to return to this screen."
+#~ msgstr ""
+#~ "This option will bring you to the Login Screen.\n"
+#~ "From the Login Screen you may log in to this system\n"
+#~ "as another user or select 'Quit' to return to this screen."
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..39b9933
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,787 @@
+# translation of mate-screensaver.HEAD.po to Español
+# translation of mate-screensaver to Spanish
+# This file is distributed under the same license as the mate-screensaver package.
+# Copyright (C) 2005 The MATE Foundation, 2005.
+#
+# Francisco Javier F. Serrador <serrador at cvs.gnome.org>, 2005, 2006.
+# Jorge González <jorgegonz at svn.gnome.org>, 2007, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.HEAD\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-08-22 11:50+0200\n"
+"Last-Translator: Jorge González <jorgegonz at svn.gnome.org>\n"
+"Language-Team: Español <mate-es-list at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Salvapantallas"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Configure su salvapantallas"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Vista previa del salvapantallas</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Atención: la pantalla no se bloqueará para el usuario root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Gestión de _energía"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Considerar que el equipo está _inactivo después de:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferencias del salvapantallas"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Vista previa del salvapantallas"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activar el salvapantallas cuando el equipo esté inactivo"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Bloquear pantalla cuando el salvapantallas esté activo"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "Vista _previa"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema del _salvapantallas:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Temas del salvapantallas"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Salvapantallas"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activar cuando esté inactivo"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Permitir empotrar un teclado en la ventana"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Permitir cerrar sesión"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Permitir que se muestren los mensajes de estado de la sesión"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Permitir que se muestren los mensajes de estado de la sesión cuando la "
+"pantalla está bloqueada."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Permitir cambiar usuario"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Comando de teclado empotrado"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Bloquear al activar"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Comando de cierre de sesión"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Modo de selección del tema del salvapantallas"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Active esto para activar el salvapantallas cuando la sesión esté inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Establezca esto a TRUE para permitir embeber un teclado en la ventana al "
+"intentar desbloquear. La clave \"keyboard_command\" debe estar establecida "
+"con el comando apropiado."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Active esto para bloquear la pantalla cuando se activa el salvapantallas."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Active esto para ofrecer una opción en el diálogo de desbloqueo para cambiar "
+"a una cuenta de usuario diferente."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Active esto para ofrecer una opción en el diálogo de desbloqueo para cerrar "
+"la sesión después de un intervalo de tiempo. El retardo se especifica en la "
+"clave \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"El comando que se ejecutará, si la clave \"embadded_keyboard_enabled\" está "
+"activada, para embeber un widget de teclado dentro de la ventana. Este "
+"comando debería implementar un interfaz XEMBED y sacar una ventana XID en la "
+"salida estándar."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"El comando que invocar cuando se pulsa el botón de cierre de sesión. Este "
+"comando simplemente debe cerrar la sesión del usuario sin ninguna "
+"interacción. Esta clave tiene efecto sólo si la clave \"logout_enable\" está "
+"activada."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"El número de minutos tras la activación del salvapantallas antes de bloquear "
+"la pantalla."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"El número de minutos después de la activación del salvapantallas y antes de "
+"que se muestre la opción de cerrar sesión en el diálogo de desbloqueo. Esta "
+"clave tiene efecto sólo si la clave \"logout_enable\" está activada."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"El número de minutos de inactividad antes de considerar la sesión inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"El número de minutos que se ejecuta antes de cambiar el tema del "
+"salvapantallas."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"El número de segundos de inactividad antes de dar la señal a la gestión de "
+"energía. Esta clave se establece y mantiene por el agente de sesión de "
+"gestión de energía."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"El modo de selección usado por el salvapantallas. Puede ser \"blank-only\" "
+"para activar el salvapantallas sin usar ningún tema, \"single\" para activar "
+"el salvapantallas usando sólo un tema (especificado en la clave \"themes"
+"\" ), y \"random\" para activar el salvapantallas usando un tema aleatorio."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema para el diálogo de bloqueo"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema para usar en el diálogo de bloqueo."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Esta clave especifica la lista de temas que usará el salvapantallas. Se "
+"ignora cuando la clave \"mode\" sea \"blank-only\", debería proporcionar el "
+"nombre del tema cuando \"mode\" es \"single\", y debería proporcionar una "
+"lista de temas cuando \"mode\" es \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tiempo antes de bloquear"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tiempo antes de la opción de cierre de sesión"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tiempo antes de la línea base de gestión de energía"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tiempo antes de que la sesión se considere inactiva"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tiempo antes de cambiar el tema"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Dejar un mensaje para %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U en %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Dejar un mensaje"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Salir"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Cambiar de usuario"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Desbloquear"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Muestra una serie de imágenes del cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Burbujea el logotipo del pie de MATE alrededor de la pantalla"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Pie flotante"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Muestra una serie de imágenes de su carpeta Imágenes"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Carpeta de imágenes"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Esto dibuja una rejilla de cuadros pop-art de colores pulsantes."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Cuadrados pop art"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Mostrar las rutas que siguen las imágenes"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Ocasionalmente rotar las imágenes mientras se mueven"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Imprimir la tasa de fotogramas y otras estadísticas"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "El número máximo de imágenes que mantener en la pantalla"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MÁX_IMÁGENES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "El tamaño inicial y la posición de la ventana"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ANCHURAxALTURA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "La imagen de origen a usar"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "imagen - las imágenes flotan alrededor de la pantalla"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Vea --help para la información de uso.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Debe especificar una imagen. Vea --help para la información de uso.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Lugar del que obtener las imágenes"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "RUTA"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Color a usar para el fondo de las imágenes"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "«#rrggbb»"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "No usar aleatoriamente imágenes de una ubicación"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "No intentar estirar las imágenes en la pantalla"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Copiando archivos"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "A:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Copiando temas"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Tema del salvapantallas inválido"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s no parece ser un tema válido del salvapantallas."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copiando archivo: %u de %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Hace que el salvapantallas termine de forma correcta"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Consulta el estado del salvapantallas"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Consultar cuanto tiempo ha estado activo el salvapantallas"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Le dice al proceso del salvapantallas en ejecución que bloquee la pantalla "
+"inmediatamente"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Si el salvapantallas está activo, cambiar a otra demo gráfica"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Activar el salvapantallas (ennegrecer la pantalla)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Si el salvapantallas está activo entonces lo desactiva (desenegrece la "
+"pantalla)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Similar el salvapantallas en ejecución para similar la actividad del usuario"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inhibir la activación del salvapantallas. El comando se bloquea cuando está "
+"activa la inhibición."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "La aplicación llamante que está inhibiendo el salvapantallas"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "La razón para inhibir el salvapantallas"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versión de esta aplicación"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "El salvapantallas es %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "activo"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "inactivo"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "El salvapantallas no está inhibido\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "El salvapantallas está siendo inhibido por:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr ""
+"El salvapantallas ha estado activo durante %d segundos.\n"
+"\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "Actualmente el salvapantallas no está activo.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Mostrar la salida de depuración"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Mostrar el botón de cerrar sesión"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Comando para invocar desde el botón de cierre de sesión"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Mostrar el botón de cambio de usuario"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Mensaje para mostrar en el diálogo"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MENSAJE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "No usado"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Usuario:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Tiene que cambiar la contraseña inmediatamente (la contraseña caducó)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Tiene que cambiar la contraseña inmediatamente (forzado por el administrador)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Su cuenta ha caducado. Contacte con su administrador de sistemas"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "No introdujo ninguna contraseña"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Contraseña no cambiada"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "No se puede obtener el nombre de usuario"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Vuelva a teclear la contraseña de UNIX nueva:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Introduzca una contraseña UNIX nueva:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Contraseña UNIX (actual):"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Error al cambiar la contraseña NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Debe elegir una contraseña más larga"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "La contraseña ya ha sido usada. Elija otra."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Debe esperar más para cambiar su contraseña"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Las contraseñas no coinciden"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Comprobando…"
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "La autenticación ha fallado."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Oscurecer pantalla"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aleatorio"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hora"
+msgstr[1] "%d horas"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuto"
+msgstr[1] "%d minutos"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segundo"
+msgstr[1] "%d segundos"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s:%s:%s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s:%s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nunca"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "No se pudo cargar el interfaz principal"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Asegúrese de que el salvapantallas está instalado apropiadamente"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "No convertirse en un demonio"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Activar código de depuración"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Lanzar el salvapantallas y el programa de bloqueo"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Incapaz de establecer el servicio %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "No se puede establecer PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Contraseña incorrecta."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "No le está permitido ganar acceso en este instante."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Ya no se le permite acceder en adelante a este sistema."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "falló al registrarse con el bus del mensaje"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "no conectado al bus de mensajes"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "ya se está ejecutando el salvapantallas en esta sesión"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Tiempo agotado."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Tiene la tecla «Bloq. Mayúsculas» pulsada."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Cambiar usuario…"
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Cerrar _sesión"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U en %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Contraseña:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Razón para estar ausente"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "La razón para estar ausente del equipo."
diff --git a/po/et.po b/po/et.po
new file mode 100644
index 0000000..c9521bc
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,600 @@
+# MATE ekraanisäästja eesti keele tõlge.
+# Estonian translation of MATE screensaver.
+#
+# Copyright (C) 2006-2008, The MATE Project.
+# This file is distributed under the same license as the mate-screensaver
+# package.
+#
+# Ivar Smolin <okul at linux.ee>, 2006-2008.
+# Priit Laes <amd at store20.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver 2.30\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2010-04-23 19:08+0000\n"
+"PO-Revision-Date: 2009-09-14 08:57+0300\n"
+"Last-Translator: Ivar Smolin <okul at linux.ee>\n"
+"Language-Team: Estonian <mate-et at linux.ee>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Screensaver"
+msgstr "Ekraanisäästja"
+
+msgid "Set your screensaver preferences"
+msgstr "Ekraanisäästja eelistuste seadmine"
+
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Ekraanisäästja eelvaade</b>"
+
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Hoiatus: ekraanilukustus ei toimi root kasutaja jaoks.</b>"
+
+msgid "Power _Management"
+msgstr "_Vooluhaldus"
+
+msgid "Regard the computer as _idle after:"
+msgstr "Seanss määratakse _jõudeolevaks pärast ajavahemikku:"
+
+msgid "Screensaver Preferences"
+msgstr "Ekraanisäästja eelistused"
+
+msgid "Screensaver Preview"
+msgstr "Ekraanisäästja eelvaade"
+
+msgid "_Activate screensaver when computer is idle"
+msgstr "Kui arvuti on jõude, siis aktiveeritakse e_kraanisäästja"
+
+msgid "_Lock screen when screensaver is active"
+msgstr "Ekraanisäästja aktiveerimisel ekraan _lukustatakse"
+
+msgid "_Preview"
+msgstr "_Eelvaade"
+
+msgid "_Screensaver theme:"
+msgstr "Ekraanisäästja _teema:"
+
+msgid "Screensaver themes"
+msgstr "Ekraanisäästja teemad"
+
+msgid "Screensavers"
+msgstr "Ekraanisäästjad"
+
+msgid "Activate when idle"
+msgstr "Aktiveerimine jõudeolekul"
+
+msgid "Allow embedding a keyboard into the window"
+msgstr "Klaviatuuri aknasse põimimise lubamine"
+
+msgid "Allow logout"
+msgstr "Väljalogimine lubatud"
+
+msgid "Allow the session status message to be displayed"
+msgstr "Seansi olekuteadet tohib kuvada"
+
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Seansi olekuteadet tohib kuvada, kui ekraan on lukustatud."
+
+msgid "Allow user switching"
+msgstr "Kasutaja vahetamine lubatud"
+
+msgid "Embedded keyboard command"
+msgstr "Põimitud klaviatuuri käsk"
+
+msgid "Lock on activation"
+msgstr "Lukustamine aktiveerimisel"
+
+msgid "Logout command"
+msgstr "Väljalogimise käsk"
+
+msgid "Screensaver theme selection mode"
+msgstr "Ekraanisäästja teemavalimise režiim"
+
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Märgi see valik, kui ekraanisäästja tuleb seansi jõudeoleku korral käivitada."
+
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Kui märgitud, siis on ekraani lukust lahtivõtmise aknas põimitud klaviatuur. "
+"Klaviatuuri käsklus on määratud võtmes \"keyboard_command\"."
+
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Märgi see valik, kui ekraanisäästja peab aktiveerumisel ekraani lukustama."
+
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Selle valiku märkimine lisab lahtilukustamise dialoogi valiku teisele "
+"kasutajakontole ümberlülitumiseks."
+
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Selle märkimine lisab lukust lahtivõtmise dialoogile võimaluse pärast "
+"viivitust välja logida. Viivituse kestus määratakse võtmega \"logout_delay\"."
+
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Aknasse klaviatuurividina põimimise käsk, mis käivitatakse kui võti "
+"\"embedded_keyboard_enabled\" on märgitud. See käsk peaks teostama XEMBED "
+"ühendusliidese ja väljastama standardväljundisse akna XID-i."
+
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Käsk, mis käivitatakse väljalogimise nupule klõpsamise korral. Käsk peaks "
+"kasutaja ilma igasuguste interaktsioonideta välja logima. See võti mõjub "
+"ainult juhul, kui \"logout_enable\" võti on märgitud."
+
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Ekraanisäästja tööminutite arv pärast mida ekraan lukustatakse."
+
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Ekraanisäästja aktiveerimisest mööduv aeg (mitutites), pärast mida ilmub "
+"väljalogimise valik lukust lahtivõtmise dialoogi. See võti mõjub ainult "
+"juhul, kui \"logout_enable\" võti on märgitud."
+
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Jõudeoleku minutite arv enne kui seanss hinnatakse jõude olevaks."
+
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Tööminutite arv enne ekraanisäästja teema vahetamist."
+
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Jõudeoleku kestus (sekundites) enne vooluhaldusele (power-management) "
+"signaali saatmist. Seda võtit haldab seansi vooluhalduse agent."
+
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Teemavalimise režiim ekraanisäästja aktiveerimisel. Võimalikud valikud on "
+"\"blank-only\" ekraanisäästja teemade keelamiseks, \"single\" ühe teema "
+"kasutamiseks (määratakse võtmega \"themes\") ja \"random\" juhusliku teema "
+"kasutamiseks."
+
+msgid "Theme for lock dialog"
+msgstr "Lukustusdialoogi teema"
+
+msgid "Theme to use for the lock dialog."
+msgstr "Lukustusdialoogi jaoks kasutatav teema."
+
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Selle võtmega määratakse ekraanisäästja poolt kasutatavate teemade loetelu. "
+"Kui võtme \"mode\" väärtus on \"blank-only\", siis seda eiratakse, kui \"mode"
+"\" väärtus on \"single\", siis peab siin olema teema nimi ja kui \"mode\" "
+"väärtus on \"random\", siis aga teemade loetelu."
+
+msgid "Time before locking"
+msgstr "Aeg enne lukustamist"
+
+msgid "Time before logout option"
+msgstr "Aega enne väljalogimise valiku ilmumist"
+
+msgid "Time before power-management baseline"
+msgstr "Aega enne vooluhalduse aktiveerimist"
+
+msgid "Time before session is considered idle"
+msgstr "Jõudeoleku kestus enne kui seanss hinnatakse jõude olevaks"
+
+msgid "Time before theme change"
+msgstr "Aeg enne teemavahetust"
+
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Sõnumi jätmine kasutajale %R:</b>"
+
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U hostil %h</span>"
+
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+msgid "_Cancel"
+msgstr "_Tühista"
+
+msgid "_Leave Message"
+msgstr "_Jäta sõnum"
+
+msgid "_Log Out"
+msgstr "Logi _välja"
+
+msgid "_Switch User"
+msgstr "Vaheta _kasutajat"
+
+msgid "_Unlock"
+msgstr "_Võta lukust lahti"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+msgid "Cosmos"
+msgstr "Kosmos"
+
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Kosmosepiltide slaidiesituse kuvamine"
+
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE jalajälje logod ekraanil ringi hõljumas"
+
+msgid "Floating Feet"
+msgstr "Hõljuv jalg"
+
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Slaidiesitluse kuvamine Sinu pildikataloogi põhjal"
+
+msgid "Pictures folder"
+msgstr "Pildikataloog"
+
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Popkunstilik pulseerivate värvidega ruudustik."
+
+msgid "Pop art squares"
+msgstr "Popkunstist inspireeritud ruudud"
+
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Lähema teabe saamiseks kasuta --help võtit.\n"
+
+msgid "Show paths that images follow"
+msgstr "Piltide liikumisteede näitamine"
+
+msgid "Occasionally rotate images as they move"
+msgstr "Piltide juhuslik pööramine liikumisel"
+
+msgid "Print out frame rate and other statistics"
+msgstr "Kaadrisageduse ja muu statistika väljastamine"
+
+msgid "The maximum number of images to keep on screen"
+msgstr "Suurim ekraanil hoitavate piltide arv"
+
+msgid "MAX_IMAGES"
+msgstr "MAKS_PILTE"
+
+msgid "The initial size and position of window"
+msgstr "Akna lähtesuurus ja -asukoht"
+
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LAIUSxKÕRGUS+X+Y"
+
+msgid "The source image to use"
+msgstr "Kasutatav lähtepilt"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+msgid "image - floats images around the screen"
+msgstr "pilt - hõljub ekraanil ringi"
+
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Sa pead määrama ühe pilti.  Lähema teabe saamiseks kasuta --help võtit.\n"
+
+msgid "Location to get images from"
+msgstr "Piltide hankimise lähtekoht"
+
+msgid "PATH"
+msgstr "RADA"
+
+msgid "Color to use for images background"
+msgstr "Piltide taustaks kasutatav värvus"
+
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+msgid "Do not randomize pictures from location"
+msgstr "Asukohast ei valita pilte juhuslikus järjekorras"
+
+msgid "Do not try to stretch images on screen"
+msgstr "Pilte ei proovita üle ekraani venitada"
+
+msgid "Copying files"
+msgstr "Failide kopeerimine"
+
+msgid "From:"
+msgstr "Lähtekoht:"
+
+msgid "To:"
+msgstr "Sihtkoht:"
+
+msgid "Copying themes"
+msgstr "Teemade kopeerimine"
+
+msgid "Invalid screensaver theme"
+msgstr "Vigane ekraanisäästja teema"
+
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ei paista olevate korrektne ekraanisäästja teema."
+
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Faili kopeerimine: %u (%u'st)"
+
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Ekraanisäästjat töö lõpetamine (ilma veakoodita)"
+
+msgid "Query the state of the screensaver"
+msgstr "Ekraanisäästja oleku küsimine"
+
+msgid "Query the length of time the screensaver has been active"
+msgstr "Ekraanisäästja aktiivse oleku kestuse küsimine"
+
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Töötavale ekraanisäästja protsessile kohese ekraanilukustamise käsu saatmine"
+
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Kui ekraanisäästja on aktiivne, siis graafilise demo vahetamine"
+
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Ekraanisäästja sisselülitamine (ekraani tühjendamine)"
+
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Kui ekraanisäästja on aktiivne, siis selle deaktiveerimine (ekraani "
+"taastamine)"
+
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Töötava ekraanisäästja torkimine kasutaja aktiivsuse jäljendamiseks"
+
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Ekraanisäästja aktiveerimise keelamine. Käsk blokeerub kui aktiveerimine on "
+"juba keelatud."
+
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Ekraanisäästja aktiveerimist keelava rakenduse nimi"
+
+msgid "The reason for inhibiting the screensaver"
+msgstr "Ekraanisäästja aktiveerimise keelamise selgitus"
+
+msgid "Version of this application"
+msgstr "Selle rakenduse versioon"
+
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Ekraanisäästja on %s\n"
+
+msgid "active"
+msgstr "aktiivne"
+
+msgid "inactive"
+msgstr "aktiveerimata"
+
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Ekraanisäästja on piiramata\n"
+
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Ekraanisäästja on piiratud. Piiraja:\n"
+
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Ekraanisäästja on olnud aktiivne %d sekundit.\n"
+
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Ekraanisäästja ei ole hetkel aktiivne.\n"
+
+msgid "Show debugging output"
+msgstr "Silumisväljundi näitamine"
+
+msgid "Show the logout button"
+msgstr "Väljalogimisnupu näitamine"
+
+msgid "Command to invoke from the logout button"
+msgstr "Väljalogimise nupule klõpsamise korral käivitatav käsk"
+
+msgid "Show the switch user button"
+msgstr "Kasutajate vahel lülitumise nupu näitamine"
+
+msgid "Message to show in the dialog"
+msgstr "Dialoogis näidatav sõnum"
+
+msgid "MESSAGE"
+msgstr "SÕNUM"
+
+msgid "Not used"
+msgstr "Pole kasutusel"
+
+#. login: is whacked always translate to Username:
+msgid "Username:"
+msgstr "Kasutajanimi:"
+
+msgid "Password:"
+msgstr "Parool:"
+
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Sa pead oma parooli koheselt ära vahetama (parool on aegunud)"
+
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Sa pead oma parooli koheselt ära vahetama (administraatori nõue)"
+
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Sinu konto on aegunud, palun võta ühendust oma süsteemiülemaga"
+
+msgid "No password supplied"
+msgstr "Parooli pole antud"
+
+msgid "Password unchanged"
+msgstr "Parool on muutmata"
+
+msgid "Can not get username"
+msgstr "Kasutajanime pole võimalik hankida"
+
+msgid "Retype new UNIX password:"
+msgstr "Sisesta UNIX-i parool uuesti:"
+
+msgid "Enter new UNIX password:"
+msgstr "Sisesta UNIX-i parool:"
+
+msgid "(current) UNIX password:"
+msgstr "(praegune) UNIX-i parool:"
+
+msgid "Error while changing NIS password."
+msgstr "Viga NIS-parooli muutmisel."
+
+msgid "You must choose a longer password"
+msgstr "Sa pead valima pikema parooli"
+
+msgid "Password has been already used. Choose another."
+msgstr "Parool on juba kasutusel. Vali mõni muu parool."
+
+msgid "You must wait longer to change your password"
+msgstr "Parooli muutmiseks pead sa kauem ootama"
+
+msgid "Sorry, passwords do not match"
+msgstr "Vabandust, paroolid ei klapi omavahel"
+
+msgid "Checking..."
+msgstr "Kontrollimine..."
+
+msgid "Authentication failed."
+msgstr "Tõrge autentimisel."
+
+msgid "Blank screen"
+msgstr "Tühi ekraan"
+
+msgid "Random"
+msgstr "Juhuslik"
+
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d tund"
+msgstr[1] "%d tundi"
+
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minut"
+msgstr[1] "%d minutit"
+
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekund"
+msgstr[1] "%d sekundit"
+
+#. hour:minutes:seconds
+#, c-format
+msgid "%s %s %s"
+msgstr "%s:%s:%s"
+
+#. hour:minutes
+#. minutes:seconds
+#, c-format
+msgid "%s %s"
+msgstr "%s:%s"
+
+#. hour
+#. minutes
+#. seconds
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#, c-format
+msgid "Never"
+msgstr "Mitte kunagi"
+
+msgid "Could not load the main interface"
+msgstr "Peamist liidest pole võimalik laadida"
+
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Palun veendu, et ekraanisäästja on korrektselt paigaldatud"
+
+msgid "Don't become a daemon"
+msgstr "Deemoniks ei minda"
+
+msgid "Enable debugging code"
+msgstr "Silumise lubamine"
+
+msgid "Launch screen saver and locker program"
+msgstr "Ekraanisäästmis- ja lukustustamisprogrammi käivitamine"
+
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Teenust %s pole võimalik luua: %s\n"
+
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s pole võimalik seada"
+
+msgid "Incorrect password."
+msgstr "Vigane parool."
+
+msgid "Not permitted to gain access at this time."
+msgstr "Puudvad õigused ligipääsuks praegusel kellaajal"
+
+msgid "No longer permitted to access the system."
+msgstr "Süsteemile ligipääsuks pole enam õiguseid."
+
+msgid "failed to register with the message bus"
+msgstr "tõrge sõnumisiinile registreerumisel"
+
+msgid "not connected to the message bus"
+msgstr "sõnumisiiniga pole ühendust"
+
+msgid "screensaver already running in this session"
+msgstr "ekraanisäästja töötab juba selle seansi raames"
+
+msgid "Time has expired."
+msgstr "Ajapiirang ületati."
+
+msgid "You have the Caps Lock key on."
+msgstr "Sul on Caps Lock klahv sisse lülitatud"
+
+msgid "S_witch User..."
+msgstr "_Vaheta kasutajat..."
+
+msgid "Log _Out"
+msgstr "Logi _välja"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+msgid "%U on %h"
+msgstr "%U hostil %h"
+
+msgid "_Password:"
+msgstr "_Parool:"
diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 0000000..fd26ed4
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,762 @@
+# translation of eu.po to Basque
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Iñaki Larrañaga Murgoitio <dooteo at euskalgnu.org>, 2006, 2007, 2008, 2009, 2010.
+# Iñaki Larrañaga Murgoitio <dooteo at zundan.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: eu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-26 21:02+0200\n"
+"PO-Revision-Date: 2010-03-23 16:13+0100\n"
+"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo at euskalgnu.org>\n"
+"Language-Team: Basque <itzulpena at euskalgnu.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Pantaila-babeslea"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Ezarri pantaila-babeslearen hobespenak"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Pantaila-babeslearen aurrebista</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Abisua: pantaila ezin da 'root' erabiltzailearentzako blokeatu.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Energia _kudeatzailea"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Jarri ordenagailua _inaktibo honen ondoren:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Pantaila-babeslearen hobespenak"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Pantaila-babeslearen aurrebista"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktibatu pantaila-babeslea ordenagailua inaktibo dagoenean"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Blokeatu pantaila pantaila-babeslea aktibatzean"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Aurrebista"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Pantaila-babeslearen gaia:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Pantaila-babeslearen gaiak"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Pantaila-babeslea"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktibatu inaktibo dagoenean"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Baimendu teklatua leihoan kapsulatzea"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Baimendu saio-amaiera"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Baimendu saioaren egoeraren mezua bistaratzea"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "Baimendu saioaren egoeraren mezua bistaratzea pantaila blokeatuta dagoenean."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Baimendu erabiltzaile-aldaketa"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Kapsulatutako teklatu komandoa"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Blokeatu aktibatzean"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Saio-amaierako komandoa"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Pantaila-babeslearen gaiaren hautatze modua"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Ezarri EGIA gisa pantaila-babeslea aktibatzeko saioa inaktibo dagoenean."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Ezarri EGIA gisa teklatua leiho batean desblokeatzen saiatzean kapsulatzea "
+"baimentzeko. \"keyboard_command\" gakoa komando egokiarekin ezarrita egon "
+"behar du."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Ezarri EGIA gisa pantaila blokeatzeko pantaila-babeslea aktibatzera doanean."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Ezarri EGIA gisa desblokeatzeko elkarrizketa-koadroan aukera bat "
+"eskaintzeko, beste erabiltzaile batera aldatzeko."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Ezarri EGIA gisa desblokeatzeko elkarrizketa-koadroan saioa amaitzeko aukera "
+"eskaintzeko, atzerapen baten ondoren. Atzerapena \"logout_delay\" gakoan "
+"zehaztuta dago."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Exekutatu egingo den komandoa, \"embedded_keyboard_enable\" gakoa EGIA gisa "
+"ezartzen bada, teklatuaren trepeta bat leihoan kapsulatzeko. Komando honek "
+"XEMBED interfaze-osagaia garatuta eduki beharko luke, eta irteera "
+"estandarrean XID leihoa marraztu."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Komandoa, saioa amaitzeko botoian klik egitean erabiliko dena. Komando honek "
+"beste interakziorik gabe saioa amaitu beharko luke. Gako honek "
+"\"logout_enable\" EGIA gisa ezartzen bada bakarrik izango du eragina."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "Minutu kopurua, pantaila-babeslea aktibatu eta pantaila blokeatu bitartekoa."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Minutu kopurua, pantaila-babeslea aktibatu eta saioa amaitzeko aukera "
+"desblokeatzeko elkarrizketa-koadroan agertu bitartean. Gako honek "
+"\"logout_enable\" gakoa EGIA gisa ezartzen bada bakarrik izango du eragina."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Inaktibitateko minutu kopurua, saioa inaktibotzat hartu arte."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Minutu kopurua pantaila-babesleko gaia aldatu aurretik exekutatzeko."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Inaktibitateko segundo kopurua, energia kudeatzaileari seinalea bidali arte. "
+"Gako hau saioko energia kudeatzailearen agenteak ezarri eta kudeatzen du."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Pantaila-babesleak erabiltzen duen hautapen modua. \"blank-only\"  izan "
+"daiteke pantaila-babeslea aktibatzean gairik ez erabiltzeko, \"single\" gai "
+"bakarra erabiltzeko pantaila-babeslea aktibatzean (\"themes\" gakoan "
+"zehaztutakoa), edo \"random\" gaiak aldatzen joan dadin pantaila-babeslea "
+"aktibatzean."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Blokeatze-leihoaren gaia"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Gaia blokeatze-leihoan erabiltzeko."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Gako honek gaien zerrenda zehazten du pantaila-babesleak erabiltzeko. Ez "
+"ikusi egingo zaio \"mode\" gakoa \"blank-only\" balioarekin ezarrita "
+"egotean. Gaiaren izena eman behar da \"mode\" gakoa \"single\" denean, eta "
+"gaien zerrenda eman behar da \"random\" denean."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Denbora blokeatu aurretik"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Denbora saioa amaitzeko aukeraren aurretik"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Denbora energia kudeatzailearen oinarri-lerrora heldu arte"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Denbora saioa inaktibotzat hartu arte"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Denbora gaia aldatu aurretik"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Utzi mezua %R(e)ri:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U :: %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Utzi"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Utzi mezua"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Irten saiotik"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Aldatu erabiltzailez"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Desblokeatu"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Bistaratu diapositibak argazki astronomikoekin"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Egin burbuilak MATEren oina logotipoarekin pantailan zehar"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Oin mugikorra"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Bistaratu diapositibak Irudien karpetatik"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Irudiak karpeta"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pop-art-dun sareta kolorezko taupadekin."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop arteko karratuak"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Erakutsi bideak irudiek jarraitzeko"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Batzuetan biratu irudiak hauek mugitzean"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Bistaratu fotograma-tasa eta beste estatistikak"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Gehienezko irudi kopurua pantailan mantentzeko"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "GEH._IRUDIAK"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Leihoaren haserako tamaina eta posizioa"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ZABALERAxALTUERA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Irudiaren iturburua erabiltzeko"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - mugitu irudiak pantailan zehar"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Ikusi --help erabileraren informazioa lortzeko.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Irudi bat zehaztu behar duzu. Ikusi --help erabileraren informazioa "
+"lortzeko.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Helbidea irudiak lortzeko"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "BIDE-IZENA"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Kolorea atzeko planoko irudiek erabiltzeko"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#ggbbuu\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Ez ausaz nahastu irudiak kokalekutik"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ez saiatu irudiak pantailara luzatzen"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Fitxategiak kopiatzen"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Nondik:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Nora:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Gaiak kopiatzen"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Pantaila-babeslearen baliogabeko gaia"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s badirudi ez dela pantaila-babeslearen baliozko gaia."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Fitxategiak kopiatzen: %u / %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Pantaila-babeslea ongi amaitzea eragiten du"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Pantaila-babeslearen egoeraren kontsulta"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Kontsultatu zenbat denbora egon den pantaila-babeslea aktibo"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Exekutatzen ari den pantaila-babeslearen prozesuari pantaila berehala "
+"blokeatzeko esaten dio."
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Pantaila-babeslea aktibo egonez gero, aldatu beste demo grafikora"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Aktibatu pantaila-babeslea (belztu pantaila)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Pantaila-babeslea aktibo egonez gero, desaktibatu (kendu pantaila beltza)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Eskatu pantaila-babesleari erabiltzailearen aktibitatea simulatzeko"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Geldiarazi pantaila-babeslea aktibatzea. Komandoa blokeatu egiten da "
+"geldiaraztea aktibo dagoen heinean."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Pantaila-babeslea geldiarazten duen aplikazioaren deia"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Pantaila-babeslea geldiarazteko arrazoia"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Aplikazio honen bertsioa"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Pantaila-babeslea %s da\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktibo"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inaktibo"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Pantaila-babeslea ez dago geldituta\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Pantaila-babeslea honek gelditu du:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Pantaila-babeslea %d segundo egon da aktibo.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Pantaila-babeslea ez dago unean aktibo.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Erakutsi arazteko irteera"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Erakutsi saioa amaitzeko botoia"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Komandoa, saioa amaitzeko botoiari deitzeko"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Erakutsi erabiltzailez aldatzeko botoia"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Mezua elkarrizketa-koadroan erakusteko"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MEZUA"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Erabili gabe"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Erabiltzaile-izena:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Pasahitza:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Pasahitza berehala aldatu behar duzu (pasahitza zaharkituta)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Pasahitza berehala aldatu behar duzu (erroak behartuta)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Zure kontua iraungitu da; jarri harremanetan sistemako administratzailearekin"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Ez da pasahitzik eman"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Pasahitza ez da aldatu"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Ezin da erabiltzaile-izena lortu"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Idatzi berriro UNIXeko pasahitz berria:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Idatzi UNIXeko pasahitz berria:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(uneko) UNIXeko pasahitza:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Errorea gertatu da NIS pasahitza aldatzean."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Pasahitz luzeagoa aukeratu behar duzu"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Pasahitz hori erabilita dago. Aukeratu beste bat."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Gehiago itxaron behar duzu pasahitza aldatzeko"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Pasahitzak ez datoz bat"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Egiaztatzen..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autentifikazioak huts egin du."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Pantaila beltza"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Ausazkoa"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "ordu %d"
+msgstr[1] "%d ordu"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "minutu %d"
+msgstr[1] "%d minutu"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "segundo %d"
+msgstr[1] "%d segundo"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s:%s:%s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s:%s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Inoiz ere ez"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Ezin izan da interfaze nagusia kargatu"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Ziurtatu pantaila-babeslea ongi instalatuta dagoela"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Ez ezarri daemon gisa"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Gaitu kode arazketa"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Abiarazi pantaila babeslea edo programa blokeatzailea"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Ezin izan da %s zerbitzua ezarri: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Ezin da PAM_TTY=%s konfiguratu"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Okerreko pasahitza."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Ez duzu sarbidetzeko baimenik une honetan."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Ez duzu baimenik aurrerantzean sistemara sarbidetzeko."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "huts egin du mezuaren deia erregistratzean"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "ez da mezuaren deira konektatu"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "pantaila-babeslea jadanik exekutatzen dago saio honetan"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Denbora iraungitu egin da."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Blok.maius. aktibatuta dago"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Aldatu erabiltzailez..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Amaitu saioa..."
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U :: %s"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Pasahitza:"
+
diff --git a/po/fa.po b/po/fa.po
new file mode 100644
index 0000000..30becfa
--- /dev/null
+++ b/po/fa.po
@@ -0,0 +1,938 @@
+# Persain translation of mate-screensaver
+# Copyright (C) 2006 Sharif FarsiWeb, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Elnaz Sarbar <elnaz at farsiweb.info>, 2006.
+# Meelad Zakaria <meelad at farsiweb.info>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-04 03:56+0200\n"
+"PO-Revision-Date: 2006-09-04 17:02+0330\n"
+"Last-Translator: Meelad Zakaria <meelad at farsiweb.info>\n"
+"Language-Team: Persian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "محافظ صفحهٔ نمایش"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "ترجیحات محافظ صفحهٔ نمایش خود را تنظیم کنید"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>پیش‌نمایش محافظ صفحهٔ نمایش</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>اخطار: صفحهٔ نمایش کاربر root قفل نخواهد شد.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Regard the computer as _idle after:"
+msgstr "کامپیوتر پس از این مدت _بی‌کار فرض شود:"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Screensaver Preferences"
+msgstr "ترجیحات محافظ صفحهٔ نمایش"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preview"
+msgstr "پیش‌نمایش محافظ صفحهٔ نمایش"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "_Activate screensaver when computer is idle"
+msgstr "_فعال کردن محافظ صفحهٔ نمایش وقتی کامپیوتر بی‌کار است"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Lock screen when screensaver is active"
+msgstr "_قفل کردن صفحهٔ‌ نمایش وقتی محافظ صفحهٔ نمایش فعال می‌شود"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Preview"
+msgstr "_پیش‌نمایش"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Screensaver theme:"
+msgstr "_تم محافظ صفحهٔ نمایش:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver themes"
+msgstr "تم‌های محافظ صفحهٔ نمایش"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "محافظ‌های صفحهٔ نمایش"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "فعال شدن زمان بی‌کاری"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "تعیبهٔ صفحه‌کلید در پنجره مجاز باشد"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "خروج از سیستم مجاز باشد"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "تعویض کاربر مجاز باشد"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "فرمان صفحه‌کلید توکار"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "قفل کردن هنگام فعال‌سازی"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "فرمان خروج از سیستم"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Screensaver theme selection mode"
+msgstr "حالت انتخاب تم محافظ صفحهٔ نمایش"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "برای فعال شدن محافظ صفحهٔ نمایش هنگام بی‌کار بودن نشست، این کلید را روی درست تنظیم کنید."
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"برای مجاز بودن تعبیهٔ صفحه‌کلید در پنجره هنگام تلاش برای باز کردن قفل، این کلید را روی درست تنظیم"
+"کنید. کلید «keyboard_command» باید با فرمان مناسبی تنظیم شده باشد."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "برای قفل شدن صفحهٔ نمایش هنگام فعال شدن محافظ صفحهٔ نمایش، این کلید را روی درست تنظیم کنید."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"برای نمایش گزینه‌ای برای تعویض به حساب یک کاربر دیگر در محاورهٔ باز کردن قفل، این کلید را روی درست تنظیم کنید."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"برای نمایش گزینه‌ای برای خروج با تأخیر از سیستم در محاورهٔ باز کردن قفل این را روی درست تنظیم کنید."
+"تأخیر در کلید «logout_delay» تعیین می‌شود."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"فرمانی که در صورت تنظیم کلید «embedded_keyboard_enabled» روی درست، برای تعبیهٔ "
+"ویجت صفحه‌کلید در پنجره، اجرا خواهد شد. این فرمان باید یک واسط اتصال XEMBED را پیاده‌سازی"
+"کند و خروجی‌اش یک XID پنجره روی خروجی استاندارد باشد."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"فرمانی که هنگام کلیک روی دکمهٔ خروج از سیستم فراخوانی می‌شود. این فرمان باید به سادگی کاربر را "
+"بدون هیچ تعاملی از سیستم خارج کند. این کلید زمانی تأثیرگذار است که کلید «ogout_enable»"
+" روی درست تنظیم شده باشد."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "تعداد دقایقی که محافظ صفحهٔ نمایش فعال است و پس از آن که صفحهٔ نمایش قفل می‌شود."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"تعداد دقایقی که محافظ صفحهٔ نمایش فعال است و پس از آن گزینه‌ای برای خروج از سیستم در"
+"محاورهٔ باز کردن قفل ظاهر می‌شود. این کلید زمانی تأثیرگذار خواهد بود که کلید «logout_enable» "
+"روی درست تنظیم شده باشد."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "تعداد دقایق بی‌کاری که نشست پس از آن بی‌کار فرض می‌شود."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "تعداد دقایق بین تغییر تم محافظ صفحهٔ نمایش."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"حالت انتخابی که محافظ صفحهٔ نمایش استفاده می‌کند. مقادیر ممکن «blank-only» که در این صورت محافظ صفحهٔ "
+"نمایش بدون استفاده از هیچ تمی هنگام فعال‌سازی به کار می‌افتد، «single» که در این صورت محافظ صفحهٔ نمایش "
+"هنگام فعال‌سازی تنها  برای استفاده از یک تم (که در کلید «themes» مشخص شده است) به کار می‌افتد، و «random» که در این صورت "
+"محافظ صفحهٔ نمایش هنگام فعال‌سازی از یک تم تصادفی استفاده می‌کند."
+
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "Theme for lock dialog"
+msgstr "تم محاورهٔ قفل"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "Theme to use for the lock dialog."
+msgstr "تمی که برای محاورهٔ قفل استفاده می‌شود."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"این کلید فهرست تم‌هایی را که محافظ صفحهٔ نمایش استفاده می‌کند مشخص می‌کند. هر وقت که کلید «mode» "
+"روی «blank-only» تنظیم شده باشد نادیده گرفته می‌شود،‌ زمانی که کلید «mode» روی «single» تنظیم"
+" شده باشد نام تم مورد استفاده را ارائه می‌دهد، و زمانی که «mode» روی «random» تنظیم شده است فهرستی از تم‌ها ارائه می‌کند."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Time before activation"
+msgstr "زمان تا فعال‌سازی"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Time before locking"
+msgstr "زمان تا قفل کردن"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "Time before logout option"
+msgstr "زمان تا نمایش گزینهٔ خروج از سیستم"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before theme change"
+msgstr "فاصلهٔ زمانی تغییر تم"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U روی %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:5 ../src/mate-screensaver-dialog.c:172
+#: ../src/mate-screensaver-dialog.c:173
+msgid "Password:"
+msgstr "گذرواژه:"
+
+#: ../data/lock-dialog-default.glade.h:6 ../src/gs-lock-plug.c:1707
+msgid "S_witch to user:"
+msgstr "ت_عویض به کاربر:"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "ان_صراف"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Log Out"
+msgstr "_خروج از سیستم"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Switch User..."
+msgstr "_ت_عویض کاربر..."
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch user..."
+msgstr "ت_عویض کاربر..."
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1436
+msgid "_Unlock"
+msgstr "_باز کردن قفل"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "حباب‌پراکنی از لوگوی پای گنوم در اطراف صفحهٔ نمایش"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "پاهای شناور"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "کیهان"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "اسلایدهایی از تصاویر کیهان نمایش داده شود"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "اسلایدهایی از پوشهٔ تصاویر شما نمایش داده شود"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "پوشهٔ تصاویر"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "چهارخانه‌ای با رنگ‌های تپنده به سبک هنر پاپ."
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "مربع‌های پاپ"
+
+#: ../savers/floaters.c:1166
+msgid "show paths that images follow"
+msgstr "نمایش مسیرهایی که تصاویر طی می‌کنند"
+
+#: ../savers/floaters.c:1173
+msgid "occasionally rotate images as they move"
+msgstr "چرخاندن گه‌گاه تصاویر در حال حرکت"
+
+#: ../savers/floaters.c:1180
+msgid "print out frame rate and other statistics"
+msgstr "چاپ سرعت چارچوب و آمار دیگر"
+
+#: ../savers/floaters.c:1188
+msgid "the maximum number of images to keep on screen"
+msgstr "حداکثر تعداد تصاویری که روی صفحه می‌مانند"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1192
+msgid "N"
+msgstr "n"
+
+#: ../savers/floaters.c:1199
+msgid "the source image to use"
+msgstr "منبع تصویر مورد استفاده"
+
+#: ../savers/floaters.c:1206
+msgid "the initial size and position of window"
+msgstr "اندازه و موقعیت اولیهٔ پنجره"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1211
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "عرضxارتفاع+x+y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1229
+msgid "image - floats images around the screen"
+msgstr "image - تصاویر را اطراف صفحهٔ نمایش شناور می‌کند"
+
+#: ../savers/floaters.c:1239
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s.  برای اطلاعات در مورد طرز استفاده --help را ببینید.\n"
+
+#: ../savers/floaters.c:1248
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "باید یک تصویر مشخص کنید.  برای اطلاعات  در مورد استفاده --help را ببینید.\n"
+
+#: ../savers/slideshow.c:47
+msgid "Location to get images from"
+msgstr "محل گرفتن تصاویر"
+
+#: ../savers/slideshow.c:47
+msgid "PATH"
+msgstr "مسیر"
+
+#: ../src/cut-n-paste/fusa-display.c:119 ../src/cut-n-paste/fusa-user.c:150
+msgid "Manager"
+msgstr "مدیر"
+
+#: ../src/cut-n-paste/fusa-display.c:120
+msgid "The manager which owns this object."
+msgstr "مدیری که مالک این شیء است."
+
+#: ../src/cut-n-paste/fusa-display.c:127
+msgid "Name"
+msgstr "نام"
+
+#: ../src/cut-n-paste/fusa-display.c:128
+msgid "The name of the X11 display this object refers to."
+msgstr "نام صفحهٔ نمایش X11 که این شیء متعلق به آن است."
+
+#: ../src/cut-n-paste/fusa-display.c:134
+#: ../src/cut-n-paste/fusa-user-menu-item.c:163
+msgid "User"
+msgstr "کاربر"
+
+#: ../src/cut-n-paste/fusa-display.c:135
+msgid "The user currently logged in on this virtual terminal."
+msgstr "کاربری که در حال حاضر وارد این پایانهٔ مجازی شده است."
+
+#: ../src/cut-n-paste/fusa-display.c:141
+msgid "Console"
+msgstr "پیشانه"
+
+#: ../src/cut-n-paste/fusa-display.c:142
+msgid "The number of the virtual console this display can be found on, or %-1."
+msgstr "شمارهٔ پیشانهٔ مجازی‌ای که این نمایش روی آن پیدا می‌شود، یا %-1."
+
+#: ../src/cut-n-paste/fusa-display.c:148
+msgid "Nested"
+msgstr "تو در تو"
+
+#: ../src/cut-n-paste/fusa-display.c:149
+msgid "Whether or not this display is a windowed (Xnest) display."
+msgstr "این که این صفحهٔ نمایش پنجره‌دار (Xnest) است یا نه."
+
+#: ../src/cut-n-paste/fusa-manager.c:1453
+msgid "The display manager could not be contacted for unknown reasons."
+msgstr "تماس با مدیر نمایش به دلایل نامعلومی ممکن نیست."
+
+#: ../src/cut-n-paste/fusa-manager.c:1460
+msgid "The display manager is not running or too old."
+msgstr "مدیر نمایش در حال اجرا نیست یا خیلی قدیمی است."
+
+#: ../src/cut-n-paste/fusa-manager.c:1463
+msgid "The configured limit of flexible servers has been reached."
+msgstr "تعداد کارگزارهای انعطاف‌پذیر به حد نصاب پیکربندی شده رسید."
+
+#: ../src/cut-n-paste/fusa-manager.c:1466
+msgid "There was an unknown error starting X."
+msgstr "هنگام راه‌اندازی X خطای نامعلومی رخ داد."
+
+#: ../src/cut-n-paste/fusa-manager.c:1469
+msgid "The X server failed to finish starting."
+msgstr "پایان راه‌اندازی کارگزار X شکست خورد."
+
+#: ../src/cut-n-paste/fusa-manager.c:1472
+msgid "There are too many X sessions running."
+msgstr "تعداد نشست‌های در حال اجرای X خیلی زیاد است."
+
+#: ../src/cut-n-paste/fusa-manager.c:1475
+msgid "The nested X server (Xnest) cannot connect to your current X server."
+msgstr "کارگزار X تو در تو (Xnest) نمی‌تواند با کارگزار X فعلی شما ارتباط برقرار کند."
+
+#: ../src/cut-n-paste/fusa-manager.c:1478
+msgid "The X server in the MDM configuration could not be found."
+msgstr "کارگزار X پیکربندی MDM پیدا نشد."
+
+#: ../src/cut-n-paste/fusa-manager.c:1481 ../src/cut-n-paste/mdmcomm.c:492
+msgid ""
+"Trying to set an unknown logout action, or trying to set a logout action "
+"which is not available."
+msgstr ""
+ "کنش خروج از سیستمی که در حال تلاش برای تنظمیش هستید نامعلوم است یا موجود نیست."
+
+#: ../src/cut-n-paste/fusa-manager.c:1484 ../src/cut-n-paste/mdmcomm.c:495
+msgid "Virtual terminals not supported."
+msgstr "پایانه‌های مجازی پشتیبانی نمی‌شوند."
+
+#: ../src/cut-n-paste/fusa-manager.c:1487
+msgid "Invalid virtual terminal number."
+msgstr "تعداد پایانه‌های مجازی نامعتبر است."
+
+#: ../src/cut-n-paste/fusa-manager.c:1490 ../src/cut-n-paste/mdmcomm.c:499
+msgid "Trying to update an unsupported configuration key."
+msgstr "در حال تلاش برای به‌هنگام‌سازی یک کلید پیکربندی پشتیبانی نشده."
+
+#: ../src/cut-n-paste/fusa-manager.c:1493
+msgid "~/.Xauthority file badly configured or missing."
+msgstr "پروندهٔ ‎~/.Xauthority بد پیکربندی شده است یا وجود ندارد."
+
+#: ../src/cut-n-paste/fusa-manager.c:1496
+msgid "Too many messages were sent to the display manager, and it hung up."
+msgstr "تعداد پیغام‌های فرستاده شده برای مدیر نمایش خیلی زیاد بود و دیگر جواب ما را نمی‌دهد."
+
+#: ../src/cut-n-paste/fusa-manager.c:1500
+msgid "The display manager sent an unknown error message."
+msgstr "مدیر نمایش پیغام خطای نامعلومی فرستاده است."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:164
+msgid "The user this menu item represents."
+msgstr "کاربری که این مورد منو نمایندهٔ اوست."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:171
+msgid "Icon Size"
+msgstr "اندازهٔ شمایل"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:172
+msgid "The size of the icon to use."
+msgstr "اندازهٔ شمایل مورد استفاده."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:178
+msgid "Indicator Size"
+msgstr "اندازهٔ شاخص"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:179
+msgid "Size of check indicator"
+msgstr "اندازهٔ شاخص نشان"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:184
+msgid "Indicator Spacing"
+msgstr "فضای شاخص"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:185
+msgid "Space between the username and the indicator"
+msgstr "فضای بین نام کاربری و شاخص"
+
+#: ../src/cut-n-paste/fusa-user.c:151
+msgid "The user manager object this user is controlled by."
+msgstr "شیٔ مدیر کاربری که این کاربر توسط آن کنترل می‌شود."
+
+#: ../src/cut-n-paste/fusa-utils.c:80
+msgid "Show Details"
+msgstr "نمایش جزئیات"
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:413
+msgid "MDM (The MATE Display Manager) is not running."
+msgstr "مدیر نمایش گنوم (MDM) در حال اجرا نیست."
+
+#: ../src/cut-n-paste/mdmcomm.c:416
+msgid ""
+"You might in fact be using a different display manager, such as KDM (KDE "
+"Display Manager) or xdm."
+msgstr "ممکن است در حال استفاده از مدیر نمایش دیگری مثلاً مدیر نمایش KDE (KDM) یا xdm باشید."
+
+#: ../src/cut-n-paste/mdmcomm.c:419
+msgid ""
+"If you still wish to use this feature, either start MDM yourself or ask your "
+"system administrator to start MDM."
+msgstr ""
+"اگر هنوز می‌خواهید از این امکان استفاده کنید خودتان MDM را راه‌اندازی کنید یا از مدیر سیستمتان بخواهید MDM را راه‌اندازی کند."
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:441
+msgid "Cannot communicate with MDM (The MATE Display Manager)"
+msgstr "ارتباط با مدیر نمایش گنوم(MDM) ممکن نیست"
+
+#: ../src/cut-n-paste/mdmcomm.c:444
+msgid "Perhaps you have an old version of MDM running."
+msgstr "ممکن است یک نسخهٔ قدیمی MDM در حال اجرا باشد."
+
+#: ../src/cut-n-paste/mdmcomm.c:463 ../src/cut-n-paste/mdmcomm.c:466
+msgid "Cannot communicate with mdm, perhaps you have an old version running."
+msgstr "ارتباط با mdm ممکن نیست، احتمالاً نسخهٔ اجرا شده قدیمی است."
+
+#: ../src/cut-n-paste/mdmcomm.c:469
+msgid "The allowed limit of flexible X servers reached."
+msgstr "تعداد کارگزارهای انعطاف‌پذیر X ‌به حد نصاب مجاز رسید."
+
+#: ../src/cut-n-paste/mdmcomm.c:471
+msgid "There were errors trying to start the X server."
+msgstr "هنگام تلاش برای راه‌اندازی کارگزار X خطاهایی رخ داد." 
+
+#: ../src/cut-n-paste/mdmcomm.c:473
+msgid "The X server failed.  Perhaps it is not configured well."
+msgstr "کارگزار X شکست خورد. احتمالاً خوب پیکربندی نشده است."
+
+#: ../src/cut-n-paste/mdmcomm.c:476
+msgid "Too many X sessions running."
+msgstr "نشست‌های X در حال اجرا خیلی زیاد است."
+
+#: ../src/cut-n-paste/mdmcomm.c:478
+msgid ""
+"The nested X server (Xnest) cannot connect to your current X server.  You "
+"may be missing an X authorization file."
+msgstr ""
+"کارگزار X تو در تو (Xnest) نمی‌تواند با کارگزار X فعلی شما ارتباط برقرار کند. شاید یک پروندهٔ تأیید هویت X روی سیستمتان وجود ندارد."
+
+#: ../src/cut-n-paste/mdmcomm.c:483
+msgid ""
+"The nested X server (Xnest) is not available, or mdm is badly configured.\n"
+"Please install the Xnest package in order to use the nested login."
+msgstr ""
+"کارگزار X تو در تو (Xnest) موجود نیست، یا مدیر نمایش گنوم بد پیکربندی شده است.\n"
+"لطفاً بستهٔ Xnest را نصب کنید تا بتوانید از ورود تو در تو به سیستم استفاده کنید."
+
+#: ../src/cut-n-paste/mdmcomm.c:488
+msgid ""
+"The X server is not available, it is likely that mdm is badly configured."
+msgstr "کارگزار X موجود نیست، ممکن است mdm بد پیکربندی شده باشد."
+
+#: ../src/cut-n-paste/mdmcomm.c:497
+msgid "Trying to change to an invalid virtual terminal number."
+msgstr "تعداد پایانه‌های مجازی‌ای که می‌خواهید تنظیم کنید نامعتبر است."
+
+#: ../src/cut-n-paste/mdmcomm.c:501
+msgid ""
+"You do not seem to have authentication needed be for this operation.  "
+"Perhaps your .Xauthority file is not set up correctly."
+msgstr ""
+"به نظر می‌رسد شما تأیید هویت لازم برای این عملیات را ندارید. ممکن است پروندهٔ ‎.Xauthority "
+"درست برپاسازی نشده باشد."
+
+#: ../src/cut-n-paste/mdmcomm.c:505
+msgid "Too many messages were sent to mdm and it hung upon us."
+msgstr "پیغام‌های زیادی برای mdm فرستاده شد و دیگر جواب نمی‌دهد."
+
+#: ../src/cut-n-paste/mdmcomm.c:508
+msgid "Unknown error occurred."
+msgstr "خطای نامعلومی رخ داد."
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "در حال نسخه‌برداری پروندهٔ: %Iu از %Iu"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "در حال نسخه‌برداری از «%s»"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "از نشانی اینترنتی"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "نشانی در حال حاضر از اینجا می‌آید"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "به نشانی اینترنتی"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "نشانی در حال حاضر به اینجا می‌رود"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr ""
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr ""
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "نمایهٔ نشانی اینترنتی فعلی"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "نمایهٔ نشانی اینترنتی فعلی ـ از ۱ شروع می‌شود"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "مجموع نشانی‌های اینترنتی"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "تعداد کل نشانی‌های اینترنتی"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "در حال نسخه‌برداری از پرونده‌ها"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "از:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "به:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "در حال اتصال..."
+
+#: ../src/mate-screensaver-command.c:61
+msgid "Causes the screensaver to exit gracefully"
+msgstr "باعث می‌شود محافظ صفحهٔ نمایش به آرامی خارج شود"
+
+#: ../src/mate-screensaver-command.c:63
+msgid "Query the state of the screensaver"
+msgstr "پرس‌وجو از وضعیت محافظ صفحهٔ نمایش"
+
+#: ../src/mate-screensaver-command.c:65
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "به فراروند در حال اجرای محافظ صفحهٔ نمایش خبر می‌دهد که صفحهٔ نمایش را بلافاصله قفل کند"
+
+#: ../src/mate-screensaver-command.c:67
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "اگر محافظ صفحهٔ نمایش فعال است گرافیک در حال نمایش تعویض شود"
+
+#: ../src/mate-screensaver-command.c:69
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "محافظ صفحهٔ نمایش روشن شود (صفحهٔ نمایش خالی شود)"
+
+#: ../src/mate-screensaver-command.c:71
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "اگر محافظ صفحهٔ نمایش فعال است، غیر فعال شود. (صفحهٔ نمایش از خالی بودن درآید)"
+
+#: ../src/mate-screensaver-command.c:73
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:75
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "از فعال شدن محافظ صفحهٔ نمایش ممانعت شود. هنگام ممانعت، فرمان مسدود می‌شود."
+
+#: ../src/mate-screensaver-command.c:77
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "برنامه‌ای که از فعالیت محافظ صفحهٔ نمایش ممانعت می‌کند"
+
+#: ../src/mate-screensaver-command.c:79
+msgid "The reason for inhibiting the screensaver"
+msgstr "دلیل ممانعت از اجرای محافظ صفحهٔ نمایش"
+
+#: ../src/mate-screensaver-command.c:81 ../src/mate-screensaver-dialog.c:54
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "نسخهٔ این برنامه"
+
+#: ../src/mate-screensaver-command.c:246
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "محافظ صفحهٔ نمایش %s است\n"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "active"
+msgstr "فعال"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "inactive"
+msgstr "غیرفعال"
+
+#: ../src/mate-screensaver-dialog.c:52
+msgid "Show debugging output"
+msgstr "نمایش خروجی اشکال‌زدایی"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show the logout button"
+msgstr "نمایش دکمهٔ خروج از سیستم"
+
+#: ../src/mate-screensaver-dialog.c:58
+msgid "Command to invoke from the logout button"
+msgstr "فرمانی که از دکمهٔ خروج از سیستم فراخوانی می‌شود"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the switch user button"
+msgstr "نمایش دکمهٔ تعویض کاربر"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:169 ../src/mate-screensaver-dialog.c:170
+#: ../src/mate-screensaver-dialog.c:171 ../src/gs-auth-pam.c:380
+msgid "Username:"
+msgstr "نام کاربری:"
+
+#: ../src/mate-screensaver-dialog.c:174
+msgid "You are required to change your password immediately (password aged)"
+msgstr "لازم است گذرواژه‌تان را بلافاصله تغییر دهید (گذرواژه قدیمی است)"
+
+#: ../src/mate-screensaver-dialog.c:175
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "لازم است گذرواژه‌تان را بلافاصله تغییر دهید (اجبار مدیر)"
+
+#: ../src/mate-screensaver-dialog.c:176
+msgid "Your account has expired; please contact your system administrator"
+msgstr "حساب شما منقضی شده است، لطفاً با مدیر سیستم تماس بگیرید"
+
+#: ../src/mate-screensaver-dialog.c:177
+msgid "No password supplied"
+msgstr "گذرواژه‌ای داده نشد"
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "Password unchanged"
+msgstr "گذرواژه تغییر نکرد"
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "Can not get username"
+msgstr "گرفتن نام کاربر ممکن نیست"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Retype new UNIX password:"
+msgstr "گذرواژهٔ یونیکسی جدید را دوباره وارد کنید:"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "Enter new UNIX password:"
+msgstr "گذرواژهٔ یونیکس جدید را وارد کنید:"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "(current) UNIX password:"
+msgstr "گذرواژهٔ یونیکس (فعلی):"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "Error while changing NIS password."
+msgstr "خطا هنگام تغییر گذرواژهٔ NIS"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You must choose a longer password"
+msgstr "باید گذرواژهٔ بلندتری انتخاب کنید"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Password has been already used. Choose another."
+msgstr "گذرواژه قبلاً استفاده شده است. از گذرواژهٔ دیگری استفاده کنید."
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "You must wait longer to change your password"
+msgstr "برای تغییر گذرواژه‌تان باید بیشتر صبر کنید"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Sorry, passwords do not match"
+msgstr "ببخشید، گذرواژه‌ها مطابقت ندارند"
+
+#: ../src/mate-screensaver-dialog.c:250
+msgid "Checking..."
+msgstr "در حال بررسی..."
+
+#: ../src/mate-screensaver-dialog.c:289 ../src/gs-auth-pam.c:320
+msgid "Authentication failed."
+msgstr "تأیید هویت شکست خورد."
+
+#: ../src/mate-screensaver-preferences.c:447
+msgid "Blank screen"
+msgstr "صفحهٔ نمایش خالی"
+
+#: ../src/mate-screensaver-preferences.c:453
+msgid "Random"
+msgstr "تصادفی"
+
+#: ../src/mate-screensaver-preferences.c:813
+msgid "Invalid screensaver theme"
+msgstr "تم محافظ صفحهٔ نمایش نامعتبر"
+
+#: ../src/mate-screensaver-preferences.c:816
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "این پرونده تم محافظ صفحهٔ نمایش معتبری به نظر نمی‌رسد."
+
+#: ../src/mate-screensaver-preferences.c:943
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%Id ساعت"
+
+#: ../src/mate-screensaver-preferences.c:946
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%Id دقیقه"
+
+#: ../src/mate-screensaver-preferences.c:949
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%Id ثانیه"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:955
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:958
+#: ../src/mate-screensaver-preferences.c:966
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:961
+#: ../src/mate-screensaver-preferences.c:969
+#: ../src/mate-screensaver-preferences.c:973
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:988
+msgid "Never"
+msgstr "هرگز"
+
+#: ../src/mate-screensaver-preferences.c:1373
+msgid "Could not load the main interface"
+msgstr "نمی‌توان واسط اصلی را بار  کرد"
+
+#: ../src/mate-screensaver-preferences.c:1375
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "لطفاً بررسی کنید که محافظ صفحهٔ نمایش درست نصب شده باشد"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "شبح نشود"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "اشکال‌زدایی کُد به کار انداخته شود"
+
+#: ../src/gs-auth-pam.c:262
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "بر پا کردن سرویس %s ممکن نیست: %s\n"
+
+#: ../src/gs-auth-pam.c:288
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "نمی‌توان PAM_TTY=%s را تنظیم کرد"
+
+#: ../src/gs-auth-pam.c:318
+msgid "Incorrect password."
+msgstr "گذرواژه نادرست است"
+
+#: ../src/gs-auth-pam.c:334
+msgid "Not permitted to gain access at this time."
+msgstr "اجازهٔ دسترسی این بار داده نشده است."
+
+#: ../src/gs-auth-pam.c:340
+msgid "No longer permitted to access the system."
+msgstr "دیگر اجازهٔ دسترسی به سیستم را ندارد."
+
+#: ../src/gs-listener-dbus.c:1631
+msgid "failed to register with the message bus"
+msgstr "ثبت نام در گذرگاه پیغام شکست خورد"
+
+#: ../src/gs-listener-dbus.c:1641
+msgid "not connected to the message bus"
+msgstr "به گذرگاه پیغام متصل نیست"
+
+#: ../src/gs-listener-dbus.c:1650
+msgid "screensaver already running in this session"
+msgstr "محافظ صفحهٔ نمایش از قبل در این نشست در حال اجرا است"
+
+#: ../src/gs-lock-plug.c:336
+msgid "Time has expired."
+msgstr "زمان منقضی شد."
+
+#: ../src/gs-lock-plug.c:366
+msgid "You have the Caps Lock key on."
+msgstr "کلید قفل تبدیل روشن است."
+
+#: ../src/gs-lock-plug.c:1418 ../src/gs-lock-plug.c:1455
+msgid "S_witch User..."
+msgstr "ت_عویض کاربر..."
+
+#: ../src/gs-lock-plug.c:1426
+msgid "Log _Out"
+msgstr "_خروج از سیستم"
+
+#: ../src/gs-lock-plug.c:1617
+msgid "%U on %h"
+msgstr "%U روی %h"
+
+#: ../src/gs-lock-plug.c:1631
+msgid "_Password:"
+msgstr "_گذرواژه:"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..03b9ecd
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,1142 @@
+# Finnish messages for mate-screensaver package.
+# Copyright (C) 2005-2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Tommi Vainikainen <Tommi.Vainikainen at iki.fi>, 2005, 2009.
+# Ilkka Tuohela <hile at iki.fi>, 2005-2009.
+# Timo Jyrinki <timo.jyrinki at iki.fi>, 2008
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-12 21:34+0300\n"
+"PO-Revision-Date: 2009-09-12 21:33+0300\n"
+"Last-Translator: Tommi Vainikainen <thv at iki.fi>\n"
+"Language-Team: Finnish <mate-fi-laatu at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Näytönsäästäjä"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Aseta näytönsäästäjän asetukset"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Näytönsäästäjän esikatselu</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Varoitus: näyttöä ei lukita pääkäyttäjälle (root).</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Virran_hallinta"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Näytönsäästäjän _käynnistysviive:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Näytönsäästäjän asetukset"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Näytönsäästäjän esikatselu"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Käynnistä näytönsäästäjä, kun tietokone on joutilas"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Lukitse näyttö, kun näytönsäästäjä on aktiivinen"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Esikatselu"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Näytönsäästäjän teema:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Näytönsäästäjän teemat"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Näytönsäästäjät"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Käynnistä joutilaana"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Salli näppäimistön upottaminen ikkunaan"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Salli uloskirjautuminen"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Salli istunnon tilaviestin näyttäminen"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Salli istunnon tilaviestin näyttäminen, kun istunto on lukittu."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Salli käyttäjän vaihto"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Upotetun näppäimistön komento"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Lukitse aktivoitaessa"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Uloskirjautumiskomento"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Näytönsäästäjän teeman valinta"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Aseta todeksi, jos haluat käynnistää näytönsäästäjän, kun istunto ei ole "
+"käytössä."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Aseta arvoksi TRUE, jos haluat sallia näppäimistön upottamisen ikkunaan "
+"yritettäessä avata lukitusta. Avaimen \"keyboard_command\" arvon tulee olla "
+"asetettu sisältämään haluttu komento."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Aseta todeksi, jos haluat lukita näytön näytönsäästäjän aktivoituessa."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Aseta todeksi, jos haluat lukituksen avausikkunan näyttävän valinnan, josta "
+"voi vaihtaa toiseksi käyttäjäksi."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Aseta todeksi, jos haluat lukituksen avausikkunan näyttävä valinnan, josta "
+"käyttäjän voi kirjata ulos järjestelmästä tietyn ajan kuluttua. Viiveen voi "
+"asettaa avaimesta \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Suoritettava komento näppäimistön upottamiseksi ikkunaan, kun avaimen "
+"\"embedded_keyboard_enabled\" arvo on TRUE. Tämän komennon täytyy toteuttaa "
+"XEMBED-liitännäisrajapinta ja muodostaa ikkunan XID oletussyötteeseen."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Uloskirjautumispainiketta painettaessa suoritettava komento . Tämän komennon "
+"tulee kirjata käyttäjä ulos vaatimatta mitään toimenpiteitä. Avain on "
+"käytössä vain silloin, kun avain \"logout_enable\" on asetettu arvoon TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Kuinka monen minuutin kuluttua näytönsäästäjän aktivoinnista näyttö lukitaan."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Kuinka monen minuutin kuluttua näytönsäästäjän aktivoinnista lukituksen "
+"avausikkunaan lisätään uloskirjautumispainike. Tämä avain on käytössä vain "
+"silloin, kun avain \"logout_enable\" on asetettu arvoon TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Kuinka monen minuutin kuluttua istunnon katsotaan olevan jouten."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Kuinka pitkän joutenolon kuluttua näytönsäästäjän teemaa vaihdetaan."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Aika sekunteja, jonka jälkeen virranhallintaa signaloidaan. Tämän avaimen "
+"asettaa ja sitä ylläpitää istunnon virranhallinnan ohjaaja."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Näytönsäästäjän valintatila. Arvo voi olla joko \"blank-only\", jolloin "
+"näytönsäästäjä käynnistetään ilman teemaa, \"single\", jolloin "
+"näytönsäästäjä näyttää aina \"themes\" avaimessa valittua näytönsäästäjää, "
+"tai \"random\", jolloin näytönsäästäjä valitsee näytettävän teeman "
+"satunnaisesti."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Lukitusikkunan teema"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Lukitusikkunan näyttämisessä käytettävä teema."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Tämä avain määrittelee näytönsäästäjän käyttämät teemat. Arvolla ei ole "
+"vaikutusta, jos avain \"mode\" on joko \"disabled\" tai \"blank-only\". Sen "
+"tulee sisältää teeman nimen, kun arvo on \"single\", ja sen tulee sisältää "
+"lista teemoista, kun \"mode\"-avaimen arvo on \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Viive ennen lukitsemista"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Viive ennen uloskirjautumispainiketta"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Aika ennen virranhallinnan huomautusta"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Aika, jonka jälkeen istunnon katsotaan olevan jouten."
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Viive ennen teeman vaihtoa"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Jätä viesti vastaanottajalle %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U@%h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Peru"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Jätä viesti"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "Kirjaudu _ulos"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Vaihda käyttäjää"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Avaa lukitus"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Maailmankaikkeus"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Näyttää diaesityksen maailmankaikkeuden kuvista"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "\"Kuplii\" Maten logoa ympäri näyttöä"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Kelluvat jalat"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Näyttää diaesityksen kuvakansiossasi olevista kuvista"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Kuvakansio"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pop-Art-tyylinen ruudukko sykkiviä värejä."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Poptaide-neliöt"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Näytä polut, joita kuvat seuraavat"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Kierrä kuvia silloin tällöin niiden liikkuessa"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Näytä ruutunopeus ja muita tilastoja"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Suurin määrä kuvia kerralla näytöllä"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_KUVIA"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Ikkunan koko ja sijainti aloitettaessa"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LEVEYSxKORKEUS+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Käytettävä lähdekuva"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "kuva - kelluttaa kuvia ympäri näyttöä"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Katso --help jos haluat lisätietoja.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Yksi kuva täytyy antaa. Katso käyttöohje valitsimella --help.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Sijainti, josta kuvat haetaan"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "POLKU"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Kuvien taustalla käytettävä väri"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Älä sekoita kuvia kuvalähteestä"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Älä yritä venyttää kuvia näytöllä"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopioidaan tiedostoja"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Mistä:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Mihin:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopioidaan teemoja"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Virheellinen näytönsäästäjäteema"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ei näytä olevan kelvollinen näytönsäästäjäteema."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopioidaan tiedostoa: %u/%u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Sammuta näytönsäästäjäohjelma kokonaan"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Näytä näytönsäästäjän tila"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Näytä, kuinka pitkään näytönsäästäjä on ollut päällä"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Lukitse näyttö heti käynnissä olevan näytönsäästäjäprosessin avulla"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Vaihtaa uuteen demoon, jos näytönsäästäjä on käynnissä"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Laita näytönsäästäjä päälle (tyhjentää näytön)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Lopeta näytönsäästäjä, jos se on käynnissä (palauta näyttö)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Simuloi käyttäjän syötettä lähettämällä viesti näytönsäästäjälle"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Estä näytönsäästäjän käynnistyminen. Komento pysähtyy niin pitkäksi aikaa "
+"kun esto on päällä."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Kutsuva ohjelma, joka estää näytönsäästäjän käynnistymisen"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Syy näytönsäästäjän käynnistymisen ehkäisemiseen"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Tämän ohjelman versio"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Näytönsäästäjä on %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "käytössä"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "pois käytöstä"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Näytönsäästäjä ei ole estetty\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Näytönsäästäjän estää ohjelma:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Näytönsäästäjä on ollut päällä %d sekuntia.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Näytönsäästäjä ei ole tällä hetkellä aktiivinen.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Näytä vianetsintätuloste"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Näytä uloskirjautumispainike"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Uloskirjautumispainikkeesta suoritettava komento"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Näytä käyttäjän vaihtopainike"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Ikkunassa näytettävä viesti"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "VIESTI"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Ei käytössä"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Käyttäjä:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Salasana:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Salasana täytyy vaihtaa heti (salasana on vanhentunut)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Salasana täytyy vaihtaa heti (ylläpitäjän pakottama salasanan vaihto)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Käyttäjätunnuksesi on vanhentunut; ota yhteyttä ylläpitäjääsi"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Salasanaa ei annettu"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Salasanaa ei vaihdettu"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Käyttäjätunnusta ei löydy"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Syötä toiseen kertaan uusi UNIX-salasana:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Syötä uusi UNIX-salasana:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Nykyinen UNIX-salasana:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Virhe vaihdettaessa NIS-salasanaa."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Salasanan täytyy olla pidempi"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Salasana on jo käytetty, valitse toinen salasana."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Et voi vaihtaa salasanaa näin usein"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Salasanat eivät vastaa toisiaan"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Tarkistetaan..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Tunnistautuminen epäonnistui."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Tyhjä näyttö"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Satunnainen"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d tunti"
+msgstr[1] "%d tuntia"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuutti"
+msgstr[1] "%d minuuttia"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekunti"
+msgstr[1] "%d sekuntia"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s, %s, %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s, %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Ei koskaan"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Pääkäyttöliittymää ei voitu ladata"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Varmista, että näytönsäästäjä on kunnolla asennettu"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Älä käynnistä palvelinprosessina"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Käytä debuggauskoodia"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Käynnistä näytönsäästäjä ja lukitusohjelma"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Palvelua %s ei voi avata: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Muuttujaa PAM_TTY=%s ei voi asettaa"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Virheellinen salasana."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Pääsy ei ole sallittu tällä hetkellä."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Pääsy ei ole enää sallittu järjestelmään."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "viestiväylään rekisteröityminen epäonnistui"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "viestiväylään ei ole yhteyttä"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "näytönsäästäjä on jo käynnissä tässä istunnossa"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Aika loppui."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Näppäimistössä on Caps Lock päällä."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Vaihda käyttäjää..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Kirjaudu _ulos"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%s@%s"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Salasana:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Syy poissaoloon"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Syy tietokoneen äärestä poissaolemiseen."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "Kopioidaan \"%s\""
+
+#~ msgid "From URI"
+#~ msgstr "URI:sta"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI, josta nyt siirretään"
+
+#~ msgid "To URI"
+#~ msgstr "URI:in"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI, jonne nyt siirretään"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Siirretty osa"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Siirron jo suoritettu osa"
+
+#~ msgid "Current URI index"
+#~ msgstr "Nykyinen URI-hakemisto"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Nykyinen URI-hakemisto - alkaa ykkösestä"
+
+#~ msgid "Total URIs"
+#~ msgstr "Kaikki URIt"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "URI:en kokonaismäärä"
+
+#~ msgid "Connecting..."
+#~ msgstr "Otetaan yhteyttä..."
+
+#~ msgid "Authentication"
+#~ msgstr "Tunnistautuminen"
+
+#~ msgid "S_witch to user:"
+#~ msgstr "Vaihda käyttäjäksi:"
+
+#~ msgid "_Switch user..."
+#~ msgstr "_Vaihda käyttäjää..."
+
+#~ msgid "N"
+#~ msgstr "n"
+
+#~ msgid "Manager"
+#~ msgstr "Johtaja"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "Hallitsin, jonka tämä olio on."
+
+#~ msgid "Name"
+#~ msgstr "Nimi"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "X11-näytön nimi, johon tämä olio viittaa."
+
+#~ msgid "User"
+#~ msgstr "Käyttäjä"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "Tällä hetkellä sisäänkirjautunut käyttäjä tällä päätteellä."
+
+#~ msgid "Console"
+#~ msgstr "Konsoli"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr "Virtuaalikonsolin numero, jolta tämä näyttö löytyy, tai %-1."
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Onko tämä näyttö ikkunoitu (Xnest) näyttö."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "Kirjautumisohjelmaan ei saatu yhteyttä tuntemattomasta syystä."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "Kirjautumisohjelma ei käynnissä tai liian vanha."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "Siirtyville palvelimille asetettu raja on tullut täyteen."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "Tuntematon virhe käynnistettäessä X:ää."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X-palvelin ei onnistunut päättämään käynnistymistä."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "Liian monta X-istuntoa käynnissä."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "Sisäkkäinen X-palvelin (Xnest) ei saanut yhteyttä nykyiseen X-palvelimeen."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "MDM:n asetuksien X-palvelinta ei löytynyt."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "Yritetään asettaa tuntematonta uloskirjautumistoimintoa, tai yritetään "
+#~ "asettaa toimintoa, joka ei ole käytettävissä."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Virtuaalipäätteitä ei tueta."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Virheellinen virtuaalipäätenumero."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "Yritetään päivittää ei-tuettua asetusavainta."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority-tiedosto on rikki tai puuttuu."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "Kirjautumisohjelmalle tukehtui liian moneen lähetettyyn viestiin."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "Kirjautumisohjelma lähetti tuntemattoman virheviestin."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "Käyttäjä, jota tämä valikko esittää."
+
+#~ msgid "Icon Size"
+#~ msgstr "Kuvakekoko"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "Kuvakkeissa käytettävä koko."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Ilmaisimen koko"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Tarkistusilmaisimen koko"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Ilmaisimien väli"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Tila käyttäjätunnuksen ja ilmaisimen välissä"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "Käyttäjänhallintaolio, jolla tätä käyttää hallitaan."
+
+#~ msgid "Show Details"
+#~ msgstr "Näytä yksityiskohdat"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (Maten kirjautumisohjelman) ei ole käynnissä."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Itse asiassa käytössä saattaa olla jokin toinen kirjautumisohjelma, kuten "
+#~ "KDM (KDE:n kirjautumisohjelma) tai xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Jos haluat edelleen käyttää tätä ominaisuutta, käynnistä itse tai pyydä "
+#~ "järjestelmän ylläpitäjää käynnistämään MDM."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "Kommunikointi MDM:n (Maten kirjautumisohjelman) kanssa ei onnistu"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Kenties käynnissä on MDM:n vanha versio.."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "Kommunikointi MDM:n kanssa ei onnistu. Käytössä on ehkä vanha versio."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "Joustavien X-palvelinten yläraja saavutettiin."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "X-palvelinta käynnistäessä tuli virheitä."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "X-palvelin kaatui. Sitä ei ole ehkä asetettu oikein."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "Liian monta X-istuntoa käynnissä."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "Sisäkkäinen X-palvelin (Xnest) ei onnistunut ottamaan yhteyttä X-"
+#~ "palvelimeen. Syynä voi olla puuttuva X-todennustiedosto."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "Sisäkkäinen X-palvelin (Xnest) ei ole käytettävissä, tai MDM:n asetukset "
+#~ "ovat\n"
+#~ "väärät. Asenna Xnest-paketti sisäkkäisen kirjautumisen käyttämiseksi."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr "X-palvelinta ei ole saatavilla. MDM on luultavasti väärin asetettu."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Yritetään vaihtaa virheellisen numeroiseen virtuaalipäätteeseen."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Toimintoon tarvittavaa todennusta ei näy olevan. Tiedosto .Xauthority voi "
+#~ "olla väärin asetettu."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "Liian monta viestiä lähetettiin mdm:lle ja se kaatui päällemme."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "Tapahtui tuntematon virhe."
+
+#~ msgid "Time before activation"
+#~ msgstr "Viive ennen aktivointia"
+
+#~ msgid "_Screensaver"
+#~ msgstr "_Näytönsäästäjä"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Poista graafiset teemat käytöstä kun tyhjennetty"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr "Ota graafiset teemat käyttöön kun tyhjennetty (jos sovellettavissa)"
+
+#~ msgid "0 seconds"
+#~ msgstr "0 sekuntia"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "Salasana oli väärä."
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "Salli näytön virranhallinta"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr "Aseta todeksi, jos haluat näytönsäästäjän voivan sammuttaa näytön."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "Kuinka monen minuutin kuluttua näytönsäästäjän aktivoitumisesta näyttö "
+#~ "siirtyy valmiustilaan."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "Kuinka monen minuutin kuluttua näytönsäästäjän aktivoitumisesta näyttö "
+#~ "siirtyy keskeytystilaan."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr ""
+#~ "Kuinka monen minuutin kuluttua näytönsäästäjän aktivoitumisesta näyttö "
+#~ "sammutetaan."
+
+#~ msgid "Time before power off"
+#~ msgstr "Viive ennen näytön virran sammuttamista"
+
+#~ msgid "Time before standby"
+#~ msgstr "Viive ennen lepotilaa"
+
+#~ msgid "Time before suspend"
+#~ msgstr "Viive ennen säästötilaa"
+
+#~ msgid "    "
+#~ msgstr "    "
+
+#~ msgid "_Activate after:"
+#~ msgstr "_Käynnistä ajan kuluttua:"
+
+#~ msgid ""
+#~ "The number of minutes of idle time before activating the screensaver."
+#~ msgstr "Kuinka pitkän joutenolon kuluttua näytönsäästäjä aktivoidaan."
+
+#~ msgid "Disabled"
+#~ msgstr "Ei käytössä"
+
+#~ msgid "Welcome to %s"
+#~ msgstr "Tervetuloa koneelle %s"
+
+#~ msgid "How many minutes until the monitor goes black"
+#~ msgstr "Kuinka monen minuutin kuluttua näyttö menee mustaksi"
+
+#~ msgid "How many minutes until the monitor goes black."
+#~ msgstr "Kuinka monen minuutin kuluttua näyttö menee mustaksi."
+
+#~ msgid "How many minutes until the monitor power-saves"
+#~ msgstr "Kuinka monen minuutin kuluttua näyttö menee virransäästötilaan"
+
+#~ msgid "How many minutes until the monitor power-saves."
+#~ msgstr "Kuinka monen minuutin kuluttua näyttö menee virransäästötilaan."
+
+#~ msgid "How many minutes until the monitor powers down"
+#~ msgstr "Kuinka monen minuutin kuluttua näyttö sammuu"
+
+#~ msgid "How many minutes until the monitor powers down."
+#~ msgstr "Kuinka monen minuutin kuluttua näyttö sammuu."
+
+#~ msgid ""
+#~ "The number of minutes after blanking the screen before a logout option "
+#~ "will appear"
+#~ msgstr ""
+#~ "Minuuttimäärä näytön tyhjentämisestä ennen kuin uloskirjautumisvalinta "
+#~ "tulee esiin"
+
+#~ msgid "The number of minutes after blanking the screen before locking"
+#~ msgstr "Minuuttimäärä näytön tyhjentämisestä ennen lukitsemista"
+
+#~ msgid "The number of minutes after blanking the screen before locking."
+#~ msgstr "Minuuttimäärä näytön tyhjentämisestä ennen lukitsemista."
+
+#~ msgid "The selected screensaver themes"
+#~ msgstr "Valitut näytönsäästäjäteemat"
+
+#~ msgid ""
+#~ "This key specifies the selection mode used by the screensaver. Possible "
+#~ "values are \"disabled\", \"blank-only\", \"single\", and \"random\"."
+#~ msgstr ""
+#~ "Tämä avain määrittää valintatavan, jota näytönsäästäjä käyttää. "
+#~ "Mahdolliset arvot ovat \"disabled\" (ei käytössä), \"blank-only\" (vain "
+#~ "tyhjennys), \"single\" (yksittäinen) ja \"random\" (satunnainen)."
+
+#~ msgid "This key specifies the themes to be used by the screensaver."
+#~ msgstr "Tämä avain määrittää teemat, joita näytönsäästäjä käyttää."
+
+#~ msgid "Whether to lock as well as blank"
+#~ msgstr "Lukitaanko myös kun tyhjennetään"
+
+#~ msgid "Whether to lock as well as blank."
+#~ msgstr "Lukitaanko myös kun tyhjennetään."
+
+#~ msgid "Whether to offer the option of logging out after logout_delay"
+#~ msgstr "Tarjotaanko uloskirjautumisvaihtoehto logout_delay:n jälkeen"
+
+#~ msgid "Whether to offer the option of logging out after logout_delay."
+#~ msgstr "Tarjotaanko uloskirjautumisvaihtoehto logout_delay:n jälkeen."
+
+#~ msgid "Whether to power down the monitor"
+#~ msgstr "Sammutetaanko näyttö"
+
+#~ msgid "About %ld second left"
+#~ msgid_plural "About %ld seconds left"
+#~ msgstr[0] "Noin %ld sekunti jäljellä"
+#~ msgstr[1] "Noin %ld sekuntia jäljellä"
+
+#~ msgid "Log in as a new user"
+#~ msgstr "Kirjaudu sisään uutena käyttäjänä"
+
+#~ msgid "Enter a password to unlock the screen"
+#~ msgstr "Syötä salasana avataksesi näytön"
+
+#~ msgid "Name:"
+#~ msgstr "Nimi:"
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..a32bd9f
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,788 @@
+# French translation of mate-screensaver.
+# Copyright (C) 2005-2009 The Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Eric Maeker <eric.maeker at free.fr>, 2005.
+# Davy Defaud <davy.defaud at posteasy.com>, 2005.
+# Benoît Dejean <benoit at placenet.org>, 2006.
+# Robert-André Mauchin <zebob.m at pengzone.org>, 2006-2008.
+# Christophe Merlet <redfox at redfoxcenter.org>, 2006.
+# Stéphane Raimbault <stephane.raimbault at gmail.com>, 2007.
+# Jonathan Ernst <jonathan at ernstfamily.ch>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-22 22:20+0200\n"
+"PO-Revision-Date: 2009-08-22 22:22+0200\n"
+"Last-Translator: Claude Paroz <claude at 2xlibre.net>\n"
+"Language-Team: MATE French Team <matefr at traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n>1;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Économiseur d'écran"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Définir vos préférences pour l'économiseur d'écran"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Aperçu de l'économiseur d'écran</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+"<b>Attention : l'écran ne sera pas verrouillé pour l'utilisateur root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Gestion de l'énergie"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Considérer l'ordinateur _inactif après :"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Préférences de l'économiseur d'écran"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Aperçu de l'économiseur d'écran"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "A_ctiver l'économiseur d'écran quand l'ordinateur est inactif"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Verrouiller l'écran quand l'économiseur d'écran est actif"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "A_perçu"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Thèmes de l'économiseur d'écran :"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Thèmes de l'économiseur d'écran"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Économiseurs d'écran"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activer quand inactif"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Autoriser l'incorporation d'un clavier dans la fenêtre"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Autoriser la déconnexion"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Autoriser l'affichage du message d'état de la session"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Autoriser l'affichage du message d'état de la session lorsque l'écran est "
+"verrouillé."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Autoriser le changement d'utilisateur"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Commande de clavier incorporé"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Verrouiller à l'activation"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Commande de déconnexion"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Mode de sélection du thème de l'économiseur d'écran"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Définir à VRAI pour activer l'économiseur d'écran quand la session est "
+"inactive."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Définir à VRAI pour autoriser l'incorporation d'un clavier au sein de la "
+"fenêtre lors de l'essai de déverrouillage. La clé « keyboard_command » doit "
+"être définie avec la commande appropriée."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Définir à VRAI pour verrouiller l'écran lors de l'activation de "
+"l'économiseur d'écran."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Définir à VRAI pour offrir une option dans la boîte de dialogue de "
+"déverrouillage pour basculer vers un compte utilisateur différent."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Définir à VRAI pour offrir une option dans la boîte de dialogue de "
+"déverrouillage pour se déconnecter après un certain délai. Le délai est "
+"indiqué dans la clé « logout_delay »."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"La commande qui sera lancée, si la clé « embedded_keyboard_enabled » est "
+"définie à VRAI, pour incorporer un widget clavier dans la fenêtre. Cette "
+"commande devrait implémenter une interface de connexion XEMBED et afficher "
+"une fenêtre XID sur la sortie standard."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"La commande à invoquer lorsque le bouton de déconnexion est cliqué. La "
+"commande doit simplement déconnecter l'utilisateur sans aucune interaction. "
+"Cette clé n'a d'effets que si la clé « logout_enable » est a VRAI."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Le nombre de minutes après l'activation de l'économiseur d'écran avant de "
+"verrouiller l'écran."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Le nombre de minutes après l'activation de l'économiseur d'écran avant que "
+"l'option de déconnexion apparaisse dans la boîte de dialogue de "
+"déverrouillage. Cette clé n'a d'effets que si la clé « logout_enable » est "
+"définie à VRAI."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Le nombre de minutes d'inactivité avant que la session ne soit considérée "
+"comme inactive."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Le nombre de minutes entre chaque changement d'économiseur d'écran."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"La durée d'inactivité en secondes avant signalement à la gestion d'énergie. "
+"Cette valeur est définie et maintenue par l'agent de gestion d'énergie de la "
+"session."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Le mode de sélection utilisé par l'économiseur d'écran. Les valeurs "
+"possibles sont « blank-only » pour activer l'économiseur d'écran sans thème, "
+"« single » pour l'activer en utilisant un seul thème (précisé dans la clé "
+"« themes ») ou bien « random » pour l'activer en utilisant un thème aléatoire."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Thème pour la boîte de dialogue de verrouillage"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Thème à utiliser pour la boîte de dialogue de verrouillage."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Cette clé indique la liste des thèmes utilisés par l'économiseur d'écran. "
+"Elle est ignorée lorsque que la clé « mode » est « blank-only ». Lorsque "
+"« mode » est « single » elle fournit le nom du thème et lorsque « mode » est "
+"« random » elle fournit une liste de thèmes."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Délai avant verrouillage"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Délai avant option de déconnexion"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Délai de base avant mise en action de la gestion d'énergie"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Délai avant que la session ne soit considérée comme inactive"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Délai avant changement de thème"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Laisser un message pour %R :</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U sur %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "A_nnuler"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Laisser un message"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Clore la session"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Changer d'_utilisateur"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Déverrouiller"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Affiche un diaporama d'images du cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Le logo de MATE apparaît ça et là sur l'écran"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Pieds flottants"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Ceci affiche un diaporama des images de votre dossier d'images."
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Dossier d'images"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Dessine une grille de couleurs pulsées ressemblant à du Pop art."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Carrés « Pop Art »"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Afficher le chemin que les images empruntent"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Faire tourner occasionnellement les images lorsqu'elles se déplacent"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr ""
+"Afficher le nombre d'images par seconde ainsi que d'autres statistiques"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Le nombre maximum d'images à garder à l'écran"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "La taille initiale et la position de la fenêtre"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LARGEURxHAUTEUR+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "L'image source à utiliser"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - des images flottent à l'écran"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Pour en savoir d'avantage, faites --help\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Vous devez indiquer une image. Pour en savoir davantage, utilisez --help\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Emplacement du répertoire d'images"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CHEMIN"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Couleur à utiliser pour l'arrière-plan des images"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrvvbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Ne pas choisir aléatoirement les images depuis l'emplacement"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ne pas essayer d'étendre les images sur l'écran"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Copie de fichiers"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De :"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Vers :"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Copie de thèmes"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Thème d'économiseur d'écran non valide"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ne semble pas être un thème d'économiseur d'écran valide."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copie du fichier : %u sur %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Demande à l'économiseur d'écran de quitter proprement"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Indique l'état de l'économiseur d'écran"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Indique la durée pendant laquelle l'économiseur d'écran a été actif"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Demande à l'économiseur d'écran en cours de fonctionnement de verrouiller "
+"l'écran immédiatement"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Change de démonstration graphique si l'économiseur d'écran est actif"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Démarre l'économiseur d'écran (efface l'écran)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Désactive l'économiseur d'écran s'il est actif (réaffiche l'écran)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Demande à l'économiseur d'écran en cours de fonctionnement de simuler "
+"l'activité d'un utilisateur"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Empêche l'activation de l'économiseur d'écran. La commande se bloque lorsque "
+"la désactivation est active."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "L'application demandant la désactivation de l'économiseur d'écran"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "La raison de la désactivation de l'économiseur d'écran"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Version de cette application"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "L'économiseur d'écran est %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "actif"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inactif"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "L'économiseur d'écran n'est pas inhibé\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "L'économiseur d'écran est inhibé par :\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "L'économiseur d'écran a été actif pendant %d secondes.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "L'économiseur d'écran n'est actuellement pas actif.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Affiche la sortie de débogage"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Affiche le bouton de déconnexion"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Commande à invoquer depuis le bouton de déconnexion"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Affiche le bouton de changement d'utilisateur"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Message à afficher dans la boîte de dialogue"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Non utilisé"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Utilisateur :"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Mot de passe :"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Vous devez modifier votre mot de passe immédiatement (mot de passe ancien)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Vous devez modifier votre mot de passe immédiatement (à la demande de "
+"l'administrateur)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Votre compte a expiré ; veuillez contacter votre administrateur système"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Aucun mot de passe fourni"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Mot de passe non modifié"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Impossible d'obtenir un nom d'utilisateur"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Ressaisissez un nouveau mot de passe UNIX :"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Saisissez un nouveau mot de passe UNIX :"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Mot de passe UNIX (actuel) :"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Erreur lors de la modification du mot de passe NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Vous devez choisir un mot de passe plus long"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Le mot de passe a déjà été utilisé. Choisissez en un autre."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Vous devez attendre plus longtemps pour modifier votre mot de passe"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Désolé, les mots de passe ne correspondent pas"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Vérification en cours..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "L'authentification a échoué."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Écran vide"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aléatoire"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d heure"
+msgstr[1] "%d heures"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minute"
+msgstr[1] "%d minutes"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d seconde"
+msgstr[1] "%d secondes"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Jamais"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Impossible de charger l'interface principale"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Assurez-vous que l'économiseur d'écran est correctement installé"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Impossible de devenir un « daemon » (démon)"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Activer le code de debogage"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Lancer l'économiseur d'écran et le programme de verrouillage"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Impossible d'établir le service %s : %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Impossible de définir PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Mot de passe non valide."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Vous n'êtes pas autorisé à accéder au système à cette heure."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Vous n'êtes plus autorisé à accéder au système."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "l'enregistrement sur le bus de message a échoué"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "non connecté au bus de message"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr ""
+"l'économiseur d'écran est déjà en cours de fonctionnement pour cette session"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Délai expiré."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "La touche Verr. Maj. est enfoncée."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "Changer d'_utilisateur..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Se _déconnecter"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U sur %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Mot de passe :"
diff --git a/po/ga.po b/po/ga.po
new file mode 100644
index 0000000..c8f9cbd
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,721 @@
+# Irish translations for mate-screensaver package.
+# Copyright (C) 2007-2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+# Seán de Búrca <leftmostcat at gmail.com>, 2007, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-15 05:01-0600\n"
+"PO-Revision-Date: 2009-08-15 05:16-0600\n"
+"Last-Translator: Seán de Búrca <leftmostcat at gmail.com>\n"
+"Language-Team: Irish <gaeilge-gnulinux at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=5; plural=n==1 ? 0 : (n%10==1 || n%10==2) ? 1 : (n%"
+"10>=3 && n%10<= 6) ? 2 : ((n%10>=7 && n%10<=9) || n==10) ? 3 : 4;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Screensaver"
+msgstr "Spárálaí Scáileáin"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Socraigh do chuid sainroghanna spárálaí scáileáin"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Réamhamharc spárálaí scáileáin</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Rabhadh: ní bheidh an scáileán faoi ghlas don fhréamhúsáideoir.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Bainistíocht Cumhachta"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "_Meas an ríomhaire ina staid dhíomhaoin i ndiaidh:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Sainroghanna Spárálaí Scáileáin"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Réamhamharc Spárálaí Scáileáin"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Gníomhachtaigh an spárálaí scáileáin agus an ríomhaire díomhaoin"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Cuir an scáileán faoi ghlas agus an spárálaí scáileáin gníomhach"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Réamhamharc"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Téama spárálaí scáileáin:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Téamaí spárálaí scáileáin"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Spárálaithe Scáileáin"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Gníomhachtaigh agus díomhaoin"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Ceadaigh logáil amach"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Ceadaigh athrú úsáideoirí"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Cuir faoi ghlas ag gníomhachtú"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Ordú logála amach"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr ""
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Fág teachtaireacht do %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U ar %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Cealaigh"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Fág Teachtaireacht"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Logáil Amach"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Athraigh Úsáideoir"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1367
+msgid "_Unlock"
+msgstr "_Díghlasáil"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmas"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr ""
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr ""
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Cosa ar Snámh"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr ""
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Fillteán pictiúr"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr ""
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Cearnóga pop-ealaíne"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr ""
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr ""
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "ÍOMHÁNNA_UASTA"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Méid agus ionad tosaithe na fuinneoige"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LEITHEADxAIRDE+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Íomhá fhoinseach le húsáid"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr ""
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Féach --help le haghaidh eolas úsáide.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Suíomh óna fhaightear íomhánna"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CONAIR"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr ""
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr ""
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Comhaid á gcóipeáil"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Ó:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Chuig:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Téamaí á gcóipeáil"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Téama spárálaí scáileáin neamhbhailí"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Is cosúil nach téama spárálaí scáileáin bailí é %s."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Comhad á chóipeáil: %u as %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Leagan an fheidhmchláir seo"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Tá an spárálaí scáileáin %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "gníomhach"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "neamhghníomhach"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "TEACHTAIREACHT"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Ainm úsáideora:"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Focal faire:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Á sheiceáil..."
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Theip ar fhíordheimhniú."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Scáileán bán"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Fánach"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "uair amháin"
+msgstr[1] "%d uair"
+msgstr[2] "%d uair"
+msgstr[3] "%d n-uair"
+msgstr[4] "%d uair"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "nóiméad amháin"
+msgstr[1] "%d nóiméad"
+msgstr[2] "%d nóiméad"
+msgstr[3] "%d nóiméad"
+msgstr[4] "%d nóiméad"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "soicind amháin"
+msgstr[1] "%d shoicind"
+msgstr[2] "%d shoicind"
+msgstr[3] "%d soicind"
+msgstr[4] "%d soicind"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Riamh"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr ""
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr ""
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Ná téigh i ndeamhan"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Cumasaigh cód dífhabhtaithe"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Ní féidir PAM_TTY=%s a shocrú"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Focal faire mícheart."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr ""
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr ""
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Chuaigh am in éag."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Tá an eochair Caps Lock brúite."
+
+#: ../src/gs-lock-plug.c:1347
+msgid "S_witch User..."
+msgstr "_Athraigh Úsáideoir..."
+
+#: ../src/gs-lock-plug.c:1356
+msgid "Log _Out"
+msgstr "Logáil _Amach:"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1532
+msgid "%U on %h"
+msgstr "%U ar %h"
+
+#: ../src/gs-lock-plug.c:1546
+msgid "_Password:"
+msgstr "_Focal faire:"
diff --git a/po/gl.po b/po/gl.po
new file mode 100644
index 0000000..9bbe31f
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,788 @@
+# translation of mate-screensaver.master.po to Galician
+# translation of mate-screensaver.gl.po to
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER, 2005.
+#
+#
+# Ignacio Casal Quinteiro <nacho.resa at gmail.com>, 2005, 2006.
+# Ignacio Casal Quinteiro <icq at svn.gnome.org>, 2007, 2008.
+# Fran Diéguez <fran.dieguez at mabishu.com>, 2009.
+# Mancomún - Centro de Referencia e Servizos de Software Libre <g11n at mancomun.org>, 2009.
+# Antón Méixome <meixome at mancomun.org>, 2009.
+# Fran Diéguez <frandieguez at ubuntu.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-02-15 18:37+0100\n"
+"PO-Revision-Date: 2010-02-12 09:43+0100\n"
+"Last-Translator: Fran Diéguez <frandieguez at ubuntu.com>\n"
+"Language-Team: Gallician <proxecto at trasno.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: gl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Protector de pantalla"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Defina as súas preferencias para o protector de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Previsualización do protector de pantalla</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Aviso: non se bloqueará a pantalla para o superusuario.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Xestión de enerxía"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Considerar que o computador está _inactivo despois de:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferencias do protector de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Previsualización do protector de pantalla"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activar o protector de pantalla cando o computador estea inactivo"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Bloquear a pantalla cando o protector de pantalla estea activo"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Previsualización"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema do _protector de pantalla:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Temas do protector de pantalla"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Protectores de pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activar cando estea inactivo"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Permitir a incorporación dun teclado na xanela"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Permitir saír da sesión"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Permitir que se mostre a mensaxe de estado da sesión"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Permitir que se mostre a mensaxe de estado da sesión cando a pantalla está "
+"bloqueada."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Permitir o cambio de usuario"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Orde de teclado incorporada"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Bloquear ao activar"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Orde de saír da sesión"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Modo de selección do tema do protector de pantalla"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Definir isto como TRUE para activar o protector de pantalla cando a sesión "
+"estea inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Definir isto como TRUE para permitir a incorporación dun teclado na xanela "
+"ao tentar desbloquear. A chave \"keyboard_command\" debe definirse coa orde "
+"apropiada."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Defina isto como TRUE para bloquear a pantalla cando se activa o protector "
+"de pantalla."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Defina isto como TRUE para ofrecer unha opción no diálogo de desbloqueo para "
+"cambiar a unha conta de usuario diferente."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Definir isto como TRUE para ofrecer unha opción no diálogo de desbloqueo "
+"para saír da sesión tras un intervalo de tempo. O atraso especifícase na "
+"chave \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"A orde que se executará se a chave \"embedded_keyboard_enabled\" está "
+"definida como TRUE, para incorporar un widget de teclado na xanela. Esta "
+"orde debería implementar unha interface XEMBED de conexión e debería "
+"imprimir unha xanela XID na saída estándar."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"A orde que hai que invocar cando se preme o botón para terminar a sesión. "
+"Esta orde simplemente pecha a sesión do usuario sen ningunha interacción. "
+"Esta chave só funciona se a chave \"logout_enable\" está definida como TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"O número de minutos despois da activación do protector de pantalla antes de "
+"que se bloquee a pantalla."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"O número de minutos tras a activación do protector de pantalla antes de que "
+"apareza a opción de terminar a sesión no diálogo de desbloqueo. Esta chave "
+"ten efecto só se a chave \"logout_enable\" está definida como TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"O número de minutos de tempo inactivo antes de considerar a sesión como "
+"inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"O número de minutos que se executa antes de cambiar o tema do protector de "
+"pantalla."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"O número de segundos de inactividade antes de darlle indicacións ao xestor "
+"de enerxía. Esta chave está definida e conservada polo axente de xestión de "
+"enerxía do computador."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"O modo de selección que usa o protector de pantalla. Pode ser \"blank-only\" "
+"para activar o protector sen que se use ningún tema na activación, \"single"
+"\" para activar o protector usando só un tema na activación (que se "
+"especifica na chave \"themes\" ) ou \"random\", para activar o protector "
+"usando un tema aleatorio na activación."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema para o diálogo de bloqueo"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema que se usará para o diálogo de bloqueo."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Esta chave especifica a lista de temas que vai usar o protector de pantalla. "
+"Ignorarase cando a chave \"mode\" sexa \"blank-only\", proporcionará o nome "
+"do tema cando \"mode\" sexa \"single\" e proporcionará a lista dos temas "
+"cando \"mode\" sexa \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tempo antes do bloqueo"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tempo antes da opción para terminar a sesión"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tempo antes da liña base do xestor de enerxía"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tempo antes de que a sesión se considere inactiva"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tempo antes de modificar o tema"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Deixar unha mensaxe para %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U en %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Deixar unha mensaxe"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Saír da sesión"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Cambiar de usuario"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Desbloquear"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Mostra unha presentación de imaxes do cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Move o logotipo do pé do MATE ao redor da pantalla"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Pé flotante"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Mostra unha presentación das imaxes do seu cartafol Imaxes"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Cartafol Imaxes"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Unha grade de cadros pop-art de cores pulsantes."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Cadrados de arte pop"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Vexa --help para ver a información de uso.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "Mostrar os camiños que seguen as imaxes"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "Rotar as imaxes ocasionalmente mentres se moven"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Imprimir a taxa de fotogramas e outras estatísticas"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "O número máximo de imaxes que se vai manter na pantalla"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAXES"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "O tamaño e a posición iniciais da xanela"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LARGURAxALTURA+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "A imaxe orixe que se vai usar"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "imaxe - imaxes flotan ao redor da pantalla"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Especifique unha imaxe. Vexa --help para a ver a información de uso.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Localización da que obter as imaxes"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CAMIÑO"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Cor que se vai usar como imaxe de fondo"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Non dispoñer as imaxes aleatoriamente desde a localización"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Non tentar ampliar as imaxes na pantalla"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Copiando ficheiros"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "A:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Copiando temas"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "O tema do protector de pantalla non é válido"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Non parece que %s sexa un tema válido para a pantalla."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copiando ficheiro: %u de %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Fai que o protector de pantalla termine correctamente"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Consultar o estado do protector de pantalla"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Consultar canto tempo estivo activo o protector de pantalla"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Dille ao proceso do protector de pantalla en execución que bloquee a "
+"pantalla inmediatamente"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Se o protector de pantalla está activo entón cambia a outra demostración "
+"gráfica"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Activar o protector de pantalla (pór a pantalla en branco)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Se o protector de pantalla está activo entón desactívao (ilumina a pantalla)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Enviar mensaxes ao protector de pantalla en execución para simular a "
+"actividade do usuario"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inhibir a activación do protector de pantalla. A orde bloquéase cando está "
+"activa a inhibición."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "A aplicativo que chama e que está inhibindo o protector de pantalla"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "A razón para inhibir o protector de pantalla"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versión deste aplicativo"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "O protector de pantalla é %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "activo"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inactivo"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "O protector de pantalla non está inhibido\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "O protector de pantalla está sendo inhibido por:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "O protector de pantalla estivo activo durante %d segundos.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "O protector de pantalla non está activo actualmente\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Mostrar a saída de depuración"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Mostrar o botón para saír da sesión"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "A orde que hai que invocar desde o botón para saír da sesión"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Mostrar o botón para cambiar de usuario"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "Mensaxe para mostrar no diálogo"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "MENSAXE"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "Non usada"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Nome de usuario:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Contrasinal:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Debe cambiar o seu contrasinal inmediatamente (contrasinal caducado)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Debe cambiar o seu contrasinal inmediatamente (obrigado polo superusuario)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr "A súa conta caducou; contacte co administrador do sistema"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "Non se indicou un contrasinal"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "Non se modificou o contrasinal"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "Non é posíbel obter o nome de usuario"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Reescriba o contrasinal UNIX novo:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Introduza o contrasinal UNIX novo:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "Contrasinal UNIX (actual):"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "Produciuse un erro ao modificar o contrasinal NIS."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "Escolla un contrasinal máis longo"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "O contrasinal xa foi usado. Escolla outro."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "Ten que esperar máis tempo para cambiar o contrasinal"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Os contrasinais non coinciden"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "Comprobando..."
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Fallou a autenticación."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Pór a pantalla en branco"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aleatorio"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hora"
+msgstr[1] "%d horas"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuto"
+msgstr[1] "%d minutos"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segundo"
+msgstr[1] "%d segundos"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nunca"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Non foi posíbel cargar a interface principal"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Asegúrese de que o protector de pantalla está instalado correctamente"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Non converter nun daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Activar o código de depuración"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Lanzar o protector de pantallas e o programa de bloqueo"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Non é posíbel estabelecer o servizo %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Non foi posíbel configurar PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Contrasinal incorrecto."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Non está permitido obter o acceso neste momento."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Xa non se lle permite acceder máis ao sistema."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "fallo ao rexistrarse co bus de mensaxe"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "non está conectado ao bus de mensaxes"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "xa se está executando o protector de pantalla nesta sesión"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "O tempo caducou."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "A tecla Bloq Maiús está activada."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Cambiar de usuario..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Saír da sesión"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U en %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "Co_ntrasinal:"
diff --git a/po/gu.po b/po/gu.po
new file mode 100644
index 0000000..90f4ec8
--- /dev/null
+++ b/po/gu.po
@@ -0,0 +1,772 @@
+# translation of mate-screensaver.mate-2-28.gu.po to Gujarati
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Ankit Patel <ankit644 at yahoo.com>, 2005, 2006.
+# Ankit Patel <ankit at redhat.com>, 2006, 2007.
+# Sweta Kothari <swkothar at redhat.com>, 2008, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.mate-2-28.gu\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-12-14 20:28+0000\n"
+"PO-Revision-Date: 2010-03-24 15:30+0530\n"
+"Last-Translator: Sweta Kothari <swkothar at redhat.com>\n"
+"Language-Team: Gujarati\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "સ્ક્રીનસેવર"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "તમારી સ્ક્રીનસેવર પસંદગીઓ સુયોજિત કરો"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>સ્ક્રીનસેવર પૂર્વદર્શન</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>ચેતવણી: રુટ વપરાશકર્તા માટે સ્ક્રીનને તાળું મારવામાં આવશે નહિં.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "પાવર વ્યવસ્થાપન (_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "આના પછી કમ્પ્યૂટરને ફાજલ તરીકે સમજો (_i):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "સ્ક્રીનસેવર પસંદગીઓ"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "સ્ક્રીનસેવર પૂર્વદર્શન"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "જ્યારે કમ્પ્યૂટર ફાજલ હોય ત્યારે સ્ક્રીનસેવર સક્રિય કરો (_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "જ્યારે સ્ક્રીનસેવર સક્રિય હોય ત્યારે સ્ક્રીનને તાળું મારો (_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "પૂર્વદર્શન (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "સ્ક્રીનસેવર થીમ (_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "સ્ક્રીનસેવર થીમો"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "સ્ક્રીનસેવરો"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "જ્યારે ફાજલ હોય ત્યારે સક્રિય કરો"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "વિન્ડોમાં જડિત કીબોર્ડને પરવાનગી આપો"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "બહાર નીકળવાની પરવાનગી આપો"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "દર્શાવવા માટે સત્ર સ્થિતિ સંદેશ ને પરવાનગી આપો"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "દર્શાવવા માટે સત્ર સ્થિતિ સંદેશ ને પરવાનગી આપો જ્યારે સ્ક્રીન ને તાળુ મારેલ હોય."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "વપરાશકર્તા બદલવાની પરવાનગી આપો"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "જડિત કીબોર્ડ આદેશ"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "સક્રિયકરણ પર તાળું મારો"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "બહાર નીકળો આદેશ"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "સ્ક્રીનસેવર થીમ પસંદગી સ્થિતિ"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "જ્યારે સત્ર ફાજલ હોય ત્યારે સ્ક્રીનસેવરને સક્રિય કરવા માટે આને TRUE સુયોજિત કરો."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"વિન્ડોમાં જડિત કીબોર્ડને પરવાનગી આપવા માટે આને TRUE સુયોજિત કરો જ્યારે તેનું તાળું ખોલવાનો "
+"પ્રયત્ન કરી રહ્યા હોય. \"keyboard_command\" કી યોગ્ય આદેશ સાથે સુયોજિત થયેલ હોવી જ "
+"જોઈએ."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "જ્યારે સ્ક્રીનસેવર સક્રિય થઈ જાય ત્યારે સ્ક્રીનને તાળું મારવા માટે આને TRUE સુયોજિત કરો."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"અલગ વપરાશકર્તા ખાતામાં બદલાવા માટે તાળું ખોલો સંવાદમાં વિકલ્પની તક આપવા માટે આને TRUE "
+"સુયોજિત કરો."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"વિલંબ પછી બહાર નીકળવા માટે તાળું ખોલો સંવાદમાં વિકલ્પની તક આપવા માટે આને TRUE સુયોજિત "
+"કરો. વિલંબ એ \"logout_delay\" કીમાં સ્પષ્ટ થયેલ છે."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"આદેશ કે જે ચલાવવામાં આવશે, જો \"embedded_keyboard_enabled\" કી TRUE તરીકે સુયોજિત "
+"થયેલ હોય, વિન્ડોમાં કીબોર્ડ વિજેટને જડવા માટે. આ આદેશે XEMBED પ્લગ ઈન્ટરફેસ અમલમાં મૂકવું "
+"જોઈએ અને વિન્ડો XID ને પ્રમાણભૂત આઉટપુટ પર આઉટપુટ આપવું જોઈએ."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"જ્યારે પ્રવેશ બહાર નીકળો બટન ક્લિક થયેલ હોય ત્યારે ચલાવવાનો આદેશ. આ આદેશે વપરાશકર્તાના "
+"કોઈપણ જાતના સંપર્ક વિના તેને બહાર કાઢી નાંખવો જોઈએ. આ કીને માત્ર ત્યારે જ હોય જો "
+"\"logout_enable\" કી એ TRUE તરીકે સુયોજિત થયેલ હોય."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "સ્ક્રીનને તાળું મારવા પહેલાં સ્ક્રીનસેવર સક્રિયકરણ પછી મિનિટોની સંખ્યા."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"તાળું ખોલો સંવાદમાં બહાર નીકળો વિકલ્પ દેખાશે તે પહેલાં સ્ક્રીનસેવર સક્રિયકરણ પછી મિનિટોની "
+"સંખ્યા. આ કીને માત્ર ત્યારે જ અસર હશે જો \"logout_enable\" કી એ TRUE તરીકે સુયોજિત "
+"થયેલ હોય."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "સત્ર એ ફાજલ તરીકે સમજવામાં આવે તે પહેલાં અસક્રિયતાની મિનિટોની સંખ્યા."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "સ્ક્રીનસેવર થીમ બદલવા પહેલાં ચલાવવા માટેની મિનિટોની સંખ્યા."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"પાવર-વ્યવસ્થાપનમાં સંકેતીકરણ પહેલાં અસક્રિયતાની સેકન્ડોની સંખ્યા. આ કી એ સત્ર પાવર-"
+"વ્યવસ્થાપન એજન્ટ દ્વારા સુયોજિત કરવામાં આવે છે અને જાળવવામાં આવે છે."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"સ્ક્રીનસેવર દ્વારા વપરાતી પસંદગી સ્થિતિ. કદાચ સ્ક્રીનસેવર સક્રિયકરણ પર કોઈપણ થીમ "
+"વાપર્યા વિના સ્ક્રીનસેવર સક્રિય કરવા માટે \"માત્ર-કોરું\", સક્રિયકરણ (\"થીમો\" કીમાં "
+"સ્પષ્ટ થયેલ છે) પર માત્ર એક થીમની મદદથી સ્ક્રીનસેવર સક્રિય કરવા માટે \"એક\", અને "
+"સક્રિયકરણ પર રેન્ડમ થીમની મદદથી સ્ક્રીનસેવર સક્રિય કરવા માટે \"રેન્ડમ\"."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "તાળા સંવાદ માટે થીમ"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "તાળા સંવાદ માટે વાપરવા માટેની થીમ."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"આ કી સ્ક્રીનસેવર દ્વારા વપરાતી થીમોની યાદી સ્પષ્ટ કરે છે. તે અવગણાય છે જ્યારે \"સ્થિતિ\" "
+"કી એ \"માત્ર-કોરી\" હોય, તમારે થીમ નામ પૂરું પાડવું જોઈએ જ્યારે \"સ્થિતિ\" એ \"એક\" "
+"હોય, અને થીમોની યાદી પૂરી પાડવી જોઈએ જ્યારે \"સ્થિતિ\" એ \"રેન્ડમ\" હોય."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "તાળું મારવા પહેલાંનો સમય"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "બહારનીકળો વિકલ્પ પહેલાંનો સમય"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "પાવર-વ્યવસ્થાપન આધારરેખા પહેલાંનો સમય"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "સત્ર ફાજલ સમજવામાં આવે તે પહેલાંનો સમય"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "થીમ બદલાય તે પહેલાંનો સમય"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R માટે સંદેશો છોડો:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U એ %h પર</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "રદ કરો (_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "સંદેશો છોડો (_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "બહાર નીકળો (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "વપરાશકર્તા બદલો (_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "તાળું ખોલો (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "કોસમોસ"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "કોસમોસના ચિત્રોનો સ્લાઈડશો દર્શાવો"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "સ્ક્રીનની ફરતે MATE પગનો લોગો બબલ કરે છે"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "તરતો પગ"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "તમારા ચિત્રો ફોલ્ડરમાંથી સ્લાઈડશો દર્શાવો"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "ચિત્રો ફોલ્ડર"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "રંગોના કંપન માટે pop-art-ish જાળી."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "ઝબૂકતા ચોકઠાઓ"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "ચિત્રો જેને અનુસરે તે પાથ બતાવો"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "ઘટનાકીય રીતે ચિત્રો ફેરવો જેમ તેઓ ખસે"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "ચોકઠાં દર અને અન્ય પરિસ્થિતિ છાપો"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "સ્ક્રીન પર રાખવા માટેના ચિત્રોની મહત્તમ સંખ્યા"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "વિન્ડોનું આરંભિક માપ અને સ્થાન"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "વાપરવા માટેનું સ્રોત ચિત્ર"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "ચિત્ર - સ્ક્રીનની ફરતે ચિત્રો તરે છે"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. વપરાશ જાણકારી માટે --help જુઓ.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "તમારે એક ચિત્ર સ્પષ્ટ કરવું જ પડશે.  વપરાશ જાણકારી માટે --help જુઓ.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ચિત્રો મેળવવા માટેનું સ્થાન"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "ચિત્રો પાશ્વ ભાગ માટે વાપરવાનો રંગ"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "સ્થાનમાંથી ચિત્રો રેન્ડમાઈઝ કરો નહિં"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "સ્ક્રીન પર ચિત્રો ખેંચવાનો પ્રયાસ કરો નહિં"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ફાઈલોની નકલ કરી રહ્યા છીએ"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "તરફથી:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "પ્રતિ:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "થીમોની નકલ કરી રહ્યા છીએ"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "અયોગ્ય સ્ક્રીનસેવર થીમ"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s માન્ય સ્ક્રીનસેવર થીમ હોય એમ દેખાતું નથી."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ફાઈલની નકલ કરી રહ્યા છીએ: %u જેટલું %u માંથી"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "સ્ક્રીનસેવરને સારી રીતે બંધ કરવાનું કારણ બને છે"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "સ્ક્રીનસેવરની સ્થિતિને પ્રશ્ન પૂછે છે"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "સ્ક્રીનસેવર જેટલા સમયથી સક્રિય છે તેટલા સમયની લંબાઈનો પ્રશ્ન"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "ચાલી રહેલ સ્ક્રીનસેવર પ્રક્રિયાને સ્ક્રીન તુરંત જ તાળું મારવા માટે કહે છે"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "જો સ્ક્રીનસેવર સક્રિય હોય તો પછી અન્ય ગ્રાફિક્સ ડેમોમાં બદલાવ"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "સ્ક્રીનસેવરને ચાલુ કરો (સ્ક્રીન કોરી કરો)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "જો સ્ક્રીનસેવર સક્રિય હોય તો પછી તેને અસક્રિય કરો (સ્ક્રીનને કોરી-નહિં રાખો)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "વપરાશકર્તા ક્રિયા સિમ્યુલેટ કરવા માટે ચાલી રહેલ સ્ક્રીનસેવરને ધક્કો મારો"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "સ્ક્રીનસેવરને સક્રિય કરવાથી બચાવવું.  જ્યારે બચાવવાનું સક્રિય હોય ત્યારે આદેશો અટકાવે છે."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "બોલાવી રહેલ કાર્યક્રમ કે જે સ્ક્રીનસેવરને અટકાવી રહ્યો છે"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "સ્ક્રીનસેવરને બચાવવા માટેનું કારણ"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "આ કાર્યક્રમની આવૃત્તિ"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "સ્ક્રીનસેવર એ %s છે\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "સક્રિય"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "અસક્રિય"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "સ્ક્રીનસેવર એ અટકાવાયેલ છે\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "સ્ક્રીનસેવર એ અટકાવી દેવામાં આવ્યું છે:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "સ્ક્રીનસેવર %d સેકન્ડોથી સક્રિય છે.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "સ્ક્રીનસેવર એ હમણાં સક્રિય નથી.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "ડિબગીંગ આઉટપુટ બતાવો"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "બહાર નીકળો બટન બતાવો"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "બહાર નીકળો બટનમાંથી ચલાવવાનો આદેશ"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "વપરાશકર્તા બદલો બટન બતાવો"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "સંવાદમાં બતાવવા માટેનો સંદેશો"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "વપરાયેલ નથી"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "વપરાશકર્તાનામ:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "પાસવર્ડ:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "તમે તમારો પાસવર્ડ તુરંત બદલવા માટે આગ્રહ કરવામાં આવે છે (પાસવર્ડની આયુ)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "તમે તમારો પાસવર્ડ તુરંત બદલવા માટે આગ્રહ કરવામાં આવે છે (રુટ દ્વારા દબાણ)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "તમારા ખાતાની સમયમર્યાદા સમાપ્ત થઈ ગઈ; મહેરબાની કરીને તમારા સિસ્ટમ સંચાલકનો સંપર્ક કરો"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "કોઈ પાસવર્ડો પૂરા પાડવામાં આવેલ નથી"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "પાસવર્ડ બદલાયેલ નથી"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "વપરાશકર્તાનામ મેળવી શકતા નથી"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "નવો UNIX પાસવર્ડ ફરી લખો:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "નવો UNIX પાસવર્ડ દાખલ કરો:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(વર્તમાન) UNIX પાસવર્ડ:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS પાસવર્ડ બદલતી વખતે ભૂલ."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "તમારે લાંબો પાસવર્ડ જ પસંદ કરવો જોઈએ"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "પાસવર્ડ પહેલાથી જ વપરાઈ ગયેલ છે. અન્ય પસંદ કરો."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "તમારે તમારો પાસવર્ડ બદલવા માટે લાંબે સુધી રાહ જોવી જ પડશે"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "માફ કરજો, પાસવર્ડો બંધ બેસતા નથી"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "ચકાસી રહ્યા છીએ..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "સત્તાધિકરણ નિષ્ફળ."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "ખાલી સ્ક્રીન"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "રેન્ડમ"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d કલાક"
+msgstr[1] "%d કલાકો"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d મિનિટો"
+msgstr[1] "%d મિનિટો"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d સેકન્ડ"
+msgstr[1] "%d સેકન્ડો"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "ક્યારેય નહિં"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "મુખ્ય ઈન્ટરફેસ લાવી શક્યા નહિં"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "મહેરબાની કરીને ખાતરી કરો કે સ્ક્રીનસેવર યોગ્ય રીતે સ્થાપિત થયેલ છે"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ડિમન બનશો નહિં"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "ડિબગીંગ કોડ સક્રિય કરો"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "સ્ક્રીન સેવર અને લોકર પ્રક્રિયાને શરૂ કરો"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "સેવા %s અધિષ્ઠાપિત કરવામાં અસમર્થ: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s સુયોજિત કરી શકતા નથી"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "અયોગ્ય પાસવર્ડ."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "આ સમયે વપરાશની પરવાનગી નથી."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "સિસ્ટમના વપરાશની લાંબા સમય સુધી પરવાનગી નથી."
+
+#: ../src/gs-listener-dbus.c:1844
+msgid "failed to register with the message bus"
+msgstr "સંદેશા બસ સાથે રજીસ્ટર કરવામાં નિષ્ફળ"
+
+#: ../src/gs-listener-dbus.c:1854
+msgid "not connected to the message bus"
+msgstr "સંદેશા બસમાં જોડાયેલ નથી"
+
+#: ../src/gs-listener-dbus.c:1863
+msgid "screensaver already running in this session"
+msgstr "આ સત્રમાં સ્ક્રીનસેવર પહેલાથી જ ચાલી રહ્યું છે"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "સમય સમાપ્ત થઈ ગયો."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "તમારી Caps Lock કી ચાલુ છે."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "વપરાશકર્તા બદલો (_w)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "બહાર નીકળો (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U એ %h પર"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "પાસવર્ડ (_P):"
+
diff --git a/po/he.po b/po/he.po
new file mode 100644
index 0000000..10afb4c
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,756 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-09-15 22:59+0200\n"
+"Last-Translator: Yaron Shahrabani <sh.yaron at gmail.com>\n"
+"Language-Team: Hebrew <he at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "שומר מסך"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "קבע את העדפות שומר המסך"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>תצוגה מקדימה של שומר המסך</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>אזהרה: המסך לא יינעל עבור מנהל המערכת./b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_ניהול צריכת חשמל"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "התיחס למחשב כלא _פעיל לאחר:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "העדפות שומר המסך"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "תצוגה מקדימה של שומר המסך"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "הפעל _שומר מסך כאשר המחשב לא פעיל"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_נעל מסך כששומר המסך פועל"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_תצוגה מקדימה"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "ערכת נושא _לשומר המסך:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "ערכות נושא לשומר המסך"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "שומרי מסך"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activate when idle"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Allow embedding a keyboard into the window"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Allow logout"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Allow the session status message to be displayed"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "Allow the session status message to be displayed when the screen is locked."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Allow user switching"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Embedded keyboard command"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Lock on activation"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Logout command"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Screensaver theme selection mode"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Set this to TRUE to activate the screensaver when the session is idle."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The \"keyboard_command\" key must be set with the appropriate command."
+msgstr "Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The \"keyboard_command\" key must be set with the appropriate command."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Set this to TRUE to lock the screen when the screensaver goes active."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+msgstr "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The command that will be run, if the \"embedded_keyboard_enabled\" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output."
+msgstr "The command that will be run, if the \"embedded_keyboard_enabled\" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "The number of minutes after screensaver activation before locking the screen."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "The number of minutes of inactivity before the session is considered idle."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "The number of minutes to run before changing the screensaver theme."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The number of seconds of inactivity before signalling to power-management. This key is set and maintained by the session power-management agent."
+msgstr "The number of seconds of inactivity before signalling to power-management. This key is set and maintained by the session power-management agent."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+msgstr "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Theme for lock dialog"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Theme to use for the lock dialog."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+msgstr "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Time before locking"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Time before logout option"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Time before power-management baseline"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Time before session is considered idle"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Time before theme change"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>השאר הודעה עבור %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U ב־%h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_בטל"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_השאר הודעה"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_התנתק"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_החלף משתמש"
+
+#: ../data/lock-dialog-default.ui.h:11
+#: ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_התחבר"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "קוסמוס"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "הצגת שקופיות של תמונות מהקוסמוס"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "מבעבע את רגל הסמל של MATE ברחבי המסך"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "רגליים צפות"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "הצגת שקופיות של תמונות מתיקיית התמונות שלך"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "תיקיית התמונות"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "רשת פופ־ארטית של פעימות צבע"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "ריבועי פופ־ארט"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Show paths that images follow"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Occasionally rotate images as they move"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Print out frame rate and other statistics"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "The maximum number of images to keep on screen"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "The initial size and position of window"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "The source image to use"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - floats images around the screen"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. See --help for usage information.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "You must specify one image.  See --help for usage information.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Location to get images from"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "הצבע שישמש רקע לתמונות"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "אל תציג באקראי תמונות מהמיקום"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "אל תנסה למתוח תמוונת על המסך"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "מעתיק קבצים"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "מ:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "אל:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "מעתיק ערכות נושא"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "ערכת נושא לא תקינה"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "‏%s אינו ערכת נושא תקינה."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "מעתיק קובץ: %u מתוך %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Causes the screensaver to exit gracefully"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Query the state of the screensaver"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Query the length of time the screensaver has been active"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Tells the running screensaver process to lock the screen immediately"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "If the screensaver is active then switch to another graphics demo"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Turn the screensaver on (blank the screen)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "If the screensaver is active then deactivate it (un-blank the screen)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Poke the running screensaver to simulate user activity"
+
+#: ../src/mate-screensaver-command.c:78
+msgid "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+msgstr "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "The calling application that is inhibiting the screensaver"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "The reason for inhibiting the screensaver"
+
+#: ../src/mate-screensaver-command.c:84
+#: ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Version of this application"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "שומר המסך הוא %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "פעיל"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "לא פעיל"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "שומר המסך אינו מנוע מלפעול\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "שומר המסך מנוע מלפעול על ידי:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "שומר המסך היה פעיל במשך %d שניות.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "שומר המסך אינו פעיל כעת.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Show debugging output"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Show the logout button"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Command to invoke from the logout button"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Show the switch user button"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Message to show in the dialog"
+
+#: ../src/mate-screensaver-dialog.c:66
+#: ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "לא בשימוש"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178
+#: ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180
+#: ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "שם משתמש:"
+
+#: ../src/mate-screensaver-dialog.c:181
+#: ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "סיסמה:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "הינך מחוייב לשנות את סיסמתך מיידית (הסיסמה התיישנה)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "הינך מחוייב לשנות את סיסמתך מיידית (דרישת מנהל המערכת)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "פג תוקף חשבונך; אנא צור קשר עם מנהל המערכת שלך"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "לא סופקה סיסמה"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "סיסמה לא השתנתה"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "נכשל בהשגת שם משתמש"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "הקלד מחדש סיסמת UNIX חדשה:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "הכנס סיסמת UNIX חדשה:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "סיסמת UNIX (נוכחית):"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "שגיאה בזמן שינוי סיסמת NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "אתה חייב לבחור סיסמה ארוכה יותר"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "הסיסמה הייתה כבר בשימוש. בחר אחרת."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "אתה חייב לחכות יותר כדי לשנות את הסיסמה"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "סליחה, הסיסמאות אינן מתאימות"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "בודק..."
+
+#: ../src/mate-screensaver-dialog.c:304
+#: ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "האימות נכשל."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "מסך ריק"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "אקראי"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "שעה %d"
+msgstr[1] "%d שעות"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "דקה %d"
+msgstr[1] "%d דקות"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "שנייה %d"
+msgstr[1] "%d שניות"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "אף פעם"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "לא ניתן להעלות את המנשק הראשי"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "אנא וודא ששומר המסך מותקן כיאות."
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Don't become a daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Enable debugging code"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "טעינת שומר המסך ותוכנית הנעילה"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Unable to establish service %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Can't set PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "סיסמה שגויה."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "לא מורשה לקבל גישה בזמן זה."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "כבר לא מורשה לגשת למערכת"
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "נכשל ברישום עם ה־message bus"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "לא מוחבר ל־message bus"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "שומר המסך כבר רץ עבור התחברות זאת"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "עבר הזמן."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "מקש ה־Caps Lock לחוץ."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "הח_לף משתמש..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_התנתק"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "‏%U ב־%h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_סיסמה:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Reason for being away"
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "The reason for being away from the computer."
+#~ msgid "Copying '%s'"
+#~ msgstr "מעתיק '%s'"
+#~ msgid "From URI"
+#~ msgstr "מכתובת"
+#~ msgid "URI currently transferring from"
+#~ msgstr "הכתובת ממנה מעבירים"
+#~ msgid "To URI"
+#~ msgstr "אל כתובת"
+#~ msgid "URI currently transferring to"
+#~ msgstr "הכתובת אליה מעבירים"
+#~ msgid "Fraction completed"
+#~ msgstr "חלק שהסתיים"
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "החלק מההעברה שהסתיים כבר"
+#~ msgid "Current URI index"
+#~ msgstr "אינדקס כתובת נוכחי"
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "אינדקס כתובת נוכחי - מתחיל מ 1"
+#~ msgid "Total URIs"
+#~ msgstr "סך כל הכתובות"
+#~ msgid "Total number of URIs"
+#~ msgstr "המספר של כל הכתובות"
+#~ msgid "Connecting..."
+#~ msgstr "מתחבר..."
+#~ msgid "_Switch user..."
+#~ msgstr "_החלף משתמש..."
+#~ msgid "N"
+#~ msgstr "N"
+#~ msgid "S_witch to user:"
+#~ msgstr "ה_חלף למשתמש:"
+#~ msgid "Name"
+#~ msgstr "שם"
+#~ msgid "User"
+#~ msgstr "משתמש"
+#~ msgid "Show Details"
+#~ msgstr "הצג פרטים"
+
+#, fuzzy
+#~ msgid "Unknown error occurred."
+#~ msgstr "ארעה שגיאה לא ידועה."
+#~ msgid "_Screensaver"
+#~ msgstr "_שומר מסך"
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Disable running graphical themes while blanked"
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr "Enable running graphical themes while blanked (if applicable)"
+#~ msgid "That password was incorrect."
+#~ msgstr "הסיסמה שגויה."
+
diff --git a/po/hi.po b/po/hi.po
new file mode 100644
index 0000000..4d18955
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,754 @@
+# translation of mate-screensaver.master.po to Hindi
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Rajesh Ranjan <rranjan at redhat.com>, 2006, 2009.
+# Rajesh Ranjan <rajesh672 at gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-09-16 12:49+0530\n"
+"Last-Translator: Rajesh Ranjan <rajesh672 at gmail.com>\n"
+"Language-Team: Hindi <hindi.sf.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "स्क्रीनसेवर"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "अपना स्क्रीनसेवर पसंद सेट करें"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b> स्क्रीनसेवर पूर्वावलोकन</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>चेतावनी: रूट उपयोक्ता के लिए स्क्रीन लॉक नहीं होगा.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "उर्जा प्रबंधन (_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "कंप्यूटर को _idle के रूप में इसके बाद देखें:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "स्क्रीनसेवर पसंद"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "स्क्रीनसेवर पूर्वावलोकन"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "स्क्रीनसेवर सक्रिय करें जब कंप्यूटर निष्क्रिय हो (_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "जब सक्रीनसेवर सक्रिय हो तो स्क्रीन लॉक करें (_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "पूर्वावलोकन (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "स्क्रीनसेवर थीम (_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "स्क्रीनसेवर थीम"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "स्क्रीनसेवरs"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "निष्क्रिय रहने पर सक्रिय"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "विंडो में कीबोर्ड अंतःस्थापन की स्वीकृति दें"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "लॉगआउट की अनुमति दें"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "प्रदर्शन के लिए सत्र स्थिति संदेश की अनुमति दें"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "स्क्रीन लॉक किए जाने पर सत्र स्थिति संदेश की अनुमति दें."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "उपयोक्ता स्विचिंग की अनुमति दें"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "अंतःस्थापित कीबोर्ड कमांड"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "सक्रियकरण पर लॉक करें"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "कमांड लॉगआउट करें"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "स्क्रीनसेवर थीम चयन मोड"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "इसे सही पर सेट करें स्क्रीनसेवर को सक्रिय करने के लिए जब सत्र निष्क्रिय है."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"अनलॉक करने की कोशिश के दौरान विंडो में कीबोर्ड एंबेड करने के लिए इसे सही पर सेट करें. "
+"\"keyboard_command\" कुंजी को उचित कमांड के साथ जरूर सेट होना चाहिए."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "इसे सही पर सेट करें स्क्रीन को तब लॉक करने के लिए जब स्क्रीनसेवर सक्रिय हो जाता है."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr "भिन्न उपयोक्ता खाते में जाने के लिए अनलॉक संवाद में एक विकल्प देने के लिए इसे सही पर सेट करें."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"इसे सही पर सेट करें अनलॉक संवाद में एक विलंब के बाद लॉग आउट होने का एक विकल्प देने के लिए. "
+"विलंब \"logout_delay\" कुंजी में निर्दिष्ट है."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"कमांड चलेगा, यदि \"embedded_keyboard_enabled\" कुंजी सही पर सेट है, कीबोर्ड विजेट को "
+"विंडो में अंतःस्थापित करने के लिए. इस कमांड को XEMBED प्लग इंटरफेस को लागू करना चाहिए और "
+"मानक आउटपुट पर विंडो XID का आउटपुट देना चाहिए."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"लाने के लिए कमांड जब लॉगआउट बटन क्लिक किया जाता है. इस कमांड को बिना किसी अंतःक्रिया "
+"के उपयोक्ता को लॉग आउट करना चाहिए. यह कुंजी का प्रभाव है सिर्फ जब \"logout_enable\" "
+"कुंजी सही पर सेट है."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "स्क्रीन लॉक करने के पहले स्क्रीनसेवर सक्रियता के बाद मिनट की संख्या."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"अनलॉक संवाद में लॉगआउट विकल्प आने के पहले स्क्रीनसेवर सक्रियता के मिनट की संख्या. इस कुंजी "
+"का प्रभाव तभी सिर्फ है जब \"logout_enable\" कुंजी सही पर सेट है."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "सत्र के निष्क्रिय समझे जाने के पहले निष्क्रियता के मिनट की संख्या."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "स्क्रीनसेवर थीम के बदलने के पहले चलाने के लिए मिनट की संख्या."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"उर्जा प्रबंधन में संकेत के पहले की निष्क्रियता के सेकेंड की संख्या. यह कुंजी सेट है और सत्र उर्जा "
+"प्रबंधन प्रतिनिधि के द्वारा देखभाल की जाती है."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"स्क्रीनसेवर के द्वारा प्रयुक्त चयन मोड. स्क्रीनसेवर को बिना किसी थीम के सक्रिय करने पर "
+"सिर्फ \"सिर्फ खाली\" भी हो सकता है, \"एकल\" को स्क्रीनसेवर को सक्रियकरण पर सिर्फ एक "
+"थीम के प्रयोग के लिए (\"थीम\" कुंजी में निर्दिष्ट), और \"क्रमहीन\" स्क्रीनसेवर को "
+"सक्रियकरण पर क्रमहीन थीम के प्रयोग के लिए."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "लॉक संवाद के लिये थीम"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "लॉक संवाद के प्रयोग के लिये थीम."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"यह कुंजी निर्दिष्ट करता है स्क्रीनसेवर के द्वारा प्रयुक्त थीम की सूची. यह अनदेखा किया जाता "
+"है जब \"मोड\" कुंजी \"सिर्फ खाली\" है, थीम नाम देना चाहिए जब \"मोड\" \"एकल\" है, और "
+"थीम सूची देना चाहिए जब \"मोड\" \"क्रमहीन\" है."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "लॉकिंग से पहले का समय"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "लॉगआउट विकल्प से पहले का समय"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "उर्जा प्रबंधन बेसलाइन के पहले का समय"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "सत्र के निष्क्रिय माने जाने के पहले का समय"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "थीम बदलाव से पहले का समय"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R के लिए संदेश छोड़ें:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "रद्द करें (_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "संदेश छोड़ें (_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "लॉग आउट (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "उपयोक्ता बदलें (_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "अनलॉक करें (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "कॉसमॉस"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "कोसमोस के चित्र का स्लाइडशो दिखाएं"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "गनोम पाद लोगो स्क्रीन के गिर्द बबल"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "उत्प्लावित फीट"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "अपने चित्र फोल्डर से स्लाइडशो दिखाएं"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "चित्र फोल्डर"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "पल्सिंग रंग का एक pop-art-ish ग्रिड"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "पॉप अप वर्ग"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "पथ दिखायें जैसे चित्र अनुसरण करता है"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "कभी चित्रों को घूमाता है जैसे वे आगे बढ़ते हैं"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "फ्रेम दर और अन्य सांख्यिकी को छापें"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "स्क्रीन पर रखे जाने वाले चित्रों की अधिकतम संख्या"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "आरंभिक आकार और विंडो की स्थिति"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "प्रयोग के लिये श्रोत चित्र"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "चित्र - स्क्रीन के गिर्द चित्र तैरता है"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. देखें --मदद प्रयोग सूचना के लिये.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "आप जरूर एक चित्र निर्दिष्ट करें.  देखें --प्रयोग सूचना के लिये मदद देखें.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "स्थान जिससे विंब लेना है"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "छवि पृष्ठभूमि के प्रयोग के लिए रंग"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "स्थान से तस्वीर क्रमहीन मत करें"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "स्क्रीन पर छवि फैलाने की कोशिश मत करें"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "फ़ाइलें प्रतिलिपि कर रहे"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "द्वारा:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "प्रति:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "प्रसंग की नक़ल ले रहा है"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "अवैध स्क्रीनसेवर थीम"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s एक वैध स्क्रीनसेवर थीम प्रतीत नहीं होता है."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "फाइल कॉपी कर रहा है: %u %u का"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "स्क्रीनसेवर के शांति से निकल जाने का कारण बना"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "स्क्रीनसेवर की स्थिति प्रश्नगत करें"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "समय की लंबाई बताएं जबसे स्क्रीनसेवर के समय की लंबाई सक्रिय है"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "स्क्रीन को तत्काल लॉक करने के लिए कार्यशील स्क्रीनसेवर प्रक्रिया कहता है"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "यदि स्क्रीनसेवर सक्रिय है तब दूसरे आलेखीय डेमो पर जाएँ"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "स्क्रीनसेवर चालू करें (स्क्रीन खाली करें)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "अगर स्क्रीनसेवर सक्रिय है तब इसे निष्क्रिय करें (स्क्रीन खाली करें)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "उपयोक्ता क्रियाकलाप को सिमुलेट करने के लिये कार्यशील स्क्रीनसेवर आगे बढायें"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "सक्रिय करने से स्क्रीनसेवर रोक रहा है.  बाधा सक्रिय रहने के दौरान कमांड खंड."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "स्क्रीनसेवर रोकने के लिये कॉलिंग अनुप्रयोग"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "स्क्रीनसेवर रोकने के लिये कारण"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "इस अनुप्रयोग का संस्करण"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "%s स्क्रीनसेवर है\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "सक्रिय"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "निष्क्रिय"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "The screensaver is not inhibited\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "The screensaver is being inhibited by:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "स्क्रीनसेवर %d सेकेंड से सक्रिय रहा है.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "यह स्क्रीन सेवर अभी सक्रिय नहीं है.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "डिबगिंग आउटपुट दिखायें"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "लॉगआउट बटन दिखायें"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "लॉगआउट बटन लाने के लिये कमांड"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "उपयोक्ता बदलें बटन दिखाएँ"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "संवाद में दिखाने के लिए संदेश"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "संदेश"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "प्रयुक्त नहीं"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "उपयोक्ता नाम:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "शब्दकूट: "
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "आपको अपना पासवर्ड आवश्यक रूप से तत्काल बदलना होगा (पासवर्ड कालबाधित हो चुका है)."
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "आपको अपना पासवर्ड आवश्यक रूप से तत्काल बदलना होगा (रूट द्वारा बाध्य)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "आपका खाता खत्म हो गया है, कृपया अपने तंत्र प्रशासक से संपर्क करें"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "कोई पासवर्ड नहीं दिया"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "पासवर्ड अपरिवर्तित"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "उपयोक्ता नाम नहीं मिला"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "नया यूनिक्स पासवर्ड दोबारा टाइप करें:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "नया यूनिक्स पासवर्ड भरें:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(वर्तमान) यूनिक्स पासवर्ड:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "एनआईएस पासवर्ड परिवर्तन के दौरान त्रुटि."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "आपको अधिक लंबा पासवर्ड चुनना होगा"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "पासवर्ड पहले ही उपयोग किया जा चुका है. अन्य चुनें."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "अपने पासवर्ड को बदलने हेतु आपको अधिक इंतजार करना होगा"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "क्षमा करें, पासवर्ड के जोड़ नहीं मिलते"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "जांच रहा है..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "सत्यापन असफल"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "खाली स्क्रीन"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "बेतरतीब"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d घंटा"
+msgstr[1] "%d घंटा"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d मिनट"
+msgstr[1] "%d मिनट"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d सेकेंड"
+msgstr[1] "%d सेकेंड"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "कभी नहीं"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "मुख्य अंतरफलक लोड न कर सका"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "निश्चित करें कि स्क्रीनसेवर विधिवत अधिष्ठापित है"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "डेमॉन न होयें"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "डिबगिंग कोड सक्रिय करें"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "स्क्रीन सेवर और लॉकर प्रोग्राम लॉन्च करें"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "सेवा %s: प्रतिष्ठापित करने में अक्षम %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s नियत नहीं कर पाया"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "गलत शब्दकूट."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "इस समय अभिगम पाने के लिये अनुमति नहीं."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "सिस्टम अभिगम के लिये अब अनुमति प्राप्त नहीं है."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "संदेश बस के साथ पंजीयन में विफल"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "संदेश बस से जुड़ने में विफल"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "इस सत्र में स्क्रीनसेवर पहले से चल रहा है"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "समय समाप्त हो गया है."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "आपके पास कैप्स लॉक कुंजी चालू है."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "उपयोक्ता बदलें (_w)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "लॉग आउट (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U %h पर"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "पासवर्ड: (_P)"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100644
index 0000000..99cce3d
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,744 @@
+# Croatian translation for mate-screensaver
+# Copyright (c) (c) 2006 Canonical Ltd, and Rosetta Contributors 2006
+# This file is distributed under the same license as the mate-screensaver package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-09 12:29+0200\n"
+"PO-Revision-Date: 2008-03-22 14:34+0000\n"
+"Last-Translator: Ante Karamatić <ivoks at grad.hr>\n"
+"Language-Team: Croatian <hr at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Launchpad-Export-Date: 2008-05-28 00:36+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Čuvar zaslona"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Podesite postavke čuvara zaslona"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Pregled čuvara zaslona</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Upozorenje: zaslon neće biti zaključan za root korisnika.<b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "Upravljanje _energijom"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Smatraj računalo _neaktivnim nakon:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Postavke čuvara zaslona"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Pregled čuvara zaslona"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Pokreni čuvara zaslona kada je računalo neaktivno"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Zaključaj zaslon kada je čuvar zaslona aktivan"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "_Pregled"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "_Tema čuvara:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "Teme čuvara zaslona"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Čuvari zaslona"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Pokreni dok je je korisnik neaktivan"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Dozvoli tipkovnicu u prozoru"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Dozvoli odjavu"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Dozvoli prebacivanje korisnika"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "Naredba tipkovnice"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "Zaključaj prilikom pokretanja"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "Odjavna naredba"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "Razlog odsutnosti"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "Stanje odabira teme čuvara ekrana"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Postaviti za pokretanje čuvara zaslona prilikom neaktivne prijave."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Postavite na ISTINITO da bi dozvolili umetanje tipkovnice u prozor pri "
+"pokušaju otključavanja. Tipka \"keyboard_command\" mora biti namještena "
+"odgovarajućom naredbom."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Postaviti za zaključavanje zaslona prilikom aktiviranja čuvara zaslona."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Postaviti za ponudu opcije u dijalogu otključavanja za prebacivanje na drugi "
+"korisnički račun."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Postaviti za ponudi opcije u dijalogu otključavanja za odjavljivanje nakon "
+"odgode. Vrijeme odgode je određeno u \"odjava_odgoda\" tipki."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Naredba koja će se pokrenuti za umetanje virtualne tipkovnice u prozor, ako "
+"je \"embedded_keyboard_enabled\" namješten na ISTINITO. Ova naredba bi "
+"trebala implementirati XEMBED utično sučelje i davati XID prozora na izlazu."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Naredba koja će se pozvati prilikom klika na odjavnu tipku. Ova naredba "
+"jednostavno treba odjaviti korisnika bez ikakve interakcije. Ova tipka ima "
+"utjecaja samo ako je postavljena tipka \"odjava_omogućeno\"."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Broj minuta potreban da se zaslon zaključa nakon pokretanja čuvara zaslona."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Broj minuta nakon pokretanja čuvara zaslona prije nego što će se pojaviti "
+"opcija za odjavu korisnika. Ovaj ključ se koristi samo ako je ključ "
+"\"logout_enable\" postavljen na istinito."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Broj minuta neaktivnosti potrebnih prije nego se prijava proglasi neaktivnom."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"Broj minuta rada čuvara zaslona potrebnih prije mjenjanja njegove teme."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Broj sekundi neaktivnosti prije nego što se obavijesti upravljača energijom. "
+"Ovu postavku namješta i održava agent upravljanja energijom."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "Razlog odsutnosti od računala."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Odabir stanja čuvara zaslona. Može biti \"zatamnjeno\", time čuvar zaslona "
+"radi bez tema, \"jedan\" radi samo sa jednom temom (odabranom \"tema\" "
+"tipkom), i \"nasumičan\" radi sa nasumičnim odabirom tema."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema za dijalog zaključavanja"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema koja će se koristiti za dijalog zaključavanja"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Ovaj ključ precizira listu tema čuvara zaslona. Zanemaren je kada je ključ "
+"\"mode\" \"blank-only\", no kada je \"mode\" \"single\" prikazat će ime "
+"teme, te listu tema kada je \"mode\" \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Vrijeme potrebno prije zaključavanja"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Vrijeme potrebno prije odjavne opcije"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Vrijeme potrebno prije nulte linije upravljanja energijom"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Vrijeme potrebno da se utvrdi mirovanje prijave"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Vrijeme potrebno prije promjene teme"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Ostaviti poruku za %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U na %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Odustani"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "_Ostavi poruku"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "_Odjava"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Zamijeni korisnika"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1366
+msgid "_Unlock"
+msgstr "_Otključaj"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Svemir"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Prikaži niz slika svemira"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Prikazuje MATE logo u mjehurićima preko zaslona"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Lebdeće noge"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Prikaži niz slika iz mape Slike"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "mapa Slike"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pop umjetnička mreža pulsirajućih boja."
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Pop umjetnički kvadrati"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr ""
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Povremeno rotiranje slika dok se pomiču"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Ispis broja slika u sekundi i drugih statistika"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Najveći broj slika koje će se zadržatii na ekranu"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_SLIKE"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Početna veličina i položaj prozora"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ŠIRINAxVISINA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Izvorna slika"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - lebdeće slike oko zaslona"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Vidi --help za informacije o korištenju.\n"
+
+#: ../savers/floaters.c:1209
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Morate navesti jednu sliku. Vidi --help za informacije o korištenju.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Mjesto s kojeg želite slike"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Boja pozadine za slike"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr ""
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ne pokušavaj rastegnuti slike na ekranu"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopiram datoteke"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Od:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Za:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Neispravna tema čuvara zaslona"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopiram datoteku: %u od %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Uzrokuje pravilan izlazak iz čuvara zaslona"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Ispitaj stanje čuvara zaslona"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Određivanje duljine trajanja čuvara zaslona"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Govori pokrenutom procesu čuvara zaslona da odmah zaključa zaslon"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Ako je čuvar zaslona aktivan prebaci na drugu animaciju"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Pokreni čuvar zaslona (zatamni zaslon)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Ako je čuvar zaslona aktivan, deaktiviraj ga (obnovi sliku na zaslonu)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Navedi čuvara zaslona da misli da je korisnik aktivan"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Spriječavanje aktiviranja čuvara zaslona. Naredba blokira dok je zabrana "
+"aktivna."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Pozivni program koji spriječava čuvara zaslona"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Razlog spriječavanja čuvara zaslona"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Verzija ovog programa"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Čuvar zaslona je %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "aktivan"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "neaktivan"
+
+#: ../src/mate-screensaver-command.c:321
+#, fuzzy
+msgid "The screensaver is not inhibited\n"
+msgstr "Čuvar zaslona je %s\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, fuzzy
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Čuvar zaslona je %s\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Čuvar zaslona je aktivan %d sekundi.\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "Prikaži detaljni ispis rada"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "Prikaži odjavnu tipku"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "Naredba za pozivanje pritiskom na odjavnu tipku"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "Prikaži tipku za promjenu korisnika"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "Poruka koju treba prikazati u dialogu"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "PORUKA"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Korisničko ime:"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Lozinka:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Morate odmah promijeniti lozinku (zastarjela lozinka)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Morate odmah promijeniti lozinku (administrator je naredio)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Vaš korisnički račun je istekao; molim kontaktirajte administratora sustava"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "Lozinka nije unešena"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "Lozinka nepromijenjena"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Ne mogu saznati korisničko ime"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "Ponovno upišite UNIX lozinku:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "Upišite novu UNIX lozinku:"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "(trenutna) UNIX lozinka:"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "Greška pri promjeni NIS lozinke."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "Morate odabrati dužu lozinku"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "Lozinka je već korištena. Odaberite neku drugu."
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "Morate pričekati nešto duže za promijenu lozinke"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "Na žalost, lozinke se ne podudaraju"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Provjeravanje..."
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autentikacija nije uspjela."
+
+#: ../src/mate-screensaver-preferences.c:515
+msgid "Blank screen"
+msgstr "Zatamni zaslon"
+
+#: ../src/mate-screensaver-preferences.c:521
+msgid "Random"
+msgstr "Nasumično"
+
+#: ../src/mate-screensaver-preferences.c:971
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d sat"
+msgstr[1] "%d sata"
+msgstr[2] "%d sati"
+
+#: ../src/mate-screensaver-preferences.c:974
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minute"
+msgstr[1] "%d minute"
+msgstr[2] "%d minuta"
+
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekunda"
+msgstr[1] "%d sekunde"
+msgstr[2] "%d sekundi"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:986
+#: ../src/mate-screensaver-preferences.c:994
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:989
+#: ../src/mate-screensaver-preferences.c:997
+#: ../src/mate-screensaver-preferences.c:1001
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1016
+msgid "Never"
+msgstr "Nikad"
+
+#: ../src/mate-screensaver-preferences.c:1443
+msgid "Could not load the main interface"
+msgstr "Ne mogu učitati glavno sučelje"
+
+#: ../src/mate-screensaver-preferences.c:1445
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Provjerite je li čuvar zaslona pravilno instaliran"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nemoj radit u pozadini"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Omogući pronalaženje grešaka u programu"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nije moguće ostvariti servis %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Nije moguće postaviti PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Neispravna lozinka."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Trenutno nemate dopuštenje ulaza."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Nemate dopuštenje ulaza u sustav."
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "ne mogu se registrirati na sabirnicu poruka"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "nisam spojen sa sabirnicom poruka"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "čuvar zaslona već pokrenut u ovoj prijavi"
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "Vrijeme je isteklo."
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr "Uključena vam je Caps Lock tipka."
+
+#: ../src/gs-lock-plug.c:1346
+msgid "S_witch User..."
+msgstr "Pro_mjena korisnika..."
+
+#: ../src/gs-lock-plug.c:1355
+msgid "Log _Out"
+msgstr "_Odjava"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1532
+msgid "%U on %h"
+msgstr "%U na %h"
+
+#: ../src/gs-lock-plug.c:1546
+msgid "_Password:"
+msgstr "_Lozinka:"
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..932da48
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,772 @@
+# Hungarian translation for mate-screensaver
+# Copyright (c) (c) 2005 Canonical Ltd, and Rosetta Contributors 2005
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Szilveszter Farkas <szilveszter.farkas at gmail dot com>, 2005.
+# Gabor Kelemen <kelemeng at mate dot hu>, 2005, 2006, 2007, 2008, 2009, 2010.
+
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-22 12:57+0100\n"
+"PO-Revision-Date: 2009-09-08 17:56+0200\n"
+"Last-Translator: Gabor Kelemen <kelemeng at mate dot hu>\n"
+"Language-Team: Hungarian <mate at fsf dot hu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Rosetta-Version: 0.1\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Képernyővédő"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "A képernyővédő tulajdonságainak beállítása"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Képernyővédő előnézete</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+"<b>Figyelmeztetés: a képernyő nem kerül zárolásra a rendszergazda számára.</"
+"b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Energiakezelés"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "A számítógé_p üresjáratba kerül:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Képernyővédő tulajdonságai"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Képernyővédő előnézete"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Képernyővédő aktiválása üresjáratban"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "Képernyő _zárolása, ha a képernyővédő aktív"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Előnézet"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Képernyő_védő-téma:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Képernyővédő-témák"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Képernyővédők"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktiválás üresjáratban"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Billentyűzet beágyazásának engedélyezése az ablakba"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Kijelentkezés engedélyezése"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "A munkamenet állapotüzenete megjeleníthető"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "A munkamenet állapotüzenete megjeleníthető, ha a képernyő zárolva van."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Felhasználóváltás engedélyezése"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Beágyazott billentyűzet parancs"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Zárolás aktiváláskor"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Kijelentkezési parancs"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "A képernyővédő témakiválasztásának módja"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Állítsa ezt igazra a képernyővédő aktiválásához, ha a munkamenet "
+"üresjáratban van."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Állítsa ezt igazra billentyűzet beágyazásához az ablakba a feloldási "
+"kísérletkor. A „keyboard_command” kulcsot be kell állítani a megfelelő "
+"parancsra."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Állítsa ezt igazra a képernyő zárolásához a képernyővédő aktiválásakor."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Állítsa ezt igazra, ha a zárolás feloldása párbeszédablak felajánlja a "
+"felhasználóváltás lehetőségét."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Állítsa ezt igazra, ha a zárolás feloldása párbeszédablak felajánlja a "
+"kijelentkezés lehetőségét egy késleltetés után. A késleltetés a "
+"„logout_delay” kulcsban adható meg."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"A billentyűzet felületi elem ablakba ágyazásához futtatandó parancs, ha az "
+"„embedded_keyboard_enabled” kulcs be van állítva. A parancsnak meg kell "
+"valósítania egy XEMBED csatolófelületet és egy ablak XID-t kell kimenetként "
+"előállítania a szabványos kimenetre."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"A kijelentkezés gomb megnyomásakor meghívandó parancs. Ennek a parancsnak "
+"egyszerűen, beavatkozás nélkül ki kell jelentkeztetnie a felhasználót. Ez a "
+"kulcs csak akkor hatásos, ha a „logout_enable” kulcs értéke igaz."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"A képernyővédő aktiválásától a képernyő zárolásáig eltelő percek száma."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"A képernyővédő aktiválásától a kijelentkezés lehetőségének megjelenéséig "
+"eltelő percek száma a zárolás feloldása párbeszédablakban. Ez a kulcs csak "
+"akkor hatásos, ha a „logout_enable” kulcs értéke igaz."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "A munkamenet üresjárati állapotúvá nyilvánításáig eltelő percek száma."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "A képernyővédő témájának cseréje előtt eltelő percek száma."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Inaktívan töltött másodpercek száma az energiakezelés értesítése előtt. Ezt "
+"a kulcsot a munkamenet energiakezelő ügynöke állítja be és tartja karban."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"A képernyővédő által használandó kijelölési mód. Lehetséges értékek: „blank-"
+"only” - ne használjon témákat a képernyővédő aktiválásakor, „single” - csak "
+"egy (a „themes” kulcsban megadott) téma használata a képernyővédő "
+"aktiválásakor és „random” - a képernyővédő aktiválása véletlen téma "
+"használatával."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "A zárolási párbeszédablak témája"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "A zárolási párbeszédablakban használandó téma."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Ez a kulcs megadja a képernyővédő által használandó témák listáját. Ez "
+"figyelmen kívül marad, ha a „mode” kulcs értéke „blank-only”, ha a „mode” "
+"értéke „single”, akkor a téma nevét adja meg és a témák listáját adja, ha a "
+"„mode” értéke „random”."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "A zárolásig eltelő idő"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "A kijelentkezési lehetőség megjelenéséig eltelő idő"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Az energiakezelési tevékenységig eltelő idő"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "A munkamenet üresjárati állapotúvá nyilvánításáig eltelő idő"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "A témaváltásig eltelő idő"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Üzenet hagyása a következőnek: %R</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U a következőn: %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "Mé_gse"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Ü_zenet hagyása"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Kijelentkezés"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Felhasználó_váltás"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1372
+msgid "_Unlock"
+msgstr "_Feloldás"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kozmosz"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Egy diavetítés a kozmosz képeiből"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "A MATE tappancs logót lebegteti körbe a képernyőn"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Lebegő tappancs"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Egy diavetítés a Képek mappából"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Képek mappa"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pulzáló színek pop-artos rácsa"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop art négyzetek"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Használati információkért lásd a --help kapcsolót.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "A képek által követett útvonalak megjelenítése"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "Képek véletlenszerű forgatása mozgatás közben"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Képkockasebesség és egyéb statisztikák kiírása"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "A képernyőn tartandó képek maximális száma"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_KÉPEK"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "Az ablak kezdeti mérete és pozíciója"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "SZÉLESSÉGxMAGASSÁG+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "A használandó forráskép"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "kép – képeket lebegtet körbe a képernyőn"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Meg kell adnia egy képet. Használati információkért lásd a --help "
+"kapcsolót.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Képek helye"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ÚTVONAL"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Képek háttereként használandó szín"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "„#rrggbb”"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Ne véletlenszerűsítse a képeket a hely alapján"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ne próbálja nyújtani a képeket a képernyőn"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Fájlok másolása"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Forrás:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Cél:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Témák másolása"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Érvénytelen képernyővédő téma"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "A fájl (%s) nem tűnik érvényes képernyővédő témának."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Fájl másolása: %u/%u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "A képernyővédő „elegáns” bezárása"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "A képernyővédő állapotának lekérdezése"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Azon időtartam lekérdezése, amíg a képernyővédő aktív volt"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "A futó képernyővédő-folyamatot kéri a képernyő azonnali zárolására"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Ha a képernyővédő aktív, akkor egy másik grafikus demóba váltson"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Képernyővédő bekapcsolása (képernyő elsötétítése)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Ha a képernyővédő aktív, akkor deaktiválja (képernyő visszaállítása)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "A futó képernyőkímélő szimuláljon felhasználói aktivitást"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"A képernyővédő aktiválásának felfüggesztése. A parancs blokkolásra kerül, "
+"amíg a felfüggesztés aktív."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "A képernyővédőt felfüggesztő hívó alkalmazás"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "A képernyővédő felfüggesztésének oka"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Ezen alkalmazás verziója"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "A képernyővédő %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktív"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inaktív"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "A képernyővédő nincs korlátozva\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "A képernyővédőt korlátozza:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "A képernyővédő %d másodpercig volt aktív.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "A képernyővédő jelenleg nem aktív.\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Hibakeresési kimenet megjelenítése"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Kijelentkezés gomb megjelenítése"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "A kijelentkezés gomb által meghívandó parancs"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Felhasználóváltás gomb megjelenítése"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "A párbeszédablakban megjelenítendő üzenet"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "ÜZENET"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "Nincs használatban"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Felhasználónév:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Jelszó:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Azonnal meg kell változtatnia a jelszavát (a régi jelszó lejárt)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Azonnal meg kell változtatnia a jelszavát (a rendszergazda kérése)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Az Ön felhasználói fiókja lejárt; lépjen kapcsolatba a rendszergazdával"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "Nincs jelszó megadva"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "A jelszó nem változott"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "A felhasználónév nem található"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Adja meg ismét az új UNIX jelszót:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Adja meg az új UNIX jelszót:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "(jelenlegi) UNIX jelszó:"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "Hiba a NIS jelszó módosítása közben."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "Válasszon hosszabb jelszót"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "A megadott jelszót már használta. Adjon meg egy másikat."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "Még várnia kell a jelszó megváltoztatásával"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Sajnálom, a megadott jelszavak nem egyeznek meg"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "Ellenőrzés…"
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "A hitelesítés meghiúsult."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Üres képernyő"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Véletlen"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d óra"
+msgstr[1] "%d óra"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d perc"
+msgstr[1] "%d perc"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d másodperc"
+msgstr[1] "%d másodperc"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s.%s.%s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s.%s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Soha"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "A fő kezelőfelület nem tölthető be"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr ""
+"Kérem győződjön meg arról, hogy a képernyővédő megfelelően telepítve van-e"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Ne démonként fusson"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Hibakeresési kód engedélyezése"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Képernyővédő és -zároló program indítása"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nem sikerült elindítani a(z) %s szolgáltatást: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Nem állítható be a PAM_TTY=%s változó"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Helytelen jelszó."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Jelenleg nincs engedélye hozzáférést szerezni."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Már nem engedélyezett a rendszer elérése."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "nem sikerült regisztrálni az üzenetbusszal"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "nincs kapcsolat az üzenetbusszal"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "már fut képernyővédő ebben a munkamenetben"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Az idő lejárt."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "A Caps Lock be van kapcsolva."
+
+#: ../src/gs-lock-plug.c:1352
+msgid "S_witch User..."
+msgstr "Felhasználó_váltás…"
+
+#: ../src/gs-lock-plug.c:1361
+msgid "Log _Out"
+msgstr "_Kijelentkezés"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1537
+msgid "%U on %h"
+msgstr "%U ezen: %h"
+
+#: ../src/gs-lock-plug.c:1551
+msgid "_Password:"
+msgstr "_Jelszó:"
diff --git a/po/id.po b/po/id.po
new file mode 100644
index 0000000..a18f59e
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,933 @@
+# Indonesian translation of mate-screensaver.
+# Copyright (C) 2006 THE mate-screensaver'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the mate-screensaver package.
+# ahmad riza h nst <rizahnst at id.gnome.org>, 2006.
+# 
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-07-28 11:07+0700\n"
+"PO-Revision-Date: 2006-07-28 11:25+0700\n"
+"Last-Translator: ahmad riza h nst <rizahnst at id.gnome.org>\n"
+"Language-Team: Indonesian <kontak at id.gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit"
+
+# "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Screensaver"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Tentukan setingan screensaver anda"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Preview screensaver</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Peringatan: layar tidak akan terkunci untuk pengguna root.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Regard the computer as _idle after:"
+msgstr "Tentukan komputer menjad_i nganggur setelah:"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Screensaver Preferences"
+msgstr "Setingan Screensaver"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preview"
+msgstr "Preview Screensaver"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktifkan screensaver ketika komputer lagi nganggur"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Lock screen when screensaver is active"
+msgstr "Kunci _layar ketika screensaver lagi aktif"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Preview"
+msgstr "_Preview"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Screensaver theme:"
+msgstr "Tema _screensaver:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Screensaver themes"
+msgstr "Tema screensaver"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Screensaver"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktif ketika nganggur"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow logout"
+msgstr "Boleh keluar"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow user switching"
+msgstr "Boleh pindah pengguna"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Lock on activation"
+msgstr "Kunci pada aktifasi"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Logout command"
+msgstr "Perintah keluar"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Screensaver theme selection mode"
+msgstr "Mode tema pemilihan screensaver"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Buat menjadi TRUE untuk mengaktifkan screensaver ketika sesi lagi nganggur."
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Buat menjadi TRUE untuk menguncilayar ketika screensaver lagi aktif."
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Buat menjadi TRUE untuk menawarkan pilihan pada dialog buka kunci untuk "
+"memindah ke account pengguna yang berbeda."
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Buat menjadi TRUE untuk menawarkan pilihan pada dialog buka kunci untuk "
+"keluar setelah jeda. Jedanya ditentukan pada kunci \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"perintah yang dijalankan ketika tombol keluar diklik. Perintah ini dengan "
+"sederhana mengeluarkan pengguna tanpa adanya interaksi. kunci ini hanya "
+"berlaku jika kunci \"logout_enable\" dipilih menjadi TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Berapa menit setelah aktifasi screensaver sebelum mengunci layar."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Berapa menit setelah aktifasi screensaver sebelum pilihan logout muncul di "
+"dialog buka kunci. Kunci ini hanya berlaku jika kunci \"logout_ebable\" "
+"dibuat menjadi TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Berapa menit tidak aktif sebelum sesi di anggap sebagai nganggur."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Berapa menit untuk berjalan sebelum mengganti tema screensaver."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Mode pemilihan yang digunakan oleh screensaver. Mungkin \"hanya-kosong\" "
+"untuk mengaktifkan screensaver tanpa menggunakan tema lain pada aktifasi, "
+"\"tunggal\" untuk mengaktifkan screensaver menggunakan hanya satu tema pada "
+"saat aktifasi (ditentukan pada kunci \"tema\"), dan \"acak\" untuk "
+"mengaktifkan screensaver menggunakan tema acak pada saat aktifasi."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "Theme for lock dialog"
+msgstr "Tema untuk dialog penguncian"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "Theme to use for the lock dialog."
+msgstr "Tema yang digunakan untuk dialog penguncian."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Kunci ini menentukan daftar dari tema yang digunakan oleh screensaver. Akan "
+"diabaikan ketika kunci \"mode\" adalah \"hanya-kosong\", akan menyediakan "
+"nama tema ketika \"mode\" adalah \"tunggal\", dan menyediakan daftar tema "
+"ketika \"mode\" adalah \"acak\"."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "Time before activation"
+msgstr "Waktu sebelum aktifasi"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "Time before locking"
+msgstr "Waktu sebelum penguncian"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "Time before logout option"
+msgstr "Waktu sebelum pilihan keluar"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "Time before theme change"
+msgstr "Waktu sebelum tema berganti"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span·size=\"small\">%U pada %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span·size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:5 ../src/mate-screensaver-dialog.c:172
+#: ../src/mate-screensaver-dialog.c:173
+msgid "Password:"
+msgstr "Kata sandi:"
+
+#: ../data/lock-dialog-default.glade.h:6 ../src/gs-lock-plug.c:1700
+msgid "S_witch to user:"
+msgstr "_Pindah ke pengguna:"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Batal"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Log Out"
+msgstr "Kel_uar"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Switch User..."
+msgstr "_Pindah Pengguna..."
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch user..."
+msgstr "_Pindah pengguna..."
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1429
+msgid "_Unlock"
+msgstr "B_uka kunci"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Balonkan logo kaki MATE di sekitar layar"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Kaki Mengapung"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Tampilkan slideshow dari gambar cosmos"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Tampilkan slideshow dari folder Gambar anda"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Folder gambar"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Warna pulsa baris pop-art-ish"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Lapangan pop art"
+
+#: ../savers/floaters.c:1165
+msgid "show paths that images follow"
+msgstr "tampilkan lokasi gambar"
+
+#: ../savers/floaters.c:1172
+msgid "occasionally rotate images as they move"
+msgstr "sekali-sekali putar gambar ketika berpindah"
+
+#: ../savers/floaters.c:1179
+msgid "print out frame rate and other statistics"
+msgstr "cetak kecepatan bingkai dan statistik lainnya"
+
+#: ../savers/floaters.c:1187
+msgid "the maximum number of images to keep on screen"
+msgstr "jumlah maksimal gambar ditampilkan pada layar"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1191
+msgid "N"
+msgstr "N"
+
+#: ../savers/floaters.c:1198
+msgid "the source image to use"
+msgstr "gambar yang akan digunakan"
+
+#: ../savers/floaters.c:1205
+msgid "the initial size and position of window"
+msgstr "ukuran awal dan posisi jendela"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1210
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LEBARxTINGGI+X+Y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1228
+msgid "image - floats images around the screen"
+msgstr "image - mengapungkan gambar di layar"
+
+#: ../savers/floaters.c:1238
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Lihat --help untuk informasi penggunaan.\n"
+
+#: ../savers/floaters.c:1247
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Anda harus menentukan satu gambar.  Lihat --help untuk informasi lanjut.\n"
+
+#: ../savers/slideshow.c:47
+msgid "Location to get images from"
+msgstr "Lokasi untuk mendapat gambar"
+
+#: ../savers/slideshow.c:47
+msgid "PATH"
+msgstr "LOKASI"
+
+#: ../src/cut-n-paste/fusa-display.c:119 ../src/cut-n-paste/fusa-user.c:150
+msgid "Manager"
+msgstr "Pengelola"
+
+#: ../src/cut-n-paste/fusa-display.c:120
+msgid "The manager which owns this object."
+msgstr "Pengeloa yang memiliki objek ini."
+
+#: ../src/cut-n-paste/fusa-display.c:127
+msgid "Name"
+msgstr "Nama"
+
+#: ../src/cut-n-paste/fusa-display.c:128
+msgid "The name of the X11 display this object refers to."
+msgstr "Nama dari tampilan X11 yang mereferensikan objek ini."
+
+#: ../src/cut-n-paste/fusa-display.c:134
+#: ../src/cut-n-paste/fusa-user-menu-item.c:163
+msgid "User"
+msgstr "Pengguna"
+
+#: ../src/cut-n-paste/fusa-display.c:135
+msgid "The user currently logged in on this virtual terminal."
+msgstr "Pengguna sedang login pada terminal virtual ini."
+
+#: ../src/cut-n-paste/fusa-display.c:141
+msgid "Console"
+msgstr "Konsol"
+
+#: ../src/cut-n-paste/fusa-display.c:142
+msgid "The number of the virtual console this display can be found on, or %-1."
+msgstr "Nomor dari konsol virtual tampilan ini dapat ditemukan pada, atau %-1."
+
+#: ../src/cut-n-paste/fusa-display.c:148
+msgid "Nested"
+msgstr "Bersarang"
+
+#: ../src/cut-n-paste/fusa-display.c:149
+msgid "Whether or not this display is a windowed (Xnest) display."
+msgstr "Apakah tampilan ini ditampilkan berjendela (Xnest)."
+
+#: ../src/cut-n-paste/fusa-manager.c:1453
+msgid "The display manager could not be contacted for unknown reasons."
+msgstr "Pengelola tampilan tidak dapat dihubungi untuk alasan tidak jelas."
+
+#: ../src/cut-n-paste/fusa-manager.c:1460
+msgid "The display manager is not running or too old."
+msgstr "Pengelola tampilan tidak jalan atau terlalu tua."
+
+#: ../src/cut-n-paste/fusa-manager.c:1463
+msgid "The configured limit of flexible servers has been reached."
+msgstr "Batasan server fleksibel yang telah dikonfigurasikan telah tercapai."
+
+#: ../src/cut-n-paste/fusa-manager.c:1466
+msgid "There was an unknown error starting X."
+msgstr "Ada kesalahan tidak jelas ketika menjalankan X."
+
+#: ../src/cut-n-paste/fusa-manager.c:1469
+msgid "The X server failed to finish starting."
+msgstr "Server X gagal berjalan."
+
+#: ../src/cut-n-paste/fusa-manager.c:1472
+msgid "There are too many X sessions running."
+msgstr "Ada begitu banyak sesi X sedang berjalan."
+
+#: ../src/cut-n-paste/fusa-manager.c:1475
+msgid "The nested X server (Xnest) cannot connect to your current X server."
+msgstr ""
+"Server bersarang X (Xnest) tidak dapat tersambung ke server X anda sekarang."
+
+#: ../src/cut-n-paste/fusa-manager.c:1478
+msgid "The X server in the MDM configuration could not be found."
+msgstr "Server X pada konfigurasi MDM tidak dapat ditemukan."
+
+#: ../src/cut-n-paste/fusa-manager.c:1481 ../src/cut-n-paste/mdmcomm.c:492
+msgid ""
+"Trying to set an unknown logout action, or trying to set a logout action "
+"which is not available."
+msgstr ""
+"Mencoba untuk menentukan aksi keluar tak dikenal, atau mencoba menentukan "
+"aksi keluar yang tidak tersedia."
+
+#: ../src/cut-n-paste/fusa-manager.c:1484 ../src/cut-n-paste/mdmcomm.c:495
+msgid "Virtual terminals not supported."
+msgstr "Terminal virtual tidak didukung."
+
+#: ../src/cut-n-paste/fusa-manager.c:1487
+msgid "Invalid virtual terminal number."
+msgstr "Nomor terminal virtual salah."
+
+#: ../src/cut-n-paste/fusa-manager.c:1490 ../src/cut-n-paste/mdmcomm.c:499
+msgid "Trying to update an unsupported configuration key."
+msgstr "Mencoba untuk memperbarui kunci konfigurasi yang tidak didukung."
+
+#: ../src/cut-n-paste/fusa-manager.c:1493
+msgid "~/.Xauthority file badly configured or missing."
+msgstr "Berkas ~/.Xauthority tidak terkonfigurasi dengan benar ataupun hilang"
+
+#: ../src/cut-n-paste/fusa-manager.c:1496
+msgid "Too many messages were sent to the display manager, and it hung up."
+msgstr "Terlalu banyak pesan yang dikirim ke pengelola tampilan, dan macet."
+
+#: ../src/cut-n-paste/fusa-manager.c:1500
+msgid "The display manager sent an unknown error message."
+msgstr "Pengelola tampilan mengirimkan pesan kesalahan tak dikenal."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:164
+msgid "The user this menu item represents."
+msgstr "Pengguna objek menu ini."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:171
+msgid "Icon Size"
+msgstr "Ukuran Ikon"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:172
+msgid "The size of the icon to use."
+msgstr "Ukuran ikon untuk digunakan."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:178
+msgid "Indicator Size"
+msgstr "Ukuran Indikator"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:179
+msgid "Size of check indicator"
+msgstr "Ukuran indikator periksa"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:184
+msgid "Indicator Spacing"
+msgstr "Ruang Indikator"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:185
+msgid "Space between the username and the indicator"
+msgstr "Ruang antara nama pengguna dan indikator"
+
+#: ../src/cut-n-paste/fusa-user.c:151
+msgid "The user manager object this user is controlled by."
+msgstr "Objek pengelola pengguna yang mengatur pengguna ini."
+
+#: ../src/cut-n-paste/fusa-utils.c:80
+msgid "Show Details"
+msgstr "Tampilan Rincian"
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:413
+msgid "MDM (The MATE Display Manager) is not running."
+msgstr "MDM (Pengelola Tampilan MATE) tidak berjalan."
+
+#: ../src/cut-n-paste/mdmcomm.c:416
+msgid ""
+"You might in fact be using a different display manager, such as KDM (KDE "
+"Display Manager) or xdm."
+msgstr ""
+"Anda boleh saja menggunakan pengelola tampilan yang berbeda, seperti KDM "
+"(Pengelola Tampilan KDE) ataupun xdm."
+
+#: ../src/cut-n-paste/mdmcomm.c:419
+msgid ""
+"If you still wish to use this feature, either start MDM yourself or ask your "
+"system administrator to start MDM."
+msgstr ""
+"Jika anda masih ingin menggunakan fasilitas ini, coba hidupkan MDM anda atau "
+"minta system administrator anda untuk menjalankan MDM."
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:441
+msgid "Cannot communicate with MDM (The MATE Display Manager)"
+msgstr "Tidak bisa berkomunikasi dengan MDM (Pengelola Tampilan MATE)."
+
+#: ../src/cut-n-paste/mdmcomm.c:444
+msgid "Perhaps you have an old version of MDM running."
+msgstr "Mungkin anda memiliki versi MDM lama."
+
+#: ../src/cut-n-paste/mdmcomm.c:463 ../src/cut-n-paste/mdmcomm.c:466
+msgid "Cannot communicate with mdm, perhaps you have an old version running."
+msgstr "Tidak bisa berkomunikasi dengan mdm, kemungkinan versinya yang lama."
+
+#: ../src/cut-n-paste/mdmcomm.c:469
+msgid "The allowed limit of flexible X servers reached."
+msgstr "Batasan server X yang diperbolehkan telah tercapai."
+
+#: ../src/cut-n-paste/mdmcomm.c:471
+msgid "There were errors trying to start the X server."
+msgstr "Ada kesalahan ketika menjalankan server X."
+
+#: ../src/cut-n-paste/mdmcomm.c:473
+msgid "The X server failed.  Perhaps it is not configured well."
+msgstr "Server X gagal.  Kemungkinan tidak dikonfigurasikan dengan benar."
+
+#: ../src/cut-n-paste/mdmcomm.c:476
+msgid "Too many X sessions running."
+msgstr "Terlalu banyak sesi X sedang berjalan."
+
+#: ../src/cut-n-paste/mdmcomm.c:478
+msgid ""
+"The nested X server (Xnest) cannot connect to your current X server.  You "
+"may be missing an X authorization file."
+msgstr ""
+"Server bersarang X (Xnest) tidak dapat tersambung ke server X anda.  "
+"Kemungkinan anda kehilangan berkas autorisasi X."
+
+#: ../src/cut-n-paste/mdmcomm.c:483
+msgid ""
+"The nested X server (Xnest) is not available, or mdm is badly configured.\n"
+"Please install the Xnest package in order to use the nested login."
+msgstr ""
+"Server bersarang X (Xnest) tidak tersedia, atau mdm terkonfigurasi dengan "
+"buruk.\n"
+"Coba pasangkan paket Xnest supaya bisa menggunakan login bersarang."
+
+#: ../src/cut-n-paste/mdmcomm.c:488
+msgid ""
+"The X server is not available, it is likely that mdm is badly configured."
+msgstr ""
+"Server X tidak tersedia, sepertinya mdm terkonfigurasi dengan tidak benar."
+
+#: ../src/cut-n-paste/mdmcomm.c:497
+msgid "Trying to change to an invalid virtual terminal number."
+msgstr "Mencoba untuk mengganti nomor terminal virtual yang salah."
+
+#: ../src/cut-n-paste/mdmcomm.c:501
+msgid ""
+"You do not seem to have authentication needed be for this operation.  "
+"Perhaps your .Xauthority file is not set up correctly."
+msgstr ""
+"Kelihatannya anda tidak memiliki autentikasi yang diperlukan untuk operasi "
+"ini.  Kemungkinan berkas .Xauthority tidak terseting dengan benar."
+
+#: ../src/cut-n-paste/mdmcomm.c:505
+msgid "Too many messages were sent to mdm and it hung upon us."
+msgstr "Begitu banyak pesan terikirim ke mdm dan itu membuatnya macet."
+
+#: ../src/cut-n-paste/mdmcomm.c:508
+msgid "Unknown error occurred."
+msgstr "Kesalahan tak dikenal terjadi."
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Menyalin berkas: %u dari %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "Menyalin '%s'"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "Dari URI"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "URI sedang dikirim dari"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "Ke URI"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "URI sedang dikirim ke"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "Pemisahan selesai"
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "Pemisahan dari pengiriman telah selesai"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "Index URI sekarang"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "Index URI sekarang - mulai dari 1"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "Total URI"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "Total nomor URI"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "Menyalin berkas"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "Dari:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "Ke:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "Menyambung..."
+
+#: ../src/mate-screensaver-command.c:61
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Menyebabkan screensaver keluar dengan baik"
+
+#: ../src/mate-screensaver-command.c:63
+msgid "Query the state of the screensaver"
+msgstr "Query bagian dari screensaver"
+
+#: ../src/mate-screensaver-command.c:65
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Meminta proses screensaver untuk mengunci layar dengan segera"
+
+#: ../src/mate-screensaver-command.c:67
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Screensaver aktif dan pindah ke demo grafis yang lain"
+
+#: ../src/mate-screensaver-command.c:69
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Hidupkan screensaver (kosongkan layar)"
+
+#: ../src/mate-screensaver-command.c:71
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Screensavernya aktif dan kemudian dinonaktifkan (tidak kosongkan layar)"
+
+#: ../src/mate-screensaver-command.c:73
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:75
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:77
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:79
+#, fuzzy
+msgid "The reason for inhibiting the screensaver"
+msgstr "Berapa menit untuk berjalan sebelum mengganti tema screensaver."
+
+#: ../src/mate-screensaver-command.c:81 ../src/mate-screensaver-dialog.c:54
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versi dari aplikasi ini"
+
+#: ../src/mate-screensaver-command.c:246
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Screensaver adalah %s\n"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "active"
+msgstr "aktif"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "inactive"
+msgstr "tidak aktif"
+
+#: ../src/mate-screensaver-dialog.c:52
+msgid "Show debugging output"
+msgstr "Tampilkan hasil pencarian kesalahan"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show the logout button"
+msgstr "Tampilkan tombol keluar"
+
+#: ../src/mate-screensaver-dialog.c:58
+msgid "Command to invoke from the logout button"
+msgstr "Perintah untuk dilaksanakan dari tombol keluar"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the switch user button"
+msgstr "Tampilkan tombol pindah pengguna"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:169 ../src/mate-screensaver-dialog.c:170
+#: ../src/mate-screensaver-dialog.c:171 ../src/gs-auth-pam.c:380
+msgid "Username:"
+msgstr "Pengguna:"
+
+#: ../src/mate-screensaver-dialog.c:174
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Anda diharuskan mengganti kata sandi anda sekarang (kata sandi sudah usang)"
+
+#: ../src/mate-screensaver-dialog.c:175
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Anda diharuskan mengganti kata sandi anda segera (root·enforced)"
+
+#: ../src/mate-screensaver-dialog.c:176
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Account anda sudah kadaluarsa, silahkan hubungi system administrator anda"
+
+#: ../src/mate-screensaver-dialog.c:177
+msgid "No password supplied"
+msgstr "Tidak ada kata sandi diberikan"
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "Password unchanged"
+msgstr "Kata sandi tidak berubah"
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "Can not get username"
+msgstr "Tidak mendapatkan nama pengguna"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Retype new UNIX password:"
+msgstr "Ketik ulang kata sandi UNIX baru:"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "Enter new UNIX password:"
+msgstr "Berikan kata sandi UNIX baru:"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "(current) UNIX password:"
+msgstr "Kata sandi UNIX (saat ini):"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "Error while changing NIS password."
+msgstr "Kesalahan ketika mengganti kata sandi NIS."
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You must choose a longer password"
+msgstr "Anda harus memilih kata sandi lebih panjang"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Password has been already used. Choose another."
+msgstr "Kata sandi sudah dipergunakan. Pilih yang lain."
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "You must wait longer to change your password"
+msgstr "Anda harus menunggu lebih lama untuk mengganti kata sandi"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Sorry, passwords do not match"
+msgstr "Maaf, kata sandi tidak cocok"
+
+#: ../src/mate-screensaver-dialog.c:250
+msgid "Checking..."
+msgstr "Memeriksa..."
+
+#: ../src/mate-screensaver-dialog.c:289 ../src/gs-auth-pam.c:320
+msgid "Authentication failed."
+msgstr "Autentikasi gagal."
+
+#: ../src/mate-screensaver-preferences.c:436
+msgid "Blank screen"
+msgstr "Layar kosong"
+
+#: ../src/mate-screensaver-preferences.c:442
+msgid "Random"
+msgstr "Acak"
+
+#: ../src/mate-screensaver-preferences.c:800
+msgid "Invalid screensaver theme"
+msgstr "Tema screensaver salah"
+
+#: ../src/mate-screensaver-preferences.c:803
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "Berkas ini tidak kelihatan sebagai tema screensaver yang benar."
+
+#: ../src/mate-screensaver-preferences.c:930
+#, c-format
+msgid "%d hour"
+msgstr "%d jam"
+
+#: ../src/mate-screensaver-preferences.c:933
+#, c-format
+msgid "%d minute"
+msgstr "%d menit"
+
+#: ../src/mate-screensaver-preferences.c:936
+#, c-format
+msgid "%d second"
+msgstr "%d detik"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:942
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:945
+#: ../src/mate-screensaver-preferences.c:953
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:948
+#: ../src/mate-screensaver-preferences.c:956
+#: ../src/mate-screensaver-preferences.c:960
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:975
+msgid "Never"
+msgstr "Tidak pernah"
+
+#: ../src/mate-screensaver-preferences.c:1365
+msgid "Could not load the main interface"
+msgstr "Tidak dapat membaca antar muka utama"
+
+#: ../src/mate-screensaver-preferences.c:1367
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Coba pastikan bahwa screensaver telah terpasang dengan benar"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Jangan menjadi daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Aktifkan kode pencarian kesalahan"
+
+#: ../src/gs-auth-pam.c:262
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Tidak bisa menetapkan layanan %s: %s\n"
+
+#: ../src/gs-auth-pam.c:288
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Tidak bisa menentukan PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:318
+msgid "Incorrect password."
+msgstr "Kata sandi salah."
+
+#: ../src/gs-auth-pam.c:334
+msgid "Not permitted to gain access at this time."
+msgstr "Tidak diizinkan mendapatkan akses pada saat ini."
+
+#: ../src/gs-auth-pam.c:340
+msgid "No longer permitted to access the system."
+msgstr "Tidak lagi diizinkan mengakses system."
+
+#: ../src/gs-listener-dbus.c:1631
+msgid "failed to register with the message bus"
+msgstr "gagal mendaftar dengan bus pesan"
+
+#: ../src/gs-listener-dbus.c:1641
+msgid "not connected to the message bus"
+msgstr "tidak tersambung dengan bus pesan"
+
+#: ../src/gs-listener-dbus.c:1650
+msgid "screensaver already running in this session"
+msgstr "screensaver sudah berjalan pada sesi ini"
+
+#: ../src/gs-lock-plug.c:336
+msgid "Time has expired."
+msgstr "Waktu telah kadaluarsa."
+
+#: ../src/gs-lock-plug.c:366
+msgid "You have the Caps Lock key on."
+msgstr "Tombol Caps Lock anda hidup."
+
+#: ../src/gs-lock-plug.c:1411 ../src/gs-lock-plug.c:1448
+msgid "S_witch User..."
+msgstr "_Pindah Pengguna..."
+
+#: ../src/gs-lock-plug.c:1419
+msgid "Log _Out"
+msgstr "Kel_uar"
+
+#: ../src/gs-lock-plug.c:1610
+msgid "%U on %h"
+msgstr "%U pada %h"
+
+#: ../src/gs-lock-plug.c:1624
+msgid "_Password:"
+msgstr "_Kata sandi:"
+
+#~ msgid "_Screensaver"
+#~ msgstr "_Screensaver"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Matikan tema grafis bergerak ketika dikosongkan"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr "Aktifkan tema grafis bergerak ketika dikosongkan (jika bisa)"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "Kata sandinya salah"
diff --git a/po/is.po b/po/is.po
new file mode 100644
index 0000000..c092a26
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,729 @@
+# Icelandic translation of Mate.
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# Anna Jonna Ármannsdóttir <annajonna at gmail.com>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-05-07 11:29+0200\n"
+"PO-Revision-Date: 2008-05-07 00:24+0000\n"
+"Last-Translator: Anna Jonna Ármannsdóttir <annajonna at gmail.com>\n"
+"Language-Team: Icelandic\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Skjáhvíla"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Stilltu valmöguleika fyrir skjávhvíluna"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Skjáhvíluforsýn</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Varúð: Skjánum verður ekki læst fyrir rótarnotanda.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "_Orkustjórnun"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Líta á tölvuna sem _iðjulausa eftir:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Skjáhvíluvalmöguleikar"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Skjáhvíluforsýn"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Virkja skjáhvílu þegar tölva er iðjulaus"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Læsa skjá þegar skjáhvíla er í gangi"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "_Forsýning"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "_Skjáhvíluásýnd"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "Ásýnd skjáhvílu"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Skjáhvílur"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Virkja þegar seta er iðjulaus"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Leyfa innbyggt lyklaborð í gluggann"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Leyfa að skrá sig út"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Leyfa að skipta um notenda"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "Skipun fyrir innbyggt lyklaborð"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "Læsa þegar hún er virk"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "Útskráningarskipun"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "Ástæða fyrir fráveru"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "Val á ásýnd skjáhvílu"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Stilla þetta til TRUE til að kveikja á skjáhvílu þegar seta er iðjulaus."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Stilla þetta til TRUE til að leyfa innbyggt lyklaborð í gluggann þegar reynt "
+"er að aflæsa. \"keyboard_command\" lykillinn verður að vera stilltur með "
+"viðeigandi skipun."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Stillið þetta á TRUE til að læsa skjánum þegar skjáhvílan er virkt."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Stillið þetta á TRUE til að bjóða uppá möguleikan að skipta um notenda."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Stillið þetta á TRUE til að bjóða uppá möguleika í innskráningar glugganum "
+"um að afskrá þig eftir bið. Biðin er stillt í \"logout_delay\" lyklinum."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Skipunin sem mun vera keyrð ef \"embedded_keyboard_enabled\" lykillin er "
+"stilltur sem TRUE til þess að byggja inn lyklaborðssmáforrit í gluggann. "
+"ÞEssi skipun ætti að fullbúa XEMBED tengingarviðmót og skrifa út XID glugga "
+"á staðlað frálag."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Fyrirskipunin til að nota þegar á afskráningartakkan er smellt. Þessi "
+"fyrirskipun ætti bara að afskrá notandan án þess að leyfa honum að gera "
+"neitt. Þessi lykill er bara notaður er \"logout_enable\" er stillt á TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Mínútur eftir kveikt er á skjáhvíluni áður en skjánum er læst."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Mínútur eftir kveikt er á skjáhvíluni áður en notandanum er leyft að afsrká "
+"sig. Þessi lykill er bara notaður ef \"logout_enable\" lykillinn er stilltur "
+"á TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Mínútur af bið þar til seta er talin iðjulaus."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Mínútur á milli þess sem skipt er um ásýnd skjáhvílunnar."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Sekúndur af bið þar til orku-stjórn er gert viðvart. Þessi lykill er "
+"stilltur og haldið við af orku-stjórnunargeranda setunnar."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "Ástæðan fyrir fjarveru frá tölvunni."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Valningakostur sem skjáhvílan notar. Má vera \"blank-only\" til þess að nota "
+"skjáhvílu án þema, \"single\" til þess að nota skjáhvílu með bara eina þemu "
+"(valin með \"themes\" lykilinnum), eða \"random\" til þess að velja þemu af "
+"handahófi þegar skjáhvílan byrjar."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Ásýnd fyrir læsingarsvarglugga"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Ásýnd sem skal nota fyrir læsingarsvarglugga."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Þessi lykill inniheldur listann af þemum sem skjáhvílan notar. Hann er ekki "
+"notaður þegar \"mode\" lykillinn er \"blank-only\", ætti að innihalda nafnið "
+"af þemannum sem á að nota þegar \"mode\" er stillt á \"single\", og ætti að "
+"innihalda lista af þemum þegar \"mode\" er stillt á \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tími áður en er læst"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tími áður en möguleiki á útskráningu"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tími áður en orku-stjórnunargrunnur gangsettur"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tími áður en seta er talin iðjulaus"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tími áður en útliti er breytt"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Skilja eftir skilaboð fyrir %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U á %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Hætta við"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "_Brottfararskilaboð"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "_Útskrá"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Skipta um notenda"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1214
+msgid "_Unlock"
+msgstr "_Aflæsa"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Stjörnuþokur"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Sýna skjásýningu af myndum af stjörnuþokum"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Freyðir fót merkinu MATE um skjáinn"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Fljótandi fætur"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Sýna skjásýningu af mynda möppunni þinni"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Mynda mappa"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Net af popplistarlegum flökktandi litum"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Pop listar kassar"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Sýnir leiðir sem myndir fylgja"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Af og til snúa myndum á meðan þær hreyfast"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Skrifa út rammatíðni og aðra tölfræði"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Hámarksfjöldi mynda sem haldið er á skjánum"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Upprunalega stærð og staðsetning gluggans"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "BREIDDxHÆÐ+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Grunnmynd sem skal nota"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - flýgur með mynd um skjáinn"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Sjá --help fyrir upplýsingar um notkun.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Þú verður að velja eina mynd. Sjá --help fyrir upplýsingar um notkun.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Staðsettning til að nálgast myndir"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "SLÓÐ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Litur sem notaður er fyrir myndabakgrunn"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Ekki handahófsraða myndum frá staðsetningu"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ekki reyna að teygja myndir á skjánum"
+
+#: ../src/copy-theme-dialog.c:211
+msgid "Copying files"
+msgstr "Afrita skrár"
+
+#: ../src/copy-theme-dialog.c:229
+msgid "From:"
+msgstr "Frá:"
+
+#: ../src/copy-theme-dialog.c:233
+msgid "To:"
+msgstr "Til:"
+
+#: ../src/copy-theme-dialog.c:253
+msgid "Copying themes"
+msgstr "Afrita þemu"
+
+#: ../src/copy-theme-dialog.c:297
+msgid "Invalid screensaver theme"
+msgstr "Ólögleg skjáhvíluásýnd"
+
+#: ../src/copy-theme-dialog.c:300
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s virðist ekki vera gilt skjáhvíluþema."
+
+#: ../src/copy-theme-dialog.c:480
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Afrita skrá: %u af %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Veldur því að skjáhvílan hættir með sæmd"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Senda fyrirspurn um stöðu skjáhvílu"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Senda fyrirspurn um tíma sem skjáhvílan hefur verið virk"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Skipa núverandi skjáhvílu að læsa skjánum strax"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Ef skjáhvílan er virk skipta þá yfir í aðra grafíska sýningu"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Kveikja á skjáhvílu (tæma skjáinn)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Ef skjáhvíla er virk, afvirkja hann þá"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Ýta í skjáhvíluna til að það virðist vera notenda virkni"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Hindra skjáhvíluna frá því að virkjast. Skipun rofin á meðan hindrun er virk."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Kallandi forritið sem hindrar skjáhvíluna"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Ástæðan fyrir hindrun skjáhvílunar"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Útgáfa þessa forrits"
+
+#: ../src/mate-screensaver-command.c:249
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Skjáhvílan er %s\n"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "active"
+msgstr "í notkun"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "inactive"
+msgstr "ekki í notkun"
+
+#: ../src/mate-screensaver-command.c:274
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Skjáhvílan hefur verið virk í %d sekúndur.\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "Sýna aflúsunar útgang"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "Sýna útskráningarhnapp"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "Skipun sem á að keyra með útskráningarhnapp"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "Sýna notendaskiptahnapp"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "Skilaboð til að sýna í svarglugga"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "SKILABOÐ"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Notandanafn:"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Lykilorð:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Þú verður að breyta lykilorðinu þínu umsvifalaust (það er orðið of gamallt)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Þú verður að breyta lykilorðinu þínu umsvifalaust (rótarskipun)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Aðgangur þinn er útrunninn; vinsamlegast hafðu samband við kerfisstjóra"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "Ekkert lykilorð gefið"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "Lykilorð óbreytt"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Get ekki notað notandanafn"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "Sláðu aftur inn nýja UNIX lykilorðið:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "Sláðu inn nýtt UNIX lykilorð:"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "(núverandi) UNIX lykilorð:"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "Villa kom upp við breytingu á NIS lykilorði."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "Þú verður að velja lengra lykilorð"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "Þú hefur notað þetta lykilorð áður. Vinsamlegast veldu annað."
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "Þú verður að bíða lengur til þess að breyta lykilorðinu þínu"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "Afsakið, lykilorðin passa ekki saman"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Skoða..."
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Auðkenning tókst ekki."
+
+#: ../src/mate-screensaver-preferences.c:498
+msgid "Blank screen"
+msgstr "Tómur skrár"
+
+#: ../src/mate-screensaver-preferences.c:504
+msgid "Random"
+msgstr "Slembið"
+
+#: ../src/mate-screensaver-preferences.c:954
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d klukkutími"
+msgstr[1] "%d klukkutímar"
+
+#: ../src/mate-screensaver-preferences.c:957
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d mínúta"
+msgstr[1] "%d mínútur"
+
+#: ../src/mate-screensaver-preferences.c:960
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekúnda"
+msgstr[1] "%d sekúndur"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:966
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:969
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:972
+#: ../src/mate-screensaver-preferences.c:980
+#: ../src/mate-screensaver-preferences.c:984
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:999
+#, c-format
+msgid "Never"
+msgstr "Aldrei"
+
+#: ../src/mate-screensaver-preferences.c:1398
+msgid "Could not load the main interface"
+msgstr "Gat ekki hlaðið aðalviðmót"
+
+#: ../src/mate-screensaver-preferences.c:1400
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Vinsamlegast gangið úr skugga um að skjáhvíla sé rétt uppsett"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Ekki verða að þjónustu"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Virkja aflúsunarham"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Gat ekki stofnað þjónustu %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Get ekki stillt PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Rangt lykilorð."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Þér er ekki leyfður aðgangur í þetta sinn."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Þér verður ekki gefinn aðgangur að kerfinu."
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "mistókst að skrá sig í skilaboðarás"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "ekki tengd við skilaboðarás"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "skjáhvíla er nú þegar keyrandi í þessari setu"
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "Tíminn er útrunninn."
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr "Þú ert að nota HÁSTAFI."
+
+#: ../src/gs-lock-plug.c:1194
+msgid "S_witch User..."
+msgstr "S_kipta um notanda..."
+
+#: ../src/gs-lock-plug.c:1203
+msgid "Log _Out"
+msgstr "_Útskrá"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1380
+msgid "%U on %h"
+msgstr "%U á %h"
+
+#: ../src/gs-lock-plug.c:1394
+msgid "_Password:"
+msgstr "_Lykilorð:"
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..2eaf099
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,824 @@
+# Italian Translation of mate-screensaver
+# Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+#
+#   idle -> inattivo/a
+#   activate --> avvia (per evitare attiva quando inattivo)
+#   inactive --> assenza di attività (o simile)
+#
+# Le traduzioni di alcuni messaggi cut-and-paste (dal
+# modulo fast-user-switch-applet) sono di Luca Cavalli
+#
+# Luca Ferretti <elle.uca at libero.it>, 2006, 2007, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver 2.27.x\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-08-22 10:33+0200\n"
+"Last-Translator: Luca Ferretti <elle.uca at libero.it>\n"
+"Language-Team: Italiano <tp at lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Salvaschermo"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Imposta le preferenze del salvaschermo"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Anteprima del salvaschermo</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Attenzione: lo schermo non verrà bloccato per l'utente root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Gestione alimentazione"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "C_onsiderare il computer come inattivo dopo:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferenze del salvaschermo"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Anteprima del salvaschermo"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Avviare il salvaschermo quando il computer è inattivo"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Bloccare lo schermo quando il salvaschermo viene avviato"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "Ante_prima"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema del _salvaschermo:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Temi del salvaschermo"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Salvaschermo"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Avviare quando inattiva"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Consente inserimento di una tastiera nella finestra"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Consente il logout"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Consente di mostrare i messaggi di stato della sessione"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Consente di mostrare i messaggi di stato della sessione quando lo schermo è "
+"bloccato."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Consente il cambio utente"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Comando tastiera inserita"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Blocca all'avvio"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Comando di logout"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Modalità selezione tema salvaschermo"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Impostare a VERO per avviare il salvaschermo quando la sessione è inattiva."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Impostare a VERO per consentire l'inserimento di una tastiera nella finestra "
+"quando si prova a sbloccare. La chiave \"keyboard_command\" deve essere "
+"impostata con il comando appropriato."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Impostare a VERO per bloccare lo schermo quando il salvaschermo viene "
+"avviato."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Impostare a VERO per fornire un'opzione nel dialogo di sblocco con cui "
+"passare a un diverso account utente."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Impostare a VERO per fornire un'opzione nel dialogo di sblocco per poter "
+"effettuare il logout dopo un certo intervallo di tempo. Tale intervallo è "
+"specificato nella chiave \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Il comando che viene eseguito, se la chiave \"embedded_keyboard_enabled\" è "
+"impostata a VERO, per inserire un widget tastiera nella finestra. Questo "
+"comando dovrebbe implementare una interfaccia di plug XEMBED e fornire come "
+"output un XID di finestra sullo standard output."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Il comando da invocare quando si fa clic sul pulsante di logout. Questo "
+"comando dovrebbe semplicemente disconnettere l'utente senza alcuna "
+"interazione. Questa chiave ha effetto solo se la chiave \"logout_enable\" è "
+"impostata a VERO."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Il numero di minuti dopo l'avvio del salvaschermo prima di bloccare lo "
+"schermo."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Il numero di minuti dopo l'avvio del salvaschermo prima che appaia "
+"un'opzione per terminare la sessione nel dialogo di sblocco. Questa chiave "
+"ha effetto solo se la chiave \"logout_enable\" è impostata a VERO."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Il numero di minuti di assenza di attività prima che la sessione sia "
+"considerata inattiva."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"Il numero di minuti di esecuzione prima di cambiare il tema del salvaschermo."
+
+# mah....
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Il numero di secondi di assenza di attività prima della segnalazione a power-"
+"manager. Questa chiave è impostata e mantenuta dall'agente di sessione di "
+"power-manager."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"La modalità di selezione usata dal salvaschermo. Può essere \"blank-only\" "
+"per abilitare il salvaschermo senza usare alcun tema all'attivazione, "
+"\"single\" per abilitare il salvaschermo usando solo un tema all'attivazione "
+"(specificato nella chiave \"themes\") e \"random\" per abilitare il "
+"salvaschermo usando un tema scelto a caso all'attivazione."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema per dialogo di blocco"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Il tema da usare per il dialogo di blocco."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Questa chiave specifica l'elenco dei temi usati dal salvaschermo. È ignorata "
+"quando la chiave \"mode\" è \"blank-only\", dovrebbe fornire il nome del "
+"tema quando \"mode\" è \"single\" e dovrebbe fornire un elenco di temi "
+"quando \"mode\" è \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tempo prima del blocco"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tempo prima dell'opzione logout"
+
+# lo so, sembra una traduzione fatta sul web...  -Luca
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tempo prima della linea di base del power-manager"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tempo prima che la sessione sia considerata inattiva"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tempo prima del cambio tema"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Lasciare un messaggio per %R:</b>"
+
+# NOMEUTENTE su NOMEHOST
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U su %h</span>"
+
+# NOME REALE
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+# Stessa traduzione GTK+ 2.10
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "A_nnulla"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Lascia messaggio"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Termina sessione"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Cambia utente"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "S_blocca"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmo"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Mostra una sequenza di immagini del cosmo"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Fa rimbalzare l'impronta del logo di MATE sullo schermo"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Orma fluttuante"
+
+# Nota su Pictures --> Immagini
+#   Se si sta usando xdg-user-dirs, mate-screensaver sarà in grado
+#   di leggere dalla directory $HOME/Immagini
+#
+#   Visto che xdg-user-dirs *deve* essere usato (altrimenti vi mandiamo
+#   le forze dell'ordine in casa) è inutile mantenere la compatibilità
+#   all'indietro in questa traduzione.
+#
+#   --Luca, vostro benevolente dittatore.
+#
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Mostra una sequenza dalla propria cartella Immagini"
+
+# Cfr commento sopra
+#
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Cartella Immagini"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Una griglia in stile pop-art di colori pulsanti."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Quadrati pop-art"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Mostra i percorsi seguiti dalla immagini"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Occasionalmente ruota le immagini durante lo spostamento"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Stampa frame rate e altre statistiche"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Il numero massimo di immagini da tenere sullo schermo"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMMAGINI"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "La dimensione e posizione iniziale della finestra"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LARGxALT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "L'immagine sorgente da usare"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "IMMAGINE - fa fluttuare immagini sullo schermo"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Usare --help per informazioni sull'uso.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"È necessario specificare una immagine. Usare --help per informazioni "
+"sull'uso.\n"
+
+# spiegazione per parametro --location
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Posizione da cui prelevare le immagini"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PERCORSO"
+
+# spiegazione per parametro --background-color
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Colore da usare per sfondo immagini"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#RRGGBB\""
+
+# spiegazione per parametro --sort-images
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Non recupera a caso le immagini dalla posizione"
+
+# spiegazione per parametro --no-stretch
+# resa un po' libera...
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Non tenta di adattare le immagini allo schermo"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Copia dei file"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Da:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "A:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Copia dei temi"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Tema di salvaschermo non valido"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Sembra che «%s» non sia un tema di salvaschermo valido."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copia del file: %u di %u"
+
+# sarebbe, credo, non violenta... Ci debbo pensare meglio -Luca
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Causa l'uscita non forzosa del salvaschermo"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Interroga lo stato del salvaschermo"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Interroga l'intervallo di tempo di esecuzione del salvaschermo"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Comunica al processo salvaschermo in esecuzione di bloccare immediatamente "
+"lo schermo"
+
+# sarebbe quello che prima è stato definito tema? 
+#
+# Mi sa che apro un bug -Luca
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Se il salvaschermo è in esecuzione passa ad altra demo grafica"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Avvia il salvaschermo (blanking dello schermo)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Se il salvaschermo è in esecuzione lo arresta (unblanking dello schermo)"
+
+# qui ci stava bene "stuzzica"  :-)
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Simula al salvaschermo in esecuzione una segnalazione di attività utente"
+
+# più una interpretazione che una traduzione.... --Luca
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inibisce l'avvio del salvaschermo. I comandi sono bloccati mentre "
+"l'inibizione è attiva."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "L'applicazione chiamante che sta inibendo il salvaschermo"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Il motivo dell'inibizione del salvaschermo"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versione di questa applicazione"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Il salvaschermo è %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "in esecuzione"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "arrestato"
+
+# MATE-2-24
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Il salvaschermo non è inibito\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Il salvaschermo sta per essere inibito da:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Il salvaschermo è stato in esecuzione per %d secondi.\n"
+
+# MATE-2-24
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "l salvaschermo non è attivo al momento.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Mostra l'outptut di debug"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Mostra il pulsante per terminare la sessione"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Comando da invocare col pulsante di termine sessione"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Mostra il pulsante cambia utente"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Messaggio da mostrare nel dialogo"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGGIO"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Non usato"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Nome utente:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Password:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"È necessario cambiare immediatamente la propria password (password scaduta)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"È necessario cambiare immediatamente la propria password (imposto da root)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Il proprio account è scaduto; contattare l'amministratore di sistema"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Nessuna password fornita"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Password non cambiata"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Impossibile ottenere il nome utente"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Digitare di nuovo la nuova password UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Inserire la nuova password UNIX:"
+
+# non sono sicuro, ma credo che la maiuscola all'inizio ci vada -Luca
+#
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Password UNIX (attuale):"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Errore durante il cambiamento della password NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "È necessario scegliere una password più lunga."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "La password è stata già usata. Sceglierne un'altra."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr ""
+"È necessario attendere ancora prima di poter cambiare la propria password"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Le password non corrispondono"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Controllo..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autenticazione non riuscita."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Schermo vuoto"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Casuale"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ora"
+msgstr[1] "%d ore"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuto"
+msgstr[1] "%d minuti"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d secondo"
+msgstr[1] "%d secondi"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s, %s e %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s e %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Mai"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Impossibile caricare l'interfaccia principale"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Assicurarsi che il salvaschermo sia installato in modo corretto"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Non diventare un demone"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Abilitare il codice di debug"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Lancia il programma per salvaschermo e per blocco schermo"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Impossibile stabilire il servizio %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Impossibile impostare PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Password non corretta."
+
+# credo indichi l'intervallo di inibizione dopo N tentativi falliti. -Luca
+#
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Per ora non è più concesso ottenere l'accesso."
+
+# Ho rigirato la frase. Mi pare sia una forma migliore e più chiara, in italiano, 
+# di "non è più concesso ..." -Luca
+#
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "L'accesso al sistema è stato perennemente revocato."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "registrazione col bus di messaggi non riuscita"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "non connesso al bus di messaggi"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "salvaschermo già in esecuzione in questa sessione"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Tempo scaduto!"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Il tasto BlocMaiusc è attivo."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Cambia utente..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Termina sessione"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U su %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "Pass_word:"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..8659ff9
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,769 @@
+# mate-screensaver ja.po.
+# Copyright (C) 2004-2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the 'mate-screensaver' package.
+# Takeshi AIHANA <takeshi.aihana at gmail.com>, 2004-2009.
+# Satoru SATOH <ss at mate.gr.jp>, 2006.
+# Takayuki KUSANO <AE5T-KSN at asahi-net.or.jp>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-11-03 23:13+0900\n"
+"PO-Revision-Date: 2009-11-03 23:22+0900\n"
+"Last-Translator: Takayuki KUSANO <AE5T-KSN at asahi-net.or.jp>\n"
+"Language-Team: Japanese <mate-translation at mate.gr.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "スクリーンセーバー"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "お使いのスクリーンセーバーを設定します"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>スクリーンセーバーのプレビュー</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+"<b>注意: root ユーザの場合、スクリーンはロックされないので注意して下さい</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "パワー・マネージメント(_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "アイドル状態になるまでの時間(_I):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "スクリーンセーバーの設定"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "スクリーンセーバーのプレビュー"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "アイドル状態になったらスクリーンセーバーを起動する(_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "スクリーンセーバーを起動したら画面をロックする(_L):"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "プレビュー(_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "スクリーンセーバーのテーマ(_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "スクリーンセーバーのテーマ"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "いろいろなスクリーンセーバーを格納するフォルダ"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "アイドル時に起動するかどうか"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "キーボードをウィンドウへ埋め込めるようにするかどうか"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "ログアウトを許可するかどうか"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "ステータス・メッセージを表示できるようにするかどうか"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"スクリーンをロックしたらセッションの状態を表すメッセージを表示できるようにす"
+"るかどうかです。"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "ユーザ間の切り替えを許可するかどうか"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "キーボードを埋め込むコマンド"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "画面をロックするかどうか"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "ログアウトのコマンド"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "スクリーンセーバーのテーマ選択モード"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"TRUE にすると、セッションがアイドル状態になったらスクリーンセーバーを起動しま"
+"す。"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"TRUE にすると、スクリーンのロックを解除する際にキーボードを画面に埋め込むこと"
+"が可能になります。\"keyboard comman\" のキーに適切なコマンドをセットしておい"
+"て下さい。"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "TRUE にすると、スクリーンセーバーを起動したら画面をロックします。"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"TRUE にすると、他のユーザ・アカウントへ切り替えるためのオプションをロックを解"
+"除するダイアログに表示します。"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"TRUE にすると、遅延ログアウトするためのオプションをロックを解除するダイアログ"
+"に表示します。"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" キーを TRUE にした場合、ウィンドウの中にキー"
+"ボードを埋め込む際に使用するコマンドです。ここで指定できるコマンドは XEMBED "
+"プラグイン・インタフェースを実装し、ウィンドウの XID を標準出力に出力できるも"
+"のでなくてはなりません。"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"ログアウト・ボタンをクリックしたら呼び出されるコマンドです。このコマンドは、"
+"ユーザに問い合わせを行うことなく単にログアウトするようなコマンドにして下さ"
+"い。このキーは、\"logout_enable\" キーが TRUE の場合にのみ効果があります。"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"スクリーンセーバーを起動して画面をロックするまでのアイドル時間 (分) です。"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"スクリーンセーバーを起動してロックを解除するダイアログにログアウトのオプショ"
+"ンが表示されるまでのアイドル時間 (分) です。このキーは、\"logout_enable\" "
+"キーが TRUE の場合にのみ効果があります。"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "セッションがアイドル状態であるとみなすまでの時間 (分) です。"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"スクリーンセーバーのテーマを変更して実際に表示するまでのアイドル時間 (分) で"
+"す。"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"パワー・マネージメントのシステムへシグナルを送信する前の待ち時間 (秒単位) で"
+"す。これは、セッション単位でパワー・マネージメントのエージェントがセットした"
+"り管理するキーです。"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"スクリーンセーバーが使用する選択モードを指定します。指定可能な値: \"blank-"
+"only\" (テーマを使用せずにスクリーンセーバーを起動する)、\"single\" (\"themes"
+"\" キーで指定したテーマを一つだけ使用してスクリーンセーバーを起動する)、"
+"\"random\" (テーマをランダムに使用してスクリーンセーバーを起動する)"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "ロック・ダイアログのテーマ"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "画面をロックする際に表示するダイアログのテーマです。"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"スクリーンセーバーで使用するテーマを並べて指定します。これは \"mode\" キーが "
+"\"blank-only\" の場合は無視され、\"mode\" キーが \"single\" の場合はテーマの"
+"名前を指定し、\"mode\" キーが \"random\" の場合はテーマの名前を複数個並べて指"
+"定して下さい。"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "画面をロックするまでの時間"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "ログアウトのオプションを表示するまでの時間"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "パワー・マネージメントに制御を移すまでの時間"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "セッションがアイドル状態であるとみなすまでの時間"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "テーマを変更する際の遅延時間"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R さんへメッセージがあります:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U@%h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "キャンセル(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "メッセージを残す(_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "ログアウト(_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "ユーザの切り替え(_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "ロックの解除(_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "宇宙"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "\"宇宙の画像\" をスライドショー形式で表示します"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "画面の回りに MATE のロゴが浮かびます"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "フローティング MATE"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "これはお気に入りのフォルダにある画像をスライドショー形式で表示します"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "画像フォルダ"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "四角形が脈打つように見えるポップ・アートを表示します"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "ポップな矩形のアート"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "画像を表示していくパス名を表示する"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "時々画像が移動しているかのように回転させる"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "画像を描画した時のフレームレートとその他の統計情報を表示する"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "スクリーンに残しておく画像の個数 (最大値) を指定する"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "ウィンドウの初期サイズと位置を指定する"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "幅x高さ+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "使用する元の画像"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "画像 - スクリーンの回りに画像を浮かす"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s (用法については --help オプションで確認して下さい)\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"少なくとも画像を一つ指定して下さい (用法については --help オプションで確認し"
+"て下さい)\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "画像を格納している場所"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "画像の背景に使用する色を指定する"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "画像をランダムに表示しない"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "画像を画面の大きさに引き伸ばさない"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ファイルのコピー"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "コピー元:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "コピー先:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "テーマのコピー中"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "スクリーンセーバーのテーマが間違っています"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s はスクリーンセーバーとして妥当なテーマではないようです。"
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ファイルのコピー中: %u / %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "スクリーンセーバーを強制終了する"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "スクリーンセーバーの状態を問い合わせる"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "スクリーンセーバーが起動するしている時間を問い合わせる"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "起動中のスクリーンセーバーに今すぐ画面をロックさせる"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"スクリーンセーバーが起動されていたら別のグラフィックス・デモに切り替える"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "スクリーンセーバーを有効にする (ブランク・スクリーン)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"有効になっているスクリーンセーバーを無効にする (ブランク・スクリーン解除)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"ユーザが設定できる機能を模擬するためにスクリーンセーバーをランダムに実行する"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"スクリーンセーバーの起動を抑制する (これが有効な場合はコマンドが無視される)"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "スクリーンセーバーを抑止するアプリケーションを呼び出す"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "スクリーンセーバーを抑止するための理由を指定する"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "このアプリケーションのバージョンを表示する"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "スクリーンセーバーは%s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "起動されています"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "起動されていません"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "スクリーンセーバーは無効になっていません\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "次のアプリがスクリーンセーバーを無効にしています:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "スクリーンセーバーは %d 秒間起動されています\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "スクリーンセーバーは現在、有効になっていません。\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "デバッグ出力を表示する"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "ログアウト・ボタンを表示する"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "ログアウト・ボタンから呼び出すコマンド"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "ログアウト・ボタンを表示する"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "ダイアログに表示するメッセージ"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "未使用"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ユーザ名:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "パスワード:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "今すぐパスワードの変更が必要です (パスワードは期限切れです)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "今すぐパスワードの変更が必要です (管理者が強制しています)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "お使いのアカウントは期限切れです; システム管理者に問い合わせて下さい"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "パスワードを指定していません"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "パスワードは変更されていません"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "ユーザ名を取得できません"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "(確認) 新しい UNIX パスワード:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "新しい UNIX パスワード:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(現在の) UNIX パスワード:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS パスワードを変更する際にエラー"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "もっと長いパスワードを選択して下さい"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "既にパスワードは使用されているので別のものを選択して下さい"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "パスワードを変更するまで待たなければなりません"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "すみませんが、パスワードが一致しません"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "確認中..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "認証に失敗しました"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "ブランク・スクリーン"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "ランダム"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d時間"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d分"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d秒"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "しない"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Glade インタフェースを読み込めませんでした"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "mate-screensaver が正しくインストールされているか確認して下さい。"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "デーモン化しない"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "デバッグ・モードにする"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "スクリーンセーバーおよびロックするプロラグラムを起動"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "サービス %s を確立できません: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s にセットできません"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "パスワードが間違っています"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "この時点ではアクセスが拒否されています"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "システムへのアクセスが許可されていません"
+
+#: ../src/gs-listener-dbus.c:1844
+msgid "failed to register with the message bus"
+msgstr "メッセージ・バスへの登録に失敗しました"
+
+#: ../src/gs-listener-dbus.c:1854
+msgid "not connected to the message bus"
+msgstr "メッセージ・バスに接続していません"
+
+#: ../src/gs-listener-dbus.c:1863
+msgid "screensaver already running in this session"
+msgstr "このセッションで既にスクリーンセーバーが実行中です"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "タイムアウトしました"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "[Caps Lock] キーが押されています"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "ユーザの切り替え(_W)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "ログアウト(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U@%h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "パスワード(_P):"
diff --git a/po/ka.po b/po/ka.po
new file mode 100644
index 0000000..1993613
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,812 @@
+# translation of ka.po to Georgian
+# Vladimer Sichinava ვლადიმერ სიჭინავა <vsichi at gnome.org>, 2007.
+# Georgian translation for Mate Screensaver.
+# Copyright © 2006 Ubuntu Georgian Translators.
+# This file is distributed under the same license as the mate-screensaver package.
+# Malkhaz Barkalaya <malxaz at gmail.com>
+# Vladimer Sichinava  <vlsichinava at gmail.com>
+msgid ""
+msgstr ""
+"Project-Id-Version: ka\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-09-28 03:46+0200\n"
+"PO-Revision-Date: 2007-09-28 04:01+0200\n"
+"Last-Translator: Vladimer Sichinava ვლადიმერ სიჭინავა <vsichi at gnome.org>\n"
+"Language-Team: Georgian <http://mail.gnome.org/mailman/listinfo/mate-ge-list>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "ეკრანმზოგი"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "ეკრანმზოგის პარამეტრების მითითება"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>ეკრანმზოგის გადახედავ</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>ეკრანი არ დაიბლოკება root მომხმარებლისთვის.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "დენის ?მართვა"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+#, fuzzy
+msgid "Regard the computer as _idle after:"
+msgstr "უქმი შემდეგ:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "ეკრანმზოგის პარამეტრები"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "ეკრანმზოგის გადახედვა"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_ეკრანმზოგის გააქტიურება, როცა სისტემა უქმ რეჟიმშია"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_ეკრანის გამორთვა, როცა ეკრანმზოგი აქტიურია"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "გა_დახედვა"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "ეკრანმზოგი_ს გაფორმება:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "ეკრანმზოგის გაფორმების თემები"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "ეკრანმზოგები"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "გააქტიურება, როცა უქმადაა"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+#, fuzzy
+msgid "Allow embedding a keyboard into the window"
+msgstr "ნების დართვა a ფანჯარა"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "სესიიდან გასვლის ნების დართვა"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "მომხმარებლის გადართვის ნების დართვა"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "ჩაკერებული კლავიატურის ბრძანება"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "ეკრანის ბლოკირება"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "სესიის დახურვის ბრძანება"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+#, fuzzy
+msgid "Reason for being away"
+msgstr "მიზეზი - გასვლა"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "ეკრანმზოგის თემების არჩევის რეჟიმი"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "თუ მინიჭებულია TRUE მნიშვნელობა, ეკრანმზოგის დაიბლოკება სეანსის უქმ მდგომარეობაში ყოფნის დროს."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+#, fuzzy
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr "მითითება -სკენ TRUE -სკენ a ფანჯარა -სკენ გასაღები."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"მიენიჭოს მნიშვნელობა TRUE ეკრანის ბლოკირებისათვის როცა გააქტიურებულია "
+"ეკრანმზოგი"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"მიენიჭოს მნიშვნელობა TRUE განბლოკვის დიალოგში მომხმარებლის გადართვის "
+"ფუნქციისათვის"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"მიენიჭოს მნიშვნელობა TRUE განბლოკვის დიალოგში დაყოვნების შემდეგ სესიიდან "
+"გამოსვლისათვის. დაყოვნების ხანგრძლივობა მიეთითება გასაღებში \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+#, fuzzy
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr "ჩართული გასაღები არის -სკენ TRUE -სკენ a ფანჯარა და გამოტანა a ფანჯარა -ზე გამოტანა."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"სესიის დახურვის ღილაკზე დაჭერისას შესასრულებელი ბრძანება. ეს ბრძანება "
+"უბრალოდ დახურავს მომხმარებლის სესიას რაიმე დიალოგის გარეშე. გასაღები "
+"მოქმედებს, თუ \"logout_enable\" გასაღების მნიშვნელობა არის TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "ეკრანმზოგის გააქტიურებიდან ეკრანის ბლოკირებამდე დროის ხანგრძლივობა, წთ."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"ეკრანმზოგის გააქტიურებიდან დროის ხანგრძლივობა წუთებში , რომლის შემდეგ "
+"განბლოკვის დიალოგში გამოჩნდება სესიის დახურვის პუნქტი. გასაღები აქტიურია, თუ "
+"\"logout_enable\" გასაღების მნიშვნელობა არის TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "დრო, რომლის შემდეგ სესია გადავა უქმ რეჟიმში, წთ."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "დრო, რომლის შემდეგ შეიცვლება ეკრანმზოგის თემა, წთ."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr "რიცხვი ის წამები ის -სკენ გასაღები არის და -ით სესია."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+#, fuzzy
+msgid "The reason for being away from the computer."
+msgstr "- გასვლა."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"ეკრანმზოგის რეჟიმი: \"სუფთა ეკრანი\" - როცა ეკრანმზოგი არ იყენებს არცერთ "
+"თემას, \"ერთი თემა\" - როცა გამოიყენება ერთი რომელიმე თემა, მითითებული "
+"გასაღებში \"თემა\", და \"შემთხვევითი თემა\" - როცა ეკრანმზოგი თავად ცვლის "
+"თემებს შემთხვევითი თანმიმდევრობით."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+#, fuzzy
+msgid "Theme for lock dialog"
+msgstr "გაფორმება - დიალოგი"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+#, fuzzy
+msgid "Theme to use for the lock dialog."
+msgstr "გაფორმება -სკენ - დიალოგი."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"გასაღებში მიეთითება ეკრანმზოგის მიერ გამოსაყენებელი თემების სია. "
+"იგნორირდება, როცა არჩეულია რეჟიმი \"სუფთა ეკრანი\", \"ერთი თემის\" რეჟიმში "
+"უნდა მიეთითოს თემის სახელი, ხოლო \"შემთხვევითი თემის\" რეჟიმში - თემების სია."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "დრო ბლოკირებამდე"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "დრო სესიის დახურვის პუნქტის გამოჩენამდე"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+#, fuzzy
+msgid "Time before power-management baseline"
+msgstr "დრო"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+#, fuzzy
+msgid "Time before session is considered idle"
+msgstr "დრო სესია არის უქმი"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "დრო თემის შეცვლამდე"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>შეტყობინების დატოვება %R-თვის:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U ~ %h-ში</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_გაუქმება"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "შეტყობინების _დატოვება"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "სეანსის დასრუ_ლება"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_მომხმარებლის გადართვა"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1207
+msgid "_Unlock"
+msgstr "გან_ბლოკვა"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "კოსმოსი"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "კოსმოსური სურათების სლაიდშოუ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "ჯუჯის ნაფეხურები ეკრანის გარშემო"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "მოსრიალე ფეხი"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "მომხმარებლის სურათების დასტის სლაიდშოუ"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "სურათების დასტა"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "მფეთქავი ფერები პოპ-არტ-სტილში"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "კვადრატები პოპ-არტ სტილში"
+
+#: ../savers/floaters.c:84
+#, fuzzy
+msgid "Show paths that images follow"
+msgstr "ჩვენება"
+
+#: ../savers/floaters.c:87
+#, fuzzy
+msgid "Occasionally rotate images as they move"
+msgstr "მოძრაობა"
+
+#: ../savers/floaters.c:90
+#, fuzzy
+msgid "Print out frame rate and other statistics"
+msgstr "ბეჭდვა ჩარჩო სისწრაფე და სხვა"
+
+#: ../savers/floaters.c:93
+#, fuzzy
+msgid "The maximum number of images to keep on screen"
+msgstr "რიცხვი ის -სკენ -ზე"
+
+#: ../savers/floaters.c:93
+#, fuzzy
+msgid "MAX_IMAGES"
+msgstr "MAX"
+
+#: ../savers/floaters.c:96
+#, fuzzy
+msgid "The initial size and position of window"
+msgstr "ზომა და ის ფანჯარა"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "სიგანეxსიმაღლე+X+Y"
+
+#: ../savers/floaters.c:99
+#, fuzzy
+msgid "The source image to use"
+msgstr "წყარო ნახატი -სკენ"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "გამოსახულება - მოძრავი გამოსახულება ეკრანზე"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. იხ. დახმარება.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "უნდა მიუთითოთ ერთი  გამოსახულება.  იხ. დახმარება \n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "გამოსახულების მდებარეობა"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "გეზი"
+
+#: ../savers/slideshow.c:55
+#, fuzzy
+msgid "Color to use for images background"
+msgstr "ფერი -სკენ -"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr ""
+
+#: ../savers/slideshow.c:57
+#, fuzzy
+msgid "Do not randomize pictures from location"
+msgstr "არა მდებარეობა"
+
+#: ../savers/slideshow.c:59
+#, fuzzy
+msgid "Do not try to stretch images on screen"
+msgstr "არა -სკენ -ზე"
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ფაილის კოპირება: %u - %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "კოპირება '%s'"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "გამომგზავნის URI"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "მიმდინარე გამოგზავნის URI"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "მიმღების URI"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "მიმდინარე გაგზავნის URI"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "დანაწევრება დასრულებულია"
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "მიმდინარე გზავნილის დანაწევრება დასრულებულია"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "მიმდინარე URI-ინდექსი"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "მიმდინარე URI-ინდექსი - იწყება 1-დან"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "ჯამში URI"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "ჯამში URI რაოდენობა"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "ფაილების კოპირება"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "საიდან:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "სად:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "დაკავშირება..."
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "ეკრანმზოგის გრაციოზული დახურვა"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "ეკრანმზოგის მდგომარეობა"
+
+#: ../src/mate-screensaver-command.c:66
+#, fuzzy
+msgid "Query the length of time the screensaver has been active"
+msgstr "მოთხოვნა სიგრძე ის დრო აქტიური"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "ეკრანმზოგის მიერ ეკრანის დაუყოვნებლივ ბლოკირება"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "სხვა სურათზე გადასვლა, თუ ეკრანმზოგი ჩართულია"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "ეკრანმზოგის ჩართვა (ეკრანის გასუფთავება)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "ეკრანმზოგის დახურვა (ეკრანის აღდგენა)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "ეკრანმზოგის მიერ მომხმარებლის აქტივობის სიმულირება"
+
+#: ../src/mate-screensaver-command.c:78
+#, fuzzy
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "ბრძანება არის აქტიური."
+
+#: ../src/mate-screensaver-command.c:80
+#, fuzzy
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "პროგრამა არის"
+
+#: ../src/mate-screensaver-command.c:82
+#, fuzzy
+msgid "The reason for inhibiting the screensaver"
+msgstr "-"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:55
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "პროგრამის ვერსია"
+
+#: ../src/mate-screensaver-command.c:249
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "ეკრანმზოგი: %s\n"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "active"
+msgstr "აქტიური"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "inactive"
+msgstr "არააქტიური"
+
+#: ../src/mate-screensaver-command.c:274
+#, fuzzy, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "აქტიური - წამები n"
+
+#: ../src/mate-screensaver-dialog.c:53
+msgid "Show debugging output"
+msgstr "გამართვის გამონატანის ჩვენება"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show the logout button"
+msgstr "სესიის დახურვის ღილაკის ჩვენება"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Command to invoke from the logout button"
+msgstr "ბრძანება, რომელიც გაიშვება დახურვის ღილაკით"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the switch user button"
+msgstr "მომხმარებლის გადართვის ღილაკის ჩვენება"
+
+#: ../src/mate-screensaver-dialog.c:63
+#, fuzzy
+msgid "Message to show in the dialog"
+msgstr "შეტყობინება -სკენ დუ დიალოგი"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "MESSAGE"
+msgstr ""
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:173 ../src/mate-screensaver-dialog.c:174
+#: ../src/mate-screensaver-dialog.c:175 ../src/gs-auth-pam.c:698
+#, fuzzy
+msgid "Username:"
+msgstr "მომხმარებლის სახელი:"
+
+#: ../src/mate-screensaver-dialog.c:176 ../src/mate-screensaver-dialog.c:177
+#: ../src/gs-auth-pam.c:166
+#, fuzzy
+msgid "Password:"
+msgstr "პაროლი:"
+
+#: ../src/mate-screensaver-dialog.c:178
+#, fuzzy
+msgid "You are required to change your password immediately (password aged)"
+msgstr "თქვენ -სკენ შეცვლა დაუყოვნებლივ"
+
+#: ../src/mate-screensaver-dialog.c:179
+#, fuzzy
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "თქვენ -სკენ შეცვლა დაუყოვნებლივ root"
+
+#: ../src/mate-screensaver-dialog.c:180
+#, fuzzy
+msgid "Your account has expired; please contact your system administrator"
+msgstr "ანგარიში"
+
+#: ../src/mate-screensaver-dialog.c:181
+#, fuzzy
+msgid "No password supplied"
+msgstr "პაროლილ გარეშე"
+
+#: ../src/mate-screensaver-dialog.c:182
+#, fuzzy
+msgid "Password unchanged"
+msgstr "შეუცვლელი პაროლი"
+
+#: ../src/mate-screensaver-dialog.c:183
+#, fuzzy
+msgid "Can not get username"
+msgstr "ვერ ვხვდები მომხმარებელი"
+
+#: ../src/mate-screensaver-dialog.c:184
+#, fuzzy
+msgid "Retype new UNIX password:"
+msgstr "გაიმეორე ახალი UNIX პაროლი:"
+
+#: ../src/mate-screensaver-dialog.c:185
+#, fuzzy
+msgid "Enter new UNIX password:"
+msgstr "შეიყვანე ახალი UNIX პაროლი:"
+
+#: ../src/mate-screensaver-dialog.c:186
+#, fuzzy
+msgid "(current) UNIX password:"
+msgstr "(ამჯამინდელი) UNIX პაროლი:"
+
+#: ../src/mate-screensaver-dialog.c:187
+#, fuzzy
+msgid "Error while changing NIS password."
+msgstr "შეცდომა NIS."
+
+#: ../src/mate-screensaver-dialog.c:188
+#, fuzzy
+msgid "You must choose a longer password"
+msgstr "თქვენ a"
+
+#: ../src/mate-screensaver-dialog.c:189
+#, fuzzy
+msgid "Password has been already used. Choose another."
+msgstr "პაროლი."
+
+#: ../src/mate-screensaver-dialog.c:190
+#, fuzzy
+msgid "You must wait longer to change your password"
+msgstr "თქვენ -სკენ შეცვლა"
+
+#: ../src/mate-screensaver-dialog.c:191
+#, fuzzy
+msgid "Sorry, passwords do not match"
+msgstr "უკაცრავად არა ემთხვევა"
+
+#: ../src/mate-screensaver-dialog.c:257
+#, fuzzy
+msgid "Checking..."
+msgstr "მოწმდება..."
+
+#: ../src/mate-screensaver-dialog.c:299 ../src/gs-auth-pam.c:457
+#, fuzzy
+msgid "Authentication failed."
+msgstr "ავტორიზაცია ვერ განხორციალდა."
+
+#: ../src/mate-screensaver-preferences.c:500
+msgid "Blank screen"
+msgstr "სუფთა ეკრანი"
+
+#: ../src/mate-screensaver-preferences.c:506
+msgid "Random"
+msgstr "შემთხვევითი"
+
+#: ../src/mate-screensaver-preferences.c:876
+msgid "Invalid screensaver theme"
+msgstr "დაუშვებელი თემა"
+
+#: ../src/mate-screensaver-preferences.c:879
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "This file does not appear to be a valid screensaver theme."
+
+#: ../src/mate-screensaver-preferences.c:1006
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d საათი"
+
+#: ../src/mate-screensaver-preferences.c:1009
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d წუთი"
+
+#: ../src/mate-screensaver-preferences.c:1012
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d წამი"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:1018
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:1021
+#: ../src/mate-screensaver-preferences.c:1029
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:1024
+#: ../src/mate-screensaver-preferences.c:1032
+#: ../src/mate-screensaver-preferences.c:1036
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1051
+#, c-format
+msgid "Never"
+msgstr "არასოდეს"
+
+#: ../src/mate-screensaver-preferences.c:1450
+msgid "Could not load the main interface"
+msgstr "მთავარი ინტერფეისი არ იტვირთება"
+
+#: ../src/mate-screensaver-preferences.c:1452
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "შეამოწმეთ, არის თუ არა ეკრანმზოგი სწორად დაყენებული"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ნუ გაეშმაკდი მთლათ :)"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "გამართვის გამონატანი კოდის ჩართვა"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+#, fuzzy
+msgid "Unable to establish service %s: %s\n"
+msgstr "-სკენ წმ წმ n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+#, fuzzy
+msgid "Can't set PAM_TTY=%s"
+msgstr "კან t PAM წმ"
+
+#: ../src/gs-auth-pam.c:455
+#, fuzzy
+msgid "Incorrect password."
+msgstr "არასწორი პაროლი."
+
+#: ../src/gs-auth-pam.c:471
+#, fuzzy
+msgid "Not permitted to gain access at this time."
+msgstr "არა -სკენ ეთ დრო."
+
+#: ../src/gs-auth-pam.c:477
+#, fuzzy
+msgid "No longer permitted to access the system."
+msgstr "არა -სკენ."
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "შეტყობინებების მაგისტრალზე რეგისტრირების შეცდომა"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "არ არის კავშირი შეტყობინებების მაგისტრალთან"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "მიმდინარე სესიაში ეკრანმზოგი უკვე გაშვებულია"
+
+#: ../src/gs-lock-plug.c:269
+msgid "Time has expired."
+msgstr "დრო ამოიწურა."
+
+#: ../src/gs-lock-plug.c:297
+msgid "You have the Caps Lock key on."
+msgstr "ჩართულია ზედა რეგისტრის (Caps Lock) ფიქსაცია!"
+
+#: ../src/gs-lock-plug.c:1187
+#, fuzzy
+msgid "S_witch User..."
+msgstr "S მომხმარებელი."
+
+#: ../src/gs-lock-plug.c:1196
+msgid "Log _Out"
+msgstr "_სესიის დახურვა"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1373
+#, fuzzy
+msgid "%U on %h"
+msgstr "-ზე ს"
+
+#: ../src/gs-lock-plug.c:1387
+msgid "_Password:"
+msgstr "_პაროლი:"
+
diff --git a/po/kn.po b/po/kn.po
new file mode 100644
index 0000000..96a4aa7
--- /dev/null
+++ b/po/kn.po
@@ -0,0 +1,759 @@
+# translation of mate-screensaver.master.kn.po to Kannada
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Shankar Prasad <svenkate at redhat.com>, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.master.kn\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-09-18 23:11+0530\n"
+"Last-Translator: Shankar Prasad <svenkate at redhat.com>\n"
+"Language-Team: Kannada <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಆದ್ಯತೆಗಳನ್ನು ಅಣಿಗೊಳಿಸಿ"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಮುನ್ನೋಟ</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>ಎಚ್ಚರಿಕೆ: ಮೂಲದ ಬಳಕೆದಾರರಿಗೆ ತೆರೆಯು ಲಾಕ್ ಮಾಡಲ್ಪಡುವುದಿಲ್ಲ.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "ವಿದ್ಯುಚ್ಛಕ್ತಿ ನಿರ್ವಹಣೆ(_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "ಈ ಸಮಯದ ನಂತರ ಗಣಕಕ್ಕೆ ಕೆಲಸವಿಲ್ಲ ಎಂದು ಪರಿಗಣಿಸು(_i):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಆದ್ಯತೆಗಳು"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಮುನ್ನೋಟ"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "ಗಣಕಕ್ಕೆ ಕೆಲಸವಿಲ್ಲದೆ ಇದ್ದಾಗ ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು(_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಸಕ್ರಿಯವಾಗಿದ್ದಾಗ ತೆರೆಯನ್ನು ಲಾಕ್ ಮಾಡು(_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "ಮುನ್ನೋಟ(_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಥೀಮ್(_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಥೀಮ್‌ಗಳು"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರುಗಳು"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "ಕೆಲಸವಿಲ್ಲದಾಗ ಸಕ್ರಿಯಗೊಳಿಸು"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "ವಿಂಡೋಗೆ ಒಂದು ಕೀಲಿ ಮಣೆಯನ್ನು ಅಡಕಗೊಳಿಸುವುದನ್ನು ಅನುಮತಿಸು"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "ನಿರ್ಗಮಿಸುವುದನ್ನು ಅನುಮತಿಸು"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "ಅಧಿವೇಶನದ ಸ್ಥಿತಿ ಸಂದೇಶವನ್ನು ತೋರಿಸಲು ಅನುಮತಿಸು"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "ತೆರೆಯನ್ನು ಲಾಕ್‌ ಮಾಡಿದಾಗ ಅಧಿವೇಶನದ ಸ್ಥಿತಿ ಸಂದೇಶವನ್ನು ತೋರಿಸಲು ಅನುಮತಿಸು."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "ಬಳಕೆದಾರರನ್ನು ಬದಲಾಯಿಸುವುದನ್ನು ಅನುಮತಿಸು"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "ಅಡಕಗೊಳಿಸಲಾದ ಕೀಲಿ ಮಣೆ ಆಜ್ಞೆ"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "ಸಕ್ರಿಯಗೊಂಡಾಗ ಲಾಕ್ ಮಾಡು"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "ನಿರ್ಗಮಿಸುವ ಆಜ್ಞೆ"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಥೀಮ್ ಆಯ್ಕೆಯ ಕ್ರಮ"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"ಅಧಿವೇಶನದಲ್ಲಿ ಯಾವುದೆ ಕೆಲಸವಿಲ್ಲದೆ ಇದ್ದಾಗ ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಇದನ್ನು TRUE "
+"ಗೆ (ನಿಜ) ಹೊಂದಿಸಿ."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"ಅನ್‌ಲಾಕ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಒಂದು ಕೀಲಿ ಮಣೆಯನ್ನು ವಿಂಡೋದಲ್ಲಿ ಅಡಕಗೊಳಿಸಲು ಇದನ್ನು TRUE ಗೆ "
+"ಹೊಂದಿಸಿ. \"keyboard_command\" ಕೀಲಿಯು ಸೂಕ್ತವಾದ ಆಜ್ಞೆಯೊಂದಿಗೆ ಒದಗಿಸಿರಬೇಕು."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಸಕ್ರಿಯಗೊಂಡಾಗ ತೆರೆಯನ್ನು ಲಾಕ್ ಮಾಡಲು ಇದನ್ನು TRUE ಗೆ (ನಿಜ) ಹೊಂದಿಸಿ."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"ಬೇರೊಂದು ಬಳಕೆದಾರ ಖಾತೆಗೆ ಬದಲಾಯಿಸುವ ಒಂದು ಆಯ್ಕೆಯನ್ನು ಅನ್‌ಲಾಕ್‌ ಸಂವಾದದಲ್ಲಿ ಒದಗಿಸಲು ಇದನ್ನು "
+"TRUE ಹೊಂದಿಸಿ."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"ಒಂದು ಕಾಲ ವಿಳಂಬದ ನಂತರ ನಿರ್ಗಮಿಸುವ ಆಯ್ಕೆಯನ್ನು ಅನ್‌ಲಾಕ್‌ ಸಂವಾದದಲ್ಲಿ ನೀಡಲು ಇದನ್ನು TRUE ಗೆ "
+"ಹೊಂದಿಸು. ಕಾಲವಿಳಂಬವು \"logout_delay\" ಕೀಲಿಯಿಂದ ಸೂಚಿತಗೊಂಡಿರುತ್ತದೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" ಕೀಲಿಯು TRUE ಗೆ ಹೊಂದಿಸಲ್ಪಟ್ಟಿದ್ದಲ್ಲಿ, ಒಂದು ಕೀಲಿ "
+"ವಿಜೆಟ್‌ ಅನ್ನು ವಿಂಡೋಗೆ ಅಡಕಗೊಳಿಸಲು ಚಲಾಯಿಸಬೇಕಿರುವ ಆಜ್ಞೆ. ಈ ಕೀಲಿಯು ಸ್ಟ್ಯಾಂಡರ್ಡ್ "
+"ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ ಒಂದು XEMBED ಪ್ಲಗ್ ಸಂಪರ್ಕಸಾಧನ ಹಾಗು ವಿಂಡೋ XIDಯ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"ನಿರ್ಗಮಿಸುವ ಗುಂಡಿಯನ್ನು ಒತ್ತಿದಾಗ ಕೋರಬೇಕಿರುವ ಆಜ್ಞೆ. ಈ ಆಜ್ಞೆಯು ಏನನ್ನೂ ಪ್ರಶ್ನಿಸದೆ, "
+"ಬಳಕೆದಾರರನ್ನು ಹೊರಗೆ ನಿರ್ಗಮಿಸುವಂತೆ ಮಾಡುಬೇಕು. \"logout_enable\" ಕೀಲಿಯು TRUE ಗೆ "
+"ಹೊಂದಿಸಿದಲ್ಲಿ ಮಾತ್ರ ಈ ಕೀಲಿಯು ಪರಿಣಾಮಕಾರಿಯಾಗುತ್ತದೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "ತೆರೆಯನ್ನು ಲಾಕ್ ಮಾಡುವ ಮೊದಲು, ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಸಕ್ರಿಯವಾಗಿರಿಸಬೇಕಿರುವ ನಿಮಿಷಗಳ ಸಂಖ್ಯೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"ಅನ್‌ಲಾಕ್ ಸಂವಾದದಲ್ಲಿ ನಿರ್ಗಮಿಸುವ ಆಯ್ಕೆಯು ಕಾಣಿಸಿಕೊಳ್ಳುವ ಮೊದಲು, ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು "
+"ಸಕ್ರಿಯವಾಗಿರಿಸಬೇಕಿರುವ ನಿಮಿಷಗಳ ಸಂಖ್ಯೆ. \"logout_enable\" ಕೀಲಿಯು TRUE ಗೆ "
+"ಹೊಂದಿಸಿದಲ್ಲಿ ಮಾತ್ರ ಈ ಕೀಲಿಯು ಪರಿಣಾಮಕಾರಿಯಾಗುತ್ತದೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"ಅಧಿವೇಶನದಲ್ಲಿ ಕೆಲಸವಿಲ್ಲ ಎಂದು ಪರಿಗಣಿಸಬೇಕಿರುವ ಮೊದಲು ಅದು ನಿಷ್ಕ್ರಿಯವಾಗಿರಬೇಕಿರುವ "
+"ನಿಮಿಷಗಳ ಸಂಖ್ಯೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಥೀಮ್ ಅನ್ನು ಬದಲಾಯಿಸುವ ಮೊದಲು ಅದನ್ನು ಚಲಾಯಿಸಬೇಕಿರುವ ನಿಮಿಷಗಳ ಸಂಖ್ಯೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"ವಿದ್ಯುಚ್ಛಕ್ತಿ ನಿರ್ವಹಣೆಗೆ ಸೂಚಿಸುವ ಮೊದಲು ನಿಷ್ಕ್ರಿಯತೆಯ ಸಮಯ, ಸೆಕೆಂಡುಗಳಲ್ಲಿ. ಈ ಕೀಲಿಯನ್ನು "
+"ಅಣಿಗೊಳಿಸುವುದು ಹಾಗು ನೋಡಿಕೊಳ್ಳುವುದು ಅಧಿವೇಶನದ ವಿದ್ಯುಚ್ಛಕ್ತಿ ನಿರ್ವಹಣಾ ಮಧ್ಯವರ್ತಿಯ "
+"ಕೆಲಸವಾಗಿರುತ್ತದೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"ಸ್ಕ್ರೀನ್‌ಸೇವರಿನಿಂದ ಬಳಸಬೇಕಿರುವ ಆಯ್ಕೆಯ ವಿಧಾನ. ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ಯಾವುದೆ ಥೀಮ್ ಅನ್ನು ಬಳಸದೆ "
+"ಇರಲು \"ಕೇವಲ ಖಾಲಿ\" ಅನ್ನು, ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ಕೇವಲ ಒಂದು ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಬಳಸಲು \"ಒಂದು"
+"\" (\"ಥೀಮ್‌ಗಳು\" ಕೀಲಿಯಿಂದ ಸೂಚಿಸಲಾದ), ಹಾಗು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ಮನಸ್ಸಿಗೆ ಬಂದಂತೆ "
+"ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಬಳಸಲು \"ಮನಸ್ಸಿಗೆ ಬಂದಂತೆ\" ಅನ್ನು ಶಕ್ತಗೊಳಿಸಬಹುದಾಗಿದೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "ಲಾಕ್ ಸಂವಾದಕ್ಕಾಗಿನ ಥೀಮ್"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "ಲಾಕ್ ಸಂವಾದಕ್ಕಾಗಿ ಬಳಸಬೇಕಿರುವ ಥೀಮ್."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"ಸ್ಕ್ರೀನ್‌ಸೇವರಿನಿಂದ ಬಳಸಲ್ಪಡಬೇಕಿರುವ ಥೀಮ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಈ ಕೀಲಿಯು ಸೂಚಿಸುತ್ತದೆ. ಇದು \"ಕ್ರಮ\" "
+"ಕೀಲಿಯು \"ಕೇವಲ ಖಾಲಿ\" ಇದ್ದಲ್ಲಿ ಆಲಕ್ಷಿಸಲ್ಪಡುತ್ತದೆ, \"ಕ್ರಮ\" ವು \"ಒಂದು\" ಆಗಿದ್ದಲ್ಲಿ ಥೀಮ್ "
+"ಹೆಸರನ್ನು ನೀಡುತ್ತದೆ, ಹಾಗು \"ಕ್ರಮ\" ವು \"ಮನಸ್ಸಿಗೆ ಬಂದಂತೆ\" ಆಗಿದ್ದಲ್ಲಿ ಥೀಮ್‌ಗಳ ಒಂದು "
+"ಪಟ್ಟಿಯನ್ನು ನೀಡುತ್ತದೆ."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "ಲಾಕ್‌ ಮಾಡುವ ಮುಂಚಿನ ಸಮಯ"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "ನಿರ್ಗಮಿಸುವ ಆಯ್ಕೆಯ ಮುಂಚಿನ ಸಮಯ"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "ವಿದ್ಯುಚ್ಛಕ್ತಿ-ನಿರ್ವಹಣಾ ಕೆಳಗೆರೆಯ ಮುಂಚಿನ ಸಮಯ"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "ಅಧಿವೇಶನಕ್ಕೆ ಕೆಲಸವಿಲ್ಲ ಎಂದು ಪರಿಗಣಿಸಬೇಕಿರುವ ಮುಂಚಿನ ಸಮಯ"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "ಥೀಮ್ ಬದಲಾಯಿಸಲ್ಪಡಬೇಕಿರುವ ಮುಂಚಿನ ಸಮಯ"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R ಗಾಗಿ ಒಂದು ಸಂದೇಶವನ್ನು ಬಿಡಿ:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U, %h ನಲ್ಲಿ</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "ರದ್ದು ಮಾಡಲಾಗಿದೆ(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "ಸಂದೇಶವನ್ನು ಬಿಡು(_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "ನಿರ್ಗಮಿಸು(_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "ಬಳಕೆದಾರನನ್ನು ಬದಲಾಯಿಸು(_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "ಅನ್‌ಲಾಕ್ ಮಾಡು(_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "ಕಾಸ್ಮೋಸ್"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "ಅಂತರಿಕ್ಷದ ಚಿತ್ರಗಳ ಒಂದು ಚಿತ್ರಪ್ರದರ್ಶನವನ್ನು(ಸ್ಲೈಡ್‌ಶೋ) ತೋರಿಸುತ್ತದೆ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE ಪಾದದ ಚಿಹ್ನೆಯನ್ನು ತೆರೆಯ ತುಂಬೆಲ್ಲಾ ಬಬಲ್ ಮಾಡುತ್ತದೆ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "ತೇಲುವ ಪಾದ"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "ನಿಮ್ಮ ಚಿತ್ರದ ಕೋಶದಿಂದ ಒಂದು ಚಿತ್ರಪ್ರದರ್ಶನವನ್ನು(ಸ್ಲೈಡ್‌ಶೋ) ತೋರಿಸು"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "ಚಿತ್ರಗಳ ಕೋಶ"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "ಮಿನುಗುವ ಬಣ್ಣಗಳ ಕಲಾತ್ಮಕ ಚೌಕಗಳನ್ನು ಹೊಂದಿರುವ ಪುಟಿಕೆ ಚೌಕುಳಿಗಳು."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "ಕಲಾ ಚೌಕಗಳನ್ನು ಪುಟಿಸು"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "ಚಿತ್ರಗಳು ಅನುಸರಿಸುವ ಮಾರ್ಗವನ್ನು ತೋರಿಸು"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "ಚಿತ್ರಗಳನ್ನು ಜರುಗಿಸುತ್ತಿರುವಾಗ ಆಗಾಗ ಅವುಗಳನ್ನು ತಿರುಗಿಸು"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "ಫ್ರೇಮ್ ದರ ಹಾಗು ಇನ್ನಿತರೆ ಅಂಕಿಅಂಶಗಳನ್ನು ಮುದ್ರಿಸು"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "ತೆರೆಯ ಮೇಲೆ ಇರಿಸಬೇಕಿರುವ ಚಿತ್ರಗಳ ಗರಿಷ್ಟ ಸಂಖ್ಯೆ"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "ವಿಂಡೋದ ಆರಂಭಿಕ ಗಾತ್ರ ಹಾಗು ಸ್ಥಾನ"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "ಬಳಸಬೇಕಿರುವ ಮೂಲ ಚಿತ್ರ"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - ತೆರೆಯ ಸುತ್ತ ಚಿತ್ರಗಳನ್ನು ತೇಲಿಸುತ್ತದೆ"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. ಬಳಕೆಯ ಮಾಹಿತಿಗಾಗಿ --help ಅನ್ನು ನೋಡಿ.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "ನೀವು ಒಂದು ಚಿತ್ರವನ್ನು ಸೂಚಿಸಲೇ ಬೇಕಾಗುತ್ತದೆ.  ಬಳಕೆಯ ಮಾಹಿತಿಗಾಗಿ --help ಅನ್ನು ನೋಡಿ.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ಚಿತ್ರಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಬೇಕಿರುವ ಸ್ಥಳ"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "ಚಿತ್ರಗಳ ಹಿನ್ನಲೆಗೆ ಬಳಸಬೇಕಿರುವ ಬಣ್ಣಗಳು"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "ಸ್ಥಳದಿಂದ ಚಿತ್ರಗಳನ್ನು ಮನಬಂದಂತೆ ಇರಿಸ ಬೇಡ "
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "ತೆರೆಯಲ್ಲಿನ ಚಿತ್ರಗಳನ್ನು ಎಳೆಯಲು ಪ್ರಯತ್ನಿಸಬೇಡ"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ಕಡತಗಳನ್ನು ಕಾಪಿ ಮಾಡಲಾಗುತ್ತಿದೆ"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "ಯಿಂದ:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "ಗೆ:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "ಥೀಮ್‌ಗಳನ್ನು ಕಾಪಿ ಮಾಡಲಾಗುತ್ತದೆ"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "ಅಮಾನ್ಯವಾದ ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಥೀಮ್"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ವು ಒಂದು ಮಾನ್ಯವಾದ ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಎಂದು ಕಾಣುತ್ತಿಲ್ಲ."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ಕಡತವನ್ನು ಕಾಪಿ ಮಾಡಲಾಗುತ್ತಿದೆ: %u, (%u ಯಲ್ಲಿ)"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಆಕರ್ಷಕವಾಗಿ ನಿರ್ಗಮಿಸುವಂತೆ ಮಾಡುತ್ತದೆ"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರಿನ ಸ್ಥಿತಿಗಾಗಿ ಮನವಿ ಸಲ್ಲಿಸಿ"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಸಕ್ರಿಯವಾಗಿರಬೇಕಿರುವ ಸಮಯಕ್ಕಾಗಿ ಮನವಿಸಲ್ಲಿಸಿ"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "ಚಾಲನೆಯಲ್ಲಿರುವ ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಪ್ರಕ್ರಿಯೆಗೆ ತಕ್ಷಣವೆ ತೆರೆಯನ್ನು ಲಾಕ್ ಮಾಡುವಂತೆ ತಿಳಿಸುತ್ತದೆ"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಸಕ್ರಿಯವಾಗಿದ್ದರೆ ಬೇರೊಂದು ಗ್ರಾಫಿಕ್ಸ್‍ ಡೆಮೋಗೆ ಬದಲಾಯಿಸು"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಆನ್ ಮಾಡು (ತೆರೆಯನ್ನು ಖಾಲಿಯಾಗಿ ಇರಿಸು)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಸಕ್ರಿಯವಾಗಿದ್ದರೆ ಅದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು (ತೆರೆಯನ್ನು ಖಾಲಿಯಾಗಿ ಇರಿಸಬೇಡ)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "ಚಲಾಯಿತಗೊಳ್ಳುತ್ತಿರುವ ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಬಳಕೆದಾರರ ಕಾರ್ಯದಲ್ಲಿ ಹೊಂದಿಕೊಂಡಿರುವಂತೆ ಮಾಡು"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳ್ಳದಂತೆ ತಡೆಹಿಡಿ.  ತಡೆಯೊಡ್ಡುವಿಕೆಯು ಸಕ್ರಿಯಗೊಂಡಿದ್ದಾಗ ಆಜ್ಞೆಯು "
+"ನಿರ್ಬಂಧಿಸುತ್ತದೆ."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ತಡೆಯತ್ತಿರುವ ಕರೆ ಮಾಡುವ ಅನ್ವಯ"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ತಡೆಯಲು ಕಾರಣ"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "ಈ ಅನ್ವಯದ ಆವೃತ್ತಿ"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ %s ಆಗಿದೆ\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "ಸಕ್ರಿಯ"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "ನಿಷ್ಕ್ರಿಯ"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ತಡೆಯಲಾಗುತ್ತಿಲ್ಲ\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಅನ್ನು ಇದು ತಡೆಯುತ್ತಿದೆ:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ %d ಸೆಕೆಂಡುಗಳ ಕಾಲ ಸಕ್ರಿಯವಾಗಿತ್ತು.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಪ್ರಸಕ್ತ ಸಕ್ರಿಯವಾಗಿಲ್ಲ.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "ದೋಷನಿವಾರಣಾ ಔಟ್‌ಪುಟ್ ಅನ್ನು ತೋರಿಸು"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "ನಿರ್ಗಮಿಸುವ ಗುಂಡಿಯನ್ನು ತೋರಿಸು"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "ನಿರ್ಗಮಿಸುವ ಗುಂಡಿಯಿಂದ ಕೋರಿಕೆ ಸಲ್ಲಿಸಬೇಕಿರುವ ಆಜ್ಞೆ"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "ಬಳಕೆದಾರರನ್ನು ಬದಲಾಯಿಸುವ ಗುಂಡಿಯನ್ನು ತೋರಿಸು"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "ಸಂವಾದದಲ್ಲಿ ತೋರಿಸಬೇಕಿರುವ ಸಂದೇಶ"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "ಬಳಸದೆ ಇರುವ"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ಬಳಕೆದಾರ ಹೆಸರು:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "ಗುಪ್ತಪದ:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "ನೀವು ಈ ಕೂಡಲೆ ನಿಮ್ಮ ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸುವ ಅಗತ್ಯವಿದೆ (ಗುಪ್ತಪದ ಹಳತಾಗಿದೆ)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "ನೀವು ಈ ಕೂಡಲೆ ನಿಮ್ಮ ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸುವ ಅಗತ್ಯವಿದೆ (ಮೂಲದಿಂದ ಒತ್ತಾಯಿತಗೊಂಡ)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "ನಿಮ್ಮ ಖಾತೆಯು ವಾಯಿದೆಯು ಮುಗಿದಿದೆ; ದಯವಿಟ್ಟು ನಿಮ್ಮ ಗಣಕ ವ್ಯವಸ್ಥಾಪಕರನ್ನು ಸಂಪರ್ಕಿಸಿ"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "ಯಾವುದೆ ಗುಪ್ತಪದವನ್ನು ಒದಗಿಸಲಾಗಿಲ್ಲ"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲಾಗಿಲ್ಲ"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "ಬಳಕೆದಾರ ಹೆಸರನ್ನು ಪಡೆಯಲಾಗಿಲ್ಲ"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "ಹೊಸ UNIX ಗುಪ್ತಪದವನ್ನು ಇನ್ನೊಮ್ಮೆ ನಮೂದಿಸಿ:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "ಹೊಸ UNIX ಗುಪ್ತಪದವನ್ನು ನಮೂದಿಸಿ:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(ಪ್ರಸಕ್ತ) UNIX ಗುಪ್ತಪದ:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸುವಾಗ ದೋಷ ಉಂಟಾಗಿದೆ."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "ನೀವು ದೊಡ್ಡದಾದ ಗುಪ್ತಪದವನ್ನು ಬಳಸಬೇಕು"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "ಗುಪ್ತಪದವು ಈಗಾಗಲೆ ಬಳಸಲಾಗಿದೆ. ಬೇರೊಂದನ್ನು ಆರಿಸಿ."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "ಗುಪ್ತಪದವನ್ನು ಬದಲಾಯಿಸಲು ನೀವು ಇನ್ನಷ್ಟು ಹೊತ್ತು ಕಾಯಬೇಕು"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "ಕ್ಷಮಿಸಿ, ಗುಪ್ತಪದಗಳು ತಾಳೆಯಾಗುವುದಿಲ್ಲ"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "ದೃಢಿಕರಣವು ವಿಫಲಗೊಂಡಿದೆ."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "ಖಾಲಿ ತೆರೆ"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "ಮನಸ್ಸಿಗೆ ಬಂದಂತೆ"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ಗಂಟೆ"
+msgstr[1] "%d ಗಂಟೆಗಳು"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d ನಿಮಿಷ"
+msgstr[1] "%d ನಿಮಿಷಗಳು"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d ಸೆಕೆಂಡು"
+msgstr[1] "%d ಸೆಕೆಂಡುಗಳು"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "ಎಂದೂ ಬೇಡ"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "ಮುಖ್ಯ ಸಂಪರ್ಕ ಸಾಧನವನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಸರಿಯಾಗಿ ಅನುಸ್ಥಾಪಿತಗೊಂಡಿದೆ ಎಂದು ದಯವಿಟ್ಟು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ಒಂದು ಡೆಮನ್ ಆಗಬೇಡ"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "ದೋಷನಿವಾರಣಾ ಸಂಜ್ಞೆಯನ್ನು ಶಕ್ತಗೊಳಿಸು"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "ಸ್ಕ್ರೀನ್‌ ಸೇವರ್ ಹಾಗು ಲಾಕ್ ಮಾಡುವ ಪ್ರೊಗ್ರಾಮ್ ಅನ್ನು ಆರಂಭಿಸಿ"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%s ಸೇವೆಯನ್ನು ನೆಲೆಗೊಳಿಸಲು ಶಕ್ತಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY ಅನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "ಸರಿಯಲ್ಲದ ಗುಪ್ತಪದ."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "ಈ ಸಮಯದಲ್ಲಿ ನಿಲುಕನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ಅನುಮತಿ ಇಲ್ಲ."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "ಗಣಕವನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಇನ್ನು ಮುಂದೆ ಅನುಮತಿ ಇಲ್ಲ."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "ಸಂದೇಶ ಬಸ್‌ನೊಂದಿಗೆ ನೋಂದಾಯಿಸಲು ವಿಫಲಗೊಂಡಿದೆ"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "ಸಂದೇಶ ಬಸ್‌ಗೆ ಸಂಪರ್ಕಿತಗೊಂಡಿಲ್ಲ"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "ಸ್ಕ್ರೀನ್‌ಸೇವರ್ ಈಗಾಗಲೆ ಈ ಅಧಿವೇಶನದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿದೆ"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "ಕಾಲಾವಧಿ ಮುಗಿದಿದೆ."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "ನಿಮ್ಮ Caps Lock ಕೀಲಿಯು ಆನ್ ಆಗಿದೆ."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "ಬಳಕೆದಾರರನ್ನು ಬದಲಾಯಿಸು(_w)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "ಹೊರ ನಡೆ(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U, %h ದಲ್ಲಿ"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "ಗುಪ್ತಪದ(_P):"
+
diff --git a/po/ko.po b/po/ko.po
new file mode 100644
index 0000000..ba02293
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,1031 @@
+# mate-screensaver Korean message translation.
+# This file is distributed under the same license as the mate-screensaver package.
+# Young-Ho Cha <ganadist at gmail.com>, 2006.
+# Changwoo Ryu <cwryu at debian.org>, 2006, 2007, 2008, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-09-20 08:07+0900\n"
+"PO-Revision-Date: 2010-03-06 23:22+0900\n"
+"Last-Translator: Changwoo Ryu <cwryu at debian.org>\n"
+"Language-Team: MATE Korea <mate-kr at googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "화면 보호기"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "화면 보호기를 설정합니다"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>화면 보호기 미리 보기</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>경고: 루트 사용자의 경우에는 화면을 잠그지 않습니다.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "전원 관리(_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "다음 시간이 지나면 입력 없는 상태로 취급(_I):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "화면 보호기 기본 설정"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "화면 보호기 미리 보기"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "입력이 없는 상태일 때 화면 보호기 켜기(_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "화면 보호기가 켜지면 화면 잠그기(_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "미리 보기(_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "화면 보호기 테마(_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "화면 보호기 테마"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "화면 보호기"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "세션이 정지되면 시작"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "키보드를 창에 포함시킬 수 있음"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "로그아웃 허용"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "세션 상태 메시지 표시를 허용"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "화면을 잠갔을 때 세션 상태 메시지의 표시를 허용합니다."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "사용자 전환 허용"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "내장 키보드 명령어"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "활성화 되면 잠그기"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "로그아웃 명령"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "화면 보호기 선택 모드"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "세션이 정지될 때 화면 보호기를 시작하려면 이 값을 TRUE로 설정하십시오."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"이 값이 참이면 잠금을 풀 때 키보드를 창 안에 내장합니다. \"keyboard_command"
+"\" 키도 적당한 명령어로 설정해야 합니다."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "화면 보호기가 켜질 때 화면을 잠그려면 이 값을 TRUE로 설정하십시오."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"잠금 풀기 창에서 다른 사용자 계정으로 바꾸는 옵션을 보이려면 이 값을 TRUE로 "
+"설정하십시오."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"지연 시간이 지난 후, 잠금 풀기 창에서 로그아웃 옵션을 제공하려면 이 값을 TRUE"
+"로 설정하십시오. 지연 시간 값은 \"logout_delay\" 키로 지정합니다."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" 키가 참이면, 키보드 위젯을 창에 집어 넣을 때 "
+"이 명령을 실행합니다. 이 명령은 XEMBED 플러그 인터페이스에 맞아야 하고 표준 "
+"출력으로 창의 XID를 출력해야 합니다."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"로그아웃 단추를 누를 때 실행할 명령. 이 명령은 아무 상호 작용없이 로그아웃 하"
+"도록 합니다. 이 키 값은 \"logout_enable\"키 값이 TRUE로 설정되어 있을 때만 영"
+"향을 끼칩니다."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "화면 보호기가 켜진 후 화면이 잠기는데 걸리는 시간(분)."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"화면 보호기가 켜진 후, 잠금 풀기 창에서 로그아웃 옵션이 나타나기 까지 시간. "
+"이 키는 \"logout_enable\"키가 TRUE로 설정되어 있을 때 만 영향을 끼칩니다."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "세션이 정지되었다고 판단되는 시간(분)."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "화면 보호기 테마가 바뀌기 전 실행 시간(분)."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"전원 관리에 신호를 보내기까지의 입력이 없는 시간 (초 단위). 이 키 값은 전원 "
+"관리 에이전트가 설정하고 관리합니다."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"화면 보호기에서 쓸 선택 모드. \"blank-only\"는 테마를 쓰지 않고 화면보호기를 "
+"켭니다. \"single\"은 화면보호기에서 (\"themes\"키에서 지정한) 하나의 테마만 "
+"씁니다. \"random\"은 아무 테마나 써서 화면보호기를 켭니다."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "잠금 대화 상자의 테마"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "잠금 대화 상자에 사용할 테마."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"화면 보호기에서 쓸 테마 목록이 이 키에 지정됩니다. \"mode\"키가 \"blank-only"
+"\"이면 무시됩니다. \"mode\"키가 \"single\"이면 테마 이름이, \"random\"이면 테"
+"마 목록이 지정됩니다."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "잠그기 전 시간"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "로그아웃 옵션 전 시간"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "전원 관리에 들어갈 때까지 시간"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "세션이 입력 없는 상태라고 판단하기 전 시간"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "테마 바뀌기 전 시간"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R에게 남길 메시지:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%h의 %U</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "취소(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "메시지 남기기(_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "로그아웃(_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "사용자 바꾸기(_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "잠금 풀기(_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "우주"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "우주 그림의 슬라이드를 보여줍니다"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "화면에 그놈 발바닥 로고가 떠다닙니다"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "떠다니는 발바닥"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "그림 폴더에 있는 그림의 슬라이드를 보여줍니다"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "그림 폴더"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "고동치는 색깔의 팝아트 형식 격자 모양."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "팝 아트 사각형"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "다음 그림의 경로를 보입니다"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "그림이 움직이면서 때때로 회전하도록 합니다"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "프레임 개수와 다른 상태 출력"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "화면에 나타날 그림의 최대 개수"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "창의 초기 크기와 위치"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "사용할 원본 그림"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "그림 - 화면에 그림을 떠다니게 합니다"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. 사용법을 보려면 --help를 쓰십시오.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "그림 하나를 지정해야 합니다. 사용법을 보려면 --help를 쓰십시오.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "그림을 가져오는 경로"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "경로"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "이미지 배경에 쓸 색상"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "순서대로 그림 보이기"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "화면에 그림을 늘리지 않도록 하기"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "파일 복사 중"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "원본:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "대상:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "테마 복사 중"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "잘못된 화면 보호기 테마"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s 파일은 올바른 화면 보호기 테마가 아닌 것 같습니다."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "파일 복사 중: %2$u개 중 %1$u개"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "화면 보호기를 정상적으로 끝냅니다"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "화면 보호기의 상태를 알아봅니다"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "화면 보호기가 얼마나 오랜 시간동안 동작하고 있었는지 알아봅니다"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "실행 중인 화면 보호기 프로세스에게 바로 화면을 잠그도록 합니다"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "화면 보호기가 실행중이면, 다른 화면이 시작하도록 합니다"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "화면 보호기를 켭니다 (빈 화면)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "화면 보호기가 실행중이면, 화면보호기를 끕니다"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "사용자가 움직이는 것처럼 해서 화면 보호기를 멈춥니다"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"화면 보호기 동작을 막습니다.  해당 명령이 동작하는 동안 활성화되지 않습니다."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "화면 보호기 동작을 막는 프로그램 지정"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "화면 보호기를 막는 이유"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "이 프로그램의 버전"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "화면 보호기가 %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "활성화 되었습니다"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "비활성화 되었습니다"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "화면 보호기를 막지 않았습니다\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "화면 보호기가 다음에 의해 막혀 있습니다:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "화면 보호기가 %d초 동안 동작하고 있었습니다.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "화면 보호기를 사용하지 않고 있습니다.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "디버깅 출력 보기"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "로그아웃 단추 보이기"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "로그아웃 단추를 누를 때 실행할 명령"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "사용자 전환 단추 보이기"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "대화 상자에 보여줄 메시지"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "<메시지>"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "사용하지 않음"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "사용자 이름:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "암호:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "즉시 암호를 바꿔야 합니다 (암호가 오래됨)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "즉시 암호를 바꿔야 합니다 (루트가 강제로 지정)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "암호가 만료되었습니다; 시스템 관리자에게 연락하십시오"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "암호를 입력하지 않았습니다"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "암호를 바꾸지 않았습니다"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "사용자 이름을 얻을 수 없습니다"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "새 유닉스 암호를 다시 입력하십시오:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "새 유닉스 암호를 입력하십시오:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(현재) 유닉스 암호:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS 암호를 바꾸는 데 오류가 발생했습니다."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "더 긴 암호를 사용해야 합니다"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "암호를 이미 사용했습니다. 다른 암호를 사용하십시오."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "암호를 바꾸려면 좀 더 기다려야 합니다"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "암호가 일치하지 않습니다"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "확인하는 중..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "인증이 실패했습니다."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "빈 화면"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "아무거나"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d시간"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d분"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d초"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "쓰지 않기"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "메인 인터페이스를 읽을 수 없습니다"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "화면 보호기를 올바로 설치하십시오"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "데몬이 되지 않았습니다"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "디버깅 코드 사용"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "화면 보호기 및 잠그기 프로그램을 실행합니다"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%s 서비스를 연결하지 못했습니다: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s 설정을 하지 못했습니다"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "암호가 올바르지 않습니다."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "현재는 권한을 얻을 수 없습니다."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "더 이상 시스템에 접근할 수 없습니다."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "메시지 버스에 등록 실패"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "메시지 버스에 연결 안됨"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "이 세션에 화면 보호기가 이미 실행중입니다"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "시간이 지났습니다."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Caps Lock키가 눌려져있습니다."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "사용자 바꾸기(_W)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "로그아웃(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%h의 %U"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "암호(_P):"
+
+#~ msgid "Reason for being away"
+#~ msgstr "컴퓨터에서 떨어져 있는 이유"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "컴퓨터에서 떨어져 있는 이유."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "'%s' 복사 중"
+
+#~ msgid "From URI"
+#~ msgstr "원본 URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "현재 전송되고 있는 URI"
+
+#~ msgid "To URI"
+#~ msgstr "대상 URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "현재 전송받는 URI"
+
+#~ msgid "Fraction completed"
+#~ msgstr "일부가 완료되었습니다"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "전송의 일부가 현재 끝났습니다"
+
+#~ msgid "Current URI index"
+#~ msgstr "현재 URI 색인"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "현재 URI 색인 - 1부터 시작"
+
+#~ msgid "Total URIs"
+#~ msgstr "모든 URI"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "URI의 총 개수"
+
+#~ msgid "Connecting..."
+#~ msgstr "연결중..."
+
+#~ msgid "_Switch user..."
+#~ msgstr "사용자 바꾸기(_S)..."
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "Time before activation"
+#~ msgstr "활성하기 전 시간"
+
+#~ msgid "S_witch to user:"
+#~ msgstr "사용자 바꾸기(_W):"
+
+#~ msgid "Manager"
+#~ msgstr "관리자"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "이 개체를 소유하는 관리자."
+
+#~ msgid "Name"
+#~ msgstr "이름"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "이 개체를 참조하는 X11 화면의 이름."
+
+#~ msgid "User"
+#~ msgstr "사용자"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "현재 가상터미널에 로그인 된 사용자."
+
+#~ msgid "Console"
+#~ msgstr "콘솔"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr "지금 보여지는 가상 콘솔의 번호, 또는 %-1."
+
+#~ msgid "Nested"
+#~ msgstr "포함됨"
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "이 화면이 포함된 화면인지 여부."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "화면 관리자와 알 수 없는 이유로 연결되지 않습니다."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "화면 관리자가 실행되지 않거나 너무 이전 것 입니다."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "설정된 탄력적 서버의 개수 제한에 다다랐습니다."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "X를 시작하는데 알 수 없는 오류가 생겼습니다."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X서버가 시작하는데 실패 했습니다."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "너무 많은 X세션이 실행중입니다."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr "중첩 X 서버(Xnest)가 현재 X서버에 연결할 수 없습니다."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "MDM설정에서 X 서버를 찾을 수 없습니다."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "알 수 없는 로그아웃 동작을 설정하려 시도했거나, 사용할 수 없는 로그아웃 동"
+#~ "작을 설정하려 시도했습니다."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "가상 터미널이 지원되지 않습니다."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "잘못된 가상 터미널 번호입니다."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "지원하지 않는 설정 키를 고치려합니다."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority 파일이 없거나 잘못 설정되어 있습니다."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "화면 관리자에 너무 많은 메세지가 보내졌고, 얼어버렸습니다."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "화면 관리자가 알 수 없는 오류 메세지를 보냈습니다."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "이 메뉴 항목에 나타나는 사용자."
+
+#~ msgid "Icon Size"
+#~ msgstr "아이콘 크기"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "쓰이는 아이콘의 크기."
+
+#~ msgid "Indicator Size"
+#~ msgstr "알림 표시 크기"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "알림 표시의 크기"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "알림 표시 여백"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "사용자 이름과 알림 표시 사이의 여백"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "현재 사용자가 제어되는 사용자 관리자 개체."
+
+#~ msgid "Show Details"
+#~ msgstr "자세히 보기"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM(그놈 화면 관리자)이 실행되지 않았습니다."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "KDM(KDE 화면 관리자)나 xdm같은 다른 화면관리자가 실행되고 있는 것 같습니"
+#~ "다."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "이 기능을 쓰고 싶다면 MDM믈 실행하거나 시스템 관리자에게 MDM을 시작해달라"
+#~ "고 요청하십시오."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "MDM(그놈 화면 관리자)와 통신할 수 없습니다"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "옛날 버젼의 MDM이 실행되고 있는 것 같습니다."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "MDM과 통신할 수 없습니다, 옛날 버젼의 MDM이 실행되고 있는 것 같습니다."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "탄력적 X 서버의 최대 허용치에 다다랐습니다."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "X서버를 시작하는데 오류가 생겼습니다."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "X서버가 실패했습니다. 설정이 잘못된 것 같습니다."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "너무 많은 X 세션이 실행중입니다."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "중첩 X서버 (Xnest)가 현재 X서버와 연결할 수 없습니다. X인증 파일이 없는 "
+#~ "것 같습니다."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "중첩 X서버 (Xnest)를 쓸 수 없거나 MDM이 잘못 설정된 것 같습니다.\n"
+#~ "중첩 로그인을 쓰려면 Xnest 꾸러미를 설치하십시오."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr "X서버를 쓸 수 없습니다. MDM이 잘못 설정된 것 같습니다."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "잘못된 가상 터미널 번호로 바꾸려고합니다."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "이 작업을 하기 위해 필요한 인증한 내용이 없습니다.  아마도 .Xauthority 파"
+#~ "일이 올바르게 설정되지 않았을 것입니다."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "너무 많은 메세지를 MDM에 보내서 죽었습니다."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "알 수 없는 오류가 발생했습니다."
+
+#~ msgid "_Screensaver"
+#~ msgstr "화면 보호기(_S)"
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "모니터 전원 관리 허용"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr ""
+#~ "화면보호기가 모니터 전원을 끄도록 하려면 이 값을 TRUE로 설정하십시오."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "화면 보호기가 켜진 후 모니터가 대기 모드로 바뀌는데 걸리는 시간(분)."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "화면 보호기가 켜진 후 모니터가 잠자기 모드로 바뀌는데 걸리는 시간(분)."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr "화면 보호기가 켜진 후 모니터의 전원을 끄는데 걸리는 시간(분)."
+
+#~ msgid "Time before power off"
+#~ msgstr "전원 끄기 전 시간"
+
+#~ msgid "Time before standby"
+#~ msgstr "대기 전 시간"
+
+#~ msgid "Time before suspend"
+#~ msgstr "잠자기 전 시간"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "화면보호기가 실행 될 때 그래픽 테마가 실행되지 않게 합니다"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr "화면보호기가 실행 될 때 (적당하면) 그래픽 테마가 실행되게 합니다"
+
+#~ msgid "0 seconds"
+#~ msgstr "0초"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "열쇠글이 틀립니다."
diff --git a/po/ku.po b/po/ku.po
new file mode 100644
index 0000000..daad3c3
--- /dev/null
+++ b/po/ku.po
@@ -0,0 +1,978 @@
+# translation of ku.po to
+# translation of mate-screensaver
+# Copyright (C) 2006 THE mate-screensaver'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the mate-screensaver package.
+# <>, 2006.
+# , 2006.
+# 
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: ku\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-08-16 21:07+0200\n"
+"PO-Revision-Date: 2006-08-16 21:07+0200\n"
+"Last-Translator: rizoye-xerzi <rizoxerzi at gmail.com>\n"
+"Language-Team: Kurdish <<ku at li.org>>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural= n != 1;X-Generator: KBabel 1.10.2\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Dîmenderparêz"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Vebijêrkên dîmenderparezê mîheng bike"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Dirbên dîmenderparêzê</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Regard the computer as _idle after:"
+msgstr "Piştî vê wextê_ weke di moda rawestîne de mîheng bike:"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Screensaver Preferences"
+msgstr "Vebijêrkên Dîmenderparêzê"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preview"
+msgstr "Vebijêrkên Dîmenderparêzê"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "_Activate screensaver when computer is idle"
+msgstr "Dema danişîn di moda rawestînê de be dîmenderparêzê bi_xebitîne"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Lock screen when screensaver is active"
+msgstr "Dema dîmenderparêz dixebite dîmenê _kilît bike"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Preview"
+msgstr "_Pêşdîtin"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Screensaver theme:"
+msgstr "Dirba _dîmenderparêzê:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver themes"
+msgstr "Dirbên dîmenderparêzê"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Parêzvanên ekranê"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Dema rawestiyayî be bixebitîne"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Destûra derketinê bide"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Destûrê bide guhertina bikarhêneran"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "Dema xebitî kilît bike"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "Fermana derketinê"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Screensaver theme selection mode"
+msgstr "moda hilbijartina dirbên dîmenderparêzê"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Dema rawestînê de be ji bo xebitandina dîmenderparêzê weke VEKIRÎ mîheng "
+"bike."
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Dema dîmenderparêz xebitî ji bo kilîtkirina dîmenê weke VEKIRÎ mîheng bike"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Ji bo destûra guherandina bikarhêneran ya di paceya kîltvekirinê de vê "
+"bijartekê weke VEKIRÎ mîheng bike"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Piştî derbasbûna wextekê ji bo girtina danişînê, ji bo ku ru karibe li "
+"diyaloga vekirina kilîtê re bijartekekê zêde bike, vêya weke TRUE (RAST) "
+"biguherîne. Derengmayîn di mifteya \"derketina_dereng\" de hatiye diyarkirin."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Fermana wê bixebite dema ku li bişkoka danişînê bigire were tikandin. Ev "
+"ferman bi hêsanî,  dibe ku dema tu çalakiya bikarhêner tunebe girtina "
+"danişînê be. Ev mifte tenê dema nirxa \"derketina_dereng\" weke TRUE (RAST) "
+"hatibe mîhengkirin bandoreke wê heye."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Hejmara xulekan ya ji çalakirina dîmenderparêzê û heta kilîtbûna dîmenê"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Piştî ku dîmenderparêz çalak bû, di diyaloga kilîtvekirinê de berî ku "
+"bijarteka danişînê bigire xuyanî bibe, hejmara xulekên ku wê derbas bibe. Ev "
+"mifte tenê dema ku nirxa \"derketina_temînkirî\" weke TRUE (RAST) hatibe "
+"mîhengkirin xwedîbandor e."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Berî ku danişîn têkeve rolantiyê, hejmara xulekan yên tu tevger tunebû."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"Berî ku dirbê dîmenderparêzê were guhertin hejmara xulekan yên wê derbas "
+"bibin."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Moda hilbijartinê ya ji aliyê dîmenderparêzê ve tê bikaranîn. Dema ku "
+"dîmenderparêz xebitî ji bo ku tu dirb neyê bikaranîn \"vala, (ya di mifteya "
+"\"dirban\" de hatiye diyarkirin) tenê ji bo bikaranîna dirbekî \"tek\" û ji "
+"bo bikaranîna dirbekî jî çawalêhato \"rasthatî\" dibe."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "Theme for lock dialog"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "Theme to use for the lock dialog."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Ev mifte lîsteya dirbên ku wê ji aliyê dîmenderparêzê ve were bikaranîn "
+"diyar dike. Heke mifteya modê \"vala\" be ser guh re tê avêtin, \"tek\" be "
+"navê dirbekî tê pêkanîn, \"rasthatî\" be lîsteyeke dirban tê pêkanîn."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Time before activation"
+msgstr "Maweya Çalakbûnê"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Time before locking"
+msgstr "Maweya kilîtbûnê"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "Time before logout option"
+msgstr "Dema berî bijarteka danişînê bigire"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before theme change"
+msgstr "Dema berî guherîna dirban"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr ""
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr ""
+
+#: ../data/lock-dialog-default.glade.h:5 ../src/mate-screensaver-dialog.c:172
+#: ../src/mate-screensaver-dialog.c:173
+msgid "Password:"
+msgstr "Şîfre:"
+
+#: ../data/lock-dialog-default.glade.h:6 ../src/gs-lock-plug.c:1703
+msgid "S_witch to user:"
+msgstr "_Bixebitîne bo Bikarhinêr:"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Betal"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Log Out"
+msgstr "_Derkeve"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Switch User..."
+msgstr "_Bikarhinêr bixebitîne..."
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch user..."
+msgstr "_Bikarhinêr biguherîne..."
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1432
+msgid "_Unlock"
+msgstr "_Veke"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Peqikên logoya binî a MATE ya di dîmenderê de ye"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Lingên Dişemite"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Gerdûn"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Pêşaneke slaytê ya ji wêneyê gerdûnê pêk hatiye pêşkeş dike"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr ""
+"Pêşaneke slaytan ya ji wêneyên ku ji peldanka wêneyên wê pêk hatiye pêşkêş "
+"dike"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Peldanka Wêneyan"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pop-hunera-ish a tora lêxistina rengan"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Qada hunera Pop"
+
+#: ../savers/floaters.c:1166
+msgid "show paths that images follow"
+msgstr "riya ku wêne dişopîne nîşan bide"
+
+#: ../savers/floaters.c:1173
+msgid "occasionally rotate images as they move"
+msgstr "carna dema ku wêne hereket dike wêne bizivirîne"
+
+#: ../savers/floaters.c:1180
+msgid "print out frame rate and other statistics"
+msgstr "hejmara kareyan û îstatîskên din li ekranê bieciqîne"
+
+#: ../savers/floaters.c:1188
+msgid "the maximum number of images to keep on screen"
+msgstr "Pirtirîn têhilatina wêneyên ku dikarin di dîmenderê de bên hiştin"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1192
+msgid "N"
+msgstr "N"
+
+#: ../savers/floaters.c:1199
+msgid "the source image to use"
+msgstr "wêneyê çavkanî yê wê were bikaranîn"
+
+#: ../savers/floaters.c:1206
+msgid "the initial size and position of window"
+msgstr "mezinahiya pêşîn û rewşa paceyê"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1211
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "FİREHÎxbİLİNDAHÎ+X+Y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1229
+msgid "image - floats images around the screen"
+msgstr "wêne - di dîmenderê de wêneyan digerîne"
+
+#: ../savers/floaters.c:1239
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. alîkarî bibîne ji bo bikaranîna agahiyan.\n"
+
+#: ../savers/floaters.c:1248
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Divê tu wêneyekî diyar bike. -- alîkariyê (helpê) ji bo agahiya bikaranînê "
+"bikar bîne.\n"
+
+#: ../savers/slideshow.c:47
+msgid "Location to get images from"
+msgstr "Cihê ku wê wêne were stendin"
+
+#: ../savers/slideshow.c:47
+msgid "PATH"
+msgstr "RÊ"
+
+#: ../src/cut-n-paste/fusa-display.c:119 ../src/cut-n-paste/fusa-user.c:150
+msgid "Manager"
+msgstr "Rêveber"
+
+#: ../src/cut-n-paste/fusa-display.c:120
+msgid "The manager which owns this object."
+msgstr "Rêveberê ku xwediyê vê bireserê ye."
+
+#: ../src/cut-n-paste/fusa-display.c:127
+msgid "Name"
+msgstr "Nav"
+
+#: ../src/cut-n-paste/fusa-display.c:128
+msgid "The name of the X11 display this object refers to."
+msgstr "navê X11"
+
+#: ../src/cut-n-paste/fusa-display.c:134
+#: ../src/cut-n-paste/fusa-user-menu-item.c:163
+msgid "User"
+msgstr "Bikarhêner"
+
+#: ../src/cut-n-paste/fusa-display.c:135
+msgid "The user currently logged in on this virtual terminal."
+msgstr "Bikarhinêr ji berêve têketiye termînala rast."
+
+#: ../src/cut-n-paste/fusa-display.c:141
+msgid "Console"
+msgstr "konsol"
+
+#: ../src/cut-n-paste/fusa-display.c:142
+msgid "The number of the virtual console this display can be found on, or %-1."
+msgstr ""
+"Hejmara kosolên rast , ev xebitandin dikare li vir were dîtin, an li %-1."
+
+#: ../src/cut-n-paste/fusa-display.c:148
+msgid "Nested"
+msgstr "Hêlînkirin"
+
+#: ../src/cut-n-paste/fusa-display.c:149
+msgid "Whether or not this display is a windowed (Xnest) display."
+msgstr "Gelo ev xebitandin wekî (Xnest) a pacekirî ye an na."
+
+#: ../src/cut-n-paste/fusa-manager.c:1453
+msgid "The display manager could not be contacted for unknown reasons."
+msgstr "Gerînendeyê çalak ji ber sedemên nenas nikare têkiliyê saz bike"
+
+#: ../src/cut-n-paste/fusa-manager.c:1460
+msgid "The display manager is not running or too old."
+msgstr "Rêveberê daxuyaniyê yan naxebiya yan jî pir kevn e."
+
+#: ../src/cut-n-paste/fusa-manager.c:1463
+msgid "The configured limit of flexible servers has been reached."
+msgstr "Sererastkirina pêşkêşkerên vezelokî gihaye asta xwe"
+
+#: ../src/cut-n-paste/fusa-manager.c:1466
+msgid "There was an unknown error starting X."
+msgstr "Çewtiyeke nenas X da destpêkirin."
+
+#: ../src/cut-n-paste/fusa-manager.c:1469
+msgid "The X server failed to finish starting."
+msgstr "Pêşkêşkera Xê nehate destpêkirin."
+
+#: ../src/cut-n-paste/fusa-manager.c:1472
+msgid "There are too many X sessions running."
+msgstr "Gelek danişînên Xê niha dixebite."
+
+#: ../src/cut-n-paste/fusa-manager.c:1475
+msgid "The nested X server (Xnest) cannot connect to your current X server."
+msgstr ""
+"Hêlîkiriyê pêşkêşkerê X (Xnest) nikare têkiliyê bi X pêşkêşkera te ya heyî "
+"re ava bike."
+
+#: ../src/cut-n-paste/fusa-manager.c:1478
+msgid "The X server in the MDM configuration could not be found."
+msgstr "Pêşkêşkera Xê ya di mîhengên MDMyê de ye nehate dîtin."
+
+#: ../src/cut-n-paste/fusa-manager.c:1481 ../src/cut-n-paste/mdmcomm.c:492
+msgid ""
+"Trying to set an unknown logout action, or trying to set a logout action "
+"which is not available."
+msgstr ""
+"Karekî derketinê yekî/e nenas tê mîhengkirin, an jî karekî derketinê yê "
+"tuneye tê mîhengkirin."
+
+#: ../src/cut-n-paste/fusa-manager.c:1484 ../src/cut-n-paste/mdmcomm.c:495
+msgid "Virtual terminals not supported."
+msgstr "Termînalên nîgaşî nayê destekirin."
+
+#: ../src/cut-n-paste/fusa-manager.c:1487
+msgid "Invalid virtual terminal number."
+msgstr "Nimreya yekeya serî ya nîgaşî ya nederbasdar"
+
+#: ../src/cut-n-paste/fusa-manager.c:1490 ../src/cut-n-paste/mdmcomm.c:499
+msgid "Trying to update an unsupported configuration key."
+msgstr "Mifteyeke mîhengan ya nayê destekirin tê xwestin ku were rojanekirin."
+
+#: ../src/cut-n-paste/fusa-manager.c:1493
+msgid "~/.Xauthority file badly configured or missing."
+msgstr "~/.Dosya hêza X nebaş hatiye sererastkirin an windabûye."
+
+#: ../src/cut-n-paste/fusa-manager.c:1496
+msgid "Too many messages were sent to the display manager, and it hung up."
+msgstr "Gelek peyam hatine ji gerînende re û ew peyam hatine hilanîn."
+
+#: ../src/cut-n-paste/fusa-manager.c:1500
+msgid "The display manager sent an unknown error message."
+msgstr "Gerînende peyameke nenas a çewtiyê şandiye."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:164
+msgid "The user this menu item represents."
+msgstr "Bikarhiner erka vê pêşekê bikartîne."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:171
+msgid "Icon Size"
+msgstr "Mezinahiya Sembolê"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:172
+msgid "The size of the icon to use."
+msgstr "Mezinahiya sembolê ya tê xwestin ku were bikaranîn."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:178
+#, fuzzy
+msgid "Indicator Size"
+msgstr "Mezinahiya Sembolê"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:179
+msgid "Size of check indicator"
+msgstr ""
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:184
+msgid "Indicator Spacing"
+msgstr ""
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:185
+msgid "Space between the username and the indicator"
+msgstr ""
+
+#: ../src/cut-n-paste/fusa-user.c:151
+msgid "The user manager object this user is controlled by."
+msgstr "Gerînendeyê bikarhiner, ev bikarhiner tê kontrolkirin ji alî."
+
+#: ../src/cut-n-paste/fusa-utils.c:80
+msgid "Show Details"
+msgstr "Kîtekîtan nîşan bide"
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:413
+msgid "MDM (The MATE Display Manager) is not running."
+msgstr "GMD (Rêveberê Dîmenan yê MATE) naxebite."
+
+#: ../src/cut-n-paste/mdmcomm.c:416
+msgid ""
+"You might in fact be using a different display manager, such as KDM (KDE "
+"Display Manager) or xdm."
+msgstr ""
+"Dibe ku tu rêverberên dîmenan yekî din bikar tîne, KDM (KDE Rêverê Dîmenan) "
+"an jî weke xdm."
+
+#: ../src/cut-n-paste/mdmcomm.c:419
+msgid ""
+"If you still wish to use this feature, either start MDM yourself or ask your "
+"system administrator to start MDM."
+msgstr ""
+"Heke tu hîna jî dixwazî vê taybetmendiyê bikar bîne, ya tu bi xwe MDMê bide "
+"destpêkirin an jî ji rêverê xwe yê pergalê bixwaze bila ew MDMê bide "
+"destpêkirin."
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:441
+msgid "Cannot communicate with MDM (The MATE Display Manager)"
+msgstr "Bi MDM (Rêveberê Dîmenan ya MATE) re têkilî nehate danîn."
+
+#: ../src/cut-n-paste/mdmcomm.c:444
+msgid "Perhaps you have an old version of MDM running."
+msgstr "Dibe ku tu guhertoyeke kev ya MDM dide xebitandin."
+
+#: ../src/cut-n-paste/mdmcomm.c:463 ../src/cut-n-paste/mdmcomm.c:466
+msgid "Cannot communicate with mdm, perhaps you have an old version running."
+msgstr ""
+"Bi mdmê re têkilî nehate danîn, dibe ku tu guhertoyeke kevn ya MDM dide "
+"xebitandin."
+
+#: ../src/cut-n-paste/mdmcomm.c:469
+msgid "The allowed limit of flexible X servers reached."
+msgstr "Xwe gihand hejmara pêşkêşkerên X yên dikarin zêde vezelin."
+
+#: ../src/cut-n-paste/mdmcomm.c:471
+msgid "There were errors trying to start the X server."
+msgstr "Dema pêşkêşkera Xê dihate destpêkirin çewtî çêbû."
+
+#: ../src/cut-n-paste/mdmcomm.c:473
+msgid "The X server failed.  Perhaps it is not configured well."
+msgstr "Di pêşkêşkera Xê de çewtî. Dibe ku sererast nehatibe veavakirin."
+
+#: ../src/cut-n-paste/mdmcomm.c:476
+msgid "Too many X sessions running."
+msgstr "Pir zêde danişînên Xê dixebite."
+
+#: ../src/cut-n-paste/mdmcomm.c:478
+msgid ""
+"The nested X server (Xnest) cannot connect to your current X server.  You "
+"may be missing an X authorization file."
+msgstr ""
+"Pêşkêşkera Xê ya di hundirê hev de (Xnest) bi pêşkêşkera Xê ya dixebite re "
+"girêdanê nikare çêbike. Belkî dosyeya we ya rastkirina nasnameyan kêm e."
+
+#: ../src/cut-n-paste/mdmcomm.c:483
+msgid ""
+"The nested X server (Xnest) is not available, or mdm is badly configured.\n"
+"Please install the Xnest package in order to use the nested login."
+msgstr ""
+"Pêşkêşkera X ya di hundirê hev de  (Xnest) nayê bikaranîn, an jî mdm şaş "
+"hatiye mîhengkirin. Ji kerema xwe ji bo ku tu karibe têketina di hundirê hev "
+"de bikar bîne pakêta Xnest bar bike."
+
+#: ../src/cut-n-paste/mdmcomm.c:488
+msgid ""
+"The X server is not available, it is likely that mdm is badly configured."
+msgstr "Pêşkêşkera Xê nayê bikaranîn, dibe ku mdm şaş hatibe veavakirin."
+
+#: ../src/cut-n-paste/mdmcomm.c:497
+msgid "Trying to change to an invalid virtual terminal number."
+msgstr ""
+"Tê xwestin ku bi nimreyeke termînal ya nîgaşî ya nederbasdar re biguhere."
+
+#: ../src/cut-n-paste/mdmcomm.c:501
+msgid ""
+"You do not seem to have authentication needed be for this operation.  "
+"Perhaps your .Xauthority file is not set up correctly."
+msgstr ""
+"Ji bo vê kirarê têra xwe tu ne rayadar î. Belkî jî dosyeya te ya .Xauthority "
+"sererast nehatibe mîhengkirin."
+
+#: ../src/cut-n-paste/mdmcomm.c:505
+msgid "Too many messages were sent to mdm and it hung upon us."
+msgstr "pir zêde peyam ji mdmê re hate şandin ji ber vê jî aliqî ma."
+
+#: ../src/cut-n-paste/mdmcomm.c:508
+msgid "Unknown error occurred."
+msgstr "Çewtiyeke nenas çêbû."
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Jibergirtina dosya : %u ji %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "'%s' nayê jibergirtin."
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "URIya çavkanî"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "URI ji vir tê guheztin"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "URIya Hedef"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "URI hîna jî vediguhezîne vir"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "Kirar nehate temamkirin"
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "Karê transferê niha xelas bû"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "Pêrista URI ya rojane"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "Pêrista URI ya rojane- ji 1ê dest pê dike."
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "Bi gişî URI"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "Bi gişî hejmara URIyan"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "Dosye tê jibergirtin"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "Ji kê hatiye:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "Dişîne ji kê:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "Tê girêdan..."
+
+#: ../src/mate-screensaver-command.c:61
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Hişt ku dîmenderparêz bi nazikî derkeve"
+
+#: ../src/mate-screensaver-command.c:63
+msgid "Query the state of the screensaver"
+msgstr "Lêkolîna dîmenderparêz bike"
+
+#: ../src/mate-screensaver-command.c:65
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Ji dîmenderparêzê xebatkar bixwaze ku bi carekê re dîmender bigire."
+
+#: ../src/mate-screensaver-command.c:67
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Heke dîmenderparêz çalak be here demo ya girafîkeke din"
+
+#: ../src/mate-screensaver-command.c:69
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Dîmenderparêz çalak bike"
+
+#: ../src/mate-screensaver-command.c:71
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Heke dîmenderparêz çalak be wî ne çalak bike"
+
+#: ../src/mate-screensaver-command.c:73
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Dîmenparêza herikandî bizivrîne da tu bikî wek çalakiya bikarhinêr"
+
+#: ../src/mate-screensaver-command.c:75
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:77
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:79
+msgid "The reason for inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:81 ../src/mate-screensaver-dialog.c:54
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Guhertoya vê sepanê"
+
+#: ../src/mate-screensaver-command.c:246
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Dîmenparêz eve %s\n"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "active"
+msgstr "çalak"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "inactive"
+msgstr "ne çalak e"
+
+#: ../src/mate-screensaver-dialog.c:52
+msgid "Show debugging output"
+msgstr "Çewtiya derketanê nîşan bide"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show the logout button"
+msgstr "Bişkoka derketinê nîşan bide"
+
+#: ../src/mate-screensaver-dialog.c:58
+msgid "Command to invoke from the logout button"
+msgstr "Ji vexwendina ji bişkoka derketinê ferman bide"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the switch user button"
+msgstr "Bişkoka çalakirina bikarhiner nîşan bide"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:169 ../src/mate-screensaver-dialog.c:170
+#: ../src/mate-screensaver-dialog.c:171 ../src/gs-auth-pam.c:380
+msgid "Username:"
+msgstr "Navê bikarhêner:"
+
+#: ../src/mate-screensaver-dialog.c:174
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:175
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:176
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:177
+msgid "No password supplied"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "Password unchanged"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "Can not get username"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Retype new UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "Enter new UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "(current) UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "Error while changing NIS password."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You must choose a longer password"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Password has been already used. Choose another."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "You must wait longer to change your password"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Sorry, passwords do not match"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:250
+msgid "Checking..."
+msgstr "Tê kontrolkirin..."
+
+#: ../src/mate-screensaver-dialog.c:289 ../src/gs-auth-pam.c:320
+msgid "Authentication failed."
+msgstr ""
+
+#: ../src/mate-screensaver-preferences.c:439
+msgid "Blank screen"
+msgstr "Dîmenê reş bike"
+
+#: ../src/mate-screensaver-preferences.c:445
+msgid "Random"
+msgstr "Çawalêhato"
+
+#: ../src/mate-screensaver-preferences.c:805
+msgid "Invalid screensaver theme"
+msgstr "Dirbê dîmenderparêzê yê nederbasdar"
+
+#: ../src/mate-screensaver-preferences.c:808
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "Ev dosya ne wekî mijara çewt a dîmenderparêz tê xuyakirin"
+
+#: ../src/mate-screensaver-preferences.c:935
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d saet"
+msgstr[1] "%d saet"
+
+#: ../src/mate-screensaver-preferences.c:938
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d xulek"
+msgstr[1] "%d xulek"
+
+#: ../src/mate-screensaver-preferences.c:941
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "% de çirke"
+msgstr[1] "% de çirke"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:947
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:950
+#: ../src/mate-screensaver-preferences.c:958
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:953
+#: ../src/mate-screensaver-preferences.c:961
+#: ../src/mate-screensaver-preferences.c:965
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:980
+msgid "Never"
+msgstr "Tu car"
+
+#: ../src/mate-screensaver-preferences.c:1365
+msgid "Could not load the main interface"
+msgstr "Dirûvê navberê yê mak nehate barkirin."
+
+#: ../src/mate-screensaver-preferences.c:1367
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Ji kerema xwe re teqez bike ku dîmenderparêz hatiye daxistin"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nebe zordest"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Koda neqandina çewtiyan çalak bike"
+
+#: ../src/gs-auth-pam.c:262
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:288
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:318
+msgid "Incorrect password."
+msgstr "Şifre şas e."
+
+#: ../src/gs-auth-pam.c:334
+msgid "Not permitted to gain access at this time."
+msgstr ""
+
+#: ../src/gs-auth-pam.c:340
+msgid "No longer permitted to access the system."
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1631
+msgid "failed to register with the message bus"
+msgstr "Tomarkirina di otobusa peyaman de biserneket"
+
+#: ../src/gs-listener-dbus.c:1641
+msgid "not connected to the message bus"
+msgstr "Têkilî bi otobusa peyaman re pêknehat"
+
+#: ../src/gs-listener-dbus.c:1650
+msgid "screensaver already running in this session"
+msgstr "Dîmenparêz ji berê ve di vê danişînê de heye"
+
+#: ../src/gs-lock-plug.c:336
+msgid "Time has expired."
+msgstr "Dem xelas bû."
+
+#: ../src/gs-lock-plug.c:366
+msgid "You have the Caps Lock key on."
+msgstr "Caps Lock vekiriye"
+
+#: ../src/gs-lock-plug.c:1414 ../src/gs-lock-plug.c:1451
+msgid "S_witch User..."
+msgstr "_Bikarhênêr biguherîne..."
+
+#: ../src/gs-lock-plug.c:1422
+msgid "Log _Out"
+msgstr "Derkeve"
+
+#: ../src/gs-lock-plug.c:1613
+msgid "%U on %h"
+msgstr "%U di %h de"
+
+#: ../src/gs-lock-plug.c:1627
+msgid "_Password:"
+msgstr "_Şîfre:"
+
+#~ msgid "_Screensaver"
+#~ msgstr "_Dîmenderparêz"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Herikîna mijarên bingehîn ên grafîkan çalak bike"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr "Herikîna mijarên bingehîn ên grafîkan çalak bike (heke li gorê be)"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "Şifre çewte"
diff --git a/po/lt.po b/po/lt.po
new file mode 100644
index 0000000..7f82e21
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,778 @@
+# translation of mate-screensaver.HEAD.po to Lithuanian
+# Lithuanian translation for mate-screensaver.
+# Copyright (C) 2005-2006, 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Žygimantas Beručka <zygis at gnome.org>, 2005-2006.
+# Gintautas Miliauskas <gintas at akl.lt>, 2006, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-15 02:27+0300\n"
+"PO-Revision-Date: 2009-09-15 02:26+0300\n"
+"Last-Translator: Gintautas Miliauskas <gintautas at miliauskas.lt>\n"
+"Language-Team: Lithuanian <mate-lt at lists.akl.lt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
+"100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Ekrano užsklanda"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Nurodykite ekrano užsklandos nustatymus"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Ekrano užsklandos peržiūra</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Dėmesio: ekranas root naudotojui bus neužrakintas.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Energijos _valdymas"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "La_ikyti kompiuterį neveikliu po:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Ekrano užsklandos nustatymai"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Ekrano užsklandos peržiūra"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktyvuoti ekrano užsklandą, kai kompiuteris neveiklus"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Užrakinti ekraną, kai aktyvuota ekrano užsklanda"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Peržiūra"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Ekrano užsklandos tema:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Ekrano užsklandos temos"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Ekrano užsklandos"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktyvuoti, kai neveikli"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Leisti lange įdėti klaviatūrą"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Leisti atsijungti"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Leisti rodyti sesijos būsenos pranešimą"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Leisti rodyti sesijos būsenos pranešimą, kai ekranas užrakintas."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Leisti perjungti naudotoją"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Klaviatūros lange komanda"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Paleidus užrakinti"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Atsijungimo komanda"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Ekrano užsklandos temos pasirinkimo režimas"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Nustatykite į teigiamą, jei norite aktyvuoti ekrano užsklandą, kai sesija "
+"neveikli."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Nustatykite į teigiamą, jei norite leisti rodyti klaviatūrą atrakinimo "
+"lange. Atitinkama komanda turi būti nurodyta rakte „keyboard_command“."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Nustatykite į teigiamą, jei norite, kad paleidus užsklandą būtų užrakintas "
+"ekranas."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Nustatykite į teigiamą, jei norite, kad atrakinimo dialoge būtų rodoma "
+"galimybė perjungti naudotoją."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Nustatykite į teigiamą, jei norite, kad atrakinimo dialoge būtų rodoma "
+"galimybė atsijungti po tam tikro laiko tarpo. Laikas nurodomas "
+"„logout_delay“ rakte."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Komanda, kuri bus vykdoma, jei „embedded_keyboard_enabled“ reikšmė teigiama. "
+"Programa turėtų vaizduoti klaviatūrą realizuodama XEMBED įskiepio interfeisą "
+"ir išvesti lango XID į standartinį išėjimą."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Komanda, paleidžiama paspaudus atsijungimo mygtuką. Ši komanda turėtų "
+"paprasčiausiai atjungti naudotoją be pastarojo įsikišimo. Šis raktas turi "
+"reikšmės tik tada, kai rakto „logout_enable“ reikšmė teigiama."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Minučių skaičius nuo ekrano užsklandos aktyvavimo iki ekrano užrakinimo."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Minučių skaičius nuo ekrano užsklandos aktyvavimo iki atsijungimo galimybės "
+"atsiradimo atrakinimo dialoge. Šis raktas turi reikšmės tik tada, kai rakto "
+"„logout_enable“ reikšmė yra teigiama."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Neveiklumo trukmė minutėmis iki tol, kol sesija nelaikoma neveiklia."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Kas kiek minučių pakeičiama ekrano užsklandos tema."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Neaktyvumo laikas sekundėmis, po kurio siuniamas signalas energijos valdymo "
+"posistemei. Ši reikšmė nustatoma sesijos energijos valdymo agento programos."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Ekrano užsklandos naudojamas pasirinkimo režimas. Gali būti „blank-only“, "
+"kai norima įjungti ekrano užsklandą nenaudojant jokios temos, „single“, kai "
+"norima įjungti ekrano užsklandą naudojant tik vieną temą (nurodytą „themes“ "
+"rakte), ir „random“, kai norima įjungti ekrano užsklandą naudojant "
+"atsitiktinę temą."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema užrakinimo dialogui"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema naudojama užrakinimo dialoge."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Šiame rakte nurodoma ekrano užsklandos naudojamų temų sąrašas. Jo nepaisoma, "
+"kai rakto „mode“ reikšmė yra „blank-only“; kai rakto „mode“ reikšmė yra "
+"„single“, reikia nurodyti vieną temos pavadinimą, kai rakto „mode“ reikšmė "
+"yra „random“, reikia nurodyti temų sąrašą."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Laikas iki užrakinimo"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Laikas iki atsijungimo parinkties"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Laikas iki energijos valdymo pirmos reikšmės pranešimo"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Laikas, kuriam praėjus sesija laikoma neveiklia"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Laikas iki temos pakeitimo"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Palikti žinutę %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U kompiuteryje %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Atsisakyti"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Palikti žinutę"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "At_sijungti"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Pakeisti naudotoją"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Atrakinti"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmosas"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Rodyti kosmoso paveikslėlių skaidrių šou"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE pėdos logotipas „burbuliuoja“ ekrane"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Plaukiojančios pėdos"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Rodyti skaidrių šou iš Jūsų paveikslėlių aplanko"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Paveikslėlių aplankas"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pulsuojančių spalvų kvadratėliai."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Meniški kvadratėliai"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Rodyti paveikslėlių sekamus kelius"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Retkarčiais pasukti paveikslėlius, kai šie juda"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Rodyti kadrų dažnį ir kitą statistiką"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Maksimalus ekrane rodomų paveikslėlių skaičius"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Pradinis lango dydis ir pozicija"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "PLOTISxAUKŠTIS+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Naudotinas paveikslėlis"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - ekrane plaukioja paveikslėlis"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Norėdami daugiau informacijos, žr. --help.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Turite nurodyti bent vieną paveikslėlį. Norėdami sužinoti kaip naudotis, žr. "
+"--help.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Vieta iš kur gaunami paveikslėliai"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "KELIAS"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Paveikslėlių fono spalva"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "„#rrggbb“"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Imti paveikslėlius iš eilės"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Neištempti paveikslėlių ekrane"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopijuojamos failo"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Iš:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Į:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopijuojamos temos"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Netinkama ekrano užsklandos tema"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s nėra tinkama ekrano užsklandos tema."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopijuojamas failas: %u iš %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Paprasčiausiai uždaro ekrano užsklandą"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Užklausti ekrano užsklandos būklės"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Užklausti, kiek laiko ekrano užsklanda buvo aktyvi"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Nurodo ekrano užsklandos procesui tuojau pat užrakinti ekraną"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Jei ekrano užsklanda aktyvi, perjungti į kitą grafinę demonstraciją"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Įjungti ekrano užsklandą (užtemdyti ekraną)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Jei ekrano užsklanda aktyvi, ją deaktyvuoti (išjungti ekrano užtemdymą)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Simuliuoti naudotojo aktyvumą, kad nebūtų aktyvuota ekrano užsklanda"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Sulaikyti ekrano užskalandą nuo aktyvavimo. Komanda blokuoja, kol kliudymas "
+"aktyvus."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Iškviečianti programa slopinanti ekrano užsklandą"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Ekrano užsklandos iškvietimo priežastis"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Šios programos versija"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Ekrano užsklanda yra %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktyvi"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "neaktyvi"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Ekrano užsklanda neblokuojama\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Ekrano užsklanda blokuojama šios programos:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Ekrano užsklanda buvo aktyvi %d sekundžių.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Ekrano užsklanda neaktyvi\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Rodyti derinimo išvestį"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Rodyti atsijungimo mygtuką"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Komanda vykdoma paspaudus atsijungimo mygtuką"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Rodyti naudotojo perjungimo mygtuką"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Pranešimas, rodomas dialoge"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "PRANEŠIMAS"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Nenaudojama"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Naudotojo vardas:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Slaptažodis:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Turite tuojau pat pasikeisti slaptažodį (slaptažodis paseno)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Turite tuojau pat pasikeisti slaptažodį (root nurodymu)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Jūsų slaptažodis nustojo galiojęs; susisiekite su sistemos administratoriumi"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Slaptažodis nenurodytas"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Slaptažodis nepakeistas"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Nepavyko gauti naudotojo vardo"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Pakartokite naują UNIX slaptažodį:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Įveskite naują UNIX slaptažodį:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(esamas) UNIX slaptažodis:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Klaida keičiant NIS slaptažodį."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Turite pasirinkti ilgesnį slaptažodį"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Slaptažodis jau buvo naudojamas. Pasirinkite kitą."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Turite palaukti ilgiau norėdami pakeisti slaptažodį"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Slaptažodžiai nevienodi"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Tikrinama..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Tapatybė nepatvirtinta."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Tuščias ekranas"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Atsitiktinė"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d valanda"
+msgstr[1] "%d valandos"
+msgstr[2] "%d valandų"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minutė"
+msgstr[1] "%d minutės"
+msgstr[2] "%d minučių"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekundė"
+msgstr[1] "%d sekundės"
+msgstr[2] "%d sekundžių"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Niekada"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Nepavyko įkelti pagrindinės sąsajos"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Įsitikinkite, kad ekrano užsklanda yra tinkamai įdiegta"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Netapti demonu"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Įjungti derinimo kodą"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Paleisti ekrano užsklandą ir užraktą"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nepavyko sukurti paslaugos %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Negalima nustatyti PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Neteisingas slaptažodis."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Šį kartą neleista gauti priėjimo."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Daugiau nebeleidžiama prieiti prie šios sistemos."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "nepavyko prisiregistruoti prie pranešimų prievado"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "neprisijungta prie pranešimų prievado"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "šioje sesijoje jau paleista ekrano užsklanda"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Baigėsi laikas."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Įjungtas Jūsų Caps Lock klavišas."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Pakeisti naudotoją..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "At_sijungti"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U kompiuteryje %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Slaptažodis:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Pasišalinimo priežastis"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Pasišalinimo nuo kompiuterio priežastis."
diff --git a/po/lv.po b/po/lv.po
new file mode 100644
index 0000000..73f13cc
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,775 @@
+# translation of lv.po to Latvian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Valdis Vizulis <valdis.vizulis at gmail.com>, 2006.
+# Raivis Dejus <orvils at gmail.com>, 2006, 2007, 2009.
+# Rūdolfs Mazurs <rudolfs.mazurs at gmail.com>, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: lv\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
+"cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2010-04-23 19:08+0000\n"
+"PO-Revision-Date: 2010-06-13 00:18+0300\n"
+"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs at gmail.com>\n"
+"Language-Team: Latviešu <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+"X-Generator: Lokalize 1.0\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Ekrānsaudzētājs"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Iestatīt sava ekrānsaudzētāja iestatījumus"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Ekrānsaudzētāja priekšskatījums</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Uzmanību: root lietotājam šis ekrāns netiks noslēgts.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Barošanas _pārvaldība"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Uzskatīt datoru kā _neaktīvu pēc:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Ekrānsaudzētāja iestatījumi"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Ekrānsaudzētāja priekšskatījums"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktivizēt ekrānsaudzētāju, kad dators ir neaktīvs"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "Nozs_lēgt ekrānu, kad ekrānsaudzētājs ir aktīvs"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Priekšskatījums"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Ekrān_saudzētāja tēma:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Ekrānsaudzētāja tēmas"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Ekrānsaudzētāji"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktivizēt, kad neaktīvs"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Atļaut logos iegult tastatūru"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Atļaut atteikšanos"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Ļaut rādīt sesijas statusa ziņojumus"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Ļaut rādīt sesijas statusa ziņojumus, kad ekrāns ir noslēgts"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Atļaut lietotāju pārslēgšanu"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Iegultā tastatūras komanda"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Noslēgt aktivizācijas brīdī"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Atteikšanās komanda"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Ekrānsaudzētāja tēmas izvēles režīms"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Iestatīt kā PATIESS, lai aktivizētu ekrānsaudzētāju, kad sesija ir neaktīva."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Iestatiet uz PATIESS, lai atļautu logos atslēgšanas laikā iegult tastatūru. "
+"\"keyboard_command\" vērtībā jānorāda atbilstoša komanda."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Iestatīt kā PATIESS, lai noslēgtu ekrānu, kad ekrānsaudzētājs kļūst aktīvs."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Iestatīt kā PATIESS, lai piedāvātu opciju atslēgšanas dialoga logā, lai "
+"pārslēgtos uz citu lietotāja kontu."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Iestatīt kā PATIESS, lai piedāvātu opciju atslēgšanas dialoga logā, lai "
+"atteiktos pēc aizkaves. Aizkave ir norādīta \"logout_delay\" atslēgā."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Komanda, kas tiks palaista, ja \"embedded_keyboard_enabled\" vērtība ir "
+"PATIESS, lai logā iegultu tastatūras sīklietotni. Komandai būtu jārealizē "
+"XEMBED ievades saskarne un izvades logs ar XID izvadu."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Komanda, kuru izsauc, kad ir nospiesta atteikšanās poga. Šai komandai "
+"vajadzētu vienkārši atteikt lietotāju bez jebkādas mijiedarbības. Šai "
+"atslēgai ir ietekme tikai, ja \"logout_enable\" atslēga ir iestatīta kā "
+"PATIESS."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Minūšu skaits pēc ekrānsaudzētāja aktivizācijas pirms ekrāna noslēgšanas."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Minūšu skaits pēc ekrānsaudzētāja aktivizēšanas pirms atslēgšanās opcija "
+"parādās atslēgšanas dialoga logā. Šai atslēgai ir ietekme tikai, ja "
+"\"logout_enable\" atslēga ir iestatīta kā PATIESS."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Bezdarbības minūšu skaits pirms sesija tiek uzskatīta par neaktīvu."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Minūšu skaits, kam jāpaiet, pirms tiek mainīta ekrānsaudzētāja tēma."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Bezdarbības sekunžu skaits, pirms signalizēt barošanas pārvaldniekam. Šo "
+"vērtību iestata un pārvalda sesijas barošanas pārvaldnieka aģents."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Ekrānsaudzētāja lietotais izvēles režīms. Var būt \"blank-only\", lai "
+"aktivizētu ekrānsaudzētāju, kas nelieto nevienu tēmu aktivizācijas brīdī, "
+"\"single\", lai aktivizētu ekrānsaudzētāju, kas lieto tikai vienu tēmu "
+"aktivizācijas brīdī (precizē atslēgā \"themes\"), un \"random\", lai "
+"aktivizētu ekrānsaudzētāju, kas lieto nejaušu tēmu aktivizācijas brīdī."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Noslēgšanas dialoga tēma"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tēma kas tiks lietota ekrāna noslēgšanas dialogam."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Šī atslēga precizē tēmu sarakstu, ko lietos ekrānsaudzētājs. Tās tiek "
+"ignorētas, ja \"mode\" atslēga ir \"blank-only\". Ieteicams norādīt tēmas "
+"nosaukumu, ja \"mode\" ir \"single\" un tēmu sarakstu, ja \"mode\" ir "
+"\"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Laiks pirms noslēgšanas"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Laiks pirms atteikšanās opcijas"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Laiks pirms barošanas pārvaldnieka bāzlīnijas"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Bezdarbības minūšu skaits, pirms sesija tiek uzskatīta par neaktīvu"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Laiks pirms tēmas maiņas"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Atstāt ziņojumu lietotājam %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">Lietotājs %U uz datora %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "At_celt"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Atstāt ziņojumu"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "Beigt _darbu"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Nomainīt _lietotāju"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1372
+msgid "_Unlock"
+msgstr "_Atslēgt"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmoss"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Rādīt kosmosa attēlu slīdrādi"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Burbuļo MATE pēdas logo pa visu ekrānu"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Peldoša pēda"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Rādīt jūsu bilžu mapes slīdrādi"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Bilžu mape"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pulsējošu krāsu popārtisks režģis."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Popārta kvadrāti"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Apskatiet --help, lai uzzinātu lietošanas instrukcijas.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "Rādīt ceļus, kuriem seko attēli"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "Ik pa laikam rotēt bildes, kamēr tās kustās"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Drukāt kadra ātrumu un citu statistiku"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "Maksimālais bilžu skaits uz ekrāna"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "Loga sākotnējais izmērs un pozīcija"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "PLATUMSxAUGSTUMS+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "Sākumā izmantojamā bilde"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "bilde - peldina bildes pa visu ekrānu"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Jums jānorāda viena bilde.  Apskatiet --help, lai uzzinātu lietošanas "
+"instrukcijas.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Atrašanās vieta, kur meklēt bildes"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CEĻŠ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Attēlu fonam izmantojamā krāsa"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Rādīt bildes secīgi no vietas"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Nemēģināt izstiept bildes uz ekrāna"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopē failus"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "No:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Uz:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopē tēmas"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Nederīga ekrānsaudzētāja tēma"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Izskatās, ka %s nav derīga ekrānsaudzētāja tēma."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopē failu:%u no %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Liek ekrānsaudzētājam saudzīgi iziet"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Vaicā ekrānsaudzētāja stāvokli"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Vaicājums par laiku, kurā ekrānsaudzētāja ir bijis aktīvs"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Liek strādājošam ekrānsaudzētāja procesam nekavējoties noslēgt ekrānu"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Ja ekrānsaudzētājs ir aktīvs, tad pārslēgties uz citu grafikas demonstrāciju"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Ieslēgt ekrānsaudzētāju (notīrīt ekrānu)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Ja ekrānsaudzētājs ir aktīvs, tad deaktivizēt to (at-notīrīt ekrānu)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Pabikstīt darbojošos ekrānsaudzētāju, lai simulētu lietotāja aktivitāti"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Atturēt ekrānsaudzētāju no aktivizēšanās. Komanda bloķē, kamēr atturēšana ir "
+"aktīva."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Izsaucošā lietotne, kas nomāc ekrānsaudzētāju"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Ekrānsaudzētāja nomākšanas iemesls"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Šīs lietotnes versija"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Ekrānsaudzētājs ir %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktīvs"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "neaktīvs"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Ekrānsaudzētājs nav nomākts\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Ekrānsaudzētāju nomāc:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Ekrānsaudzētājs ir bijis aktīvs %d sekundes.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Ekrānsaudzētājs pašlaik nav aktīvs.\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Rādīt atkļūdošanas izvadu"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Rādīt atteikšanās pogu"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "Komanda, kuru izsaukt, nospiežot atteikšanās pogu"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Rādīt lietotāju pārslēgšanas pogu"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "Logā rādāmais ziņojums"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "ZIŅOJUMS"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "Nav izmantots"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Lietotājvārds:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Parole:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Jums nekavējoties jānomaina parole (parole novecojusi)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Jums nekavējoties jānomaina parole (administratora prasība)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Jūsu konta derīgums ir beidzies. Lūdzu, sazinieties ar sistēmas "
+"administratoru"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "Nav ievadīta parole"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "Parole nav mainīta"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "Nevar noteikt lietotājvārdu"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Ievadiet jauno UNIX paroli vēlreiz:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Ievadiet jauno UNIX paroli:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "(pašreizējā) UNIX parole:"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "Kļūda, mainot NIS paroli."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "Jums jāizvēlas garāka parole"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "Šāda parole jau ir tikusi izmantota. Izvēlieties citu."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "Jums jāuzgaida ilgāk, lai nomainītu savu paroli"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Atvainojiet, paroles nesakrīt"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "Notiek pārbaude..."
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autentifikācija nav izdevusies."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Tukšs ekrāns"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Nejaušs"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d stunda"
+msgstr[1] "%d stundas"
+msgstr[2] "%d stundu"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minūte"
+msgstr[1] "%d minūtes"
+msgstr[2] "%d minūšu"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekunde"
+msgstr[1] "%d sekundes"
+msgstr[2] "%d sekunžu"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nekad"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Nevar ielādēt galveno saskarni"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Lūdzu, pārliecinieties, ka ekrānsaudzētājs ir pareizi uzinstalēts"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nekļūst par dēmonu"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Ieslēgt atkļūdošans kodu"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Palaist ekrāna saudzētāju un noslēgšanas programmu"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nevar uzsākt servisu %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Nevar iestatīt PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Nepareiza parole."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Šādā laikā nav ļauts piekļūt sistēmai."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Vairs nav tiesību piekļūt sistēmai."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "Neizdevās reģistrēt ar ziņojumu kopni"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "nav savienots ar ziņojumu kopni"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "Ekrānsaudzētājs jau darbojas šajā sesijā"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Laiks ir iztecējis."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Jums ir ieslēgts Caps Lock taustiņš."
+
+#: ../src/gs-lock-plug.c:1352
+msgid "S_witch User..."
+msgstr "Pār_slēgt lietotāju..."
+
+#: ../src/gs-lock-plug.c:1361
+msgid "Log _Out"
+msgstr "Ats_lēgties"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1537
+msgid "%U on %h"
+msgstr "%U uz %h"
+
+#: ../src/gs-lock-plug.c:1551
+msgid "_Password:"
+msgstr "_Parole:"
+
+
diff --git a/po/mai.po b/po/mai.po
new file mode 100644
index 0000000..908ac17
--- /dev/null
+++ b/po/mai.po
@@ -0,0 +1,728 @@
+# translation of mate-screensaver.master.po to Maithili
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Sangeeta Kumari <sangeeta09 at gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-09-11 10:02+0000\n"
+"PO-Revision-Date: 2009-09-11 20:39+0530\n"
+"Last-Translator: Sangeeta Kumari <sangeeta09 at gmail.com>\n"
+"Language-Team: Maithili <maithili.sf.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "स्क्रीनसेवर"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "अपन स्क्रीनसेवर वरीयता सेट करू"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b> स्क्रीनसेवर पूर्वावलोकन</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>चेतावनी: रूट प्रयोक्ता क' लेल स्क्रीन लाक नहि हाएत.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "उर्जा प्रबंधन (_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "कंप्यूटरकेँ निष्क्रिय क' रूपमे एकर बाद देखू (_i):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "स्क्रीनसेवर वरीयता"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "स्क्रीनसेवर पूर्वावलोकन"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "स्क्रीनसेवर सक्रिय करू जखन कंप्यूटर निष्क्रिय हुए (_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "जखन सक्रीनसेवर सक्रिय हुए तँ स्क्रीन लाक करू (_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "पूर्वावलोकन (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "स्क्रीनसेवर थीम (_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "स्क्रीनसेवर थीम"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "स्क्रीनसेवर"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "निष्क्रिय रहब पर सक्रिय करू"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "विंडोमे कीबोर्ड अंतःस्थापनक स्वीकृति दिअ'"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "लॉगआउटक अनुमति दिअ'"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "प्रयोक्ता स्विचिंगक अनुमति दिअ'"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "अंतःस्थापित कीबोर्ड कमांड"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "सक्रियकरण पर लाक करू"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "लागआउट कमांड"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "स्क्रीनसेवर थीम चयन मोड"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "एकरा सही पर सेट करू स्क्रीनसेवरकेँ सक्रिय करब क' लेल जखन सत्र निष्क्रिय अछि."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr "अनलाक करबाक कोसिस क' दौरान विंडोमे कीबोर्ड एंबेड करब क' लेल एकरा सही पर सेट करू.\"keyboard_command\" कुँजीकेँ उचित कमांडक सँग जरूर सेट होनाइ चाही."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "एकरा सही पर सेट करू स्क्रीनकेँ तब लाक करब क' लेल जखन स्क्रीनसेवर सक्रिय भ' जाएत अछि."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr "भिन्न प्रयोक्ता खातामे जाए क' लेल अनलाक समादमे एकटा विकल्प दए क' लेल एकरा सही पर सेट करू."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "एकरा सही पर सेट करू अनलॉक समादमे एकटा विलंब क' बाद लॉग आउट हए क' एकटा विकल्प दए क' लेल. विलंब \"logout_delay\" कुँजीमे निर्दिष्ट अछि."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr "कमांड चलताह, जँ \"embedded_keyboard_enabled\" कुँजी सही पर सेट अछि कीबोर्ड विजेट केँ विंडोमे अंतःस्थापित करबाक' लेल. एहि कमांडकेँ XEMBED प्लग इंटरफेसकेँ लागू कएनाइ चाही आओर मानक आउटपुट पर विंडो XID क' आउटपुट देनाइ चाही."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr "लाबै क' लेल कमांड जखन लागआउट बटन क्लिक कएल जाएत अछि. एहि कमांडकेँ बिनु कोनो अंतःक्रिया क' प्रयोक्ताकेँ लॉग आउट कएनाइ चाही. ई कुँजी क' प्रभाव अछि सिर्फ जखन \"logout_enable\" कुँजी सही पर सेट अछि."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "स्क्रीन लाक करबाक पहिने स्क्रीनसेवर सक्रियता क' बाद मिनट क' सँख्या."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr "अनलॉक समादमे लॉगआउट विकल्प आबै क' पहिने स्क्रीनसेवर सक्रियता क' मिनट क' सँख्या . एहि कुँजी क' प्रभाव तखन सिर्फ अछि जखन \"logout_enable\" कुँजी सही पर सेट अछि."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "सत्र क' निष्क्रिय समझल जएबाक पहिने निष्क्रियता क' मिनट क' सँख्या."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "स्क्रीनसेवर थीम के बदलब के पहिने चलाबै क' लेल मिनटक सँख्या."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"उर्जा प्रबंधनमे संकेतक पहिने क' निष्क्रियताक सेकेंड क' सँख्या . "
+"ई कुँजी सेट अछि आओर सत्र उर्जा प्रबंधन प्रतिनिधिक द्वारा देखभाल कएल जाएत अछि."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr "स्क्रीनसेवरक द्वारा प्रयुक्त चयन मोड. स्क्रीनसेवरकेँ बिनु कोनो थीम क' सक्रिय करब पर सिर्फ \"सिर्फ खाली\" भ' सकैत अछि \"एकल\" केँ स्क्रीनसेवरकेँ सक्रियकरण पर सिर्फ एकटा थीमक प्रयोग क' लेल (\"थीम\" कुँजीमे निर्दिष्ट), आओर \"क्रमहीन\" स्क्रीनसेवरकेँ सक्रियकरण पर क्रमहीन थीमक प्रयोग क' लेल."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "लॉक समाद क'लेल थीम"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "लॉक समादक प्रयोग क'लेल थीम."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr "ई कुँजी निर्दिष्ट करैत अछि स्क्रीनसेवरक द्वारा प्रयुक्त थीम क' सूची. ई अनदेखा कएल जाएत अछि जखन \"मोड\" कुँजी \"सिर्फ खाली\" अछि थीम नाम देनाइ चाही जखन \"मोड\" \"एकल\" अछि आओर थीम सूची देनाइ चाही जखन \"मोड\" \"क्रमहीन\" अछि."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "लाकिंगसँ पहिने क' समय"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "लॉगआउट विकल्पसँ पहिने क' समय"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "उर्जा प्रबंधन बेसलाइनप पहिने क' समय"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "सत्रक निष्क्रिय मानल जाएबाक' पहिने क' समय"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "थीम बदलाव सँ पहिने क' समय"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr ""
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U चालू %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "रद्द करू (_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr ""
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "लाग-आउट (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "प्रयोक्ता बदलू (_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "अनलाक करू (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "कोसमोस"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "कोसमोस क' चित्र क' स्लाइडशो देखाबू"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "स्क्रीनक चारू कात गनोम फुट लोगो बबल"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "फ्लोटिंग पएर"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "अपन चित्र फोल्डर सँ स्लाइडशो देखाबू"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "चित्र फोल्डर"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "पल्सिंग रँग क' एकटा pop-art-ish ग्रिड"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "पॉप आर्ट वर्ग"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr ""
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr ""
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr ""
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr ""
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr ""
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "चित्र - स्क्रीन क' चारो कात चित्र फ्लोट करैत अछि"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. देखू --मद्दति प्रयोग सूचना क'लेल .\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "अहाँ जरूर एकटा चित्र निर्दिष्ट करू.  देखू --प्रयोग सूचना क'लेल मद्दति देखू.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "स्थान जकरासँ बिंब लेनाइ अछि"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr ""
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr ""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr ""
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "फ़ाइलसभ कॉपी कए रहल अछि"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "द्वारा:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "प्रति:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "अवैध स्क्रीनसेवर थीम"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "फाइल कॉपी कए रहल अछि %u %u क'"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "स्क्रीनसेवर क' शांति सँ निकलि जाए क' कारण बनल"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "स्क्रीनसेवर क' स्थिति प्रश्नगत करू"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "समय क' नमाइ बताउ जखनसँ स्क्रीनसेवर सक्रिय अछि"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "स्क्रीनकेँ तत्काल लाक करबाक लेल काज करत स्क्रीनसेवर प्रक्रिया बतबैत अछि"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "जँ स्क्रीनसेवर सक्रिय अछि तब दोसर आलेखीय डेमो पर जाउ"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "स्क्रीनसेवर चालू करू (स्क्रीन खाली करू)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "जँ स्क्रीनसेवर सक्रिय अछि तब एकरा निष्क्रिय करू (स्क्रीन खाली करू)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "प्रयोक्ता क्रियाकलापकेँ सिमुलेट करब क'लेल कार्यशील स्क्रीनसेवर आगाँ बढाबू"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "सक्रिय करब सँ स्क्रीनसेवर रोकि रहल अछि बाधा सक्रिय रहबाक दौरान कमांड खंड."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "स्क्रीनसेवर रोकबाक लेल कालिंग अनुप्रयोग"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "स्क्रीनसेवर रोकबाक लेल कारण"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "एहि अनुप्रयोग क' संस्करण"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "%s स्क्रीनसेवर अछि\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "क्रियाशील"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "निष्क्रिय"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "स्क्रीनसेवर %d सकेंड सँ सक्रिय रहल अछि.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "डिबगिंग आउटपुट देखाबू"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "लागआउट बटन देखाबू"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "लागआउट बटन लाबै क'लेल कमांड"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "प्रयोक्ता बदलू बटन देखाबू"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr ""
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "प्रयोक्ताक नाम:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "कूटशब्द: "
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "अहाँक अपन कूटशब्द आवश्यक रूप सँ तत्काल बदलना हाएत (कूटशब्द कालबाधित भ' चुकल अछि)."
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "अहाँक अपन कूटशब्द आवश्यक रूप सँ तत्काल बदलना हाएत (रूट द्वारा बाध्य)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "अहाँक खाता खत्म भ' गेल अछि कृप्या अपन सिस्टम प्रशासक सँ संपर्क करू"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "कोनो कूटशब्द नहि देलक"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "कूटशब्द अपरिवर्तित"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "प्रयोक्ता नाम नहि भेटल"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "नवीन यूनिक्स कूटशब्द दोबारा टाइप करू:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "नवीन यूनिक्स कूटशब्द भरू:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(वर्तमान) यूनिक्स कूटशब्द:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "एनआईएस कूटशब्द परिवर्तन क' दौरान त्रुटि."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "अहाँक बेसी नमहर कूटशब्द चुनै हाएत"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "कूटशब्द पहिले उपयोग कएल जाए चुकल अछि आन चुनू."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "अपन कूटशब्दकेँ बदलब लेल अहाँक बेसी इंतजार कएनाइ हाएत"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "क्षमा करू, कूटशब्द क' जोड़ नहि मिलैत अछि"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "जाँचि रहल अछि..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "सत्यापन असफल"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "खाली स्क्रीन"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "क्रमहीन"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d घंटा"
+msgstr[1] "%d घंटा"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d मिनट"
+msgstr[1] "%d मिनट"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d सकेंड"
+msgstr[1] "%d सकेंड"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "कहियो नहि"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "मुख्य अंतरफलक लोड नहि कए सकल"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "निश्चित करू जे स्क्रीनसेवर विधिवत संस्थापित अछि"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "डेमोन नहि होउ"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "डिबगिंग कोड सक्रिय करू"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "सेवा %s: प्रतिष्ठापित करबमे अक्षम %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s नियत नहि कए सकल"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "गलत कूटशब्द"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "एहि समय अभिगम पाबै क'लेल अनुमति नहि."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "सिस्टम अभिगम क'लेल आब अनुमति प्राप्त नहि अछि."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "संदेश बस क' सँग पंजीयनमे विफल"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "संदेश बस सँ जुड़बमे विफल"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "एहि सत्रमे स्क्रीनसेवर पहिने सँ चलि रहल अछि"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "समय समाप्त भ' गेल अछि."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "अहाँक पास कैप्स लाक कुँजी चालू अछि."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "प्रयोक्ता बदलू (_w)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "लाग आउट (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U %h पर"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "कूटशब्द (_P):"
+
diff --git a/po/mg.po b/po/mg.po
new file mode 100644
index 0000000..b3f8ddd
--- /dev/null
+++ b/po/mg.po
@@ -0,0 +1,866 @@
+# MALAGASY TRANSLATION OF MATE-SCREENSAVER.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the MATE-SCREENSAVER package.
+# Thierry Randrianiriana <randrianiriana at gmail.com>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: MATE-SCREENSAVER 2.16\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-07-13 07:33+0200\n"
+"PO-Revision-Date: 2006-07-17 20:55+0300\n"
+"Last-Translator: Fano Rajaonarisoa <rajfanhar at yahoo.fr>\n"
+"Language-Team: Malagasy <i18n-malagasy-mate at gna.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n>1;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Sary mitsitsy"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Mamaritra ny safidy manokan'ny sary mitsitsy"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Topimason'ny sary mitsitsy</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Fampilazana: tsy ho voageja ny efijery iasan'ny mpampiasa faka.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Regard the computer as _idle after:"
+msgstr "Hevero ho _tsy miasa ilay solosaina avy eo:"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Screensaver Preferences"
+msgstr "Safidy manokan'ny sary mitsitsy"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preview"
+msgstr "Topimason'ny sary mitsitsy"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Alefaso ny sary mitsitsy rehefa tsy miasa ny solosaina"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Lock screen when screensaver is active"
+msgstr "_Gejao ny efijery rehefa mandeha ny sary mitsitsy"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Preview"
+msgstr "_Topimaso"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Screensaver theme:"
+msgstr "Endri-t_sary mitsitsy:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Screensaver themes"
+msgstr "Endri-tsary mitsitsy"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Sary mitsitsy"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Alefaso rehefa tsy misy tranga"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow logout"
+msgstr "Ekeo ny fivoahana"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow user switching"
+msgstr "Ekeo ny fiovana mpampiasa"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Lock on activation"
+msgstr "Gejao rehefa alefa"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Logout command"
+msgstr "Baikon'ny fivoahana"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Screensaver theme selection mode"
+msgstr "Fomba fisafidianana endri-tsary mitsitsy"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Ataovy MARINA ity raha handefa ny sary mitsitsy rehefa tsy misy tranga ny session."
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Ataovy MARINA ity raha hanageja ny efijery rehefa mandeha ny sary mitsitsy."
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+msgstr "Ataovy MARINA ity raha hanome safidy hiovana kaontim-pampiasa hafa anatin'ny takilan'ny famohana."
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "Ataovy MARINA ity raha hanome safidy hivoahana afaka fotoana fohy. Voafaritra anatin'ny famaha \"logout_delay\" ilay fotoana."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Ny baiko antsoina rehefa voatsindry ny \"hivoaka\". Tokony hamoaka ilay mpampiasa fotsiny io baiko io fa tsy mila fifampiresahana. Tsy manan-kery io famaha io raha tsy natao MARINA ny famaha \"logout_enable\"."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "Ny fotoana iandrasana alohan'ny hangejana ny efijery aorian'ny fandefasana ny sary mitsitsy."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Ny fotoana iandrasana alohan'ny isehoan'ny takila famohana misy ny safidy fivoahana aorian'ny fandefasana ny sary mitsitsy. Tsy manan-kery io famaha io raha tsy natao MARINA ny famaha \"logout_enable\"."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Ny halavam-potoana tsy hiasana alohan'ny hiheverana fa tsy misy tranga ilay session."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Ny halavam-potoana iandrasana alohan'ny hanovana ny endri-tsary mitsitsy."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+msgstr "Ny fomba fisafidianana arahan'ilay sary mitsitsy. Mety ho \"blank-only\" raha handefa sary mitsitsy tsy misy endrika, \"single\" raha handefa sary mitsitsy tsy mampiasa afa-tsy endrika tokana (voafaritra anatin'ny famaha \"themes\"), ary \"random\" raha handefa sary mitsitsy mampiasa endrika an-tsapaka."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "Theme for lock dialog"
+msgstr "Endrika ho an'ny takilan'ny fangejana"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "Theme to use for the lock dialog."
+msgstr "Ny endrika ampiasana amin'ny takilan'ny fangejana."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+msgstr "Io famaha io dia mamaritra ny amboaran'endrika hampiasain'ilay sary mitsitsy. Tsy horaharahaina izany rehefa \"blank-only\" ny famaha \"mode\", tokony hanome ny anaran'ilay endrika rehefa \"single\" ny \"mode\", ary tokony hanome amboaran'endrika rehefa \"random\" ny \"mode\". "
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "Time before activation"
+msgstr "Fotoana alohan'ny fampandehanana"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "Time before locking"
+msgstr "Fotoana alohan'ny fangejana"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "Time before logout option"
+msgstr "Fotoana alohan'ny isehoan'ny safidy fivoahana"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "Time before theme change"
+msgstr "Fotoana alohan'ny fanovana endrika"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U amin'ny %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:5
+#: ../src/mate-screensaver-dialog.c:171
+#: ../src/mate-screensaver-dialog.c:172
+msgid "Password:"
+msgstr "Teny fanalahidy:"
+
+#: ../data/lock-dialog-default.glade.h:6
+#: ../src/gs-lock-plug.c:1696
+msgid "S_witch to user:"
+msgstr "_Hiova mpampiasa:"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Aoka"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Log Out"
+msgstr "_Hivoaka"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Switch User..."
+msgstr "_Hiova mpampiasa..."
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch user..."
+msgstr "_Hiova mpampiasa..."
+
+#: ../data/lock-dialog-default.glade.h:11
+#: ../src/gs-lock-plug.c:1425
+msgid "_Unlock"
+msgstr "_Vohay"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Mameno tapoaka misy ny fangon'ny MATE ny efijery"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Tongotra mitsingevana"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Mampiseho misesisesy ny sarin'ny cosmos"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Mampiseho misesisesy ny sary avy ao amin'ny lahatahirin'ny sarinao"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Lahatahirin'ny Sary"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Makarakara misy loko marevaka mitovy amin'ny lokona Pop art."
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Efamira Pop art"
+
+#: ../savers/floaters.c:1165
+msgid "show paths that images follow"
+msgstr "maneho ny lalana arahan'ny sary"
+
+#: ../savers/floaters.c:1172
+msgid "occasionally rotate images as they move"
+msgstr "manodina ny sary mihetsika tsindraindray "
+
+#: ../savers/floaters.c:1179
+msgid "print out frame rate and other statistics"
+msgstr "maneho ny tahan'ny frame sy rehana hafa"
+
+#: ../savers/floaters.c:1187
+msgid "the maximum number of images to keep on screen"
+msgstr "ny isan'ny sary ambony indrindra azo tanana eo amin'ny efijery"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1191
+msgid "N"
+msgstr "N"
+
+#: ../savers/floaters.c:1198
+msgid "the source image to use"
+msgstr "ny sary fototra hampiasaina"
+
+#: ../savers/floaters.c:1205
+msgid "the initial size and position of window"
+msgstr "ny habe sy toeran'ny fikandrana eny am-piaigana"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1210
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "INDRAxHAAVO+X+Y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1228
+msgid "image - floats images around the screen"
+msgstr "sary - mampitsingevana sary eraky ny efijery"
+
+#: ../savers/floaters.c:1238
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Jereo anatin'ny --help hahalalana ny momba izany.\n"
+
+#: ../savers/floaters.c:1247
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Tsy maintsy mamaritra sary iray ianao. Jereo anatin'ny --help hahalalana ny momba izany.\n"
+
+#: ../savers/slideshow.c:47
+msgid "Location to get images from"
+msgstr "Ny toeana angalana ireo sary"
+
+#: ../savers/slideshow.c:47
+msgid "PATH"
+msgstr "LALANA"
+
+#: ../src/cut-n-paste/fusa-display.c:119
+#: ../src/cut-n-paste/fusa-user.c:150
+msgid "Manager"
+msgstr "Mpandrindra"
+
+#: ../src/cut-n-paste/fusa-display.c:120
+msgid "The manager which owns this object."
+msgstr "Ilay mpandrindra tompon'io zavatra io."
+
+#: ../src/cut-n-paste/fusa-display.c:127
+msgid "Name"
+msgstr "Anarana"
+
+#: ../src/cut-n-paste/fusa-display.c:128
+msgid "The name of the X11 display this object refers to."
+msgstr "Ny anaran'ilay seho X11 mifandraika amin'io zavatra io."
+
+#: ../src/cut-n-paste/fusa-display.c:134
+#: ../src/cut-n-paste/fusa-user-menu-item.c:163
+msgid "User"
+msgstr "Mpampiasa"
+
+#: ../src/cut-n-paste/fusa-display.c:135
+msgid "The user currently logged in on this virtual terminal."
+msgstr "Ny mpampiasa tafiditra anatin'ity terminal virtoaly iry izao."
+
+#: ../src/cut-n-paste/fusa-display.c:141
+msgid "Console"
+msgstr "Konsoly"
+
+#: ../src/cut-n-paste/fusa-display.c:142
+msgid "The number of the virtual console this display can be found on, or %-1."
+msgstr "Ny isan'ny konsoly virtoaly mety hisy ity seho ity, na %-1."
+
+#: ../src/cut-n-paste/fusa-display.c:148
+msgid "Nested"
+msgstr "Mifampiditra"
+
+#: ../src/cut-n-paste/fusa-display.c:149
+msgid "Whether or not this display is a windowed (Xnest) display."
+msgstr "Raha anaty fikandrana (Xnest) ity seho ity na tsia."
+
+#: ../src/cut-n-paste/fusa-manager.c:1453
+msgid "The display manager could not be contacted for unknown reasons."
+msgstr "Tsy mety ifandraisana noho ny antony tsy fantatra ilay mpandrindra seho."
+
+#: ../src/cut-n-paste/fusa-manager.c:1460
+msgid "The display manager is not running or too old."
+msgstr "Tsy mandeha na antitra loatra ilay mpandrindra seho."
+
+#: ../src/cut-n-paste/fusa-manager.c:1463
+msgid "The configured limit of flexible servers has been reached."
+msgstr "Tratra ilay fetran'ireo mpizara mora miovaova izay voafaritra."
+
+#: ../src/cut-n-paste/fusa-manager.c:1466
+msgid "There was an unknown error starting X."
+msgstr "Nisy olana tsy fantatra teo am-panombohana ny X."
+
+#: ../src/cut-n-paste/fusa-manager.c:1469
+msgid "The X server failed to finish starting."
+msgstr "Tsy afaka nitsahatra niantomboka ny mpizara X."
+
+#: ../src/cut-n-paste/fusa-manager.c:1472
+msgid "There are too many X sessions running."
+msgstr "Be loatra ireo session X misokatra."
+
+#: ../src/cut-n-paste/fusa-manager.c:1475
+msgid "The nested X server (Xnest) cannot connect to your current X server."
+msgstr "Tsy afaka mifandray amin'ny mpizara X-nao izao ny mpizara X mifampiditra (Xnest)."
+
+#: ../src/cut-n-paste/fusa-manager.c:1478
+msgid "The X server in the MDM configuration could not be found."
+msgstr "Tsy mety hita ilay mpizara X anatin'ny kirakiran'ny MDM."
+
+#: ../src/cut-n-paste/fusa-manager.c:1481
+#: ../src/cut-n-paste/mdmcomm.c:492
+msgid "Trying to set an unknown logout action, or trying to set a logout action which is not available."
+msgstr "Manandrana mamaritra asa fivoahana tsy fantatra, na manandrana mamaritra asa fivoahana tsy misy."
+
+#: ../src/cut-n-paste/fusa-manager.c:1484
+#: ../src/cut-n-paste/mdmcomm.c:495
+msgid "Virtual terminals not supported."
+msgstr "Tsy raisina an-tànana ny terminal virtoaly."
+
+#: ../src/cut-n-paste/fusa-manager.c:1487
+msgid "Invalid virtual terminal number."
+msgstr "Laharana terminal virtoaly diso."
+
+#: ../src/cut-n-paste/fusa-manager.c:1490
+#: ../src/cut-n-paste/mdmcomm.c:499
+msgid "Trying to update an unsupported configuration key."
+msgstr "Manandrana manavao famahan-kirakira tsy raisina an-tànana."
+
+#: ../src/cut-n-paste/fusa-manager.c:1493
+msgid "~/.Xauthority file badly configured or missing."
+msgstr "Tsy voakirakira tsara na tsy eo ny rakitra ~/.Xauthority."
+
+#: ../src/cut-n-paste/fusa-manager.c:1496
+msgid "Too many messages were sent to the display manager, and it hung up."
+msgstr "Be loatra ireo filazana nalefa tany amin'ny mpandrindra seho, dia niraikitra ilay izy."
+
+#: ../src/cut-n-paste/fusa-manager.c:1500
+msgid "The display manager sent an unknown error message."
+msgstr "Nandefa filazana tsy fetezana tsy fantatra ny mpandrindra seho."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:164
+msgid "The user this menu item represents."
+msgstr "Ilay mpampiasa soloin'ity safidin-tolotra ity tena."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:171
+msgid "Icon Size"
+msgstr "Haben'ny kisary"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:172
+msgid "The size of the icon to use."
+msgstr "Ny haben'ilay kisary hampiasaina."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:178
+msgid "Indicator Size"
+msgstr "Haben'ny mpilaza"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:179
+#, fuzzy
+msgid "Size of check indicator"
+msgstr "Haben'ilay mpilaza fanamarinana"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:184
+msgid "Indicator Spacing"
+msgstr "Fanelanelan'ny mpilaza"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:185
+msgid "Space between the username and the indicator"
+msgstr "Elanelan'ny anaran'ny mpampiasa sy ny mpilaza"
+
+#: ../src/cut-n-paste/fusa-user.c:151
+msgid "The user manager object this user is controlled by."
+msgstr "Ny zavatry ny mpandrindra mpampiasa mifehy io mpampiasa io."
+
+#: ../src/cut-n-paste/fusa-utils.c:80
+msgid "Show Details"
+msgstr "Asehoy ny antsipiriany"
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:413
+msgid "MDM (The MATE Display Manager) is not running."
+msgstr "Tsy mandeha ny MDM (Ilay mpandrindra sehon'ny MATE)."
+
+#: ../src/cut-n-paste/mdmcomm.c:416
+msgid "You might in fact be using a different display manager, such as KDM (KDE Display Manager) or xdm."
+msgstr "Mety mampiasa mpandrindra seho hafa toy ny KDM (mpandrindra sehon'ny KDE) na xdm kosa angamba ianao."
+
+#: ../src/cut-n-paste/mdmcomm.c:419
+msgid "If you still wish to use this feature, either start MDM yourself or ask your system administrator to start MDM."
+msgstr "Raha toa ka mbola maniry hampiasa io fahasahaza io ianao, dia alefaso na asaivo alefan'ny mpitantana ny rafitrao ny MDM."
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:441
+msgid "Cannot communicate with MDM (The MATE Display Manager)"
+msgstr "Tsy afaka mifandray amin'ny MDM (Ilay mpandrindra sehon'ny MATE)"
+
+#: ../src/cut-n-paste/mdmcomm.c:444
+msgid "Perhaps you have an old version of MDM running."
+msgstr "Mety kinovan'ny MDM taloha no alefanao."
+
+#: ../src/cut-n-paste/mdmcomm.c:463
+#: ../src/cut-n-paste/mdmcomm.c:466
+msgid "Cannot communicate with mdm, perhaps you have an old version running."
+msgstr "Tsy afaka mifandray amin'ny mdm. Mety kinovan'ny mdm taloha no alefanao."
+
+#: ../src/cut-n-paste/mdmcomm.c:469
+msgid "The allowed limit of flexible X servers reached."
+msgstr "Tratra ny fara-fetran'ireo mpizara X mora miovaova."
+
+#: ../src/cut-n-paste/mdmcomm.c:471
+msgid "There were errors trying to start the X server."
+msgstr "Nisy olana maro teo am-panandrama mandefa ny mpizara X."
+
+#: ../src/cut-n-paste/mdmcomm.c:473
+msgid "The X server failed.  Perhaps it is not configured well."
+msgstr "Tsy nandeha ny mpizara X. Mety tsy voakirakira tsara angamba izy io."
+
+#: ../src/cut-n-paste/mdmcomm.c:476
+msgid "Too many X sessions running."
+msgstr "Be loatra ireo session X misokatra."
+
+#: ../src/cut-n-paste/mdmcomm.c:478
+msgid "The nested X server (Xnest) cannot connect to your current X server.  You may be missing an X authorization file."
+msgstr "Tsy afaka mifandray amin'ny mpizara X-nao izao ilay mpizara X mifampiditra (Xnest). Mety tsy ampy raki-pahazoan-dàlana X angamba ianao."
+
+#: ../src/cut-n-paste/mdmcomm.c:483
+msgid ""
+"The nested X server (Xnest) is not available, or mdm is badly configured.\n"
+"Please install the Xnest package in order to use the nested login."
+msgstr ""
+"Tsy mety ampiasaina ilay mpizara X mifampiditra (Xnest), na tsy voakirakira tsara ny mdm.\n"
+"Apetrao ilay fehy Xnest ahafahana mampiasa ny session mifampiditra."
+
+#: ../src/cut-n-paste/mdmcomm.c:488
+msgid "The X server is not available, it is likely that mdm is badly configured."
+msgstr "Tsy mety ampiasaina ny mpizara X. Mety tsy voakirakira tsara  ny mdm."
+
+#: ../src/cut-n-paste/mdmcomm.c:497
+msgid "Trying to change to an invalid virtual terminal number."
+msgstr "Manandrana miova laharana terminal virtoaly diso."
+
+#: ../src/cut-n-paste/mdmcomm.c:501
+msgid "You do not seem to have authentication needed be for this operation.  Perhaps your .Xauthority file is not set up correctly."
+msgstr "Toa tsy manana ny fanamarinana ilaina amin'io asa io ianao. Mety tsy voakirakira tsara angamba ny rakitra .Xauthority-nao."
+
+#: ../src/cut-n-paste/mdmcomm.c:505
+msgid "Too many messages were sent to mdm and it hung upon us."
+msgstr "Be loatra ireo filazana nalefa tany amin'ny mdm dia niraikitra izy."
+
+#: ../src/cut-n-paste/mdmcomm.c:508
+msgid "Unknown error occurred."
+msgstr "Nisy olana tsy fantatra nitranga."
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Mandika rakitra: %u amin'ny %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "Mandika ny '%s'"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "Avy amin'ny URI"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "Ny URI mamindra avy amin'ny"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "Mankany amin'ny URI"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "Ny URI mamindra mankany amin'ny"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "Feno ilay ampaha"
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "Feno ilay ampaha-javatra nafindra"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "Ny fiazahan-takilan'URI izao"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "Ny fizahan-takilan'URI izao - manomboka amin'ny 1"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "Tontalin'ny URI"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "Ny tontalin'ny isan'ny URI"
+
+#: ../src/file-transfer-dialog.c:327
+#: ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "Mandika rakitra"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "Avy amin'ny:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "Mankany amin'ny:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "Mifandray..."
+
+#: ../src/mate-screensaver-command.c:61
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Mahatonga ilay sary mitsitsy hijanona moramora fotsiny"
+
+#: ../src/mate-screensaver-command.c:63
+msgid "Query the state of the screensaver"
+msgstr "Manontany ny toetran'ilay sary mitsitsy"
+
+#: ../src/mate-screensaver-command.c:65
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Milaza ny asan'ny sary mitsitsy mandeha mba hangeja ny efijery avy hatrany"
+
+#: ../src/mate-screensaver-command.c:67
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Raha mandeha ny sary mitsitsy, dia miovà démon-tsary hafa"
+
+#: ../src/mate-screensaver-command.c:69
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Mandefa ny sary mitsitsy (manafoana ny efijery)"
+
+#: ../src/mate-screensaver-command.c:71
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Atsaharo ny sary mitsitsy raha mandeha (mamerina ny efijery)"
+
+#: ../src/mate-screensaver-command.c:73
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Manosika ny sary mitsitsy mandeha haka tahaka ny fihetsiketsehan'ny mpampiasa"
+
+#: ../src/mate-screensaver-command.c:75
+msgid "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+msgstr "Misakana ny sary mitsitsy handeha. Voasakana ny baiko rehefa mandeha ny fisakanana."
+
+#: ../src/mate-screensaver-command.c:77
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Ny rindranasa mpiantso misakana ilay sary mitsitsy"
+
+#: ../src/mate-screensaver-command.c:79
+msgid "The reason for inhibiting the screensaver"
+msgstr "Ny antony isakanana ilay sary mihetsika"
+
+#: ../src/mate-screensaver-command.c:81
+#: ../src/mate-screensaver-dialog.c:54
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Ny kinovan'io rindranasa io"
+
+#: ../src/mate-screensaver-command.c:246
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "%s ilay sary mitsitsy\n"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "active"
+msgstr "miasa"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "inactive"
+msgstr "tsy miasa"
+
+#: ../src/mate-screensaver-dialog.c:52
+msgid "Show debugging output"
+msgstr "Mampiseho ny lazan'ny debugging"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show the logout button"
+msgstr "Mampiseho ny tsindrin'ny fivoahana"
+
+#: ../src/mate-screensaver-dialog.c:58
+msgid "Command to invoke from the logout button"
+msgstr "Ny baiko antsoin'ny tsindrin'ny fivoahana"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the switch user button"
+msgstr "Mampiseho ny tsindrin'ny fiovana mpampiasa"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:168
+#: ../src/mate-screensaver-dialog.c:169
+#: ../src/mate-screensaver-dialog.c:170
+#: ../src/gs-auth-pam.c:380
+msgid "Username:"
+msgstr "Anaran'ny mpampiasa:"
+
+#: ../src/mate-screensaver-dialog.c:173
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Mila manova ny teny fanalahidinao izao dieny izao ianao (tonta ny teny fanalahidy)"
+
+#: ../src/mate-screensaver-dialog.c:174
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Mila manova ny teny fanalahidinao izao dieny izao ianao (teren'ny faka)"
+
+#: ../src/mate-screensaver-dialog.c:175
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Tapi-potoana ny kaontinao. "
+
+#: ../src/mate-screensaver-dialog.c:176
+msgid "No password supplied"
+msgstr "Tsy misy teny fanalahidy nomena"
+
+#: ../src/mate-screensaver-dialog.c:177
+msgid "Password unchanged"
+msgstr "Tsy niova ilay teny fanalahidy"
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "Can not get username"
+msgstr "Tsy mety azo ny anaran'ny mpampiasa"
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "Retype new UNIX password:"
+msgstr "Avereno soratana ny teny fanalahidy UNIX vaovao:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Enter new UNIX password:"
+msgstr "Soraty ny teny fanalahidy UNIX vaovao:"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "(current) UNIX password:"
+msgstr "Ny teny fanalahidy UNIX (izao):"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Error while changing NIS password."
+msgstr "Nisy olana teo am-panovana ny teny fanalahidy NIS."
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You must choose a longer password"
+msgstr "Tsy maintsy mitady teny fanalahidy lavalava ianao"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password has been already used. Choose another."
+msgstr "Efa nampiasaina io teny fanalahidy io. Manomeza hafa."
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You must wait longer to change your password"
+msgstr "Tsy maintsy miandry elaela ianao vao afaka manova ny teny fanalahidinao"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Sorry, passwords do not match"
+msgstr "Miala tsiny. Tsy mitovy ilay teny fanalahidy"
+
+#: ../src/mate-screensaver-dialog.c:280
+#: ../src/gs-auth-pam.c:320
+msgid "Authentication failed."
+msgstr "Tsy nety ny fanamarinana."
+
+#: ../src/mate-screensaver-preferences.c:436
+msgid "Blank screen"
+msgstr "Efijery foana"
+
+#: ../src/mate-screensaver-preferences.c:442
+msgid "Random"
+msgstr "An-tsapaka"
+
+#: ../src/mate-screensaver-preferences.c:790
+msgid "Invalid screensaver theme"
+msgstr "Endri-tsary mitsitsy tsy mety"
+
+#: ../src/mate-screensaver-preferences.c:793
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "Tahaka ny tsy endri-tsary mitsitsy mety io rakitra io."
+
+#: ../src/mate-screensaver-preferences.c:910
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ora"
+msgstr[1] "%d ora"
+
+#: ../src/mate-screensaver-preferences.c:913
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minitra"
+msgstr[1] "%d minitra"
+
+#: ../src/mate-screensaver-preferences.c:916
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segaondra"
+msgstr[1] "%d segaondra"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:922
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:925
+#: ../src/mate-screensaver-preferences.c:933
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:928
+#: ../src/mate-screensaver-preferences.c:936
+#: ../src/mate-screensaver-preferences.c:940
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:955
+msgid "Never"
+msgstr "Na oviana na oviana"
+
+#: ../src/mate-screensaver-preferences.c:1330
+msgid "Could not load the main interface"
+msgstr "Tsy afaka naka ny mpanera fototra"
+
+#: ../src/mate-screensaver-preferences.c:1332
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Amarino tsara hoe voapetraka araka ny tokony ho izy ny sary mitsitsy"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Aza mivadika daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Mandefa ny fangon'ny debugging"
+
+#: ../src/gs-auth-pam.c:262
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Tsy afaka nametraka ny sampan'asa %s: %s\n"
+
+#: ../src/gs-auth-pam.c:288
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Tsy afaka mamaritra ny  PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:318
+msgid "Incorrect password."
+msgstr "Teny fanalahidy diso."
+
+#: ../src/gs-auth-pam.c:334
+msgid "Not permitted to gain access at this time."
+msgstr "Tsy mahazo alalana hihiditra amin'izao fotoana izao."
+
+#: ../src/gs-auth-pam.c:340
+msgid "No longer permitted to access the system."
+msgstr "Tsy mahazo alalana hampiasa ny rafitra."
+
+#: ../src/gs-listener-dbus.c:1548
+msgid "failed to register with the message bus"
+msgstr "Tsy afaka nanao fanambarana tamin'ny alalan'ny mpampitan'ny hafatra"
+
+#: ../src/gs-listener-dbus.c:1558
+msgid "not connected to the message bus"
+msgstr "tsy mifandray amin'ny mpampitan'ny hafatra"
+
+#: ../src/gs-listener-dbus.c:1567
+msgid "screensaver already running in this session"
+msgstr "Efa mandeha amin'ity session ity ny sary mitsitsy"
+
+#: ../src/gs-lock-plug.c:334
+msgid "Time has expired."
+msgstr "Tapitra ny fotoana."
+
+#: ../src/gs-lock-plug.c:364
+msgid "You have the Caps Lock key on."
+msgstr "Mandeha ny kitendry Caps Lock."
+
+#: ../src/gs-lock-plug.c:1407
+#: ../src/gs-lock-plug.c:1444
+msgid "S_witch User..."
+msgstr "Hi_ova mpampiasa..."
+
+#: ../src/gs-lock-plug.c:1415
+msgid "Log _Out"
+msgstr "Hi_ovaka"
+
+#: ../src/gs-lock-plug.c:1606
+msgid "%U on %h"
+msgstr "%U amin'ny %h"
+
+#: ../src/gs-lock-plug.c:1620
+msgid "_Password:"
+msgstr "_Teny fanalahidy:"
diff --git a/po/mk.po b/po/mk.po
new file mode 100644
index 0000000..c81db2d
--- /dev/null
+++ b/po/mk.po
@@ -0,0 +1,754 @@
+# translation of mk.po to Macedonian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Arangel Angov <ufo at linux.net.mk>, 2006, 2008.
+# Ivica Micev <icko at elfasko.org.mk>, 2006.
+# Jovan Naumovski <jovan at lugola.net>, 2006.
+# Arangel Angov <arangel at linux.net.mk>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: mk\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-05-12 22:13+0000\n"
+"PO-Revision-Date: 2008-08-29 11:33+0200\n"
+"Last-Translator: Arangel Angov <ufo at linux.net.mk>\n"
+"Language-Team: Macedonian <ossm-members at hedona.on.net.mk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural= n==1 || n%10==1 ? 0 : 1\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Чувар на екранот"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Поставете ги преференциите за чуварот на екранот"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Преглед</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Внимание: екранот ќе биде заклучен за корисникот „root“.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "Менаџмент на _енергија"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Постави ја сесијата како _неактивна по:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Преференции за чуварот"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Преглед на чуварот"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Активирај чувар на екранот кога сесијата е неактивна"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Заклучи екран кога чуварот на екранот е активен"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "_Преглед"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "Тема за _чуварот на екранот:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "Теми за чуварот на екранот"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Чувари на екранот"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Активирај кога е неактивно"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Дозволи вградување тастатура во прозорецот"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Дозволи одлогирање"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Дозволи промена на корисници"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "Команда за вградена тастатура"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "Заклучи на активација"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "Команда за одјава"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "Причина за отсуство"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "Режим за селекција на тема за чуварот на екранот"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Постави го ова како TRUE за активирање на чуварот на екранот кога сесијата е "
+"неактивна"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Поставете го ова како TRUE за да дозволите вградена тастатура во прозорецот "
+"кога се обидувате да отклучете. \"keyboard_command\" клучот мора да биде "
+"поставен со соодветната команда."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"постави го ова како TRUE да заклучите екран кога чуварот на екранот се "
+"активира"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Поставете го ова како TRUE да се овозможи опција во отклучувачкиот дијалог "
+"за промена на друга корисничка сметка."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Постави го ова како TRUE да понуди опција во отклучувачкиот дијалог за "
+"одлогирање по истекот. Истекот е специфициран во копчето  \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Оваа команда ќе биде извршена ако \"embedded_keyboard_enabled\" клучот е "
+"поставен како TRUE за да вгради графичка контрола за тастатура во "
+"прозорецот. Оваа команда треба да имплементира XEMBED приклучен интерфејс и "
+"да извади XID прозорец на стандардниот излезен уред."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Командата да повика кога одјавното копче е кликнато. Оваа команда би требало "
+"едноставно да го одјави корисникот без никаква интеракција. Ова копче ќе има "
+"ефект само ако \"logout_enable\" копчето е поставено како TRUE"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Број на минути по активирање на чуварот на екранот пред заклучување на "
+"екранот."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Бројот на минути  активирањето нас чуварот а пред опцијата за одјава ќе се "
+"покажат во отклучувачкиот диjалог. Ова копче ќе има ефект само ако "
+"\"logout_enable\" копчето е поставено како TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Број на минутите на неактивност пред сесијата да прогласи неактивност."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Број на минутити да извршува пред промена на тема за чуварот на екранот."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Бројот на секунди неактивност пред сигнализирањето на менаџментот за "
+"енергија. Овој клуч е поставен и одржуван од агентот за енергија на сесијата."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "Причина за отсутност."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Избирачкиот режим користен од чуварот на екранот. Може да е \"blank-only\" "
+"да го овозможи чуварот на екранот користејќи една тема за активирање "
+"(одредена во \"теми\"), и \"случајни\" за да се овозможи чуварот на екранот "
+"да користи случајна тема на активацијата."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Тема за дијалог прозорецот за заклучување"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Тема која ќе се користи за дијалог прозорецот за заклучување."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Ова копче ја специфицира листата од теми кои ќе бидат користени од чуварот "
+"на екранот. Се игнорирани кога копчето \"режим\" е \"blank-only\", би "
+"требало да произведе име на тема кофа \"режим\" e \"еден\", и треба да "
+"произведе листа од теми кога \"режим\" e \"случајни\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Време пред заклучување"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Време пред опција за одјава"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Време по активирањето на основната линија на менаџментот за енергија"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Времето по кое сесијата се смета за неактивна"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Време пред промена на тема"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Оставете порака за %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U на %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Откажи"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "_Остави порака"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "_Одјава"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Смени корисник"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1214
+msgid "_Unlock"
+msgstr "_Отклучи"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Космос"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Прикажи слајд шоу од сликите од космосот"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bubbles the MATE foot logo околу екранот"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Подвижно стапало"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Прикажи слајд шоу од вашата папка со слики"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Папка со слики"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "pop-art-ish мрежа од пулсирачки бои"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Pop art квадрати"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Прикажи патеки кои ги следат сликите"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Повремено ротирај ги сликите како што се движат"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Отпечати стапка на опкружување и други статистики"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Максималниот број на слики кои ќе се задржат на екранот"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Почетната големина и позицијата на прозорот"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Изворна слика"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "слика - подвижни слики околу екранот"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Види --help за употрбливи информации.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Морате да специфицирате една слика. Видете --help за употребливи "
+"информации.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Локација за земање слики"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Боја што ќе се користи за позадината на сликите"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Не ставај случајни слики од локацијата"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Не ги издолжувај сликите на екранот"
+
+#: ../src/copy-theme-dialog.c:211
+msgid "Copying files"
+msgstr "Копирам датотеки"
+
+#: ../src/copy-theme-dialog.c:229
+msgid "From:"
+msgstr "Од:"
+
+#: ../src/copy-theme-dialog.c:233
+msgid "To:"
+msgstr "Кон:"
+
+#: ../src/copy-theme-dialog.c:253
+msgid "Copying themes"
+msgstr "Копирам теми"
+
+#: ../src/copy-theme-dialog.c:297
+msgid "Invalid screensaver theme"
+msgstr "Невалидна тема за чуварот на екранот"
+
+#: ../src/copy-theme-dialog.c:300
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s не изгледа дека е валидна тема за чуварот на екранот."
+
+#: ../src/copy-theme-dialog.c:480
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Копирам датотека %u од %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Предизвикува излез од чуварот на екранот постепено"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Побарај ја состојбата на чуварот на екранот"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Побарај ја должината на времето колку што е активен чуварот на екранот"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Му кажува на чуварот на екранот да го заклучи екранот веднаш"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Ако чуварот на екранот е активен тогаш промени друго графичко демо"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Вклучи го чуварот на екранот (бланко екран)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Ако чуварот на екранот е активен тогаш деактивирај го (покажи екран)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Поттикни го чуварот на екранот што работи да симулира активност на корисникот"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Спречи го чуварот на екранот да се активира.  Командата го блокира додека "
+"чуварот на екранот се активира."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Повикувачката апликација која го блокира чуварот на екранот"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Причина за блокирање на чуварот на екранот"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Верзија на оваа апликација"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Чуварот на екранот е %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "активно"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "неактивно"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Чуварот на екранот не е забранет\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Чуварот на екранот е забранет од:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Чуварот на екранот е активен %d секунди.\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "Прикажи дебагирачкиот излез"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "Прикажи го одјавното копче"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "Команда за повик од одјавното копче"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "Прикажи го копчето за промена на кориснокот"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "Порака која ќе се прикаже во дијалогот"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Корисничко име:"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Лозинка:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Треба да ја смените лозинката веднаш (лозинката остаре)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Треба да ја смените лозинката веднаш (root присили)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Вашиот акаунт истече; Ве молам контактирајте го Вашиот администратор на "
+"системот"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "Не е обезбедена лозинка"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "Лозинката е непроменета"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Не можам да добијам корисничко име"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "Повторно внесете ја новата UNIX лозинка:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "Внесете ја новата UNIX лозинка:"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "(тековна) UNIX лозинка:"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "Грешка при промената на лозинката за NIS."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "Мора да одберите подолга лозинка"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "Лозинката е веќе употребена. Одберете друга."
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "Мора да чекате подолго за да ја промените Вашата лозинка"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "Жалам, лозинките не се совпаѓаат"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Проверувам..."
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Проверката на автентичност не успеа."
+
+#: ../src/mate-screensaver-preferences.c:498
+msgid "Blank screen"
+msgstr "Црн екран"
+
+#: ../src/mate-screensaver-preferences.c:504
+msgid "Random"
+msgstr "Рандом"
+
+#: ../src/mate-screensaver-preferences.c:954
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d час"
+msgstr[1] "%d часови"
+msgstr[2] "%d часови"
+
+#: ../src/mate-screensaver-preferences.c:957
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d минута"
+msgstr[1] "%d минути"
+msgstr[2] "%d минути"
+
+#: ../src/mate-screensaver-preferences.c:960
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d секунда"
+msgstr[1] "%d  секунди"
+msgstr[2] "%d секунди"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:966
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:969
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:972
+#: ../src/mate-screensaver-preferences.c:980
+#: ../src/mate-screensaver-preferences.c:984
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:999
+#, c-format
+msgid "Never"
+msgstr "Никогаш"
+
+#: ../src/mate-screensaver-preferences.c:1398
+msgid "Could not load the main interface"
+msgstr "Не можам да го вчитам главниот интерфејс"
+
+#: ../src/mate-screensaver-preferences.c:1400
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Ве молам осигурајте се дека чуварот на екранот е правилно инсталиран"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Не станувај Демон"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Овозможи дебагирачки код"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Не можам да го поставам сервисот %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Не можам да го поставам PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Неточна лозинка..."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Немате дозвола да добиете пристап сега."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Повеќе немате пристап до системот."
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "не успеав да се регистрирам со магистралата за порака"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "Не е поврзано до магистралата за порака"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "Чуварот на екранот веќе работи во оваа сесија"
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "Времето истече."
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr "Имате притиснати Caps Lock."
+
+#: ../src/gs-lock-plug.c:1194
+msgid "S_witch User..."
+msgstr "П_ромени корисник..."
+
+#: ../src/gs-lock-plug.c:1203
+msgid "Log _Out"
+msgstr "_Одјава"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1380
+msgid "%U on %h"
+msgstr "%U на %h"
+
+#: ../src/gs-lock-plug.c:1394
+msgid "_Password:"
+msgstr "_Лозинка"
+
diff --git a/po/ml.po b/po/ml.po
new file mode 100644
index 0000000..271e1a8
--- /dev/null
+++ b/po/ml.po
@@ -0,0 +1,758 @@
+# translation of mate-screensaver.master.ml.po to
+# This file is distributed under the same license as the mate-screensaver package.
+# Copyright (C) 2006-2009 mate-screensaver'S COPYRIGHT HOLDER.
+# Reviewed by Santhosh Thottingal <santhosh00 at gmail.com>
+# Ani Peter <apeter at redhat.com>, 2006.
+# Praveen|പ്രവീണ്‍ A|എ <pravi.a at gmail.com>, 2007, 2008‌.
+# Abhishek Jacob <abhishekjacob123 at gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.master.ml\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-09-12 17:59+0530\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "സ്ക്രീന്‍സേവര്‍"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "നിങ്ങളുടെ സ്ക്രീന്‍സേവറിന്റെ മുന്‍ഗണനകള്‍ സജ്ജീകരിയ്ക്കുക"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>സ്ക്രീന്‍സേവര്‍ കണ്ടു നോക്കുക</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>മുന്നറിയിപ്പ്: റൂട്ട് ഉപയോക്താവിന് സ്ക്രീന്‍ പൂട്ടുവാന്‍ സാധിക്കില്ല.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "വൈദ്യുതി _നടത്തിപ്പ്"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "കമ്പ്യൂട്ടര്‍ _ആലസ്യത്തിലാണെന്ന് കരുതേണ്ടത് എത്ര സമയത്തിന് ശേഷം:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "സ്ക്രീന്‍സേവറിന്റെ മുന്‍ഗണനകള്‍"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "സ്ക്രീന്‍സേവര്‍ കണ്ടു നോക്കുക"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "കമ്പ്യൂട്ടര്‍ ആലസ്യത്തിലാകുമ്പോള്‍ സ്ക്രീന്‍സേവര്‍ _സജീവമാക്കുക"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "സ്ക്രീന്‍സേവര്‍ സജീവമാകുമ്പോള്‍ സ്ക്രീന്‍ _പൂട്ടുക"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_കണ്ടു നോക്കുക"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_സ്ക്രീന്‍സേവറിന്റെ പ്രമേയം:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "സ്ക്രീന്‍സേവറിന്റെ പ്രമേയങ്ങള്‍"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "സ്ക്രീന്‍സേവറുകള്‍"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "ആലസ്യത്തിലാകുമ്പോള്‍ സജീവമാക്കുക"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "ജാലകത്തില്‍ കീബോര്‍ഡ് കൂട്ടിച്ചേര്‍ക്കുന്നത് അനുവദിയ്ക്കുക"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "പുറത്തിറങ്ങാന്‍ അനുവദിയ്ക്കുക"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "പ്രവര്‍ത്തനവേളയുടെ അവസ്ഥാസന്ദേശം കാണിക്കുവാന്‍ അനുവദിക്കുക"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "സ്ക്രീന്‍ പൂട്ടിയിരിക്കുമ്പോള്‍ പ്രവര്‍ത്തനവേളയുടെ അവസ്ഥാസന്ദേശം കാണിക്കുവാന്‍ അനുവദിക്കുക."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "മറ്റൊരു ഉപയോക്താവാകുന്നത് അനുവദിയ്ക്കുക"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "തുന്നിച്ചേര്‍ത്ത കീബോര്‍ഡിനുള്ള ആജ്ഞ"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "പ്രവര്‍ത്തനത്തിലാകുമ്പോള്‍ പൂട്ടുക"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "പുറത്തിറങ്ങുന്നതിനുളള ആജ്ഞ"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "സ്ക്രീന്‍സേവറിന്റെ പ്രമേയം തിരഞ്ഞെടുക്കുന്നതിനുള്ള രീതി"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "ആലസ്യാവസ്ഥയില്‍ സ്ക്രീന്‍സേവര്‍ പ്രവര്‍ത്തിപ്പിയ്ക്കാന്‍ ഇത് ശരിയെന്ന് സജ്ജീകരിയ്ക്കുക."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"ജാലകത്തില്‍ കീബോര്‍ഡ് തുന്നിച്ചേര്‍ക്കുന്നത് അനുവദിയ്ക്കാന്‍ ഇത് ശരിയെന്ന് സജ്ജീകരിയ്ക്കുക. "
+"\"keyboard_command\" എന്ന കീ യോജിച്ച ആജ്ഞയായി സജ്ജീകരിച്ചിരിയ്ക്കണം."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "സ്ക്രീന്‍സേവര്‍ സജീവമാകുമ്പോള്‍ സ്ക്രീന്‍ പൂട്ടുന്നതിനായി ഇത് ശരിയെന്ന് സജ്ജീകരിയ്ക്കുക."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"മറ്റൊരു ഉപയോക്താവിന്റെ അക്കൌണ്ടിലേയ്ക്ക് മാറുന്നതിനുള്ള ഐച്ഛികം പൂട്ടു തുറക്കാനുള്ള ജാലകത്തില്‍ "
+"ലഭ്യമാക്കാന്‍ ഇത് ശരിയെന്ന് സജ്ജീകരിയ്ക്കുക."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"ഒരിടവേളയ്ക്ക് ശേഷം പുറത്തിറങ്ങാനുള്ള ഐച്ഛികം തുറക്കുന്നതിനായുള്ള ജാലകത്തില്‍ ലഭ്യമാക്കാന്‍ ഇത് "
+"ശരിയെന്ന് സജ്ജീകരിയ്ക്കുക. \"logout_delay\" എന്ന കീയിലാണ് ഇടവേള വ്യക്തമാക്കിയിരിയ്ക്കുന്നത്."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" എന്ന കീ ശരിയെന്ന് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കില്‍ ഒരു കീബോര്‍ഡ് "
+"വിഡ്ജറ്റ് ജാലകത്തിലേയ്ക്ക് കൂട്ടിചേര്‍ക്കാനായി പ്രവര്‍ത്തിപ്പിയ്ക്കേണ്ട ആജ്ഞ. ഈ ആജ്ഞ ഒരു  XEMBED "
+"സംയോജക വിനിമയതലം നടപ്പിലാക്കിയിരിയ്ക്കുകയും ഒരു ജാലക എക്സ്ഐഡി സ്റ്റാന്‍ഡേര്‍ഡ് ഔട്ട്പുട്ടില്‍ "
+"കാണിയ്ക്കുകയും വേണം."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"പുറത്തിറങ്ങാനുള്ള ബട്ടണ്‍ അമര്‍ത്തിയാല്‍ വിളിയ്ക്കേണ്ട ആജ്ഞ. ഈ ആജ്ഞ മറ്റൊരിടപെടലുമില്ലാതെ "
+"ഉപയോക്താവിനെ നേരെയങ്ങ് പുറത്തിറക്കണം.  \"logout_enable\" കീ ശരിയെന്ന് "
+"സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കില്‍ മാത്രമേ ഈ കീയ്ക്ക് പ്രഭാവമുള്ളൂ."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "സ്ക്രീന്‍സേവര്‍ സജീവമായതിന് ശേഷം സ്ക്രീന്‍ പൂട്ടുന്നതിന് എത്ര മിനിറ്റുകള്‍."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"സ്ക്രീന്‍സേവര്‍ സജീവമായതിന് ശേഷം തുറക്കുന്നതിനുള്ള ജാലകത്തില്‍ പുറത്തിറങ്ങാനുള്ളൊരു ഐച്ഛികം വരുന്നതിന് "
+"എത്ര മിനിറ്റുകള്‍. \"logout_enable\" കീ ശരിയെന്ന് സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കില്‍ മാത്രമേ ഈ "
+"കീയ്ക്ക് പ്രഭാവമുള്ളൂ."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "നിഷ്ക്രിയമായതിനു ശേഷം ആലസ്യാവസ്ഥയിലാണെന്നു കണക്കാക്കാന്‍ എത്ര മിനിറ്റുകള്‍ കഴിയണം."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "എത്ര മിനിറ്റുകള്‍ പ്രവര്‍ത്തിച്ചതിനു ശേഷം സ്ക്രീന്‍സേവറിന്റെ പ്രമേയം മാറ്റണം."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"എത്ര മിനിറ്റുകള്‍ നിഷ്ക്രിയതിനു ശേഷം വൈദ്യുതി-നടത്തിപ്പിന് അടയാളം കാണിക്കണം. അവസ്ഥയിലെ "
+"വൈദ്യുതി-നടത്തിപ്പ് കക്ഷിയാണ് ഈ കീ സജ്ജീകരിയ്ക്കുന്നതും നോക്കിനടത്തുന്നതും."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"സ്ക്രീന്‍സേവറുപയോഗിയ്ക്കുന്ന തിരഞ്ഞെടുക്കല്‍ രീതി. സജീവമാകുമ്പോള്‍ പ്രമേയമൊന്നുമുയോഗിയ്ക്കാതെ "
+"സ്ക്രീന്‍സേവര്‍ പ്രാവര്‍ത്തികമാക്കാന്‍ \"ശൂന്യമാക്കിയാല്‍ മതി (blank-only)\" എന്നോ സജീവമാകുമ്പോള്‍ "
+"(\"പ്രമേയങ്ങള്‍ (themes)\" എന്ന കീയില്‍ വ്യക്തമാക്കിയ) ഒരേ ഒരു പ്രമേയമുപയോഗിച്ച് സ്ക്രീന്‍സേവര്‍ "
+"പ്രാവര്‍ത്തികമാക്കാന്‍ \"ഒരെണ്ണം (single)\" എന്നോ ഏതെങ്കിലുമൊരു പ്രമേയമുപയോഗിച്ച് സ്ക്രീന്‍സേവര്‍ "
+"പ്രാവര്‍ത്തികമാക്കാന്‍ \"ഏതെങ്കിലും (random)\" എന്നോ ഇതാകാം."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "പൂട്ടാനുള്ള ജാലകത്തിന്റെ പ്രമേയം"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "പൂട്ടാനുള്ള സംവാദത്തിനുപയോഗിയ്ക്കേണ്ട പ്രമേയം"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"ഈ കീ സ്ക്രീന്‍സേവര്‍ ഉപയോഗിയ്ക്കുന്ന പ്രമേയങ്ങളുടെ പട്ടിക വ്യക്തമാക്കുന്നു. \"രീതിയുടെ (mode)\" "
+"കീ \"ശൂന്യമാക്കിയാല്‍ മതി (blank-only)\" എന്നാണെങ്കില്‍ ഇത് അവഗണിയ്ക്കപ്പെടുകയും \"രീതി "
+"(mode)\" \"ഒരെണ്ണം (single)\" എന്നാണെങ്കില്‍ പ്രമേയത്തിന്റെ പേരും \"രീതി (mode)\" "
+"\"ഏതെങ്കിലും (random)\" എന്നാണെങ്കില്‍ പ്രമേയങ്ങളുടെ ഒരു പട്ടികയും നല്‍കണം."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "പൂട്ടുന്നതിനെടുക്കുന്ന സമയം"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "പുറത്തിറങ്ങാനുള്ള ഐച്ഛികത്തിനെടുക്കുന്ന സമയം"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "വൈദ്യുതി-നടത്തിപ്പിന്റെ നെല്ലിപ്പലകയിലെത്താനെടുക്കുന്ന സമയം"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "ആലസ്യാവസ്ഥയിലാണെന്ന് കണക്കാക്കാനെടുക്കുന്ന സമയം"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "പ്രമേയം മാറ്റുന്നതിനെടുക്കുന്ന സമയം"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R നായി ഒരു സന്ദേശം വയ്ക്കുക:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_റദ്ദാക്കുക"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "ഒരു സന്ദേശം _വയ്ക്കുക"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_പുറത്തിറങ്ങുക"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_മറ്റൊരുപയോക്താവാകുക"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_പൂട്ട് തുറക്കുക"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "പ്രപഞ്ചം"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "പ്രപഞ്ചത്തിന്റെ ചിത്രങ്ങളൊന്നൊന്നായി പ്രദര്‍ശിപ്പിയ്ക്കുക"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "ഗ്നോമിന്റെ കാല്‍പ്പാദമുദ്ര സ്ക്രീനിന് ചുറ്റും കുമിളകളാക്കുക"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "പാറിനടക്കുന്ന കാല്‍പ്പാദം"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "നിങ്ങളുടെ ചിത്രങ്ങളുള്ള കൂടയില്‍ നിന്നും ഒന്നൊന്നായി പ്രദര്‍ശിപ്പിയ്ക്കുക"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "ചിത്രങ്ങളുള്ള കൂട"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "ഒരു പോപ് കലാപരമായ സ്പന്ദിയ്ക്കുന്ന നിറങ്ങളുടെ ഗ്രിഡ്"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "പോപ് കലാ ചതുരങ്ങള്‍"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "ചിത്രങ്ങള്‍ നീങ്ങുന്ന വഴി കാണിയ്ക്കുക"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "ചിലപ്പോഴൊക്കെ നിങ്ങുമ്പോള്‍ ചിത്രങ്ങള്‍ തിരിയ്ക്കുക"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "ഫ്രെയിമിന്റെ നിരക്കും മറ്റ് സ്ഥിതിവിവരക്കണക്കുകളും എഴുതിക്കാണിയ്ക്കുക"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "സ്ക്രീനില്‍ സൂക്ഷിയ്ക്കേണ്ട ഏറ്റവും കൂടിയ എണ്ണം ചിത്രങ്ങള്‍"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "ജാലകത്തിന്റെ തുടക്കത്തിലെ സ്ഥാനവും വലിപ്പവും"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "വീതിxഉയരം+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "ഉപയോഗിയ്ക്കേണ്ട ചിത്രം"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "ചിത്രം - ചിത്രങ്ങള്‍ സ്ക്രീനിന് ചുറ്റും പാറിക്കിടക്കും"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. ഉപയോഗിയ്ക്കുന്നതിനെക്കുറിച്ചുള്ള വിവരത്തിനായി --help കാണുക.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "നിങ്ങള്‍ ഒരു ചിത്രം വ്യക്തമാക്കണം. ഉപയോഗിയ്ക്കുന്നതിനെക്കുറിച്ചുള്ള വിവരത്തിനായി --help കാണുക.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ചിത്രങ്ങളെടുക്കേണ്ട സ്ഥലം"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "ചിത്രങ്ങളുടെ പശ്ചാത്തലത്തിനുപയോഗിയ്ക്കേണ്ട നിറം"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "സ്ഥാനത്തു് നിന്നും ചിത്രങ്ങളെടുക്കുന്നതു് ഏതെങ്കിലുമൊക്കെ ശ്രേണിയില്‍ നിന്നല്ല"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "സ്ക്രീനില്‍ ചിത്രങ്ങള്‍ വലിച്ചു് നീട്ടാന്‍ ശ്രമിയ്ക്കരുതു്"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ഫയലുകള്‍ പകര്‍ത്തുന്നു"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "ഇവിടെ നിന്നും:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "ഇവിടെ വരെ:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "രംഗവിതാനങ്ങള്‍ പകര്‍ത്തുന്നു"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "അസാധുവായ സ്ക്രീന്‍സേവര്‍ പ്രമേയം"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s സാധുവായ ഒരു സ്ക്രീന്‍സേവര്‍ പ്രമേയമാണെന്നു തോന്നുന്നില്ല."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "%2$uയിലെ %1$u: ഫയല്‍ പകര്‍ത്തുന്നു"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "സ്ക്രീന്‍സേവറില്‍ നിന്നും നല്ലനിലയില്‍ പുറത്ത് കടക്കുന്നുതിനു കാരണമാകുന്നു"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "സ്ക്രീന്‍സേവറിന്റെ അവസ്ഥ അന്വേഷിയ്ക്കുക"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "സ്ക്രീന്‍സേവര്‍ എത്ര സമയമായി സജീവമാണെന്ന് അന്വേഷിയ്ക്കുക"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "ഉടന്‍ തന്നെ സ്ക്രീന്‍ പൂട്ടുന്നതിനായി പ്രവര്‍ത്തിച്ചുകൊണ്ടിരിക്കുന്ന സ്ക്രീന്‍സേവര്‍ പ്രക്രിയയോട് പറയുന്നു"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "സ്ക്രീന്‍സേവര്‍ സജീവമാണെങ്കില്‍ മറ്റൊരു ഗ്രാഫിക്സ് പ്രവര്‍ത്തനമാതൃകയിലേയ്ക്ക് മാറ്റുക"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "സ്ക്രീന്‍സേവര്‍ ഓണ്‍ ചെയ്യുക (സ്ക്രീന്‍ ശൂന്യമാക്കുക)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "സ്ക്രീന്‍സേവര്‍ സജീവമാണെങ്കില്‍ അതിനെ നിഷ്ക്രിയമാക്കുക (സ്ക്രീന്‍ ശൂന്യമല്ലാതാക്കുക)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "ഉപയോക്താക്കളുടെ പ്രവര്‍ത്തനം അനുകരിയ്ക്കാനായി പ്രവര്‍ത്തിച്ചുകൊണ്ടിരിയ്ക്കുന്ന സ്ക്രീന്‍സേവറിനെ തോണ്ടുക"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "സ്ക്രീന്‍സേവര്‍ സജീവമാകുന്നത് തടയുക. തടയല്‍ സജീവമാകുമ്പോള്‍ ആജ്ഞ തടസ്സപ്പെടുന്നു."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "സ്ക്രീന്‍സേവറിനെ തടയാന്‍ വിളിയ്ക്കുന്ന പ്രയോഗം"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "സ്ക്രീന്‍സേവറിനെ തടയുന്നതിനുള്ള കാരണം"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "ഈ പ്രയോഗത്തിന്റെ ലക്കം"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "%s എന്നതാണ് സ്ക്രീന്‍സേവര്‍\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "സജീവമാകുക"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "നിഷ്ക്രിയമാകുക"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "സ്ക്രീന്‍സേവര്‍ തടഞ്ഞിട്ടില്ല\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "സ്ക്രീന്‍സേവര്‍ തടയപ്പെട്ടിരിയ്ക്കുന്നതു്:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "സ്ക്രീന്‍സേവര്‍ %d സെക്കന്റുകള്‍ സജീവമായിരുന്നു.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "സ്ക്രീന്‍സേവര്‍ നിലവില്‍ സജീവമല്ല.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "പിഴവ് തിരുത്തുന്നതിന് സഹായകമായ ഔട്ട്പുട്ട് കാണിയ്ക്കുക"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "പുറത്തിറങ്ങുന്നതിനുള്ള ബട്ടണ്‍ കാണിയ്ക്കുക"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "പുറത്തിറങ്ങുന്നതിനുള്ള ബട്ടണില്‍ നിന്നും പ്രവര്‍ത്തിപ്പിയ്ക്കുന്നതിനായുളള ആജ്ഞ"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "മറ്റൊരു ഉപയോക്താവായി മാറുന്നതിനുളള ബട്ടണ്‍ കാണിയ്ക്കുക"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "ജാലകത്തില്‍ കാണിയ്ക്കേണ്ട സന്ദേശം"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "സന്ദേശം"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "ഉപയോഗിച്ചിട്ടില്ല"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ഉപയോക്താവിന്റെ പേര്:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "അടയാളവാക്ക്:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "നിങ്ങളുടെ അടയാളവാക്ക് ഉടന്‍ തന്നെ മാറ്റേണ്ടതാകുന്നു (അടയാളവാക്ക് പഴയതായിരിക്കുന്നു)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "നിങ്ങളുടെ അടയാളവാക്ക് ഉടന്‍ തന്നെ മാറ്റേണ്ടതാകുന്നു (റൂട്ട് നിര്‍ബന്ധിതമാക്കിയത്)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"നിങ്ങളുടെ അക്കൌണ്ടിന്റെ കാലാവധി കഴിഞ്ഞിരിക്കുന്നു; ദയവായി നിങ്ങളുടെ സിസ്റ്റം "
+"നടത്തിപ്പുകാരനുമായി ബന്ധപ്പെടുക"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "അടയാളവാക്കൊന്നും നല്‍കിയിട്ടില്ല"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "അടയാളവാക്ക് മാറിയിട്ടില്ല"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "ഉപയോക്താവിന്റെ പേര് ലഭിച്ചില്ല"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "പുതിയ യുണിക്സ് അടയാളവാക്ക് വീണ്ടും നല്‍കുക:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "പുതിയ യുണിക്സ് അടയാളവാക്ക് നല്‍കുക:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(നിലവിലുളള) യുണിക്സ് അടയാളവാക്ക്:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "എന്‍ഐഎസ് അടയാളവാക്ക് മാറ്റുന്നതിനിടയില്‍ തെറ്റ്."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "ഇതിലും വലിയൊരു അടയാളവാക്ക് തിരഞ്ഞെടുക്കേണ്ടതാണ്"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "അടയാളവാക്ക് നേരത്തെ ഉപയോഗിച്ചതാണ്. മറ്റൊന്ന് തിരഞ്ഞെടുക്കുക."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "നിങ്ങളുടെ അടയാളവാക്ക് മാറ്റുന്നതിനായി ഇനിയും കാത്തിരിയ്ക്കേണ്ടതാണ്"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "ക്ഷമിക്കണം, അടയാളവാക്കുകള്‍ തമ്മില്‍ പൊരുത്തമില്ല"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "പരിശോധനയില്‍..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "തിരിച്ചറിയല്‍ പരാജയപ്പെട്ടു."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "ശൂന്യമായ സ്ക്രീന്‍"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "ഏതെങ്കിലുമൊന്ന്"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d മണിക്കൂര്‍"
+msgstr[1] "%d മണിക്കൂറുകള്‍"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d നിമിഷം"
+msgstr[1] "%d നിമിഷങ്ങള്‍"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d സെക്കന്‍ഡ്"
+msgstr[1] "%d സെക്കന്‍ഡുകള്‍"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "ഒരിക്കലുമില്ല"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "പ്രധാന വിനിമയതലം ചേര്‍ക്കുവാന്‍ സാധിച്ചില്ല"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "സ്ക്രീന്‍സേവര്‍ ശരിയായിട്ടാണ് ഇന്‍സ്റ്റാള്‍ ചെയ്തിട്ടുളളത് എന്നുറപ്പ് വരുത്തുക"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ഒരു നിരന്തരപ്രക്രിയയാകേണ്ടതില്ല"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "പിഴവ് തിരുത്തുന്നതിന് സഹായകമായ കോഡ് പ്രവര്‍ത്തികമാക്കുക"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "സ്ക്രീന്‍ സേവറും ലോക്കര്‍ പ്രോഗ്രാം ലഭ്യമാക്കുക"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%2$s :%1$s എന്ന സേവനം സ്ഥാപിയ്ക്കുവാന്‍ സാധ്യമായില്ല\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s എന്ന് സജ്ജീകരിയ്ക്കുവാന്‍ സാധ്യമല്ല"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "അടയാളവാക്ക് തെറ്റാണ്."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "ഈ സമയത്ത് പ്രവേശനത്തിനുളള അനുമതിയില്ല."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "സിസ്റ്റത്തിലേക്ക് ഇനി പ്രവേശിക്കുന്നതിനുളള അനുമതിയില്ല."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "മെസ്സേജ് ബസ്സുമായി രജിസ്ടര്‍ ചെയ്യുന്നതില്‍ പരാജയപ്പെട്ടു"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "മെസ്സേജ് ബസ്സുമായി ബന്ധിപ്പിച്ചിട്ടില്ല"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "ഈ സെഷനില്‍ സ്ക്രീന്‍സേവര്‍ പ്രവര്‍ത്തനത്തിലാണ്"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "സമയം കഴിഞ്ഞിരിക്കുന്നു."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "നിങ്ങളുടെ കാപ്സ് ലോക്ക് കീ ഓണ്‍ ആണ്."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_മറ്റൊരു ഉപയോക്താവാകുക..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_പുറത്തിറങ്ങുക"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%h ല്‍ %U"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_അടയാളവാക്ക്:"
+
diff --git a/po/mn.po b/po/mn.po
new file mode 100644
index 0000000..ade31b9
--- /dev/null
+++ b/po/mn.po
@@ -0,0 +1,957 @@
+# translation of mn.po to Mongolian
+# translation of screensever.po to Mongolian
+# translation of PACKAGE.
+# Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# <>, 2006.
+# Badral <badral at openmn.org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mn\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-08-14 23:51+0200\n"
+"PO-Revision-Date: 2006-08-15 00:03+0200\n"
+"Last-Translator: Badral <badral at openmn.org>\n"
+"Language-Team: Mongolian <openmn-translation at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Дэлгэц гамнагч"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Дэлгэц гамнагчийн тохиргоонуудыг байрлуул."
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Дэлгэц гамнагчийг урьдчилан харах</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Анхааруулга: Дэлгэц эзэн (root) хэрэглэгчээр түгжигдэхгүй.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Regard the computer as _idle after:"
+msgstr "Дараа нь компютерийг чөлөөтэй гэж үз."
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Screensaver Preferences"
+msgstr "Дэлгэц гамнагчийн Tохиргоонууд"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preview"
+msgstr "Дэлгэц гамнагч урьдчилан харах"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "_Activate screensaver when computer is idle"
+msgstr ""
+"Комьпютер дээр ямар нэг үйлдэл хийлгүй тодорхой хугацаа өнгөрөхөд скринсевер "
+"_идэвхиждэг."
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Lock screen when screensaver is active"
+msgstr "_Дэлгэц гамнагч идэвхитэй байх үед дэлгэц түгжигддэг"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Preview"
+msgstr "_Урьдчилан харах"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Screensaver theme:"
+msgstr "_Дэлгэц гамнагчийн сэдэв"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver themes"
+msgstr "_Дэлгэц гамнагчийн загварууд"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "_Дэлгэц гамнагчүүд"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Үйлдэл хийгдээгүй үед идэвхждэг"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Гарахыг зөвшөөрөх"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Хэрэглэгч шилжүүлэхийг зөвшөөрөх"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "Embedded гарын тушаал"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "Түгжээ идэвхижих"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "Гарах команд"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Screensaver theme selection mode"
+msgstr "Дэлгэц гамнагчийн загвар сонголт"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Хэрвээ тодорхой хугацаанд үйлдэл хийгдэхгүй бол скринсеверийг "
+"идэвхижүүлэхийн тулд ҮНЭН-д байрлуулна."
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Дэлгэц гамнагч идэвхижиж дэлгэцийг түгжихэд ҮНЭН-д байрлуулна."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Сонголтонд байгаа түгжээгүй үйлдлийг өөр хэрэглэгчтэй холбоход ҮНЭН-д "
+"байрлуулна."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Сонголтонд байгаа түгжээгүй үйлдлийг саатлын дараах гаралт руу оруулахад "
+"ҮНЭН-д байрлуулна. Саатал нь \"гарах_боломжгүй\" түлхүүрт тусгагдана."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Гарах товчлуурыг дарахад комманд ажиллаж эхэлнэ. Энэ комманд нь хэрэглэгчийг "
+"ямар нэг нөлөөгүйгээр хялбар гарах боломжийг өгдөг. Зөвхөн \"гарах_боломжтой"
+"\" түлхүүр ҮНЭН-д байгаа үед энэ түлхүүр нөлөөтэй."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "Дэлгэц түгжигдэхийн өмнө скринсевер идэвхижсэний дараах минутын тоо "
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Сонголтод байгаа түгжээгүй үйлдлийн үед гарч болох гарахын өмнөх скринсевер "
+"идэвхижсэний дараах минутын тоо. Зөвхөн \"гарах_боломжтой\" түлхүүр ҮНЭН-д "
+"байгаа үед энэ түлхүүр нөлөөтэй.."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Үйлдэл хийх боломжгүй байх үеээс өмнөх идэвхигүй байх минутын тоо."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Дэлгэц гамнагчийн загвар өөрчлөгдөхийн өмнөх ажиллах минутын тоо."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Дэлгэц гамнагч энэ сонголтын хэлбэрийг хэрэглэдэг. \"зөвхөн_хар\" үед ямар "
+"нэг идэвхижүүлэх загвар хэрэглэхгүйгээр скринсевер ажиллах боломжтой, \"ганц"
+"\" үед зөвхөн (\"загварууд\" түлхүүрийн) идэвхижүүлэх загварыг хэрэглэснээр "
+"скринсевер ажиллах боломжтой, \"тохиолдлын\" нь идэвхижүүлэх тохиолдлын "
+"загвар хэрэглэн скринсеверт ажиллах боломж олгоно."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "Theme for lock dialog"
+msgstr "Түгжигдсэн үйлдлийн сэдэв"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "Theme to use for the lock dialog."
+msgstr "Түгжигдсэн үйлдлийг хэрэглэх загвар"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Энэ бол скринсеверт хэрэглэдэг загварын жагсаалтны түлхүүр. Энэ нь \"загвар"
+"\" түлхүүр нь \"зөвхөн-хар\" байх үед үгүйсгэгддэг бөгөөд \"загвар\" түлхүүр "
+"\"ганц\" бол загварын нэр ажиллахад бэлэн, хэрвээ \"загвар\" нь \"тохиолдлын"
+"\" бол загварын жагсаалт ажиллахад бэлэн байна."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Time before activation"
+msgstr "Идэвхижихийн өмнөх хугацаа"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Time before locking"
+msgstr "Түгжихийн өмнөх хугацаа"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "Time before logout option"
+msgstr "Сонголтоос гарахын өмнөх хугацаа"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before theme change"
+msgstr "Загварыг өөрчлөхөөс өмнөх хугацаа"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:5 ../src/mate-screensaver-dialog.c:172
+#: ../src/mate-screensaver-dialog.c:173
+msgid "Password:"
+msgstr "Нууц үг:"
+
+#: ../data/lock-dialog-default.glade.h:6 ../src/gs-lock-plug.c:1703
+msgid "S_witch to user:"
+msgstr "Хэрэглэгч рүү _шилжих"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Буцах"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Log Out"
+msgstr "_Гарах"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Switch User..."
+msgstr "_Хэрэглэгч Шилжүүлэх..."
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch user..."
+msgstr "_Хэрэглэгч Шилжүүлэх..."
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1432
+msgid "_Unlock"
+msgstr "_Онгойлгох"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Дэлгэцний доор хөлний лого бүхий MATE-г гаргах."
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Хөлийг ашиглалтанд оруулах"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Сансар"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Сансрын зургуудын слайдыг үзүүлэх"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Таны Зургийн хавтаснаас слайдыг харуулах"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Зурийн хавтас"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Шаргал өнгийн pop-art-ish grid хүснэг"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Тэгш өнцөгтийн pop хэлбэр"
+
+#: ../savers/floaters.c:1166
+msgid "show paths that images follow"
+msgstr "Зургуудын явах замыг харуулах"
+
+#: ../savers/floaters.c:1173
+msgid "occasionally rotate images as they move"
+msgstr "Хөдөлж байгаагаар зургийг хөдөлгөх"
+
+#: ../savers/floaters.c:1180
+msgid "print out frame rate and other statistics"
+msgstr "Тоон үзүүлэлт ба хэмжээг харуулна уу."
+
+#: ../savers/floaters.c:1188
+msgid "the maximum number of images to keep on screen"
+msgstr "дэлгэцэнд хадгалах зургуудын хамгийн их дугаар"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1192
+msgid "N"
+msgstr "N"
+
+#: ../savers/floaters.c:1199
+msgid "the source image to use"
+msgstr "хэрэглэх зургуудын нөөц"
+
+#: ../savers/floaters.c:1206
+msgid "the initial size and position of window"
+msgstr "Цонхны үндсэн хэмжээ ба байрлал"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1211
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1229
+msgid "image - floats images around the screen"
+msgstr "Зураг - дэлгэцэн дэх зургуудыг ашиглалтанд оруулах"
+
+#: ../savers/floaters.c:1239
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Хэрэглэх зааврыг харна уу.\n"
+
+#: ../savers/floaters.c:1248
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Та нэг зургийг сонгох хэрэгтэй. Та хэрэглэх зааврыг харна уу.\n"
+
+#: ../savers/slideshow.c:47
+msgid "Location to get images from"
+msgstr "Зурагнууд руу орох байрлал"
+
+#: ../savers/slideshow.c:47
+msgid "PATH"
+msgstr "ЗАМ"
+
+#: ../src/cut-n-paste/fusa-display.c:119 ../src/cut-n-paste/fusa-user.c:150
+msgid "Manager"
+msgstr "Зохицуулагч"
+
+#: ../src/cut-n-paste/fusa-display.c:120
+msgid "The manager which owns this object."
+msgstr "Энэ объектыг эзэмшдэг менежер."
+
+#: ../src/cut-n-paste/fusa-display.c:127
+msgid "Name"
+msgstr "Нэр"
+
+#: ../src/cut-n-paste/fusa-display.c:128
+msgid "The name of the X11 display this object refers to."
+msgstr "Энэ обьектэд хамаарах X11 дэлгэцийн нэр."
+
+#: ../src/cut-n-paste/fusa-display.c:134
+#: ../src/cut-n-paste/fusa-user-menu-item.c:163
+msgid "User"
+msgstr "Хэрэглэгч"
+
+#: ../src/cut-n-paste/fusa-display.c:135
+msgid "The user currently logged in on this virtual terminal."
+msgstr "Одоогоор терминальд байгаа хэрэглэгч."
+
+#: ../src/cut-n-paste/fusa-display.c:141
+msgid "Console"
+msgstr "Консол"
+
+#: ../src/cut-n-paste/fusa-display.c:142
+msgid "The number of the virtual console this display can be found on, or %-1."
+msgstr "Дэлгэцийн консолын дугаар одохгүй байна, эсвэл %-1."
+
+#: ../src/cut-n-paste/fusa-display.c:148
+msgid "Nested"
+msgstr "Үүрлэсэн"
+
+#: ../src/cut-n-paste/fusa-display.c:149
+msgid "Whether or not this display is a windowed (Xnest) display."
+msgstr "Цонхтой (Xnest) дэлгэц энэ дэлгэц мөн эсэх"
+
+#: ../src/cut-n-paste/fusa-manager.c:1453
+msgid "The display manager could not be contacted for unknown reasons."
+msgstr "Үл мэдэгдэх шалтгааны улмаас дэлгэц зохицуулагч холбогдож чадахгүй байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1460
+msgid "The display manager is not running or too old."
+msgstr "Дэлгэц зохицуулагч ажиллахгүй байна эсвэл хэтэрхий хуучин байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1463
+msgid "The configured limit of flexible servers has been reached."
+msgstr "Уян хатан серверийн тохируулга хязгаартаа хүрсэн байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1466
+msgid "There was an unknown error starting X."
+msgstr "Тэнд X эхлүүлэх үл мэдэгдэх алдаа байсан."
+
+#: ../src/cut-n-paste/fusa-manager.c:1469
+msgid "The X server failed to finish starting."
+msgstr "Дуусах үйлдэл эхлэхэд X серверт алдаа гарлаа."
+
+#: ../src/cut-n-paste/fusa-manager.c:1472
+msgid "There are too many X sessions running."
+msgstr "Ажиллаж буй маш олон үйлдлүүд байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1475
+msgid "The nested X server (Xnest) cannot connect to your current X server."
+msgstr ""
+"Үүрлэсэн X сервер (Xnest) нь таны одоогийн X серверт холбогдож чадахгүй "
+"байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1478
+msgid "The X server in the MDM configuration could not be found."
+msgstr "MDM тохируулгын X сервер олдохгүй байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1481 ../src/cut-n-paste/mdmcomm.c:492
+msgid ""
+"Trying to set an unknown logout action, or trying to set a logout action "
+"which is not available."
+msgstr ""
+"Үл мэдэгдэх холболтоос гарах ажиллагааг үргэлжлүүлэх, эсвэл боломжгүй байгаа "
+"холболтоос гарах ажиллагааг үргэлжлүүлэх."
+
+#: ../src/cut-n-paste/fusa-manager.c:1484 ../src/cut-n-paste/mdmcomm.c:495
+msgid "Virtual terminals not supported."
+msgstr "Терминалиуд таарахгүй байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1487
+msgid "Invalid virtual terminal number."
+msgstr "Терминалууд ажиллах боломжгүй байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1490 ../src/cut-n-paste/mdmcomm.c:499
+msgid "Trying to update an unsupported configuration key."
+msgstr "Дэмжлэггүй тохиргооны түлхүүрийг идэвхижүүлэх"
+
+#: ../src/cut-n-paste/fusa-manager.c:1493
+msgid "~/.Xauthority file badly configured or missing."
+msgstr "~/.Xauthority файл буруу тохируулагдсан эсвэл байхгүй байна."
+
+#: ../src/cut-n-paste/fusa-manager.c:1496
+msgid "Too many messages were sent to the display manager, and it hung up."
+msgstr ""
+"Дэлгэц зохицуулагч руу маш олон мессэж илгээснээс тэр нь эмх замбараагүй "
+"болно."
+
+#: ../src/cut-n-paste/fusa-manager.c:1500
+msgid "The display manager sent an unknown error message."
+msgstr "Дэлгэц зохицуулагч нь үл мэдэгдэх алдааны мессэжийг илгээсэн байна."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:164
+msgid "The user this menu item represents."
+msgstr "Хэрэглэгч энэ цэсийн төрлийг илэрхийлнэ."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:171
+msgid "Icon Size"
+msgstr "Дүрсийн хэмжээ"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:172
+msgid "The size of the icon to use."
+msgstr "Ашиглах дүрсийн хэмжээ."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:178
+msgid "Indicator Size"
+msgstr "Заагчийн хэмжээ‫"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:179
+msgid "Size of check indicator"
+msgstr "Заагчийг шалгах хэмжээ"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:184
+msgid "Indicator Spacing"
+msgstr "Заагчийн зай"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:185
+msgid "Space between the username and the indicator"
+msgstr "Заагч ба хэрэглэгчийн нэр хоорондын зай"
+
+#: ../src/cut-n-paste/fusa-user.c:151
+msgid "The user manager object this user is controlled by."
+msgstr "Энэ хэрэглэгч нь обьектын хэрэглэгч зохицуулагчаар хянагддаг."
+
+#: ../src/cut-n-paste/fusa-utils.c:80
+msgid "Show Details"
+msgstr "Хэсэгчилж үзүүлэх"
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:413
+msgid "MDM (The MATE Display Manager) is not running."
+msgstr "MDM (MATE дэлгэц зохицуулагч) нь ажиллахгүй байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:416
+msgid ""
+"You might in fact be using a different display manager, such as KDM (KDE "
+"Display Manager) or xdm."
+msgstr ""
+"Та өөр өөр дэлгэцийн зохицуулалтыг ашиглаж болно, жишээлбэл KDM (KDE \" "
+"дэлгэц зохицуулагч) эсвэл xdm."
+
+#: ../src/cut-n-paste/mdmcomm.c:419
+msgid ""
+"If you still wish to use this feature, either start MDM yourself or ask your "
+"system administrator to start MDM."
+msgstr ""
+"Хэрвээ та энэ онцлогийг ашиглахыг хүсч байвал MDM-ийг та өөрөө эхлүүлэх "
+"эсвэл MDM-ийг эхлүүлэхийн тулд өөрийнхөө \"систем администратороос асууна."
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:441
+msgid "Cannot communicate with MDM (The MATE Display Manager)"
+msgstr "MDM-тэй холбогдож чадахгүй байна.(MATE дэлгэц зохицуулагч)"
+
+#: ../src/cut-n-paste/mdmcomm.c:444
+msgid "Perhaps you have an old version of MDM running."
+msgstr "Магадгүй та MDM-ийн хуучин хувилбарыг ажиллуулж байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:463 ../src/cut-n-paste/mdmcomm.c:466
+msgid "Cannot communicate with mdm, perhaps you have an old version running."
+msgstr ""
+"Ggm-тэй холбогдож чадахгүй байна, магадгүй та хуучин хувилбар дээр ажиллаж "
+"байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:469
+msgid "The allowed limit of flexible X servers reached."
+msgstr "Үян хатан X серверийн зөвшөөрөгдсөн хугацаа хүрсэн байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:471
+msgid "There were errors trying to start the X server."
+msgstr "X серверийг эхлүүлэхэд алдаанууд байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:473
+msgid "The X server failed.  Perhaps it is not configured well."
+msgstr "X сервер эвдэрсэн байна.  Магадгүй энэ нь сайн тохируулагдаагүй байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:476
+msgid "Too many X sessions running."
+msgstr "Маш олон X үйлдлүүд ажиллаж байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:478
+msgid ""
+"The nested X server (Xnest) cannot connect to your current X server.  You "
+"may be missing an X authorization file."
+msgstr ""
+"Үүрлэсэн X сервер (Xnest) таны одоогийн X серверт холбогдож чадахгүй. Танд "
+"магадгүй X зөвшөөрлийн файл байхгүй."
+
+#: ../src/cut-n-paste/mdmcomm.c:483
+msgid ""
+"The nested X server (Xnest) is not available, or mdm is badly configured.\n"
+"Please install the Xnest package in order to use the nested login."
+msgstr ""
+"Үүрлэсэн X сервер (X nest) нь ажиллах боломжгүй эсвэл mdm нь муу "
+"тохируулагдсан.\n"
+"Үүрлэсэн логин ашиглах зорилгоор X nest багцыг суулгана уу."
+
+#: ../src/cut-n-paste/mdmcomm.c:488
+msgid "The X server is not available, it is likely that mdm is badly configured."
+msgstr "X сервер бэлэн биш байна, магадгүй mdm муу тохируулагдсантай холбоотой."
+
+#: ../src/cut-n-paste/mdmcomm.c:497
+msgid "Trying to change to an invalid virtual terminal number."
+msgstr "Ажиллах боломжгүй теминалуудыг өөрчлөхийг оролдож байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:501
+msgid ""
+"You do not seem to have authentication needed be for this operation.  "
+"Perhaps your .Xauthority file is not set up correctly."
+msgstr ""
+"Танд энэ үйл ажиллагааг эхлэхэд хэрэгтэй баталгаа байхгүй байна. Магадгүй "
+"таны Xauthority файл буруу суулгагдсан."
+
+#: ../src/cut-n-paste/mdmcomm.c:505
+msgid "Too many messages were sent to mdm and it hung upon us."
+msgstr "MDM рүү маш олон мессэжүүдийг илгээсэн байна."
+
+#: ../src/cut-n-paste/mdmcomm.c:508
+msgid "Unknown error occurred."
+msgstr "Үл мэдэгдэх алдаа гарлаа."
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Файлыг хуулж байна:%u, %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "'%s'-ийг хуулж байна"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "URI-aaс"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "URI зөөгдөж байна."
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "URI руу"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "URI зөөгдөж байна."
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "Хэсгүүд бүрдсэн."
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "Зөөврийн хэсгүүд бүрдлээ."
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "Одоогийн URl индекс"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "Одоогийн URl индекс - 1-ээс эхлэнэ"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "Нийт URL-ууд"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "URI-уудын нийт тоо"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "Файлуудыг хуулж байна"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "Хэнээс:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "Хэнд:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "Холбогдож байна..."
+
+#: ../src/mate-screensaver-command.c:61
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Скринсэвэрийг хаах шалтгаан"
+
+#: ../src/mate-screensaver-command.c:63
+msgid "Query the state of the screensaver"
+msgstr "Дэлгэц гамнагчийн байдлыг асууна уу"
+
+#: ../src/mate-screensaver-command.c:65
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Ажиллаж байгаа скринсевер дэлгэцийг хурдан түгжихийг сануулж байна."
+
+#: ../src/mate-screensaver-command.c:67
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Хэрвээ скринсевер идэвхитэй бол өөр график демо-д холбох."
+
+#: ../src/mate-screensaver-command.c:69
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "сринсеверийг асаах (хар дэлгэц)"
+
+#: ../src/mate-screensaver-command.c:71
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Хэрвээ скринсевер идэвхитэй бол түүнийг идэвхигүйжүүлэх (дэлгэцийг "
+"харлуулахгүй)"
+
+#: ../src/mate-screensaver-command.c:73
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Хэрэглэгчийн үйл ажиллагааг ажилллаж байгаа скринсеверээр идэхижүүл."
+
+#: ../src/mate-screensaver-command.c:75
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:77
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Дэпгэц гамнагч барих програм дуудалт"
+
+#: ../src/mate-screensaver-command.c:79
+msgid "The reason for inhibiting the screensaver"
+msgstr "Дэлгэц гамнагчийн барих шалтгаан"
+
+#: ../src/mate-screensaver-command.c:81 ../src/mate-screensaver-dialog.c:54
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Энэ програмын хувилбар"
+
+#: ../src/mate-screensaver-command.c:246
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Дэлгэц гамнагч %s байна\n"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "active"
+msgstr "идэвхтэй"
+
+#: ../src/mate-screensaver-command.c:246
+msgid "inactive"
+msgstr "идэвхгүй"
+
+#: ../src/mate-screensaver-dialog.c:52
+msgid "Show debugging output"
+msgstr "Шалгах гарцыг харуулах"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show the logout button"
+msgstr "Гарах товчлуурыг харуулах"
+
+#: ../src/mate-screensaver-dialog.c:58
+msgid "Command to invoke from the logout button"
+msgstr "Гарах товчлуурыг дуудах комманд"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the switch user button"
+msgstr "Хэрэглэгч шилжүүлэгч товчлуурыг харуулах"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:169 ../src/mate-screensaver-dialog.c:170
+#: ../src/mate-screensaver-dialog.c:171 ../src/gs-auth-pam.c:380
+msgid "Username:"
+msgstr "Хэрэглэгч:"
+
+#: ../src/mate-screensaver-dialog.c:174
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Та нууц үгээ дариу солих шаардлагатай (нууц үг хуучирсан)"
+
+#: ../src/mate-screensaver-dialog.c:175
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Та нууц үгээ дариу солих шаардлагатай (root шаардсан)"
+
+#: ../src/mate-screensaver-dialog.c:176
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Таны дансны хугацаа дууссан; Системийн админ руу хандана уу"
+
+#: ../src/mate-screensaver-dialog.c:177
+msgid "No password supplied"
+msgstr "Нууц үг нийлүүлэгдсэнгүй"
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "Password unchanged"
+msgstr "Нууц үг өөрчилөгдсөнгүй"
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "Can not get username"
+msgstr "Хэрэглэгчийн нэрийг авах боломжгүй"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Retype new UNIX password:"
+msgstr "Шинэ UNIX нууц үгээ давтана уу:"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "Enter new UNIX password:"
+msgstr "Шинэ UNIX нууц үг оруул:"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "(current) UNIX password:"
+msgstr "(идэвхтэй) UNIX нууц үг:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "Error while changing NIS password."
+msgstr "NIS нууц үг сольж байхад алдаа."
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You must choose a longer password"
+msgstr "Та илүү урт нууц үг сонгох ёстой"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Password has been already used. Choose another."
+msgstr "Нууц үг хэдийнэ хэрэглэгдсэн. Өөрийг сонгоно уу."
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "You must wait longer to change your password"
+msgstr "Та нууц үгээ солихдоо удаан хүлээх ёстой"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Sorry, passwords do not match"
+msgstr "Уучилаарай, нууц үг таарахгүй байна"
+
+#: ../src/mate-screensaver-dialog.c:250
+msgid "Checking..."
+msgstr "Шалгаж байна..."
+
+#: ../src/mate-screensaver-dialog.c:289 ../src/gs-auth-pam.c:320
+msgid "Authentication failed."
+msgstr "Баталгаажуулалт амжилтгүй."
+
+#: ../src/mate-screensaver-preferences.c:439
+msgid "Blank screen"
+msgstr "Хар  дэлгэц"
+
+#: ../src/mate-screensaver-preferences.c:445
+msgid "Random"
+msgstr "Тохиолдлын"
+
+#: ../src/mate-screensaver-preferences.c:805
+msgid "Invalid screensaver theme"
+msgstr "Дэлгэц гамнагчийн загвар нээгдэхгүй байна"
+
+#: ../src/mate-screensaver-preferences.c:808
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "Энэ файл хүчинтэй скринсеверийн загвар болж чадахгүй."
+
+#: ../src/mate-screensaver-preferences.c:935
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d цаг"
+msgstr[1] "%d цаг"
+
+#: ../src/mate-screensaver-preferences.c:938
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d минут"
+msgstr[1] "%d минут"
+
+#: ../src/mate-screensaver-preferences.c:941
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d секунд"
+msgstr[1] "%d секунд"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:947
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:950
+#: ../src/mate-screensaver-preferences.c:958
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:953
+#: ../src/mate-screensaver-preferences.c:961
+#: ../src/mate-screensaver-preferences.c:965
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:980
+msgid "Never"
+msgstr "Хэзээ ч үгүй"
+
+#: ../src/mate-screensaver-preferences.c:1365
+msgid "Could not load the main interface"
+msgstr "Гол интерфейс ачаалагдсангүй."
+
+#: ../src/mate-screensaver-preferences.c:1367
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Дэлгэц гамнагч зөв суусан эсэхийг шалгана уу."
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Сервер программ болохгүй байна."
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Шалгах код идэвхижүүлэх."
+
+#: ../src/gs-auth-pam.c:262
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Сервис %s үүсгэх боломжгүй: %s\n"
+
+#: ../src/gs-auth-pam.c:288
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s оноож чадахгүй байна"
+
+#: ../src/gs-auth-pam.c:318
+msgid "Incorrect password."
+msgstr "Буруу нууц үг..."
+
+#: ../src/gs-auth-pam.c:334
+msgid "Not permitted to gain access at this time."
+msgstr "Энэ хугацаанд хандах эрх олгогдоогүй."
+
+#: ../src/gs-auth-pam.c:340
+msgid "No longer permitted to access the system."
+msgstr "Систем рүү хандах эрх олгогдохгүй."
+
+#: ../src/gs-listener-dbus.c:1631
+msgid "failed to register with the message bus"
+msgstr "Мэдээллийн сувгийг танихгүй байна."
+
+#: ../src/gs-listener-dbus.c:1641
+msgid "not connected to the message bus"
+msgstr "Мессэжид холбогдсонгүй"
+
+#: ../src/gs-listener-dbus.c:1650
+msgid "screensaver already running in this session"
+msgstr "Дэлгэц гамнагч ажиллаж байна"
+
+#: ../src/gs-lock-plug.c:336
+msgid "Time has expired."
+msgstr "Хугацаа дууссан байна."
+
+#: ../src/gs-lock-plug.c:366
+msgid "You have the Caps Lock key on."
+msgstr "Таны Caps Lock түлхүүр асаалттай байна."
+
+#: ../src/gs-lock-plug.c:1414 ../src/gs-lock-plug.c:1451
+msgid "S_witch User..."
+msgstr "Хэрэглэгч _шилжүүлэх..."
+
+#: ../src/gs-lock-plug.c:1422
+msgid "Log _Out"
+msgstr "_Гарах"
+
+#: ../src/gs-lock-plug.c:1613
+msgid "%U on %h"
+msgstr "%U %h дээр"
+
+#: ../src/gs-lock-plug.c:1627
+msgid "_Password:"
+msgstr "_Нууц үг:"
+
diff --git a/po/mr.po b/po/mr.po
new file mode 100644
index 0000000..c53ff0e
--- /dev/null
+++ b/po/mr.po
@@ -0,0 +1,752 @@
+# translation of mr.po to Marathi
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Sandeep Shedmake <sandeep.shedmake at gmail.com>, 2008, 2009.
+# Sandeep Shedmake <sshedmak at redhat.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mr\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-09-12 14:13+0530\n"
+"Last-Translator: Sandeep Shedmake <sshedmak at redhat.com>\n"
+"Language-Team: Marathi <fedora-trans-mr at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "स्क्रीनसेवर"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "तुमची स्क्रीनसेवर प्राधान्यता निश्चित करा"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>स्क्रीनसेवर पूर्वदृश्य</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>सावधान: पडदा रूट वापरकर्त्यास कुलूपबंद केले जाणार नाही.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "पॉवर व्यवस्थापन (_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "संगणकास ठराविक वेळे नंतर निकामी असे गृहीत धरा (_i):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "स्क्रीनसेवर प्राधान्यता"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "स्क्रीनसेवर पूर्वदृश्य"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "संगणक निष्क्रीय असल्यावर स्क्रीनसेवर सक्रीय करा (_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "स्क्रीनसेवर स्क्रीय असल्यावर पडदा कुलूपबंद करा (_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "पूर्वदृश्य (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "स्क्रीनसेवर सुत्रयोजना (_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "स्क्रीनसेवर सुत्रयोजना"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "स्क्रीनसेवर"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "निष्क्रीय असल्यावर सक्रीय करा"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "चौकट मध्ये कळफलक अंतर्भूत करण्यास परवानगी द्या"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "वापरकर्ता बदलणे स्वीकारा"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "प्रदर्शित करण्याजोगी सत्र स्थिती संदेश स्वीकारा"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "पडदा कुलूपबंद केल्यावर प्रदर्शित करण्याजोगी सत्र स्थिती संदेश स्वीकारा."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "वापरकर्ता बदलाव करीता सहमती द्या"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "अंतर्भूत कळफलक आदेश"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "सक्रीय केल्यावर कुलूपबंद करा"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "लॉगआउट आदेश"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "स्क्रीनसेवर सुत्रयोजना निवड पध्दती"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "सत्र निष्क्रीय अल्यावर स्क्रीनसेवर सक्रीय करीता यास खरे निश्चित करा."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"कुलूप उघडण्यापूर्वी चौकटीत कळफलक अंतर्भूत करण्यापूर्वी या खरे असे निश्चित करा. \"कळफलक_आदेश"
+"\" कळ योग्य आदेश द्वारे निश्चित केले पाहिजे."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "स्क्रीनसेवर सक्रीय केल्यावर पडदा कुलूपबंद करण्याकरीता यास खरे निश्चित करा."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"कुलूप उघडा संवाद मध्ये अन्य वापरकर्ता खातेवर जायचे असल्यास व पर्याय सूचवायचे असल्यास यास "
+"खरे निश्चित करा."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"विलंब नंतर कुलूपबंद संवाद उघडणे पर्याय अंतर्गत पर्याय दर्शविण्याकरीता यास खरे असे निश्चित "
+"करा. विलंब  \"logout_delay\" कि अंतर्गत निर्देशीत केले गेले आहे."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"चौकट मध्ये अंतर्भूत करण्याजोगी कळफलक नियंत्रण घटक करीता \"embedded_keyboard_enabled"
+"\" किल्ली खरे असल्यास, या आदेश कार्यरत केला जाईल. या आदेशाने XEMBED प्लग संवाद कार्यरत "
+"केले पाहिजे व मानक आउटपुटवर चौकट XID आउटपुट स्वरूपी दर्शविले पाहिजे."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"लॉगआउट बटण क्लीक केल्यावर प्रारंभ करायचे ते आदेश. विना कुठल्याही प्रकारच्या संवादने या "
+"आदेशाने वापरकर्त्यास लॉगआउट केले पाहिजे. \"logout_enable\" किल्ली खरे अल्यावरच या "
+"किल्लीचा प्रभाव प्रडतो."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "पडदा कुलूपबंद करण्यापूर्वी व स्क्रीनसेवर सक्रीयकेल्यानंतर लागणारी मिनीटं."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"स्क्रीनसेवर सक्रीय झाल्यावर व कुलूप उघडा संवाद मध्ये लॉगआउट पर्याय दर्शविण्यापूर्वी, "
+"लागणारी मिनीटं . \"logout_enable\" किल्ली खरे अल्यावरच या किल्लीचा प्रभाव प्रडतो."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "सत्र रिकामे गृहीत धरण्यापूर्वी निष्क्रीयता काळचे मिनीटं मधील वेळ."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "सेक्रीनसेवर सुत्रयोजना बदलिवण्यापूर्वी चालविण्याकरीताचे मिनीटं मधील वेळ."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"पॉवर-व्यवस्थापन करीता संकेत देण्यापूर्वी निष्क्रीयताचे सेकंद मधील वेळ. ही किल्ली सत्र पॉवर-"
+"व्यवस्थापन घटक द्वारे निश्चित व नियंत्रीत केली जाते."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"स्क्रीनसेवर द्वारे वापरलेली निवड पध्दती. सक्रीय केल्यावर सुत्रयोजनाचा वापर विना स्क्रीनसेवर "
+"कार्यन्वीत करीता \"फक्त-रिकामी\" वापरा, सक्रीय केल्यावर (\"सुत्रयोजना\" किल्ली) एकच "
+"सुत्रयोजनाचा वापर करीता \"एकमेव\" वापरा, व सक्रीय केल्यावर विनाक्रमीत सुत्रयोजनाचा "
+"वापर करीता \"विनाक्रम\" चा वापर करा."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "कुलूपबंद करा संवाद करीताचे सुत्रयोजना"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "कुलूपबंद संवाद करीता वापरण्याजोगी सुत्रयोजना."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"ही किल्ली सक्रीनसेवर द्वारे वापरण्याजोगी सुत्रयोजनाची यादी निर्देशीत करते. ignored when "
+"\"पध्दती\" किल्ली \"फक्त-रिकामी\" असल्यास दुर्लक्ष केली जाते,  \"पध्दती\" \"ऐकमेव\" "
+"असल्यास सुत्रयोजनाचे नाव प्रविष्ट केले पाहिजे, व \"पध्दती\" \"विनाक्रम\" नस्लावर "
+"सुत्रयोजनाची यादी पुरविली पाहिजे."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "कुलूपबंद करण्यापूर्वीचा वेळ"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "लॉगआउट पर्याय पूर्वीचा वेळ"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "पॉवर-व्यवस्थापन बेसलाइन पूर्वीचा वेळ"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "सत्र रिकामे असल्यावरचे वेळ"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "सुत्रयोजना बदल पूर्वीचा वेळ"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R करीता संदेश सोडा:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%h वरील %U </span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "रद्द करा(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "संदेश सोडा (_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "बाहेर पडा (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "उपयोक्ता बदला(_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "कुलूपबंद उघडा (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "कॉसमॉस"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "कॉसमॉस वरील प्रतिमाचे स्लाईडशो दर्शवा"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "पडद्या भोवती MATE चिन्ह दर्शवितो"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "तरंगते छाप"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "तुमच्या प्रतिमा संचयीका पासून स्लाईडशो दर्शवा"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "प्रतिमा संचयीका"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "पल्सींग रंगाचे पॉप-कला ग्रीड."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "पॉप कला चौकोन"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "प्रतिमा करीताचे मार्ग दर्शवा"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "हालचालनुरूप प्रतिमा फिरवा"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "फ्रेम दर व इतर आक्कडेवारी छापा"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "पडद्यावर दर्शवायचे ती प्रतिमाची कमाल संख्या"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "कमाल प्रतिमा (_I)"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "चौकटचे प्रारंभीक आकार व स्थिती"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "रूंदीxऊंची+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "वापरण्याकरीताचे स्त्रोत प्रतिमा"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "प्रतिमा - पडद्याभोवती प्रतिमा तरंगविते"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. वापर माहिती करीता --help पहा.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "तुम्ही प्रतिमा निश्चित केली पाहिजे.  वापर माहिती करीता --help पहा.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "प्रतिमा जेथून प्राप्त करायचे ते स्थान"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "मार्ग"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "प्रतिमा पार्श्वभूमी करीता वापरण्याजोगी रंग"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "स्थान पासून प्रतिमा विना क्रमानुरूप लावू नका"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "पडद्यावरील प्रतिमा ओढण्याचा प्रयत्न करू नका"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "फाइली प्रतिलिपी करत आहे"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "प्रेषक:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "प्रती:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "सुत्रयोजनाची प्रत बनवीत आहे"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "अवैध स्क्रीनसेवर सुत्रयोजना"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s वैध स्क्रीनसेवर सुत्रयोजना दिसून येत नाही."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "फाइल प्रतिलिपी होतेय: %u पैकी %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "स्क्रीनसेवर पासून बाहेर पडण्यास कारणीभूत ठरते"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "स्क्रीनसेवरच्या स्थितीची चौकशी करा"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "स्क्रीनसेवर कितीवेळ पासून सक्रीय आहे त्याची चौकशी करा"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "कार्यरत स्क्रीनसेवर पध्दतीला पडदा त्वरीत कुलूपबंद करण्यास सांगतो"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "सक्रीनसेवर सक्रीय असल्यावर इतर चित्रलेखीय प्रदर्शनावर जा"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "स्क्रीनसेवर कार्यान्वीत करा (पडदा रिकामा करा)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "सक्रीनसेवेर सक्रीय असल्यावर त्यास असक्रीय करा (पडदा सक्रीय करा)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "वापरकर्ता कार्य दर्शविण्याकरीता कार्यरत स्क्रीनसेवरला सतर्क करा"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "स्क्रीनसेवरला सक्रीय होण्यापासून थांबवा.  प्रतिबंध सक्रीय असल्यावर आदेश बंधीत राहते."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "स्क्रीनसेवर दर्शविण्यापासून थांबविण्यापासून कारणीभूत अनुप्रयोग"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "स्क्रीनसेवर अकार्यान्वीत करण्यामागचे कारण"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "या अनुप्रयोगाची आवृत्ती"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "%s सक्रीनसेवर आहे\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "सक्रीय"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "निषक्रीय्रीय"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "सक्रीनसेवर प्रतिबंद नाही\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "सक्रीनसेवर यानुरूप प्रतिबंदीत केले गेले\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "%d सेकंद करीता सक्रीनसेवर सक्रीय आहे.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "सक्रीनसेवर सध्या सक्रीय नाही.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "डीबगींग आउटपुट दर्शवा"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "लॉगआउट बटण दर्शवा"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "लॉगआउट बटण पासून प्रारंभ करण्यासाठीचे आदेश"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "वापरकर्ता बटण बदलवा दर्शवा"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "संवाद मध्ये दर्शवायचे ते संदेश"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "वारले नाही"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "वापरकर्त्याचे नाव:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "गुप्तशब्द:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "तुमचा गुप्तशब्द तत्काळ बदलण्याची आवश्यकता आहे (गुप्तशब्द जुना आहे)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "तुमचा गुप्तशब्द तत्काळ बदलण्याची आवश्यकता आहे (रूट वापरा)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "तुमचे खाते बंद झाले आहे, कृपया तुमच्या संगणक व्यवस्थापकाकडे जा"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "गुप्तशब्द दिलेला नाही"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "गुप्तशब्द बदललेला नाही"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "वापरकर्त्याचे नाव मिळत नाही"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "नवा UNIX गुप्तशब्द पुन्हा टाईप करा:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "नवा UNIX गुप्तशब्द प्रविष्ट करा:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(सद्याचा) UNIX गुप्तशब्द:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS चा गुप्तशब्द बदलताना चुक झाली."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "तुम्ही मोठा गुप्तशब्द निवडला पाहीजे"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "ह्या गुप्तशब्दचा आधीच वापर झाला आहे. दुसरा निवडा."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "तुमचा गुप्तशब्द बदलण्यासाठी तुम्हाला बराच वेळ वाट पहावी लागेल"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "क्षमा करा, गुप्तशब्द जुळत नाहीत"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "तपास करीत आहे..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "अधिप्रमाणन असफल."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "रिकामी पडदा"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "विस्कळीत"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d तास"
+msgstr[1] "%d तास"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d मिनिट"
+msgstr[1] "%d मिनिट"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d सेकंद"
+msgstr[1] "%d सेकंद"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "कधीच नाही"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "मुख्य इंटरफेस भारित करता आला नाही"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "कृपया स्क्रीनसेवर योग्यरित्या प्रतिष्ठापीत आहे याची खात्री करा"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "डीमन बनू नका"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "डीबगींग कोड कार्यान्वीत करा"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "स्क्रीनसेवर व लॉकर कार्यक्रम प्रक्षेपीत करा"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "सेवा %s: सुरु करता येत नाही %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s चे संयोजन करता येत नाही "
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "अयोगग्य गुप्तशब्द."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "यावेळी प्रवेश प्राप्त करण्यास परवानगी नाही."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "प्रणाली प्रवेश करीता यापुढे परवानगी दिली जाणार नाही."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "संदेश बसशी पंजीकृत करण्यास अपयशी"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "संदेश बसशी जुळवणी करू शकला नाही"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "स्क्रीनसेवर आधिपासूनच या सत्रा मध्ये कार्यरत आहे"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "वेळ कालबाह्य झाले."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Caps Lock कळ कार्यन्वीत केले गेले आहे."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "वापरकर्ता बदलवा (_w)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "बाहेर पडा (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%h वरील %U"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "गुप्तशब्द (_P):"
+
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 0000000..146d9fb
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,759 @@
+# Norwegian bokmål translation of mate-screensaver.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Kjartan Maraas  <kmaraas at gnome.org>, 2005-2009.
+# Eskild Hustvedt <i18n at zerodogg.org>, 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver 2.27.x\n"
+"Report-Msgid-Bugs-To:\n"
+"POT-Creation-Date: 2009-09-01 13:28+0200\n"
+"PO-Revision-Date: 2009-09-01 13:29+0200\n"
+"Last-Translator: Kjartan Maraas <kmaraas at gnome.org>\n"
+"Language-Team: Norwegian bokmål <i18n-nb at lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Skjermsparer"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Sett brukervalg for skjermspareren"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Forhåndsvisning av skjermsparer</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Advarsel: skjermen vil ikke bli låst for root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Strø_mstyring"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Se på datamaskinen som _inaktiv etter:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Brukervalg for skjermsparer"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Forhåndsvisning av skjermsparer"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktiver skjermsparer når datamaskinen er inaktiv"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Lås skjermen når aktiv"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Forhåndsvis"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema for _skjermsparer:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Tema for skjermsparer"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Skjermsparere"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktiver når inaktiv"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Tillat å bygge inn et tastatur i vinduet"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Tillat å logge ut"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "La statusmeldinger for sesjonen vises"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "La statusmeldinger for sesjonen vises når skjermen er låst."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Tillat bytte av bruker"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Kommando for innebygget tastatur"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Lås ved aktivering"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Kommando for å logge ut"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Modus for valg av tema"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Sett denne til TRUE for å aktivere skjermspareren når sesjonen er ubrukt."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Sett denne til TRUE for å gjøre det mulig å innlemme et tastatur i vinduet "
+"ved man skal låse opp skjermen. Nøkkelen «keyboard_command» må være satt med "
+"riktig kommando."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Sett denne til TRUE for å låse skjermen når skjermspareren aktiveres."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Sett denne til TRUE for å gi et valg for å bytte til en annen brukerkonto i "
+"dialogen for å låse opp skjermen."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Sett denne til TRUE for å gi et valg for å logge ut etter et tidsavbrudd i "
+"dialogen for å låse opp skjermen. Tidsavbruddet spesifiseres i nøkkelen "
+"«logout_delay»."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Kommando som skal kjøres hvis nøkkelen «embedded_keyboard_enabled» er satt "
+"til TRUE. Denne kommandoen må implementere et grensesnitt basert på XEMBED "
+"og skrive ut en XID for vinduet på standard utdatakanal."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Kommando som skal kjøres når utloggingsknappen blir klikket på. Denne "
+"kommandoen bør enkelt og greit logge ut brukeren uten noe krav om handling "
+"fra brukerens side. Denne nøkkelen har ingen effekt hvis ikke \"logout_enable"
+"\"-nøkkelen er satt til TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Antall minutter før skjermen låses etter aktivering av skjermsparer."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Antall minutter før valg for utlogging vises i dialogen for å låse opp "
+"skjermen. Denne nøkkelen vil kun fungere hvis nøkkelen «logout_enable» er "
+"satt til TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Antall minutter med inaktivitet før sesjonen betraktes som ubrukt."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Antall minutter før endring av skjermsparertema."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Antall sekunder med inaktivitet før strømstyring får beskjed. Denne nøkkelen "
+"er satt og vedlikeholdt av sesjonens strømstyringsagent."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Utvalgsmodus som brukes av skjermspareren. Kan være «blank-only» for å "
+"aktivere skjermspareren uten å bruke et tema, «single» for å aktivere "
+"skjermspareren med kun et tema (oppgitt i nøkkelen «themes»), og «random» for "
+"å aktivere skjermspareren med et tilfeldig tema."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema for dialog for låsing av skjerm"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema som skal brukes for dialog for låsing av skjerm."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Denne nøkkelen spesifiserer listen med tema som skal brukes av "
+"skjermspareren. Den ignoreres når «mode»-nøkkslen er «blank-only», gir "
+"temanavnet når «mode» er «single» og gir en liste med tema når «mode» er "
+"«random»."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tid før låsing av skjerm"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tid før utloggingsmulighet"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tid før grunnlinje for strømstyring er nådd"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tid før sesjonen betraktes som ubrukt"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tid før endring av tema"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Legg igjen en beskjed til %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U på %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "A_vbryt"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Legg igjen beskjed"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Logg ut"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Bytt bruker"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "Lå_s opp"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Lysbildevisning med bilder fra verdensrommet"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE logoen flytende rundt som bobler på skjermen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Glidende føtter"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Vis en lysbildefremvisning fra din bildemappe"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Bildemappe"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Et popkunst-aktig rutenett med pulserende farger."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Popkunstfirkanter"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Vis stiene bildene følger"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Roter bildene noen ganger mens de beveger seg"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Vis bildehastighet og annen statistikk"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Maksimalt antall bilder som skal beholdes på skjermen"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAKS_BILDER"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Initiell størrelse og posisjon for vinduet"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "BREDDExHØYDE+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Bilde som skal brukes"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "bilde - lar bilder flyte rundt på skjermen"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Se --help for hjelp til bruk.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Du må oppgi ett bilde. Se --help for bruksinformasjon.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Lokasjon bilder skal hentes fra"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "STI"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Farge som skal brukes for bildebakgrunn"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "«#rrggbb»"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Ikke hent bilder i tilfeldig rekkefølge fra lokasjon"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ikke strekk bildene på skjermen"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopierer filer"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Fra:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Til:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopierer tema"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Ugyldig tema for skjermsparer"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ser ikke ut til å være et gyldig tema for skjermspareren."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopierer fil: %u av %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Sørger for sikker avslutning av skjermspareren"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Spør etter skjermsparerstatus"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Spør hvor lenge skjermspareren har vært aktiv"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Tvinger kjørende skjermsparer til å låse skjermen omgående"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Skift til et annet tema om skjermspareren er aktiv"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Slå på skjermspareren (blank ut skjermen)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Deaktiver skjermspareren om den er aktiv"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Kommuniser med kjørende skjermsparer for å simulere brukeraktivitet"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Hindre skjermspareren fra å aktiveres. Kommandoen blokkerer så lenge "
+"hindringen er aktiv."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Programmet som hindrer skjermspareren"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Årsak for hinding av skjermsparer."
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Skjermsparerversjon"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Skjermsparer er %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktiv"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inaktiv"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Skjermsparer er ikke hindret\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Skjermsparer hindres av:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Skjermspareren har vært aktiv i %d sekunder.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Skjermsparer er ikke aktiv.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Vis avlusingsinformasjon"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Vis knapp for å logge ut"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Kommando som skal kjøres ved klikk på utloggingsknappen"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Vis knapp for å bytte bruker"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Melding som skal vises i dialogen"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MELDING"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Ikke brukt"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Brukernavn:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Passord:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Du må endre ditt passord nå (passordet er utløpt)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Du må endre ditt passord nå (bestemt av administrator)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Din konto har utgått; vennligst kontakt systemadministrator"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Ingen passord oppgitt"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Passordet er ikke endret"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Kan ikke finne brukernavn"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Skriv inn nytt UNIX-passord på nytt:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Oppgi nytt UNIX-passord:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(aktivt) UNIX-passord:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Feil under endring av NIS-passord."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Du må velge et lenger passord"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Passordet er allerede brukt. Velg et annet."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Du må vente lenger før du endrer ditt passord"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Beklager, passordene er ikke like"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Sjekker..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autentisering feilet."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Blank skjerm"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Tilfeldig"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d time"
+msgstr[1] "%d timer"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minutt"
+msgstr[1] "%d minutter"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekund"
+msgstr[1] "%d sekunder"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Aldri"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Kunne ikke laste hovedbrukergrensesnittet"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Vennligst se til at skjermspareren er skikkelig installert"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Ikke kjør som tjeneste"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Aktiver avlusingskode"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Start skjermsparer og låsprogram"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Kan ikke etablere tjeneste %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Kan ikke sette PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Ugyldig passord."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Ingen tillatelse til å få tilgang nå."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Tilgangen til systemet er fjernet."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "klarte ikke å registrere hos meldingsbussen"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "ikke koblet til meldingsbussen"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "skjermsparer kjører allerede i denne sesjonen"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Tiden har løpt ut."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Caps-Lock tasten er aktivert."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Bytt bruker..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Logg _ut"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U på %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Passord:"
diff --git a/po/nds.po b/po/nds.po
new file mode 100644
index 0000000..55af993
--- /dev/null
+++ b/po/nds.po
@@ -0,0 +1,781 @@
+# Low German translation for mate-screensaver.
+# Copyright (C) 2009 mate-screensaver's COPYRIGHT HOLDER
+# This file is distributed under the same license as the mate-screensaver package.
+# NILS-CHRISTOPH FIEDLER <LINUX at MEDIENKOMPANIE.DE>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-10-22 00:01+0000\n"
+"PO-Revision-Date: 2009-10-22 18:59+0100\n"
+"Last-Translator: Nils-Christoph Fiedler <linux at medienkompanie.de>\n"
+"Language-Team: Low German <nds-lowgerman at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Billschirmschoner"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Billschirmschonerinstellens setten"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Billschirmschonerutblick</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Oppassen: De Billschirm warrt open laten för de root-Bruker.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Strom _Oppasser"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "In Leerloop nah'm Räkner kieken nah:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Billschirmschonerinstellens"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Billschirmschonerutblick"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Billschirmschoner in Leerloopmodus aktiveren"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Billschirm avsluten, wenn de Billschirmschoner an is"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Utblick"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Billschirmschonerthema:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Billschirmschonerthemen"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Billschirmschoners"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "In Leerloop aktiveren"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Tolaten, een Knöppboord in Finster intobinnen"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Avmellen tolaten"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Tolaten, dat de Törnstatusnahricht opwiest weert."
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Törnstatusnahrichten künn opwiest werrn, wenn de Billschirm avsluten is."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Brukerwessel tolaten"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Knöppboordorders infögen"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Dicht maken bi Aktiveren"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Avmellensorder"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Billschirmschonerthemautsöökmodus"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Düsse Optschoon is to TRUE to setten, um de Billschirmschoner antomaken, "
+"wenn de Törn slopen is."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Düsse Optschoon is to TRUE to setten, um totolaten, dat een Knöppboord in "
+"dat Finster infögt is, wenn allens opslut werrt. De \"keyboard_command\" "
+"Knopp is to de akeraten Order to setten."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Düsse Optschoon is to TRUE to setten, um de Billschirm avtosluten, wenn de "
+"Billschirmschoner angeiht."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Düsse Optschoon is to TRUE to setten, um eene Optschoon im "
+"Opslutdialogfinster antobeeden, de to een annern Bruker wesselt."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Düsse Optschoon is to TRUE to setten, um im Opslutdialogfinster eene "
+"Optschoon antobeeden, de Bruker nah ee'm Fehlversök avtomellen."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"De Order, de utföhrt werrt, wenn de \"embedded_keyboard_enabled\" Knopp is "
+"to TRUE set. um een Knöppboordwidget in een Finster intofögen. Düsse Order "
+"schall eene XEMBED plug Brukeröverfläch implementeeren un een Finster XID op "
+"de Standardutgav utgeven."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"De Order de uttoföhren is, wenn de Avmellensknopp klickt is. Düsse Order "
+"schall de Bruker ohne jichtenswelche Interaktschoon avmellen. Düsser Knopp "
+"hett just een Effekt wenn de \"logout_enable\" Knoppis to TRUE set."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Minuten nah de Billschirmschoneraktiveren, bevor de Billschirm avtosluten is."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Minuten nah de Billschirmschoneraktiveren, bevor eene Avmellensoptschoon in "
+"ee'm Avmellensdialogfinster opwiest warrt. Düsser Knopp hett just een "
+"Effekt, wenn de \"logout_enable\" Knopp is to TRUE set."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Minuten de Inaktivität, bevor de Törn slopen gahn schall."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "De Minuten, bevor dat Billschirmschonerthema ännert werrt."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Sekunnen de Inaktivität, bevor de Power-Oppasser kontaktieert werrt. Düsser "
+"Knopp is set un bewarkt bi de Törn-Power-Oppasser."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"De Utwahlmodus, de de Billschirmschoner brukt. Künn \"blank-only\" sein, um "
+"de Billschirmschoner antomaken, ihle een avtiviertes Theme to gebruken, "
+"\"single\", damit de Billschirmschoner just een Thema bi de Aktiveren brukt "
+"(specified in \"themes\" key), un \"random\", damit de Billschirmschoner "
+"dööreenanner een Thema utwählt."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Avmellensdialogfinsterthema"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Avmellensdialogfinsterthema"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Düsser Knopp spezifizeert de List vun Themen, de vu'm Billschirmschoner "
+"brukt ward. Dat werrt ignoriert, wenn de \"mode\" Knopp is \"blank-only\", "
+"schall de Themennoom opwiesen, wenn \"mode\" is \"single\", un schall eene "
+"List vun Themen opwiesen, wenn \"mode\" is \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tiet vorn Avslut"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tiet vor Avmellensoptschoon"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tiet vor Power-Oppassergrundline"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tiet bevor de Törn schlopen geiht"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tiet vor Themenännerns"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Nahricht dalaten för %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Avbreken"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Nahricht dalaten"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Avmellen"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Bruker ännern"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Opmaken"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Universum"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Een Döörloop vun Universumsbillers opwiesen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Da fleugt dat MATE Emblem övern Billschirm"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Fleugende Fööt"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Een Döörloop vu'm Billerverteeknis opwiesen"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Billerverteeknis"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Een net vun dollen Klöörs, de as Popart utsehn."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Popkunstruten"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Pads opwiesen, de de Billers achtergahn"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Mannichmol schalln de Billers sik dreihn, as de sik bewegen"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Kantrate un annere Statistiken utdrucken"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "De hööchste Tahl vun Billers, de op'm Billschirm blieven schalln"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "De Anfangsgrote un Positschoon vu'm Finster"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Dat Wellbill to bruken"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "Bill - Billers fleugen över de Billschirm"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Kiek mol nah --Hölp för Brukterinformatschoonen.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Du mutt een Bill utsöken. Kiek an --Hölp, um de Gebruukinformatschoonen "
+"optowiesen.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Billerverteeknis för Billschrimschoner"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PADD"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Klöör, de as Achtergrund brukt werrn schall"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Schiev de Billers im Verteeknis nich dööreenanner"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Versök nich, Billers op'm Billschirm groter to maken, as de sünd"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Dateien koperen"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Vun:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "To:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Themen koperen"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Düsses Billschirmschonerthema is nich akerat"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s is vermoudlich keen valides Billschirmschonerthema."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopiere Datei: %u vun %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Billschirmschoner scheun sluten"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Op'n Tostand vun Billschirmschoner oppassen"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "De Tiet rutfinnen, de de Billschirmschoner nu schon an is"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Vertellt de lööpenden Billschirmschoner, dat de Billschirm avslut werrn "
+"schall"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Wenn de Billschirmschoner an is, schall to eene annere "
+"Grafikdemonstratschoon wesselt werrn"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Billschirmschoner anmaken (Blanker Billschirm)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Wenn de Billschirmschoner an is, denn schall dat utmakt werrn. (Denn is de "
+"Billschirm nich blank)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"De Räkner schall so doon, as ob he aktiv is, dormit de Billschirmschoner "
+"nich angeiht."
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "De Billschirmschoner stoppen, ehe de losgeiht. "
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Dat Programm, dat bi'n Utföhren vun Billschirmschoner datwüschen funkt"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "De Grund, warum de Billschirmschoner stoppt werrn künn"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Verschoon vun düssem Programm"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "De Billschirmschoner is %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "Aktiv"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "Nich aktiv"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "De Billschirmschoner is nich stoppt worrn\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "De Billschirmschoner is stoppt worrn bi:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "De Billschirmschoner is nu aktiv siet %d Sekunnen.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "De Billschirmschoner is grade nich aktiv.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Debugging-Utgav opwiesen"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Avmellensknopp opwiesen"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Order, de döör de Avmellensknopp in Gang kümmt"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Knopp to'm Brukerwessel opwiesen"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Nahricht, de in'n Dialogfinster opwiest warrn schall"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "NAHRICHT"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "nich gebrukt"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Brukernaam:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Passwoord:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Bidde Passwoord ännern! (to ol)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Bidde Passwoord ännern (root nödig)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Düsses Brukerkonto is avloopen; bidde mit de Systemoppasser Kontakt opnehmen"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Keen Passwoord angeven"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Passwoord nich ännert"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Kunn de Brukernaam nich rutkregen"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Nejes UNIX Passwoord to'm tweiten Mol ingeven:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Nejes UNIX Passwoord ingeven:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(Aktuelles) UNIX Passwoord:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Fehler bi'm Ännern vu'm NIS Passwoord."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Dat Passwoord is to kort"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Düsses Passwoord givt dat schon. Bidde anneres utsöken."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Dat düert noch'n beten, bit dat Passwoord ännert weern künn"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Dat Passwoord passt nich."
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Döörkieken..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Authentifikatschoon fehlslagen"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Blanker Billschirm"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Liek"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, fuzzy, c-format
+#| msgid "%d hour\n"
+#| msgid_plural "%d hours\n"
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d Stunn\n"
+msgstr[1] "%d Stunnen\n"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, fuzzy, c-format
+#| msgid "%d minute\n"
+#| msgid_plural "%d minutes\n"
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d Minuut\n"
+msgstr[1] "%d Minuten\n"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, fuzzy, c-format
+#| msgid "%d second\n"
+#| msgid_plural "%d seconds\n"
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d Sekunn\n"
+msgstr[1] "%d Sekunnen\n"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nie nich"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Kunn de Hööftböverflach nich laden"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Bidde rutfinnen, ob de Billschirmschoner akerat installeert is"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Keen daemon to kregen"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Debugging code möglich maken"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Billschirmschoner un Avslutprogramm laden"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr ""
+"Nich möglich, de Deenst %s: %s\n"
+" optoboon\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Kunn PAM_TTY=%s nich setten"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Passwoord is nich akerat."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Togang is just nich togelaten."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Systemtogang is nich mehr togelaten."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "Kunn nich bi'm Nahrichtenbus anmellen"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "Nich mit de Nahrichtenbus verbunnen"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "Billschirmschoner lööpt allmal in düssem Törn"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "De Tiet is to Enn."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "De CapsLock-Knopp is an."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "B_ruker wesseln"
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Av _mellen"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U on %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Passwoord:"
diff --git a/po/ne.po b/po/ne.po
new file mode 100644
index 0000000..5377ed5
--- /dev/null
+++ b/po/ne.po
@@ -0,0 +1,762 @@
+# translation of mate-screensaver.HEAD.ne.po to Nepali
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Shiva Pokharel <pokharelshiva at hotmail.com>, 2006.
+# Mahesh Subedi <submanesh at hotmail.com>, 2006.
+# Shyam Krishna Bal <shyamkrishna_bal at yahoo.com>, 2006.
+# Nabin Gautam <nabin at mpp.org.np>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.HEAD.ne\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-08-03 03:57+0100\n"
+"PO-Revision-Date: 2007-11-07 11:47+0545\n"
+"Last-Translator: Nabin Gautam <nabin at mpp.org.np>\n"
+"Language-Team: Nepali <info at mpp.org.np>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n !=1\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "स्क्रिनसेभर"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "स्क्रिनसेभर प्राथमिकता सेट गर्नुहोस्"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>स्क्रिनसेभर पूर्वावलोकन</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>चेतावनी: मूल प्रयोगकर्ताका लागि पर्दामा ताल्चा लगाइने छैन ।</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "पावर प्रबन्ध"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "निस्क्रियता पछिको कम्प्युटर सम्बन्धी:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "स्क्रिनसेभर प्राथमिकता"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "स्क्रिनसेभर पूर्वावलोकन"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "कम्प्युटर निस्क्रिय हुदा स्क्रिनसेभर सक्रिय पार्नुहोस्"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "स्क्रिनसेभर सक्रिय भएपछि पर्दामा ताल्चा लगाउनुहोस्"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "पूर्वावलोकन"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "स्क्रिनसेभर विषयवस्तु:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "स्क्रिनसेभर विषयवस्तु"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "स्क्रिनसेभर"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "निस्क्रिय हुने वित्तिकै सक्रिय बनाउनुहोस् ।"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "कुञ्जीपाटीलाइ सञ्झ्यालमा सम्मिलित गर्न अनुमति दिनुहोस्"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "लगआउट गर्न अनुमति दिनुहोस्"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "प्रयागकर्तालाई स्विचिङ गर्न अनुमति दिनुहोस्"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "सम्मिलित कुञ्जीपाटी आदेश"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "सक्रिय हुदा ताल्चा लगाउनुहोस्"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "लगआउट आदेश"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "टाढा हुनको कारण"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "स्क्रिनसेभर विषयवस्तु चयन मोड"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "सत्र निस्क्रिय हुदा स्क्रिनसेभरलाई सक्रिय पार्न यसलाई ठीकमा सेट गर्नुहोस् ।"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr "ताल्चा खोल्ने प्रयास गर्दा कुञ्जीपाटीलाई सञ्झ्यालमा सम्मिलन गर्न अनुमति दिन यसलाई ठीकमा सेट गर्नुहोस् । \"कुञ्जीपाटी आदेश\" मिल्दो आदेशसँग सेट गर्नुपर्दछ ।"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "स्क्रिनसेभर सक्रियमा जादा पर्दामा ताल्चा लगाउन ठीक मा सेट गर्नुहोस् ।"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"विभिन्न प्रयोगकर्ता खातामा स्विच गर्न ताल्चा नलगाउनुहोस् भन्ने संवादमा एउटा विकल्प प्रदान "
+"गर्न यसलाई ठीकमा सेट गर्नुहोस् ।"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"विलम्ब गरिसकेपछि लग आउट गर्न ताल्चा नलगाइएको संवादमा एउटा विकल्प प्रस्ताव गर्न यसलाई "
+"ठीकमा सेट गर्नुहोस् । विलम्बलाई \"logout_delay\" कुञ्जीमा निर्दिष्ट गरिएको छ ।"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr " \"सम्मिलित कुञ्जीपाटी सक्षम पारिएको\" कुञ्जी ठीकमा सेट गरिएको छ भने, सञ्झ्यालमा कुञ्जीपाटी विजेट सम्मिलित गर्न, चलाइने आदेश । यस आदेशले XEMBED प्लग इन्टरफेस कार्यान्वयन गर्नुपर्दछ र मानक निर्गतमा सञ्झ्याल XID निर्गत गर्नुपर्दछ ।"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"लगआउट बटनलाई क्लिक गर्दा आह्वान गर्ने आदेश । साधरणतया यो आदेशले कुनै अन्तरक्रिया विना "
+"प्रयोगकर्तालाई लगआउट गर्दछ । यदि \"logout_enable\" कुञ्जी ठीकमा सेट भएमा मात्र यो "
+"कुञ्जीमा असर पर्छ ।"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "पर्दा बन्द गर्नु पहिले स्क्रिनसेभरलाई सक्रिय पारी सकेपछिका मिनेटको सङ्ख्या ।"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"ताल्चा नलगाइएका संवादमा लगआउट विकल्प देखा पर्नु पहिले स्क्रिनसेभर सक्रिय पारिसके पछिका "
+"मिनेटको सङ्ख्या । यदि \"logout_enable\" कुञ्जी ठीकमा सेट भएमा मात्र यो कुञ्जीमा "
+"असर पर्दछ ।"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "सत्रलाई निष्प्रयोजन ठान्नु पहिले निस्क्रियता मिनेटको सङ्ख्या ।"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "स्क्रिनसेभर विषयवस्तु परिवर्तन गर्नु पहिले चलाइने मिनेटको सङ्ख्या ।"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"पावर प्रबन्धलाई सङ्केत गर्नुभन्दा पहिला निस्क्रिय सेकेन्डको सङ्ख्या ।"
+"यस कुञ्जीलाई सत्र पावर प्रबन्ध अभिकर्ताद्वारा सेट र मर्मत गरिन्छ ।"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "कम्प्युटरबाट टाढा भइरहने कारण ।"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"स्क्रिनसेभरले प्रयोग गरेको चयन मोड । \"blank-only\", सक्रियतामा कुनै विषयवस्तुको प्रयोग "
+"नगरी स्क्रिनसेभरलाई सक्षम गर्न, \"single\", सक्रियतामा एउटा मात्र विषयवस्तु प्रयोग गरेर "
+"स्क्रिनसेभरलाई सक्षम गर्न (\"themes\" कुञ्जीमा निर्दिष्ट गरिएको), र \"random\" "
+"सक्रियतामा क्रमबद्ध विषयवस्तु प्रयोग गरेर स्क्रिनसेभरलाई सक्षम गर्न प्रयोग हुनसक्छ ।"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "ताल्चा लगाउने संवादका लागि विषयवस्तु"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "ताल्चा लगाइएको संवादका लागि प्रयोग गरिने विषयवस्तु ।"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"यो कुञ्जीले स्क्रिनसेभरले प्रयोग गर्ने विषयवस्तुको सूचिलाई निर्दिष्ट गर्दछ । \"मोड\" कुञ्जी \"खाली मात्र\" हुँदा यसलाई उपेक्षा गरिन्छ, \"मोड\" \"एकल\" हुदा विषयवस्तु "
+"नाम उपलब्ध गराउनुपर्दछ, र \"मोड\" \"अनियमित\" हुँदा विषयवस्तुको सूचि उपलब्ध गराउनुपर्दछ ।"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "ताल्चा लगाउनु पहिलेको समय"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "लगआउट विकल्प पहिलेको समय"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "पावर प्रबन्ध आधारलाइन पहिलाको समय"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "सत्रलाई निष्प्रयोजन ठान्नु पहिलेको समय"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "विषयवस्तु परिवर्तन गर्नु पहिलाको समय"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b> %R का लागि सन्देश छोड्नुहोस्:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U मा %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "रद्द गर्नुहोस्"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "सन्देश छोड्नुहोस्"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "लगआउट गर्नुहोस्"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "स्विच प्रयोगकर्ता"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1207
+msgid "_Unlock"
+msgstr "ताल्चा खोल्नुहोस्"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "विश्व"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "विश्वको तस्विरको स्लाइडसो प्रदर्शन गर्नुहोस्"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "पर्दा वरिपरि जिनोम पैतलाको लोगो उफार्छ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "उत्प्लावन पैतला"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "तपाईँको तस्विर फोल्डरबाट स्लाइडसो प्रदर्शन गर्नुहोस्"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "तस्वीरको फोल्डर"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "पल्सिङ रङको pop-art-ish ग्रिड ।"
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "पप आर्ट वर्ग"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "छविले अनुगमन गर्ने बाटो देखाउनुहोस्"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "छवि आफैँ सरे जस्तै समय समयमा घुमाउनुहोस्"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "फ्रेम दर र अन्य तथ्याङ्क मुद्रण गर्नुहोस्"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "पर्दामा राखिने छविको अधिकतम सङ्ख्या"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "सन्झ्यालको सुरुआत साइज र स्थिति"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "प्रयोग गरिने स्रोत छवि"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "छवि - पर्दा वरिपरि छविलाई उत्प्लावन गर्दछ"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. उपयोगी सूचनाका लागि मद्दत हेर्नुहोस् ।\n"
+
+#: ../savers/floaters.c:1209
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "तपाईँले एउटा छवि निर्दिष्ट गर्नुपर्दछ । उपयोगी सूचनाका लागि मद्दत हेर्नुहोस् ।\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "यसबाट छवि प्राप्त गरिने स्थान"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "मार्ग"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "छवि पृष्ठभूमिका लागि प्रयोग गरिने रङ"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "स्थानबाट तस्वीरलाई अनियमित नबनाउनुहोस्"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "पर्दामा छविलाई फैलाउने प्रयास नगर्नुहोस्"
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "फाइल प्रतिलिपि गरिदैँछ: %u को %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr " '%s' प्रतिलिपी गरिदैँछ"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "यूआरआई(URI) बाट"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "हाल यसबाट यूआरआई(URI) लाई स्थानातरण गरिदैँछ"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "यूआरआई(URI) मा"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "हाल यूआरआई(URI) यसमा स्थानान्तरण गरिदैँछ"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "खण्ड समाप्त"
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "स्थानातरको खण्ड हाल समाप्त भयो"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "हालको यूआरआई(URI) अनुक्रमणीका"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "हालको यूआरआई(URI) अनुक्रमणिका - १ बाट सुरु हुन्छ"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "जम्मा यूआरआई(URIs)"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "यूआरआई(URIs) को जम्मा सङ्ख्या"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "फाइल प्रतिलिपि हुदैँछ"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "बाट:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "लाई:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "जडान गरिदैँछ..."
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "स्क्रिनसेभरको कारणले गर्दा उचित रुपले बाहिरियो"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "स्क्रिनसेभरको स्थितिलाई क्वेरी गर्नुहोस्"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "स्क्रिनसेभर सक्रिय भएको समय अवधि क्वेरी गर्नुहोस्"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "पर्दामा तत्काल ताल्चा लगाउनका लागि चलिरहेको स्क्रिनसेभरलाई सुझाव दिन्छ"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "स्क्रिनसेभर सक्रिय भएमा अर्को ग्राफिक्स डेमोमा स्विच गर्नुहोस्"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "स्क्रिनसेभर खोल्नुहोस् (पर्दा खाली बनाउनुहोस्)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "स्क्रिनसेभर सक्रिय भएमा यसलाई निस्क्रिय बनाउनुहोस् (पर्दा खाली नबनाउनुहोस्)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "प्रयोगकर्ताको क्रियाकलापलाई नक्कल गर्न चलिरहेको स्क्रिनसेभरलाई पोक गर्नुहोस्"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "स्क्रिनसेभर सक्रिय बनाउन निषेध गर्नुहोस् ।  निषेध सक्रिय भएमा आदेशले केही समय रोक्दछ ।"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "स्क्रिनसेभर निषेध गरिरहेको कलिङ अनुप्रयोग"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "स्क्रिनसेभर निषेध गर्नुको कारण"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:55
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "यस अनुप्रयोगको संस्करण"
+
+#: ../src/mate-screensaver-command.c:249
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "स्क्रिनसेभर %s हो\n"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "active"
+msgstr "सक्रिय"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "inactive"
+msgstr "निस्क्रिय"
+
+#: ../src/mate-screensaver-command.c:274
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "स्क्रिनसेभरलाई %d सेकेन्डका लागि सक्रिय पारिएको छ ।\n"
+
+#: ../src/mate-screensaver-dialog.c:53
+msgid "Show debugging output"
+msgstr "डिवगिङ प्रतिफल देखाउनुहोस्"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show the logout button"
+msgstr "लगआउट बटन देखाउनुहोस्"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Command to invoke from the logout button"
+msgstr "लग आउट वटनबाट आह्वान गरिने आदेश"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the switch user button"
+msgstr "स्विच प्रयोगकर्ता वटन देखाउनुहोस्"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Message to show in the dialog"
+msgstr "संवादमा देखाइने सन्देश"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "MESSAGE"
+msgstr "सन्देश"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:173 ../src/mate-screensaver-dialog.c:174
+#: ../src/mate-screensaver-dialog.c:175 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "प्रयोगकर्तानाम:"
+
+#: ../src/mate-screensaver-dialog.c:176 ../src/mate-screensaver-dialog.c:177
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "पासवर्ड:"
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "You are required to change your password immediately (password aged)"
+msgstr "तपाईँले तत्काल आफ्नो पासवर्ड परिवर्तन गर्नु आवश्यक हुन्छ (पासवर्ड अवधि)"
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "तपाईँले तत्काल आफ्नो पासवर्ड परिवर्तन गर्नु आवश्यक हुन्छ (मूल दवाब)"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Your account has expired; please contact your system administrator"
+msgstr "तपाईँको खाताको म्याद समाप्त भएको छ; कृपया तपाईँको प्रणाली प्रसासकलाई सम्पर्क गर्नुहोस्"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "No password supplied"
+msgstr "पासवर्ड दिइएको छैन"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Password unchanged"
+msgstr "पासवर्ड परिवर्तन गरिएको छैन"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "Can not get username"
+msgstr "प्रयोगकर्ता नाम प्राप्त गर्न सकिदैँन "
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Retype new UNIX password:"
+msgstr "नयाँ युनिक्स पासवर्ड पुन: टाइप गर्नुहोस्:"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Enter new UNIX password:"
+msgstr "नयाँ युनिक्स पासवर्ड प्रविष्टि गर्नुहोस्:"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "(current) UNIX password:"
+msgstr "(हाल) युनिक्स पासवर्ड:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Error while changing NIS password."
+msgstr "एनआईएस(NIS) पासवर्ड परिवर्तन गर्दा त्रुटि ।"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "You must choose a longer password"
+msgstr "तपाईँले लामो पासवर्ड रोज्नुपर्दछ"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Password has been already used. Choose another."
+msgstr "पासवर्ड पहिला नै प्रयोग गरिएको छ । अन्य पासवर्ड रोज्नुहोस् ।"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must wait longer to change your password"
+msgstr "पासवर्ड परिवर्तन गर्न तपाईँले लामो समय प्रतिक्षा गर्नुपर्दछ"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Sorry, passwords do not match"
+msgstr "माफ गर्नुहोस्। पासवर्ड मिलेको छैन"
+
+#: ../src/mate-screensaver-dialog.c:257
+msgid "Checking..."
+msgstr "जाँच गरिदैँछ..."
+
+#: ../src/mate-screensaver-dialog.c:299 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "प्रमाणीकरण असफल ।"
+
+#: ../src/mate-screensaver-preferences.c:501
+msgid "Blank screen"
+msgstr "खाली पर्दा"
+
+#: ../src/mate-screensaver-preferences.c:507
+msgid "Random"
+msgstr "अनियमित"
+
+#: ../src/mate-screensaver-preferences.c:877
+msgid "Invalid screensaver theme"
+msgstr "अवैध स्क्रिनसेभर विषयवस्तु"
+
+#: ../src/mate-screensaver-preferences.c:880
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "यो फाइल वैध स्क्रिनसेभर विषयवस्तु भएको जस्तो देखिदैँन ।"
+
+#: ../src/mate-screensaver-preferences.c:1007
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d घन्टा"
+msgstr[1] "%d घन्टा"
+
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d मिनेट"
+msgstr[1] "%d मिनेट"
+
+#: ../src/mate-screensaver-preferences.c:1013
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d सेकेन्ड"
+msgstr[1] "%d सेकेन्ड"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:1019
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:1022
+#: ../src/mate-screensaver-preferences.c:1030
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:1025
+#: ../src/mate-screensaver-preferences.c:1033
+#: ../src/mate-screensaver-preferences.c:1037
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1052
+msgid "Never"
+msgstr "कहिले पनि"
+
+#: ../src/mate-screensaver-preferences.c:1451
+msgid "Could not load the main interface"
+msgstr "मुख्य इन्टरफेस लोड गर्न सकेन"
+
+#: ../src/mate-screensaver-preferences.c:1453
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "कृपया स्क्रिनसेभर ठीकरूपमा स्थापित भएको निश्चित गर्नुहोस्"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "डेइमोन नहुनुहोस्"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "त्रुटि सच्याउने कोड सक्षम पार्नुहोस्"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "कार्य स्थापना गर्न असक्षम %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr " PAM_TTY=%s सेट गर्न सकिदैँन"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "गलत पासवर्ड ।"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "हाल अनुमति प्राप्त गर्न अनुमति दिइएको छैन ।"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "लामो समयका लागि प्रणालीमा पहुँच गर्न अनुमति दिइएको छैन ।"
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "सन्देश बससँग दर्ता गर्न असफल"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "सन्देश बसमा जडान भएको छैन"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "यस सत्रमा पहिले नै स्क्रिनसेभर चलिरहेको थियो"
+
+#: ../src/gs-lock-plug.c:269
+msgid "Time has expired."
+msgstr "समय समाप्त भएको छ ।"
+
+#: ../src/gs-lock-plug.c:297
+msgid "You have the Caps Lock key on."
+msgstr "तपाईँले Caps Lock कुञ्जी खुला राख्नुभएको छ ।"
+
+#: ../src/gs-lock-plug.c:1187
+msgid "S_witch User..."
+msgstr "स्विच प्रयोगकर्ता..."
+
+#: ../src/gs-lock-plug.c:1196
+msgid "Log _Out"
+msgstr "लगआउट"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1373
+msgid "%U on %h"
+msgstr "%U मा %h"
+
+#: ../src/gs-lock-plug.c:1387
+msgid "_Password:"
+msgstr "पासवर्ड:"
+
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..1869431
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,1458 @@
+# Dutch translation of mate-screensaver
+#
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Tino Meinen <a.t.meinen at chello.nl>, 2005–2006
+# Wouter Bolsterlee <wbolster at gnome.org>, 2007–2010
+#
+# idle time         - inactiviteit
+# inhibit           - verhindering/verhinderen (of een vorm daarvan)
+# lock              - vergrendeling/vergrendelen (of een vorm daarvan)
+# screensaver       - schermbeveiliging / screensaver (afhankelijk van context)
+# screensaver theme - screensaver
+# theme             - screensaver
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Totem\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-04-13 00:01+0200\n"
+"PO-Revision-Date: 2010-04-13 00:02+0200\n"
+"Last-Translator: Wouter Bolsterlee <wbolster at gnome.org>\n"
+"Language-Team: Dutch <vertaling at vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Schermbeveiliging"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Voorkeuren voor de schermbeveiliging instellen"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Voorbeeld schermbeveiliging</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+"<b>Waarschuwing: het scherm zal niet vergrendeld worden voor de root-user.</"
+"b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Energiebeheer"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Computer als i_nactief beschouwen na:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Voorkeuren schermbeveiliging"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Voorbeeld schermbeveiliging"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "Schermbeveiliging inschakelen wanneer de computer inactief is"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Scherm vergrendelen wanneer schermbeveiliging is geactiveerd"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Voorbeeld"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Schermbeveiligingsthema:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Screensavers"
+
+# dit is niet de schermbeveiliging maar de screensavers zelf
+# dus niet vertalen
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Screensavers"
+
+# aanzetten/instellen
+# (het is zo cryptisch dat het weer leuk wordt)
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activeren bij inactiviteit"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Toestaan een toetsenbord in het scherm te plaatsen"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Afmelden toestaan"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Weergave van sessiestatusbericht toestaan"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Weergave van het sessiestatusbericht toestaan als het scherm vergrendeld is."
+
+# gebruikers wisselen toestaan
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Van gebruiker wisselen toestaan"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Opdrachtregel voor het ingebouwde toetsenbord"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Vergrendelen bij activering"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Afmeldopdracht"
+
+# thema niet meevertalen
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Screensaver selectiemodus"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Zet dit op TRUE (waar) om de schermbeveiliging te activeren wanneer de "
+"sessie inactief is."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Schakel dit in (TRUE) om het toe te staan een toetsenbord in het venster te "
+"plaatsen bij ontgrendeling. De ‘keyboard_command’-sleutel moet ingesteld "
+"worden met de juiste opdrachtregel."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Zet dit op TRUE (waar) om het scherm te vergrendelen wanneer de "
+"schermbeveiliging wordt geactiveerd."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Zet dit op TRUE (waar) om in het ontgrendelings-dialoogvenster een optie te "
+"tonen om van gebruiker te wisselen."
+
+# na een bepaalde tijd zou dubbelzinnig zijn
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Zet dit op TRUE (waar) om een optie te tonen in het ontgrendelings-"
+"dialoogvenster om na een bepaalde periode af te melden. De lengte van de "
+"periode kan worden ingesteld via de sleutel: \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"De opdrachtregel die uitgevoerd wordt als ‘embedded_keyboard_enabled’ is "
+"ingeschakeld om een toetsenbord in het venster te plaatsen. Dit programma "
+"moet een XEMBED-plug interface implementeren en een ‘window XID’ op "
+"‘standard output’ geven."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"De opdracht die uitgevoerd wordt wanneer de afmeldknop wordt aangeklikt. "
+"Deze opdracht moet de gebruiker kunnen afmelden zonder verdere interactie. "
+"Deze sleutel heeft alleen effect wanneer de sleutel \"logout_enable\" "
+"ingesteld is op TRUE (waar)."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Het aantal minuten tussen activeren van de schermbeveiliging en het "
+"vergrendelen van het beeldscherm."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Het aantal minuten tussen activeren van de schermbeveiliging en het tonen "
+"van een afmeldoptie in het ontgrendelings-dialoogvenster. Deze sleutel heeft "
+"alleen effect wanneer de sleutel \"logout_enable\" ingesteld is op TRUE "
+"(waar)."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Het aantal minuten inactiviteit voordat de sessie als inactief wordt "
+"beschouwd."
+
+# tussen wisselen van screensaver/voordat gewisseld wordt/nadat gewisseld wordt
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Het aantal minuten voordat gewisseld wordt van screensaver."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Dit is het aantal seconden inactiviteit voordat het energiebeheer op de "
+"hoogte wordt gebracht. De sessie-agent voor energiebeheer houdt deze sleutel "
+"bij."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"De screensaver-modus. Als de schermbeveiliging wordt gactiveerd, wordt bij "
+"\"blank-only\" alleen een zwart scherm getoond. Bij \"single\" wordt slechts "
+"één screensaver gebruikt (aangegeven via de sleutel \"themes\"). Bij \"random"
+"\" wordt een willekeurige screensaver uit een lijst gebruikt."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Thema voor het vergrendelingsvenster"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Het te gebruiken thema voor het vergrendelingsvenster"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Deze sleutel geeft de lijst met screensavers die door de schermbeveiliging "
+"kunnen worden gebruikt. Het wordt genegeerd wanneer de sleutel: \"mode\" op "
+"\"blank only\" staat. Het moet de naam van de screensaver geven wanneer "
+"\"mode\" \"single\" is, en moet een lijst met screensavers geven wanneer "
+"\"mode\" \"random\" is. "
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tijd voor vergrendeling"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tijd voor afmeldoptie"
+
+# Wat is dit? (Wouter Bolsterlee)
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tijd voor energiebeheer-baseline"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "De tijd voordat de sessie als inactief wordt beschouwd."
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tijd voor screensaver-wisseling"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Bericht voor %R achterlaten:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U op %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Annuleren"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Bericht achterlaten"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Afmelden"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Gebruiker wisselen"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1372
+msgid "_Unlock"
+msgstr "_Deblokkeren"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Dit toont een diashow met foto's van de ruimte."
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bubbelt het MATE voet-logo over het scherm"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Drijvende voet"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Dit toont een diashow met afbeeldingen uit uw afbeeldingenmap."
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Afbeeldingenmap"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Dit toont pop-art-achtige blokken in pulserende kleuren."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop-art blokken"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Geef --help voor gebruiksinformatie.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "Paden van afbeeldingen tonen"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "Afbeeldingen af en toe roteren tijdens het bewegen"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Frame-rate en andere getallen tonen"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "Maximum aantal afbeeldingen op het scherm"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "Beginafmeting en -positie van het venster"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "BREEDTExHOOGTE+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "Te gebruiken bronafbeelding"
+
+# image niet vertalen dus!
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "image - beweegt afbeeldingen over het scherm"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "U moet een afbeelding opgeven.  Geef --help voor gebruiksinformatie.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Locatie waar de afbeeldingen vandaan worden gehaald"
+
+# LOCATIE
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PAD"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Achtergrondkleur voor afbeeldingen"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Afbeeldingen niet in willekeurige volgorde tonen"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Afbeeldingen niet uitvergroten op scherm"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Bestanden kopiëren"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Van:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Naar:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Thema's kopiëren"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Ongeldige screensaver"
+
+# geen geldige schermbeveiliging/screensaver
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "‘%s’ lijkt niet op een geldig schermbeveiligingsthema."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Bestand kopiëren: %u van %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Zorgt dat de schermbeveiliging netjes afsluit"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "De toestand van de schermbeveiliging opvragen"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Opvragen hoe lang de schermbeveiliging actief is geweest"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Geeft de actieve schermbeveiliging opdracht om het scherm onmiddellijk te "
+"blokkeren"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Indien de schermbeveiliging actief is, wisselen naar een andere grafische "
+"demo"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "De schermbeveiliging activeren (het scherm zwart maken)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Indien de schermbeveiliging actief is, deze deactiveren (het scherm "
+"zichtbaar maken)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "De actieve schermbeveiling laten denken dat er gebruikersactiviteit is"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Verhinderen dat de schermbeveiliging ingeschakeld wordt. Deze opdracht "
+"blokkeert zo lang de verhindering actief is."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+"De aanroepende toepassing die de schermbeveiliging verhindert te starten"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "De reden voor de verhindering van de schermbeveiling"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versie van deze toepassing"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "De schermbeveiliging is %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "actief"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inactief"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "De schermbeveiliging wordt niet verhinderd\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "De schermbeveiliging wordt verhinderd door:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "De schermbeveiliging is geactiveerd geweest gedurende %d seconden\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "De schermbeveiliging is momenteel niet actief.\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Debug uitvoer tonen"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Een afmeldknop tonen"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "Opdracht die wordt uitgevoerd met de afmeldknop"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Een knop tonen met 'wissel gebruiker'"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "Te tonen bericht in het dialoogvenster"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "BERICHT"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "Niet gebruikt"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Gebruikersnaam:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Wachtwoord:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr "U dient uw wachtwoord direct te veranderen (wachtwoord verlopen)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"U dient uw wachtwoord direct te veranderen (op last van de systeembeheerder)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Uw account is verlopen; neem contact op met de systeembeheerder"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "Geen wachtwoord opgegeven"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "Wachtwoord ongewijzigd"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "Kon gebruikersnaam niet opvragen"
+
+# vrij vertaald (Wouter Bolsterlee)
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Nieuw wachtwoord (opnieuw):"
+
+# vrij vertaald (Wouter Bolsterlee)
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Nieuw wachtwoord:"
+
+# vrij vertaald (Wouter Bolsterlee)
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "Huidig wachtwoord:"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "Fout bij veranderen NIS-wachtwoord."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "U dient een langer wachtwoord te gebruiken"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "Dit wachtwoord is al eens gebruikt. Kies een nieuw wachtwoord."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "U dient langer te wachten om uw wachtwoord te veranderen"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Helaas, de wachtwoorden komen niet overeen"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "Controle…"
+
+# vrij vertaald (Wouter Bolsterlee)
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Controle mislukt."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Zwart scherm"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Willekeurig"
+
+#  1 uur, 2 uur
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d uur"
+msgstr[1] "%d uur"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuut"
+msgstr[1] "%d minuten"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d seconde"
+msgstr[1] "%d seconden"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nooit"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Kon de hoofd-interface niet laden"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Controleer of de schermbeveiliging correct is geïnstalleerd"
+
+# vrij vertaald
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Niet als daemon uitvoeren"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Debugging code gebruiken"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Schermbeveiling en -vergrendeling opstarten"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Instellen van service ‘%s’ mislukt: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Instellen ‘PAM_TTY=%s’ mislukt"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Ongeldig wachtwoord."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "U heeft geen toegang op dit moment."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "U heeft niet langer toegang tot deze computer."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "kon niet aanmelden bij de berichtenbus"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "kon verbonden met de berichtenbus"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "schermbeveiliging al actief in deze sessie"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Tijd is verlopen."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "De Caps Lock staat aan."
+
+#: ../src/gs-lock-plug.c:1352
+msgid "S_witch User..."
+msgstr "Gebruiker _wisselen…"
+
+#: ../src/gs-lock-plug.c:1361
+msgid "Log _Out"
+msgstr "_Afmelden"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1537
+msgid "%U on %h"
+msgstr "%U op %h"
+
+#: ../src/gs-lock-plug.c:1551
+msgid "_Password:"
+msgstr "_Wachtwoord:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Reden voor afwezigheid"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Reden voor de afwezigheid van de computer."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "kopiëren '%s'"
+
+#~ msgid "From URI"
+#~ msgstr "Via URI"
+
+# binnengehaald/overgedragen
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI waarvan wordt overgedragen"
+
+#~ msgid "To URI"
+#~ msgstr "Naar URI"
+
+# verstuurd/overgedragen
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI waarnaar wordt overgedragen"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Voltooide deel"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Voltooide deel van de overdracht"
+
+#~ msgid "Current URI index"
+#~ msgstr "Huidige URI-index"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Huidige URI-index - begint bij 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Totaal URI's"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Totaal aantal URI's"
+
+#~ msgid "Connecting..."
+#~ msgstr "Verbinden..."
+
+# vrij vertaald (Wouter Bolsterlee)
+#~ msgid "Authentication"
+#~ msgstr "Authenticatie"
+
+#~ msgid "S_witch to user:"
+#~ msgstr "Wisselen naar _gebruiker:"
+
+# infinitief hier mooier
+#~ msgid "_Switch user..."
+#~ msgstr "_Gebruiker wisselen…"
+
+# N/X
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "Manager"
+#~ msgstr "Beheerder"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "De beheerder van dit object."
+
+#~ msgid "Name"
+#~ msgstr "Naam"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "De naam van het X11-display waarnaar dit object verwijst."
+
+#~ msgid "User"
+#~ msgstr "Gebruiker"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "De gebruiker die momenteel op deze virtuele terminal is aangemeld."
+
+#~ msgid "Console"
+#~ msgstr "Console"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr ""
+#~ "Het nummer van de virtuele console waaronder dit display kan worden "
+#~ "gevonden, of %-1."
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Of deze display een display in een venster is (Xnest)."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr ""
+#~ "Om onbekende redenen kon er geen contact worden gemaakt met de display-"
+#~ "beheerder."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "De display-manager is niet actief of te oud."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "De ingestelde limiet van het aantal flexibele servers is bereikt."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "Er was een onbekende fout bij het starten van X."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "De X-server kon niet volledig worden gestart."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "Er zijn te veel actieve X-sessies."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "De ingebedde X-server (Xnest) kon geen verbinding maken met uw huidige X-"
+#~ "server."
+
+# kon niet worden/werd
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "De X-server in de MDM-configuratie werd niet gevonden."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "Trachten een onbekende afmeldactie, of trachten een afmeldactie die niet "
+#~ "beschikbaar is, in te stellen."
+
+# zijn/worden niet ondersteunden
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Virtuele terminals niet ondersteund."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Ongeldig getal voor virtuele terminal."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "Trachten een niet-ondersteunde configuratiesleutel bij te werken."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "Bestand ~/.Xauthority foutief geconfigureerd of ontbrekend."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr ""
+#~ "Er werden te veel berichten naar de display-manager verstuurd welke "
+#~ "vervolgs heeft opgehanden."
+
+# gestuurd/verstuurd
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "De display-manager heeft een onbekende foutmelding gestuurd."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "De gebruiker waar dit menu-onderdeel voor is."
+
+#~ msgid "Icon Size"
+#~ msgstr "Pictogramgrootte"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "De afmeting van het gebruikte pictogram."
+
+# Rare term, maar volgens mij is het een plaatje (Wouter Bolsterlee)
+#~ msgid "Indicator Size"
+#~ msgstr "Afbeeldingsgrootte"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Grootte van de afbeelding"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Ruimte rondom afbeelding"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "De ruimte tussen de gebruikersnaam en de afbeelding"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr ""
+#~ "Het gebruiksbeheerderobject door welke deze gebruiker wordt beheerd."
+
+#~ msgid "Show Details"
+#~ msgstr "Details tonen"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (de display-manager van MATE) is niet actief."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Mogelijkerwijs gebruikt u een andere display-manager zoals KDM (de "
+#~ "display-manager van KDE) of xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Indien u toch deze applet wilt gebruiken, moet u zelf MDM opstarten of uw "
+#~ "systeembeheerder vragen deze op te starten."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "Kan niet communiceren met MDM (de display-manager van MATE)"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Misschien is er momenteel een oude versie van MDM actief."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "Kan niet communiceren met mdm, misschien is er een oude versie actief."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "Het maximum toegestane aantal flexibele X-servers is bereikt."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "Er waren fouten bij het opstarten van de X-server."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "De X-server is mislukt.  Mogelijk is deze niet goed geconfigureerd."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "Te veel X-sessies actief."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "De ingebedde X-server (Xnest) kan geen verbinding maken met uw huidige X-"
+#~ "server.  Mogelijk bezit u geen X-authorisatie-bestand."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "De ingebedde X-server (Xnest) is niet beschikbaar, of mdm is foutief "
+#~ "geconfigureerd.\n"
+#~ "Installeer het pakket Xnest om ingebed aan te kunnen melden."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "De X-server is niet beschikbaar, waarschijnlijk is mdm foutief "
+#~ "geconfigureerd."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr ""
+#~ "Trachten te schakelen naar een ongeldig nummer voor een virtuele terminal."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Er is schijnbaar geen aanmeldcontrole nodig voor deze bewerking.  "
+#~ "Mogelijkerwijs is uw .Xauthority-bestand foutief ingesteld."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr ""
+#~ "Er zijn te veel berichten gestuurd naar mdm welke vervolgens heeft "
+#~ "opgehangen."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "Er is een onbekende fout opgetreden."
+
+#~ msgid "Time before activation"
+#~ msgstr "Tijd voor activering"
+
+#~ msgid "_Screensaver"
+#~ msgstr "_Schermbeveiliging"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Geen grafische screensavers gebruiken wanneer het scherm zwart is"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr ""
+#~ "Grafische screensavers gebruiken wanneer het scherm zwart is (indien "
+#~ "toepasbaar)"
+
+#~ msgid "0 seconds"
+#~ msgstr "0 seconden"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "Dat wachtwoord was onjuist."
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "Beeldscherm-energiebeheer toestaan"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr ""
+#~ "Zet dit op TRUE (waar) om de schermbeveiliging het beeldscherm te kunnen "
+#~ "laten uitzetten."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "Het aantal minuten tussen activeren van de schermbeveiliging en het op "
+#~ "standby zetten van het beeldscherm."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "Het aantal minuten tussen activeren van de schermbeveiliging en het in de "
+#~ "slaapstand zetten van het beeldscherm."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr ""
+#~ "Het aantal minuten tussen activeren van de schermbeveiliging en het "
+#~ "uitzetten van het beeldscherm."
+
+#~ msgid "Time before power off"
+#~ msgstr "Tijd voor uitzetten"
+
+#~ msgid "Time before standby"
+#~ msgstr "Tijd voor standby"
+
+#~ msgid "Time before suspend"
+#~ msgstr "Tijd voor slaapstand"
+
+#~ msgid "    "
+#~ msgstr "    "
+
+#~ msgid "_Activate after:"
+#~ msgstr "_Activeren na:"
+
+#~ msgid ""
+#~ "The number of minutes of idle time before activating the screensaver."
+#~ msgstr ""
+#~ "Het aantal minuten inactiviteit voordat van de schermbeveiliging wordt "
+#~ "ingeschakeld."
+
+# geen schermbeveiliging/uitgezet
+#~ msgid "Disabled"
+#~ msgstr "Uitgezet"
+
+#~ msgid "Log in as a new user"
+#~ msgstr "Aanmelden als nieuwe gebruiker"
+
+#~ msgid "Welcome to %s"
+#~ msgstr "Welkom op %s"
+
+# het beeld/scherm zwart wordt/de monitor op zwart gaat<
+#
+#~ msgid "How many minutes until the monitor goes black"
+#~ msgstr "Na hoeveel minuten het scherm zwart wordt"
+
+#~ msgid "How many minutes until the monitor goes black."
+#~ msgstr "Na hoeveel minuten het scherm zwart wordt."
+
+# energie-zuinig/bespaar/spaarstand
+# het beeldscherm in de energiespaarstand gaat/komt
+#~ msgid "How many minutes until the monitor power-saves"
+#~ msgstr "Na hoeveel minuten de monitor op power-save gaat"
+
+#~ msgid "How many minutes until the monitor power-saves."
+#~ msgstr "Na hoeveel minuten de monitor op power-save gaat."
+
+#~ msgid "How many minutes until the monitor powers down"
+#~ msgstr "Na hoeveel minuten de monitor uitgezet wordt"
+
+#~ msgid "How many minutes until the monitor powers down."
+#~ msgstr "Na hoeveel minuten de monitor uitgezet wordt."
+
+#~ msgid ""
+#~ "The number of minutes after blanking the screen before a logout option "
+#~ "will appear"
+#~ msgstr ""
+#~ "Het aantal minuten nadat het scherm zwart is geworden dat een afmeldoptie "
+#~ "verschijnt"
+
+#~ msgid "The number of minutes after blanking the screen before locking"
+#~ msgstr ""
+#~ "Het aantal minuten nadat het scherm zwart is geworden dat het scherm "
+#~ "wordt geblokkeerd"
+
+#~ msgid "The number of minutes after blanking the screen before locking."
+#~ msgstr ""
+#~ "Het aantal minuten nadat het scherm zwart is geworden dat het scherm "
+#~ "wordt geblokkeerd."
+
+#~ msgid ""
+#~ "This key specifies the selection mode used by the screensaver. Possible "
+#~ "values are \"disabled\", \"blank-only\", \"single\", and \"random\"."
+#~ msgstr ""
+#~ "Deze sleutel geeft de selectiemodus van de schermbeveiliging. Mogelijk "
+#~ "waarden zijn \"disabled\", \"blank-only\", \"single\", en \"random\"."
+
+#~ msgid "Whether to lock as well as blank"
+#~ msgstr "Of zowel geblokkeerd als zwartgemaakt wordt"
+
+#~ msgid "Whether to lock as well as blank."
+#~ msgstr "Of zowel geblokkeerd als zwartgemaakt wordt."
+
+#~ msgid "Whether to offer the option of logging out after logout_delay"
+#~ msgstr "Of een afmeldoptie geboden wordt na logout_delay"
+
+#~ msgid "Whether to offer the option of logging out after logout_delay."
+#~ msgstr "Of een afmeldoptie geboden wordt na logout_delay."
+
+#~ msgid "Whether to power down the monitor"
+#~ msgstr "Of het beeldscherm wordt uitgezet"
+
+#~ msgid "About %ld second left"
+#~ msgid_plural "About %ld seconds left"
+#~ msgstr[0] "Ongeveer %ld seconde over"
+#~ msgstr[1] "Ongeveer %ld seconden over<"
+
+#~ msgid "Enter a password to unlock the screen"
+#~ msgstr "Geef het wachtwoord om het scherm te deblokkeren"
+
+#~ msgid "Name:"
+#~ msgstr "Naam:"
+
+#~ msgid "Switch to another user?"
+#~ msgstr "Wisselen naar andere gebruiker?"
+
+#~ msgid "A menu to quickly switch between users"
+#~ msgstr "Een menu om snel te wisselen tussen gebruikers"
+
+#~ msgid "User Switcher Applet Factory"
+#~ msgstr "Gebruikers wisselen applet-fabriek"
+
+#~ msgid "_About"
+#~ msgstr "I_nfo"
+
+#~ msgid "_Change Photo..."
+#~ msgstr "_Foto wijzigen..."
+
+#~ msgid "_Edit Users and Groups..."
+#~ msgstr "Gebruikers en groepen be_werken..."
+
+#~ msgid "_Help"
+#~ msgstr "_Hulp"
+
+#~ msgid "_Login Screen Setup..."
+#~ msgstr "Aanmeldscherm setup..."
+
+#~ msgid "_Preferences"
+#~ msgstr "_Voorkeuren"
+
+#~ msgid "Display Style"
+#~ msgstr "Weergavestijl"
+
+#~ msgid "Lock Screen After Switch"
+#~ msgstr "Scherm beveiligen na wisseling"
+
+# item/onderdeel
+#~ msgid "Show \"Login Screen\" Menuitem"
+#~ msgstr "Menu-onderdeel \"Aanmeldscherm\" tonen"
+
+#~ msgid "Show \"Login Window\" Menuitem"
+#~ msgstr "Menu-onderdeel \"Aanmeldvenster\" tonen"
+
+# actieve/aangemeldde/?
+#~ msgid "Show Active Users Only"
+#~ msgstr "Alleen actieve gebruikers tonen"
+
+#~ msgid ""
+#~ "Specifies how to display the applet in the panel. Use \"username\" to "
+#~ "display the current user's name, \"icon\" to show the people icon, or "
+#~ "\"text\" to use the word `Users.'"
+#~ msgstr ""
+#~ "Geeft aan hoe het applet in het paneel wordt weergegeven. Gebruik "
+#~ "\"username\" om de huidige gebruikersnaam te tonen, \"icon\" om het "
+#~ "pictogram te tonen, of \"text\" om woord 'Gebruikers' te tonen."
+
+#~ msgid "Use Xnest"
+#~ msgstr "Xnest gebruiken"
+
+#~ msgid ""
+#~ "When to show the \"Login Window\" item. Possible values include: \"always"
+#~ "\" to always show the item, \"never\" to never show the item, and \"auto"
+#~ "\" (the default) to show the item when the applet is in Xnest mode."
+#~ msgstr ""
+#~ "Wanneer het \"Aanmeldvenster\" wordt getoond. Mogelijke waardes zijn: "
+#~ "\"always\" om het altijd te tonen, \"never\" om het nooit te tonen, en "
+#~ "\"auto\" (de standaard) om het item te tonen wanneer het applet in Xnest-"
+#~ "modus is."
+
+#~ msgid ""
+#~ "When to show the \"Login Window\" item. Possible values include: \"always"
+#~ "\" to always show the item, \"never\" to never show the item, and \"auto"
+#~ "\" (the default) to show the item when the applet is in console (not "
+#~ "Xnest) mode."
+#~ msgstr ""
+#~ "Wanneer het \"Aanmeldvenster\" wordt getoond. Mogelijke waardes zijn: "
+#~ "\"always\" om het altijd te tonen, \"never\" om het nooit te tonen, en "
+#~ "\"auto\" (de standaard) om het item te tonen wanneer het applet in "
+#~ "console-modus (niet Xnest-modus) is."
+
+#~ msgid ""
+#~ "Whether or not to create new Xnest windows instead of spawning new "
+#~ "consoles when switching users."
+#~ msgstr ""
+#~ "Of nieuwe Xnest-vensters worden aangemaakt in plaats van het ceeeren van "
+#~ "nieuwe consoles bij het wisselen van gebruiker."
+
+#~ msgid ""
+#~ "Whether or not to lock the screen after switching to a different console."
+#~ msgstr ""
+#~ "Of het scherm wordt beveiligd bij het wisselen naar een andere console."
+
+# aangemeld/ingelogd
+#~ msgid ""
+#~ "Whether to show only users who are currently logged in, or all users."
+#~ msgstr ""
+#~ "Of alleen gebruikers worden getoond die momenteel zijn aangemeld, of alle "
+#~ "gebruikers."
+
+#~ msgid "<span weight=\"bold\" size=\"larger\">Multiple Logins Found</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"larger\">Meerder aanmeldingen gevonden</span>"
+
+#~ msgid "Appearance"
+#~ msgstr "Uiterlijk"
+
+#~ msgid "Continue"
+#~ msgstr "Doorgaan"
+
+#~ msgid "Create new logins in _nested windows"
+#~ msgstr "_Nieuwe aanmeldingen aanmaken in ingebedde vensters"
+
+#~ msgid "Details"
+#~ msgstr "Details"
+
+#~ msgid "Multiple Logins Found - User Switcher"
+#~ msgstr "Meerdere aanmeldingen gevonden - Gebruikers wisselen"
+
+#~ msgid "Options"
+#~ msgstr "Opties"
+
+#~ msgid "Some preferences have been locked by the system adminstrator."
+#~ msgstr "Bepaalde voorkeuren zijn vergrendeld door de systeembeheerder."
+
+#~ msgid ""
+#~ "The user you want to switch to is logged in multiple times on this "
+#~ "computer. Which login do you want to switch to?"
+#~ msgstr ""
+#~ "De gebruikers waarnaar u wilt wisselen is meerdere malen op deze computer "
+#~ "aangemeld. Naar welke aanmelding wilt u wisselen?"
+
+#~ msgid "Use the `people' icon for the menu title"
+#~ msgstr "Gebruik het pictogram voor de menutitel"
+
+#~ msgid "Use the current user's name for the menu title"
+#~ msgstr "Gebruik de huidige gebruikersnaam voor de menutitel"
+
+#~ msgid "Use the word `Users' as the menu title"
+#~ msgstr "Gebruik het woord 'Gebruikers' als menutitel"
+
+#~ msgid "User Switcher Error"
+#~ msgstr "Gebruikers wisselen fout"
+
+#~ msgid "Users"
+#~ msgstr "Gebruikers"
+
+#~ msgid ""
+#~ "When a new login must be created to switch users, create it in a window "
+#~ "instead of on a new screen"
+#~ msgstr ""
+#~ "Wanneer een nieuwe aanmelding moet worden aangemaakt om te wisselen van "
+#~ "gebruiker, maak deze dan in een venster in plaats van in een nieuw scherm"
+
+#~ msgid ""
+#~ "When changing to a different display, activate the screensaver for this "
+#~ "display."
+#~ msgstr ""
+#~ "De schermbeveiliging aanzetten bij het wisselen naar een ander display."
+
+#~ msgid "_Lock the screen after switching users"
+#~ msgstr "Het scherm _beveiligen bij het wisselen van gebruikers"
+
+#~ msgid "Login Screen"
+#~ msgstr "Aanmeldscherm"
+
+#~ msgid "Login Window"
+#~ msgstr "Aanmeldvenster"
+
+#~ msgid "A menu to quickly switch between users."
+#~ msgstr "Een menu om snel te wisselen tussen gebruikers."
+
+#~ msgid "translator-credits"
+#~ msgstr ""
+#~ "Tino Meinen\n"
+#~ "zie ook: nl.gnome.org"
+
+#~ msgid "Multiple Logins Found - Fast User-Switch"
+#~ msgstr "Meerdere aanmeldingen gevonden - Snel gebruikers wisselen"
+
+#~ msgid "Multiple Logins Found"
+#~ msgstr "Meerdere aanmeldingen gevonden"
+
+#~ msgid "%s in a nested window on console %d"
+#~ msgstr "%s in een ingebed venster op console %d"
+
+#~ msgid "%s on console %d"
+#~ msgstr "%s op console %d"
+
+#~ msgid "Display Manager Unavailable"
+#~ msgstr "Display-beheer niet beschikbaar"
+
+#~ msgid ""
+#~ "In order for the User Selector to function properly, the MATE Display "
+#~ "Manager must be running, but it is not."
+#~ msgstr ""
+#~ "Om de gebruikers-kiezer correct te kunnen laten werken, moet de MATE "
+#~ "Display Manager in werking zijn, maar dat is niet het geval."
+
+#~ msgid "Multiple Consoles Not Supported"
+#~ msgstr "Meerdere consoles niet ondersteund"
+
+#~ msgid "Too Many Sessions"
+#~ msgstr "Te veel sessies"
+
+#~ msgid ""
+#~ "There are currently too many sessions running to create a new one. "
+#~ "Someone must log out, or the system configuration must be changed to "
+#~ "allow for more."
+#~ msgstr ""
+#~ "Er zijn momenteel te veel sessies actief om een nieuwe te kunnen "
+#~ "aanmaken. Iemand moet zich afmelden, of de systeemconfiguratie moet "
+#~ "worden gewijzigd om meer sessies toe te laten."
+
+#~ msgid "Graphical System Error"
+#~ msgstr "Grafische systeemfout"
+
+#~ msgid ""
+#~ "The X Windows graphical system did not properly start, which prevents new "
+#~ "graphical logins. It is likely that X or MDM is not properly configured."
+#~ msgstr ""
+#~ "Het X Windows grafische systeem kon niet goed opstarten waardoor nieuwe "
+#~ "grafische aanmeldingen mislukken. Mogelijkerwijs is X of MDM niet correct "
+#~ "geconfigureerd."
+
+#~ msgid "Permissions Error"
+#~ msgstr "Toegangsrechten-fout"
+
+#~ msgid ""
+#~ "Your user does not have permissions to create additional logins.  Check "
+#~ "your <i>~/.Xauthority</i> setup."
+#~ msgstr ""
+#~ "Uw gebruiker heeft geen rechten om extra aanmeldingen te kunnen "
+#~ "aanmaken.  Controleer de instellingen in uw bestand <i>~/.Xauthority</i>."
+
+#~ msgid "Missing Required File"
+#~ msgstr "Vereist bestand ontbreekt"
+
+#~ msgid ""
+#~ "The User Selector's interfaces file, `%s', could not be opened. It is "
+#~ "likely that this application was not properly installed or configured."
+#~ msgstr ""
+#~ "Het interface-bestand %s voor de gebruikers-kiezer, kon niet worden "
+#~ "geopend. Waarschijnlijk is deze toepassing niet correct geïnstalleerd of "
+#~ "geconfigureerd."
diff --git a/po/nn.po b/po/nn.po
new file mode 100644
index 0000000..e08eb7d
--- /dev/null
+++ b/po/nn.po
@@ -0,0 +1,955 @@
+# Norwegian nynorsk translation of mate-screensaver.
+# Copyright (C) 2008 The Free Software Foundation Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+# Kjartan Maraas  <kmaraas at gnome.org>, 2005-2006.
+# Eskild Hustvedt <i18n at zerodogg.org>, 2007, 2008
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver 2.16.x\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-04-04 16:21+0200\n"
+"PO-Revision-Date: 2008-04-04 16:23+0200\n"
+"Last-Translator: Eskild Hustvedt <eskildh at gnome.org>\n"
+"Language-Team: Norwegian Nynorsk <i18n-no at lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Skjermsparar"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Set brukarval for skjermspararen"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Førehandsvising av skjermsparar</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Advarsel: skjermen vil ikkje verta låst for root.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "Strø_mstyring"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Sjå på datamaskinen som _inaktiv etter:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Brukarval for skjermsparar"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Førehandsvising av skjermsparar"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktiver skjermsparar når datamaskinen er inaktiv"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Lås skjermen når aktiv"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "_Førehandsvis"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema for _skjermsparar:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "Tema for skjermsparar"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Skjermsparare"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktiver når inaktiv"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Tillat å byggja inn eit tastatur i vindauget"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Tillat å logge ut"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Tillat byte av brukar"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "Kommando for innebygget tastatur"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "Lås ved aktivering"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "Kommando for å logge ut"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "Årsak til fravær"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "Modus for val av drakt"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Set denne til TRUE for å aktivere skjermspararen når sesjonen er ubrukt."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Set denne til TRUE for å gjera det mogleg å innlemme eit tastatur i "
+"vindauget ved ein skal låse opp skjermen. Nøkkelen «keyboard_command» må vera "
+"sett med rett kommando."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Set denne til TRUE for å låse skjermen når skjermspararen aktiverast."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Set denne til TRUE for å gje eit val for å byte til ein annan brukarkonto i "
+"dialogen for å låse opp skjermen."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Set denne til TRUE for å gje eit val for å logge ut etter eit tidsavbrudd i "
+"dialogen for å låse opp skjermen. Tidsavbruddet spesifiserast i nøkkelen "
+"«logout_delay»."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Kommando som skal køyrast viss nøkkelen «embedded_keyboard_enabled» er sett "
+"til TRUE. Denne kommandoen må implementere eit grensesnitt basert på XEMBED "
+"og skriva ut ein XID for vindauget på standard utdatakanal."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Kommando som skal køyrast når utloggingsknappen vert klikkat på. Denne "
+"kommandoen bør enkelt og greit logge ut brukaren utan noko krav om handling "
+"frå brukarens side. Denne nøkkelen har inga effekt viss ikkje \"logout_enable"
+"\"-nøkkelen er sett til TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Tal på minutt før skjermen låses etter aktivering av skjermsparar."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Tal på minutt før val for utlogging vert viste i dialogen for å låse opp "
+"skjermen. Denne nøkkelen vil berre fungere viss nøkkelen «logout_enable» er "
+"sett til TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Tal på minutt med inaktivitet før sesjonen betraktes som ubrukt."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Tal på minutt før endring av skjermsparardrakt."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Tal på sekund med inaktivitet før strømstyring får beskjed. Denne nøkkelen "
+"er sett og vedlikeholdt av sesjonens strømstyringsagent."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "Årsak til fravær frå datamaskinen."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Utvalsmodus som brukast av skjermspararen. Kan vera «blank-only» for å "
+"aktivere skjermspararen utan å bruka ein drakt, «single» for å aktivere "
+"skjermspararen med berre eit drakt (oppgjeven i nøkkelen «themes»), og «random» "
+"for å aktivere skjermspararen med eit tilfeldig drakt."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema for dialog for låsing av skjerm"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema som skal brukast for dialog for låsing av skjerm."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Denne nøkkelen spesifiserer listen med drakt som skal brukast av "
+"skjermspararen. Den ignorerast når «mode»-nøkkslen er «blank-only», gjev "
+"draktnamnet når «mode» er «single» og gjev ei lista med draktar når «mode» er "
+"«random»."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tid før låsing av skjerm"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tid før utloggingsmulighet"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tid før grunnlinje for strømstyring er nådd"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tid før sesjonen betraktes som ubrukt"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tid før endring av drakt"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Legg att ein beskjed til %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U på %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "A_vbryt"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "_Legg att beskjed"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "_Logg ut"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Byt brukar"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1212
+msgid "_Unlock"
+msgstr "Lå_s opp"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Lysbiletvising med bileta frå verdensrommet"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE logoen flytande rundt som bobler på skjermen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Glidande føtter"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Vis ein lysbiletfremvising frå din biletmappe"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Biletmappe"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Eit popkunst-aktig rutenett med pulserande fargar."
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Popkunstfirkantar"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Vis stigane bileta følger"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Roter bileta nokre gonger medan dei beveg seg"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Vis bilethastighet og annan statistikk"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Maksimalt tal på bileta som skal behaldast på skjermen"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAKS_BILDER"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Initiell storleik og posisjon for vindauget"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "BREDDExHØYDE+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Bilete som skal brukast"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "bilete - lèt bileta flyte rundt på skjermen"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Sjå --help for hjelp til bruk.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Du må oppgje eitt bilete. Sjå --help for bruksinformasjon.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Stad bileta skal hentes frå"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "STIGE"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Farge som skal brukast for biletbakgrunn"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "«#rrggbb»"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Ikkje hent bileta i tilfeldig rekkjefølgja frå stad"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ikkje strekk bileta på skjermen"
+
+#: ../src/copy-theme-dialog.c:211
+msgid "Copying files"
+msgstr "Kopierer filer"
+
+#: ../src/copy-theme-dialog.c:229
+msgid "From:"
+msgstr "Frå:"
+
+#: ../src/copy-theme-dialog.c:233
+msgid "To:"
+msgstr "Til:"
+
+#: ../src/copy-theme-dialog.c:253
+msgid "Copying themes"
+msgstr "Kopierer draktar"
+
+#: ../src/copy-theme-dialog.c:297
+msgid "Invalid screensaver theme"
+msgstr "Ugyldig drakt for skjermsparar"
+
+#: ../src/copy-theme-dialog.c:300
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ser ikkje ut til å vera ein gyldig skjermsparardrakt."
+
+#: ../src/copy-theme-dialog.c:480
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopierer fil: %u av %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Sørger for sikker avslutning av skjermspararen"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Spør etter skjermspararstatus"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Spør kor lenge skjermspararen har vore aktiv"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Tvingar køyrande skjermsparar til å låse skjermen omgåande"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Skift til eit anna drakt om skjermspararen er aktiv"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Slå på skjermspararen (blank ut skjermen)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Deaktiver skjermspararen om den er aktiv"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Kommuniser med køyrande skjermsparar for å simulere brukaraktivitet"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Hindre skjermspararen frå å aktiverast. Kommandoen blokkerer så lenge "
+"hindringa er aktiv."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Programmet som hindrar skjermspararen"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Årsak for hinding av skjermsparar."
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Skjermspararversjon"
+
+#: ../src/mate-screensaver-command.c:249
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Skjermsparar er %s\n"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "active"
+msgstr "aktiv"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "inactive"
+msgstr "inaktiv"
+
+#: ../src/mate-screensaver-command.c:274
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Skjermspararen har vore aktiv i %d sekund.\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "Vis avlusingsinformasjon"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "Vis knapp for å logge ut"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "Kommando som skal køyrast ved klikk på utloggingsknappen"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "Vis knapp for å byte brukar"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "Melding som skal vert viste i dialogen"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "MELDING"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Brukarnamn:"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Passord:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Du må endra ditt passord no (passordet er utløpt)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Du må endra ditt passord no (bestemt av administrator)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Din konto har utgått; vennligst kontakt systemadministrator"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "Inga passord oppgjeven"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "Passordet er ikkje endra"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Kan ikkje finna brukarnamn"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "Skriv inn nytt UNIX-passord på nytt:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "Oppgje nytt UNIX-passord:"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "(aktivt) UNIX-passord:"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "Feil under endring av NIS-passord."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "Du må velja eit lenger passord"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "Passordet er allereie brukt. Vel eit anna."
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "Du må vente lenger før du endrar ditt passord"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "Beklager, passorda er ikkje like"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Sjekkar..."
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autentisering feilet."
+
+#: ../src/mate-screensaver-preferences.c:498
+msgid "Blank screen"
+msgstr "Blank skjerm"
+
+#: ../src/mate-screensaver-preferences.c:504
+msgid "Random"
+msgstr "Tilfeldig"
+
+#: ../src/mate-screensaver-preferences.c:954
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d time"
+msgstr[1] "%d timar"
+
+#: ../src/mate-screensaver-preferences.c:957
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minutt"
+msgstr[1] "%d minutt"
+
+#: ../src/mate-screensaver-preferences.c:960
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekund"
+msgstr[1] "%d sekund"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:966
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:969
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:972
+#: ../src/mate-screensaver-preferences.c:980
+#: ../src/mate-screensaver-preferences.c:984
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:999
+#, c-format
+msgid "Never"
+msgstr "Aldri"
+
+#: ../src/mate-screensaver-preferences.c:1398
+msgid "Could not load the main interface"
+msgstr "Kunne ikkje lasta hovudbrukargrensesnittet"
+
+#: ../src/mate-screensaver-preferences.c:1400
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Vennligst sjå til at skjermspararen er skikkeleg installert"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Ikkje køyr som teneste"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Aktiver avlusingskode"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Kan ikkje etablere teneste %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Kan ikkje setja PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Ugyldig passord."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Inga tillatelse til å få tilgang no."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Tilgangen til systemet er fjerna."
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "klarte ikkje å registrere hos meldingsbussen"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "ikkje koblet til meldingsbussen"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "skjermsparar køyrer allereie i denne sesjonen"
+
+#: ../src/gs-lock-plug.c:269
+msgid "Time has expired."
+msgstr "Tida har løpt ut."
+
+#: ../src/gs-lock-plug.c:297
+msgid "You have the Caps Lock key on."
+msgstr "Caps-Lock tasten er aktivert."
+
+#: ../src/gs-lock-plug.c:1192
+msgid "S_witch User..."
+msgstr "_Byt brukar..."
+
+#: ../src/gs-lock-plug.c:1201
+msgid "Log _Out"
+msgstr "Logg _ut"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1378
+msgid "%U on %h"
+msgstr "%U på %h"
+
+#: ../src/gs-lock-plug.c:1392
+msgid "_Password:"
+msgstr "_Passord:"
+
+#~ msgid "Copying '%s'"
+#~ msgstr "Kopierer «%s»"
+
+#~ msgid "From URI"
+#~ msgstr "Frå URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI overførast frå"
+
+#~ msgid "To URI"
+#~ msgstr "Til URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI overførast til"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Del ferdigstilt"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Andel av overføring som er fullført"
+
+#~ msgid "Current URI index"
+#~ msgstr "Aktiv URI-indeks"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Aktiv URI-indeks - starta frå 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Totalt tal på URI'er"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Totalt tal på URI'er"
+
+#~ msgid "Connecting..."
+#~ msgstr "Koplar til..."
+
+#~ msgid "Authentication"
+#~ msgstr "Autentisering"
+
+#~ msgid "Note"
+#~ msgstr "Merk"
+
+#~ msgid "N"
+#~ msgstr "X"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "Håndterer som eier dette objektet."
+
+#~ msgid "Name"
+#~ msgstr "Navn"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "Navn på skjermen dette objektet refererer til."
+
+#~ msgid "User"
+#~ msgstr "Bruker"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "Bruker som er logget inn på denne virtuelle terminalen."
+
+#~ msgid "Console"
+#~ msgstr "Konsoll"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr "Konsollnummeret denne skjermen finnes på, eller %-1."
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Om denne skjemen er en skjem i et vindu (Xnest)."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "Skjermhåndtereren kunne ikke kontaktes av ukjente årsaker."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "Skjermhåndtereren kjører ikke eller er for gammel."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "Innstilt maksgrense for antall fleksible tjenere er nådd."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "En ukjent feil oppstod under oppstart av X."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X-tjeneren kunne ikke fullføre oppstart."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "For mange aktive X-sesjoner."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "Den nøstede X-tjeneren (Xnest) kan ikke koble til nåværende X-tjener."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "X-tjener oppgitt i MDM-konfigurasjonen ble ikke funnet."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "Prøver å sette en ukjent handling for utlogging, eller en handling som "
+#~ "ikke er tilgjengelig."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Virtuelle terminaler er ikke støttet."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Ugyldig nummer for virtuell terminal."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "Prøver å oppdatere en ustøttet konfigurasjonsnøkkel."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "Filen ~/.Xauthority inneholder feil eller mangler."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "For mange meldinger ble sendt til skjermhåndtereren og den la på."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "Skjermhåndtereren sendte en ukjent feilmelding."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "Brukeren dette menyvalget representerer"
+
+#~ msgid "Icon Size"
+#~ msgstr "Ikonstørrelse"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "Størrelse på ikonet som skal brukes."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Størrelse på indikator"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Størrelse på indikator for sjekk"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Indikatormellomrom"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Mellomrom mellom brukernavn og indikator"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "Brukerhåndteringsobjekt denne brukeren kontrolleres av."
+
+#~ msgid "Show Details"
+#~ msgstr "Vis detaljer"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (MATE skjermhåndterer) kjører ikke."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Du bruker kanskje en annen skjermhåndterer slik som KDM (KDE "
+#~ "skjermhåndterer) eller xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Hvis du fremdeles ønsker å bruke denne funksjonen må du enten starte MDM "
+#~ "selv eller spørre din systemadministrator om å starte MDM."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "Kan ikke kommunisere med MDM (MATE Display Manager)"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Kanskje du har en gammel versjon av MDM kjørende på maskinen."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr "Kan ikke kommunisere med MDM. Har du en gammel versjon kjørende?"
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "Grensen for tillatte \"fleksible\" X-tjenere er nådd."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "Feil oppstod under oppstart av X-tjeneren."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr ""
+#~ "X-tjeneren endte opp med en feilmelding. Kanskje den er feilkonfigurert?"
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "For mange X-sesjoner kjører."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "Nøstet X-tjener (Xnest) kan ikke koble til din X-tjener. Du mangler "
+#~ "kanskje en autorisasjonsfil for X."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "Nøstet X-tjener (Xnest) er ikke tilgjengelig, eller mdm er "
+#~ "feilkonfigurert.\n"
+#~ "Vennligst installer Xnest-pakken for å bruke nøstet påloggin."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "X-tjeneren er ikke tilgjengelig. Det er sannsynlig at MDM er "
+#~ "feilkonfigurert."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Prøver å bytte til en ugyldig virtuell terminal."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Du har ikke nødvendig autentisering for denne operasjonen. Kanskje din ."
+#~ "Xauthority-fil ikke er satt opp korrekt."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "For mange meldinger ble sendt til MDM."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "Ukjent feil oppsto."
diff --git a/po/oc.po b/po/oc.po
new file mode 100644
index 0000000..10b8dbe
--- /dev/null
+++ b/po/oc.po
@@ -0,0 +1,710 @@
+# Translation of oc.po to Occitan
+# Occitan translation of mate-screensaver.
+# Copyright (C) 2005-2006, 2007 The Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Yannig Marchegay (Kokoyaya) <yannig at marchegay.org>, 2006-2008
+msgid ""
+msgstr ""
+"Project-Id-Version: oc\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-07-02 08:59+0200\n"
+"PO-Revision-Date: 2008-02-26 23:09+0100\n"
+"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig at marchegay.org>\n"
+"Language-Team: Occitan <ubuntu-l10n-oci at lists.ubuntu.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Estalviaire d'ecran"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Definir vòstras preferéncias per l'estalviaire d'ecran"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferéncias del estalviaire d'ecran"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "_Previsualizacion"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "Tèma del estalviaire d'_ecran :"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "Tèmas d'estalviaire d'ecran"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Estalviaires d'ecran"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Temps abans cambi de tèma"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr ""
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr ""
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Anullar"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr ""
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "_Terminar la session"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Cambiar d'utilizaire"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1356
+msgid "_Unlock"
+msgstr "_Desvarrolhar"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr ""
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr ""
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr ""
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr ""
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr ""
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Repertòri d'imatges"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr ""
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr ""
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr ""
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr ""
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr ""
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr ""
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LARGORxNAUTOR+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr ""
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr ""
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr ""
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Emplaçament del repertòri d'imatges"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CAMIN"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr ""
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr ""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr ""
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:211
+msgid "Copying files"
+msgstr "Còpia de fichièrs"
+
+#: ../src/copy-theme-dialog.c:229
+msgid "From:"
+msgstr "Expedidor :"
+
+#: ../src/copy-theme-dialog.c:233
+msgid "To:"
+msgstr "Destinatari :"
+
+#: ../src/copy-theme-dialog.c:253
+msgid "Copying themes"
+msgstr "Còpia de tèmas"
+
+#: ../src/copy-theme-dialog.c:297
+msgid "Invalid screensaver theme"
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:300
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr ""
+
+#: ../src/copy-theme-dialog.c:480
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Còpia del fichièr : %u sus %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Version de l'aplicacion"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "actiu"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "inactiu"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "MESSATGE"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Nom d'utilizaire :"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Mot de pas :"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Impossible d'obténer un nom d'utilizaire"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr ""
+
+#: ../src/mate-screensaver-preferences.c:498
+msgid "Blank screen"
+msgstr ""
+
+#: ../src/mate-screensaver-preferences.c:504
+msgid "Random"
+msgstr "Aleatòri"
+
+#: ../src/mate-screensaver-preferences.c:954
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ora"
+msgstr[1] "%d oras"
+
+#: ../src/mate-screensaver-preferences.c:957
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuta"
+msgstr[1] "%d minutas"
+
+#: ../src/mate-screensaver-preferences.c:960
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segonda"
+msgstr[1] "%d segonda"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:966
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:969
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:972
+#: ../src/mate-screensaver-preferences.c:980
+#: ../src/mate-screensaver-preferences.c:984
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:999
+#, c-format
+msgid "Never"
+msgstr "Jamai"
+
+#: ../src/mate-screensaver-preferences.c:1398
+msgid "Could not load the main interface"
+msgstr "Impossible de cargar l'interfaç principala"
+
+#: ../src/mate-screensaver-preferences.c:1400
+msgid "Please make sure that the screensaver is properly installed"
+msgstr ""
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr ""
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr ""
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr ""
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr ""
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr ""
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr ""
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr ""
+
+#: ../src/gs-lock-plug.c:1336
+msgid "S_witch User..."
+msgstr ""
+
+#: ../src/gs-lock-plug.c:1345
+msgid "Log _Out"
+msgstr ""
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1522
+msgid "%U on %h"
+msgstr "%U sus %h"
+
+#: ../src/gs-lock-plug.c:1536
+msgid "_Password:"
+msgstr "Mot de _pas :"
diff --git a/po/or.po b/po/or.po
new file mode 100644
index 0000000..80a191a
--- /dev/null
+++ b/po/or.po
@@ -0,0 +1,760 @@
+# translation of or.po to Oriya
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Subhransu Behera <arya_subhransu at yahoo.co.in>, 2006.
+# Subhransu Behera <sbehera at redhat.com>, 2006.
+# Manoj Kumar Giri <mgiri at redhat.com>, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: or\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-29 13:16+0530\n"
+"PO-Revision-Date: 2010-05-05 13:15+0530\n"
+"Last-Translator: Manoj Kumar Giri <mgiri at redhat.com>\n"
+"Language-Team: Oriya <Translation-team-or at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "ପରଦା ସଂରକ୍ଷକ"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "ଆପଣଙ୍କର ପରଦା ସଂରକ୍ଷକ ପସନ୍ଦଗୁଡିକୁ ସ୍ଥିର କରନ୍ତୁ"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>ପରଦା ସଂରକ୍ଷକ ପୂର୍ବଦୃଶ୍ଯ</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>ଚେତାବନୀ: ମୂଳ ଉପୟୋଗକର୍ତ୍ତା ପାଇଁ ସ୍କ୍ରିନ ତାଲାବନ୍ଦ ହେବ ନାହିଁ </b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "ବିଦ୍ଯୁତ ପ୍ରବନ୍ଧନ (_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "ପରେ କମ୍ପ୍ଯୁଟରକୁ ନିଷ୍କ୍ରିଯ ପରି ବିଚାର କରନ୍ତୁ (_i):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "ପରଦା ସଂରକ୍ଷକ ପସନ୍ଦଗୁଡିକ"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "ପରଦା ସଂରକ୍ଷକ ପୂର୍ବଦୃଶ୍ଯ"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "ୟେବେ କମ୍ପ୍ଯୁଟର ନିଷ୍କ୍ରିଯ ହୁଏ ପରଦା ସଂରକ୍ଷକକୁ ସକ୍ରିଯ କର (_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "ୟେବେ ପରଦା ସଂରକ୍ଷକ ସକ୍ରିଯ ହୁଏ ସ୍କ୍ରିନକୁ ତାଲାବନ୍ଦ କର (_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "ପୂର୍ବାଲୋକନ (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "ପରଦା ସଂରକ୍ଷକ ପ୍ରସଙ୍ଗ (_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "ପରଦା ସଂରକ୍ଷକ ପ୍ରସଙ୍ଗ"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "ପରଦା ସଂରକ୍ଷକ"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "ୟେବେ ନିଷ୍କ୍ରିୟ ଥାଏ ସକ୍ରିୟ କରନ୍ତୁ"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "ଉଇଣ୍ଡୋରେ ଗୋଟିଏ କିବୋର୍ଡକୁ ଏମ୍ବେଡେଡ କରିବା ସ୍ବୀକୃତି ଦିଅ"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "ଲଗ-ଆଉଟ ସ୍ବୀକୃତି ଦିଅ"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "ଅଧିବେଶନ ସ୍ଥିତି ସନ୍ଦେଶକୁ ଦର୍ଶାଇବା ପାଇଁ ଅନୁମତିଦିଅନ୍ତୁ"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "ପରଦା ଅପରିବର୍ତ୍ତନିୟ ଥିବା ସମୟରେ ଦର୍ଶାଇବା ପାଇଁ ଅଧିବେଶନ ସ୍ଥିତି ସନ୍ଦେଶକୁ ଅନୁମତିଦିଅନ୍ତୁ"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "ଉପୟୋଗକର୍ତ୍ତା ଅଦଳବଦଳ କରିବା ସ୍ବୀକୃତି ଦିଅ"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "ଏମ୍ବେଡେଡ କିବୋର୍ଡ ଆଦେଶ"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "ସକ୍ରିୟ ହେବାରେ ତାଲାବନ୍ଦ"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "ଲଗ-ଆଉଟ ଆଦେଶ"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "ପରଦା ସଂରକ୍ଷକ ଥିମ ମନୋନୟନ ମୋଡ"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "ୟେବେ ଅଧିବେଶନ ନିଷ୍କିୟ ହୁଏ ପରଦା ସଂରକ୍ଷକକୁ ସକ୍ରିଯ କରିବା ପାଇଁ ଏହାକୁ TRUE କୁ ସ୍ଥିର କରନ୍ତୁ"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"ତାଲାବନ୍ଦକୁ ଖୋଲିବା ପାଇଁ ଚେଷ୍ଟା କରିବା ବେଳେ ଉଇଣ୍ଡୋରେ ଗୋଟିଏ କିବୋର୍ଡକୁ ଏମ୍ବେଡେଡ କରିବା ପାଇଁ "
+"ସ୍ବୀକୃତି ଦେବା ନିମନ୍ତେ ଏହାକୁ TRUE କୁ ସ୍ଥିର କର \"କିବୋର୍ଡ_ଆଦେଶ\" କି ଉପୟୁକ୍ତ ଆଦେଶ ସହିତ ସେଟ "
+"ହେବା ଆବଶ୍ଯକ"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "ୟେବେ ପରଦା ସଂରକ୍ଷକ ସକ୍ରିଯ ହୁଏ ସ୍କ୍ରିନକୁ ତାଲାବନ୍ଦ କରିବା ପାଇଁ ଏହାକୁ TRUE କୁ ସ୍ଥିର କର"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"ଗୋଟିଏ ଭିନ୍ନ ଉପୟୋଗକର୍ତ୍ତା ଆକାଉଣ୍ଟକୁ ବଦଳ କରିବା ପାଇଁ ତାଲାବନ୍ଦ ଖୋଲିବା ଡାଏଲଗରେ ଗୋଟିଏ ବିକଳ୍ପ "
+"ପ୍ରଦାନ କରିବା ନିମନ୍ତେ ଏହାକୁ TRUE କୁ ସ୍ଥିର କର"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"ତାଲାବନ୍ଦ ଖୋଲିବା ଡାଏଲଗରେ ଗୋଟିଏ ବିଳମ୍ବ ପରେ ଲଗ-ଆଉଟ କରିବା ପାଇଁ ଗୋଟିଏ ବିକଳ୍ପ ପ୍ରଦାନ କରିବା "
+"ନିମନ୍ତେ ଏହାକୁ TRUE କୁ ସ୍ଥିର କର ବିଳମ୍ବ \"ଲଗଆଉଟ_ବିଳମ୍ବ\" କିରେ ନିର୍ଦ୍ଦିଷ୍ଟ ହୋଇଥାଏ"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"ଆଦେଶ ୟାହାକି ଚାଲିବ ,ୟଦି \"ଏମ୍ବେଡେଡ_କିବୋର୍ଡ_ସକ୍ଷମହେଲା\" କି TRUEକୁ ସ୍ଥିର ହୋଇଥାଏ, ଗୋଟିଏ "
+"କିବୋର୍ଡ ବିଜେଟକୁ ଉଇଣ୍ଡୋରେ ଏମ୍ବେଡ କରିବା ପାଇଁ ଏହି ଆଦେଶ ଗୋଟିଏ XEMBED ପ୍ଲଗ ଇଣ୍ଟରଫେସ ଏବଂ "
+"ଆଉଟପୁଟ ଗୋଟିଏ ଉଇଣ୍ଡୋ XID ଷ୍ଟାଣ୍ଡାର୍ଡ ଆଉଟପୁଟରେ କାର୍ୟ୍ଯକାରୀ ହେବା ଉଚିତ।"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"ଲଗ-ଆଉଟ ବଟନ କ୍ଲିକ ହେଲେ ଆହ୍ବାନ କରିବାକୁ ଥିବା ଆଦେଶ। ଏହି ଆଦେଶ ଉପୟୋଗକର୍ତ୍ତାଙ୍କୁ ସରଳ ଭାବରେ ଲଗ-"
+"ଆଉଟ କରେ ଅନ୍ଯ କୌଣସି କଥାବାର୍ତ୍ତା ବିନା। ଏହି କିର ପ୍ରଭାବ ପଡିଥାଏ, କେବଳ ୟଦି  \"ଲଗଆଉଟ_ସକ୍ଷମ\" "
+"କି TRUEକୁ ସ୍ଥିର ହୋଇଥାଏ।"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "ସ୍କ୍ରିନକୁ ତାଲାବନ୍ଦ କରିବା ପୂର୍ବରୁ ପରଦା ସଂରକ୍ଷକ ସକ୍ରିଯ ହେବା ପରେ ମିନିଟଗୁଡିକର ସଂଖ୍ଯା"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"ଗେଟିଏ ଲଗ-ଆଉଟ ବିକଳ୍ପ ତାଲାବନ୍ଦ ଖୋଲିବା ଡାଏଲଗରେ ପ୍ରତୀତ ହେବା ପୂର୍ବରୁ ପରଦା ସଂରକ୍ଷକ ସକ୍ରିଯ ହେବା "
+"ପରେ ମିନିଟଗୁଡିକର ସଂଖ୍ଯା। ଏହି କିର ପ୍ରଭାବ ପଡିଥାଏ କେବଳ ୟଦି  \"ଲଗଆଉଟ_ସକ୍ଷମ\" କି TRUEକୁ ସ୍ଥିର "
+"ହୋଇଥାଏ।"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "ଅଧିବେଶନ ନିଷ୍କ୍ରିଯ ବୋଲି ବିଚାର କରାୟିବା ପୂର୍ବରୁ ନିଷ୍କ୍ରିଯ ହେବାର ମିନିଟଗୁଡିକର ସଂଖ୍ଯା।"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "ପରଦା ସଂରକ୍ଷକ ଥିମ ପରିବର୍ତ୍ତନ କରିବା ପୂର୍ବରୁ ଚାଲିବା ପାଇଁ ମିନିଟଗୁଡିକର ସଂଖ୍ଯା।"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"ବିଦ୍ଯୁତ ପ୍ରବନ୍ଧନକୁ ସଂକେତ ଦେବା ପୂର୍ବରୁ ନିଷ୍କ୍ରିଯତାର ସେକେଣ୍ଡଗୁଡିକର ସଂଖ୍ଯା। ଏହି କି  ଅଧିବେଶନ ବିଦ୍ଯୁତ "
+"ପ୍ରବନ୍ଧନ ଏଜେଣ୍ଟ ଦ୍ବାରା ସ୍ଥିର ଏବଂ ରକ୍ଷଣାବେକ୍ଷଣ ହୋଇଥାଏ।"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"ପରଦା ସଂରକ୍ଷକ ଦ୍ବାରା ଉପୟୋଗ ହୋଇଥିବା ମନୋନଯନ ମୋଡ ହୁଏତ \"କେବଳ-ଖାଲି\" ସକ୍ରିଯ ହେବାରେ କୌଣସି "
+"ଥିମ ଉପୟୋଗ କରିବା ବିନା ପରଦା ସଂରକ୍ଷକକୁ ସକ୍ଷମ କରିବା ପାଇଁ, \"ଏକମାତ୍ର\"  ସକ୍ରିଯ ହେବାରେ କେବଳ ଗୋଟିଏ "
+"ଥିମକୁ ଉପୟୋଗ କରି ପରଦା ସଂରକ୍ଷକକୁ ସକ୍ଷମ କରିବା ପାଇଁ ( \"ଥିମ\" କିରେ ନିର୍ଦ୍ଦିଷ୍ଟ), ଏବଂ \"ୟଦୃଚ୍ଛାକ୍ରମରେ"
+"\" ସକ୍ରିଯ ହେବାରେ ଗୋଟିଏ ୟଦୃଚ୍ଛା ଥିମକୁ ଉପୟୋଗ କରି ପରଦା ସଂରକ୍ଷକକୁ ସକ୍ଷମ କରିବା ପାଇଁ ହୋଇପାରେ।"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "ତାଲାବନ୍ଦ ଡାଏଲଗ ପାଇଁ ଥିମ"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "ତାଲାବନ୍ଦ ଡାଏଲଗ ପାଇଁ ଉପୟୋଗ ହେବାକୁ ଥିବା ଥିମ"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"ଏହି କି ପରଦା ସଂରକ୍ଷକ ଦ୍ବାରା ଉପୟୋଗ ହେବାକୁ ଥିବା ଥିମଗୁଡିକର ତାଲିକାକୁ ନିର୍ଦ୍ଦିଷ୍ଟ କରେ। ଏହା ଅବହେଳିତ "
+"ହୋଇଥାଏ ୟେବେ \"ମୋଡ\" କି \"କେବଳ-ଖାଲି\"ଅଟେ, ଥିମ ନାମ ୟୋଗାଇଦେବା ଉଚିତ ୟେବେ \"ମୋଡ\"  "
+"\"ଏକମାତ୍ର\"ଅଟେ, ଏବଂ ଥିମ ନାମଗୁଡିକର ତାଲିକା ୟୋଗାଇଦେବା ଉଚିତ ୟେବେ \"ମୋଡ\"  \"ୟଦୃଚ୍ଛା\" "
+"ଅଟେ।"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "ତାଲାବନ୍ଦ କରିବା ପୂର୍ବରୁ ସମୟ"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "ଲଗଆଉଟ ବିକଳ୍ପ ପୂର୍ବରୁ ସମୟ"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "ବିଦ୍ଯୁତ-ପ୍ରବନ୍ଧନ ଆଧାରରେଖା ପୂର୍ବରୁ ସମୟ"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "ଅଧିବେଶନ ନିଷ୍କ୍ରିଯ ବୋଲି ବିଚାର କରିବା ପୂର୍ବରୁ ସମୟ"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "ଥିମ ପରିବର୍ତ୍ତନ ପୂର୍ବରୁ ସମୟ"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R ପାଇଁ ଗୋଟିଏ ସନ୍ଦେଶ ଦିଅନ୍ତୁ:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "ବାତିଲ କରନ୍ତୁ (_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "ସଂନ୍ଦେଶ ଛାଡନ୍ତୁ (_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "ଲଗ ଆଉଟ (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "ବ୍ଯବହାରକାରୀ ବଦଳାନ୍ତୁ (_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "ତାଲାଖୋଲନ୍ତୁ (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "ବିଶ୍ବବ୍ରହ୍ମାଣ୍ଡ"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "ବିଶ୍ବବ୍ରହ୍ମାଣ୍ଡର ଛବିଗୁଡିକର ଗୋଟିଏ ସ୍ଲାଇଡପ୍ରଦର୍ଶନୀ ପ୍ରଦର୍ଶନ କରନ୍ତୁ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr " ସ୍କ୍ରିନ ଚାରିପଟେ MATE ପାଦଲୋଗୋ ବୁଦବୁଦ କରେ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "ଭାସୁଥିବା ପାଦ"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "ଆପଣଙ୍କର ଛବି ଫୋଲ୍ଡରରୁ ଗୋଟିଏ ସ୍ଲାଇଡସୋ ପ୍ରଦର୍ଶନ କର"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "ଛବି ଫୋଲ୍ଡର"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "ଗୋଟିଏ ପପ-କଳା-ୟୁକ୍ତ ପଲ୍ସିଙ୍ଗ ରଙ୍ଗଗୁଡିକର ଗ୍ରୀଡ"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "ପପ କଳା ବର୍ଗକ୍ଷେତ୍ରଗୁଡିକ"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "ପ୍ରତିଛବିଗୁଡ଼ିକ ଅନୁସରଣ କରୁଥିବା ପଥକୁ ଦର୍ଶାନ୍ତୁ"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "ସାମୟିକ ଭାବରେ ପ୍ରତିଛବିଗୁଡ଼ିକୁ ସେମାନେ ଗତି କରିବା ସମୟରେ ଘୁରାନ୍ତୁ"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "ଫ୍ରେମ ହାର ଏବଂ ଅନ୍ୟାନ୍ୟ ପରିସଂଖ୍ୟାନଗୁଡ଼ିକୁ ମୁଦ୍ରଣ କରନ୍ତୁ"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "ପରଦା ଉପରେ ରଖିବା ପାଇଁ ସର୍ବାଧିକ ସଂଖ୍ୟକ ପ୍ରତିଛବି"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "ୱିଣ୍ଡୋର ପ୍ରାରମ୍ଭିକ ଆକାର ଏବଂ ସ୍ଥାନ"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "ବ୍ଯବହାର କରିବାକୁ ଥିବା ଉତ୍ସର ପ୍ରତିଛବି"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "ଚିତ୍ର - ସ୍କ୍ରିନର ଚାରିପଟେ ଚିତ୍ରଗୁଡିକୁ ଭସମାନ କରେ"
+
+#: ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. ଦେଖନ୍ତୁ --ସୂଚନା ଉପୟୋଗ କରିବା ନିମନ୍ତେ ସାହାୟ୍ଯ।\n"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "ଆପଣଙ୍କୁ ଗୋଟିଏ ଚିତ୍ର ନିଦ୍ଦିଷ୍ଟ କରିବା ଆବଶ୍ଯକ। ଦେଖନ୍ତୁ --ସୂଚନା ଉପୟୋଗ କରିବା ନିମନ୍ତେ ସାହାୟ୍ଯ।\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ଠାରୁ ଚିତ୍ରଗୁଡିକୁ ପ୍ରାପ୍ତ କରିବା ପାଇଁ ଅବସ୍ଥାନ"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ପଥ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "ପ୍ରତିଛବିଗୁଡ଼ିକର ପୃଷ୍ଠଭୂମୀ ପାଇଁ ବ୍ୟବହାର କରିବାକୁ ଥିବା ରଙ୍ଗ"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "ସଠିକ ସ୍ଥାନରୁ ପ୍ରତିଛବିଗୁଡ଼ିକୁ କ୍ରମମୁକ୍ତ କରନ୍ତୁ ନାହିଁ"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "ପରଦାରେ ପ୍ରତିଛବିଗୁଡ଼ିକୁ ଟାଣିବାକୁ ଚେଷ୍ଟାକରନ୍ତୁ ନାହିଁ"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ଫାଇଲ ନକଲ କରୁଅଛି"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "ଏଠାରୁ:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "ଏଠାକୁ:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "ପ୍ରସଙ୍ଗଗୁଡ଼ିକୁ ନକଲ କରୁଅଛି"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "ଅମାନ୍ଯ ପରଦା ସଂରକ୍ଷକ ଥିମ"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ଟି ଗୋଟିଏ ବୈଧ ପରଦା ସଂରକ୍ଷକ ପ୍ରସଙ୍ଗ ପରି ଲାଗୁନାହିଁ।"
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ଫାଇଲ ନକଲ କରନ୍ତୁ: %u of %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "ମର୍ୟ୍ଯାଦାର ସହିତ ପରଦା ସଂରକ୍ଷକକୁ ପ୍ରାସ୍ଥାନ କରିବାର କାରଣଉତ୍ପନ୍ନ କରେ।"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "ପରଦା ସଂରକ୍ଷକର ସ୍ଥିତିର ପ୍ରଶ୍ନ କରେ"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "ପରଦା ସଂରକ୍ଷକ ସକ୍ରିଯ ରହିଥିବା ସମଯର ଦୀର୍ଘତା ପ୍ରଶ୍ନ କର"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "ଚାଲୁଥିବା ପରଦା ସଂରକ୍ଷକ ପ୍ରକ୍ରିଯାକୁ ଅତିଶୀଘ୍ର ସ୍କ୍ରିନକୁ ତାଲାବନ୍ଦ କରିବା ପାଇଁ କହେ"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "ୟଦି ପରଦା ସଂରକ୍ଷକ ସକ୍ରିଯ ଅଟେ, ତେବେ ଅନ୍ଯ ଗୋଟିଏ ଗ୍ରାଫିକ୍ସ ଡେମୋକୁ ବଦଳାଅ"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "ପରଦା ସଂରକ୍ଷକକୁ ଆରମ୍ଭ କର(ଖାଲି ସ୍କ୍ରିନ)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "ୟଦି ପରଦା ସଂରକ୍ଷକ ସକ୍ରିଯ ଅଟେ ଏହାକୁ ନିଷ୍କ୍ରିଯ କର( ସ୍କ୍ରିନକୁ ପୁରଣ କର)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "ଚାଲୁଥିବା ସ୍କ୍ରିନସ୍ଭରକୁ ଉପୟୋଗକର୍ତ୍ତା କାର୍ୟ୍ଯକଳାପକୁ ବାହାନା କରିବା ପାଇଁ ଆଲୋଡିତ କର"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "ସକ୍ରିଯ ହେବାରୁ ସ୍କ୍ରିନ ସେଭରକୁ ନିଷେଧ କର। ନିଷେଧ ସକ୍ରିଯ ଥିବା ବେଳେ ଆଦେଶ ଅବରୋଧିତ ହୁଏ"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "ଡାକୁଥିବା ପ୍ରଯୋଗ ୟାହାକି ପରଦା ସଂରକ୍ଷକକୁ ନିଷେଧ କରୁଛି"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "ପରଦା ସଂରକ୍ଷକକୁ ନିଷେଧ କରିବା ନିମନ୍ତେ କାରଣ"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "ଏହି ପ୍ରୟୋଗର ସଂସ୍କରଣ"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "ପରଦା ସଂରକ୍ଷକ ହେଉଛି %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "ସକ୍ରିୟ"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "ନିଷ୍କ୍ରିୟ"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "ପରଦା ସଂରକ୍ଷକକୁ ବାରଣ କରାଯାଇନାହିଁ\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "ଦ୍ୱାରା ପରଦା ସଂରକ୍ଷକଟି ବାରଣ କରାଯାଇଥାଏ:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "ପରଦା ସଂରକ୍ଷକ %d ସେକେଣ୍ଡ ପାଇଁ ସକ୍ରିଯ ହୋଇଛି।\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "ପରଦା ସଂରକ୍ଷକଟି ବର୍ତ୍ତମାନ ସକ୍ରିୟ ନାହିଁ।\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "ଡିବଗ୍ କରିବା ଆଉଟପୁଟ ଦେଖାଅ"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "ଲଗଆଉଟ ବଟନ ଦେଖାଅ"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "ଲଗଆଉଟ ବଟନରୁ ଆହ୍ବାନ କରିବା ପାଇଁ ଆଦେଶ"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "ଉପୟୋଗକର୍ତ୍ତା ବଦଳ ବଟନ ଦେଖାଅ"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "ସଂଳାପରେ ଦର୍ଶାଇବା ପାଇଁ ସନ୍ଦେଶ"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "ବ୍ୟବହାର ହୋଇନାହିଁ"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ଚାଳକ ନାମ:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "ପ୍ରବେଶ ସଙ୍କେତ:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr "ଆପଣ ଆପଣଙ୍କର ପ୍ରବେଶ ସଙ୍କେତକୁ ଯଥାଶୀଘ୍ର ବଦଳାଇବା ଆବଶ୍ଯକ (ପ୍ରବେଶ ସଙ୍କେତ କାଲବାଧିତ ହୋଇସାରିଛି)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "ଆପଣ ଆପଣଙ୍କର ପ୍ରବେଶ ସଙ୍କେତକୁ ଯଥାଶୀଘ୍ର ବଦଳାଇବା ଆବଶ୍ଯକ (ରୁଟ ଦ୍ବାରା ବାଧ୍ଯ)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr "ଆପଣଙ୍କର ଖାତାଟି ଅଚଳ ବନ୍ଦ ହୋଇଯାଇଛି; ଦୟାକରି ଆପଣଙ୍କ ତନ୍ତ୍ର ପ୍ରଶାସକଙ୍କ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "କୌଣସି ପ୍ରବେଶ ସଙ୍କେତ ଦିଆଯାଇ ନାହିଁ"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଟି ଅପରିବର୍ତ୍ତିତ ଅଛି"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "ଚାଳକ ନାମକୁ ପାଇ ପାରିବ ନାହିଁ"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "ନୂତନ UNIX ପ୍ରବେଶ ସଙ୍କେତକୁ ପୁନର୍ବାର ଟାଇପ କରନ୍ତୁ:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "ନୂତନ UNIX ପ୍ରବେଶ ସଙ୍କେତକୁ ଭରଣ କରନ୍ତୁ:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "(ପ୍ରଚଳିତ) UNIX ପ୍ରବେଶ ସଙ୍କେତ:"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "NIS ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇବା ସମୟରେ ତ୍ରୁଟି।"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "ଆପଣ ଗୋଟିଏ ଲମ୍ବା ପ୍ରବେଶ ସଙ୍କେତ ଚୟନ କରିବା ଉଚିତ"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "ପ୍ରବେଶ ସଙ୍କେତକୁ ପୂର୍ବରୁ ବଦଳା ଯାଇଛି। ଆଉ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତ ଚୟନ କରନ୍ତୁ।"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇବା ପାଇଁ ଆପଣଙ୍କୁ ଅଧିକ ଅପେକ୍ଷା କରିବା ପାଇଁ ପଡିବ"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "କ୍ଷମା କରିବେ, ପ୍ରବେଶ ସଙ୍କେତଟି ମିଶୁ ହେଉନାହିଁ"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "ଯାଞ୍ଚ କରୁଅଛି..."
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "ବୈଧିକରଣ ବିଫଳ।"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "କଳା ପରଦା"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "କ୍ରମମୁକ୍ତ"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ଘଣ୍ଟା"
+msgstr[1] "%d ଘଣ୍ଟା"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d ମିନିଟ"
+msgstr[1] "%d ମିନିଟ"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d ସେକେଣ୍ଡ"
+msgstr[1] "%d ସେକେଣ୍ଡ"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "କେବେ ନୁହେଁ"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "ମୁଖ୍ୟ ଅନ୍ତରାପୃଷ୍ଠ ଧାରଣ କରିବାରେ ଅସମର୍ଥ"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "ଦଯାକରି ନିଶ୍ଚିତ କରନ୍ତୁ ୟେ ସ୍କ୍ରିନ ସେଭର ସଠିକ ଭାବରେ ପ୍ରତିଷ୍ଠାପିତ ହୋଇଛି"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ଗୋଟିଏ ଡିମୋନ ହୁଅ ନାହିଁ"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "ତ୍ରୁଟି ନିବାରଣ ସଂକେତକୁ ସକ୍ରିୟ କରନ୍ତୁ"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "ପରଦା ସଂରକ୍ଷକ ଏବଂ ଅପରିବର୍ତ୍ତନୀୟ ପ୍ରଗ୍ରାମକୁ ଆରମ୍ଭ କରନ୍ତୁ"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%s ସେବାକୁ ପ୍ରତିଷ୍ଠାପିତ କରିବାରେ ଅସମର୍ଥ: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s କୁ ବିନ୍ଯାସ କରିପାରିବ ନାହିଁ"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "ଭୂଲ ପ୍ରବେଶ ସଙ୍କେତ"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "ଏହି ସମଯରେ ପ୍ରବେଶ ଲାଭ କରିବା ପାଇଁ ଅନୁମତି ଦିଆୟିବ ନାହିଁ"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "ସିଷ୍ଟମକୁ ପ୍ରବେଶ କରିବା ପାଇଁ ଆଉ ଅନୁମତି ଦିଆୟିବନାହିଁ"
+
+#: ../src/gs-listener-dbus.c:1844
+msgid "failed to register with the message bus"
+msgstr "ସଂଦେଶ ବସ ସହିତ ପଞ୍ଜିକରଣ କରିବାକୁ ବିଫଳ ହେଲା"
+
+#: ../src/gs-listener-dbus.c:1854
+msgid "not connected to the message bus"
+msgstr "ସଂଦେଶ ବସ୍ ସହିତ ସଂୟୋଗ ହୋଇ ନାହିଁ"
+
+#: ../src/gs-listener-dbus.c:1863
+msgid "screensaver already running in this session"
+msgstr "ଏହି ଅଧିବେଶନରେ ପରଦା ସଂରକ୍ଷକ ପୂର୍ବରୁ ଚାଲୁଛି"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "ସମଯ ସମାପ୍ତ ହୋଇୟାଇଛି"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "ଆପଣଙ୍କର କ୍ଯାପସ୍ ଲକ କି ଅନ୍ ଅଛି।"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "ଉପୟୋଗକର୍ତ୍ତା ବଦଳକର (_w)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "ଲଗଆଉଟ କରନ୍ତୁ (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U %h ଉପରେ"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "ପ୍ରବେଶ ସଂଙ୍କେତ (_P):"
+
diff --git a/po/pa.po b/po/pa.po
new file mode 100644
index 0000000..fa35bf1
--- /dev/null
+++ b/po/pa.po
@@ -0,0 +1,796 @@
+# translation of mate-screensaver.HEAD.po to Punjabi
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# ASB <aalam at users.sf.net>, 2005, 2006, 2007.
+# Amanpreet Singh Alam <aalam at users.sf.net>, 2008.
+# A S Alam <aalam at users.sf.net>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.HEAD\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
+"cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-09-10 06:51+0530\n"
+"Last-Translator: A S Alam <aalam at users.sf.net>\n"
+"Language-Team: Punjabi/Panjabi <punjabi-users at lists.sf.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 1.0\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਲਈ ਆਪਣੀ ਪਸੰਦ ਦਿਓ"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>ਸਕਰੀਨ-ਸੇਵਰ ਝਲਕ</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>ਚੇਤਾਵਨੀ: ਸਕਰੀਨ root ਯੂਜ਼ਰ ਲਈ ਤਾਲਾਬੰਦ ਨਹੀਂ ਹੋਵੇਗੀ।</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "ਊਰਜਾ ਪਰਬੰਧ(_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "ਕੰਪਿਊਟਰ ਨੂੰ ਇੰਨੇ ਸਮੇਂ ਬਾਅਦ ਵੇਹਲਾ ਮੰਨੋ(_i):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਪਸੰਦ"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਝਲਕ"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "ਜਦੋਂ ਕੰਪਿਊਟਰ ਵੇਹਲਾ ਹੋਵੇ ਤਾਂ ਸਕਰੀਨ-ਸੇਵਰ ਸਰਗਰਮ ਕਰੋ(_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "ਜਦੋਂ ਸਕਰੀਨ-ਸੇਵਰ ਸਰਗਰਮ ਹੋਵੇ ਤਾਂ ਸਕਰੀਨ ਲਾਕ ਕਰੋ(_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "ਝਲਕ(_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਥੀਮ(_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਥੀਮ"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "ਜਦੋਂ ਵੇਹਲਾ ਹੋਵੇ ਤਾਂ ਸਰਗਰਮ"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "ਇੱਕ ਕੀ-ਬੋਰਡ ਨੂੰ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਲ ਰੱਖਣਾ ਮਨਜ਼ੂਰ"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "ਲਾਗਆਉਟ ਮਨਜ਼ੂਰ"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "ਸ਼ੈਸ਼ਨ ਹਾਲਤ ਸੁਨੇਹੇ ਵੇਖਾਉਣਾ ਮਨਜ਼ੂਰ"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "ਜਦੋਂ ਸਕਰੀਨ ਲਾਕ (ਤਾਲਾਬੰਦ) ਹੋਵੇ ਤਾਂ ਸ਼ੈਸ਼ਨ ਸੁਨੇਹੇ ਵੇਖਾਉਣ ਦੀ ਮਨਜ਼ੂਰੀ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "ਯੂਜ਼ਰ ਬਦਲਣਾ ਮਨਜ਼ੂਰ"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "ਸ਼ਾਮਿਲ ਕੀ-ਬੋਰਡ ਕਮਾਂਡ"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "ਸਰਗਰਮੀ ਸਮੇਂ ਲਾਕ ਕਰੋ"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "ਲਾਗਆਉਟ ਕਮਾਂਡ"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਥੀਮ ਚੋਣ ਢੰਗ"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "ਇਹ ਨੂੰ ਸੱਚ ਕਰੋ, ਜੇਕਰ ਸ਼ੈਸ਼ਨ ਵੇਹਲਾ ਹੋਣ ਸਮੇਂ ਸਕਰੀਨ ਨੂੰ ਤਾਲਾਬੰਦ ਕਰਨਾ ਹੈ"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"ਇਹ ਨੂੰ ਸੱਚ ਬਣਾਉਣ ਨਾਲ ਵਿੰਡੋ ਵਿੱਚ ਇੱਕ ਸ਼ਾਮਿਲ ਕੀ-ਬੋਰਡ ਵੇਖਾਇਆ ਜਾਵੇਗਾ, ਜਦੋਂ ਕਿ ਤਾਲਾ-ਖੋਲ੍ਹਣ ਦੀ "
+"ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾ ਰਹੀ ਹੋਵੇ। \"keyboard_command\" ਕੁੰਜੀ ਨੂੰ ਢੁੱਕਵੀਂ ਕਮਾਂਡ ਲਈ ਸੈੱਟ ਕੀਤਾ ਹੋਣਾ "
+"ਲਾਜ਼ਮੀ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "ਇਹ ਨੂੰ ਸੱਚ ਕਰੋ, ਜੇਕਰ ਸਕਰੀਨ-ਸੇਵਰ ਸਰਗਰਮ ਹੋਣ ਸਮੇਂ ਸਕਰੀਨ ਨੂੰ ਲਾਕ ਕਰਨਾ ਹੈ"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"ਇਹ ਨੂੰ ਸੱਚ ਕਰੋ, ਜੇਕਰ ਤਾਲਾ ਖੋਲ੍ਹਣ ਡਾਈਲਾਗ ਵਿੱਚ ਇੱਕ ਚੋਣ ਦਿੱਤੀ ਜਾਵੇ, ਜਿਸ ਨਾਲ ਵੱਖਰੇ ਯੂਜ਼ਰ ਅਕਾਊਂਟ "
+"ਲਈ ਬਦਲਿਆ ਜਾ ਸਕੇ।"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"ਇਹ ਨੂੰ ਸੱਚ ਕਰੋ, ਜੇਕਰ ਤਾਲਾ-ਖੋਲ੍ਹਣ ਡਾਈਲਾਗ ਵਿੱਚ ਇੱਕ ਚੋਣ ਰੱਖਣੀ ਹੈ ਕਿ ਅੰਤਰਾਲ ਦੇ ਬਾਅਦ ਲਾਗ-ਆਉਣ ਹੋ "
+"ਜਾਵੇ। ਅੰਤਰਾਲ ਨੂੰ \"logout_delay\" ਕੁੰਜੀ ਵਿੱਚ ਦਿਓ।"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"ਕਮਾਂਡ, ਜੋ ਚੱਲੇਗੀ, ਜਦੋਂ \"embedded_keyboard_enabled\" ਕੁੰਜੀ ਨੂੰ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਕਿ "
+"ਕੀ-ਬੋਰਡ ਨੂੰ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਗਿਆ ਹੋਵੇ। ਇਹ ਕਮਾਂਡ ਨੂੰ XEMBED ਪਲੱਗ ਇੰਟਰਫੇਸ ਰਾਹੀਂ ਬਣਾਇਆ "
+"ਗਿਆ ਹੈ ਅਤੇ ਸਟੈਂਡਰਡ ਆਉਟਪੁੱਟ ਉੱਤੇ ਇੱਕ ਵਿੰਡੋ XID ਆਉਟਪੁੱਟ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"ਲਾਗਆਉਟ (logout) ਬਟਨ ਨੂੰ ਦਬਾਉਣ ਸਮੇਂ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਕਮਾਂਡ ਹੈ। ਇਹ ਕਮਾਂਡ ਬਿਨਾਂ ਕਿਸੇ ਯੂਜ਼ਰ "
+"ਦਖਲ ਦੇ ਲਾਗ ਆਉਟ ਕਰ ਦੇਣ ਵਾਲੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਹ ਕੁੰਜੀ ਤਾਂ ਹੀ ਪਰਭਾਵੀ ਹੈ, ਜੇਕਰ "
+"\"logout_enable\" ਕੁੰਜੀ ਨੂੰ ਸੱਚ ਕੀਤਾ ਹੋਵੇਗਾ।"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "ਸਕਰੀਨ ਨੂੰ ਸਕਰੀਨ-ਸੇਵਰ ਸਰਗਰਮ ਹੋਣ ਦੇ ਬਾਅਦ ਲਾਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਮ (ਅੰਤਰਾਲ) ਮਿੰਟਾਂ ਵਿੱਚ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"ਸਕਰੀਨ-ਸੇਵਰ ਦੇ ਸਰਗਰਮ ਹੋਣ ਬਾਅਦ ਤਾਲਾ-ਖੋਲ੍ਹਣ ਡਾਈਲਾਗ ਵਿੱਚ ਲਾਗ-ਆਉਟ ਚੋਣ ਉਪਲੱਬਧ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ "
+"ਦਾ ਟਾਈਮ (ਅੰਤਰਾਲ) ਮਿੰਟਾਂ ਵਿੱਚ ਹੈ। ਇਹ ਕੁੰਜੀ ਤਾਂ ਹੀ ਪਰਭਾਵੀ ਹੈ, ਜੇਕਰ \"logout_enable\" ਕੁੰਜੀ "
+"ਸੱਚ ਕੀਤੀ ਗਈ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "ਸ਼ੈਸ਼ਨ ਨੂੰ ਵੇਹਲਾ (idle) ਮੰਨਣ ਤੋਂ ਪਹਿਲਾਂ ਕੋਈ ਸਰਗਰਮੀ ਤੋਂ ਬਿਨਾਂ ਟਾਈਮ-ਮਿੰਟਾਂ ਵਿੱਚ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਥੀਮ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਉਸ ਨੂੰ ਚਲਾਉਣ ਦਾ ਟਾਈਮ ਮਿੰਟਾਂ ਵਿੱਚ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"ਊਰਜਾ-ਪਰਬੰਧ ਨੂੰ ਸੰਕੇਤ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਨਾ-ਸਰਗਰਮੀ ਦੇ ਸਕਿੰਟ ਦੀ ਗਿਣਤੀ ਹੈ। ਇਹ ਕੁੰਜੀ ਨੂੰ ਸ਼ੈਸ਼ਨ ਊਰਜਾ-"
+"ਪਰਬੰਧ ਏਜੰਟ ਵਲੋਂ ਸੈੱਟ ਅਤੇ ਪਰਬੰਧ ਅਧੀਨ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"ਸਕਰੀਨ-ਸੇਵਰ ਵਲੋਂ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਚੋਣ ਢੰਗ ਹੈ। \"ਸਿਰਫ਼ ਖਾਲੀ (blank-only\" ਨੂੰ ਬਿਨਾਂ ਕਿਸੇ "
+"ਥੀਮ ਦੇ ਸਕਰੀਨ-ਸੇਵਰ ਨੂੰ ਸਰਗਰਮ ਕਰਨ ਲਈ ਵਰਤੋਂ, \"ਇੱਕਲਾ (single)\" ਨੂੰ ਸਰਗਰਮ ਹੋਣ ਦੀ ਹਾਲਤ ਵਿੱਚ "
+"ਇੱਕ ਹੀ ਥੀਮ ਵਰਤਣ ਲਈ ਦਿਓ, (\"ਥੀਮ (themes)\" ਕੁੰਜੀ ਦੱਸਣੀ ਲਾਜ਼ਮੀ ਹੈ) ਅਤੇ \"ਰਲਵਾਂ (random)"
+"\" ਨੂੰ ਸਰਗਰਮ ਹੋਣ ਦੀ ਹਾਲਤ ਵਿੱਚ ਰਲਵੇਂ ਥੀਮ ਵਰਤਣ ਲਈ ਯੋਗ ਕਰਦਾ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "ਲਾਕ ਡਾਈਲਾਗ ਲਈ ਥੀਮ"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "ਲਾਕ ਡਾਈਲਾਗ ਵਾਸਤੇ ਵਰਤਣ ਲਈ ਥੀਮ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"ਇਹ ਕੁੰਜੀ ਸਕਰੀਨ-ਸੇਵਰ ਵਲੋਂ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਥੀਮ ਦੀ ਲਿਸਟ ਦੱਸਦੀ ਹੈ। ਇਹ ਨੂੰ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, "
+"ਜਦੋਂ \"mode\" ਕੁੰਜੀ ਨੂੰ \"blank-only\" ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ, ਥੀਮ ਨਾਂ ਦੇਣਾ ਲਾਜ਼ਮੀ ਹੈ, ਜਦੋਂ \"mode"
+"\" ਨੂੰ \"single\" ਮੁੱਲ ਦਿੱਤਾ ਹੋਵੇ ਅਤੇ \"mode\" ਨੂੰ \"random\" ਮੁੱਲ ਹੋਣ ਦੀ ਹਾਲਤ ਵਿੱਚ ਥੀਮਾਂ "
+"ਦੀ ਲਿਸਟ ਦੇਣਾ ਲਾਜ਼ਮੀ ਹੈ।"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "ਲਾਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਮ"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "ਲਾਗਆਉਟ ਚੋਣ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਮ"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "ਊਰਜਾ-ਪਰਬੰਧ ਬੇਸ-ਲਾਇਨ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਮ"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "ਸ਼ੈਸ਼ਨ ਨੂੰ ਵੇਹਲਾ (idle) ਮੰਨਣ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਮ"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "ਥੀਮ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਮ"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R ਲਈ ਇੱਕ ਸੁਨੇਹਾ ਛੱਡ ਕੇ ਜਾਓ:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%h ਉੱਤੇ %U</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "ਰੱਦ ਕਰੋ(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "ਸੁਨੇਹਾ ਦਿਓ(_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "ਲਾਗਆਉਟ(_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "ਯੂਜ਼ਰ ਸਵਿੱਚ ਕਰੋ(_S)..."
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "ਤਾਲਾ ਖੋਲ੍ਹੋ(_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "ਕੋਸਮੋਸ"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "ਕੋਸਮੋਸ ਦੀਆਂ ਤਸਵੀਰਾਂ ਦੀਆਂ ਝਾਕੀਆਂ ਵੇਖਾਓ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "ਸਕਰੀਨ ਵਿੱਚ ਗਨੋਮ ਦਾ ਪੈਰ ਵਾਲਾ ਲੋਗੋ ਵੇਖਾਓ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "ਤਰਦਾ ਪੈਰ"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "ਆਪਣੇ ਤਸਵੀਰਾਂ ਫੋਲਡਰ ਤੋਂ ਝਾਕੀਆਂ ਵੇਖਾਓ"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "ਤਸਵੀਰ ਫੋਲਡਰ"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "ਧੜਕਦੇ ਰੰਗਾਂ ਦਾ ਪੋਪ-ਆਰਟ ਗਰਿੱਡ ਹੈ।"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "ਪੋਪ ਆਰਟ ਵਰਗ"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "ਚਿੱਤਰਾਂ ਦਾ ਮਾਰਗ ਵੇਖਾਓ"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "ਚਿੱਤਰਾਂ ਨੂੰ ਹਿਲਾਉਣ ਦੌਰਾਨ ਅਕਸਰ ਘੁੰਮਾਓ ਵੀ"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "ਫਰੇਮ ਰੇਟ ਅਤੇ ਹੋਰ ਅੰਕੜੇ ਵੀ ਪਰਿੰਟ ਕਰੋ"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "ਸਕਰੀਨ ਉੱਤੇ ਵੇਖਾਉਣ ਵਾਲੇ ਚਿੱਤਰਾਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "ਵਿੰਡੋ ਦਾ ਸ਼ੁਰੂਆਤੀ ਅਕਾਰ ਅਤੇ ਸਥਿਤੀ"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "ਵਰਤਣ ਲਈ ਸਰੋਤ ਚਿੱਤਰ"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "ਚਿੱਤਰ - ਸਕਰੀਨ ਉੱਤੇ ਤਰਦੇ ਚਿੱਤਰ"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s, ਵਰਤਣ ਲਈ --help ਨੂੰ ਵੇਖੋ।\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਚਿੱਤਰ ਦੇਣਾ ਪਵੇਗਾ।  ਵਰਤਣ ਲਈ --help ਵੇਖੋ।\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ਚਿੱਤਰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਟਿਕਾਣਾ"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ਮਾਰਗ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "ਚਿੱਤਰ ਬੈਕਗਰਾਊਂਡ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਰੰਗ"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "ਟਿਕਾਣੇ ਤੋਂ ਤਸਵੀਰਾਂ ਰਲਵੀਂ ਨਾ ਵਰਤੋਂ"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "ਸਕਰੀਨ ਉੱਤੇ ਚਿੱਤਰ ਨਾ ਖਿੱਚੋ"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "ਫਾਇਲਾਂ ਦੀ ਕਾਪੀ ਜਾਰੀ"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "ਵੱਲੋਂ:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "ਵੱਲ"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr " ਥੀਮ ਕਾਪੀ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "ਗਲਤ ਸਕਰੀਨ-ਸੇਵਰ ਥੀਮ"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ਫਾਇਲ ਇੱਕ ਠੀਕ ਸਕਰੀਨ-ਸੇਵਰ ਥੀਮ ਨਹੀਂ ਜਾਪਦੀ ਹੈ।"
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ਫਾਇਲ ਕਾਪੀ ਜਾਰੀ: %2$u ਵਿੱਚੋਂ %1$u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਨੂੰ ਮਾਣ ਨਾਲ ਬੰਦ ਕਰਨ ਦਾ ਕਾਰਨ ਬਣਦਾ ਹੈ"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਦੀ ਹਾਲਤ ਬਾਰੇ ਸਵਾਲ"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਸਰਗਰਮ ਹੋਣ ਦੇ ਸਮੇਂ ਦੀ ਲੰਬਾਈ ਬਾਰੇ ਸਵਾਲ"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "ਚੱਲਦੇ ਸਕਰੀਨ-ਸੇਵਰ ਕਾਰਵਾਈ ਨੂੰ ਸਕਰੀਨ ਨੂੰ ਤੁਰੰਤ ਲਾਕ ਕਰਨ ਦਾ ਸੰਕੇਤ ਦਿਓ"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "ਜੇਕਰ ਸਕਰੀਨ-ਸੇਵਰ ਸਰਗਰਮ ਹੋਵੇ ਤਾਂ ਹੋਰ ਗਰਾਫਿਕਸ ਡੈਮੋ ਲਈ ਤਬਦੀਲ ਕਰੋ"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਚਾਲੂ ਕਰੋ (ਖਾਲੀ ਸਕਰੀਨ ਹੀ)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "ਜੇਕਰ ਸਕਰੀਨ-ਸੇਵਰ ਸਰਗਰਮ ਹੋਵੇ ਤਾਂ ਉਸ ਨੂੰ ਨਾ-ਸਰਗਰਮ ਕਰੋ (ਨਾ-ਖਾਲੀ ਸਕਰੀਨ)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਨੂੰ ਯੂਜ਼ਰ ਕਾਰਵਾਈਆਂ ਮੁਤਾਬਕ ਨਕਲ ਕਰਨ ਲਈ ਤਿਆਰ ਕਰੋ"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਨੂੰ ਸਰਗਰਮ ਹੋਣ ਤੋਂ ਰੋਕਿਆ ਗਿਆ।  ਕਮਾਂਡਾਂ ਉੱਤੇ ਰੋਕ ਹੈ, ਜਦੋਂ ਕਿ ਰੋਕਣਾ ਸਰਗਰਮ ਹੈ।"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਨੂੰ ਰੋਕਣ ਵਾਲੇ ਕਾਰਜ ਬਾਰੇ ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਰੋਕਣ ਲਈ ਕਾਰਨ"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਵਰਜਨ"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ %s ਹੈ।\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "ਸਰਗਰਮ"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "ਨਾ-ਸਰਗਰਮ"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਇੰਹੈਬਿਟ ਨਹੀਂ ਹੈ\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਇੰਹੈਬਿਟ ਕੀਤਾ ਹੈ:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ %d ਸਕਿੰਟਾਂ ਤੋਂ ਸਰਗਰਮ ਹੈ।\n"
+
+#: ../src/mate-screensaver-command.c:362, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "ਸਕਰੀਨ-ਸੇਵਰ ਹਾਲੇ ਐਕਟਿਵ ਨਹੀਂ ਹੈ।\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "ਡੀਬੱਗ ਆਉਟਪੁੱਟ ਵੇਖਾਓ"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "ਲਾਗਆਉਟ ਬਟਨ ਵੇਖਾਓ"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "ਲਾਗਆਉਟ ਬਟਨ ਲਈ ਕੰਮ ਕਰਨ ਵਾਲੀ ਕਮਾਂਡ"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "ਯੂਜ਼ਰ ਬਦਲਣ ਵਾਲਾ ਬਟਨ ਵੇਖਾਓ"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "ਡਾਈਲਾਗ ਵਿੱਚ ਸੁਨੇਹਾ ਵੇਖਾਓ"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "ਸੁਨੇਹਾ"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "ਨਹੀਂ ਵਰਤਿਆ"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ਯੂਜ਼ਰ-ਨਾਂ:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "ਪਾਸਵਰਡ:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਹੁਣੇ ਬਦਲਣਾ ਪਵੇਗਾ (ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ ਪੁੱਗੀ)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਹੁਣੇ ਬਦਲਣਾ ਪਵੇਗਾ (root ਵਲੋਂ ਮਜਬੂਰ ਕੀਤਾ ਗਿਆ ਹੈ)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "ਤੁਹਾਡੇ ਅਕਾਊਂਟ ਦੀ ਮਿਆਦ ਖਤਮ ਹੋ ਗਈ ਹੈ; ਆਪਣੇ ਸਿਸਟਮ ਪਰਸ਼ਾਸ਼ਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ।"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "ਕੋਈ ਪਾਸਵਰਡ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "ਪਾਸਵਰਡ ਬਦਲਿਆ ਗਿਆ"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "ਯੂਜ਼ਰ ਨਾਂ ਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "ਨਵਾਂ UNIX ਪਾਸਵਰਡ ਮੁੜ-ਲਿਖੋ:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "ਨਵਾਂ UNIX ਪਾਸਵਰਡ ਦਿਓ:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(ਮੌਜੂਦਾ) UNIX ਪਾਸਵਰਡ:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS ਪਾਸਵਰਡ ਬਦਲਣ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਲੰਮਾ ਪਾਸਵਰਡ ਚੁਣਨਾ ਚਾਹੀਦਾ ਹੈ"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "ਪਾਸਵਰਡ ਪਹਿਲਾਂ ਹੀ ਬਦਲਿਆ ਗਿਆ ਹੈ। ਹੋਰ ਚੁਣੋ ਜੀ।"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਬਦਲਣ ਲਈ ਹੋਰ ਵੱਧ ਉਡੀਕ ਕਰਨੀ ਪਵੇਗੀ।"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "ਅਫ਼ਸੋਸ ਹੈ ਕਿ ਪਾਸਵਰਡ ਮਿਲਦਾ ਨਹੀਂ ਹੈ"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "ਚੈੱਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "ਪਰਮਾਣਕਿਤਾ ਫ਼ੇਲ੍ਹ ਹੋ ਗਈ ਹੈ।"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "ਖਾਲੀ ਸਕਰੀਨ"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "ਰਲਵੇਂ"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ਘੰਟਾ"
+msgstr[1] "%d ਘੰਟੇ"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d ਮਿੰਟ"
+msgstr[1] "%d ਮਿੰਟ"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d ਸਕਿੰਟ"
+msgstr[1] "%d ਸਕਿੰਟ"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "ਕਦੇ ਨਹੀਂ"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "ਮੁੱਖ ਇੰਟਰਫੇਸ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕਿਆ ਹੈ।"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "ਜਾਂਚ ਕਰੋ ਕਿ ਸਕਰੀਨ-ਸੇਵਰ ਠੀਕ ਤਰ੍ਹਾਂ ਇੰਸਟਾਲ ਹੈ ਜੀ"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ਇੱਕ ਡੈਮਨ ਨਾ ਬਣਾਓ"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "ਡੀਬੱਗ ਕੋਡ ਨੂੰ ਯੋਗ"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "ਸਕਰੀਨ ਸੇਵਰ ਅਤੇ ਲਾਕਰ ਪਰੋਗਰਾਮ ਚਲਾਓ"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "ਸਰਵਿਸ %s ਬਣਾਉਣ ਲਈ ਅਸਫ਼ਲ ਹੈ: %s।\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "ਪਾਸਵਰਡ ਗਲਤ ਹੈ ਜੀ।"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "ਇਸ ਸਮੇਂ ਵਰਤੋਂ ਲਈ ਆਗਿਆ ਨਹੀਂ ਹੈ।"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "ਹੁਣ ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ ਲਈ ਆਗਿਆ ਨਹੀਂ ਹੈ।"
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "ਸੁਨੇਹਾ ਬਸ ਨਾਲ ਰਜਿਸਟਰ ਹੋਣ ਲਈ ਅਸਫ਼ਲ"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "ਸੁਨੇਹਾ ਬਸ ਨਾਲ ਜੁੜਿਆ ਨਹੀਂ ਹੈ"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "ਇਹ ਸ਼ੈਸ਼ਨ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਸਕਰੀਨ-ਸੇਵਰ ਚੱਲ ਰਿਹਾ ਹੈ"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "ਟਾਈਮ ਖਤਮ ਹੋ ਗਿਆ ਹੈ।"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "ਤੁਹਾਡਾ ਕੈਪਸ (Caps) ਬਟਨ ਦੱਬਿਆ ਹੈ।"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "ਯੂਜ਼ਰ ਬਦਲੋ(_w)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "ਲਾਗ-ਆਉਟ(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%h ਉੱਤੇ %U"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "ਪਾਸਵਰਡ(_P):"
+
+#~ msgid "Reason for being away"
+#~ msgstr "ਦੂਰ ਹੋਣ ਦਾ ਕਾਰਨ"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "ਕੰਪਿਊਟਰ ਤੋਂ ਦੂਰ ਹੋਣ ਦਾ ਕਾਰਨ ਹੈ।"
+
+#~ msgid "Copying '%s'"
+#~ msgstr "'%s' ਦੀ ਕਾਪੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
+
+#~ msgid "From URI"
+#~ msgstr "URI ਤੋਂ"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI ਇਸ ਸਮੇਂ ਟਰਾਂਸਫਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
+
+#~ msgid "To URI"
+#~ msgstr "URI ਤੋਂ"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI ਬਦਲਿਆ ਜਾ ਰਿਹਾ ਹੈ"
+
+#~ msgid "Fraction completed"
+#~ msgstr "ਅਧੂਰਾ ਮੁਕੰਮਲ"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "ਸੰਚਾਰ ਇਸ ਸਮੇਂ ਅਧੂਰਾ ਮੁਕੰਮਲ ਹੋ ਚੁੱਕਿਆ ਹੈ"
+
+#~ msgid "Current URI index"
+#~ msgstr "ਮੌਜੂਦਾ URI ਇੰਡੈਕਸ"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "ਮੌਜੂਦਾ URI ਇੰਡੈਕਸ - 1 ਤੋਂ ਸ਼ੁਰੂ"
+
+#~ msgid "Total URIs"
+#~ msgstr "ਕੁੱਲ URI"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "URI ਦੀ ਕੁੱਲ ਗਿਣਤੀ"
+
+#~ msgid "Connecting..."
+#~ msgstr "ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..117e4f2
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,707 @@
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# Aviary.pl
+# Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
+# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
+# matepl at aviary.pl
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-12-14 20:28+0000\n"
+"PO-Revision-Date: 2010-02-25 20:31+0100\n"
+"Last-Translator: Piotr Drąg <piotrdrag at gmail.com>\n"
+"Language-Team: Polish <matepl at aviary.pl>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>20) ? 1 : 2);\n"
+"X-Poedit-Language: Polish\n"
+"X-Poedit-Country: Poland\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Wygaszacz ekranu"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Preferencje wygaszacza ekranu"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Podgląd wygaszacza ekranu</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Uwaga: ekran nie będzie blokowany dla użytkownika root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Zarządzanie zasilaniem"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Przejście w stan _bezczynności po:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferencje wygaszacza ekranu"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Podgląd wygaszacza ekranu"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Uruchomienie wygaszacza ekranu, gdy komputer jest w stanie bezczynności"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "Blokowani_e ekranu, gdy wygaszacz jest aktywny"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Podgląd"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Moty_w wygaszacza ekranu:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Motywy wygaszacza ekranu"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Wygaszacze ekranu"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktywowanie, gdy w stanie bezczynności"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Zezwolenie na wyświetlanie klawiatury w oknie"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Zezwalanie na wylogowanie"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Zezwolenie na wyświetlenie komunikatu o stanie sesji"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "Zezwolenie na wyświetlenie komunikatu o stanie sesji, gdy ekran jest zablokowany."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Zezwolenie na przełączanie użytkowników"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Polecenie klawiatury ekranowej"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Blokowanie ekranu podczas aktywowania"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Polecenie wylogowania"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Tryb wybierania motywu wygaszacza ekranu"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Wartość \"true\" włącza aktywowanie wygaszacza ekranu w stanie bezczynności."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The \"keyboard_command\" key must be set with the appropriate command."
+msgstr "Wartość \"true\" pozwala na wyświetlanie klawiatury na zablokowanym ekranie. W kluczu \"keyboard_command\" musi być wpisane odpowiednie polecenie."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Wartość \"true\" włącza blokowanie ekranu podczas uruchomienia wygaszacza."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+msgstr "Wartość \"true\" włącza możliwość przełączania użytkowników bezpośrednio z zablokowanego ekranu."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "Wartość \"true\" włącza możliwość wylogowania bezpośrednio z zablokowanego ekranu po upływie zadanego czasu. Czas opóźnienia jest ustawiany w kluczu \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The command that will be run, if the \"embedded_keyboard_enabled\" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output."
+msgstr "Polecenie wyświetlające klawiaturę ekranową, które będzie wykonane, gdy klucz \"embedded_keyboard_enabled\" jest aktywny. To polecenie powinno mieć zaimplementowany interfejs wtyczki XEMBED oraz powinno zwracać XID okna na standardowe wyjście."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Polecenie wykonywane po naciśnięciu przycisku \"Wyloguj\". Polecenie to powinno wylogować użytkownika bez jakiejkolwiek interakcji. Ten klucz będzie użyty tylko wtedy, gdy klucz \"logout_enable\" jest ustawiony na TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "Liczba minut opóźnienia blokowania ekranu od czasu aktywowania wygaszacza."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Liczba minut, po jakiej pojawi się opcja wylogowania, od czasu uruchomienia wygaszacza ekranu. Ten klucz będzie użyty tylko wtedy, gdy klucz \"logout_enable\" jest ustawiony na TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Liczba minut nieaktywności, po upływie której następuje przejście do stanu bezczynności."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Liczba minut odstępu między zmianami motywów wygaszacza ekranu."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The number of seconds of inactivity before signalling to power-management. This key is set and maintained by the session power-management agent."
+msgstr "Liczba sekund nieaktywności, po której wysłany zostanie sygnał do zarządzania zasilaniem. Klucz ten jest tworzony i ustawiany przez agenta sesji zarządzania zasilaniem."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+msgstr "Tryb wyboru motywu wygaszacza ekranu. Może być jedną z następujących wartości: \"blank-only\" - czarny ekran (motywy wyłączone), \"single\" - użycie jednego motywu (wybranego w kluczu \"themes\"), \"random\" - losowy wybór motywu."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Motyw zablokowanego ekranu"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Motyw stosowany do wyświetlania okna dialogowego zablokowanego ekranu."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+msgstr "Ten klucz określa, które motywy wygaszacza ekranu będą użyte. Gdy klucz \"mode\" ma wartość \"blank-only\", ten parametr będzie ignorowany. W przypadku, gdy \"mode\" ma wartość \"single\", klucz ten powinien zawierać jedną nazwę motywu, natomiast w przypadku gdy \"mode\" ma wartość \"random\", powinien zawierać listę nazw."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Odstęp czasu przed zablokowaniem ekranu"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Odstęp czasu przed aktywowaniem opcji wylogowania"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Odstęp czasu przed aktywowaniem zarządzania energią"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Czas, po którym sesja zostanie uznana za bezczynną"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Odstęp czasu pomiędzy zmianami motywów"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Wiadomość dla użytkownika %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U na %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Anuluj"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Zostaw wiadomość"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Wyloguj"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Przełącz użytkownika"
+
+#: ../data/lock-dialog-default.ui.h:11
+#: ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Odblokuj"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Wyświetla pokaz zdjęć kosmosu"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Wyświetla na ekranie stopy (logo MATE)"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Latające stopy"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Wyświetla pokaz slajdów z katalogu zdjęć"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Katalog zdjęć"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Wyświetla siatkę kwadratów o pulsujących kolorach."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Kolorowe kwadraty"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Wyświetla ścieżki po których poruszają się obrazy"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Obracanie obrazów w trakcie ich poruszania"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Wyświetla ilość klatek na sekundę i inne statystyki"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Maksymalna liczba obrazów wyświetlana na ekranie"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Początkowe położenie i rozmiar okna"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "SZEROKOŚĆxWYSOKOŚĆ+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Używany obraz źródłowy"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - wyświetla na ekranie latające obrazy"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Parametr --help wyświetla instrukcję użycia.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Należy wybrać jeden obraz. Parametr --help wyświetla instrukcję użycia.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Położenie, skąd pobierane będą obrazy"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ŚCIEŻKA"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Kolor tła obrazów"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Wyłączenie kolejności losowej obrazów z położenia"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Brak rozciągania obrazów na ekranie"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopiowanie plików"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Z:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Do:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopiowanie motywów"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Nieprawidłowy motyw wygaszacza ekranu"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s nie jest prawidłowym motywem wygaszacza ekranu."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopiowanie pliku %u z %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Wyłącza wygaszacz ekranu"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Wypisuje stan wygaszacza ekranu"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Wypisuje czas aktywności wygaszacza ekranu"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Powoduje natychmiastowe zablokowanie ekranu w uruchomionym wygaszaczu"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Jeżeli wygaszacz ekranu jest aktywny, przełącza do następnego motywu graficznego"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Aktywuje wygaszacz ekranu"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Jeżeli wygaszacz jest aktywny, przełącza w stan nieaktywny"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Generuje zdarzenie symulujące aktywność użytkownika"
+
+#: ../src/mate-screensaver-command.c:78
+msgid "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+msgstr "Wstrzymuje aktywację wygaszacza ekranu. Polecenia są blokowane, gdy wstrzymanie jest włączone."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Program, który wstrzymuje aktywację wygaszacza ekranu"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Powód wstrzymania wygaszacza ekranu"
+
+#: ../src/mate-screensaver-command.c:84
+#: ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Wersja tego programu"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Wygaszaczem ekranu jest %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktywny"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "nieaktywny"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Wygaszacz ekranu nie został wstrzymany\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Wygaszacz ekranu jest wstrzymany przez:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Wygaszacz ekranu jest aktywny od %d sekund.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Wygaszacz ekranu nie jest obecnie aktywny.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Wypisuje komunikaty debugowania"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Wyświetla przycisk wylogowania"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Polecenie wykonywane po naciśnięciu przycisku wylogowania"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Wyświetlanie przycisku przełączania użytkowników"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Wiadomość do wyświetlenia w oknie dialogowym"
+
+#: ../src/mate-screensaver-dialog.c:66
+#: ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "WIADOMOŚĆ"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Nieużywane"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178
+#: ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180
+#: ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Użytkownik:"
+
+#: ../src/mate-screensaver-dialog.c:181
+#: ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Hasło:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Wymagana jest natychmiastowa zmiana hasła (minął okres ważności hasła)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Wymagana jest natychmiastowa zmiana hasła (zmiana wymuszona przez administratora)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Minął okres ważności konta. Proszę skontaktować się z administratorem systemu"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Nie wprowadzono hasła"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Hasło niezmienione"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Nie można uzyskać nazwy użytkownika"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Powtórzenie hasła UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Nowe hasło UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Hasło UNIX (bieżące):"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Błąd podczas zmieniania hasła NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Należy wybrać dłuższe hasło"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "To hasło było już używane. Należy wybrać inne."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Podczas zmiany hasła należy poczekać dłużej"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Hasła nie są zgodne"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Sprawdzanie..."
+
+#: ../src/mate-screensaver-dialog.c:304
+#: ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Uwierzytelnienie się nie powiodło."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Wygaszenie ekranu"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Losowo"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d godzinie"
+msgstr[1] "%d godzinach"
+msgstr[2] "%d godzinach"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minucie"
+msgstr[1] "%d minutach"
+msgstr[2] "%d minutach"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekundzie"
+msgstr[1] "%d sekundach"
+msgstr[2] "%d sekundach"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nigdy"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Nie można wczytać głównego interfejsu"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Proszę upewnić się, że wygaszacz ekranu jest poprawnie zainstalowany"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Uruchamia program bez przełączania do pracy w tle"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Włącza kod debugowania"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Uruchamia wygaszacz ekranu i program blokujący"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nie można ustanowić usługi %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Nie można ustawić PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Niepoprawne hasło."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Brak zezwolenia na dostęp w tej chwili."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Zezwolenie na dostęp do systemu odwołane."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "zarejestrowanie w magistrali komunikatów się nie powiodło"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "brak podłączenia do magistrali komunikatów"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "wygaszacz ekranu jest już uruchomiony w tej sesji"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Przekroczono ograniczenie czasu."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Klawisz Caps Lock jest wciśnięty."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Przełącz użytkownika..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Wyloguj"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U na %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Hasło:"
diff --git a/po/ps.po b/po/ps.po
new file mode 100644
index 0000000..b7178b0
--- /dev/null
+++ b/po/ps.po
@@ -0,0 +1,699 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Mate\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-11 13:16+0100\n"
+"PO-Revision-Date: 2008-03-09 17:59-0800\n"
+"Last-Translator: Zabeeh Khan <zabeehkhan at gmail.com>\n"
+"Language-Team: Pashto <pakhtosoft at gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Pashto, Pushto\n"
+"X-Poedit-Country: AFGHANISTAN\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "پرده ساتونکی"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "د خپل پرده ساتونکي غوراوي وټاکئ"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>د پرده ساتونکي مخليد</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>.خبرتيا: پرده به د ولي کارن لپاره نه کولپيږي</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "برېښنا سمبالښت"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr ":سولګر لکه _وزګار شمېرل وروسته له"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "د پرده ساتونکي غوراوي"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "د پرده ساتونکي مخليد"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "د سولګر د وزګارېدو پر مهال پرده ساتونکی چارندول_"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "د سولګر د چارندېدو پر مهال پرده کولپول_"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "مخليد_"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr ":د پرده ساتونکي کوندې_"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "د پرده ساتونکي کوندې"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "پرده ساتونکي"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "د وزګارېدو پر مهال چارندول"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "وتون پرېښل"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "کارن ونجونه پرېښل"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "راتاوه کيليدړه بولۍ"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "پر چارندېدو کولپول"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "وتون بولۍ"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "د لېرې پاتې کېدو لامل"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "د پرده ساتونکي کوندې ټاکنې اکر"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr ".د سولګر نه د لېرې پاتې کېدو لامل"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "د کولپ کړکۍ کونده"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr ".د کولپ کړکۍ لپاره د کارولو کونده"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "د کولپېدو مخکښې مهال"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "د کوندې بدلېدو مخکښې مهال"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>:لپاره استوزه پرېښودل %R د</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">کښې %h په %U</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "بندول_"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "استوزه پرېښودل_"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "وتون_"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "کارن ونجول_"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1212
+msgid "_Unlock"
+msgstr "ناکولپول_"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr ""
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr ""
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr ""
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr ""
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr ""
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "انځورونه پوښۍ"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr ""
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr ""
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr ""
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr ""
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr ""
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "ټولوجګه_انځورونه"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "د کړکۍ لمړنی کچ او ځای"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "Y+X+اوږدوالیxپلنوالی"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "هغه سرچينه انځور چې وکارول شي"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr ""
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr ""
+
+#: ../savers/floaters.c:1209
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "هغه ځای چې انځورونه ترې واخېستل شي"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "يونلور"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "هغه رنګ چې د انځورونو د شاليد په توګه وکارول شي"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr ""
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "په پرده د انځورونو د غځولو هڅه مه کوه"
+
+#: ../src/copy-theme-dialog.c:211
+msgid "Copying files"
+msgstr "دوتنې لمېسل کيږي"
+
+#: ../src/copy-theme-dialog.c:229
+msgid "From:"
+msgstr ":له"
+
+#: ../src/copy-theme-dialog.c:233
+msgid "To:"
+msgstr ":ته"
+
+#: ../src/copy-theme-dialog.c:253
+msgid "Copying themes"
+msgstr "کوندې لمېسل کيږي"
+
+#: ../src/copy-theme-dialog.c:297
+msgid "Invalid screensaver theme"
+msgstr "ناسمه پرده ساتونکي کونده"
+
+#: ../src/copy-theme-dialog.c:300
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr ".سم پرده ساتونکي کونده نه ښکاري %s"
+
+#: ../src/copy-theme-dialog.c:480
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "%u له %u :دوتنه لمېسل کيږي"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "په سمه توګه پرده ساتونکی بندوي"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "د پرده ساتونکي انکړ پوښتل"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:55
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "د دې کاريال نسخه"
+
+#: ../src/mate-screensaver-command.c:249
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "دی %s پرده ساتونکی\n"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "active"
+msgstr "چارنده"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "inactive"
+msgstr "ناچارنده"
+
+#: ../src/mate-screensaver-command.c:274
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr ".سېکېنډو لپاره چارند وو %d پرده ساتونکی د\n"
+
+#: ../src/mate-screensaver-dialog.c:53
+msgid "Show debugging output"
+msgstr "د کړاوتمبونې وتنی ښودل"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show the logout button"
+msgstr "وتون تڼۍ ښودل"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Command to invoke from the logout button"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the switch user button"
+msgstr "کارن ونجول تڼۍ ښودل"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Message to show in the dialog"
+msgstr "هغه استوزه چې په کړکۍ کښې وښودل شي"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "MESSAGE"
+msgstr "استوزه"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:173 ../src/mate-screensaver-dialog.c:174
+#: ../src/mate-screensaver-dialog.c:175 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr ":کارننوم"
+
+#: ../src/mate-screensaver-dialog.c:176 ../src/mate-screensaver-dialog.c:177
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "تېرنويې"
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"ستاسو د ګڼون مهال بشپړ شوی؛ مهرباني وکړﺉ خپل غونډال پازوال سره اړيکه ونيسئ"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "No password supplied"
+msgstr "تېرنويې نه ده ټاکل شوې"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Password unchanged"
+msgstr "تېرنويې نه ده بدله شوې"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "Can not get username"
+msgstr "کارننوم نه شي اخېستلی"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Retype new UNIX password:"
+msgstr ":تېرنويې بيا ليکل UNIX نوې"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Enter new UNIX password:"
+msgstr ":تېرنويې ليکل UNIX نوې"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "(current) UNIX password:"
+msgstr ":تېرنويې UNIX (اوسنۍ)"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Error while changing NIS password."
+msgstr ".تېرنويې بدلولو پر مهال تېروتنهNISد"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "You must choose a longer password"
+msgstr "تاسو بايد يوه اوږده تېرنويې وټاکئ"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Password has been already used. Choose another."
+msgstr ".تېرنويې له مخکښې نه کارول شوې ده. له وټاکئ"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must wait longer to change your password"
+msgstr "خپلې تېرنويې بدلولو لپاره بايد تاسو ډېره تمه وکړئ"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Sorry, passwords do not match"
+msgstr "بښنه غواړو، تېرنويې سره نه لګيږي"
+
+#: ../src/mate-screensaver-dialog.c:257
+msgid "Checking..."
+msgstr "...کتل کيږي"
+
+#: ../src/mate-screensaver-dialog.c:299 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr ".کرونه پاتې راغله"
+
+#: ../src/mate-screensaver-preferences.c:498
+msgid "Blank screen"
+msgstr "توره پرده"
+
+#: ../src/mate-screensaver-preferences.c:504
+msgid "Random"
+msgstr "ناټاکلي"
+
+#: ../src/mate-screensaver-preferences.c:954
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/mate-screensaver-preferences.c:957
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/mate-screensaver-preferences.c:960
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:966
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:969
+#: ../src/mate-screensaver-preferences.c:977
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:972
+#: ../src/mate-screensaver-preferences.c:980
+#: ../src/mate-screensaver-preferences.c:984
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:999
+msgid "Never"
+msgstr "هېڅکله"
+
+#: ../src/mate-screensaver-preferences.c:1398
+msgid "Could not load the main interface"
+msgstr "ار برسېر نه شي لېښلی"
+
+#: ../src/mate-screensaver-preferences.c:1400
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "مهرباني وکړﺉ ځان ډاډمن کړﺉ چې پرده ساتونکی په سمه توګه لګول شوی"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ډاېمون مه جوړېږه"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "کړاتمبونې کوډ وړول"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr ""
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr ".ناسمه تېرنويې"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr ".دا مهال د لاس رسي پرېښلې نشته"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr ".نور د غونډال لاس رسي ته پرېښلې نه لرﺉ"
+
+#: ../src/gs-listener-dbus.c:1921
+msgid "failed to register with the message bus"
+msgstr "استوزه بس سره نومکښلو کښې پاتې راغی"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "not connected to the message bus"
+msgstr "استوزه بس سره نه دی نښتی"
+
+#: ../src/gs-listener-dbus.c:1940
+msgid "screensaver already running in this session"
+msgstr "پرده ساتونکی دمخه په دې ناستې کښې ځغلي"
+
+#: ../src/gs-lock-plug.c:269
+msgid "Time has expired."
+msgstr ".مهال تېر شوی"
+
+#: ../src/gs-lock-plug.c:297
+msgid "You have the Caps Lock key on."
+msgstr ".کيلۍ مو بله ده Caps Lock"
+
+#: ../src/gs-lock-plug.c:1192
+msgid "S_witch User..."
+msgstr "...ک_ارن ونجول"
+
+#: ../src/gs-lock-plug.c:1201
+msgid "Log _Out"
+msgstr "وتو_ن"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1378
+msgid "%U on %h"
+msgstr "کښې %h په %U"
+
+#: ../src/gs-lock-plug.c:1392
+msgid "_Password:"
+msgstr ":تېرنويې_"
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..a1657a6
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,1046 @@
+# mate-screensaver's Portuguese translation.
+# Copyright © 2006, 2007, 2008, 2009 mate-screensaver
+# This file is distributed under the same license as the mate-screensaver package.
+# Duarte Loreto <happyguy_pt at hotmail.com>, 2006, 2007, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.28\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-31 23:06+0100\n"
+"PO-Revision-Date: 2009-08-31 23:10+0000\n"
+"Last-Translator: Duarte Loreto <happyguy_pt at hotmail.com>\n"
+"Language-Team: Portuguese <mate_pt at yahoogroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Protecção de Ecrã"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Defina as suas preferências de protecção de ecrã"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Antevisão do Protector de Ecrã</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Aviso: o ecrã não ficará trancado para o utilizador root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Gestão de _Energia"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Considerar o computador como _inactivo após:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferências da Protecção de Ecrã"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Antevisão da Protecção de Ecrã"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activar o protector de ecrã quando o computador estiver inactivo"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Trancar o ecrã quando o protector de ecrã está activo"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Antevisão"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Tema do _protector de ecrã:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Temas do Protector de Ecrã"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Protectores de Ecrã"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activar quando _inactivo"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Permitir embutir um teclado na janela"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Permitir terminar sessão"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Permitir que seja apresentada a mensagem de estado da sessão"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Permitir que seja apresentada a mensagem de estado da sessão quando o ecrã "
+"está trancado."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Permitir trocar de utilizador"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Comando de teclado embutido"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Trancar ao activar"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Comando para terminar sessão"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Modo de selecção do tema de protector de ecrã"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Definir como VERDADEIRO para activar o protector de ecrã quando a sessão "
+"estiver inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Definir como \"TRUE\" para permitir embutir um teclado na janela ao tentar "
+"destrancar. A chave \"keyboard_command\" tem de estar definida com o comando "
+"adequado."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Definir como VERDADEIRO para trancar o ecrã quando o protector de ecrã se "
+"activar."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Definir como VERDADEIRO para disponibilizar uma opção no diálogo de "
+"destrancar para alternar para outra conta de utilizador."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Definir como VERDADEIRO para disponibilizar uma opção no diálogo de "
+"destrancar para terminar sessão após uma espera. A Espera é definida na "
+"chave \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"O comando que será executado, se a chave \"embedded_keyboard_enabled\" "
+"estiver definida como \"TRUE\", para embutir um widget de teclado na janela. "
+"Este comando deveria implementar um interface XEMBED de ligação e devolver "
+"uma janela XID na consola de saída."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"O comando a invocar ao ser premido o botão de terminar sessão. Este comando "
+"deverá apenas terminar a sessão do utilizador sem qualquer interacção. Esta "
+"chave apenas tem efeito se a chave \"logout_enable\" estiver definida como "
+"VERDADEIRA."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"O número de minutos após a activação do protector de ecrã antes de ser "
+"trancado o ecrã."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"O número de minutos após a activação do protector de ecrã antes de que seja "
+"disponibilizada no diálogo de destrancar um botão para terminar sessão. Esta "
+"chave apenas tem efeito se a chave \"logout_enable\" estiver definida como "
+"VERDADEIRA."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"O número de minutos de inactividade para que a sessão seja considerada "
+"inactiva."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr ""
+"O número de minutos a correr antes de ser alterado o tema do protector de "
+"ecrã."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"O número de segundos de inactividade antes de enviar um sinal para a gestão "
+"de energia. Esta chave é definida e mantida pelo agente de gestão de energia "
+"da sessão."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"O modo de selecção utilizado pelo protector de ecrã. Poderá ser \"blank-only"
+"\" para activar o protector de ecrã sem utilizar qualquer tema ou activação, "
+"\"single\" para activar a protecção de ecrã utilizando apenas um tema ao "
+"activar (especificado na chave \"themes\"), e \"random\" para activar a "
+"protecção de ecrã utilizando um tema aleatório ao activar."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema para a janela de tranca"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "tema a utilizar na janela de tranca."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Esta chave especifica a lista de temas a serem utilizados pela protecção de "
+"ecrã. É ignorada quando a chave \"mode\" é \"blank-only\", deverá indicar o "
+"nome do tema quando o \"mode\" for \"single\", e deverá especificar uma "
+"lista de temas quando o \"mode\" for \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Espera antes de trancar"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Espera antes da opção de terminar sessão"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Espera antes de activar as políticas de gestão de energia"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tempo inactivo para que a sessão seja considerada inactiva"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Espera antes de alterar o tema"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Deixar uma mensagem para %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U em %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Deixar Mensagem"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Terminar a Sessão"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Alternar Utilizador"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Destrancar"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Apresenta um conjunto de fotografias do cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bolhas no logotipo do pé do MATE por todo o ecrã"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Pé Flutuante"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Apresenta um conunto de fotografias da sua pasta de Imagens"
+
+# 48x48/emblems/emblem-pictures.icon.in.h:1
+# 48x48/emblems/emblem-pictures.icon.in.h:1
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Pasta de Imagens"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Uma grelha estilo pop-arte de cores pulsantes."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Quadrados pop-arte"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Apresentar os caminhos que as imagens seguem"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Ocasionalmente rodar as imagens à medida que elas se movem"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Imprimir o rácio de frames e outras estatísticas"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "O número máximo de imagens a manter no ecrã"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGENS"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "O tamanho e posição inicial da janela"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LARGURAxALTURA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "A imagem base a utilizar"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "imagem - flutuam imagens pelo ecrã"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Consulte --help para informações de utilização.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Tem de especificar uma imagem.  Consulte --help para informação de "
+"utilização.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Localização de onde obter as imagens"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CAMINHO"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "A cor a utilizar para o fundo das imagens"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Não aleatoriezar as imagens da localização"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Não tentar esticar as imagens no ecrã"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "A copiar os ficheiros"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Para:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "A copiar temas"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Tema de protecção de ecrã inválido"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s não aparenta ser um tema de protecção de ecrã válido."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "A copiar o ficheiro: %u de %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Força o protector de ecrã a terminar graciosamente"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Consulta o estado o protector de ecrã"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Consultar à quanto tempo o protector de ecrã está activo"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Indica ao processo de protecção de ecrã em execução para trancar o ecrã "
+"imediatamente"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Se a protecção de ecrã estiver activa então alterna para outra demonstração "
+"gráfica"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Activar a protecção de ecrã (ecrã preto)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Se a protecção de ecrã estiver activa, desactivá-la (ecrã deixa de estar "
+"preto)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Enviar mensagens ao protector de ecrã em execução para simular actividade de "
+"utilizador"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Impedir a protecção de ecrã de se iniciar.  Comando bloqueia enquando a "
+"inibição estiver activa."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "A aplicação chamadora que está a inibir a protecção de ecrã"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "O motivo para inibir o protector de ecrã."
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versão desta aplicação"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "O protector de ecrã está %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "activo"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inactivo"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "O protector de ecrã não está inibido\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "O protector de ecrã está a ser inibido por:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "O protector de ecrã está activo à %d segundos.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "O protector de ecrã actualmente não está activo.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Apresentar resultados da depuração"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Apresentar o botão de terminar sessão"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Comando a invocar pelo botão de terminar sessão"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Apresentar o botão de alternar utilizador"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Mensagem a apresentar no diálogo"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MENSAGEM"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Não está em utilização"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Utilizador:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Senha:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "É obrigatório alterar a sua senha imediatamente (senha antiga)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "É obrigatório alterar a sua senha imediatamente (forçado pelo root)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "A sua conta expirou; contacte o administrador do seu sistema"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Nenhuma senha especificada"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Senha inalterada"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Incapaz de obter o nome de utilizador"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Reintroduza a nova senha UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Introduza a nova senha UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Senha UNIX (actual):"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Erro ao alterar a senha NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Tem de escolher uma senha maior"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "A senha já foi utilizada anteriormente. Seleccione outra."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Tem de aguardar mais tempo antes de poder alterar a sua senha"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "As senhas não coincidem"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "A Verificar..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autenticação falhada."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Ecrã Preto"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aleatório"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hora"
+msgstr[1] "%d horas"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuto"
+msgstr[1] "%d minutos"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segundo"
+msgstr[1] "%d segundos"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nunca"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Incapaz de ler o interface principal"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Certifique-se de que o protector de ecrã está correctamente instalado"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Não executar como daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Activar a depuração de código"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Iniciar o protector de ecrã e a aplicação de trancar"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Incapaz de estabelecer o serviço %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Incapaz de definir PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Senha incorrecta."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Não lhe é permitido obter acesso neste momento."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Já não lhe é mais permitido aceder ao sistema."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "falha ao se registar no bus de mensagens"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "não se encontra ligado ao bus de mensagens"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "protecção de ecrã já se encontra em execução nesta sessão"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Tempo expirou."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Tem a tecla Caps Lock activa."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Alternar Utilizador..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Terminar a Sessão"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U em %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Senha:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Motivo para se ausentar"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "O motivo para se ausentar do computador."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "A copiar '%s'"
+
+#~ msgid "From URI"
+#~ msgstr "Do URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI fonte da transferência actual"
+
+#~ msgid "To URI"
+#~ msgstr "Para URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI de destino da transferência actual"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Fracção efectuada"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Fracção da transferência já efectuada"
+
+#~ msgid "Current URI index"
+#~ msgstr "Índice do URI actual"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Índice do URI actual - início em 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Total de URIs"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Número total de URIs"
+
+#~ msgid "Connecting..."
+#~ msgstr "A Ligar..."
+
+#~ msgid "S_witch to user:"
+#~ msgstr "Alternar para o utili_zador:"
+
+#~ msgid "_Switch user..."
+#~ msgstr "_Alternar o utilizador..."
+
+#~ msgid "N"
+#~ msgstr "n"
+
+#~ msgid "Manager"
+#~ msgstr "Gestor"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "O gestor que detém este objecto."
+
+#~ msgid "Name"
+#~ msgstr "Nome"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "O nome do ecrã X11 a que este objecto se refere."
+
+#~ msgid "User"
+#~ msgstr "Utilizador"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "O utilizador actualmente ligado nesta consola virtual."
+
+#~ msgid "Console"
+#~ msgstr "Consola"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr ""
+#~ "O número de consolas virtuais neste ecrã pode ser encontrado em, ou %-1."
+
+#~ msgid "Nested"
+#~ msgstr "Encadeado"
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Se este ecrã é ou não um ecrã encadeado (Xnest)."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "Incapaz de contactar o gestor de ecrã, por motivos desconhecidos."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "O gestor de ecrã não está em execução ou é demasiado antigo."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "Foi atingido o limite configurado de servidores flexíveis."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "Ocorreu um erro desconhecido ao inicializar o X."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "O servidor X falhou ao tentar iniciar."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "Existem demasiadas sessões X em execução."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "O servidor X nested (Xnest) não se consegue ligar ao seu servidor X "
+#~ "actual."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "Incapaz de encontrar o servidor X na configuração MDM."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "A tentar definir uma acção de terminar sessão desconhecida ou a tentar "
+#~ "definir uma acção de terminar sessão que não está disponível."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Terminais virtuais não suportados."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Número de terminal virtual inválido."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "A tentar actualizar uma chave de configuração não suportada."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "Ficheiro ~/.Xauthority mal configurado ou inexistente."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr ""
+#~ "Foram enviadas demasiadas mensagens para o gestor de ecrãs e este parou."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "O gestor de ecrãs enviou uma mensagem de erro desconhecida."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "O utilizador que esta entrada de menu representa."
+
+#~ msgid "Icon Size"
+#~ msgstr "Tamanho do Ícone"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "O tamanho do ícone a utilizar."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Tamanho do Indicador"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Tamanho do indicador de verificação"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Espaçamento do Indicador"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Espaço entre o nome do utilizador e o indicador"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "O objecto de gestão de objectos que controla este utilizador."
+
+#~ msgid "Show Details"
+#~ msgstr "Apresentar os Detalhes"
+
+#~ msgid "Time before activation"
+#~ msgstr "Espera antes da activação"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (O Gestor de Ecrãs MATE) não está em execução."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Poderá de facto estar a utilizar um gestor de ecrãs diferente, tal como o "
+#~ "KDM (Gestor de Ecrãs KDE) ou xdm."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Caso ainda assim deseje utilizar esta funcionalidade, inicie o MDM ou "
+#~ "peça ao administrador do sistema para o iniciar."
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "Incapaz de comunicar com o MDM (O Gestor de Sessões do MATE)"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Talvez tenha em execução uma versão antiga do MDM."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "Incapaz de comunicar com o MDM. Talvez tenha em execução uma versão "
+#~ "antiga."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "Foi atingido o limite permitido de servidores flexíveis X."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "Ocorreram erros ao tentar iniciar o servidor X."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "O servidor X falhou.  Talvez não esteja correctamente configurado."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "Demasiadas sessões X em execução."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "O servidor X nested (Xnest) não se consegue ligar ao seu servidor X "
+#~ "actual.  Talvez lhe falte um ficheiro de autorização X."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "O servidor X nested (Xnest) não está disponível ou o MDM está mal "
+#~ "configurado.\n"
+#~ "Instale o pacote do Xnest para poder utilizar o início de sessão "
+#~ "encadeado."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "O servidor X não está disponível. Provavelmente o MDM está mal "
+#~ "configurado."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "A tentar alterar para um número de terminal virtual inválido."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Não parece que possua a autenticação necessária para esta operação.  "
+#~ "Talvez o seu ficheiro .Xauthority não esteja correctamente configurado."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "Foram enviadas demasiadas mensagens para o MDM e este parou."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "Ocorreu um erro desconhecido."
+
+#~ msgid "_Screensaver"
+#~ msgstr "Protector de _Ecrã"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "Desactivar a execução de temas gráficos enquanto em protecção"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr ""
+#~ "Activar a execução de temas gráficos enquanto em protecção (se aplicável)"
+
+#~ msgid "0 seconds"
+#~ msgstr "0 segundos"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "Essa senha está incorrecta."
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..a1c7e87
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,787 @@
+# Brazilian Portuguese translation of mate-screensaver.
+# Copyright (C) 2005-2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+# Raphael Higino <raphaelh at uai.com.br>, 2005-2006.
+# Henrique Grolli Bassotto <henrique.grolli at gmail.com>, 2006.
+# Leonardo Ferreira Fontenelle <leo.fontenelle at gmail.com>, 2006.
+# Og Maciel <ogmaciel at ubuntu.com>, 2007.
+# Vladimir Melo <vladimirmelo at foresightlinux.org>, 2008.
+# André Gondim <andregondim at ubuntu.com>, 2009.
+# Krix Apolinário <krixapolinario at gmail.com>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-03 14:59-0300\n"
+"PO-Revision-Date: 2009-09-03 14:59-0300\n"
+"Last-Translator: Krix Apolinário <krixapolinario at gmail.com>\n"
+"Language-Team: Brazilian Portuguese <mate-pt_br-list at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Proteção de tela"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Defina suas preferências de proteção de tela"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Visualização da proteção de tela</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+"<b>Aviso: a proteção de tela não será bloqueada para o usuário root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Gerencia_mento de energia"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "_Considerar o computador ocioso após:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferências de proteção de tela"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Visualização de proteção de tela"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Ativar proteção de tela quando o computador estiver ocioso"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "B_loquear a tela quando a proteção de tela estiver ativa"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Visualizar"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Tema de proteção de tela:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Temas de proteção de tela"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Proteções de tela"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Ativar quando ocioso"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Permitir que um teclado seja embutido na janela"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Permitir encerramento de sessão"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Permitir que a mensagem de estado seja mostrada"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Permite que a mensagem de estado seja mostrada quando a tela estiver "
+"bloqueada."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Permitir trocar de usuário"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Comando de teclado embutido"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Bloquear ao ativar"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Comando de encerramento de sessão"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Modo de seleção do tema da proteção de tela"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Defina como TRUE para ativar a proteção de tela quando a sessão estiver "
+"ociosa."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Defina isso para TRUE para permitir que o teclado seja embutido na janela ao "
+"tentar desbloquear. A chave \"keyboard_command\" precisar ser definida com o "
+"comando adequado."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Defina como TRUE para bloquear a tela quando a proteção de tela ficar ativa."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Defina como TRUE para oferecer uma opção na caixa de diálogo de desbloqueio "
+"para trocar de usuário."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Defina como TRUE para oferecer uma opção na caixa de diálogo de desbloqueio "
+"para deslogar após um tempo. O tempo é especificado na chave \"logout_delay"
+"\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"O comando que será executado para incorporar um controle de teclado na "
+"janela, caso a chave \"embedded_keyboard_enabled\" seja definida como TRUE. "
+"Esse comando deve implementar uma interface XEMBED e enviar um XID da janela "
+"para a saída padrão."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"O comando para invocar quando o botão de encerramento de sessão for clicado. "
+"Esse comando deve apenas encerrar a sessão do usuário sem qualquer "
+"interação. Essa chave tem efeito apenas se a chave \"logout_enable\" estiver "
+"definida como TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"O número de minutos após a ativação da proteção de tela antes de bloquear a "
+"tela."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"O número de minutos após a ativação da proteção de tela antes que uma opção "
+"de encerramento de sessão apareça na caixa de diálogo de desbloqueio. Essa "
+"chave tem efeito apenas se a chave \"logout_enable\" estiver definida como "
+"TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"O número de minutos de inatividade antes que a sessão seja considerada "
+"ociosa."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "O número de minutos até mudar o tema da proteção de tela."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"O número de segundos de inatividade antes de ativar o gereciador de energia. "
+"Esta chave é definida e mantida pelo agente da sessão do gerenciador de "
+"energia."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"O modo de seleção usada pela proteção de tela. Pode ser \"blank-only\" para "
+"habilitar a proteção de tela sem usar nenhum tema, \"single\" para habilitar "
+"a proteção de tela usando apenas um tema (especificado na chave \"themes\") "
+"e \"random\" para habilitar a proteção de tela usando um tema aleatório."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema para diálogo de bloqueio"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema a ser usado na janela de diálogo do bloqueio de tela."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Essa chave especifica a lista de temas a ser usada pela proteção de tela. "
+"Ela é ignorada quando a chave \"mode\" for \"blank-only\", deve fornecer o "
+"nome do tema quando \"mode\" for \"single\" e deve uma lista de temas quando "
+"\"mode\" for \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tempo antes de bloquear"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tempo antes da opção de encerramento de sessão"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tempo antes da linha de base do gerenciador de energia"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tempo antes da sessão ser considerada ociosa"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tempo antes de alterar o tema"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Deixe uma mensagem para %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U em %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Cancelar"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Deixar _mensagem"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Encerrar sessão"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Trocar usuário"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Desbloquear"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Mostra uma apresentação de slides de fotos do cosmo"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Borbulha o logotipo do pé do MATE em torno da tela"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Pés flutuantes"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr ""
+"Exibe uma apresentação de slides com as figuras da sua pasta de fotografias"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Pasta Fotos"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Uma grade de arte pop de cores pulsantes."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Quadrados pop"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Mostrar os caminhos que as imagens seguem"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Ocasionalmente rotacionar imagens enquanto elas se movem"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Imprimir taxa de quadros e outras estatísticas"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "O número máximo de imagens para manter na tela"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MÁX_IMAGENS"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "A posição e o tamanho inicial de janela"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LARGURAxALTURA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "A imagem de origem a ser usada"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - faz imagens flutuarem em torno da tela"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Veja --help para informações de uso.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Você deve especificar uma imagem. Veja --help para informações de uso.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Local de onde obter as imagens"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CAMINHO"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Cor a ser usada plano de fundo das imagens"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Não randomizar fotos da localização"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Não tentar alongar imagens na tela"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Copiando arquivos"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Para:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Copiando temas"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Tema de proteção de tela inválido"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s não parece ser um tema de proteção de tela válido."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Copiando arquivo: %u de %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Faz a proteção de tela sair suavemente"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Consulta o estado da proteção de tela"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Consultar quanto tempo a proteção de tela está em execução"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Faz o processo da proteção bloquear a tela imediatamente"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Se a proteção de tela estiver ativa, então muda para uma outra demonstração "
+"gráfica"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Ativa a proteção de tela (deixa a tela vazia)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Se a proteção de tela estiver ativa então desative-a"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Simular atividade do usuário"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inibir a ativação da proteção de tela. O comando bloqueia enquanto a "
+"inibição estiver ativa."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "O aplicativo que está inibindo a proteção de tela"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "O motivo para inibir a proteção de tela"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versão deste aplicativo"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "A proteção de tela está %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "ativa"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inativa"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "A proteção de tela não está inibida\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "A proteção de tela está sendo inibida por:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "A proteção de tela está ativa por %d segundos.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "A proteção de tela não está ativa atualmente.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Mostrar saída de depuração"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Mostrar o botão de encerramento de sessão"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Comando invocado pelo botão de encerramento de sessão"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Mostrar o botão Trocar usuário"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Mensagem a ser mostrada no diálogo"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MENSAGEM"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Não usado"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Nome de usuário:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Senha:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Você precisa alterar sua senha imediatamente (a senha expirou)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Você precisa alterar sua senha imediatamente (determinação do root)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Sua conta expirou; por favor contate o administrador do sistema"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Senha não fornecida"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Senha não alterada"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Não foi possível obter o nome de usuário"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Redigite a nova senha UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Digite a nova senha UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Senha UNIX (atual):"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Erro ao alterar a senha NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Você precisa escolher uma senha maior"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Senha já em uso. Escolha outra."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Você precisa aguardar um pouco mais para alterar a sua senha"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Desculpe, suas senhas não conferem"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Verificando..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Falha na autenticação."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Tela vazia"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aleatória"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hora"
+msgstr[1] "%d horas"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minuto"
+msgstr[1] "%d minutos"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d segundo"
+msgstr[1] "%d segundos"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nunca"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Não foi possível carregar a interface principal"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr ""
+"Por favor, certifique-se que a proteção de tela está instalada corretamente"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Não se tornar um daemon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Habilitar depuração de código"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Executa o protetor de tela"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Não foi possível estabelecer o serviço %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Não foi possível definir PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Senha incorreta."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Dessa vez o acesso não é permitido."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Não é mais permitido ter acesso ao sistema."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "falha ao registrar no barramento de mensagens"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "não conectado ao barramento de mensagens"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "proteção de tela já ativa nesta sessão"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Tempo expirado."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "A tecla Caps Lock está ativada."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Trocar usuário..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Encerrar sessão"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U em %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Senha:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Motivo para estar ausente"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "O motivo para se ausentar do computador."
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..3a91428
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,774 @@
+# Romanian translation of mate-screensaver.
+# Copyright (C) 2007 - 2008 Free Software Foundation
+# This file is distributed under the same license as the mate-screensaver package.
+# Alexandru Szasz <alexxed at gmail.com>, 2007.
+# Mișu Moldovan <dumol at mate.ro>, 2008.
+# Lucian Adrian Grijincu <lucian.grijincu at gmail.com>, 2009
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-11-08 21:44+0200\n"
+"PO-Revision-Date: 2009-09-16 16:21+0300\n"
+"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu at gmail.com>\n"
+"Language-Team: Romanian <matero-list at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Launchpad-Export-Date: 2009-08-02 14:40+0000\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Economizor de ecran"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Schimbați opțiunile economizorului de ecran"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Previzualizare economizor</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Avertisment: ecranul nu va fi blocat pentru utilizatorul root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Gestionare ali_mentare"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Calculatorul este considerat _inactiv după:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Preferințe pentru economizorul de ecran"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Previzualizare economizor"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Activează economizorul când calculatorul este inactiv"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "B_lochează ecranul când economizorul este activ"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Previzualizare"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "Temă pentru _economizor:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Teme pentru economizor"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Economizoare de ecran"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Activează după o perioadă de inactivitate"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Permite înglobarea unei tastaturi în fereastră"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Permite ieșirea din sesiune"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Permite afișarea mesajului de stare a sesiunii"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Permite afișarea mesajului de stare a sesiunii când ecranul este blocat."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Permite schimbarea de utilizator"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Comandă pentru tastatura înglobată"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Blochează la activare"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Comandă de dezautentificare"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Selecție temă pentru economizor"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Alegeți TRUE pentru a activa economizorul când sesiunea este inactivă."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Alegeți TRUE pentru a permite înglobarea unei tastaturi în fereastră când se "
+"încearcă deblocarea. Cheia „keyboard_command” trebuie să fie setată cu o "
+"comandă potrivită."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Alegeți TRUE pentru a bloca ecranul când economizorul este activ."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Alegeți TRUE pentru a oferi opțiunea de a schimba la un nou cont de "
+"utilizator în dialogul de deblocare."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Alegeți TRUE pentru a activa opțiunea de dezautentificare după un timp "
+"stabilit în cheia „logout_delay”."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Comanda care va fi executată pentru a îngloba o tastatură în fereastră, dacă "
+"cheia „embedded_keyboard_enabled” este TRUE. Comanda aceasta ar trebui să "
+"implementeze o interfață de conectare XEMBED și să întoarcă o fereastră XID "
+"pe ieșirea standard."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Comanda de invocat când butonul „Ieșire din sesiune” este apăsat. Această "
+"comandă ar trebui să închidă sesiunea curentă în mod neinteractiv. Cheia "
+"aceasta are efect doar dacă cheia „logout_enable” este TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Numărul de minute de la activarea economizorului după care se blochează "
+"ecranul."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Numărul de minute de la activarea economizorului de ecran după care va "
+"apărea opțiunea de ieșire din sesiune în dialogul de deblocare. Această "
+"cheie are efect doar dacă cheia „logout_enable” este TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Numărul de minute de inactivitate după care sesiunea este considerată "
+"inactivă."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Intervalul în minute la care se schimbă tema economizorului."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Numărul de secunde de inactivitate înainte de a activa gestionarea "
+"alimentării. Această cheie este setată și menținută de agentul de gestiune a "
+"alimentării pentru sesiune."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Modul de selectare folosit de economizorul de ecran. Poate fi „blank-only” "
+"pentru a activa economizorul de ecran fără a folosi vreo temă, „single” "
+"pentru a activa economizorul folosind o singură temă (specificată în cheia "
+"„themes”) și „random” pentru a activa economizorul folosind o temă aleasă "
+"aleator la activare."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Temă pentru dialogul de blocare"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema de folosit pentru dialogul de blocare."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Această cheie specifică lista de teme de folosit pentru economizoare. E "
+"ignorată când cheia „mode” este „blank-only”, ar trebui să conțină numele "
+"temei când „mode” este „single” și ar trebui să conțină o listă de teme când "
+"„mode” este „random”."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Timp scurs înainte de blocare"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Timp scurs înainte de ieșirea din sesiune"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Timp scurs înainte de întreruperea alimentării ecranului"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Timp scurs înainte ca sesiunea să fie considerată inactivă"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Timp scurs înainte de schimbarea temei"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Lăsați un mesaj pentru %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U pe %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "A_nulare"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Mesaj în așteptare"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Ieșire din sesiune"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Alt utilizator"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Deblocare"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Arată un set de imagini din Cosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Sigla MATE este afișată pe ecran multiplicată"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Tălpi plutitoare"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Arată imagini din dosarul cu poze"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Dosar cu poze"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "O grilă de culori care pulsează într-un stil pop-art."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pătrate pop-art"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Arată căile urmate de imagini"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Rotește ocazional imaginile în timp ce se mișcă"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Arată numărul de cadre pe secundă și alte statistici"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Numărul maxim de imagini de păstrat pe ecran"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Mărimea inițială și poziția ferestrei"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "LĂȚIMExÎNĂLȚIME+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Imaginea sursă de utilizat"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "imagine - imagini plutind pe ecran"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Consultați --help pentru informații despre utilizare.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"E necesară specificarea unei imagini. Consultați --help pentru detalii.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Locația de unde se iau imaginile"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CALE"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Culoare de utilizat pentru fundalul imaginilor"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Nu amesteca aleator imaginile"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Nu încerca să întinzi imaginile pe ecran"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Se copiază fișierele"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "De la:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Către:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Se copiază temele"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Temă invalidă pentru economizor"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s nu pare a fi o temă validă de economizor."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Se copiază fișierul: %u din %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Determină economizorul să se încheie normal"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Interoghează starea economizorului de ecran"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Obține timpul de activitate al economizorului de ecran"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Transmite procesului economizor pornit o comandă de blocare imediată a "
+"ecranului"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Dacă economizorul de ecran este activ, atunci schimbă la alt demo grafic"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Pornește economizorul de ecran (înnegrește ecranul)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Dacă economizorul de ecran este activ, atunci deactivează-l"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Păcălește economizorul de ecran simulând activitate de utilizator"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Inhibă activarea economizorului de ecran. Comanda blochează când inhibarea "
+"este activă."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Aplicația care va inhiba economizorul de ecran"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Motivul pentru inhibarea economizorului"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versiunea acestei aplicații"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Economizorul de ecran este %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "activ"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inactiv"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Economizorul de ecran nu e întrerupt de nimic\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Economizorul de ecran este întrerupt de:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Economizorul de ecran a fost activ pentru %d secunde.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Economizorul de ecran nu este activ în acest moment.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Arată informații de depanare"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Arată butonul de ieșire din sesiune"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Comandă de invocat pentru butonul de ieșire din sesiune"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Afișează butonul de schimbare a utilizatorului"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Mesajul de afișat în dialog"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESAJ"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Nefolosit"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Utilizator:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Parolă:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Este necesar să vă schimbați parola imediat (parola este prea veche)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Este necesar să vă schimbați parola imediat (vă obligă administratorul)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Contul dumneavoastră a expirat, contactați administratorul de sistem"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Nu ați introdus o parolă"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Parolă neschimbată"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Nu se poate obține utilizatorul"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Tastați încă o dată noua parolă UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Introduceți noua parolă UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "Parola (curentă) UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Eroare la schimbarea parolei NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Trebuie să alegeți o parolă mai lungă"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Parola a fost deja folosită. Alegeți alta."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Trebuie să așteptați mai mult pentru a vă schimba parola"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Ne pare rău, parolele nu se potrivesc"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Se verifică..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autentificarea a eșuat."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Ecran gol"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Aleator"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d oră"
+msgstr[1] "%d ore"
+msgstr[2] "%d de ore"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minut"
+msgstr[1] "%d minute"
+msgstr[2] "%d de minute"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d secundă"
+msgstr[1] "%d secunde"
+msgstr[2] "%d de secunde"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Niciodată"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Nu se poate încărca interfața principală"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Vă rugăm să vă asigurați că economizorul este instalat corespunzător"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nu deveni un serviciu"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Activează codul de depanare"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Lansați programul de blocare și protejare a ecranului"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nu se poate stabili serviciul %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Nu se poate definii PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Parolă incorectă."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Deocamdată nu vă este permis accesul."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Nu vă mai este permis accesul la sistem."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "eșec la înregistrarea cu magistrala de mesaje"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "deconectat de la magistrala de mesaje"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "economizorul rulează deja în această sesiune"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Timpul a expirat."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Caps Lock activat."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "S_chimbă utilizatorul..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Ieșire din sesiune"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U pe %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Parolă:"
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..12cbada
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,781 @@
+# Russian translation of mate-screensaver.
+# Copyright (C) 2006 Free Software Foundation
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Sergio Kvantos <kvantos at plotinka.ru>, 2006.
+# Leonid Kanter <leon at asplinux.ru>, 2006.
+# Alexander Saprykin <xelfium at gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver trunk\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-10-13 13:03+0300\n"
+"PO-Revision-Date: 2009-10-09 18:46+0400\n"
+"Last-Translator: Alexander Saprykin <xelfium at gmail.com>\n"
+"Language-Team: Russian <mate-cyr at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: UTF-8\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Хранитель экрана"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Параметры хранителя экрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Просмотр хранителя экрана</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Внимание: экран не будет блокироваться для пользователя root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Управление _питанием"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Считать компьютер _простаивающим через:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Параметры хранителя экрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Просмотр хранителя экрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Запускать хранитель экрана, когда компьютер простаивает"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Блокировать экран, когда запущен хранитель экрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Просмотр"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Тема хранителя экрана:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Темы хранителя экрана"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Хранители экрана"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Активировать при простое"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Разрешить встраивание клавиатуры в окно"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Разрешить выход из сеанса"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Разрешить показ состояния сеанса"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Разрешить показ состояния сеанса когда экран заблокирован."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Разрешить переключение пользователей"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Команда встроенной клавиатуры"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Блокировать экран"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Команда выхода из сеанса"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Режим выбора темы хранителя экрана"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Если установлено значение TRUE, хранитель экрана будет блокировать экран, "
+"когда сеанс простаивает."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Установите, чтобы разрешить встраивание клавиатуры в окно при попытке "
+"разблокирования. Соответствующая команда должна быть указана в ключе "
+"«keyboard_command»."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Установите, чтобы хранитель экрана блокировал экран."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Установите, чтобы диалог разблокирования экрана предоставлял возможность "
+"войти в систему под другим именем."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Установите, чтобы к диалогу разблокирования экрана  добавилась возможность "
+"выхода из системы через определенный интервал. Интервал выхода из системы "
+"определяется ключом «logout_delay»."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Команда, которая должна выполняться, если установлен ключ "
+"«embedded_keyboard_enabled», для встраивания виджета клавиатуры в окно. "
+"Команда должна поддерживать интерфейс модуля XEMBED и выводить XID окна на "
+"стандартный вывод."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Команда, вызываемая при нажатии кнопки выхода из сеанса. Эта команда должна "
+"просто завершать сеанс пользователя без всякого интерактивного "
+"взаимодействия. Ключ имеет смысл только в том случае, если установлено "
+"значение TRUE ключа «logout_enable»."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Количество минут после активации хранителя экрана, по истечении которых "
+"экран будет заблокирован."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Интервал в минутах между активацией хранителя экрана и появлением параметра "
+"выхода из сеанса в диалоге разблокирования. Этот ключ имеет действие только "
+"в том случае, если установлено значение TRUE ключа «logout_enable»."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Интервал бездействия, по истечении которого сеанс считается простаивающим."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Интервал между сменами тем хранителя экрана."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Промежуток времени, по истечении которого система управления питанием "
+"получает сигнал о бездействии пользователя в сеансе. Этот ключ управляется "
+"агентом управления питанием."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Режим выбора, используемый хранителем экрана. Возможные варианты: «disabled» "
+"- отключён, «blank-only» - чёрный экран, «single» - использовать одну тему, "
+"указанную ключом «темы», «random» - использовать произвольную тему при "
+"активации."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Тема диалога блокирования"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Тема, используемая для диалога блокирования."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Этот ключ определяет список тем, используемых хранителем экрана. Он "
+"игнорируется, когда ключ «mode» установлен в «disabled» или «blank-only», "
+"должен предоставлять имя одной темы, если ключ «mode» установлен в «single», "
+"или список тем, если ключ «mode» установлен в «random»."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Интервал блокировки"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Интервал выхода из системы"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Время до выключения питания"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr ""
+"Интервал бездействия, по истечении которого сеанс считается простаивающим."
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Интервал изменения темы"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Оставьте сообщение для %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U на %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "О_тмена"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "Оставить соо_бщение"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "Завершить _сеанс"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Пе_реключить пользователя"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Разблокировать"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Космос"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Показывает слайд-шоу космических рисунков"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Всплывающие по всему экрану ступни MATE"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Плавающие ступни"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Показывает слайд-шоу изображений из папки Рисунки"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Папка рисунков"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Сеть из пульсирующих цветных ячеек"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Пульсирующие ячейки"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Показывать пути изображений"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Периодически вращать изображения при их перемещении"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Выводить частоту кадров и другую статистику"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Максимальное количество изображений на экране"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "МАКСИМАЛЬНОЕ_ЧИСЛО_ИЗОБРАЖЕНИЙ"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Начальные размер и положение окна"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ШИРИНАxВЫСОТА+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Используемое исходное изображение"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - плавающие по всему экрану изображения"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Используйте --help для получения информации о параметрах.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Необходимо указать один рисунок. Используйте --help для получения информации "
+"о параметрах.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Место, где находятся изображения"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ПУТЬ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Цвет для фона изображений"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Не перемешивать изображения из каталога"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Не пытаться растянуть изображения на экране"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Копирование файлов"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Из:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "В:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Копирование тем"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Неверная тема хранителя экрана"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Файл %s не похож на файл темы хранителя экрана."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Копируется файл: %u из %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Приводит к корректному завершению работы хранителя экрана"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Запрашивает состояние хранителя экрана"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr ""
+"Запрашивает промежуток времени, в течение которого работал хранитель экрана"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr ""
+"Указывает запущенному процессу хранителя экрана заблокировать экран "
+"немедленно"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr ""
+"Если хранитель экрана активен, переключиться к другой графической "
+"демонстрации"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Включить хранитель экрана (чёрный экран)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Если хранитель экрана активен, деактивировать его (восстановить экран)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Имитировать активность пользователя"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Запретить активирование хранителя экрана.  Команда блокируется, пока запрет "
+"активен."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Вызывающее приложение, которое блокирует хранитель экрана"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Причина блокирования хранителя экрана"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Версия этого приложения"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Хранитель экрана: %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "активно"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "неактивно"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Активация хранителя экрана не заблокирована\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Активация хранителя экрана заблокирована приложением:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Хранитель экрана работал %d секунд.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Хранитель экрана сейчас неактивен.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Отображать отладочный вывод"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Отображать кнопку выхода из сеанса"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Команда, вызываемая при нажатии кнопки выхода"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Отображать кнопку переключения пользователя"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Сообщение в диалоге"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "СООБЩЕНИЕ"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Не использовано"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Имя пользователя:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Пароль:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr ""
+"Вам необходимо сменить ваш пароль немедленно (срок действия пароля истёк)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Вам необходимо сменить пароль немедленно (требование администратора)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr ""
+"Срок действия вашей учетной записи истёк, свяжитесь со своим системным "
+"администратором"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Пароль не введен"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Пароль оставлен без изменения"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Не удаётся получить имя пользователя"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Повторите новый пароль UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Введите новый пароль UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(текущий) пароль UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Ошибка при изменении пароля NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Вы должны выбрать более длинный пароль"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Этот пароль уже был использован. Выберите другой пароль."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Вы должны подождать дольше, чтобы сменить ваш пароль"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Пароли не совпадают"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Проверка..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Сбой аутентификации."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Пустой экран"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Случайным образом"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d час"
+msgstr[1] "%d часа"
+msgstr[2] "%d часов"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d минута"
+msgstr[1] "%d минуты"
+msgstr[2] "%d минут"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d секунда"
+msgstr[1] "%d секунды"
+msgstr[2] "%d секунд"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s·%s·%s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s·%s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Никогда"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Не удалось загрузить основной интерфейс"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Убедитесь, что хранитель экрана установлен должным образом"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Не становиться демоном"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Включить режим отладки"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Запустить хранитель экрана и программу блокировки"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Не удаётся установить службу %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Не удаётся установить PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Неверный пароль."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Нет доступа к системе в это время."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Больше нет доступа к этой системе."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "ошибка регистрации на шине сообщений"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "не подключен к шине сообщений"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "хранитель экрана уже запущен в этом сеансе"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Время истекло."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Включен режим Caps Lock."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "Пе_реключить пользователя..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Завершить _сеанс"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U на %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Пароль:"
diff --git a/po/si.po b/po/si.po
new file mode 100644
index 0000000..c3897de
--- /dev/null
+++ b/po/si.po
@@ -0,0 +1,765 @@
+# translation of si.po to Sinhala
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Danishka Navin <snavin at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: si\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-05-07 03:39+0100\n"
+"PO-Revision-Date: 2007-09-17 12:27+0530\n"
+"Last-Translator: Danishka Navin <snavin at redhat.com>\n"
+"Language-Team: Sinhala <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "තිරආවරකය"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "ඔබගේ තිරආවරක අභිප්‍රේත සකසන්න"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>තිරආවරකය පෙන්වන්න</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>අවවාදය: තිරය පද්ධති පරිපාලක (root පරිශිලක) සඳහා අගුලැමට නොහැකිය.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "ශක්ති කළමණාකරනය (_M)"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr ""
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "තිරආවරක අභිප්‍රේතයන්"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "තිරආවරකය පෙන්වන්න"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "පරිගණකය අභාවිත වනවිට තිරආවරකය සක්‍රිය කරන්න (_A)"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "තිරආවරකය සක්‍රිය වන විට තිරය අගුලු දමන්න (_L)"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "පෙන්වන්න (_P)"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "තිරආවරකයේ තේමාව: (_S)"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver themes"
+msgstr "තිරආවරකයේ තේමා"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "තිරආවරක"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "අභාවිත විට සක්‍රිය කරන්න"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+#, fuzzy
+msgid "Allow embedding a keyboard into the window"
+msgstr "කවුළුව තුලට  යතුරු පුවරුව කාවැදීම අනුමතයී"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "ඉවත්විමට ඉඩ දෙන්න"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "පරිශිලක හුවමාරුවට ඉඩ දෙන්න "
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Embedded keyboard command"
+msgstr "කාවැදුනු යතුරු පුවරු විධානය"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Lock on activation"
+msgstr "සක්‍රිය විටදි අගුලු දමන්න"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Logout command"
+msgstr "ඉවත් වීමෙ විධානය"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Reason for being away"
+msgstr "ඉවතට යාමට හේතුව"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Screensaver theme selection mode"
+msgstr "තිරආවරකයේ තේමාව තොරා ගැනිමේ ආකාරය"
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "සැසිය අභාවිත විටදී තිරආවරකය සක්‍රිය වීමට මෙය සත්‍ය අගයට සකසන්න."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "තිරආවරකය සක්‍රිය වීමේදි තිරය අගුලුලෑමට මෙය සත්‍ය අගයට සකසන්න."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+#, fuzzy
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"වෙනත් පරිශ්‍රක ගිණුමක් වෙත මාරු වීම සඳහා අගුලු-අරින සංවාද කොටුවේ විකල්පයක් "
+"ලබා දීමට මෙය සත්‍ය අගයට සකසන්න."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"මදක් ප්‍රමාදවි පිවිසීමම සඳහා අගුලු-අරින සංවාද කොටුවේ විකල්පයක් "
+"ලබා දීමට මෙය සත්‍ය අගයට සකසන්න ප්‍රමාදය \"logout_delay\" "
+"යතුරෙහි විශේෂිතව දක්වා ඇත.."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "තිරආවරකය ක්‍රියාත්මකවු පසු තිරය අගුලු ලැමට ගතවන මිනිත්තු ගණන."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+#, fuzzy
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. මෙම යතුර ක්‍රියාත්මක වන්නේ "
+"\"logout_enable\" යතුර සත්‍ය අගයට සැකසුවහොත් පමණි."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "සැසිය අභාවිත ලෙස සැලකීමට පෙර කාළය අක්‍රියව පවතින මිනිත්තු ගණන."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "තිරආවරක තේමාව වෙනස් වීමට පෙර ක්‍රියාත්මක වියයුතු මිනිත්තු ගණන."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"ශක්ති-කළමණාකරනයට සංඥා කිරිමට ප්‍රථම අක්‍රිය වන තත්පර ගණන."
+"සැසි ශක්ති-කළමණාකරනය නියොජිතයා මෙම යතුර සැකසීම සහ නඩත්තු කටයුතු සිදු කරයි."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The reason for being away from the computer."
+msgstr "ඔබගේ පරිගණකය වෙතින් ඉවත්ව යාමට හේතුව"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "අගුලු සංවාද කොටුව සඳහා තේමාව"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "අගුලු සංවාද කොටුව සඳහා බාවිතා කලයුතු තේමාව."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "අගුලුලෑමට පෙර කාලය"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "ඉවත් වීමේ විකල්පයට පෙර කාළය"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+#, fuzzy
+msgid "Time before power-management baseline"
+msgstr "ශක්ති කළමණාකරන සීමා රේඛාවට පැමිණිමට පෙර කාළය"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "සැසිය අභාවිත ලෙස සැලකීමට පෙර කාළය"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "තේමාව වෙනස් වීමට පෙර කාළය"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R වෙත පණිවිඩයක් තබන්න:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+#, fuzzy
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "Authentication"
+msgstr "තහවුරු කර ගැනීම"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "Note"
+msgstr "සටහන"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Cancel"
+msgstr "අවලංගු කරන්න (_C)"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Leave Message"
+msgstr "පණිවිඩයක් තබන්න (_L)"
+
+#: ../data/lock-dialog-default.glade.h:11
+msgid "_Log Out"
+msgstr "ඉවත් වීම (_L)"
+
+#: ../data/lock-dialog-default.glade.h:12
+#, fuzzy
+msgid "_Switch User"
+msgstr "පරිශිලක මාරුව (_S)"
+
+#: ../data/lock-dialog-default.glade.h:13 ../src/gs-lock-plug.c:1207
+msgid "_Unlock"
+msgstr "අගුලු අරින්න (_U)"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "cosmos පිංතුර මගින් තිරපෙන්නූමක් දර්ශණය කරන්න"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+#, fuzzy
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE පාද සළකුණ තිරය පුරා  බුබුලණය කරන්න"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "පාවෙන පාද"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "ඔබගේ පිංතුර බහලුමෙන් තිරපෙන්නූමක් දර්ශණය කරන්න"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "පිංතුර බහලුම"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr ""
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "චිත්‍ර කොටු මතු කරන්න"
+
+#: ../savers/floaters.c:1166
+msgid "show paths that images follow"
+msgstr ""
+
+#: ../savers/floaters.c:1173
+msgid "occasionally rotate images as they move"
+msgstr "කලාතුරකින් පිළිඹිබු චලනය වන ලෙස කර කවන්න"
+
+#: ../savers/floaters.c:1180
+msgid "print out frame rate and other statistics"
+msgstr "රාමු ශිඝ්‍රතාව සහ වෙනත් සංඛ්‍යන දත්ත මුද්‍රණය කරන්න"
+
+#: ../savers/floaters.c:1188
+msgid "the maximum number of images to keep on screen"
+msgstr "තිරය මත තිබිය යුතු උපරිම පිළිඹිබු ගණන"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1192
+msgid "N"
+msgstr "N"
+
+#: ../savers/floaters.c:1199
+msgid "the source image to use"
+msgstr "භවිතා කලයුතු මුලාශ්‍ර පිළිඹිබුව"
+
+#: ../savers/floaters.c:1206
+msgid "the initial size and position of window"
+msgstr "කවුළුවේ ආරම්භක ප්‍රමාණය සහ පිහිටීම"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1211
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "පළලxඋස+X+Y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1229
+msgid "image - floats images around the screen"
+msgstr ""
+
+#: ../savers/floaters.c:1239
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s.  භවිතය පිළිබද තොරතුරුතර සඳහා --help බලන්න.\n"
+
+#: ../savers/floaters.c:1248
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "ඔබ විසින් එක් පිළිඹිබුවක් විශේෂිතව දැක්විය යුතුයි.  භාවිතය පිළිබද තොරතුරු සඳහා --help බලන්න.\n"
+
+#: ../savers/slideshow.c:49
+msgid "Location to get images from"
+msgstr "පිළිඹිබු ගතයුතු ස්තානය"
+
+#: ../savers/slideshow.c:49
+msgid "PATH"
+msgstr "මාර්‍ගය"
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "ගොනු පිටපත් කරමින් සිටී: %u of %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "පිටපත් කරමින් සිටී '%s'"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "URI වෙතින්"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "URI දැනට වෙතින් මාරුවෙමින් පවතින්නේ"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "URI වෙත"
+
+#: ../src/file-transfer-dialog.c:202
+#, fuzzy
+msgid "URI currently transferring to"
+msgstr "URI දැනට මාරුවන්නේ"
+
+#: ../src/file-transfer-dialog.c:209
+#, fuzzy
+msgid "Fraction completed"
+msgstr "සුළු කොටස සම්පුර්ණ විය"
+
+#: ../src/file-transfer-dialog.c:210
+#, fuzzy
+msgid "Fraction of transfer currently completed"
+msgstr "මාරු කිරිමේ සුළු කොටස දැනට සම්පුර්ණයි"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "දැනට ඇති URI පටුන"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "වර්තමාන URI පටුණ - 1න් පටන් ගන්න"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "සියළුම URIs"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "URI එකතුව"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "ගොනු පිටපත් කරමින් සිටී"
+
+#: ../src/file-transfer-dialog.c:345
+#, fuzzy
+msgid "From:"
+msgstr "ආපසු:"
+
+#: ../src/file-transfer-dialog.c:349
+#, fuzzy
+msgid "To:"
+msgstr "යායුතු:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "සම්බන්ද වෙමින්..."
+
+#: ../src/mate-screensaver-command.c:62
+#, fuzzy
+msgid "Causes the screensaver to exit gracefully"
+msgstr "ප්‍රසන්න ලෙස තිරආවරකයට ඉවත්වීමට සැලසීය"
+
+#: ../src/mate-screensaver-command.c:64
+#, fuzzy
+msgid "Query the state of the screensaver"
+msgstr "තිරආවරකයේ තත්වය විමසන්න"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:68
+#, fuzzy
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "ක්‍රියාත්මක වෙමින් පවතින තිරආවරක වැඩසටහනට හැකි ඉක්මනින් තිරය වැසීමට පවසන්න"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "තිරආවරකය ක්‍රියාකරි නම් වෙනත් චිත්‍රක ප්‍රදර්ශකයක් වෙතට මාරු වන්න"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "තිරආවරකය ක්‍රියාත්මක කරන්න (තිරය හිස් කරන්න)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "තිරආවරකය සක්‍රිය නම් එය අක්‍රිය කරන්න (තිරය හිස් නොකරන්න)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr ""
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:55
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "මෙම යෙදුමෙ වෙළුම"
+
+#: ../src/mate-screensaver-command.c:249
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "තිරආවරකය වන්නේ %s\n"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "active"
+msgstr "සක්‍රිය"
+
+#: ../src/mate-screensaver-command.c:249
+msgid "inactive"
+msgstr "අක්‍රිය"
+
+#: ../src/mate-screensaver-command.c:274
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr ""
+
+#: ../src/mate-screensaver-dialog.c:53
+msgid "Show debugging output"
+msgstr "දෝෂහරිණ ප්‍රථිධානය පෙන්වන්න"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show the logout button"
+msgstr "ඉවත් වීමේ බොත්තම පෙන් වන්න"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Command to invoke from the logout button"
+msgstr "ඉවත් වීමෙ බොත්තමෙන් ඉල්ලා සිටින විධානය"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the switch user button"
+msgstr "පරිශිලක හුවමාරු බොත්තම පෙන්වන්න"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Message to show in the dialog"
+msgstr "සංවාද කොටුවේ පෙන් විය යුතු පණිවිඩවේ"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "MESSAGE"
+msgstr "පණිවිවිඩය"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:173 ../src/mate-screensaver-dialog.c:174
+#: ../src/mate-screensaver-dialog.c:175 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "පරිශිලක නම:"
+
+#: ../src/mate-screensaver-dialog.c:176 ../src/mate-screensaver-dialog.c:177
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "රහස්පදය:"
+
+#: ../src/mate-screensaver-dialog.c:178
+msgid "You are required to change your password immediately (password aged)"
+msgstr "ඔබ හැකි ඉක්මනින් රහස් පදය වෙනස් කළයුතුවේ (රහස්පදය පරණයි)"
+
+#: ../src/mate-screensaver-dialog.c:179
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "ඔබ හැකි ඉක්මනින් රහස්පදය වෙනස් කළයුතුවේ (root බලකරයි)"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "Your account has expired; please contact your system administrator"
+msgstr "ඔබගේ ගිණුම අවලංගු වී ඇත; කරුණාකර ඔබගේ පද්ධති පරිපාලක හමුවන්න"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "No password supplied"
+msgstr "රහස්පදයක් සපයා නැත"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Password unchanged"
+msgstr "රහස්පදය වෙනස් නොවුනී"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "Can not get username"
+msgstr "පරිශීලක නාමය ගත නොහැක"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Retype new UNIX password:"
+msgstr "නව UNIX රහස්පදයක් නැවත යොදන්න:"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Enter new UNIX password:"
+msgstr "නව UNIX රහස්පදයක් ඇතුලත් කරන්න:"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "(current) UNIX password:"
+msgstr "(දැනට ඇති) UNIX රහස්පදය:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Error while changing NIS password."
+msgstr "NIS රහස්පදය වෙනස් කිරීමේදි දෝෂයක්."
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "You must choose a longer password"
+msgstr "ඔබ විසින් වඩා දිගු රහස්පදයක් තෝරාගත යුතුමවේ"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Password has been already used. Choose another."
+msgstr "රහස්පදය මීට පෙර භාවිතා කර ඇත. වෙත් එකක් තොරන්න."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must wait longer to change your password"
+msgstr "රහස්පදය වෙනස් කිරිමට ඔබ බොහෝ වේලාවක් රැදී සිටිය යුතුමයි"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Sorry, passwords do not match"
+msgstr "සමාවන්න, රහස්පද නොගැලපේ"
+
+#: ../src/mate-screensaver-dialog.c:257
+msgid "Checking..."
+msgstr "පරික්‍ෂාකරමින්..."
+
+#: ../src/mate-screensaver-dialog.c:299 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "තහවුරු කර ගැනීම අසමත්විය."
+
+#: ../src/mate-screensaver-preferences.c:461
+msgid "Blank screen"
+msgstr "හිස් තිරය"
+
+#: ../src/mate-screensaver-preferences.c:467
+msgid "Random"
+msgstr "අහබු"
+
+#: ../src/mate-screensaver-preferences.c:837
+msgid "Invalid screensaver theme"
+msgstr "සාවද්‍ය තිරආවරක තේමාවක්"
+
+#: ../src/mate-screensaver-preferences.c:840
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "මෙම ගොනුව නිරවද්‍ය තිරආවරක තේමාවක් ලෙස නොදැක්වේ."
+
+#: ../src/mate-screensaver-preferences.c:967
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "පැය %d යි"
+msgstr[1] "පැය %d යි"
+
+#: ../src/mate-screensaver-preferences.c:970
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "විනාඩි %d යි"
+msgstr[1] "විනාඩි %d යි"
+
+#: ../src/mate-screensaver-preferences.c:973
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "තත්පර %d යි"
+msgstr[1] "තත්පර %d යි"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:979
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:982
+#: ../src/mate-screensaver-preferences.c:990
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:985
+#: ../src/mate-screensaver-preferences.c:993
+#: ../src/mate-screensaver-preferences.c:997
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1012
+#, fuzzy
+msgid "Never"
+msgstr "කිසිදාක නැත"
+
+#: ../src/mate-screensaver-preferences.c:1411
+msgid "Could not load the main interface"
+msgstr "ප්‍රධාන මුහුණත පුරණය කළ නොහැක"
+
+#: ../src/mate-screensaver-preferences.c:1413
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "කරුණාකර තිරආවරකය නිසි ලෙස ස්ථාපනය කළ ඇති දැයි තහවුරු කරගන්න."
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "විබුද්ධකයකු නොවන්න"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "දෝෂහරිණ කේත සක්‍රිය කරන්න"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%s සේවය ස්ථාපනය කළ නොහැක: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s සැකසීමට නොහැකිය "
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "සාවද්‍ය රහස්පදයකී."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "මෙම අවස්තාවේ භාවිතයට අවසර නැත."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "වැඩිදුරටත් භාවිතයට අවසර නැත."
+
+#: ../src/gs-listener-dbus.c:1817
+msgid "failed to register with the message bus"
+msgstr "පණිවිඩ බසය සමඟ ලියාපදිංචිම අපහසු විය"
+
+#: ../src/gs-listener-dbus.c:1827
+msgid "not connected to the message bus"
+msgstr "පණිවිඩ බසයට සම්බන්ද නොවුනි"
+
+#: ../src/gs-listener-dbus.c:1836
+msgid "screensaver already running in this session"
+msgstr "මෙම සැසියේ තිරආවරකය මේවන විටත් ක්‍රියාත්මකව ඇත"
+
+#: ../src/gs-lock-plug.c:269
+msgid "Time has expired."
+msgstr "කාළය අවසන් විය."
+
+#: ../src/gs-lock-plug.c:297
+msgid "You have the Caps Lock key on."
+msgstr "ඔබ Caps Lock යතුර ක්‍රියා කරවා ඇත."
+
+#: ../src/gs-lock-plug.c:1187
+msgid "S_witch User..."
+msgstr "පරිශිලක හුවමාරුව... (_w)"
+
+#: ../src/gs-lock-plug.c:1196
+msgid "Log _Out"
+msgstr "ඉවත් වීම (_O)"
+
+#: ../src/gs-lock-plug.c:1372
+msgid "%U on %h"
+msgstr "%h මත %U"
+
+#: ../src/gs-lock-plug.c:1386
+msgid "_Password:"
+msgstr "රහස්පදය: (_P)"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100644
index 0000000..1adb52e
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,776 @@
+# Slovak translation for mate-screensaver.
+# Copyright (C) 2005, 2007, 2008, 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+# Peter Tuharsky <tuharsky at misbb.sk>, 2007.
+# Marcel Telka <marcel at telka.sk>, 2005, 2008, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2010-02-26 10:06+0000\n"
+"PO-Revision-Date: 2010-02-26 14:28+0100\n"
+"Last-Translator: Marcel Telka <marcel at telka.sk>\n"
+"Language-Team: Slovak <mate-sk-list at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Šetrič obrazovky"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Nastaviť predvoľby vášho šetriča obrazovky"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Ukážka šetriča obrazovky</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Upozornenie: obrazovka sa nezamkne pre používateľa root.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Správa _napájania"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Považovať počítač za neč_inný po:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Predvoľby šetriča obrazovky"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Ukážka šetriča obrazovky"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktivovať šetrič obrazovky keď je počítač nečinný"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Uzamknúť obrazovku keď je aktívny šetrič obrazovky"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Ukážka"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Téma šetriča obrazovky:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Témy šetriča obrazovky"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Šetriče obrazovky"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktivovať pri nečinnosti"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Povoliť zabudovanie klávesnice do okna"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Povoliť odhlásenie"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Povoliť zobrazenie správy o stave relácie"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Povoliť zobrazenie správy o stave relácie, keď je obrazovka uzamknutá."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Povoliť prepnutie používateľa"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Príkaz zabudovanej klávesnice"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Uzamknúť pri aktivácii"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Príkaz pre odhlásenie"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Režim výberu šetriča obrazovky"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Nastavte toto na TRUE, ak sa má pri nečinnosti relácie aktivovať šetrič "
+"obrazovky."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Nastavte toto na TRUE, ak chcete umožniť zabudovanie klávesnice do okna pri "
+"pokuse o odomknutie. Kľúč \"keyboard_command\" musí byť obsahovať príslušný "
+"príkaz."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Nastavte toto na TRUE, ak sa má pri aktivovaní šetriča obrazovky uzamknúť "
+"obrazovka."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Nastavte toto na TRUE, aby sa ponúkala možnosť prepnutia na iný "
+"používateľský účet v odomykacom dialógovom okne."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Nastavte toto na TRUE, aby sa ponúkala možnosť odhlásenia po vypršaní lehoty "
+"v odomykacom dialógovom okne. Dĺžka trvania lehoty sa nastavuje v kľúči "
+"\"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Príkaz, ktorý sa spustí, ak je kľúč \"embedded_keyboard_enabled\" nastavený "
+"na TRUE, na zabudovanie prvku klávesnice do okna. Tento príkaz musí "
+"implementovať XEMBED zásuvné rozhranie a poslať XID okna na štandardný "
+"výstup."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Príkaz, ktorý sa vyvolá po kliknutí na tlačidlo odhlásenia. Tento príkaz "
+"musí jednoducho odhlásiť používateľa bez akýchkoľvek otázok. Tento kľúč je "
+"účinný iba ak je kľúč \"logout_enable\" nastavený na TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "Počet minút od aktivácie šetriča obrazovky po zamknutie obrazovky."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Počet minút od aktivácii šetriča obrazovky po zobrazenie možnosti odhlásenia "
+"v odomykacom dialógovom okne. Tento kľúč je účinný iba ak je kľúč "
+"\"logout_enable\" nastavený na TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Počet minút nečinnosti kým sa relácia začne považovať za nečinnú."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Počet minút behu, kým sa zmení téma šetriča obrazovky."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Počet sekúnd nečinnosti, kým sa odošle signál správe napájania. Tento kľúč "
+"nastavuje agent správy napájania relácie."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Výberový režim šetriča obrazovky. \"blank-only\" povolí spustenie šetriča "
+"bez akejkoľvek témy, \"single\" povolí šetrič s jedinou témou (označenou v "
+"kľúči \"themes\"), a \"random\" povolí šetrič s náhodným výberom témy."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Téma pre dialógové okno uzamknutia"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Téma pre dialógové okno uzamknutia."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Tento kľúč určuje zoznam tém, ktoré má šetrič orazovky používať. Ignoruje "
+"sa, ak je kľúč \"mode\" nastavený na \"blank-only\", ináč by mal uvádzať "
+"meno témy ak \"mode\" je \"single\", alebo zoznam tém keď \"mode\" je "
+"\"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Čas pred uzamknutím"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Čas pred možnosťou odhlásenia"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Čas pred základom správy napájania"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Čas pred tým, než je relácia považovaná za nečinnú"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Čas pred zmenou témy"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Zanechať správu pre %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U na %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Zrušiť"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Zanechať správu"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Odhlásiť"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Prepnúť používateľa"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1372
+msgid "_Unlock"
+msgstr "_Odomknúť"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Vesmír"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Zobraziť prezentáciu z obrázkov vesmíru"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Vybublinkuje logo nohy MATE okolo obrazovky"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Plávajúce nohy"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Zobraziť prezentáciu z vášho priečinka obrázkov"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Priečinok s obrázkami"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pop-artistická matica pulzujúcich farieb"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop-artistické štvorce"
+
+#: ../savers/popsquares.c:49 ../savers/floaters.c:1204
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Ak chcete informácie o používaní, pozrite --help.\n"
+
+#: ../savers/floaters.c:88
+msgid "Show paths that images follow"
+msgstr "Zobraziť cesty ktoré sledujú obrázky"
+
+#: ../savers/floaters.c:91
+msgid "Occasionally rotate images as they move"
+msgstr "Občas otočiť obrázky počas pohybu"
+
+#: ../savers/floaters.c:94
+msgid "Print out frame rate and other statistics"
+msgstr "Zobraziť počet snímok za sekundu a iné štatistiky"
+
+#: ../savers/floaters.c:97
+msgid "The maximum number of images to keep on screen"
+msgstr "Maximálny počet obrázkov, ktoré ponechať na obrazovke"
+
+#: ../savers/floaters.c:97
+msgid "MAX_IMAGES"
+msgstr "MAX_OBRÁZKOV"
+
+#: ../savers/floaters.c:100
+msgid "The initial size and position of window"
+msgstr "Úvodná veľkosť a umiestnenie okna"
+
+#: ../savers/floaters.c:100
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:103
+msgid "The source image to use"
+msgstr "Zdrojový obrázok, ktorý použiť"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1198
+msgid "image - floats images around the screen"
+msgstr "image - obrázky plávajú po obrazovke"
+
+#: ../savers/floaters.c:1213
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Musíte zadať jeden obrázok. Informácie o používaní nájdete pomocou --help.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Umiestnenie, odkiaľ získať obrázky"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "CESTA"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Farba pozadia obrázkov"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Obrázky z miesta nepúšťať náhodne"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Nepokúšať sa natiahnuť obrázky na obrazovke"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopírujú sa súbory"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Odkiaľ:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Kam:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopírujú sa témy"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Neplatná téma šetriča obrazovky"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s nevyzerá ako platná téma šetriča obrazovky."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopíruje sa súbor: %u z %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Spôsobí korektné ukončenie šetriča obrazovky"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Zistiť stav šetriča obrazovky"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Zistiť dobu aktivity šetriča obrazovky"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Požiada bežiaci šetrič obrazovky, aby okamžite uzamkol obrazovku"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Ak je šetrič obrazovky aktívny, tak prepnúť na iné grafickú ukážku"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Zapnúť šetrič obrazovky (vyprázdniť obrazovku)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Ak je šetrič obrazovky aktívny, tak ho deaktivovať (opustiť režim prázdnej "
+"obrazovky)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Šťuchnúť do bežiaceho šetriča obrazovky tak, aby sa napodobnila aktivita "
+"používateľa"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Potlačiť aktiváciu šetriča obrazovky. Príkaz blokuje, kým je aktívne "
+"potlačenie."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Volajúca aplikácia, ktorá potláča šetrič obrazovky"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Dôvod potlačenia šetriča obrazovky"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:59
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Verzia tejto aplikácie"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Šetrič obrazovky je %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktívny"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "neaktívny"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Šetrič obrazovky nie je potlačený\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Šetrič obrazovky potlačuje:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Doterajšia aktivita šetriča obrazovky trvala %d sekúnd.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Šetrič obrazovky teraz nie je aktívny.\n"
+
+#: ../src/mate-screensaver-dialog.c:57
+msgid "Show debugging output"
+msgstr "Zobraziť ladiaci výstup"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Show the logout button"
+msgstr "Zobraziť tlačidlo odhlásenia"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Command to invoke from the logout button"
+msgstr "Príkaz, ktorý sa má spustiť tlačidlom pre odhlásenie"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Show the switch user button"
+msgstr "Zobraziť tlačidlo prepnutia používateľa"
+
+#: ../src/mate-screensaver-dialog.c:67
+msgid "Message to show in the dialog"
+msgstr "Správa, ktorá sa má zobraziť v dialógovom okne"
+
+#: ../src/mate-screensaver-dialog.c:67 ../src/mate-screensaver-dialog.c:69
+msgid "MESSAGE"
+msgstr "SPRÁVA"
+
+#: ../src/mate-screensaver-dialog.c:69
+msgid "Not used"
+msgstr "Nepoužité"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:179 ../src/mate-screensaver-dialog.c:180
+#: ../src/mate-screensaver-dialog.c:181 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Používateľské meno:"
+
+#: ../src/mate-screensaver-dialog.c:182 ../src/mate-screensaver-dialog.c:183
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Heslo:"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Musíte si ihneď zmeniť heslo (je príliš staré)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Musíte si ihneď zmeniť heslo (zmenu vyžiadal správca)"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Platnosť vášho účtu vypršala; prosím, kontaktujte správcu systému"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "No password supplied"
+msgstr "Nebolo zadané heslo"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Password unchanged"
+msgstr "Heslo nezmenené"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Can not get username"
+msgstr "Nie je možné zistiť používateľské meno"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Retype new UNIX password:"
+msgstr "Znovu zadajte UNIXové heslo:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Enter new UNIX password:"
+msgstr "Zadajte nové UNIXové heslo:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "(current) UNIX password:"
+msgstr "(aktuálne) UNIXové heslo:"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Error while changing NIS password."
+msgstr "Chyba pri zmene hesla NIS."
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "You must choose a longer password"
+msgstr "Musíte vybrať dlhšie heslo"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "Password has been already used. Choose another."
+msgstr "Toto heslo ste už použili. Vyberte iné."
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "You must wait longer to change your password"
+msgstr "Pred zmenou hesla musíte počkať dlhšie"
+
+#: ../src/mate-screensaver-dialog.c:197
+msgid "Sorry, passwords do not match"
+msgstr "Ľutujem, heslá sa nezhodujú"
+
+#: ../src/mate-screensaver-dialog.c:263
+msgid "Checking..."
+msgstr "Kontrola..."
+
+#: ../src/mate-screensaver-dialog.c:305 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Overenie totožnosti zlyhalo."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Prázdna obrazovka"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Náhodné"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d hodín"
+msgstr[1] "%d hodina"
+msgstr[2] "%d hodiny"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minút"
+msgstr[1] "%d minúta"
+msgstr[2] "%d minúty"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekúnd"
+msgstr[1] "%d sekunda"
+msgstr[2] "%d sekundy"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nikdy"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Nepodarilo sa načítať hlavné rozhranie"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Prosím, uistite sa, či je šetrič obrazovky správne nainštalovaný"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nestať sa démonom"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Povoliť ladiaci kód"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Spustiť šetrič obrazovky a uzamykací program"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Nepodarilo sa ustanoviť službu %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Nepodarilo sa nastaviť PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Nesprávne heslo."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "V tomto čase nemáte povolený prístup."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Už viac nemáte prístup do systému."
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "nepodarilo sa zaregistrovať u zbernice správ"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "bez pripojenia ku zbernici správ"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "šetrič obrazovky už v tejto relácii beží"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Čas vypršal."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Máte zapnutý Caps Lock."
+
+#: ../src/gs-lock-plug.c:1352
+msgid "S_witch User..."
+msgstr "_Prepnúť používateľa..."
+
+#: ../src/gs-lock-plug.c:1361
+msgid "Log _Out"
+msgstr "_Odhlásiť"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1537
+msgid "%U on %h"
+msgstr "%U na %h"
+
+#: ../src/gs-lock-plug.c:1551
+msgid "_Password:"
+msgstr "_Heslo:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Dôvod neprítomnosti"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Dôvod vzdialenia sa od počítača."
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..7766065
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,718 @@
+# Copyright (C) 2006-2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Matic Žgur <mr.zgur at gmail.com>, 2006.
+# Matjaž Horvat <m at owca.info>, 2006.
+# Matej Urbančič <mateju at svn.gnome.org>, 2007 - 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 08:10+0000\n"
+"PO-Revision-Date: 2009-11-30 11:42+0100\n"
+"Last-Translator: Andrej Žnidaršič <andrej.znidarsic at gmail.com>\n"
+"Language-Team: Slovenian MATE Translation Team <mate-si at googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Ohranjevalnik zaslona"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Nastavitve ohranjevalnika zaslona"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Predogled ohranjevalnika zaslona</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Opozorilo: zaslon za skrbniško upravljanje ne bo zaklenjen.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Upravljanje delovanja"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Računaln_ik je nedejaven po:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Nastavitve ohranjevalnika zaslona"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Predogled ohranjevalnika zaslona"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "Vključi ohr_anjevalnik zaslona, ko je računalnik nedejaven"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "Zak_leni zaslon, ko je ohranjevalnik zaslona dejaven"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Predogled"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Tema ohranjevalnika zaslona:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Teme ohranjevalnika zaslona"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Ohranjevalniki zaslona"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Vključi ob nedejavnosti"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Dovoli vgradnjo tipkovnice v okno"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Dovoli odjavo"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Dovoli prikaz sporočila stanja seje"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "Dovoli prikaz sporočila stanja seje, kadar je zaslon zaklenjen."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Dovoli zamenjavo uporabnika"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Ukaz vgrajene tipkovnice"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Zakleni ob vključitvi"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Ukaz za odjavo"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Način izbire teme ohranjevalnika zaslona"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Izbrana možnost omogoča, da se vključi ohranjevalnik zaslona, ko je seja nedejavna."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The \"keyboard_command\" key must be set with the appropriate command."
+msgstr "Izbrana možnost omogoča vgradnjo tipkovnice v okno ob odklepanju. Ključ \"keyboard_command\" mora biti nastavljen z ustreznim ukazom."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Izbrana možnost omogoča, da se zaklene zaslon ob vključitvi ohranjevalnika zaslona."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+msgstr "Izbrana možnost omogoča, da okno za odklepanje ponudi možnost spremembe uporabniškega računa."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "Izbrana možnost omogoča, da okno za odklepanje ponudi možnost odjave. Dolžina premora je določena v ključu \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The command that will be run, if the \"embedded_keyboard_enabled\" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output."
+msgstr "Določa uporabljen ukaz, kadar je omogočen ključ \"embedded_keyboard_enabled\" za vgradnjo tipkovnice v okno. Ta ukaz bi moral izvajati vmesnik vstavka XEMBED in na standardni izhod izpisovati XID okna."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Določa ukaz, ki bo uporabljen ob kliku na gumb za odjavo. Ta ukaz bi moral le odjaviti uporabnika, brez posegov uporabnika. Ključ ima učinek le, če je omogočen tudi ključ \"logout_enable\"."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "Število minut po zagonu ohranjevalnika zaslona preden se zaslon zaklene."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Število minut po zagonu ohranjevalnika zaslona preden se pojavi možnost za odjavo v pogovornem oknu za odklepanje."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Število minut nedejavnosti, preden je seja obravnavana kot nedejavna."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Število minut pred zamenjavo teme ohranjevalnika zaslona."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The number of seconds of inactivity before signalling to power-management. This key is set and maintained by the session power-management agent."
+msgstr "Število sekund nedejavnosti pred zagonom upravljalnika delovanja. Ključ nadzira in upravlja upravljalnik seje."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+msgstr "Način izbire, ki ga uporablja ohranjevalnik zaslona. Lahko je \"blank-only\", ki omogoči ohranjevalnik zaslona brez uporabe katerekoli teme ob vključitvi, \"single\", ki uporablja le eno temo ob vključitvi (določeno v ključu \"themes\") ali \"random\", ki omogoči ohranjevalnik zaslona z uporabo naključne teme ob vključitvi."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema okna za zaklep"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema, ki jo uporablja pogovorno okno za zaklepanje."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+msgstr "Ta ključ določa seznam tem, ki jih uporablja ohranjevalnik zaslona. Ključ je prezrt, ko je ključ \"mode\" nastavljen na \"blank-only\", vsebuje ime teme, ko je ključ \"mode\" nastavljen na \"single\" in vsebuje seznam tem, ko je ključ \"mode\" nastavljen na \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Čas pred zaklepanjem"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Čas pred možnostjo odjave"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Čas pred zagonom upravljalnika delovanja"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Čas preden se seja obravnava kot nedejavna."
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Čas pred spremembo teme"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Pusti sporočilo za %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U na %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Prekliči"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "P_usti sporočilo"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Odjava"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "P_reklop uporabnika"
+
+#: ../data/lock-dialog-default.ui.h:11
+#: ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Odkleni"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Vesolje"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Pokaži predstavitev slik vesolja"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Premikanje mehurčkov z logotipom noge MATE po zaslonu"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Lebdeče noge"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Pokaži predstavitev iz mape slike"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Mapa slik"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Razpredelnica utripajočih barv v slogu pop-arta."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Kvadrati pop-arta"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Pokaži poti, ki jim sledijo slike"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Občasno zavrti slike, ko se premikajo"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Izpiši hitrost sličic in drugo statistiko"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Največje število slik na zaslonu"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "NAJVEČ_SLIK"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Začetna velikost in položaj okna"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ŠIRINAxVIŠINA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Izvorno uporabljena slika"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - vključi lebdeče slike na zaslonu"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Uporabite --help za navodila o uporabi.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Navedena mora biti ena slika. Uporabite --help za navodila o uporabi.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Mesto, kjer so shranjene slike"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "POT"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Barva za ozadje slik"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Slike naj se ne prikažejo naključno iz izbranega mesta"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Slike na zaslonu ni treba razširjati"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopiranje datotek"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Od:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "V:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopiranje tem"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Neveljavna tema ohranjevalnika zaslona"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ni veljavna tema ohranjevalnika zaslona."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopiranje datoteke: %u od %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Omogoča nežen izhod ohranjevalnika zaslona"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Poizvedba stanja ohranjevalnika zaslona"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Poizvedba o trajanju ohranjevalnika zaslona"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Procesu ohranjevalnika zaslona v teku pove, da nemudoma zaklene zaslon"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "V primeru, da je ohranjevalnik zaslona dejaven, preklopi na prikaz druge grafike"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Vključi ohranjevalnik zaslona (sprazni zaslon)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "V primeru, da je ohranjevalnik zaslona dejaven, ga izključi (napolni zaslon)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Zatresi ohranjevalnik zaslona za vtis navidezene dejavnosti uporabnika"
+
+#: ../src/mate-screensaver-command.c:78
+msgid "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+msgstr "Onemogoči vključitev ohranjevalnika zaslona. Ukaz zavira, ko je ohranjevalnik dejaven."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Klicni program, ki onemogoča delovanje ohranjevalnika zaslona"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Razlog za onemogočanje ohranjevalnika zaslona"
+
+#: ../src/mate-screensaver-command.c:84
+#: ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Različica tega programa"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Ohranjevalnik zaslona je %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "dejaven"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "nedejaven"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Ohranjevalnik zaslona ni  onemogočen\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Ohranjevalnik zaslona  onemogoča program:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Ohranjevalnik zaslona je bil dejaven %d sekund.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Ohranjevalnik zaslona trenutno ni dejaven.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Pokaži izpis razhroščevanja"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Pokaži gumb za odjavo"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Ukaz, ki ga sproži gumb za odjavo"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Pokaži gumb za preklop uporabnika"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Sporočilo v pogovornem oknu"
+
+#: ../src/mate-screensaver-dialog.c:66
+#: ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "SPOROČILO"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Ni uporabljeno"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178
+#: ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180
+#: ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Uporabniško ime:"
+
+#: ../src/mate-screensaver-dialog.c:181
+#: ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Geslo:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Svoje geslo morate takoj spremeniti (zaradi zastaranja)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Svoje geslo morate takoj spremeniti (zahteva skrbnika)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Vaš uporabniški račun je pretekel; obrnite se na vašega sistemskega skrbnika"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Geslo ni bilo vpisano"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Geslo ni bilo spremenjeno"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Ni mogoče dobiti uporabniškega imena"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Ponovno vnesite novo geslo za UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Vnesite novo geslo za UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(trenutno) geslo za UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Napaka ob spreminjanju gesla NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Izbrati morate daljše geslo"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Geslo je bilo že uporabljeno. Izberite drugo."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Za spremembo gesla morate počakati dlje"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Oprostite, gesli se ne skladata"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Preverjanje ..."
+
+#: ../src/mate-screensaver-dialog.c:304
+#: ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Overitev ni uspela."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Prazen zaslon"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Naključno"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ur"
+msgstr[1] "%d ura"
+msgstr[2] "%d uri"
+msgstr[3] "%d ure"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minut"
+msgstr[1] "%d minuta"
+msgstr[2] "%d minuti"
+msgstr[3] "%d minute"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekund"
+msgstr[1] "%d sekunda"
+msgstr[2] "%d sekundi"
+msgstr[3] "%d sekunde"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nikoli"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Ni mogoče naložiti glavnega vmesnika"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Prepričajte se, da je ohranjevalnik zaslona pravilno nameščen"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Ne zaženi kot ozadnji program"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Omogoči kodo za razhroščevanje"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Zaženi ohranjevalnik zaslona in program za zaklepanje"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Ni mogoče vzpostaviti storitve %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Ni mogoče nastaviti PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Napačno geslo."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Ni dovoljeno pridobiti dostopa ob tem času."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Dostop do sistema ni več dovoljen."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "prijava s sporočilnim vodilom ni uspela"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "ni povezave s sporočilnim vodilom"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "Ohranjevalnik zaslona že teče v tej seji."
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Čas je potekel."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Vključene so velike tipke"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Preklop uporabnika ..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Odjava"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U na %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Geslo:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Razlog za odhod od računalnika"
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Razlog za odhod od računalnika."
+
diff --git a/po/sq.po b/po/sq.po
new file mode 100644
index 0000000..f8ffe28
--- /dev/null
+++ b/po/sq.po
@@ -0,0 +1,808 @@
+# Përkthimi i mesazheve të mate-screensaver në shqip
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Laurent Dhima <laurenti at alblinux.net>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-03-06 14:58+0100\n"
+"PO-Revision-Date: 2006-03-08 18:14+0100\n"
+"Last-Translator: Laurent Dhima <laurenti at alblinux.net>\n"
+"Language-Team: Albanian <mate-albanian-perkthyesit at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Ruajtës ekrani"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Përcakto preferimet e ruajtësit tuaj të ekranit"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "Screensaver Preferences"
+msgstr "Preferimet e ruajtësit të ekranit"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "Set session as _idle after:"
+msgstr "Cakto seancën si joakt_ive mbas:"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "_Activate screensaver when session is idle"
+msgstr "_Aktivo ruajtësin e ekranit kur seanca është joaktive"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "_Lock screen when screensaver is active"
+msgstr "B_Lloko ekranin kur ruajtësi i ekranit është aktiv"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "_Screensaver"
+msgstr "Ruajtë_S ekrani"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Screensaver themes"
+msgstr "Temat e ruajtësit të ekranit"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Ruajtës ekrani"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktivo kur nuk ka aktivitet"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow logout"
+msgstr "Lejo daljen"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow monitor power management"
+msgstr "Lejo manazhimin e energjisë së monitorit"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow user switching"
+msgstr "Lejo shkëmbimin e përdoruesve"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Lock on activation"
+msgstr "Blloko kur aktivohet"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Logout command"
+msgstr "Komanda e daljes"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Screensaver theme selection mode"
+msgstr "Modaliteti i zgjedhjes së temave të ruajtësit të ekranit"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Vendose në TRUE për të aktivuar ruajtësin e ekranit kur nuk ka aktivitet në seancë."
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+msgstr "Vendose në TRUE për të lejuar fikjen e monitorit nga ruajtësi i ekranit."
+
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Vendose në TRUE për të bllokuar ekranin kur hyn në funksion ruajtësi i ekranit."
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Vendose në TRUE që të afrosh një opsionin e kalimit në një profil tjetër "
+"përdoruesi tek dialogu i zhbllokimit."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Vendose në TRUE për të afruar opsionin e shkëputjes pas një intervali të caktuar "
+"tek dialogu i zhbllokimit. Intervali përcaktohet tek vlera \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Komanda që duhet zbatuar kur klikohet pulsanti i daljes. Kjo komandë duhet "
+"thjesht të shkëpusë përdoruesin pa asnjë lloj komunikimi. Kjo vlerë ka efekt vetëm "
+"nëse vlera \"logout_enable\" është vendosur në TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "Numri i minutave mbas aktivimit të ruajtësit të ekranit para se të bllokohet ekrani."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Numri i minutave mbas aktivimit të ruajtësit të ekranit para se opsioni i "
+"daljes të shfaqet tek dialogu i zhbllokimit. Kjo vlerë ka efekt vetëm nëse "
+"vlera \"logout_enable\" është vendosur në TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"goes into standby power mode."
+msgstr ""
+"Numri i minutave mbas aktivimit të ruajtësit të ekranit para se monitori të shkojë "
+"në modalitetin e kursimit të energjisë."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"goes into suspend power mode."
+msgstr ""
+"Numri i minutave mbas aktivimit të ruajtësit të ekranit para se monitori të shkojë "
+"në modalitetin ndërprerjes së energjisë."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after the screensaver activation until the monitor "
+"powers off."
+msgstr "Numri i minutave mbas aktivimit të ruajtësit të ekranit para se monitori të fiket."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Numri i minutave pa aktivitet para se seanca të konsiderohet jo aktive."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Numri i minutave para se të ndryshohet tema e ruajtësit të ekranit."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Modaliteti i zgjedhjes i përdorur nga ruajtësi i ekranit. Mund të jetë \"blank-only\" "
+"për të aktivuar ruajtësin pa asnjë lloj teme, \"single\" për të aktivuar ruajtësin duke "
+"përdorur një temë të vetme (të përcaktuar tek vlera \"temat\"), dhe \"random\" për "
+"të aktivuar ruajtësin e ekranit duke përdorur një temë të rastit në aktivim."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Kjo vlerë përcakton listën e temave që duhen përdorur nga ruajtësi. Vlera "
+"shpërfillet kur vlera \"modaliteti\" është \"blank-only\", duhet të japër emrin e "
+"temës kur \"modaliteti\" është \"single\", dhe duhet të afrojë një listë temash "
+"kur \"modaliteti\" është \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "Time before activation"
+msgstr "Koha para aktivimit"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Time before locking"
+msgstr "Koha para bllokimit"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Time before logout option"
+msgstr "Koha para opsionit të daljes"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "Time before power off"
+msgstr "Koha para fikjes"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before standby"
+msgstr "Koha para se të kalojë në pritje"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before suspend"
+msgstr "Koha para se të ndalohet"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before theme change"
+msgstr "Koha para ndryshimit të temës"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bubbles dhe stema e MATE rreth e qark ekranit"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Shputa në lundrim"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kozmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Shfaq minjatura fotografish nga kozmosi"
+
+#: ../savers/personal-slideshow.desktop.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Shfaq minjatura fotografish nga kartela juaj e fotografive"
+
+#: ../savers/personal-slideshow.desktop.in.h:2
+msgid "Pictures folder"
+msgstr "Kartela e fotografive"
+
+#: ../savers/popsquares.desktop.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Një rrjetë me ngjyra pulsuese."
+
+#: ../savers/popsquares.desktop.in.h:2
+msgid "Pop art squares"
+msgstr "Kuadrate arti pop"
+
+#: ../savers/floaters.c:1165
+msgid "show paths that images follow"
+msgstr "shfaq pozicionin që ndjekin figurat"
+
+#: ../savers/floaters.c:1172
+msgid "occasionally rotate images as they move"
+msgstr "rrotullo në menyrë të rastësishme figurat në lëvizje"
+
+#: ../savers/floaters.c:1179
+msgid "print out frame rate and other statistics"
+msgstr "printo frame rate dhe statistika të tjera"
+
+#: ../savers/floaters.c:1187
+msgid "the maximum number of images to keep on screen"
+msgstr "numri maksimum i figurave në ekran"
+
+#. translators: this should be translated to be symbolic of a generic
+#. * number.  e.g, "the screen saver should keep N images on the screen"
+#.
+#: ../savers/floaters.c:1191
+msgid "N"
+msgstr "N"
+
+#: ../savers/floaters.c:1198
+msgid "the source image to use"
+msgstr "figurë bazë për tu përdorur"
+
+#: ../savers/floaters.c:1205
+msgid "the initial size and position of window"
+msgstr "madhësia dhe pozicioni fillestar i dritares"
+
+#. translators: this is an X geometry spec.  WIDTH, HEIGHT, X, and Y
+#. * can be translated, but the 'x' area indicator and '+' offset indicators
+#. * need to be untranslated and can't be rearranged.
+#.
+#: ../savers/floaters.c:1210
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "GJERËSIxLARTËSI+X+Y"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1228
+msgid "image - floats images around the screen"
+msgstr "image - figura që lëvizin rreth e qark në ekran"
+
+#: ../savers/floaters.c:1238
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Shiko --help për informacionet mbi përdorimin.\n"
+
+#: ../savers/floaters.c:1247
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Duhet të përcaktoni një figurë.  Shiko --help për informacionet mbi përdorimin.\n"
+
+#: ../savers/slideshow.c:47
+msgid "Location to get images from"
+msgstr "Pozicioni nga ku duhen marrë figurat"
+
+#: ../savers/slideshow.c:47
+msgid "PATH"
+msgstr "POZICIONI"
+
+#: ../src/cut-n-paste/fusa-display.c:119 ../src/cut-n-paste/fusa-user.c:150
+msgid "Manager"
+msgstr "Manazhuesi"
+
+#: ../src/cut-n-paste/fusa-display.c:120
+msgid "The manager which owns this object."
+msgstr "Manazhuesi që trajton këtë objekt."
+
+#: ../src/cut-n-paste/fusa-display.c:127
+msgid "Name"
+msgstr "Emri"
+
+#: ../src/cut-n-paste/fusa-display.c:128
+msgid "The name of the X11 display this object refers to."
+msgstr "Emri i ekranit X11 kujt i referohet ky objekt."
+
+#: ../src/cut-n-paste/fusa-display.c:134
+#: ../src/cut-n-paste/fusa-user-menu-item.c:164
+msgid "User"
+msgstr "Përdoruesi"
+
+#: ../src/cut-n-paste/fusa-display.c:135
+msgid "The user currently logged in on this virtual terminal."
+msgstr "Përdoruesi aktualisht i futur në këtë terminal virtual."
+
+#: ../src/cut-n-paste/fusa-display.c:141
+msgid "Console"
+msgstr "Konsolë"
+
+#: ../src/cut-n-paste/fusa-display.c:142
+msgid "The number of the virtual console this display can be found on, or %-1."
+msgstr "Numri i konsolës virtuale ku mund të gjendet ky ekran, ose %-1."
+
+#: ../src/cut-n-paste/fusa-display.c:148
+msgid "Nested"
+msgstr "Mbivendosur"
+
+#: ../src/cut-n-paste/fusa-display.c:149
+msgid "Whether or not this display is a windowed (Xnest) display."
+msgstr "Nëse është ose jo ky ekran një dritare (Xnest) ekrani."
+
+#: ../src/cut-n-paste/fusa-manager.c:1263
+msgid "The display manager could not be contacted for unknown reasons."
+msgstr "E pamundur vënia në kontakt me manazhuesin e ekraneve për arsye të panjohura."
+
+#: ../src/cut-n-paste/fusa-manager.c:1270
+msgid "The display manager is not running or too old."
+msgstr "Manazhuesi i dritares nuk është në ekzekutim ose është tepër i vjetër."
+
+#: ../src/cut-n-paste/fusa-manager.c:1273
+msgid "The configured limit of flexible servers has been reached."
+msgstr "U arrit kufiri i konfiguruar i server-ëve fleksibël."
+
+#: ../src/cut-n-paste/fusa-manager.c:1276
+msgid "There was an unknown error starting X."
+msgstr "Gabim i panjohur gjatë nisjes së X."
+
+#: ../src/cut-n-paste/fusa-manager.c:1279
+msgid "The X server failed to finish starting."
+msgstr "Serveri X nuk arriti të plotësojë nisjen."
+
+#: ../src/cut-n-paste/fusa-manager.c:1282
+msgid "There are too many X sessions running."
+msgstr "Tepër seanca X në ekzekutim."
+
+#: ../src/cut-n-paste/fusa-manager.c:1285
+msgid "The nested X server (Xnest) cannot connect to your current X server."
+msgstr "Serveri X i mbivendosur (Xnest) nuk arrin të lidhet me serverin tuaj aktual X."
+
+#: ../src/cut-n-paste/fusa-manager.c:1288
+msgid "The X server in the MDM configuration could not be found."
+msgstr "E pamundur gjetja e serverit X tek konfigurimi i MDM."
+
+#: ../src/cut-n-paste/fusa-manager.c:1291 ../src/cut-n-paste/mdmcomm.c:492
+msgid ""
+"Trying to set an unknown logout action, or trying to set a logout action "
+"which is not available."
+msgstr ""
+"Jeni duke u përpjekur të kryeni një procedurë dalje të panjohur, ose që nuk "
+"është në dispozicion."
+
+#: ../src/cut-n-paste/fusa-manager.c:1294 ../src/cut-n-paste/mdmcomm.c:495
+msgid "Virtual terminals not supported."
+msgstr "Terminalët virtualë nuk suportohen."
+
+#: ../src/cut-n-paste/fusa-manager.c:1297
+msgid "Invalid virtual terminal number."
+msgstr "Numër i pavlefshëm terminali virtual."
+
+#: ../src/cut-n-paste/fusa-manager.c:1300 ../src/cut-n-paste/mdmcomm.c:499
+msgid "Trying to update an unsupported configuration key."
+msgstr "Përpjekje për të rifreskuar një vlerë konfigurimi të pasuportuar."
+
+#: ../src/cut-n-paste/fusa-manager.c:1303
+msgid "~/.Xauthority file badly configured or missing."
+msgstr "~/.Xauthority file është konfiguruar keq ose mungon."
+
+#: ../src/cut-n-paste/fusa-manager.c:1306
+msgid "Too many messages were sent to the display manager, and it hung up."
+msgstr "Manazhuesit të ekraneve i janë dërguar tepër mesazhe, dhe ai po i përcjell."
+
+#: ../src/cut-n-paste/fusa-manager.c:1310
+msgid "The display manager sent an unknown error message."
+msgstr "Manazhuesi i ekraneve ka dërguar një mesazh të panjohur gabimi."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:165
+msgid "The user this menu item represents."
+msgstr "Përdoruesi që përfaqsohet nga ky zë menuje."
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:172
+msgid "Icon Size"
+msgstr "Madhësia e ikonës"
+
+#: ../src/cut-n-paste/fusa-user-menu-item.c:173
+msgid "The size of the icon to use."
+msgstr "Madhësia e ikonës së përdorur."
+
+#: ../src/cut-n-paste/fusa-user.c:151
+msgid "The user manager object this user is controlled by."
+msgstr "Manazhuesi i objektit përdorues nga i cili kontrollohet ky përdorues."
+
+#: ../src/cut-n-paste/fusa-utils.c:80
+msgid "Show Details"
+msgstr "Shfaq hollësitë"
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:413
+msgid "MDM (The MATE Display Manager) is not running."
+msgstr "MDM (MATE Display Manager) nuk është në ekzekutim."
+
+#: ../src/cut-n-paste/mdmcomm.c:416
+msgid ""
+"You might in fact be using a different display manager, such as KDM (KDE "
+"Display Manager) or xdm."
+msgstr ""
+"Ndoshta je duke përdorur një organizues tjetër të display, si p.sh. KDM (KDE "
+"Display Manager) ose xdm."
+
+#: ../src/cut-n-paste/mdmcomm.c:419
+msgid ""
+"If you still wish to use this feature, either start MDM yourself or ask your "
+"system administrator to start MDM."
+msgstr ""
+"Nëse dëshiron të shfrytëzosh këtë mundësi, duhet të nisësh vetë MDM ose t'i "
+"kërkosh administratorit të sistemit të nisë MDM."
+
+#. markup
+#: ../src/cut-n-paste/mdmcomm.c:441
+msgid "Cannot communicate with MDM (The MATE Display Manager)"
+msgstr "Nuk arrij të komunikoj me MDM (MATE Display Manager)"
+
+#: ../src/cut-n-paste/mdmcomm.c:444
+msgid "Perhaps you have an old version of MDM running."
+msgstr "Ka mundësi që versioni në përdorim i MDM të jetë i vjetër."
+
+#: ../src/cut-n-paste/mdmcomm.c:463 ../src/cut-n-paste/mdmcomm.c:466
+msgid "Cannot communicate with mdm, perhaps you have an old version running."
+msgstr ""
+"Nuk arrij të komunikoj me mdm, ka mundësi që versioni në përdorim të jetë i "
+"vjetër."
+
+#: ../src/cut-n-paste/mdmcomm.c:469
+msgid "The allowed limit of flexible X servers reached."
+msgstr "Është arritur kufiri maksimum i lejuar për servers X flexible."
+
+#: ../src/cut-n-paste/mdmcomm.c:471
+msgid "There were errors trying to start the X server."
+msgstr "Janë verifikuar disa gabime gjatë nisjes së server-it X."
+
+#: ../src/cut-n-paste/mdmcomm.c:473
+msgid "The X server failed.  Perhaps it is not configured well."
+msgstr "Serveri X dështoi.  Ndoshta nuk është i konfiguruar si duhet."
+
+#: ../src/cut-n-paste/mdmcomm.c:476
+msgid "Too many X sessions running."
+msgstr "Shumë seanca X aktive."
+
+#: ../src/cut-n-paste/mdmcomm.c:478
+msgid ""
+"The nested X server (Xnest) cannot connect to your current X server.  You "
+"may be missing an X authorization file."
+msgstr ""
+"Xnest nuk arrin të lidhet me server-in tuaj X aktual.  Ka mundësi që file "
+"autorizues i X mungon."
+
+#: ../src/cut-n-paste/mdmcomm.c:483
+msgid ""
+"The nested X server (Xnest) is not available, or mdm is badly configured.\n"
+"Please install the Xnest package in order to use the nested login."
+msgstr ""
+"Xnest jo në dispozicion, ose mdm i konfiguruar keq.\n"
+"Instalo pakon Xnest që të përdorësh dritaren e login."
+
+#: ../src/cut-n-paste/mdmcomm.c:488
+msgid "The X server is not available, it is likely that mdm is badly configured."
+msgstr "Server-i X jo në dispozicion, ka mundësi që mdm të jetë konfiguruar keq."
+
+#: ../src/cut-n-paste/mdmcomm.c:497
+msgid "Trying to change to an invalid virtual terminal number."
+msgstr "Përpjekje për të kaluar në një terminal virtual me numër të pasaktë."
+
+#: ../src/cut-n-paste/mdmcomm.c:501
+msgid ""
+"You do not seem to have authentication needed be for this operation.  "
+"Perhaps your .Xauthority file is not set up correctly."
+msgstr ""
+"Nuk keni të drejtat e duhura për këtë operacion. Ka mundësi që file juaj \"."
+"Xauthority\" të mos jetë konfiguruar si duhet."
+
+#: ../src/cut-n-paste/mdmcomm.c:505
+msgid "Too many messages were sent to mdm and it hung upon us."
+msgstr "Janë dërguar tepër mesazhe drejt mdm dhe ai na i ka përcjellë neve."
+
+#: ../src/cut-n-paste/mdmcomm.c:508
+msgid "Unknown error occured."
+msgstr "Gabim i panjohur."
+
+#: ../src/file-transfer-dialog.c:94
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Duke kopjuar file: %u në %u"
+
+#: ../src/file-transfer-dialog.c:122
+#, c-format
+msgid "Copying '%s'"
+msgstr "Duke kopjuar '%s'"
+
+#: ../src/file-transfer-dialog.c:193
+msgid "From URI"
+msgstr "Nga URl"
+
+#: ../src/file-transfer-dialog.c:194
+msgid "URI currently transferring from"
+msgstr "Adresa URl nga po transferohet aktualisht"
+
+#: ../src/file-transfer-dialog.c:201
+msgid "To URI"
+msgstr "Tek URl"
+
+#: ../src/file-transfer-dialog.c:202
+msgid "URI currently transferring to"
+msgstr "Adresa URl ku po transferohet aktualisht"
+
+#: ../src/file-transfer-dialog.c:209
+msgid "Fraction completed"
+msgstr "Pjesa e plotësuar"
+
+#: ../src/file-transfer-dialog.c:210
+msgid "Fraction of transfer currently completed"
+msgstr "Pjesa aktualisht e plotësuar e transferimit"
+
+#: ../src/file-transfer-dialog.c:217
+msgid "Current URI index"
+msgstr "Indeksi i URl të tanishëm"
+
+#: ../src/file-transfer-dialog.c:218
+msgid "Current URI index - starts from 1"
+msgstr "Indeksi i URl të tanishëm - fillon nga 1"
+
+#: ../src/file-transfer-dialog.c:225
+msgid "Total URIs"
+msgstr "Gjithsej URl"
+
+#: ../src/file-transfer-dialog.c:226
+msgid "Total number of URIs"
+msgstr "Numri i përgjithshëm i URlve"
+
+#: ../src/file-transfer-dialog.c:327 ../src/file-transfer-dialog.c:369
+msgid "Copying files"
+msgstr "Duke kopjuar files"
+
+#: ../src/file-transfer-dialog.c:345
+msgid "From:"
+msgstr "Nga:"
+
+#: ../src/file-transfer-dialog.c:349
+msgid "To:"
+msgstr "Për:"
+
+#: ../src/file-transfer-dialog.c:448
+msgid "Connecting..."
+msgstr "Duke u lidhur..."
+
+#: ../src/mate-screensaver-command.c:59
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Shkakton daljen e plotë të ruajtësit të ekranit"
+
+#: ../src/mate-screensaver-command.c:61
+msgid "Query the state of the screensaver"
+msgstr "Kontrollon gjendjen e ruajtësit të ekranit"
+
+#: ../src/mate-screensaver-command.c:63
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "I thotë proçesit në zbatim të ruajtësit të bllokojë menjëherë ekranin"
+
+#: ../src/mate-screensaver-command.c:65
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Nëse reuajtësi është aktiv atëhere kalon tek një grafik tjetër demostrativ"
+
+#: ../src/mate-screensaver-command.c:67
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Aktivon ruajtësin e ekranit (ekrani bosh)"
+
+#: ../src/mate-screensaver-command.c:69
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Nëse reujatësi është akitv atëhere e çaktivon (ekrani jo bosh)"
+
+#: ../src/mate-screensaver-command.c:71
+msgid "Disable running graphical themes while blanked"
+msgstr "Çaktivon temat grafike në ekzekutim kur zbrazet"
+
+#: ../src/mate-screensaver-command.c:73
+msgid "Enable running graphical themes while blanked (if applicable)"
+msgstr "Aktivon temat grafike në ekzekutim kur zbrazet (nëse e mundur)"
+
+#: ../src/mate-screensaver-command.c:75
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Ngacmo ruajtësin e ekranit në ekzekutim për të simuluar aktivitet përdoruesi"
+
+#: ../src/mate-screensaver-command.c:77 ../src/mate-screensaver-dialog.c:110
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Versioni i këtij programi"
+
+#: ../src/mate-screensaver-command.c:202
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Ruajtësi i ekranit është %s\n"
+
+#: ../src/mate-screensaver-command.c:202
+msgid "active"
+msgstr "aktiv"
+
+#: ../src/mate-screensaver-command.c:202
+msgid "inactive"
+msgstr "jo aktiv"
+
+#: ../src/mate-screensaver-dialog.c:108
+msgid "Show debugging output"
+msgstr "Shfaq rezultatet e debug"
+
+#: ../src/mate-screensaver-dialog.c:112
+msgid "Show the logout button"
+msgstr "Shfaq pulsantin e daljes"
+
+#: ../src/mate-screensaver-dialog.c:114
+msgid "Command to invoke from the logout button"
+msgstr "Komanda që duhet zbatuar nga pulsanti i daljes"
+
+#: ../src/mate-screensaver-dialog.c:116
+msgid "Show the switch user button"
+msgstr "Shfaq pulsantin e ndryshimit të përdoruesit"
+
+#: ../src/mate-screensaver-preferences.c:427
+msgid "Blank screen"
+msgstr "Ekran bosh"
+
+#: ../src/mate-screensaver-preferences.c:433
+msgid "Random"
+msgstr "Pa renditje"
+
+#: ../src/mate-screensaver-preferences.c:723
+msgid "Invalid screensaver theme"
+msgstr "Temë e pavlefshme ruajtës ekrani"
+
+#: ../src/mate-screensaver-preferences.c:726
+msgid "This file does not appear to be a valid screensaver theme."
+msgstr "Ky file nuk duket të jetë një file teme i vlefshëm ruajtësi."
+
+#: ../src/mate-screensaver-preferences.c:843
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d orë"
+msgstr[1] "%d orë"
+
+#: ../src/mate-screensaver-preferences.c:846
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minutë"
+msgstr[1] "%d minuta"
+
+#: ../src/mate-screensaver-preferences.c:849
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekondë"
+msgstr[1] "%d sekonda"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:855
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:858
+#: ../src/mate-screensaver-preferences.c:866
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:861
+#: ../src/mate-screensaver-preferences.c:869
+#: ../src/mate-screensaver-preferences.c:873
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#. 0 seconds
+#: ../src/mate-screensaver-preferences.c:876
+msgid "0 seconds"
+msgstr "0 sekonda"
+
+#: ../src/mate-screensaver-preferences.c:891
+msgid "Never"
+msgstr "Asnjëherë"
+
+#: ../src/mate-screensaver-preferences.c:1047
+msgid "Could not load the main interface"
+msgstr "I pamundur ngarkimi i interfaqes kryesore"
+
+#: ../src/mate-screensaver-preferences.c:1049
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Sigurohu që ruajtësi i ekranit të jetë instaluar si duhet"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Mos u kthe në deamon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Aktivo kodin e debug"
+
+#: ../src/gs-listener-dbus.c:1219
+msgid "failed to register with the message bus"
+msgstr "regjistrimi me bus e mesazheve dështoi"
+
+#: ../src/gs-listener-dbus.c:1229
+msgid "not connected to the message bus"
+msgstr "i palidhur me bus e mesazheve"
+
+#: ../src/gs-listener-dbus.c:1238
+msgid "screensaver already running in this session"
+msgstr "ruajtësi i ekranit është në funksion në këtë seancë"
+
+#: ../src/gs-lock-plug.c:351
+msgid "Checking password..."
+msgstr "Duke kontrolluar fjalëkalimin..."
+
+#: ../src/gs-lock-plug.c:394
+msgid "Time has expired."
+msgstr "Koha skadoi."
+
+#: ../src/gs-lock-plug.c:420
+msgid "You have the Caps Lock key on."
+msgstr "Butoni Caps Lock është i shtypur."
+
+#: ../src/gs-lock-plug.c:707
+msgid "That password was incorrect."
+msgstr "Fjalëkalim i pavlefshëm."
+
+#: ../src/gs-lock-plug.c:733 ../src/gs-lock-plug.c:766
+msgid "_Unlock"
+msgstr "_Liro"
+
+#: ../src/gs-lock-plug.c:736 ../src/gs-lock-plug.c:763
+msgid "_Switch User..."
+msgstr "Ndry_Sho përdorues..."
+
+#. Translators: this is "username on hostname".  You
+#. can translate this to "%s@%s" if it is otherwise tricky
+#. for your language.
+#: ../src/gs-lock-plug.c:1366
+#, c-format
+msgid "%s on %s"
+msgstr "%s në %s"
+
+#: ../src/gs-lock-plug.c:1517
+msgid "_Password:"
+msgstr "_Fjalëkalimi:"
+
+#: ../src/gs-lock-plug.c:1590
+msgid "S_witch to user:"
+msgstr "K_alo tek përdoruesi:"
+
+#: ../src/gs-lock-plug.c:1637
+msgid "Log _Out"
+msgstr "_Dil jashtë"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100644
index 0000000..a0fe89b
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,846 @@
+# Serbian translation of mate-screensaver
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2006 -2009.
+#
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Maintainer: Слободан Д. Средојевић <ssl at uns.ns.ac.yu>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2008-09-20 03:46+0100\n"
+"Last-Translator: Горан Ракић <grakic at devbase.net>\n"
+"Language-Team: Serbian (sr) <gnom at prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 :    n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Чувар екрана"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Сопствене поставке чувара екрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Преглед чувара екрана</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Упозорење: чувар екрана неће бити закључан за администратора.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Управник потрошње"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Посматрај рачунар као неактиван након:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Поставке чувара екрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Преглед чувара екрана"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Покрени чувара екрана када се ништа не ради"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Закључај екран када чувар екрана ради"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Преглед"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Теме чувара екрана:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Теме чувара екрана"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Чувари екрана"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Покрени када се ништа не ради"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Дозволи уграђивање тастатуре у прозор"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Дозволи одјављивање"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Дозволи приказ порука о стању сесије"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Дозвољава приказ порука о стању сесије када је екран закључан."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Дозволи промену корисника"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Команде уграђене тастатуре"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Закључај при покретању"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Наредба за одјаву"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Режим избора теме чувара екрана"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Поставите ову вредност на „Тачно“ за покренете чувара екрана када сеништа не "
+"ради."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Укључите да дозволите уградњу тастатуре у прозор за откључавање. "
+"Одговарајућа команда мора бити унесена као вредност кључа „keyboard_command“."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Поставите ово на вредност „Тачно“ да би закључали екран када се покрене "
+"чувар екрана."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Поставите ово на вредност „Тачно“ да би у прозорчету за откључавање понудили "
+"могућност преласка на други кориснички налог"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Поставите ово на вредност „Тачно“ да би у прозорчету за откључавање понудили "
+"могућност одјаве након неког временског интервала. Интервал се задаје помоћу "
+"„logout_delay“ кључа.“"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Komanda која ће бити покренута уколико је „embedded_keyboard_enabled“ "
+"укључен за уграђивање тастатуре у прозору. Команда би треба да дефинише "
+"XEMBED прикључну спрегу и излазни XID прозор на стандардном излазу."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Наредба која се позива када корисник притисне дугме за одјаву. Ова наредба "
+"би једноставно требала да одјави корисника без икакве додатне интеракције. "
+"Овај кључ има дејство једино ако је кључ „logout_enable“ постављен на "
+"вредност „Тачно“."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Број минута након покретања чувара екрана након којих се екран закључава."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Број минута након покретања чувара екрана пре него што се у прозорчету за "
+"откључавање појави могућност одјаве. Овај кључ делује једино уколико је кључ "
+"„logout_enable“ постављен на вредност „Тачно“."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Време неактивности (у минутима) пре покретања чувара екрана."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Време рада (у минутима) пре промене теме чувара екрана."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Број секунди неактивности пре обавештавања управника потрошње. Овај кључ "
+"поставља и одржава га сесија управника потрошње."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Избор који користи чувар екрана. Може бити „само очисти“ који омогућује "
+"покретање чувара екрана без коришћења икаквих тема „један“ који омогућује "
+"рад чувара екрана где се користи само једна тема (која се задаје у кључу "
+"„теме“) и „случајан“ који омогућава рад чувара екрана уз коришћење једне "
+"случајне теме."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Тема прозорчета за закључавање"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Тека која се користи у прозорчету за закључавање."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Овај кључ наводи списак тема које чувар екрана користи. Кључ се занемарује "
+"када је кључ „режим“ постављен на вредност „само очисти“затим треба да "
+"обезбеди име теме када је вредност „режима“ — „један“, и треба да обезбеди "
+"списак тема када је вредност кључа „режим“ — „случајан“."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Време до закључавања"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Време до омогућавања одјаве"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Време пре црте управника потрошње"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Време након кога сесија постаје неактивна"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Време до промене теме"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Оставите поруку за %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U на %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Откажи"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "О_стави поруку"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "О_дјава"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Промени _корисника"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "От_кључај"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Свемир"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Прикажи слике свемира у низу"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Мрешкање Гномовог препознатљивог стопало на екрану"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Плутајуће стопало"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Прикажи у низу све слике из ваше личне фасцикле"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Фасцикла са сликама"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Поп арт мрежа светлећих боја"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Поп арт квадрати"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Прикажи путање које слике прате"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Повремено ротирај слике како се крећу"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Одштампај и број оквира и осталу статистику"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Максималан број слика које треба држати на екрану"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "МАХ_СЛИКА"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Почетна величина и позиција прозора"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ШИРИНАxВИСИНА+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Полазна слика која се користи"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "слика — разбацај слике по екрану"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Погледајте --help за информације о употреби.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Морате задати слику. Погледајте --help за информације о употреби.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Место одакле се прикупљају слике"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ПУТАЊА"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Боја за позадине слика"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "„#rrggbb“"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Немој пуштати насумично слике из путање"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Не развлачи слике преко целог екрана"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Умножавање датотека"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Са:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "На:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Умножавање тема"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Неисправна тема чувара екрана"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Чини се да „%s“ није исправна тема чувара екрана."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Умножавам датотеку: %u од %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Чини да чувар екрана буде заустављен природно"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Испитај стање чувара екрана"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Испитуј време за које је чувар екрана био активан"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Говори покренутом процесу чувара екрана да одмах закључа екран"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Ако је чувар екрана покренут тада пређи на други графички демо"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Укључи чувара екрана (очисти екран)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Ако је чувар екрана присутан, прекини га (врати пређашњу слику на екрану)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Позови покренути чувар екрана ради испробавања активности корисника"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Забрани покретање чувара екрана. Команда блокира чувар екрана док год "
+"јеактивна."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Програм који забрањује чувар екрана"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Разлог забране чувара екрана"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Верзија овог програма"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Чувар екрана је %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "присутан"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "угашен"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Чувар екрана је није заустављен\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Чувар екрана је онемогућен од стране:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Чувар екрана је активан %d секунди.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "Чувар екрана је тренутно заустављен.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Прикажи испис за тражење грешака"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Прикажи дугме за одјаву"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Наредба која се позива притиском на дугме за одјаву"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Прикажи дугме за промену корисника"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Порука за приказ у прозорчету"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "ПОРУКА"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Није коришћено"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Корисничко име:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Лозинка:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Потребно је да одмах промените Вашу лозинку (лозинка је стара)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Потребно је да одмах промените Вашу лозинку (приморан је администратор)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Ваш налог је истекао; потражите Вашег администратора система"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Није достављена шифра"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Шифра је непромењена"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Не могу да добијем корисничко име"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Поново унеси нову Јуникс лозинку:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Унеси нову Јуникс лозинку:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(тренутна) Јуникс лозинка:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Грешка при промени НИС лозинке."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Морате са одаберете дужу лозинку"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Лозинка је већ у употреби. Изаберите другу."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Морате да чекате дуже за промену Ваше шифре"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Лозинке се не поклапају"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Провера..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Идентификација неуспела."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Очисти екран"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Случајан"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d сат"
+msgstr[1] "%d сата"
+msgstr[2] "%d сати"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d минут"
+msgstr[1] "%d минута"
+msgstr[2] "%d минута"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d секунд"
+msgstr[1] "%d секунде"
+msgstr[2] "%d секунди"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Никада"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Не могу да учитам главно сучеље"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Молим проверите да ли је чувар екрана правилно инсталиран"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Немој бити позадински процес"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Омогући испис за тражење грешака"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Покреће чувара екрана и програм за закључавање екрана"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Не могу да успоставим сервис %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Не могу да поставим PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Неисиправна лозинка"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Приступ у ово време није дозвољен."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Више немате дозволу за приступ систему."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "неуспела пријава на магистралу порука"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "није повезан на магистралу порука"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "чувар екрана је већ покренут у овој сесији"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Време је истекло."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Притиснули сте тастер за сва велика слова."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "Промени _корисника..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Одја_ва"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U на %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Лозинка:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Разлог одсуства"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Разлог одласка са рачунара."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "Умножавам „%s“"
+
+#~ msgid "From URI"
+#~ msgstr "Са адресе"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "Пренос са текуће адресе"
+
+#~ msgid "To URI"
+#~ msgstr "На адресу"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "Адреса на коју се обавља пренос"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Део преноса је завршен"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Део преноса је обављен"
+
+#~ msgid "Current URI index"
+#~ msgstr "Текући индекс адресе"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Текући индекс адресе — почиње од 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Укупан број адреса"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Укупан број адреса"
+
+#~ msgid "Connecting..."
+#~ msgstr "Повезивање је у току..."
+
+#~ msgid "_Screensaver"
+#~ msgstr "Чува_р екрана"
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "Дозволи праћење потрошње струје"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr ""
+#~ "Поставите ово на вредност „Тачно“ како би дозволили чувару екрана да "
+#~ "угаси монитор."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "Број минута након покретања чувара екрана пре него што монитор одлази у "
+#~ "„приправан“ режим потрошње."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "Број минута након покретања чувара екрана пре него што монитор одлази у "
+#~ "„привремено заустављен“ режим потрошње."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr ""
+#~ "Број минута након покретања чувара екрана након којих се гаси монитор."
diff --git a/po/sr at latin.po b/po/sr at latin.po
new file mode 100644
index 0000000..8b4be64
--- /dev/null
+++ b/po/sr at latin.po
@@ -0,0 +1,846 @@
+# Serbian translation of mate-screensaver
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2006 -2009.
+#
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Maintainer: Slobodan D. Sredojević <ssl at uns.ns.ac.yu>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2008-09-20 03:46+0100\n"
+"Last-Translator: Goran Rakić <grakic at devbase.net>\n"
+"Language-Team: Serbian (sr) <gnom at prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3;    plural=n%10==1 && n%100!=11 ? 0 :    n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Čuvar ekrana"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Sopstvene postavke čuvara ekrana"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Pregled čuvara ekrana</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Upozorenje: čuvar ekrana neće biti zaključan za administratora.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "_Upravnik potrošnje"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Posmatraj računar kao neaktivan nakon:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Postavke čuvara ekrana"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Pregled čuvara ekrana"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Pokreni čuvara ekrana kada se ništa ne radi"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Zaključaj ekran kada čuvar ekrana radi"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Pregled"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Teme čuvara ekrana:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Teme čuvara ekrana"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Čuvari ekrana"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Pokreni kada se ništa ne radi"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Dozvoli ugrađivanje tastature u prozor"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Dozvoli odjavljivanje"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Dozvoli prikaz poruka o stanju sesije"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Dozvoljava prikaz poruka o stanju sesije kada je ekran zaključan."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Dozvoli promenu korisnika"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Komande ugrađene tastature"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Zaključaj pri pokretanju"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Naredba za odjavu"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Režim izbora teme čuvara ekrana"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Postavite ovu vrednost na „Tačno“ za pokrenete čuvara ekrana kada seništa ne "
+"radi."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Uključite da dozvolite ugradnju tastature u prozor za otključavanje. "
+"Odgovarajuća komanda mora biti unesena kao vrednost ključa „keyboard_command“."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Postavite ovo na vrednost „Tačno“ da bi zaključali ekran kada se pokrene "
+"čuvar ekrana."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Postavite ovo na vrednost „Tačno“ da bi u prozorčetu za otključavanje ponudili "
+"mogućnost prelaska na drugi korisnički nalog"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Postavite ovo na vrednost „Tačno“ da bi u prozorčetu za otključavanje ponudili "
+"mogućnost odjave nakon nekog vremenskog intervala. Interval se zadaje pomoću "
+"„logout_delay“ ključa.“"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Komanda koja će biti pokrenuta ukoliko je „embedded_keyboard_enabled“ "
+"uključen za ugrađivanje tastature u prozoru. Komanda bi treba da definiše "
+"XEMBED priključnu spregu i izlazni XID prozor na standardnom izlazu."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Naredba koja se poziva kada korisnik pritisne dugme za odjavu. Ova naredba "
+"bi jednostavno trebala da odjavi korisnika bez ikakve dodatne interakcije. "
+"Ovaj ključ ima dejstvo jedino ako je ključ „logout_enable“ postavljen na "
+"vrednost „Tačno“."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Broj minuta nakon pokretanja čuvara ekrana nakon kojih se ekran zaključava."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Broj minuta nakon pokretanja čuvara ekrana pre nego što se u prozorčetu za "
+"otključavanje pojavi mogućnost odjave. Ovaj ključ deluje jedino ukoliko je ključ "
+"„logout_enable“ postavljen na vrednost „Tačno“."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Vreme neaktivnosti (u minutima) pre pokretanja čuvara ekrana."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Vreme rada (u minutima) pre promene teme čuvara ekrana."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Broj sekundi neaktivnosti pre obaveštavanja upravnika potrošnje. Ovaj ključ "
+"postavlja i održava ga sesija upravnika potrošnje."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Izbor koji koristi čuvar ekrana. Može biti „samo očisti“ koji omogućuje "
+"pokretanje čuvara ekrana bez korišćenja ikakvih tema „jedan“ koji omogućuje "
+"rad čuvara ekrana gde se koristi samo jedna tema (koja se zadaje u ključu "
+"„teme“) i „slučajan“ koji omogućava rad čuvara ekrana uz korišćenje jedne "
+"slučajne teme."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema prozorčeta za zaključavanje"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Teka koja se koristi u prozorčetu za zaključavanje."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Ovaj ključ navodi spisak tema koje čuvar ekrana koristi. Ključ se zanemaruje "
+"kada je ključ „režim“ postavljen na vrednost „samo očisti“zatim treba da "
+"obezbedi ime teme kada je vrednost „režima“ — „jedan“, i treba da obezbedi "
+"spisak tema kada je vrednost ključa „režim“ — „slučajan“."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Vreme do zaključavanja"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Vreme do omogućavanja odjave"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Vreme pre crte upravnika potrošnje"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Vreme nakon koga sesija postaje neaktivna"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Vreme do promene teme"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Ostavite poruku za %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U na %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Otkaži"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "O_stavi poruku"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "O_djava"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "Promeni _korisnika"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "Ot_ključaj"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Svemir"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Prikaži slike svemira u nizu"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Mreškanje Gnomovog prepoznatljivog stopalo na ekranu"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Plutajuće stopalo"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Prikaži u nizu sve slike iz vaše lične fascikle"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Fascikla sa slikama"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Pop art mreža svetlećih boja"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop art kvadrati"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Prikaži putanje koje slike prate"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Povremeno rotiraj slike kako se kreću"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Odštampaj i broj okvira i ostalu statistiku"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Maksimalan broj slika koje treba držati na ekranu"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAH_SLIKA"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Početna veličina i pozicija prozora"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ŠIRINAxVISINA+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Polazna slika koja se koristi"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "slika — razbacaj slike po ekranu"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Pogledajte --help za informacije o upotrebi.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Morate zadati sliku. Pogledajte --help za informacije o upotrebi.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Mesto odakle se prikupljaju slike"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PUTANJA"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Boja za pozadine slika"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "„#rrggbb“"
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Nemoj puštati nasumično slike iz putanje"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ne razvlači slike preko celog ekrana"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Umnožavanje datoteka"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Sa:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Na:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Umnožavanje tema"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Neispravna tema čuvara ekrana"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Čini se da „%s“ nije ispravna tema čuvara ekrana."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Umnožavam datoteku: %u od %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Čini da čuvar ekrana bude zaustavljen prirodno"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Ispitaj stanje čuvara ekrana"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Ispituj vreme za koje je čuvar ekrana bio aktivan"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Govori pokrenutom procesu čuvara ekrana da odmah zaključa ekran"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Ako je čuvar ekrana pokrenut tada pređi na drugi grafički demo"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Uključi čuvara ekrana (očisti ekran)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr ""
+"Ako je čuvar ekrana prisutan, prekini ga (vrati pređašnju sliku na ekranu)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Pozovi pokrenuti čuvar ekrana radi isprobavanja aktivnosti korisnika"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Zabrani pokretanje čuvara ekrana. Komanda blokira čuvar ekrana dok god "
+"jeaktivna."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Program koji zabranjuje čuvar ekrana"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Razlog zabrane čuvara ekrana"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Verzija ovog programa"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Čuvar ekrana je %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "prisutan"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "ugašen"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Čuvar ekrana je nije zaustavljen\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Čuvar ekrana je onemogućen od strane:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Čuvar ekrana je aktivan %d sekundi.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "Čuvar ekrana je trenutno zaustavljen.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Prikaži ispis za traženje grešaka"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Prikaži dugme za odjavu"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Naredba koja se poziva pritiskom na dugme za odjavu"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Prikaži dugme za promenu korisnika"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Poruka za prikaz u prozorčetu"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "PORUKA"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Nije korišćeno"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Korisničko ime:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Lozinka:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Potrebno je da odmah promenite Vašu lozinku (lozinka je stara)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr ""
+"Potrebno je da odmah promenite Vašu lozinku (primoran je administrator)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Vaš nalog je istekao; potražite Vašeg administratora sistema"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Nije dostavljena šifra"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Šifra je nepromenjena"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Ne mogu da dobijem korisničko ime"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Ponovo unesi novu Juniks lozinku:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Unesi novu Juniks lozinku:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(trenutna) Juniks lozinka:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Greška pri promeni NIS lozinke."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Morate sa odaberete dužu lozinku"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Lozinka je već u upotrebi. Izaberite drugu."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Morate da čekate duže za promenu Vaše šifre"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Lozinke se ne poklapaju"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Provera..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Identifikacija neuspela."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Očisti ekran"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Slučajan"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d sat"
+msgstr[1] "%d sata"
+msgstr[2] "%d sati"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minut"
+msgstr[1] "%d minuta"
+msgstr[2] "%d minuta"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekund"
+msgstr[1] "%d sekunde"
+msgstr[2] "%d sekundi"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Nikada"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Ne mogu da učitam glavno sučelje"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Molim proverite da li je čuvar ekrana pravilno instaliran"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Nemoj biti pozadinski proces"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Omogući ispis za traženje grešaka"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Pokreće čuvara ekrana i program za zaključavanje ekrana"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Ne mogu da uspostavim servis %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Ne mogu da postavim PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Neisipravna lozinka"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Pristup u ovo vreme nije dozvoljen."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Više nemate dozvolu za pristup sistemu."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "neuspela prijava na magistralu poruka"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "nije povezan na magistralu poruka"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "čuvar ekrana je već pokrenut u ovoj sesiji"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Vreme je isteklo."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Pritisnuli ste taster za sva velika slova."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "Promeni _korisnika..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Odja_va"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U na %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Lozinka:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Razlog odsustva"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Razlog odlaska sa računara."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "Umnožavam „%s“"
+
+#~ msgid "From URI"
+#~ msgstr "Sa adrese"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "Prenos sa tekuće adrese"
+
+#~ msgid "To URI"
+#~ msgstr "Na adresu"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "Adresa na koju se obavlja prenos"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Deo prenosa je završen"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Deo prenosa je obavljen"
+
+#~ msgid "Current URI index"
+#~ msgstr "Tekući indeks adrese"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Tekući indeks adrese — počinje od 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "Ukupan broj adresa"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Ukupan broj adresa"
+
+#~ msgid "Connecting..."
+#~ msgstr "Povezivanje je u toku..."
+
+#~ msgid "_Screensaver"
+#~ msgstr "Čuva_r ekrana"
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "Dozvoli praćenje potrošnje struje"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr ""
+#~ "Postavite ovo na vrednost „Tačno“ kako bi dozvolili čuvaru ekrana da "
+#~ "ugasi monitor."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "Broj minuta nakon pokretanja čuvara ekrana pre nego što monitor odlazi u "
+#~ "„pripravan“ režim potrošnje."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "Broj minuta nakon pokretanja čuvara ekrana pre nego što monitor odlazi u "
+#~ "„privremeno zaustavljen“ režim potrošnje."
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr ""
+#~ "Broj minuta nakon pokretanja čuvara ekrana nakon kojih se gasi monitor."
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..4df5d1c
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,887 @@
+# Swedish messages for mate-screensaver.
+# Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# Christian Rose <menthos at menthos.com>, 2005.
+# Daniel Nylander <po at danielnylander.se>, 2006, 2007, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-23 14:08+0200\n"
+"PO-Revision-Date: 2009-08-23 14:08+0100\n"
+"Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Skärmsläckare"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Ställ in dina skärmsläckarinställningar"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Förhandsgranska skärmsläckare</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Varning: skärmen kommer inte att låsas för root-användaren.</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Ström_hantering"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Anse datorn som _inaktiv efter:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Skärmsläckarinställningar"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Förhandsgranska skärmsläckare"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Aktivera skärmsläckaren när datorn är inaktiv"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Lås skärmen när skärmsläckaren är aktiv"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Förhandsgranska"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Skärmsläckartema:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Skärmsläckarteman"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Skärmsläckare"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Aktivera vid inaktiv"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Tillåt inbäddning av ett tangentbord i fönstret"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Tillåt utloggning"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Tillåt att sessionsstatusmeddelandet visas"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "Tillåt att sessionsstatusmeddelandet visas när skärmen är låst."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Tillåt byte av användare"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Kommando för inbäddat tangentbord"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Lås vid aktivering"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Kommando för att logga ut"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Läge för val av skärmsläckartema"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Ställ in den här till TRUE för att aktivera skärmsläckaren när sessionen är inaktiv."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The \"keyboard_command\" key must be set with the appropriate command."
+msgstr "Ställ in detta till TRUE för att tillåta inbäddning av ett tangentbord i fönstret vid försök att låsa upp. Nyckeln \"keyboard_command\" måste ställas in med lämpligt kommando."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Ställ in den här till TRUE för att låsa skärmen när skärmsläckaren blir aktiverad."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+msgstr "Ställ in den här till TRUE för att erbjuda ett alternativ i upplåsningsdialogen om att byta till ett annat användarkonto."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "Ställ in den här till TRUE för att erbjuda ett alternativ i upplåsningsdialogen om att logga ut efter en viss fördröjning. Fördröjningen anges i nyckeln \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The command that will be run, if the \"embedded_keyboard_enabled\" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output."
+msgstr "Kommandot som kommer att köras, om nyckeln \"embedded_keyboard_enabled\" är inställd till TRUE, för att inbädda en tangentbordswidget i fönstret. Detta kommando bör implementera en XEMBED-insticksgränssnitt och skriva ut ett fönster-xid på standard ut."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Kommandot att starta när utloggningsknappen klickas på. Det här kommandot ska helt enkelt logga ut användaren utan någon interaktion. Den här nyckeln har endast effekt om nyckeln \"logout_enable\" är inställd till TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "Antal minuter efter att skärmsläckaren aktiverats innan skärmen låses."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Antal minuter efter att skärmsläckaren aktiverats innan ett utloggningsalternativ visas i upplåsningsdialogen.  Den här nyckeln har endast effekt om nyckeln \"logout_enable\" är inställd till TRUE."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Antal minuter efter att skärmsläckaren aktiverats innan sessionen anses som inaktiv."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Antal minuter att köra innan skärmsläckartemat byts."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The number of seconds of inactivity before signalling to power-management. This key is set and maintained by the session power-management agent."
+msgstr "Antalet sekunders inaktivitet innan signalering om strömhantering. Den här nyckeln är inställd och hanteras av sessionsagenten för strömhantering."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+msgstr "Valläget som används av skärmsläckaren. Kan vara \"blank-only\" för att aktivera skärmsläckaren utan att använda något tema vid aktivering, \"single\" för att aktivera skärmsläckaren med endast ett tema vid aktivering (anges i nyckeln \"themes\" och \"random\" för att aktivera skärmsläckaren med ett slumpmässigt tema vid aktivering."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Tema för låsningsdialog"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Tema att använda för låsningsdialogen."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+msgstr "Den här nyckeln anger temalistan som ska användas av skärmsläckaren. Den ignoreras när \"mode\"-nyckeln är \"blank-only\", ska ge temanamnet när \"mode\" är \"single\" och ska ge en temalista när \"mode\" är \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Tid före låsning"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Tid före utloggningsalternativ"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Tid innan strömhanteringsläge uppnås"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Tid innan sessionen anses som overksam"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tide före temabyte"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Lämna ett meddelande till %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U på %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Avbryt"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Lämna meddelande"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Logga ut"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Byt användare"
+
+#: ../data/lock-dialog-default.ui.h:11
+#: ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "Lås _upp"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Visa ett bildspel med bilder på kosmos"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Bubblar runt MATE:s fotlogo på skärmen"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Flytande fötter"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Visa ett bildspel från din Bildermapp"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Bildmapp"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "En popartigt rutnät med pulserande färger."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Popart-rutor"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Visa vägar som bilder följer"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Rotera bilder tillfället när de flyttas"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Skriv ut bildfrekvens och annan statistik"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Maximalt antal bilder att hålla på skärmen"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_BILDER"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Den initiala storleken och positionen på fönstret"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "BREDDxHÖJD+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Källbilden att använda"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - flytande bilder på skärmen"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Se --help för information om användning.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Du måste ange en bild.  Se --help för information om användning.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Plats att hämta bilder från"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "SÖKVÄG"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Färg att använda för bildbakgrund"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Slumpa inte bilder från platsen"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Försök inte att sträcka ut bilder på skärmen"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Kopierar filer"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Från:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Till:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Kopierar teman"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Ogiltigt skärmsläckartema"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s verkar inte vara ett giltigt skärmsläckartema."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Kopierar fil: %u av %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Gör så att skärmsläckaren avslutas snällt"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Fråga om status för skärmsläckaren"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Fråga om tidsperioden som skärmsläckaren har varit aktiv"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Berättar för den körande skärmsläckarprocessen att skärmen ska låsas omedelbart"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Om skärmsläckaren är aktiv, byt till en annan grafikdemonstration"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Slå på skärmsläckaren (töm skärmen)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Om skärmsläckaren är aktiv, inaktivera den (väck upp skärmen)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Peta på den körande skärmsläckaren för att simulera användaraktivitet"
+
+#: ../src/mate-screensaver-command.c:78
+msgid "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+msgstr "Hindra skärmsläckaren från att aktiveras.  Kommandot blockeras när hindringen är aktiv."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Det anropande programmet som hindrar skärmsläckaren"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Anledning för hindring av skärmsläckaren"
+
+#: ../src/mate-screensaver-command.c:84
+#: ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Detta programs versionsnummer"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Skärmsläckaren är %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "aktiv"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "inaktiv"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Skärmsläckaren förhindras inte\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Skärmsläckaren förhindras av:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Skärmsläckaren har varit aktiv i %d sekunder.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Skärmsläckaren är för närvarande inte aktiv.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Visa felsökningsutdata"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Visa utloggningsknappen"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Kommando att starta från utloggningsknappen"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Visa knapp för byte av användare"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Meddelande att visa i dialogrutan"
+
+#: ../src/mate-screensaver-dialog.c:66
+#: ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MEDDELANDE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Används inte"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178
+#: ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180
+#: ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Användarnamn:"
+
+#: ../src/mate-screensaver-dialog.c:181
+#: ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Lösenord:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Du måste ändra ditt lösenord omedelbart (lösenord för gammalt)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Du måste ändra ditt lösenord omedelbart (root kräver det)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Ditt konto har gått ut; kontakta din systemadministratör"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Inget lösenord angivit"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Lösenordet inte ändrat"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Kan inte få tag på användarnamn"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Skriv in nytt UNIX-lösenord igen:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Ange nytt UNIX-lösenord:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(aktuellt) UNIX-lösenord:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Fel vid ändring av NIS-lösenord."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Du måste välja ett längre lösenord"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Lösenordet har redan använts tidigare. Välj ett annat."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Du måste vänta längre för att ändra ditt lösenord"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Tyvärr, lösenorden stämmer inte överens"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Kontrollerar..."
+
+#: ../src/mate-screensaver-dialog.c:304
+#: ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Autentisering misslyckades."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Blank skärm"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Slumpmässigt"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d timme"
+msgstr[1] "%d timmar"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d minut"
+msgstr[1] "%d minuter"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d sekund"
+msgstr[1] "%d sekunder"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Aldrig"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Kunde inte läsa in huvudgränssnittet"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Försäkra dig om att skärmsläckaren är korrekt installerad"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Bli inte en demon"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Aktivera felsökningskod"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Starta program för skärmsläckare och -låsning"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Kunde inte etablera tjänsten %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Kan inte ställa in PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Felaktigt lösenord."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Inte tillåten att få åtkomst vid denna tidpunkt."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Tillåts inte längre att komma åt systemet."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "misslyckades att registrera med meddelandebussen"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "inte ansluten till meddelandebussen"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "skärmsläckaren kör redan i denna session"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Tiden gick ut."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Du har CapsLock-tangenten på."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "B_yt användare..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "Logga _ut"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U på %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Lösenord:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Anledning till frånvaro"
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Anledningen till frånvaro från datorn."
+#~ msgid "Copying '%s'"
+#~ msgstr "Kopierar \"%s\""
+#~ msgid "From URI"
+#~ msgstr "Från URI"
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI överförs för närvarande från"
+#~ msgid "To URI"
+#~ msgstr "Till URI"
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI överförs för närvarande till"
+#~ msgid "Fraction completed"
+#~ msgstr "Del färdig"
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Del av överföring för närvarande färdig"
+#~ msgid "Current URI index"
+#~ msgstr "Aktuellt URI-index"
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Aktuellt URI-index - börjar på 1"
+#~ msgid "Total URIs"
+#~ msgstr "Totala URI:er"
+#~ msgid "Total number of URIs"
+#~ msgstr "Totalt antal URI:er"
+#~ msgid "Connecting..."
+#~ msgstr "Ansluter..."
+#~ msgid "#abcdef"
+#~ msgstr "#abcdef"
+#~ msgid "Authentication"
+#~ msgstr "Autentisering"
+#~ msgid "N"
+#~ msgstr "n"
+#~ msgid "S_witch to user:"
+#~ msgstr "Byt &till användare:"
+#~ msgid "_Switch user..."
+#~ msgstr "_Byt användare..."
+#~ msgid "Manager"
+#~ msgstr "Hanterare"
+#~ msgid "The manager which owns this object."
+#~ msgstr "Hanteraren som äger detta objekt."
+#~ msgid "Name"
+#~ msgstr "Namn"
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "Namnet på den X11-display som den här objektet refererar till."
+#~ msgid "User"
+#~ msgstr "Användare"
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr ""
+#~ "Användaren som för närvarande är inloggad på den här virtuella terminalen."
+#~ msgid "Console"
+#~ msgstr "Konsoll"
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr ""
+#~ "Antalet virtuella konsoller som den här displayen kan hittas på, eller %-"
+#~ "1."
+#~ msgid "Nested"
+#~ msgstr "Nästlad"
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Huruvida det här displayen är en fönsterdisplay (Xnest)."
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "Displayhanteraren kunde inte kontaktas av okända anledningar."
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "Displayhanteraren kör inte eller är för gammal."
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "Det största tillåtna antalet flexibla servrar är uppnått."
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "Det inträffade ett okänt fel när X startades."
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X-servern misslyckades att starta upp korrekt."
+#~ msgid "There are too many X sessions running."
+#~ msgstr "För många X-sessioner kör."
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr ""
+#~ "Den nästlade X-servern (Xnest) kan inte ansluta till din nuvarande X-"
+#~ "server."
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "X-servern i MDM-konfigurationen kunde inte hittas."
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "Försöker ställa in en okänd utloggningsåtgärd, eller försöker ställa in "
+#~ "en utloggningsåtgärd som inte är tillgänglig."
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Virtuella terminaler stöds inte."
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Ogiltigt nummer på virtuell terminal."
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "Försöker att uppdatera en konfigurationsnyckel som inte stöds."
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "Filen ~/.Xauthority är felaktigt konfigurerad eller saknas."
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr ""
+#~ "För många meddelanden skickades till displayhanteraren och det hängde oss."
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "Displayhanteraren skickade ett okänt felmeddelande."
+#~ msgid "The user this menu item represents."
+#~ msgstr "Den användare som denna menypost representerar."
+#~ msgid "Icon Size"
+#~ msgstr "Ikonstorlek"
+#~ msgid "The size of the icon to use."
+#~ msgstr "Storleken på ikonen att använda."
+#~ msgid "Indicator Size"
+#~ msgstr "Indikatorstorlek"
+#~ msgid "Size of check indicator"
+#~ msgstr "Storlek på kontrollindikator"
+#~ msgid "Indicator Spacing"
+#~ msgstr "Indikatormellanrum"
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Mellanrum mellan användarnamnet och indikatorn"
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "Användarhanterarobjektet som den här användaren kontrolleras av."
+#~ msgid "Show Details"
+#~ msgstr "Visa detaljer"
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (MATE:s displayhanterare) kör inte."
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Du kanske i själva verket använder en annan displayhanterare som till "
+#~ "exempel KDM (KDE:s displayhanterare) eller xdm."
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Om du fortfarande vill använda denna funktion bör du antingen själv "
+#~ "starta MDM eller be din systemadministratör att starta MDM."
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "Kan inte kommunicera med MDM (MATE:s displayhanterare)"
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Du kanske har en gammal version körandes."
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "Kan inte kommunicera med mdm, du kanske har en gammal version körandes."
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "Det största tillåtna antalet flexibla X-servrar är uppnått."
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "Det inträffade fel vid försök att starta X-servern."
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "X-servern misslyckades. Den är kanske inte korrekt konfigurerad."
+#~ msgid "Too many X sessions running."
+#~ msgstr "För många X-sessioner kör."
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "Den nästlade X-servern (Xnest) kan inte ansluta till din nuvarande X-"
+#~ "server. Du kanske saknar en X-auktoriseringsfil."
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "Den nästlade X-servern (Xnest) är inte tillgänglig, eller så är mdm "
+#~ "felaktigt konfigurerad.\n"
+#~ "Installera paketet Xnest för att använda den nästlade inloggingen."
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "X-servern är inte tillgänglig, det är troligt att mdm är felaktigt "
+#~ "konfigurerad."
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Försöker ändra till ett ogiltigt tal för en virtuell terminal."
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Du verkar inte ha den autentisering som behövs för denna åtgärd. Din ."
+#~ "Xauthority-fil är kanske inte korrekt konfigurerad."
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "För många meddelanden skickades till mdm och det hängde oss."
+#~ msgid "Unknown error occurred."
+#~ msgstr "Ett okänt fel inträffade."
+#~ msgid "Time before activation"
+#~ msgstr "Tid före aktivering"
+#~ msgid "_Screensaver"
+#~ msgstr "_Skärmsläckare"
+#~ msgid "Allow monitor power management"
+#~ msgstr "Tillåt strömhantering för skärmen"
+
diff --git a/po/ta.po b/po/ta.po
new file mode 100644
index 0000000..65f55d8
--- /dev/null
+++ b/po/ta.po
@@ -0,0 +1,755 @@
+# translation of mate-screensaver.master.ta.po to Tamil
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Felix <ifelix at redhat.com>, 2006.
+# Dr.T.Vasudevan <agnihot3 at gmail.com>, 2007.
+# I. Felix <ifelix at redhat.com>, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.master.ta\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-08-25 16:44+0530\n"
+"Last-Translator: I. Felix <ifelix at redhat.com>\n"
+"Language-Team: Tamil <fedora-trans-ta at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\\n\n"
+"\n"
+"\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "திரை சேமிப்பி"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "உங்கள் திரை சேமிப்பி முன்னுரிமைகளை அமைக்கவும்"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>திரை சேமிப்பி முன்பார்வை</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>எச்சரிக்கை: திரை ரூட் பயனருக்கு பூட்டப்பட மாட்டாது. </b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "சக்தி நிர்வாகம்"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "இந்த நேரத்துக்குப்பின் கணினி சும்மாயிருப்பதாக கொள்ளவும்:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "திரைசேமிப்பி முன்னுரிமைகள்"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "திரைசேமிப்பி முன்பார்வை"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "கணினி சும்மாயிருப்பின் திரை சேமிப்பியை செயல்படுத்துக"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "திரை சேமிப்பி செயலில் இருப்பின் திரையை பூட்டவும்."
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "முன்பார்வை (_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "திரைசேமிப்பி சூழல்: (_S)"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "திரைசேமிப்பி சூழல்கள்"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "திரைசேமிப்பிகள்"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "வெறுமையாக இருக்கும் போது செயல்படுத்து"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "சாளரத்தில் ஒரு விசைப்பலகையை உட்பொதிய அனுமதி"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "வெளிசெல்ல அனுமதி"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "அமர்வு நிலை செய்தியை காட்ட அனுமதி"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "திரை பூட்டியிருக்கும் போது அமர்வு நிலை செய்தியை காட்ட அனுமதி"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "பயனர் மாற்ற அனுமதி"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "உட்பொதியப்பட்ட விசைப்பலகை கட்டளை"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "செயல்படுத்தும் போது பூட்டு"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "வெளிச்செல் கட்டளை"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "திரைசேமிப்பி சூழல் தேர்ந்தெடுப்பு முறை"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "அமர்வு சும்மாயிருக்கும் போது திரை சேமிப்பியை இயக்க இதை உண்மை என அமைக்கவும்."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"பூட்டை திறக்க முயலும்போது சாளரத்தில் ஒரு விசைப்பலகையை உள் அமைக்க இதை உண்மை என "
+"அமைக்கவும். \"keyboard_command\" விசை பொருத்தமான கட்டளையால் அமைக்கப்பட வேண்டும்."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "திரை சேமிப்பி இயங்கும் போது திரையை பூட்ட இதை உண்மை என அமைக்கவும்."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"திரை பூட்டை திறக்கும் போது வேறு ஒரு பயனர் கணக்குக்கு மாற தேர்வை தர இதை உண்மை என "
+"அமைக்கவும்."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"திரை பூட்டை திறக்கும் போது ஒரு தாமதம் கழித்து வெளியேற தேர்வை தர இதை உண்மை என "
+"அமைக்கவும். தாமத நேரம் \"logout_delay\"  விசையில் அமைக்கப்பட்டது."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" விசை உண்மை என அமைந்தால் ஒரு விசைப்பலகை விட்செட்டை "
+"சாளரத்தில் உள்ளமைக்க பயன்படும் கட்டளை. இந்த கட்டளை XEMBED சொருகி இடைமுகத்தை செயலாக்க "
+"வேண்டும் மற்றும் சாதாரண வெளியீட்டில் சாளர XID ஐ வெளியிட வேண்டும்."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"வெளியேறு பொத்தானை சொடுக்கியதும் நிறைவேற்ற வேண்டிய கட்டளை. இது ஒரு ஊடாடலும் இல்லாமல் "
+"பயனரை வெளியேற்ற வேண்டும். இது \"logout_enable\"  விசை உண்மை என அமைந்தால் மட்டுமே "
+"செயல் படும்."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "திரை சேமிப்பி துவங்கிய பின் திரையை பூட்டு முன் நேரம்."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"திரை சேமிப்பி துவங்கிய பின் பூட்டு திறப்பு உரையாடலில் வெளியேற்ற தேர்வு அமைய "
+"நிமிடங்களில் நேரம். இது \"logout_enable\"  விசை உண்மை என அமைந்தால் மட்டுமே செயல் "
+"படும்."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "அமர்வு சும்மாயிருப்பதாக கருத  நிமிடங்களில் செயலற்ற நேரம்."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "திரை சேமிப்பி கருப்பொருளை மாற்று முன் இயங்க நிமிடங்களில் நேரம்."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"சக்தி மேலாண்மை அமைய சமிக்ஞை வரு முன் வினாடிகளில் நேரம். இந்த விசை சக்தி மேலாண்மை "
+"அமைப்பியால் அமைக்கப்பட்டு பராமரிக்கப்படும்."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"திரை சேமிப்பி பயன்படுத்தும் தேர்வு பாங்கு. செயலாக்கும் போது, ஒரு கருப்பொருளையும் "
+"பயன்படுத்தாமல் வெற்றாக்க \"blank-only\" , \"themes\" விசையால் குறிப்பிட்ட ஒரே ஒரு "
+"கருப்பொருளை பயன்படுத்த \"single\"  குறிப்பற்ற கருப்பொருளை பயன்படுத்த \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "பூட்டு உரையாடலுக்கான சூழல்"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "பூட்டு உரையாடலுக்கு பயன்படுத்தப்படும் சூழல்."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"இந்த விசை திரை சேமிப்பி பயன்படுத்த வேண்டிய கருப்பொருட்களை பட்டியல் இடுகிறது. \"mode\" "
+"விசை \"blank-only\", ஆக இருப்பின் இது உதாசீனப்படுத்தப்படும். \"mode\"  \"single\" "
+"ஆக இருப்பின் கருப்பொருளின் பெயரை தர வேண்டும்.\"mode\" \"random\" ஆனால் ஒரு "
+"கருப்பொருள் பட்டியலை தர வேண்டும்."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "பூட்டுவதற்கு முன் நேரம்"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "வெளிச்செல் விருப்பத்திற்கு முன் நேரம்"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "சக்தி அடித்தளம் வரு முன் நேரம்"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "அமர்வு சும்மாயிருப்பதாக கருத நேரம்"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "சூழல் மாற்றுவதற்கு முன் நேரம்"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R க்கு ஒரு செய்தி விட்டு செல்லவும்:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "ரத்து (_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "செய்தியை விட்டு செல்லவும்"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "வெளிச்செல் (_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "பயனரை மாற்றுக"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "பூட்டு நீக்கு (_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Cosmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "cosmosன் படங்களை ஸ்லைடு காட்சியாக காட்டவும்"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "திரையில் பல் இடங்களில் க்னோம் கால் சின்னத்தை குமிழ்களாக வெளியிடுகிறது."
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "மிதவை பாதம்"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "உங்கள் படங்கள் அடைவிலிருந்து ஸ்லைடு காட்சியை காட்டவும்"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "படங்கள் அடைவு"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "நிறங்களின் துடிப்பில் ஒரு pop-art-ish கட்டம்."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop art சதுரங்கள்"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "படங்கள் பின்பற்றும் பாதைகளை காட்டு"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "படங்களை அவற்றை நகரும் போது எப்போதாவது சுழற்றவும்"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "சட்ட விகிதம் மற்றும் பிற புள்ளி விவரங்களை அச்சிடுக"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "திரையில் வைக்க வேண்டிய பிம்பங்களின் அதிகபட்ச எண்ணிக்கை"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "சாளரத்தின் ஆரம்ப அளவு மற்றும் இடம்."
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "பயன்படுத்த வேண்டிய மூல பிம்பம்"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "படம் - திரையில் படங்களை மிதக்க விடவும்"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. --பயன்பாடு தகவலுக்கு உதவியை பார்க்கவும்.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "நீங்கள் ஒரு படத்தை குறிப்பிட வேண்டும்.  --பயன்பாடு தகவலுக்கு உதவியை பார்க்கவும்.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "படத்தை பெறுவதற்கான இடம்"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "பிம்பங்களின் பின்னணிக்கு பயன்படுத்த வண்ணம்"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "இடத்திலிருந்து படங்களை குறிப்பில்லாததாக செய்யாதே"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "திரையில் பிம்பங்களை விரிவு படுத்தாதே"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "கோப்புகளை நகலெடுக்கிறது"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "ஆரம்பம்:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "முடிவு:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "தீம்களை நகலெடுக்கிறது"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "தவறான திரைசேமிப்பி சூழல்"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s சரியான திரைசேமிப்பி சூழலாக தோன்றாது."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "கோப்பினை நகலெடுக்கிறது: %u ல் %uஐ"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "திரை சேமிப்பினை வெளியேற்றுகிறது"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "திரை சேமிப்பியின் நிலையை கேட்கிறது"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "திரை சேமிப்பி செயல்பட்ட நேரத்தை கேள்"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "இயங்கும் திரை சேமிப்பி செயலை உடனே திரையை பூட்டச் சொல்லுகிறது."
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "திரைசேமிப்பி இயங்கினால் வேறு ஒரு வரைகலை காட்சிக்கு மாறுக."
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "திரை சேமிப்பினை செயல்படுத்தவும் (திரையை வெறுமையாக்கவும்)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "திரைசேமிப்பி இயங்கினால் அதை செயல் நீக்குக. (திரையை வெற்றாக ஆக்காதே)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "பயனர் செயலை போல் செய்ய இயங்கும் திரை சேமிப்பியை சீண்டுக"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "திரை சேமிப்பி இயங்குவதை தடுக்கவும்.  தடுப்பு செயல்படும்போது கட்டளை தடுக்கும்"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "திரை சேமிப்பியை தடுக்க காரணமான பயன்பாடு"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "திரை சேமிப்பியை தடுக்க காரணம்"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "இந்த பயன்பாட்டின் பதிப்பு"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "திரைசேமிப்பி %s ஆகும்\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "செயலில்"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "செயலற்ற"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "திரைசேமிப்பி தடை செய்யப்பட்டதில்லை\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "திரைசேமிப்பி பின்வருவதால் தடைசெய்யப்படுகிறது:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "திரை சேமிப்பி %d வினாடிகளுக்கு செயல் பட்டு உள்ளது.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "திரைசேமிப்பி தற்போது செயலிலுள்ளது.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "பிழைத்திருத்த வெளியீட்டை காட்டு"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "வெளிச்செல் பொத்தானை காட்டு"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "வெளியேறு பொத்தானிலிருந்து கடைபிடிக்க வேண்டிய கட்டளை"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "பயனர் மாற்றி பொத்தானை காட்டவும்"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "உரையாடலில் காட்டப்படும் செய்தி"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "பயன்படுத்தவில்லை"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "பயனர் பெயர்:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "கடவுச்சொல்:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "நீங்கள் உங்கள் கடவுச்சொல்லை மாற்ற வேண்டும் (கடவுச்சொல் பழையதானதால்)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "நீங்கள் உங்கள் கடவுச்சொல்லை மாற்ற வேண்டும் (ரூட் வலியுறுத்துகிறது)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "உங்கள் கணக்கு முடிவடைந்தது; உங்கள் கணினி நிர்வாகியை அணுகவும்"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "கடவுச்சொல் கொடுக்கப்படவில்லை"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "கடவுச்சொல் மாற்றப்படவில்லை"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "பயனர் பெயர் இல்லை"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "புதிய UNIX கடவுச்சொல்லை மீண்டும் தட்டச்சு செய்யவும்:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "புதிய UNIX கடவுச்சொல்லை உள்ளிடவும்:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(நடப்பு) UNIX கடவுச்சொல்:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS கடவுச்சொல்லை மாற்றும் போது பிழை."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "பெரிய கடவுச்சொல்லை தேர்ந்தெடுக்கவும்"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "கடவுச்சொல் ஏற்கனவே பயன்படுத்தப்பட்டுள்ளது. வேறொன்றை தேர்வு செய்யவும்."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "கடவுச்சொல்லை மாற்ற நீங்கள் காத்திருக்க வேண்டும்"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "கடவுச்சொல் பொருத்தமானதாக இல்லை"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "சோதிக்கிறது..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "அங்கீகாரம் இல்லை."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "வெற்று திரை"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "குறிப்பில்லாத"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d மணி நேரம்"
+msgstr[1] "%d மணி நேரங்கள்"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d நிமிடம்"
+msgstr[1] "%d நிமிடங்கள்"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d விநாடி"
+msgstr[1] "%d விநாடிகள்"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "ஒருபோதும்"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "முக்கியமான இடைமுகத்தை ஏற்ற முடியவில்லை"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "திரைச்சேமிப்பி சரியாக நிறுவப்பட்டுள்ளதா என உறுதிப்படுத்தவும்"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ஒரு டீமானாக ஆக வேண்டாம்"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "பிழைத்திருத்த குறியீட்டை செயல்படுத்து"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "திரைசேமிப்பு மற்றும் பூட்டு நிரலை துவக்கு"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "சேவையை வழங்க முடியவில்லை %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s ஐ அமைக்க முடியவில்லை"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "தவறான கடவுச்சொல்"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "இந்த நேரத்தில் அணுகல் பெற அனுமதி இல்லை."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "கணினியை அணுக அனுமதி இல்லை."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "செய்தி வடத்துடன் பதிவு செய்ய முடியவில்லை"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "செய்தி வடத்துடன் இணைக்கவில்லை"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "இந்த அமர்வில் திரைசேமிப்பு ஏற்கனவே இயங்குகிறது"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "நேரம் முடிந்தது"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "நீங்கள் உயர் நிலை எழுத்து பூட்டு விசையை செயலாக்கி உள்ளீர்கள்."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "பயனரை மாற்று... (_w)"
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "வெளிச்சொல் (_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U ல் %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "கடவுச்சொல்: (_P)"
+
diff --git a/po/te.po b/po/te.po
new file mode 100644
index 0000000..a40791b
--- /dev/null
+++ b/po/te.po
@@ -0,0 +1,749 @@
+# translation of mate-screensaver.master.te.po to Telugu
+# Telugu translation of mate-screensaver.
+# Copyright (C) 2007 Swecha Telugu Localisation Team <localisation at swecha.org>
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Srinivas Chary <srinu.kolpur at gmail.com>, 2007.
+# Krishna Babu K <kkrothap at redhat.com>, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver.master.te\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-21 03:05+0000\n"
+"PO-Revision-Date: 2009-09-17 17:15+0530\n"
+"Last-Translator: Krishna Babu K <kkrothap at redhat.com>\n"
+"Language-Team: Telugu <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
+"\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "తెరకాపరి"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "మీ  తెరకాపరి యొక్క అభీష్టాలు అమర్చుకొను"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>తెరకాపరి యొక్క ఉపదర్శనము</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>హెచ్చరిక : మూల వినియోగదారునికి తెర తాళము వేయబడదు </b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "విద్యుత్ నిర్వహణ(_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "జడముగా ఉన్న తర్వాత కంప్యూటర్ గురించి(_i):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "తెరకాపరి యొక్క అభీష్టాలు "
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "తెరకాపరి యొక్క ఉపదర్శనం"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "కంప్యూటర్ తీరికగా ఉన్నప్పుడు తెరకాపరిని ప్రేరేపించు(_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "తెరకాపరి చురుకుగా ఉన్నప్పుడు తెరకు తాళం వేయు(_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "ఉపదర్శనం(_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "తెరకాపరి వైవిద్యాంశం(_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "తెరకాపరి వైవిద్యాంశాలు"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "తెరకాపరులు"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "తీరికగా ఉన్నప్పుడు క్రియాశీలీకరించు"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "మీటపలకాన్ని గవాక్షంలోకి అమర్చటానికి అనుమతించు"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "నిష్క్రమణను అనుమతించు"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "విభాగపు స్థితి సందేశము ప్రదర్శితమగుటకు అనుమతించుము"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "తెర తాళంవేయబడి వున్నప్పుడు విభాగపు స్థితి సందేశము ప్రదర్శితమగుటకు అనుమతించుము."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "వినియోగదారి మార్పును అనుమతించు"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "అమర్చబడిన మీటపలక ఆదేశం"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "చురుకుగా ఉన్నప్పుడు తాళం వేయు"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "నిష్ర్కమణద్వార ఆదేశం"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "తెరకాపరి వైవిద్యాంషము యొక్క ఎంపిక విధానము"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "సమకూర్పు తీరికగా ఉన్నప్పుడు తెరకాపరిని ప్రేరేపించటానికి దీనిని నిజానికి అమర్చు "
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"అన్‌లాక్‌కు ప్రయత్నిస్తున్నప్పుడు కీబోర్డ్‍‌ను విండోలోకి బందనంచేయుట అనుమతించుటకు దీనిని సత్యంకు "
+"అమర్చుము. \"keyboard_command\" కీ తప్పక అనుగుణమైన ఆదేశంతో అమర్చబడాలి."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "తెరకాపరి చురుకుగా ఉన్నప్పుడు తెరకు తాళం వేయటానికి దీనిని నిజానికి అమర్చు"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr "వేరొక వినియోగదారి ఖాతాకు మారుటకు అన్‌లాక్ డైలాగ్‌నందు ఐచ్చికాన్ని పొందుపరచుటకు దీనిని సత్యంకు అమర్చండి."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"నిడివి తర్వాత లాగ్‌అవుట్ అగుటకు అన్‌లాక్ డైలాగ్‌నందు ఐచ్చికాన్ని పొందుపరుచుటకు దీనిని సత్యంకు అమర్చుము. "
+"నిడివి \"logout_delay\" కీ నందు తెలుపబడుతుంది."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"కీబోర్డ్‍ విడ్జట్‌ను విండోలో బందనంచేయుటకు,\"embedded_keyboard_enabled\" కీ సత్యంకు అమర్చితే, ఆ "
+"ఆదేశం నడుపబడుతుంది. ఈ ఆదేశం XEMBED ప్లగ్ అంతర్‌ఫలకంను రూపొందించాలి మరియు ప్రామాణిక అవుట్‌పుట్ "
+"పైన విండో XID ను ప్రసాదించాలి."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"లాగ్అవుట్ బటన్ నొక్కినప్పుడు జరుపవలిసిన ఆదేశం. ఈ ఆదేశం వినియోగదారిని ఏ సంబదములేకుండా నిష్క్రమింపచేయాలి. "
+"\"logout_enable\" కీ సత్యంకు అమర్చితే మాత్రమే ఈ ప్రభావితం అవుతుంది."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "తెరకాపరి చేతనం చేసినతర్వాత ఎన్ని నిముషాలకు తెర లాక్‌కావాలి."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"తెరకాపరి చేతనం తర్వాత అన్‌లాక్ డైలాగ్‌నందు లాగ్అవుట్ ఐచ్చికం ఎన్ని నిముషాలకు కనిపించాలి. \"logout_enable"
+"\" కీ సత్యంకు అమర్చితే మాత్రమే ఈ కీ ప్రభావితం అవుతుంది."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "ఎన్ని నిముషాల అచేతనం తరువాత సమకూర్పు తీరికగా ఉందని భావించాలి."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "తెరకాపరి వైవిద్యాంషాన్ని మార్చే ముందు "
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"ఎన్ని సెకనుల అచేతనం తర్వాత పవర్-నిర్వాహకికి సంజ్ఞ ఇవ్వాలి. ఈ కీ సమకూర్పు పవర్-నిర్వాహక ప్రతినిధి ద్వారా "
+"అమర్చబడుతుంది మరియు నిర్వహించబడుతుంది."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"తెరకాపరి చేత ఉపయోగించబడిన ఎంపిక రీతి. \"blank-only\" ఏ థీమ్‌ను ఉపయోగించకుండా తెరకాపరిని చేతనం "
+"చేయుటకు, \"single\" ఒక థీమ్‌ను మాత్రమే ఉపయోగించుటకు తెరకాపరిని చేతనంచేయుటకు (\"themes\" "
+"కీనందు తెలుపబడిన), మరియు \"random\" విభిన్న థీమ్స్‍‌ను ఉపయోగించుటకు తెరకాపరిని చేతనం చేయుటకు."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "తాళం వివరణకు వైవిద్యాంషాం"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "వివరణ తాళానికి వాడడానికి వైవిద్యాంశం"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"ఈ మీట వైవిద్యాంశాల పట్టిని తెలియజేస్తుంది.\"mode\" మీట  \"blank-only\" ఉంటే అది తెలియనట్లుంటుంది,"
+"ఒక వేళ \"mode\" మీట \"single\" ఉంటే వైవిద్యాంశ పేరును తప్పకుండా అమర్చాలి మరియు \"mode\" మీట "
+"\"random\" ఉంటే వైవిద్యాంశాల పట్టిని తెలియజేయాలి."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "తాళం వేయకముందు సమయం"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "నిష్క్రమణద్వార ఇచ్ఛాపూర్వకం ముందు సమయం"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "విద్యుత్ నిర్వహణ మూలం ముందు సమయం"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "సమకూర్పు తీరికగా భావించక ముందు సమయం"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "వైవిద్యాంశ మార్పు ముందు సమయం"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R కొరకు  సందేశాన్ని వదులు</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U on %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "రద్దు(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "సందేశాన్ని వదులు(_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "నిష్క్రమణ ద్వారం(_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "వినియోగదారున్ని మార్చు(_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "తెరచివేయు(_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "కాస్మోస్"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "కాస్‌మోస్ యొక్క చిత్రముల స్లైడ్‌షో ను ప్రదర్శించుము"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE పాదము చిహ్నమును తెర చుట్టూ తిప్పుము"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "తేలాడుతున్న కాళ్లు"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "మీ చిత్రముల సంచయంనుండి స్లైడ్‌షోను ప్రదర్శించుము"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "చిత్రాల సంచయం"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "ప్రచురిత వర్ణముల యొక్క pop-art-ish గ్రిడ్."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "పాప్ ఆర్ట్ స్కేర్స్"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "ప్రతిరూపాలు తిరుగుతున్న త్రోవను చూపు"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "అప్పుడప్పుడు ప్రతిరూపాలు తిరుగుతున్నప్పుడు చక్రంవలె తిరుగు"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "చట్రం యొక్క విలువ మరియు ఇతర సంఖ్యలను ముద్రించు"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "తెర పై పెట్టడానికి అత్యధిక ప్రతిరూపాలు"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "గవాక్షం యొక్క ప్రాథమిక పరిమాణం మరియు స్థానం "
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "వెడెల్పుXపొడవు+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "వాడటానికి వనరుప్రతిరూపం"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "ప్రతిరూపం  - తెర చుట్టు ప్రతిరూపాలు తేలాడుతాయి "
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s.వాడుక సమాచారం కొరకు --help చూడు.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "మీరు తప్పకుండా ఒక ప్రతిరూపాన్ని నిర్దేశించాలి. వాడుక సమాచారం కొరకు --help చూడండి.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ప్రతిరూపాలను తీసుకోవటానికి స్థానము"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "త్రోవ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "ప్రతిరూపాల బ్యాక్‌గ్రౌండ్ కొరకు ఉపయోగించుటకు వర్ణము"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "స్థానమునుండి చిత్రములను విభిన్నము చేయవద్దు"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "తెరపై ప్రతిరూపములను సాగదీయుటకు ప్రయత్నించవద్దు"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "దస్త్రాలను నకలు చేస్తున్నారు"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "నుంచి:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "వరకు:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "థీమ్స్‍‌ను నకలుతీయుచున్నది"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "నిస్సారమైన తెరకాపరి వైవిద్యాంశం"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s విలువైన తెరకాపరి థీమ్‌లాగా కనిపించుటలేదు."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "దస్త్రాన్ని నకలు చేస్తోంది :%u లో %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "తెరకాపరిని అందంగా వెళ్లిపోయేట్టు చేస్తుంది"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "తెరకాపరి యొక్క స్థితిని ప్రశ్నించు"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "తెరకాపరి ఎంత సమయం వరకు  చురుకుగా ఉందో ప్రశ్నించు"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "నడిచే తెరకాపరి కార్యాన్ని వెంటనే తెరకు తాళం వేయమని చెబుతుంది"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "ఒక వేళ తెరకాపరి చురుకుగా ఉంటే వేరే గ్రాఫిక్స్    డెమోకి మరలు "
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "తెరకాపరిని చురుకుగా చేయు "
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "తెరకాపరి చురుకుగా ఉంటే దానిని "
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "నడుస్తున్న తెరకాపరిని వినియోగదారి క్రియాశీలతను అనుకరించుటకు పెట్టుము"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "తెరకాపరిని చురుకుగా ఉండకుండా నిషేధించు.ఆటంకము చురుకుగా ఉన్నప్పుడు ఆదేశం నిషేధిస్తుంది."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "తెరకాపరిని ఆపడానికి పిలుస్తున్న కార్యక్షేత్రం"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "తెరకాపరి ఆటంకానికి కారణం"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "ఈ కార్యక్షేత్ర వివరణం"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "తెరకాపరి %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "చురుకుగా ఉంది"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "చురుకుగాలేదు"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "తెరకాపరి ఆక్షేపితమైనది కాదు\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "తెరకాపరి దీనిచేత అక్షేపించబడుచున్నది:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "తెరకాపరి %d క్షణాలు చురుకుగా ఉంది.\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+#| msgid "The screensaver is not inhibited\n"
+msgid "The screensaver is not currently active.\n"
+msgstr "తెరకాపరి ప్రస్తుతం క్రియాశీలముగా లేదు.\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "లోపనిర్మూలన దిగుబడిని చూపించు"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "నిష్ర్కమణద్వార బొత్తాన్ని చూపించు"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "నిష్ర్కమణద్వార బొత్తం నుంచి పిలుచుటకు ఆదేశం"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "వినియోగదారున్ని మార్చే బొత్తాన్ని చూపించు"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "వివరణలో చూపటానికి సందేశం"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "సందేశం"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "ఉపయోగించబడలేదు"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "వినియోగదారుని పేరు:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "రహస్యపదం:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "మీరు వెంటనే రహస్యపదాన్ని మార్చమని కోరడమైనది (రహస్యపదం పాతదైనది)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "మీ రహస్యపదాన్ని మార్చుకోమని కోరడమైనది (మూలం బలవంతంగా )"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "మీ అకౌంట్ ముగిసినది; దయచేసి మీ వ్యవస్థ నిర్వాహకుడిని సంప్రదించండి"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "రహస్యపదం ఇవబడలేదు"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "రహస్యపదం మార్చబడలేదు"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "వినియోగదారుని పేరు దొరకలేదు"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "మరల కొత్త యూనిక్స్  రహస్యపదాన్ని వ్రాయండి:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "కొత్త యూనిక్స్  రహస్యపదాన్ని వ్రాయండి:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(ప్రస్తుత) యూనిక్స్  రహస్యపదం:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "NIS రహస్యపదాన్ని మార్చేటప్పుడు తప్పు జరిగినది."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "మీరు పెద్ద రహస్యపదాన్ని ఎంచుకోవాలి"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "రహస్యపదం మునుపే వాడుకలో ఉంది. వేరేదాన్ని ఎంచుకోండి."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "మీ రహస్యపదాన్ని మార్చుకోవటానికి చాలా సమయం ఆగాల్సివుంటుంది"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "క్షమించాలి , రహస్యపదాలు జతకూడట్లేదు"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "తనిఖీ చేస్తోంది..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "ప్రామాణీకరణ తప్పినది"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "వట్టి తెర"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "విభిన్న"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d గంట"
+msgstr[1] "%d గంటలు"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d నిమిషము"
+msgstr[1] "%d నిమిషాలు"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d క్షణం"
+msgstr[1] "%d క్షణాలు"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "ఎప్పుడును లేదు"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "ప్రధాన సంవిధాన్ని భారం చేయలేకపోయింది"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "దయచేసి తెరకాపరి సరిగ్గా నెలకొల్పండిందో లేదో చూసుకోండి"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "సూత్రదారి అవ్వకు"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "లోపనిర్మూలన సంకేతాన్ని ఉపయోగించు"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "తెరకాపరినిను మరియు లాకర్ ప్రోగ్రామ్‌ను ఆరంభించుము"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "%s సేవను స్తాపించుట కుదురలేదు: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s స్తాపించుట సాధ్యం కాలేదు"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "తప్పు రహస్యపదం."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "ఈ సమయంలో సాంగత్యాన్ని పొందుట అనుమతించబడదు"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "ఇక ఏ మాత్రము వ్యవస్థను ప్రవేశించింటానికి అనుమతి  లేదు."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "సందేశ వాహకముతో నమోదు చేయలేకపోయింది"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "సందేశ వాహకానికి బంధింపబడలేదు"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "ఈ సమకూర్పులో తెరకాపరి మునుపే నడుస్తున్నది "
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "సమయం ముగిసినది"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "కాప్స్ లాక్ ఆన్లో ఉంది"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "వినియోగదారున్ని మార్చు(_w)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "నిష్క్రమణద్వారం(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U మీద %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "రహస్యపదం(_P):"
+
diff --git a/po/th.po b/po/th.po
new file mode 100644
index 0000000..d727642
--- /dev/null
+++ b/po/th.po
@@ -0,0 +1,1039 @@
+# Thai translation of mate-screensaver.
+# Copyright (C) 2005-2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the mate-screensaver package.
+# Theppitak Karoonboonyanan <thep at linux.thai.net>, 2005-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver 0.0.21\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-08-23 13:36+0700\n"
+"PO-Revision-Date: 2009-08-23 13:39+0700\n"
+"Last-Translator: Theppitak Karoonboonyanan <thep at linux.thai.net>\n"
+"Language-Team: Thai <thai-l10n at googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: data/mate-screensaver-preferences.desktop.in.h:1
+#: src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "โปรแกรมรักษาหน้าจอ"
+
+#: data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "ปรับแต่งโปรแกรมรักษาหน้าจอของคุณ"
+
+#: data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>ภาพตัวอย่างโปรแกรมรักษาหน้าจอ</b>"
+
+#: data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>คำเตือน: จะไม่ล็อคหน้าจอถ้าเข้าระบบด้วยบัญชี root</b>"
+
+#: data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "การจัดการ_พลังงาน"
+
+#: data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "ถือว่าเครื่องไ_ม่ถูกใช้งานหลังจาก:"
+
+#: data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "ปรับแต่งโปรแกรมรักษาหน้าจอ"
+
+#: data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "ภาพตัวอย่างโปรแกรมรักษาหน้าจอ"
+
+#: data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "แ_สดงโปรแกรมรักษาหน้าจอเมื่อเครื่องไม่ถูกใช้งาน"
+
+#: data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_ล็อคหน้าจอเมื่อโปรแกรมรักษาหน้าจอทำงาน"
+
+#: data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "ภาพ_ตัวอย่าง"
+
+#: data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_ชุดโปรแกรมรักษาหน้าจอ:"
+
+#: data/mate-screensaver.directory.in.h:1
+#: data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "ชุดโปรแกรมรักษาหน้าจอ"
+
+#: data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "โปรแกรมรักษาหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "ให้เริ่มทำงานเมื่อเดินเครื่องเปล่า"
+
+#: data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "เปิดใช้การฝังแป้นพิมพ์ในหน้าต่าง"
+
+#: data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "ให้ออกจากระบบได้"
+
+#: data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "อนุญาตให้แสดงข้อความสถานะของวาระ"
+
+#: data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "อนุญาตให้แสดงข้อความสถานะของวาระในระหว่างล็อคหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "ให้เปลี่ยนผู้ใช้ได้"
+
+#: data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "คำสั่งสำหรับแป้นพิมพ์ฝังตัว"
+
+#: data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "ล็อคหน้าจอเมื่อทำงาน"
+
+#: data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "คำสั่งออกจากระบบ"
+
+#: data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "วิธีการเลือกชุดโปรแกรมรักษาหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "กำหนดเป็น TRUE เพื่อเริ่มโปรแกรมรักษาหน้าจอเมื่อวาระเดินเครื่องเปล่า"
+
+#: data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"กำหนดเป็น TRUE เพื่อเปิดใช้แป้นพิมพ์ฝังตัวในหน้าต่างเมื่อจะปลดล็อคหน้าจอ คุณต้องกำหนดคีย์ "
+"\"keyboard_command\" เป็นคำสั่งที่เหมาะสมด้วย"
+
+#: data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "กำหนดเป็น TRUE เพื่อล็อคหน้าจอเมื่อโปรแกรมรักษาหน้าจอทำงาน"
+
+#: data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr "กำหนดเป็น TRUE เพื่อให้มีตัวเลือกในกล่องโต้ตอบปลดล็อคหน้าจอ ให้เปลี่ยนไปใช้บัญชีผู้ใช้อื่นได้"
+
+#: data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"กำหนดเป็น TRUE เพื่อให้มีตัวเลือกในกล่องโต้ตอบปลดล็อคหน้าจอ "
+"ให้ออกจากระบบหลังจากการหน่วงเวลาได้ ช่วงเวลาที่หน่วงกำหนดโดยคีย์ \"logout_delay\""
+
+#: data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"คำสั่งที่จะเรียก ถ้าคีย์ \"embedded_keyboard_enabled\" ถูกกำหนดเป็น TRUE "
+"เพื่อฝังวิดเจ็ตแป้นพิมพ์ลงในหน้าต่าง คำสั่งนี้ควรสร้างตามอินเทอร์เฟซ XEMBED และแสดง XID "
+"ของหน้าต่างออกทางเอาต์พุตมาตรฐาน"
+
+#: data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"คำสั่งที่จะเรียกเมื่อผู้ใช้คลิกปุ่มออกจากระบบ คำสั่งนี้ควรจะออกจากวาระของผู้ใช้ "
+"โดยไม่มีการโต้ตอบกับผู้ใช้อีก คีย์นี้จะมีผลก็ต่อเมื่อคีย์ \"logout_enable\" มีค่าเป็น TRUE"
+
+#: data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "จำนวนนาทีหลังการเริ่มทำงาน ที่โปรแกรมรักษาหน้าจอจะล็อคหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"จำนวนนาทีหลังการเริ่มทำงาน "
+"ที่โปรแกรมรักษาหน้าจอจะปรากฏตัวเลือกให้ออกจากระบบในกล่องโต้ตอบปลดล็อคหน้าจอ "
+"คีย์นี้จะมีผลก็ต่อเมื่อคีย์ \"logout_enable\" มีค่าเป็น TRUE"
+
+#: data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "จำนวนนาทีที่ไม่มีความเคลื่อนไหว ก่อนที่จะถือว่าวาระเริ่มเดินเครื่องเปล่า"
+
+#: data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "จำนวนนาทีที่จะทำงาน ก่อนเปลี่ยนชุดโปรแกรมรักษาหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"จำนวนวินาทีที่ไม่มีความเคลื่อนไหว ก่อนที่จะส่งสัญญาณไปยังระบบจัดการการใช้พลังงาน "
+"คีย์นี้ดูแลและกำหนดค่าโดยตัวดำเนินการจัดการพลังงานของวาระที่เปิด"
+
+#: data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"วิธีการเลือกที่โปรแกรมรักษาหน้าจอใช้ อาจเป็น \"blank-only\" "
+"เพื่อเปิดใช้โปรแกรมรักษาหน้าจอโดยไม่เรียกชุดโปรแกรมใด หรือ \"single\" "
+"เพื่อเปิดใช้โปรแกรมรักษาหน้าจอโดยใช้ชุดโปรแกรมเดียว (กำหนดโดยคีย์ \"themes\") หรือ "
+"\"random\" เพื่อเปิดใช้โดยสุ่มชุดโปรแกรมรักษาหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "ชุดตกแต่งสำหรับกล่องโต้ตอบล็อคหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "ชุดตกแต่งที่จะใช้สำหรับกล่องโต้ตอบล็อคหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"คีย์นี้กำหนดรายการชุดโปรแกรมที่โปรแกรมรักษาหน้าจอจะใช้ จะไม่มีผลเมื่อคีย์ \"mode\" เป็น "
+"\"blank-only\" แต่จะกำหนดชื่อชุดโปรแกรมเมื่อคีย์ \"mode\" เป็น \"single\" "
+"และกำหนดรายการชุดโปรแกรมเมื่อ \"mode\" เป็น \"random\""
+
+#: data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "ช่วงเวลาก่อนล็อคหน้าจอ"
+
+#: data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "ช่วงเวลาก่อนมีตัวเลือกออกจากระบบ"
+
+#: data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "ช่วงเวลาก่อนเริ่มจัดการการใช้พลังงาน"
+
+#: data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "ช่วงเวลาก่อนที่จะถือว่าไม่มีการใช้งานเครื่อง"
+
+#: data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "ช่วงเวลาก่อนเปลี่ยนชุดโปรแกรม"
+
+#: data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>ฝากข้อความถึง %R:</b>"
+
+#: data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U ที่เครื่อง %h</span>"
+
+#: data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_ยกเลิก"
+
+#: data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_ฝากข้อความ"
+
+#: data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_ออกจากระบบ"
+
+#: data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_สลับผู้ใช้"
+
+#: data/lock-dialog-default.ui.h:11 src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_ปลดล็อค"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: data/images/cosmos/cosmos.xml.in.in.h:3
+#: savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "อวกาศ"
+
+#: savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "แสดงภาพสไลด์ของภาพจากอวกาศ"
+
+#: savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "เลื่อนตรารูปรอยเท้าของ MATE ไปรอบๆ หน้าจอ"
+
+#: savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "บาทาเหินหาว"
+
+#: savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "แสดงภาพสไลด์จากโฟลเดอร์ภาพของคุณ"
+
+#: savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "โฟลเดอร์ภาพ"
+
+#: savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "ตารางไฟกะพริบแบบศิลปะแนวป๊อป"
+
+#: savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "จัตุรัสศิลปะแนวป๊อป"
+
+#: savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "แสดงเส้นทางที่เคลื่อนรูปไป"
+
+#: savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "หมุนภาพบ้างขณะที่เลื่อนไป"
+
+#: savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "แสดงอัตราเฟรมภาพและสถิติอื่นๆ"
+
+#: savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "จำนวนรูปภาพสูงสุดที่จะแสดงบนหน้าจอ"
+
+#: savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "ขนาดและตำแหน่งเริ่มต้นของหน้าต่าง"
+
+#: savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: savers/floaters.c:99
+msgid "The source image to use"
+msgstr "รูปภาพต้นแบบที่จะใช้"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - เลื่อนรูปไปรอบๆ หน้าจอ"
+
+#: savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s  ลองเรียกด้วย --help เพื่อดูวิธีใช้\n"
+
+#: savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "คุณต้องระบุรูปภาพด้วย  ลองเรียกด้วย --help เพื่อดูวิธีใช้\n"
+
+#: savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "ตำแหน่งที่จะอ่านข้อมูลรูปภาพ"
+
+#: savers/slideshow.c:53
+msgid "PATH"
+msgstr "PATH"
+
+#: savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "สีที่จะใช้สำหรับพื้นหลังภาพ"
+
+#: savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "ไม่ต้องสุ่มภาพจากแหล่งเก็บ"
+
+#: savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "ไม่ต้องพยายามยืดภาพให้เต็มจอ"
+
+#: src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "กำลังคัดลอกแฟ้ม"
+
+#: src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "จาก:"
+
+#: src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "ไปยัง:"
+
+#: src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "กำลังคัดลอกชุดโปรแกรมรักษาหน้าจอ"
+
+#: src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "ชุดโปรแกรมรักษาหน้าจอใช้ไม่ได้"
+
+#: src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s ดูเหมือนไม่ใช่ชุดโปรแกรมรักษาหน้าจอที่ใช้ได้"
+
+#: src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "กำลังคัดลอกแฟ้ม: %u จาก %u"
+
+#: src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "ทำให้โปรแกรมรักษาหน้าจอจบอย่างนุ่มนวล"
+
+#: src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "สอบถามสถานะของโปรแกรมรักษาหน้าจอ"
+
+#: src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "สอบถามระยะเวลาที่โปรแกรมรักษาหน้าจอได้ทำงานมา"
+
+#: src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "บอกโพรเซสโปรแกรมรักษาหน้าจอที่กำลังทำงานอยู่ให้ล็อคหน้าจอทันที"
+
+#: src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "ถ้าโปรแกรมรักษาหน้าจอกำลังวาดอยู่ ก็ให้สลับไปใช้ชุดโปรแกรมอื่นวาด"
+
+#: src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "ให้โปรแกรมรักษาหน้าจอเริ่มทำงาน (ล้างหน้าจอ)"
+
+#: src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "ถ้าโปรแกรมรักษาหน้าจอกำลังวาดอยู่ ก็ให้หยุดวาด (เลิกล้างหน้าจอ)"
+
+#: src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "รบเร้าโปรแกรมรักษาหน้าจอที่กำลังทำงานอยู่ เพื่อจำลองการเคลื่อนไหวของผู้ใช้"
+
+#: src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "ระงับไม่ให้เรียกโปรแกรมรักษาหน้าจอ คำสั่งจะหยุดรอในระหว่างที่มีการระงับ"
+
+#: src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "ชื่อโปรแกรมผู้เรียก ซึ่งระงับโปรแกรมรักษาหน้าจอ"
+
+#: src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "สาเหตุของการระงับโปรแกรมรักษาหน้าจอ"
+
+#: src/mate-screensaver-command.c:84 src/mate-screensaver-dialog.c:58
+#: src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "รุ่นของโปรแกรมนี้"
+
+#: src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "โปรแกรมรักษาหน้าจอกำลัง%s\n"
+
+#: src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "ทำงาน"
+
+#: src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "หลับ"
+
+#: src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "โปรแกรมรักษาหน้าจอไม่ได้ถูกระงับ\n"
+
+#: src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "โปรแกรมรักษาหน้าจอกำลังถูกระงับโดย:\n"
+
+#: src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "โปรแกรมรักษาหน้าจอทำงานมาแล้ว %d วินาที\n"
+
+#: src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "โปรแกรมรักษาหน้าจอไม่ได้ทำงานอยู่\n"
+
+#: src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "แสดงข้อความดีบั๊ก"
+
+#: src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "แสดงปุ่มออกจากระบบ"
+
+#: src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "คำสั่งที่จะเรียกจากปุ่มออกจากระบบ"
+
+#: src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "แสดงปุ่มสลับผู้ใช้"
+
+#: src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "ข้อความที่จะแสดงในกล่องโต้ตอบ"
+
+#: src/mate-screensaver-dialog.c:66 src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "ไม่ใช้"
+
+#. login: is whacked always translate to Username:
+#: src/mate-screensaver-dialog.c:178 src/mate-screensaver-dialog.c:179
+#: src/mate-screensaver-dialog.c:180 src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "ชื่อผู้ใช้:"
+
+#: src/mate-screensaver-dialog.c:181 src/mate-screensaver-dialog.c:182
+#: src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "รหัสผ่าน:"
+
+#: src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "คุณต้องเปลี่ยนรหัสผ่านเดี๋ยวนี้ (รหัสผ่านหมดอายุแล้ว)"
+
+#: src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "คุณต้องเปลี่ยนรหัสผ่านเดี๋ยวนี้ (ผู้ดูแลระบบบังคับให้เปลี่ยน)"
+
+#: src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "บัญชีของคุณหมดอายุแล้ว กรุณาติดต่อผู้ดูแลระบบ"
+
+#: src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "ไม่ได้ป้อนรหัสผ่าน"
+
+#: src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "รหัสผ่านไม่เปลี่ยน"
+
+#: src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "หาชื่อผู้ใช้ไม่พบ"
+
+#: src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "ป้อนรหัสผ่านยูนิกซ์อีกครั้ง:"
+
+#: src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "ตั้งรหัสผ่านยูนิกซ์:"
+
+#: src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "รหัสผ่านยูนิกซ์ปัจจุบัน:"
+
+#: src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "เกิดข้อผิดพลาดขณะเปลี่ยนรหัสผ่าน NIS"
+
+#: src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "คุณต้องตั้งรหัสผ่านยาวกว่านี้"
+
+#: src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "รหัสผ่านนี้ถูกใช้อยู่ กรุณาตั้งรหัสผ่านอื่น"
+
+#: src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "คุณต้องหยุดคอยก่อนเปลี่ยนรหัสผ่าน"
+
+#: src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "ขออภัย รหัสผ่านไม่ตรงกัน"
+
+#: src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "กำลังตรวจสอบ..."
+
+#: src/mate-screensaver-dialog.c:304 src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "การยืนยันตัวบุคคลไม่ผ่าน"
+
+#: src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "จอเปล่า"
+
+#: src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "สุ่ม"
+
+#: src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ชั่วโมง"
+
+#: src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d นาที"
+
+#: src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d วินาที"
+
+#. hour:minutes:seconds
+#: src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: src/mate-screensaver-preferences.c:995
+#: src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: src/mate-screensaver-preferences.c:998
+#: src/mate-screensaver-preferences.c:1006
+#: src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "ไม่ทำงาน"
+
+#: src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "ไม่สามารถโหลดส่วนติดต่อผู้ใช้หลักได้"
+
+#: src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "กรุณาตรวจสอบการติดตั้งโปรแกรมรักษาหน้าจอว่าครบถ้วนหรือไม่"
+
+#: src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "ไม่ต้องเป็นดีมอน"
+
+#: src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "เปิดใช้โค้ดส่วนดีบั๊ก"
+
+#: src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "เรียกโปรแกรมรักษาและล็อคหน้าจอ"
+
+#: src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "ไม่สามารถเชื่อมต่อบริการ %s: %s\n"
+
+#: src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "ไม่สามารถกำหนด PAM_TTY=%s"
+
+#: src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "รหัสผ่านไม่ถูกต้อง"
+
+#: src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "คุณไม่ได้รับอนุญาตให้ใช้ระบบในขณะนี้"
+
+#: src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "คุณไม่ได้รับอนุญาตให้ใช้ระบบอีกต่อไป"
+
+#: src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "ลงทะเบียนกับบัสข้อความไม่สำเร็จ"
+
+#: src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "ไม่ได้เชื่อมต่อกับบัสข้อความ"
+
+#: src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "โปรแกรมรักษาหน้าจอกำลังทำงานอยู่แล้วในวาระนี้"
+
+#: src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "หมดเวลา"
+
+#: src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "ปุ่ม Caps Lock ถูกกดอยู่"
+
+#: src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_สลับผู้ใช้..."
+
+#: src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_ออกจากระบบ"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%s ที่เครื่อง %s"
+
+#: src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_รหัสผ่าน:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "เหตุผลที่ไม่อยู่"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "เหตุผลที่ไม่อยู่ที่หน้าจอคอมพิวเตอร์"
+
+#~ msgid "Copying '%s'"
+#~ msgstr "กำลังคัดลอก '%s'"
+
+#~ msgid "From URI"
+#~ msgstr "URI ต้นทาง"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "URI ต้นทางที่กำลังถ่ายข้อมูล"
+
+#~ msgid "To URI"
+#~ msgstr "URI ปลายทาง"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "URI ปลายทางที่กำลังถ่ายข้อมูลไป"
+
+#~ msgid "Fraction completed"
+#~ msgstr "เสร็จสิ้นบางส่วน"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "การถ่ายข้อมูลเสร็จสิ้นบางส่วน"
+
+#~ msgid "Current URI index"
+#~ msgstr "หมายเลข URI ปัจจุบัน"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "หมายเลข URI ปัจจุบัน - เริ่มจาก 1"
+
+#~ msgid "Total URIs"
+#~ msgstr "URI ทั้งหมด"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "จำนวน URI ทั้งหมด"
+
+#~ msgid "Connecting..."
+#~ msgstr "กำลังเชื่อมต่อ..."
+
+#~ msgid "Authentication"
+#~ msgstr "การยืนยันตัวบุคคล"
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "S_witch to user:"
+#~ msgstr "ส_ลับไปเป็นผู้ใช้:"
+
+#~ msgid "_Switch user..."
+#~ msgstr "_สลับผู้ใช้..."
+
+#~ msgid "Manager"
+#~ msgstr "โปรแกรมจัดการ"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "โปรแกรมจัดการที่เป็นเจ้าของอ็อบเจกต์นี้"
+
+#~ msgid "Name"
+#~ msgstr "ชื่อ"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "ชื่อดิสเพลย์ของ X11 ที่อ็อบเจกต์นี้อ้างถึง"
+
+#~ msgid "User"
+#~ msgstr "ผู้ใช้"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "ผู้ใช้ที่กำลังเข้าระบบในเทอร์มินัลเสมือนนี้"
+
+#~ msgid "Console"
+#~ msgstr "คอนโซล"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr "หมายเลขคอนโซลเสมือนที่ดิสเพลย์นี้ทำงานอยู่ หรือ %-1"
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "กำหนดว่าดิสเพลย์นี้อยู่ในหน้าต่าง Xnest หรือไม่"
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "ไม่สามารถติดต่อโปรแกรมจัดการการเข้าระบบได้โดยไม่ทราบสาเหตุ"
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "โปรแกรมจัดการการเข้าระบบไม่ได้ทำงานอยู่ หรือเป็นรุ่นเก่าเกินไป"
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "จำนวนเซิร์ฟเวอร์ยืดหยุ่นได้มาถึงขีดจำกัดที่ตั้งค่าไว้แล้ว"
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "เกิดข้อผิดพลาดไม่ทราบสาเหตุขณะเริ่มใช้งาน X"
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X server เริ่มทำงานไม่สำเร็จ"
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "มีวาระ X ทำงานอยู่หลายวาระเกินไป"
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr "เซิร์ฟเวอร์ใน Xnest ไม่สามารถเชื่อมต่อมายัง X server ปัจจุบันของคุณได้"
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "ไม่พบ X server ในค่าตั้งของ MDM"
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr "พยายามจะตั้งปฏิบัติการสำหรับออกจากระบบที่ไม่รู้จัก หรือพยายามตั้งให้เป็นคำสั่งที่ไม่มีอยู่"
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "ไม่สนับสนุนเทอร์มินัลเสมือน"
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "หมายเลขเทอร์มินัลเสมือนไม่ถูกต้อง"
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "พยายามจะอัพเดตคีย์ค่าตั้งที่ไม่สนับสนุน"
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority ถูกตั้งค่าไว้ไม่เหมาะสม หรือหายไป"
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "ข้อความถูกส่งไปยังโปรแกรมจัดการการเข้าระบบมากเกินไป และมันค้างไปแล้ว"
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "โปรแกรมจัดการการเข้าระบบส่งข้อความข้อผิดพลาดที่ไม่รู้จักมาให้"
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "ผู้ใช้ที่แทนโดยรายการเมนูนี้"
+
+#~ msgid "Icon Size"
+#~ msgstr "ขนาดไอคอน"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "ขนาดของไอคอนที่จะใช้"
+
+#~ msgid "Indicator Size"
+#~ msgstr "ขนาดเครื่องหมายบ่งชี้"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "ขนาดของเครื่องหมายบ่งชี้"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "ช่องไฟระหว่างเครื่องหมายบ่งชี้"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "ช่องไฟระหว่างชื่อผู้ใช้กับเครื่องหมายบ่งชี้"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "อ็อบเจกต์จัดการผู้ใช้ที่ควบคุมผู้ใช้นี้อยู่"
+
+#~ msgid "Show Details"
+#~ msgstr "แสดงรายละเอียด"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (MATE Display Manager) ไม่ได้ทำงานอยู่"
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "คุณอาจกำลังใช้โปรแกรมจัดการการเข้าระบบตัวอื่น เช่น KDM (KDE Display Manager) หรือ "
+#~ "xdm"
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "ถ้าคุณยังต้องการใช้ความสามารถนี้ กรุณาเปิดใช้ MDM เอง หรือขอให้ผู้ดูแลระบบเปิดใช้ MDM ให้"
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "ไม่สามารถติดต่อสื่อสารกับ MDM (MATE Display Manager) ได้"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "บางที คุณอาจกำลังใช้ MDM รุ่นเก่าอยู่"
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr "ไม่สามารถติดต่อสื่อสารกับ mdm บางทีคุณอาจกำลังใช้รุ่นเก่าอยู่"
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "จำนวน X server แบบยืดหยุ่นได้มาถึงขีดจำกัดที่เป็นไปได้แล้ว"
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "เกิดข้อผิดพลาดขณะพยายามเริ่มใช้ X server"
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "X server ล้มเหลว บางที อาจจะถูกตั้งค่าไว้ไม่ดี"
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "มีวาระ X ทำงานอยู่หลายวาระเกินไป"
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "X server ใน Xnest ไม่สามารถเชื่อมต่อมายัง X server ปัจจุบันของคุณได้ คุณอาจไม่มีแฟ้ม X "
+#~ "authorization"
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "ไม่มี X server ซ้อน (Xnest) ให้ใช้ หรือ mdm ถูกตั้งค่าไว้ไม่ดี\n"
+#~ "กรุณาติดตั้งแพกเกจ Xnest เพื่อจะใช้การเข้าระบบซ้อนในตัว"
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr "ไม่มี X server ให้ใช้ เป็นไปได้ว่า mdm ถูกตั้งค่าไว้ไม่ดี"
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "พยายามจะเปลี่ยนไปยังหมายเลขเทอร์มินัลเสมือนที่ผิด"
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "ดูเหมือนคุณไม่มีข้อมูลยืนยันตัวบุคคลซึ่งจำเป็นสำหรับปฏิบัติการนี้ บางที แฟ้ม .Xauthority "
+#~ "ของคุณอาจตั้งค่าไว้ไม่ถูกต้อง"
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "มีข้อความถูกส่งไปให้ mdm มากเกินไป และ mdm ก็ค้างไปแล้ว"
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "เกิดข้อผิดพลาดไม่ทราบสาเหตุ"
+
+#~ msgid "Time before activation"
+#~ msgstr "ช่วงเวลาก่อนเริ่มทำงาน"
+
+#~ msgid "Prompt:"
+#~ msgstr "คำถาม:"
+
+#~ msgid "That password was incorrect."
+#~ msgstr "รหัสผ่านไม่ถูกต้อง"
+
+#~ msgid "_Screensaver"
+#~ msgstr "โปรแกรม_รักษาหน้าจอ"
+
+#~ msgid "Disable running graphical themes while blanked"
+#~ msgstr "ปิดชุดโปรแกรมกราฟิกที่กำลังทำงานอยู่ขณะล้างหน้าจอ"
+
+#~ msgid "Enable running graphical themes while blanked (if applicable)"
+#~ msgstr "เปิดใช้ชุดโปรแกรมกราฟิกที่กำลังทำงานอยู่ขณะล้างหน้าจอ (ถ้าทำได้)"
+
+#~ msgid "0 seconds"
+#~ msgstr "0 วินาที"
+
+#~ msgid "Allow monitor power management"
+#~ msgstr "ให้จัดการการใช้พลังงานของจอภาพได้"
+
+#~ msgid "Set this to TRUE to allow the screensaver to power down the monitor."
+#~ msgstr "กำหนดเป็น TRUE เพื่อยอมให้โปรแกรมรักษาหน้าจอสั่งปิดจอภาพ"
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into standby power mode."
+#~ msgstr ""
+#~ "จำนวนนาทีหลังการเริ่มทำงาน "
+#~ "ที่โปรแกรมรักษาหน้าจอจะเปลี่ยนการใช้พลังงานของจอภาพเข้าสู่โหมด standby"
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "goes into suspend power mode."
+#~ msgstr ""
+#~ "จำนวนนาทีหลังการเริ่มทำงาน "
+#~ "ที่โปรแกรมรักษาหน้าจอจะเปลี่ยนการใช้พลังงานของจอภาพเข้าสู่โหมด suspend"
+
+#~ msgid ""
+#~ "The number of minutes after the screensaver activation until the monitor "
+#~ "powers off."
+#~ msgstr "จำนวนนาทีหลังการเริ่มทำงาน ที่โปรแกรมรักษาหน้าจอจะปิดจอภาพ"
+
+#~ msgid "Time before power off"
+#~ msgstr "ช่วงเวลาก่อนปิดจอภาพ"
+
+#~ msgid "Time before standby"
+#~ msgstr "ช่วงเวลาก่อน standby"
+
+#~ msgid "Time before suspend"
+#~ msgstr "ช่วงเวลาก่อน suspend"
+
+#~ msgid "    "
+#~ msgstr "    "
+
+#~ msgid "_Activate after:"
+#~ msgstr "_ทำงานหลังจาก:"
+
+#~ msgid "Disabled"
+#~ msgstr "ปิด"
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..a5c32d4
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,994 @@
+# Turkish translation of mate-screensaver.
+# Copyright (C) 2008
+# This file is distributed under the same license as the mate-screensaver package.
+#
+# Baris Cicek <baris at teamforce.name.tr>, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-21 22:20+0200\n"
+"PO-Revision-Date: 2009-02-21 22:19+0200\n"
+"Last-Translator: Baris Cicek <baris at teamforce.name.tr>\n"
+"Language-Team: Turkish <mate-turk at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Ekran koruyucu"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Ekran koruyucunuzun tercihlerini belirtin"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Ekran koruyucu önizleme</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Uyarı: root kullanıcısı için ekran kilitlenmeyecektir.</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "Güç Yöneti_mi"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Sonrasında bilgisayarı _boş duran olarak say:"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Ekran koruyucusu Tercihleri"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Ekran koruyucu Önizleme"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "Bilgis_ayar bekleme durumundayken ekran koruyucuyu etkinleştir"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "Ekran koruyucu etkinken ekranı ki_litle"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "Ö_nizleme"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "_Ekran koruyucu teması:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Ekran koruyucu temaları"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Ekran koruyucular"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Bekleme durumundayken etkinleştir"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Pencereye bir klavye gömmeye izin ver"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Çıkışa izin ver"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Oturum durum mesajının gösterilmesine izin ver"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "Ekran kilitlendiğinde oturum durum mesajının gösterilmesine izin ver."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Kullanıcı değiştirmeye izin ver"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Gömülü klavye komutu"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Harekete geçince kilitle"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Çıkış komutu"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Ekran koruyucu tema seçme kipi"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Oturum bekleme durumundayken ekran koruyucuyu etkinleştirmek için bunu TRUE "
+"yapın."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Kilidi kaldırmaya çalışırken ekrana bir klavye gömmek için bunu TRUE olarak "
+"seçin.\"keyboard_command\" anahtarı uygun bir komutla tanımlanmalıdır."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr ""
+"Ekran koruyucu etkin olduğu zaman ekranın kilitlenmesi için bunu TRUE olarak "
+"tanımla."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Kilidi kaldırma penceresinde başka bir kullanıcıya geçme seçeneğini önermek "
+"için bunu TRUE yapın."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Kilidi kaldırma penceresinde belli bir süre beklemeden sonra oturumu kapatma "
+"seçeneğini önermek için bunu TRUE yapın.Bekleme süresi \"logout_delay\" "
+"anahtarı ile belirtilir."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"\"embedded_keyboard_enabled\" anahtarı TRUE yapılmışsa, bir klavye "
+"bileşenini pencereye gömmek için bu komut çalıştırılacaktır.Bu komut bir "
+"XEMBED fiş arayüzü gerçekleştirmeli ve standart çıktıya bir XID penceresi "
+"çıktısı vermelidir."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Oturumu kapat düğmesi tıklandığında çağrılacak komut. Bu komut basitçe "
+"herhangi bir etkileşim olmadan kullanıcının çıkmasını sağlar. Bu anahtar "
+"sadece \"logout_enable\" anahtarı TRUE yapıldığında etkiye sahiptir."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Ekran koruyucunun etkinleşmesinden sonra ekranın kilitlenmesine kadarki "
+"dakikaların sayısı."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Ekran koruyucu etkinleştikten sonra kilidi kaldırma penceresinde oturumu "
+"kapat seçeneğinin görünmesi için geçen dakikaların sayısı. Bu anahtar sadece "
+"\"logout_enable\" anahtarı TRUE yapıldığında etkiye sahiptir."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr ""
+"Oturum boş duran olarak değerlendirilmeden önce aktivite olmadan geçen "
+"dakikaların sayısı."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Ekran koruyucu temasını değiştirmeden önce geçen dakikaların sayısı."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Güç-yöneticisi'ne sinyal göndermeden önce aktif olunmayan saniyelerin "
+"sayısı. Bu anahtar güç-yöneticisi ajanının oturumu tarafından belirlenir ve "
+"sürdürülür."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Ekran koruyucu tarafından kullanılan seçim kipi. Ekran koruyucuyu "
+"etkinleştirmede herhangi bir tema kullanmamak için \"blank-only\", ekran "
+"koruyucuyu etkinleştirmede sadece bir tema kullanarak etkinleştirmek için "
+"( \"themes\" anahtarında belirtildiği gibi) \"single\", etkinleştirmede "
+"ekran koruyucunun rastgele bir tema kullanarak etkinleştirilmesi için "
+"\"random\" olabilir.  "
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Kilit penceresi için tema"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Kilit penceresi için kullanılacak tema."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Bu anahtar ekran koruyucu tarafından kullanılacak temaların listesini "
+"belirtir. \"mode\" anahtarı \"blank-only\" olduğu zaman bu yoksayılır, \"mode"
+"\" \"single\" olduğu zaman tema adı sağlanmalı ve \"mode\" \"random\" "
+"olduğunda temaların bir listesi sağlanmalı."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Kilitlemeden önceki zaman"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Çıkış seçeneğinden önceki zaman"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "power-management taban çizgisinden önceki zaman"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Oturum beklemede durumunda sayılmadan önceki zaman"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Tema değişiminden önceki zaman"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>%R için bir mesaj bırakın:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%h üzerinde %U</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "_Vazgeç"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "Mesaj _Bırak"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "_Çıkış"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Kullanıcı Değiştir"
+
+#: ../data/lock-dialog-default.glade.h:11 ../src/gs-lock-plug.c:1366
+msgid "_Unlock"
+msgstr "_Kilidi aç"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Kozmos"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Kozmosun resimlerini slayt gösterisi şeklinde göster"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "MATE ayak logosunu ekran etrafında dolandır"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Kayan Ayaklar"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Resim klasörünüzden bir slayt gösterisi göster"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Resim dizini"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Bir pop-art-ish nabız gibi atan renklerin ızgarası."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Pop art kareleri"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Görüntülerin izlediği yolları göster"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Bazen resimleri hareket ettikçe döndür"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Saniyedeki kare hızını ve diğer istatistikleri yazdır"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Ekranda tutulacak en fazla görüntü sayısı"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAK_GÖRÜNTÜLER"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Pencerenin ilk baştaki boyutu ve konumu"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "GENİŞLİKxYÜKSEKLİK+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Kullanılacak kaynak görüntü"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "görüntü - görüntüleri ekran boyunca kaydır"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Kullanım bilgisi için --help çıktısına bakınız.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Bir görüntü belirtmelisiniz.  Kullanım bilgisi için --help çıktısına "
+"bakınız.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Görüntülerin alınacağı konum"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "YOL"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Arkaplan görüntüleri için kullanılacak renk"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Resimleri konumdan rastgele hale getirme"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Ekrandaki görüntüleri esnetmeye çalışma"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Dosyalar kopyalanıyor"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Kimden:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Kime:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Temalar kopyalanıyor"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Geçersiz ekran koruyucu teması"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s geçerli bir ekran koruyucu teması gibi görünmüyor."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Dosya kopyalanıyor: %u / %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Ekran koruyucudan nazikçe çıkmasına sebep olur"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Ekran koruyucunun durumunu sorgula"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Ekran koruyucusunun etkin olduğu zamanı sorgula"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Çalışan ekran koruyucu sürecine ekranı hemen kilitlemesini söyle"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Eğer ekran koruyucu etkin ise başka bir grafik gösterimine geç"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Ekran koruyucuyu aç (ekranı boş bırak)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Eğer ekran koruyucu etkin ise etkinliğini kaldır (ekranı boş bırakma)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Kullanıcı aktivitesini taklit etmek için çalışan ekran koruyucuyu dürt"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Ekran koruyucunun etkinleşmesini engelle. Engelleme etkin iken komut bloke "
+"edilir."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Ekran koruyucuyu engelleyen çağrılan uygulama"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Ekran koruyucuya engel olmak için sebep"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Bu uygulamanın sürümü"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Ekran koruyucu %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "etkin"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "etkin değil"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Ekran koruyucu durdurulmamış\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Ekran koruyucuyu durduran:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Ekran koruyucu %d saniyedir etkin.\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "Hata ayıklama çıktısını göster"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "Çıkış düğmesini göster"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "Oturumu kapat düğmesinden çağrılacak komut"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "Kullanıcı değiştir düğmesini göster"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "Pencerede gösterilecek mesaj"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "MESAJ"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175 ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Kullanıcı adı:"
+
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Parola:"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Hemen parolanızı değiştirmeniz gerekiyor (parolanız eskidi)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Parolanızı hemen değiştirmeniz gerekiyor (root zorluyor)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Hesabınızın süresi dolmuş; lütfen sistem yöneticiniz ile temasa geçin"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "Bir parola sağlanmadı"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "Parola değişmedi"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Kullanıcı adı alınamıyor"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "Yeni UNIX parolanızı yeniden girin:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "Yeni UNIX parolanızı girin:"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "(şimdiki) UNIX parolanız:"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "NIS parolası değiştirilirken hata"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "Daha uzun bir parola seçmelisiniz"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "Parola kullanılmaktadır. Başka bir tane seçin."
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "Parolanızı değiştirmek için daha uzun beklemelisiniz"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "Üzgünüm, parolalar uyuşmuyor"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Kontrol ediyor..."
+
+#: ../src/mate-screensaver-dialog.c:301 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Kimlik kontrolü başarısız."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Boş ekran"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Rastgele"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d saat"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d dakika"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d saniye"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Asla"
+
+#: ../src/mate-screensaver-preferences.c:1453
+msgid "Could not load the main interface"
+msgstr "Ana arayüz yüklenemedi"
+
+#: ../src/mate-screensaver-preferences.c:1455
+msgid "Please make sure that the screensaver is properly installed"
+msgstr ""
+"Lütfen ekran koruyucusunun düzgün bir şekilde kurulmuş olduğundan emin olun"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Bir servis haline gelme"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Hata ayıklama kodunu etkinleştir"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Servis %s kurulamadı: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "PAM_TTY=%s yapılamadı"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Yanlış parola."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Şu an erişim kazanmaya izinli değil."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Sisteme erişimine artık izin verilmiyor."
+
+#: ../src/gs-listener-dbus.c:1847
+msgid "failed to register with the message bus"
+msgstr "mesaj veri yoluna kayıt başarısız"
+
+#: ../src/gs-listener-dbus.c:1857
+msgid "not connected to the message bus"
+msgstr "mesaj veri yoluna bağlı değil"
+
+#: ../src/gs-listener-dbus.c:1866
+msgid "screensaver already running in this session"
+msgstr "Bu oturumda ekran koruyucu zaten çalışmakta"
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "Süre doldu."
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr "Büyük harf kilidi tuşunuz açık."
+
+#: ../src/gs-lock-plug.c:1346
+msgid "S_witch User..."
+msgstr "K_ullanıcı Değiştir..."
+
+#: ../src/gs-lock-plug.c:1355
+msgid "Log _Out"
+msgstr "_Oturumu Kapat"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1531
+msgid "%U on %h"
+msgstr "%h üzerinde %U"
+
+#: ../src/gs-lock-plug.c:1545
+msgid "_Password:"
+msgstr "_Parola:"
+
+#~ msgid "Reason for being away"
+#~ msgstr "Uzakta olmak için sebep"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "Bilgisayardan uzak olmanız için sebep."
+
+#~ msgid "Copying '%s'"
+#~ msgstr "'%s' kopyalanıyor"
+
+#~ msgid "From URI"
+#~ msgstr "URI'den"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "Üzerinden aktarma yapılan URI"
+
+#~ msgid "To URI"
+#~ msgstr "URI'ye"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "Aktarma yapılan URI"
+
+#~ msgid "Fraction completed"
+#~ msgstr "Bölüm tamamlandı"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "Transfer bölümü şu anda tamamlandı"
+
+#~ msgid "Current URI index"
+#~ msgstr "Şimdiki URI dizini"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "Şimdiki URI dizini - 1'den başlar"
+
+#~ msgid "Total URIs"
+#~ msgstr "Toplan URI"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "Toplan URI sayısı"
+
+#~ msgid "Connecting..."
+#~ msgstr "Bağlanıyor..."
+
+#~ msgid "Time before activation"
+#~ msgstr "Etkinleştirmeden önceki zaman"
+
+#~ msgid "S_witch to user:"
+#~ msgstr "Kullanıcıya _geçiş yap:"
+
+#~ msgid "_Switch user..."
+#~ msgstr "_Kullanıcı değiştir..."
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "Manager"
+#~ msgstr "Yönetici"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "Bu nesneyi sahiplenen yönetici."
+
+#~ msgid "Name"
+#~ msgstr "Ad"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "Bu nesnenin işaret ettiği X11 ekranının adı."
+
+#~ msgid "User"
+#~ msgstr "Kullanıcı"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "Bu sanal terminale giriş yapmış şimdiki kullanıcı."
+
+#~ msgid "Console"
+#~ msgstr "Konsol"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr ""
+#~ "Bu görüntünün üzerinde bulunabileceği sanal terminallerin sayısı, veya %-"
+#~ "1."
+
+#~ msgid "Nested"
+#~ msgstr "İç içe"
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "Bu görüntünün pencereli (Xnest) bir görüntü olup olmayacağı."
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr ""
+#~ "Bilinmeyen sebeplerden ötürü ekran yöneticisi ile bağlantı kurulamadı."
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "Ekran yöneticisi çalışmıyor ya da çok eski."
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "Esnek sunucuların yapılandırılmış limitine ulaşıldı."
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "X başlatılırken bilinmeyen bir hata oldu."
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X sunucusu başlama işlemini tamamlamada başarısız oldu."
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "Çok fazla çalışan X oturumu var."
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr "İç içe X sunucusu (Xnest) mevcut X sunucunuza bağlanamıyor."
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "MDM yapılandırmasındaki X sunucusu bulunamadı."
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr ""
+#~ "Bilinmeyen bir oturum kapama eylemi , ya da ulaşılabilir bir olmayan bir "
+#~ "oturum kapama eylemi tanımlanmaya çalışılıyor."
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "Sanal terminaller desteklenmiyor."
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "Geçersiz sanal terminal numarası."
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "Desteklenmeyen bir yapılandırma anahtarı güncellemeye çalışılıyor."
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority dosyası kötü yapılandırılmış ya da kayıp."
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr ""
+#~ "Ekran yöneticisine çok fazla mesaj gönderildi, ve bu takılmasına sebep "
+#~ "oldu."
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "Ekran yöneticisi bilinmeyen bir hata mesajı gönderdi."
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "Bu menü ögesinin gösterdiği kullanıcı."
+
+#~ msgid "Icon Size"
+#~ msgstr "Simge Boyutu"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "Kullanılacak simgenin boyutu."
+
+#~ msgid "Indicator Size"
+#~ msgstr "Gösterge Boyutu"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "Kontrol göstergesinin boyutu"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "Gösterge Aralığı"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "Kullanıcı adı ve gösterge arasındaki boşluk"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "Bu kullanıcının yönetildiği kullanıcı yönetici nesnesi."
+
+#~ msgid "Show Details"
+#~ msgstr "Ayrıntıları göster"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (MATE Görüntü Yöneticisi) çalışmıyor."
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "Aslında KDM (KDE Ekran Yöneticisi) ya da xdm gibi başka bir ekran "
+#~ "yöneticisi kullanıyor olabilirsiniz."
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr ""
+#~ "Eğer hala bu özelliği kullanmak istiyorsanız, MDM'yi kendiniz "
+#~ "başlatabilir ya da sistem yöneticinizden başlatmasını isteyebilirsiniz. "
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "MDM ile bağlantı kurulamıyor (MATE Ekran Yöneticisi)"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "Belki de eski bir MDM sürümü çalıştırıyorsunuz."
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr ""
+#~ "mdm ile bağlantı kurulamıyor, belki de eski bir sürümü çalıştırıyorsunuz."
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "İzin verilen esnek X sunucusu sayısına ulaşıldı."
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "X sunucusu başlatılmaya çalışılırken hatalar oluştu."
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "X sunucusu başarısız oldu. İyi yapılandırılmamış olabilir."
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "Çok fazla X oturumu çalışıyor."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr ""
+#~ "İç içe X sunucusu (Xnest) şimdiki X sunucunuza bağlanamıyor. Bir X "
+#~ "yetkilendirme dosyasını atlıyor olabilirsiniz."
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "İç içe X sunucusu (Xnest) ulaşılabilir değil, ya da mdm kötü "
+#~ "yapılandırılmış.\n"
+#~ "Lütfen iç içe oturum açmayı kullanmak için Xnest paketini kurun."
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr ""
+#~ "X sunucusu ulaşılabilir değil, muhtemelen mdm kötü yapılandırılmıştır."
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "Geçersiz bir sanal terminal numarasına değiştirmeye çalışıyor."
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "Bu işlem için kimlik denetimine ihtiyacınız yok gibi görünüyor. ."
+#~ "Xauthority dosyanız düzgün ayarlanmamış olabilir."
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr ""
+#~ "Çok fazla mesaj gönderildiği için mdm'de bir tıkanıklık meydana geldi."
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "Bilinmeyen hata oluştu."
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 0000000..1a8fc78
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,771 @@
+# Ukrainian translation of mate-screensaver
+# Copyright (C) 2005 Free Software Foundation
+# This file is distributed under the same license as the mate-screensaver package.
+# Maxim Dziumanenko <dziumanenko at gmail.com>, 2005-2008.
+#
+# wanderlust <wanderlust at ukr.net>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-17 14:29+0300\n"
+"PO-Revision-Date: 2009-09-08 10:24+0300\n"
+"Last-Translator: Maxim Dziumanenko <dziumanenko at gmail.com>\n"
+"Language-Team: ukrainian <Ukrainian <uk at li.org>>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "Збереження екрану"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Встановити параметри збереження екрану"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Попередній перегляд збереження екрану</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr ""
+"<b>Попередження: екран буде заблокований, розблокувати зможе користувач root."
+"</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "Керування _живленням"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Вважати сеанс _неактивним через:"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "Параметри збереження екрану"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "Попередній перегляд збереження екрану"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Активувати збереження екрану, коли комп'ютер простоює"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Блокувати екран, коли збереження екрану активно"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "_Попередній перегляд"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "_Тема збереження екрану:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Теми збереження екрану"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Заставки екрану"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Активувати при простої"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Дозволити вбудовування клавіатури у вікно"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Дозволити вихід з сеансу"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Дозволити відображення повідомлення стану сесії"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr ""
+"Дозволити відображення повідомлення стану сесії при заблокованому екрані."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Дозволити зміну користувачів"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Команда вбудованої клавіатури"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Блокувати екран"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Команда виходу з сеансу"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Режим вибору заставки екрану"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr ""
+"Якщо має значення TRUE, збереження екрану буде блокувати екран коли сеанс "
+"простоює."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"Встановіть значення TRUE, щоб дозволити вбудовування клавіатури у вікно при "
+"робзблокуванні. Відповідна команда вказується ключем \"keyboard_command\"."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Якщо має значення TRUE, збереження екрану буде блокувати екран."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"Якщо встановлено значення TRUE, діалог розблокування екрану надасть "
+"можливість  увійти в систему під іншою назвою."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"Якщо встановлено значення TRUE, до діалогу розблокування екрану буде додано "
+"можливість виходу з системи через визначений інтервал. Інтервал виходу з "
+"системи визначається ключем \"logout_delay\"."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"Команда, яка буде запущена, якщо ключ \"embedded_keyboard_enabled\" має "
+"значення TRUE, для вбудовування клавіатури у вікно. Ця команда повинна "
+"реалізовувати інтерфейс модулів XEMBED та виводити XID вікна на стандартний "
+"вивід."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"Команда, що викликається при натисканні кнопки виходу з сеансу. Ця команда "
+"має просто завершувати сеанс користувача без будь-якої інтерактивної "
+"взаємодії. Ключ має сенс лише у випадку, якщо встановлено значення TRUE "
+"ключа \"logout_enable\"."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr ""
+"Кількість хвилин після активації збереження екрану, по закінченню яких екран "
+"буде заблоковано."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"Інтервал у хвилинах між активацією збереження  екрану та появою параметра "
+"виходу з сеансу в діалозі розблокування. Цей ключ має дію лише у випадку, "
+"якщо встановлено значення TRUE ключа \"logout_enable\"."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "Інтервал часу, по закінченню якого сеанс вважається простоєм."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Інтервал між змінами тем збереження екрану."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"Період неактивності перед передачі сигналу менеджеру живленням. Цей ключ "
+"встановлюється та змінюється агентом менеджера живлення."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"Режим вибору, що використовується збереження екрану. Можливі варіанти: "
+"\"disabled\" - вимкнений, \"blank-only\" - чорний екран, \"single\" - "
+"використовувати одну тему, що вказана у ключі \"themes\", \"random\" - "
+"використовувати довільну тему при активації."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Тема для діалогового вікна блокування"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Тема, що використовується для діалогового вікна блокування екрану."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"Ключ визначає список тем, що використовуються збереженням екрану. Він "
+"ігнорується, коли ключ \"mode\" встановлено у \"disabled\" або \"blank-only"
+"\", повинен представляти назву однієї теми, якщо ключ \"mode\" встановлено у "
+"\"single\", або список тем, якщо ключ \"mode\" встановлено у \"random\"."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Інтервал блокування"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Інтервал параметру виходу з системи"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Інтервал до базису керування живленням"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Інтервал часу, після якого сеанс вважається неактивним."
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Інтервал зміни теми"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Повідомлення при перерві для %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U на %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "_Скасувати"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "_Повідомлення при перерві"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "_Завершити сеанс"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "_Змінити користувача"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "_Розблокувати"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Космос"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Показує слайд-шоу космічних рисунків"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Ступні, що спливають по усьому екрану"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Плаваючі ступні"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Показує слайд-шоу зображень з теки малюнків"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Тека малюнків"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Мережа з пульсуючих кольорових комірок."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Пульсуючі комірки"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Показувати шляхи, за якими слідують зображення"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Періодично обертати зображення при їх переміщенні"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "Виводити частоту кадрів та іншу статистику"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Максимальна кількість зображень на екрані"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Початковий розмір та положення вікна"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "ШИРИНАxВИСОТА+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Зображення, що використовується"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - зображення, що плавають по екрану"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s. Для докладнішої інформації вкажіть --help.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr ""
+"Слід вказати один рисунок. Для докладнішої інформації вкажіть --help.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Місце, де знаходяться зображення"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ШЛЯХ"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Колір, що використовується для тла"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Не змінювати розташування зображень на випадкове"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Не намагатись розтягувати зображення на екрані"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Копіювання файлів"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "З:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "До:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Копіювання тем"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Неправильна тема програми збереження екрану"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Файл %s не схожий на файл теми збереження екрану."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Копіюється файл: %u of %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Призводить до виходу збереження екрану"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Запитує стан збереження екрану"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Запитати інтервал часу, протягом якого було активне зберігання екрану"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Вказує запущеному процесу збереження екрану негайно заблокувати екран"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Якщо збереження екрану активне, змінити заставку"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Увімкнути збереження екрану (погасити екран)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Якщо збереження екрану активне, деактивувати його (відновити екран)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr ""
+"Штовхнути запущений збереження екрану для імітації активності користувача"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr ""
+"Затримувати активацію збереження екрану. Команда блокує при активації "
+"затримки."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Виклик програми, яка затримує збереження екрану"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Причина для затримки збереження екрану"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Версія програми"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Збереження екрану: %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "активне"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "неактивне"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Збереження екрану не стримується\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Збереження екрану стримується:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Збереження екрану було активне протягом %d секунд.\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "Збереження екрану наразі не активовано\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "Показувати вивід налагодження"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "Показати кнопку виходу"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "Команда, що виконується при натисканні кнопки виходу"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "Відображати кнопку зміни користувача"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "Повідомлення, що виводиться у діалоговому вікні"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "ПОВІДОМЛЕННЯ"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "Не використовується'"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Користувач:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Пароль:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Слід негайно змінити ваш пароль (пароль старий)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Слід негайно змінити ваш пароль (за вимогою адміністратора)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Ваш обліковий запис застарів, зв'яжіться з системним адміністратором"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "Не вказано пароль"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "Пароль не змінено"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "Не вдається отримати ім'я користувача"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "Повторіть новий пароль UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "Введіть новий пароль UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(поточний) пароль UNIX:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "Помилка при зміні паролю NIS."
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "Слід вибрати більш довгий пароль"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "Пароль вже використовувався. Виберіть інший пароль."
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "Слід довше почекати щоб змінити ваш пароль"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "Паролі не збігаються"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "Перевірка..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Помилка аутентифікації."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Порожній екран"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Випадкова"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d година"
+msgstr[1] "%d години"
+msgstr[2] "%d годин"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d хвилина"
+msgstr[1] "%d хвилини"
+msgstr[2] "%d хвилин"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d секунда"
+msgstr[1] "%d секунди"
+msgstr[2] "%d секунд"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s·%s·%s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s·%s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Ніколи"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "Не вдається завантажити головний інтерфейс"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Переконайтесь, що програму збереження екрану правильно встановлено"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Не становитись службою"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Увімкнути режим налагодження"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "Програма запуску збереження екрану та блокування"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Не вдається встановити службу %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Не вдається встановити PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Некоректний пароль."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Отримання доступу у цей час заборонено."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Більше немає дозволу на доступ до системи."
+
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "не вдається зареєструватись через шину повідомлень"
+
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "не вдається зареєструватись на шині повідомлень"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "у цьому сеансі вже запущено збереження екрану"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "Час вийшов."
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "Натиснута клавіша Caps Lock."
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "_Змінити користувача..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "_Завершити сеанс"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U на %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "_Пароль:"
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 0000000..3ce7294
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,691 @@
+# Vietnamese translation for MATE Screensaver.
+# Copyright © 2009 MATE i18n Project for Vietnamese.
+# Clytie Siddall <clytie at riverland.net.au>, 2005-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver MATE TRUNK\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-screensaver&component=general\n"
+"POT-Creation-Date: 2009-01-20 05:58+0000\n"
+"PO-Revision-Date: 2009-02-06 23:33+0930\n"
+"Last-Translator: Clytie Siddall <clytie at riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN at googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.8\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+msgid "Screensaver"
+msgstr "Bộ bảo vệ màn hình"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "Lập các tùy thích cho trình bảo vệ màn hình"
+
+#: ../data/mate-screensaver-preferences.glade.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>Xem thử ảnh bảo vệ màn hình</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>Cảnh báo : màn hình sẽ không bị khoá cho người dùng chủ (root).</b>"
+
+#: ../data/mate-screensaver-preferences.glade.h:3
+msgid "Power _Management"
+msgstr "_Quản lý điện năng"
+
+#: ../data/mate-screensaver-preferences.glade.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "Co_i như máy tính nghỉ sau :"
+
+#: ../data/mate-screensaver-preferences.glade.h:5
+msgid "Screensaver Preferences"
+msgstr "Tùy thích Bộ bảo vệ màn hình"
+
+#: ../data/mate-screensaver-preferences.glade.h:6
+msgid "Screensaver Preview"
+msgstr "Xem thử ảnh bảo vệ màn hình"
+
+#: ../data/mate-screensaver-preferences.glade.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "_Hoạt hoá bộ bảo vệ màn hình khi máy tính mới nghỉ"
+
+#: ../data/mate-screensaver-preferences.glade.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "_Khoá màn hình khi bộ bảo vệ màn hình hoạt động"
+
+#: ../data/mate-screensaver-preferences.glade.h:9
+msgid "_Preview"
+msgstr "_Xem thử"
+
+#: ../data/mate-screensaver-preferences.glade.h:10
+msgid "_Screensaver theme:"
+msgstr "_Sắc thái của ảnh bảo vệ màn hình:"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "Sắc thái của ảnh bảo vệ màn hình"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "Ảnh bảo vệ màn hình"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "Kích hoạt khi nghỉ"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "Cho phép nhúng bàn phím trong cửa sổ"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "Cho phép đăng xuất"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "Cho phép hiển thị thông điệp về trạng thái phiên chạy"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid "Allow the session status message to be displayed when the screen is locked."
+msgstr "Cho phép hiển thị thông điệp về trạng thái phiên chạy khi màn hình bị khoá."
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "Cho phép chuyển đổi người dùng"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "Lệnh bàn phím nhúng"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "Khoá khi mới hoạt động"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "Lệnh đăng xuất"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "Chế độ lựa chọn sắc thái bảo vệ màn hình"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "Đặt giá trị này là TRUE (đúng) để hoạt hoá bộ bảo vệ màn hình khi phiên chạy nghỉ."
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid "Set this to TRUE to allow embedding a keyboard into the window when trying to unlock. The \"keyboard_command\" key must be set with the appropriate command."
+msgstr "Đặt là ĐÚNG (true) để cho phép nhúng bàn phím trong cửa sổ khi thử mở khoá. Khoá « keyboard_command » phải được đặt bằng lệnh thích hợp."
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "Đặt giá trị này là TRUE (đúng) để khoá màn hình khi bộ bảo vệ màn hình mới hoạt động."
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid "Set this to TRUE to offer an option in the unlock dialog to switch to a different user account."
+msgstr "Đặt giá trị này là TRUE (đúng) để cung cấp trong hộp thoại bỏ khoá tùy chọn chuyển đổi sang tài khoản người dùng khác."
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid "Set this to TRUE to offer an option in unlock dialog to logging out after a delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "Đặt giá trị này là TRUE (đúng) để cung cấp trong hộp thoại bỏ khoá tùy chọn đăng xuất sau khi trễ. Sự trễ được ghi rõ trong khoá « logout_delay » (sự trễ đăng xuất)."
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid "The command that will be run, if the \"embedded_keyboard_enabled\" key is set to TRUE, to embed a keyboard widget into the window. This command should implement an XEMBED plug interface and output a window XID on the standard output."
+msgstr "Lệnh sẽ được chạy, nếu khoá « embedded_keyboard_enabled » được đặt là ĐÚNG (true), để nhúng ô điều khiển bàn phím trong cửa sổ. Lệnh này nên thực hiện một giao diện nút XEMBED và xuất một XID cửa sổ ra thiết bị xuất chuẩn."
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid "The command to invoke when the logout button is clicked. This command should simply log the user out without any interaction. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Lệnh cần chạy khi cái nút đăng xuất được bấm. Lệnh này nên đơn giản đăng xuất người dùng, không tương tác gì. Khoá này có tác động chỉ nếu khoá « logout_enable » được đặt là ĐÚNG (true)."
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid "The number of minutes after screensaver activation before locking the screen."
+msgstr "Số phút sau khi bộ bảo vệ màn hình mới hoạt động, trước khi khoá màn hình."
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid "The number of minutes after the screensaver activation before a logout option will appear in unlock dialog. This key has effect only if the \"logout_enable\" key is set to TRUE."
+msgstr "Số phút sau khi bộ bảo vệ màn hình mới hoạt động, trước khi tùy chọn đăng xuất được hiển thị trong hộp thoại bỏ khoá. Khoá này có tác động chỉ nếu khoá « logout_enable » (bật đăng xuất) được đặt là TRUE (đúng)."
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid "The number of minutes of inactivity before the session is considered idle."
+msgstr "Số phút không dùng trước khi phiên chạy được xem là nghỉ."
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "Bao nhiêu phút cần chạy trước khi thay đổi sắc thái ảnh bảo vệ màn hình."
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid "The number of seconds of inactivity before signalling to power-management. This key is set and maintained by the session power-management agent."
+msgstr "Số giây nghỉ trước khi gửi tín hiệu cho chức năng quản lý điện năng. Khoá này được đặt và bảo tồn bởi tác nhân quản lý điện năng của phiên chạy đó."
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid "The selection mode used by screensaver. May be \"blank-only\" to enable the screensaver without using any theme on activation, \"single\" to enable screensaver using only one theme on activation (specified in \"themes\" key), and \"random\" to enable the screensaver using a random theme on activation."
+msgstr ""
+"Chế độ lựa chọn được dùng bởi bộ bảo vệ màn hình. Chế độ có thể:\n"
+" • blank-only (chỉ trắng) để bật chạy bộ bảo vệ màn hình mà không dùng sắc thái nào khi mới hoạt động\n"
+" • single (đơn) để bật chạy bộ bảo vệ màn hình mà dùng chỉ một sắc thái khi mới hoạt động thôi (được ghi rõ trong khoá « themes » (sắc thái)\n"
+" • random (ngẫu nhiên) để bật chạy bộ bảo vệ màn hình mà dùng sắc thái ngẫu nhiên khi mới hoạt động."
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "Sắc thái cho hộp thoại khoá"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "Sắc thái cần dùng cho hộp thoại khoá."
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid "This key specifies the list of themes to be used by the screensaver. It's ignored when \"mode\" key is \"blank-only\", should provide the theme name when \"mode\" is \"single\", and should provide a list of themes when \"mode\" is \"random\"."
+msgstr ""
+"Khoá này ghi rõ danh sách các sắc thái cho bộ bảo vệ màn hình dùng. Nó\n"
+" • bị bỏ qua khi khoá « mode » (chế độ) chỉ trắng (« blank only »)\n"
+" • nên cung cấp tên sắc thái khi « mode » (chế độ) là đơn (« single »)\n"
+" • nên cung cấp danh sách các sắc thái khi « mode » (chế độ) là ngẫu nhiên (« random »)."
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "Thời gian trước khi khoá"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "Thời gian trước khi nhận tùy chọn đăng xuất"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "Thời gian trước đường cơ bản quản lý điện năng"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "Thời gian trước khi phiên chạy được xem là nghỉ"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "Thời gian trước khi thay đổi sắc thái"
+
+#: ../data/lock-dialog-default.glade.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>Lời nhắn cho %R:</b>"
+
+#: ../data/lock-dialog-default.glade.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U trên %h</span>"
+
+#: ../data/lock-dialog-default.glade.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.glade.h:7
+msgid "_Cancel"
+msgstr "Th_ôi"
+
+#: ../data/lock-dialog-default.glade.h:8
+msgid "_Leave Message"
+msgstr "Để lại _lời nhắn"
+
+#: ../data/lock-dialog-default.glade.h:9
+msgid "_Log Out"
+msgstr "Đăng _xuất"
+
+#: ../data/lock-dialog-default.glade.h:10
+msgid "_Switch User"
+msgstr "_Chuyển đổi người dùng"
+
+#: ../data/lock-dialog-default.glade.h:11
+#: ../src/gs-lock-plug.c:1366
+msgid "_Unlock"
+msgstr "_Bỏ khoá"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "Vũ trụ"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "Hiển thị trình diễn các ảnh của vũ trụ"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "Thổi bong bóng biểu tượng chân MATE chung quanh màn hình"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "Chân nổi"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "Hiển thị trình diễn các ảnh từ thư mục Ảnh (Pictures) của bạn"
+
+# 48x48/emblems/emblem-pictures.icon.in.h:1
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "Thư mục Ảnh"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "Vẽ lưới các màu đập kiểu dáng nghệ thuật phổ biến."
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "Vuông nghệ thuật phổ biến"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "Hiển thị các đường dẫn mà ảnh theo"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "Thỉnh thoảng quay ảnh trong khi di chuyển"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "In ra tỷ lệ khung và thống kê khác"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "Số ảnh tối đa cần giữ trên màn hình"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "Kích cỡ và vị trí đầu tiên của cửa sổ"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "RỘNGxCAO+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "Ảnh nguồn cần dùng"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - làm nổi ảnh ở chung quanh màn hình"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s: Hãy chạy lệnh « --help » (trợ giúp) để xem thông tin về cách sử dụng.\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "Bạn phải ghi rõ một ảnh. Hãy chạy lệnh « --help » (trợ giúp) để xem thông tin về cách sử dụng.\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "Địa điểm nơi cần lấy ảnh"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "ĐƯỜNG DẪN"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "Màu cần dùng để đặt nền của ảnh"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "Đừng ngẫu nhiên hoá các ảnh từ địa điểm"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "Đừng thử kéo giãn ảnh trên màn hình"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "Đang sao chép tập tin"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "Từ:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "Đến:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "Đang sao chép các sắc thái"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "Sắc thái bảo vệ màn hình không hợp lệ"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "Có vẻ là %s không phải là một sắc thái bảo vệ màn hình hợp lệ."
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "Đang sao chép tập tin: %u trên %u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "Làm cho bộ bảo vệ màn hình thoát cho đúng"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "Truy vấn tính trạng của bộ bảo vệ màn hình"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "Truy vấn khoảng thời gian hoạt động của bộ bảo vệ màn hình"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "Báo tiến trình bảo vệ màn hình đang chạy phải khoá ngay màn hình"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "Nếu bộ bảo vệ màn hình có hoạt động thì chuyển đổi sang một chứng minh đồ họa khác"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "Khởi chạy bộ bảo vệ màn hình (làm trắng màn hình)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "Nếu bộ bảo vệ màn hình có hoạt động thì tắt nó (bỏ trắng màn hình)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "Thức bộ bảo vệ màn hình đang chạy, để mô phỏng hoạt động của người dùng"
+
+#: ../src/mate-screensaver-command.c:78
+msgid "Inhibit the screensaver from activating.  Command blocks while inhibit is active."
+msgstr "Ngăn chặn bộ bảo vệ màn hình kích hoạt. Lệnh chặn trong khi khả năng ngăn chặn còn hoạt động."
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "Ứng dụng gọi mà ngăn chặn bộ bảo vệ màn hình"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "Lý do ngăn chặn bộ bảo vệ màn hình"
+
+#: ../src/mate-screensaver-command.c:84
+#: ../src/mate-screensaver-dialog.c:57
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "Phiên bản ứng dụng này"
+
+#: ../src/mate-screensaver-command.c:307
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "Bộ bảo vệ màn hình là %s\n"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "active"
+msgstr "hoạt động"
+
+#: ../src/mate-screensaver-command.c:307
+msgid "inactive"
+msgstr "không hoạt động"
+
+#: ../src/mate-screensaver-command.c:321
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "Bộ bảo vệ màn hình không phải bị thu hồi\n"
+
+#: ../src/mate-screensaver-command.c:327
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "Bộ bảo vệ màn hình đang bị thu hồi bởi:\n"
+
+#: ../src/mate-screensaver-command.c:358
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "Bộ bảo vệ màn hình đã hoạt động trong vòng %d giây.\n"
+
+#: ../src/mate-screensaver-dialog.c:55
+msgid "Show debugging output"
+msgstr "Hiện dữ liệu xuất gỡ lỗi"
+
+#: ../src/mate-screensaver-dialog.c:59
+msgid "Show the logout button"
+msgstr "Hiện cái nút đăng xuất"
+
+#: ../src/mate-screensaver-dialog.c:61
+msgid "Command to invoke from the logout button"
+msgstr "Lệnh cần chạy từ cái nút đăng xuất"
+
+#: ../src/mate-screensaver-dialog.c:63
+msgid "Show the switch user button"
+msgstr "Hiện cái nút chuyển đổi người dùng"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "Message to show in the dialog"
+msgstr "Thông điệp cần hiển thị trong hộp thoại"
+
+#: ../src/mate-screensaver-dialog.c:65
+msgid "MESSAGE"
+msgstr "THÔNG ĐIỆP"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:175
+#: ../src/mate-screensaver-dialog.c:176
+#: ../src/mate-screensaver-dialog.c:177
+#: ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "Tên người dùng:"
+
+#: ../src/mate-screensaver-dialog.c:178
+#: ../src/mate-screensaver-dialog.c:179
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "Mật khẩu :"
+
+#: ../src/mate-screensaver-dialog.c:180
+msgid "You are required to change your password immediately (password aged)"
+msgstr "Bạn phải thay đổi ngay mật khẩu (mật khẩu quá cũ)"
+
+#: ../src/mate-screensaver-dialog.c:181
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "Bạn phải thay đổi ngay mật khẩu (người chủ ép buộc)"
+
+#: ../src/mate-screensaver-dialog.c:182
+msgid "Your account has expired; please contact your system administrator"
+msgstr "Tài khoản của bạn đã hết hạn dùng: hãy liên lạc với nhà quản trị hệ thống"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "No password supplied"
+msgstr "Chưa cung cấp mật khẩu"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "Password unchanged"
+msgstr "Chưa thay đổi mật khẩu"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Can not get username"
+msgstr "Không thể lấy tên người dùng"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "Retype new UNIX password:"
+msgstr "Gõ lại mật khẩu UNIX mới:"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Enter new UNIX password:"
+msgstr "Nhập mật khẩu UNIX mới:"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "(current) UNIX password:"
+msgstr "Mật khẩu UNIX (hiện có):"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Error while changing NIS password."
+msgstr "Gặp lỗi khi thay đổi mật khẩu NIS."
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "You must choose a longer password"
+msgstr "Bạn phải chọn mật khẩu dài hơn"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "Password has been already used. Choose another."
+msgstr "Mật khẩu đã được dùng. Hãy chọn mật khẩu khác."
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "You must wait longer to change your password"
+msgstr "Bạn phải đợi thêm nữa, để thay đổi mật khẩu"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "Sorry, passwords do not match"
+msgstr "Tiếc là hai mật khẩu không trùng"
+
+#: ../src/mate-screensaver-dialog.c:259
+msgid "Checking..."
+msgstr "Đang kiểm tra..."
+
+#: ../src/mate-screensaver-dialog.c:301
+#: ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "Lỗi xác thực."
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "Màn hình trắng"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "Ngẫu nhiên"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d giờ"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d phút"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d giây"
+
+# Variable: don't translate / Biến: đừng dịch
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "Không bao giờ"
+
+#: ../src/mate-screensaver-preferences.c:1453
+msgid "Could not load the main interface"
+msgstr "Không thể tải giao diện chính"
+
+#: ../src/mate-screensaver-preferences.c:1455
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "Hãy chắc là bộ bảo vệ màn hình được cài đặt đúng"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "Đừng chạy trong nền"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "Bật chạy mã gỡ lỗi"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "Không thể thiết lập dịch vụ %s: %s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "Không thể đặt « PAM_TTY=%s »"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "Mật khẩu không đúng."
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "Không cho phép truy cập vào lúc này."
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "Không còn có quyền truy cập lại hệ thống."
+
+#: ../src/gs-listener-dbus.c:1847
+msgid "failed to register with the message bus"
+msgstr "việc đăng ký với mạch nối thông điệp bị lỗi"
+
+#: ../src/gs-listener-dbus.c:1857
+msgid "not connected to the message bus"
+msgstr "chưa kết nối đến mạch nối thông điệp"
+
+#: ../src/gs-listener-dbus.c:1866
+msgid "screensaver already running in this session"
+msgstr "bộ bảo vệ màn hình đang chạy trong phiên làm việc này"
+
+#: ../src/gs-lock-plug.c:271
+msgid "Time has expired."
+msgstr "Quá giờ."
+
+#: ../src/gs-lock-plug.c:299
+msgid "You have the Caps Lock key on."
+msgstr "Bạn đã bật phím Khoá Chữ Hoa (CapsLock)."
+
+#: ../src/gs-lock-plug.c:1346
+msgid "S_witch User..."
+msgstr "_Chuyển đổi người dùng..."
+
+#: ../src/gs-lock-plug.c:1355
+msgid "Log _Out"
+msgstr "Đăng _xuất"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1531
+msgid "%U on %h"
+msgstr "%U trên %h"
+
+#: ../src/gs-lock-plug.c:1545
+msgid "_Password:"
+msgstr "_Mật khẩu :"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..ea2aff3
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,790 @@
+# zh_CN translation of mate-screensaver.
+# Copyright (C) 2009 THE mate-screensaver'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the mate-screensaver package.
+# Funda Wang <fundawang at linux.net.cn>, 2005.
+# Yang Zhang <zyangmath at gmail.com>, 2009.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver HEAD\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mate-"
+"screensaver&component=general\n"
+"POT-Creation-Date: 2009-11-12 10:52+0000\n"
+"PO-Revision-Date: 2009-11-29 10:19+0100\n"
+"Last-Translator: Tao Wei <weitao1979 at gmail.com>\n"
+"Language-Team: Chinese/Simplified <i18n-zh at googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "屏幕保护程序"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "设定您的屏幕保护程序首选项"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>屏幕保护程序预览</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>警告:屏幕锁定对 root 用户无效。</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "电源管理(_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "于此时间后视计算机为空闲(_I):"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "屏幕保护程序首选项"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "屏幕保护程序预览"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "计算机空闲时激活屏幕保护程序(_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "屏幕保护程序激活时锁定屏幕(_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "预览(_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "屏幕保护程序主题(_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "屏幕保护程序主题"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "屏幕保护程序"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "空闲时激活"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "允许在窗口中嵌入键盘"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "允许注销"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "允许显示会话状态消息"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "当屏幕被锁时允许显示会话状态消息。"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "允许用户切换"
+
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "嵌入键盘命令"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "激活时锁定"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "注销命令"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "屏幕保护程序主题选择模式"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "将此值设定为 TRUE 以在会话空闲时激活屏幕保护程序。"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"将此值设定为 TRUE 将在用户解除锁定时的窗口中嵌入键盘。“keyboard_command”键必"
+"须设定为适当的命令。"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "将此值设定为 TRUE 可在屏幕保护程序激活时锁定屏幕。"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr ""
+"将此值设定为 TRUE 将在解除锁定对话框中提供一个选项来切换到不同的用户帐户。"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"将此值设定为 TRUE 可在解除锁定对话框中提供一个选项来在一定延时后注销。该延时"
+"由“logout_delay”键指定。"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"用以在窗口中嵌入键盘部件的命令,当“embedded_keyboard_enabled”键被设定为 TRUE "
+"时有效。该命令应当实现一个 XEMBED 插件接口并输出窗口 XID 到标准输出。"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"单击注销按钮调用的命令。该命令应当简单地将用户注销而不需要用户参与。本键仅"
+"当“logout_enable”键被设定为 TRUE 时有效。"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "屏幕保护程序激活后锁定屏幕之前等待的时间。"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"屏幕保护程序激活后注销选项出现在解除锁定对话框之前等待的时间。本键仅当 "
+"“logout_enable”键被设定为 TRUE 时有效。"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "会话在被视为空闲之前的非活动分钟数。"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "改变屏幕保护程序主题之前运行的分钟数。"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"向电源管理程序发送信号前非活动的秒钟数。本键由会话的电源管理代理设定并维护。"
+
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"屏幕保护程序选择主题的方式。可供选择的值有:“blank-only”,代表启用屏幕保护程"
+"序且激活后不使用任何主题;“single”,代表启用屏幕保护程序且激活后只使用一个主"
+"题(由“themes”键指定);“random”,代表启用屏幕保护程序且激活后使用随机主题。"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "锁定对话框主题"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "锁定对话框使用的主题。"
+
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"本键指定屏幕保护程序使用的主题列表。它在“mode”键值为“blank-only”时将被忽略;"
+"在“mode”键值为“single”时应当提供一个主题名;在“mode”键值为“random”时应当提供"
+"一个主题列表。"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "锁定等待时间"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "注销选项等待时间"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "电源管理基准等待时间"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "会话被视为空闲前等待时间"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "主题改变前等待时间"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>为 %R 留言:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%h 上的 %U</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "取消(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "留言(_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "注销(_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "切换用户(_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "解锁(_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "宇宙"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "显示一组宇宙图片的幻灯片"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "在屏幕上如泡泡一样浮动 MATE 脚徽标"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "浮动的脚"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "显示您图片文件夹中图片的幻灯片"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "图片文件夹"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "一个由跳动的颜色组成的流行艺术栅格"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "流行艺术方块"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "显示图片跟随的路径"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "图片移动过程中不时旋转"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "打印帧率和其它统计数据"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "屏幕上保留的图片的最大数目"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "窗口的初始大小和位置"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "宽度x高度+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "待使用的源图片"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "image - 在屏幕上浮动图片"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s。参见 --help 以获得用法信息。\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "您必须指定一幅图片。参见 --help 以获得用法信息。\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "获取图片的位置"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "路径"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "图片背景使用的颜色"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "不随机放置图片"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "不在屏幕上伸展图片"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "正在复制文件"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "从:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "到:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "正在复制主题"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "无效的屏幕保护程序主题"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s 似乎不是有效的屏幕保护程序主题。"
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "正复制文件:第%u个,共%u个"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "使屏幕保护程序正常退出"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "查询屏幕保护程序的状态"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "查询屏幕保护程序已经活动的时间"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "通知正在运行的屏幕保护程序进程立即锁定屏幕"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "如果屏幕保护程序正活动则切换到其它图像演示"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "开启屏幕保护程序(黑屏)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "如果屏幕保护程序正活动则使之不活动(解除黑屏)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "发送信息到正在运行的屏幕保护程序以模拟用户活动"
+
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "禁止屏幕保护程序激活。启动后其它命令将被阻塞。"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "正在禁用屏幕保护程序的应用程序"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "禁用屏幕保护程序的原因"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "此应用程序的版本"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "屏幕保护程序为 %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "激活"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "未激活"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "屏幕保护程序未被阻止\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "屏幕保护程序被阻止:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "屏幕保护程序已运行 %d 秒。\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "屏幕保护当前没有激活。\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "显示调试输出"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "显示注销按钮"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "注销按钮所调用的命令"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "显示切换用户按钮"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "在对话框中显示的消息"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "没有使用"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "用户名:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "密码:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "您必须立即更改您的密码(密码到期)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "您必须立即更改您的密码(root 强制)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "您的帐户已过期;请联系您的系统管理员"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "没有提供密码"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "密码未改变"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "无法获取用户名"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "重新输入新 UNIX 密码:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "输入新 UNIX 密码:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "当前 UNIX 密码:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "更改 NIS 密码出错。"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "你必须选择一个更长些的密码"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "密码已经被使用。请重新选择。"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "您必须等待更久以修改您的密码"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "对不起,密码不匹配"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "正在检查..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "验证失败。"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "黑屏幕"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "随机"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d 小时"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d 分钟"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d 秒"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "从不"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "无法装入主界面"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "请确定屏幕保护程序已经正确安装"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "不成为守护进程"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "启用调试代码"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "加载屏幕保护并锁定程序"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "无法建立服务 %s:%s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "不能设置 PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "密码不正确。"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "目前不允许获得访问。"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "不再允许访问系统。"
+
+#: ../src/gs-listener-dbus.c:1912
+msgid "failed to register with the message bus"
+msgstr "注册到消息总线失败"
+
+#: ../src/gs-listener-dbus.c:1922
+msgid "not connected to the message bus"
+msgstr "未连接到消息总线"
+
+#: ../src/gs-listener-dbus.c:1931
+msgid "screensaver already running in this session"
+msgstr "本会话中屏幕保护程序已经运行"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "时间已到。"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "您打开了 Caps Lock 键。"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "切换用户(_W)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "注销(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%h 上的 %U"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "密码(_P):"
+
+#~ msgid "Reason for being away"
+#~ msgstr "离开的原因"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "离开计算机的原因。"
+
+#~ msgid "Copying '%s'"
+#~ msgstr "正复制“%s”"
+
+#~ msgid "From URI"
+#~ msgstr "从 URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "当前传输的源 URI"
+
+#~ msgid "To URI"
+#~ msgstr "到 URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "当前传输的目的 URI"
+
+#~ msgid "Fraction completed"
+#~ msgstr "完成比例"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "当前完成的传输的比例"
+
+#~ msgid "Current URI index"
+#~ msgstr "当前 URI 索引"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "当前 URI 索引 - 从1开始"
+
+#~ msgid "Total URIs"
+#~ msgstr "总计 URI"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "URI 总数"
+
+#~ msgid "Connecting..."
+#~ msgstr "正在连接..."
+
+#~ msgid "N"
+#~ msgstr "N"
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100644
index 0000000..8cf9b41
--- /dev/null
+++ b/po/zh_HK.po
@@ -0,0 +1,959 @@
+# Chinese (Hong Kong) translation of mate-screensaver.
+# Copyright (C) 2005, 06, 07 Free Software Foundation, Inc.
+# Abel Cheung <abel at oaka.org>, 2005.
+# Chao-Hsiung Liao <j_h_liau at yahoo.com.tw>, 2006.
+# Ching-Hung Lin <billlin at wshlab2.ee.kuas.edu.tw>, 2006.
+# Woodman Tuen <wmtuen at gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver 2.27.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-13 06:35+0800\n"
+"PO-Revision-Date: 2009-09-13 06:35+0800\n"
+"Last-Translator: Chao-Hsiung Liao <j_h_liau at yahoo.com.tw>\n"
+"Language-Team: Chinese (Hong Kong) <community at linuxhall.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "螢幕保護程式"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "設定螢幕保護程式"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>螢幕保護程式預覽</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>警告:root 使用者的畫面不會鎖上。</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "電源管理(_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "在此時間之後將電腦設為閒置(_I)"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "螢幕保護程式偏好設定"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "螢幕保護程式預覽"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "當作業階段閒置時啟用螢幕保護程式(_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "當螢幕保護程式作用時鎖定螢幕(_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "預覽(_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "螢幕保護程式佈景主題(_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "螢幕保護程式佈景主題"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "螢幕保護程式"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "當閒置時啟用"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "允許嵌入鍵盤至視窗中"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "允許登出"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "允許顯示作業階段狀態訊息"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "允許在鎖定螢幕時顯示作業階段狀態訊息。"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "允許切換使用者"
+
+# Ching-Hun Lin: Reference from "Spanish to English" traslation
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "嵌入鍵盤指令"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "作用時鎖定"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "登出指令"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "螢幕保護程式選擇模式"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "將此項設為 TRUE 則當作業階段為閒置時會鎖定螢幕。"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr "將此項設為 TRUE 會在試圖解除鎖定時嵌入鍵盤到視窗中。此“keyboard_command”鍵必須設置成適當的指令。"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "將此項設為 TRUE 則當螢幕保護程式啟動時會鎖定螢幕。"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr "將此項設為 TRUE 以在解除鎖定對話盒中提供切換為不同使用者帳號的選項。"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr "將此項設為 TRUE 以在解除鎖定對話盒中提供經過一段時間後登出的選項。該延遲時間可在“logout_delay”鍵值中指定。"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr "如果“embedded_keyboard_enabled”鍵被設為 TRUE ,將會執行此指令以嵌入鍵盤到視窗中。這指令應該要實做一個 XEMBED 的 plug 介面以及輸出一個視窗的 XID到標準輸出。"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr "當「登出」按鈕被按下時所執行的指令。這個指令應該要能直接、迅速的讓使用者登出。這個鍵值只有在“logout_enable”鍵值設為 TRUE 時才會生效。"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "螢幕保護程式作用閒置多少分鐘後會鎖定畫面。"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr "螢幕保護程式作用後到「登出」選項出現在解除鎖定對話盒中所需的時間。這個鍵值只有在“logout_enable”鍵值設為 TRUE 時才會生效。"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "沒有動作多少分鐘後會令作業階段被視為閒置。"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "執行多少分鐘後會切換螢幕保護程式主題。"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr "沒有動作後經過多少時間(秒)才通知電源管理。此設定鍵由電源管理程式維護。"
+
+# (pofilter) mateconf: do not translate mateconf attribute: "single", "themes", "random"
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr "用於螢幕保護程式的選擇模式。可以為「blank-only」(只有空白)會啟用螢幕保護程式但不使用任何主題;「single」(單一)會啟用螢幕保護程式但只使用一種主題(在「themes」(佈景主題)鍵值指定);還有「random」(亂數)會啟用螢幕保護程式且使用亂數主題。"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "鎖定對話視窗的佈景主題"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "鎖定對話視窗使用的佈景主題。"
+
+# (pofilter) mateconf: do not translate mateconf attribute: "single", "random"
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr "這個鍵值指定用於螢幕保護程式的主題清單。但是當「mode」鍵值為「blank-only」(只有空白)時會忽略此項,當「mode」鍵值為「single」(單一)時應提供該主題的名稱,而當「mode」鍵值為「random」(亂數)時應提供主題的清單。"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "鎖定時間"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "「登出」選項出現前的時間"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "電源管理前的底線"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "多少時間令作業階段被視為閒置"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "改變佈景主題前的時間"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>留言給 %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U 於 %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "取消(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "留言(_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "登出(_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "切換使用者(_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "解除鎖定(_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "宇宙"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "顯示宇宙圖片的幻燈片放映"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "讓 MATE 大腳標誌圍繞畫面"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "浮動大腳"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "顯示圖片資料夾的幻燈片放映"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "圖片資料夾"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "一個交替轉換深淺色的方陣。"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "閃方陣"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "顯示圖片的路徑"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "當移動圖片時斷續旋轉它們"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "列出畫面速率及其他統計數據"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "保留在畫面上的最大圖片數"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "視窗的初始大小與位置"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "要使用的來源圖片"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "圖片 - 圖片圍繞畫面"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s。參閱 --help 以取得更多資訊。\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "你必須指定一張圖片。請參閱 --help 以取得更多資訊。\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "取得圖片的位置"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "路徑"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "用於圖片背景的色彩"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "不使用亂數圖片的位置"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "不延伸圖片的螢幕"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "複製檔案"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "從:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "到:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "複製主題"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "螢幕保護程式主題無效"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s 似乎不是有效的螢幕保護程式主題檔案。"
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "複製檔案:%2$u 之 %1$u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "令螢幕保護程式正常結束"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "查詢螢幕保護程式狀態"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "查詢螢幕保護程式已啟動的時間"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "要求螢幕保護程式立刻鎖定畫定"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "如果螢幕保護程已經啟動,立刻切換直另一種畫面"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "啟動螢幕保護程式(畫面變黑)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "如果螢幕保護程已經啟動,立刻回復狀態 (不變黑)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "模擬用家使用電腦,令螢幕保護程式重設計時器"
+
+# (Abel) 似乎後一句的語意和前一句大致相同
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "禁止螢幕保護程式發生作用,這時螢幕保護程式會被封。"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "禁止螢幕保護程式發生作用的應用程式"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "禁止螢幕保護程式發生作用的理由"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "本程式的版本"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "螢幕保護程式目前是 %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "啟動中"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "暫停運作"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "螢幕保護程式並未被抑制\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "螢幕保護程式已被抑制:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "螢幕保護程式己啟動了 %d 秒。\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "螢幕保護程式目前並未使用。\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "顯示詳細偵錯訊息"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "顯示「登出」按鈕"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "「登出」按鈕呼叫的指令"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "顯示「切換使用者」按鈕"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "要在對話視窗顯示的留言"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "並未使用"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "使用者名稱:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "密碼:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "你必須立即更改密碼(密碼過期)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "你必須立即更改密碼(root 強制執行)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "你的帳戶已經過期,請聯絡系統管理員"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "沒有提供密碼"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "密碼沒有更改"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "無法取得使用者名稱"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "再輸入新的 UNIX 密碼:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "輸入新的 UNIX 密碼:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(目前的)UNIX 密碼:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "更改 NIS 密碼時發生錯誤。"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "你必須選用一個較長的密碼"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "密碼已經使用,請選用另一個。"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "更改密碼需要等候較長時間"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "對不起,密碼不符"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "檢查中..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "認證失敗。"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "空白畫面"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "隨機"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d 時"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d 分"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d 秒"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "永不"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "無法載入主視窗介面"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "請確保螢幕保護程式已經正確安裝"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "不要成為服務程式"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "啟用除錯碼"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "啟動螢幕保護程式並鎖定程式"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "無法建立服務 %s:%s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "無法設定 PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "密碼錯誤。"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "現在不允許存取。"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "不再允許存取系統。"
+
+# (Abel) 我真是無恥,連 dbus 的運作也未清楚就譯了
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "無法向 message bus 登記"
+
+# (Abel) 我真是無恥,連 dbus 的運作也未清楚就譯了
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "無法連接到 message bus"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "螢幕保護程式正在執行中"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "已經逾時了。"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "你按下了 Caps Lock 鍵。"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "切換使用者(_W)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "登出(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U 於 %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "密碼(_P):"
+
+#~ msgid "Reason for being away"
+#~ msgstr "判斷為離開的理由"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "判斷為離開這台電腦的理由。"
+
+#~ msgid "_Switch user..."
+#~ msgstr "切換使用者(_S)..."
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "Copying '%s'"
+#~ msgstr "正在複製‘%s’"
+
+#~ msgid "From URI"
+#~ msgstr "來源 URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "代表傳送來源的 URI"
+
+#~ msgid "To URI"
+#~ msgstr "目的地 URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "代表傳送目的地的 URI"
+
+#~ msgid "Fraction completed"
+#~ msgstr "完成比例"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "完成傳送檔案的比例"
+
+#~ msgid "Current URI index"
+#~ msgstr "目前的 URI 索引編號"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "目前的 URI 索引編號 - 由 1 開始"
+
+#~ msgid "Total URIs"
+#~ msgstr "URI 總數"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "URI 總數"
+
+#~ msgid "Connecting..."
+#~ msgstr "正在連線..."
+
+#~ msgid "S_witch to user:"
+#~ msgstr "切換為使用者(_W):"
+
+#~ msgid "Manager"
+#~ msgstr "管理程式"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "擁有這個物件的管理程式。"
+
+#~ msgid "Name"
+#~ msgstr "名稱"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "這個物件指向的 X11 畫面名稱。"
+
+#~ msgid "User"
+#~ msgstr "使用者"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "目前登入了這個虛擬終端機的使用者。"
+
+#~ msgid "Console"
+#~ msgstr "主控台"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr "這個畫面可以找到的虛擬主控台數量,或是 %-1。"
+
+#~ msgid "Nested"
+#~ msgstr "巢狀"
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "此畫面是否為視窗式 (Xnest) 畫面。"
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "由於不明的原因無法連繫登入管理程式。"
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "登入管理程式並未執行或版本太舊。"
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "已達到可變伺服器設定的上限。"
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "啟動 X 伺服器時出現原因不明的錯誤。"
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X 伺服器無法完成啟動程序。"
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "已有太多執行中的 X 作業階段。"
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr "Xnest 伺服器無法連上目前的 X 伺服器。"
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "找不到在 MDM 組態中所指定的 X 伺服器。"
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr "嘗試設定不明的或不存在的登出行動。"
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "不支援虛擬終端機。"
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "虛擬終端機編號無效。"
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "嘗試更新不支援的設定鍵。"
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority 檔案設定錯誤或遺失。"
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "太多訊息傳送至登入管理程式,程式因而停止。"
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "登入管理程式送出未知的錯誤訊息。"
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "這個選單項目所表示的使用者。"
+
+#~ msgid "Icon Size"
+#~ msgstr "圖示大小"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "要使用的圖示大小。"
+
+#~ msgid "Indicator Size"
+#~ msgstr "指示器大小"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "檢查指示器的大小"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "指示器間隔"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "使用者名稱與指示器之間的空白間隔"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "控制這個使用者的使用者管理程式物件。"
+
+#~ msgid "Show Details"
+#~ msgstr "顯示詳細資料"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (MATE 登入管理員) 並未執行。"
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "您可能是正在使用另一個登入管理員,例如 KDM (KDE 登入管理員) 或者 xdm。"
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr "如果您想使用此項功能,請自行啟動 MDM 或要求系統管理員啟動 MDM。"
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "無法與 MDM (MATE 登入管理員) 溝通"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "可能是正在使用舊版本的 MDM。"
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr "無法與 MDM 溝通,可能是正在使用舊版本的 MDM。"
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "已達到可開啟的彈性伺服器數目上限"
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "嘗試啟動 X 伺服程式時發生錯誤。"
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "X 伺服程式發生錯誤。可能是未設定好。"
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "正在執行的 X 作業階段太多了。"
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr "Xnest 無法連接至目前的 X 伺服程式。可能是缺少了 X 認證資料檔。"
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "Xnest 無法提供服務,或是 MDM 設定出錯。\n"
+#~ "請重新安裝 Xnest 套件,使得以視窗模式重新登入的功能可以繼續使用。"
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr "無法提供 X 伺服程式服務,可能是設定出錯。"
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "嘗試變更無效的虛擬終端機號碼。"
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "您沒有此項操作程序所需的認證資料。可能是沒有正確設定 .Xauthority 檔案。"
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "太多信息傳送到 mdm 令到它當了。"
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "出現不明的錯誤。"
+
+#~ msgid "Time before activation"
+#~ msgstr "作用時間"
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..4013ef9
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,978 @@
+# Chinese (Taiwan) translation of mate-screensaver.
+# Copyright (C) 2005, 06, 07 Free Software Foundation, Inc.
+# Abel Cheung <abel at oaka.org>, 2005.
+# Chao-Hsiung Liao <j_h_liau at yahoo.com.tw>, 2006.
+# Ching-Hung Lin <billlin at wshlab2.ee.kuas.edu.tw>, 2006.
+# Woodman Tuen <wmtuen at gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mate-screensaver 2.27.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-13 06:35+0800\n"
+"PO-Revision-Date: 2009-09-06 11:25+0800\n"
+"Last-Translator: Chao-Hsiung Liao <j_h_liau at yahoo.com.tw>\n"
+"Language-Team: Chinese (Taiwan) <zh-l10n at lists.linux.org.tw>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:1
+#: ../src/mate-screensaver.desktop.in.in.h:2
+msgid "Screensaver"
+msgstr "螢幕保護程式"
+
+#: ../data/mate-screensaver-preferences.desktop.in.h:2
+msgid "Set your screensaver preferences"
+msgstr "設定螢幕保護程式"
+
+#: ../data/mate-screensaver-preferences.ui.h:1
+msgid "<b>Screensaver preview</b>"
+msgstr "<b>螢幕保護程式預覽</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:2
+msgid "<b>Warning: the screen will not be locked for the root user.</b>"
+msgstr "<b>警告:root 使用者的畫面不會鎖上。</b>"
+
+#: ../data/mate-screensaver-preferences.ui.h:3
+msgid "Power _Management"
+msgstr "電源管理(_M)"
+
+#: ../data/mate-screensaver-preferences.ui.h:4
+msgid "Regard the computer as _idle after:"
+msgstr "在此時間之後將電腦設為閒置(_I)"
+
+#: ../data/mate-screensaver-preferences.ui.h:5
+msgid "Screensaver Preferences"
+msgstr "螢幕保護程式偏好設定"
+
+#: ../data/mate-screensaver-preferences.ui.h:6
+msgid "Screensaver Preview"
+msgstr "螢幕保護程式預覽"
+
+#: ../data/mate-screensaver-preferences.ui.h:7
+msgid "_Activate screensaver when computer is idle"
+msgstr "當作業階段閒置時啟用螢幕保護程式(_A)"
+
+#: ../data/mate-screensaver-preferences.ui.h:8
+msgid "_Lock screen when screensaver is active"
+msgstr "當螢幕保護程式作用時鎖定螢幕(_L)"
+
+#: ../data/mate-screensaver-preferences.ui.h:9
+msgid "_Preview"
+msgstr "預覽(_P)"
+
+#: ../data/mate-screensaver-preferences.ui.h:10
+msgid "_Screensaver theme:"
+msgstr "螢幕保護程式佈景主題(_S):"
+
+#: ../data/mate-screensaver.directory.in.h:1
+#: ../data/mate-screensaver.schemas.in.h:11
+msgid "Screensaver themes"
+msgstr "螢幕保護程式佈景主題"
+
+#: ../data/mate-screensaver.directory.in.h:2
+msgid "Screensavers"
+msgstr "螢幕保護程式"
+
+#: ../data/mate-screensaver.schemas.in.h:1
+msgid "Activate when idle"
+msgstr "當閒置時啟用"
+
+#: ../data/mate-screensaver.schemas.in.h:2
+msgid "Allow embedding a keyboard into the window"
+msgstr "允許嵌入鍵盤至視窗中"
+
+#: ../data/mate-screensaver.schemas.in.h:3
+msgid "Allow logout"
+msgstr "允許登出"
+
+#: ../data/mate-screensaver.schemas.in.h:4
+msgid "Allow the session status message to be displayed"
+msgstr "允許顯示作業階段狀態訊息"
+
+#: ../data/mate-screensaver.schemas.in.h:5
+msgid ""
+"Allow the session status message to be displayed when the screen is locked."
+msgstr "允許在鎖定螢幕時顯示作業階段狀態訊息。"
+
+#: ../data/mate-screensaver.schemas.in.h:6
+msgid "Allow user switching"
+msgstr "允許切換使用者"
+
+# Ching-Hun Lin: Reference from "Spanish to English" traslation
+#: ../data/mate-screensaver.schemas.in.h:7
+msgid "Embedded keyboard command"
+msgstr "嵌入鍵盤指令"
+
+#: ../data/mate-screensaver.schemas.in.h:8
+msgid "Lock on activation"
+msgstr "作用時鎖定"
+
+#: ../data/mate-screensaver.schemas.in.h:9
+msgid "Logout command"
+msgstr "登出指令"
+
+#: ../data/mate-screensaver.schemas.in.h:10
+msgid "Screensaver theme selection mode"
+msgstr "螢幕保護程式選擇模式"
+
+#: ../data/mate-screensaver.schemas.in.h:12
+msgid "Set this to TRUE to activate the screensaver when the session is idle."
+msgstr "將此項設為 TRUE 則當作業階段為閒置時會鎖定螢幕。"
+
+#: ../data/mate-screensaver.schemas.in.h:13
+msgid ""
+"Set this to TRUE to allow embedding a keyboard into the window when trying "
+"to unlock. The \"keyboard_command\" key must be set with the appropriate "
+"command."
+msgstr ""
+"將此項設為 TRUE 會在試圖解除鎖定時嵌入鍵盤到視窗中。此“keyboard_command”鍵必"
+"須設置成適當的指令。"
+
+#: ../data/mate-screensaver.schemas.in.h:14
+msgid "Set this to TRUE to lock the screen when the screensaver goes active."
+msgstr "將此項設為 TRUE 則當螢幕保護程式啟動時會鎖定螢幕。"
+
+#: ../data/mate-screensaver.schemas.in.h:15
+msgid ""
+"Set this to TRUE to offer an option in the unlock dialog to switch to a "
+"different user account."
+msgstr "將此項設為 TRUE 以在解除鎖定對話盒中提供切換為不同使用者帳號的選項。"
+
+#: ../data/mate-screensaver.schemas.in.h:16
+msgid ""
+"Set this to TRUE to offer an option in unlock dialog to logging out after a "
+"delay. The Delay is specified in the \"logout_delay\" key."
+msgstr ""
+"將此項設為 TRUE 以在解除鎖定對話盒中提供經過一段時間後登出的選項。該延遲時間"
+"可在“logout_delay”鍵值中指定。"
+
+#: ../data/mate-screensaver.schemas.in.h:17
+msgid ""
+"The command that will be run, if the \"embedded_keyboard_enabled\" key is "
+"set to TRUE, to embed a keyboard widget into the window. This command should "
+"implement an XEMBED plug interface and output a window XID on the standard "
+"output."
+msgstr ""
+"如果“embedded_keyboard_enabled”鍵被設為 TRUE ,將會執行此指令以嵌入鍵盤到視窗"
+"中。這指令應該要實做一個 XEMBED 的 plug 介面以及輸出一個視窗的 XID到標準輸"
+"出。"
+
+#: ../data/mate-screensaver.schemas.in.h:18
+msgid ""
+"The command to invoke when the logout button is clicked. This command should "
+"simply log the user out without any interaction. This key has effect only if "
+"the \"logout_enable\" key is set to TRUE."
+msgstr ""
+"當「登出」按鈕被按下時所執行的指令。這個指令應該要能直接、迅速的讓使用者登"
+"出。這個鍵值只有在“logout_enable”鍵值設為 TRUE 時才會生效。"
+
+#: ../data/mate-screensaver.schemas.in.h:19
+msgid ""
+"The number of minutes after screensaver activation before locking the screen."
+msgstr "螢幕保護程式作用閒置多少分鐘後會鎖定畫面。"
+
+#: ../data/mate-screensaver.schemas.in.h:20
+msgid ""
+"The number of minutes after the screensaver activation before a logout "
+"option will appear in unlock dialog. This key has effect only if the "
+"\"logout_enable\" key is set to TRUE."
+msgstr ""
+"螢幕保護程式作用後到「登出」選項出現在解除鎖定對話盒中所需的時間。這個鍵值只"
+"有在“logout_enable”鍵值設為 TRUE 時才會生效。"
+
+#: ../data/mate-screensaver.schemas.in.h:21
+msgid ""
+"The number of minutes of inactivity before the session is considered idle."
+msgstr "沒有動作多少分鐘後會令作業階段被視為閒置。"
+
+#: ../data/mate-screensaver.schemas.in.h:22
+msgid "The number of minutes to run before changing the screensaver theme."
+msgstr "執行多少分鐘後會切換螢幕保護程式主題。"
+
+#: ../data/mate-screensaver.schemas.in.h:23
+msgid ""
+"The number of seconds of inactivity before signalling to power-management. "
+"This key is set and maintained by the session power-management agent."
+msgstr ""
+"沒有動作後經過多少時間(秒)才通知電源管理。此設定鍵由電源管理程式維護。"
+
+# (pofilter) mateconf: do not translate mateconf attribute: "single", "themes", "random"
+#: ../data/mate-screensaver.schemas.in.h:24
+msgid ""
+"The selection mode used by screensaver. May be \"blank-only\" to enable the "
+"screensaver without using any theme on activation, \"single\" to enable "
+"screensaver using only one theme on activation (specified in \"themes\" "
+"key), and \"random\" to enable the screensaver using a random theme on "
+"activation."
+msgstr ""
+"用於螢幕保護程式的選擇模式。可以為「blank-only」(只有空白)會啟用螢幕保護程式"
+"但不使用任何主題;「single」(單一)會啟用螢幕保護程式但只使用一種主題(在"
+"「themes」(佈景主題)鍵值指定);還有「random」(亂數)會啟用螢幕保護程式且使用亂"
+"數主題。"
+
+#: ../data/mate-screensaver.schemas.in.h:25
+msgid "Theme for lock dialog"
+msgstr "鎖定對話視窗的佈景主題"
+
+#: ../data/mate-screensaver.schemas.in.h:26
+msgid "Theme to use for the lock dialog."
+msgstr "鎖定對話視窗使用的佈景主題。"
+
+# (pofilter) mateconf: do not translate mateconf attribute: "single", "random"
+#: ../data/mate-screensaver.schemas.in.h:27
+msgid ""
+"This key specifies the list of themes to be used by the screensaver. It's "
+"ignored when \"mode\" key is \"blank-only\", should provide the theme name "
+"when \"mode\" is \"single\", and should provide a list of themes when \"mode"
+"\" is \"random\"."
+msgstr ""
+"這個鍵值指定用於螢幕保護程式的主題清單。但是當「mode」鍵值為「blank-only」(只"
+"有空白)時會忽略此項,當「mode」鍵值為「single」(單一)時應提供該主題的名稱,而"
+"當「mode」鍵值為「random」(亂數)時應提供主題的清單。"
+
+#: ../data/mate-screensaver.schemas.in.h:28
+msgid "Time before locking"
+msgstr "鎖定時間"
+
+#: ../data/mate-screensaver.schemas.in.h:29
+msgid "Time before logout option"
+msgstr "「登出」選項出現前的時間"
+
+#: ../data/mate-screensaver.schemas.in.h:30
+msgid "Time before power-management baseline"
+msgstr "電源管理前的底線"
+
+#: ../data/mate-screensaver.schemas.in.h:31
+msgid "Time before session is considered idle"
+msgstr "多少時間令作業階段被視為閒置"
+
+#: ../data/mate-screensaver.schemas.in.h:32
+msgid "Time before theme change"
+msgstr "改變佈景主題前的時間"
+
+#: ../data/lock-dialog-default.ui.h:2
+#, no-c-format
+msgid "<b>Leave a message for %R:</b>"
+msgstr "<b>留言給 %R:</b>"
+
+#: ../data/lock-dialog-default.ui.h:4
+#, no-c-format
+msgid "<span size=\"small\">%U on %h</span>"
+msgstr "<span size=\"small\">%U 於 %h</span>"
+
+#: ../data/lock-dialog-default.ui.h:6
+#, no-c-format
+msgid "<span size=\"x-large\">%R</span>"
+msgstr "<span size=\"x-large\">%R</span>"
+
+#: ../data/lock-dialog-default.ui.h:7
+msgid "_Cancel"
+msgstr "取消(_C)"
+
+#: ../data/lock-dialog-default.ui.h:8
+msgid "_Leave Message"
+msgstr "留言(_L)"
+
+#: ../data/lock-dialog-default.ui.h:9
+msgid "_Log Out"
+msgstr "登出(_L)"
+
+#: ../data/lock-dialog-default.ui.h:10
+msgid "_Switch User"
+msgstr "切換使用者(_S)"
+
+#: ../data/lock-dialog-default.ui.h:11 ../src/gs-lock-plug.c:1382
+msgid "_Unlock"
+msgstr "解除鎖定(_U)"
+
+#. Translators: This is the name of a desktop background image that shows outer space images.
+#. You might want to translate it into the equivalent words of your language
+#: ../data/images/cosmos/cosmos.xml.in.in.h:3
+#: ../savers/cosmos-slideshow.desktop.in.in.h:1
+msgid "Cosmos"
+msgstr "宇宙"
+
+#: ../savers/cosmos-slideshow.desktop.in.in.h:2
+msgid "Display a slideshow of pictures of the cosmos"
+msgstr "顯示宇宙圖片的幻燈片放映"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:1
+msgid "Bubbles the MATE foot logo around the screen"
+msgstr "讓 MATE 大腳標誌圍繞畫面"
+
+#: ../savers/footlogo-floaters.desktop.in.in.h:2
+msgid "Floating Feet"
+msgstr "浮動大腳"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:1
+msgid "Display a slideshow from your Pictures folder"
+msgstr "顯示圖片資料夾的幻燈片放映"
+
+#: ../savers/personal-slideshow.desktop.in.in.h:2
+msgid "Pictures folder"
+msgstr "圖片資料夾"
+
+#: ../savers/popsquares.desktop.in.in.h:1
+msgid "A pop-art-ish grid of pulsing colors."
+msgstr "一個交替轉換深淺色的方陣。"
+
+#: ../savers/popsquares.desktop.in.in.h:2
+msgid "Pop art squares"
+msgstr "閃方陣"
+
+#: ../savers/floaters.c:84
+msgid "Show paths that images follow"
+msgstr "顯示圖片的路徑"
+
+#: ../savers/floaters.c:87
+msgid "Occasionally rotate images as they move"
+msgstr "當移動圖片時斷續旋轉它們"
+
+#: ../savers/floaters.c:90
+msgid "Print out frame rate and other statistics"
+msgstr "列出畫面速率及其他統計數據"
+
+#: ../savers/floaters.c:93
+msgid "The maximum number of images to keep on screen"
+msgstr "保留在畫面上的最大圖片數"
+
+#: ../savers/floaters.c:93
+msgid "MAX_IMAGES"
+msgstr "MAX_IMAGES"
+
+#: ../savers/floaters.c:96
+msgid "The initial size and position of window"
+msgstr "視窗的初始大小與位置"
+
+#: ../savers/floaters.c:96
+msgid "WIDTHxHEIGHT+X+Y"
+msgstr "WIDTHxHEIGHT+X+Y"
+
+#: ../savers/floaters.c:99
+msgid "The source image to use"
+msgstr "要使用的來源圖片"
+
+#. translators: the word "image" here
+#. * represents a command line argument
+#.
+#: ../savers/floaters.c:1194
+msgid "image - floats images around the screen"
+msgstr "圖片 - 圖片圍繞畫面"
+
+#: ../savers/floaters.c:1200
+#, c-format
+msgid "%s. See --help for usage information.\n"
+msgstr "%s。參閱 --help 以取得更多資訊。\n"
+
+#: ../savers/floaters.c:1209
+#, c-format
+msgid "You must specify one image.  See --help for usage information.\n"
+msgstr "您必須指定一張圖片。請參閱 --help 以取得更多資訊。\n"
+
+#: ../savers/slideshow.c:53
+msgid "Location to get images from"
+msgstr "取得圖片的位置"
+
+#: ../savers/slideshow.c:53
+msgid "PATH"
+msgstr "路徑"
+
+#: ../savers/slideshow.c:55
+msgid "Color to use for images background"
+msgstr "用於圖片背景的色彩"
+
+#: ../savers/slideshow.c:55
+msgid "\"#rrggbb\""
+msgstr "\"#rrggbb\""
+
+#: ../savers/slideshow.c:57
+msgid "Do not randomize pictures from location"
+msgstr "不使用亂數圖片的位置"
+
+#: ../savers/slideshow.c:59
+msgid "Do not try to stretch images on screen"
+msgstr "不延伸圖片的螢幕"
+
+#: ../src/copy-theme-dialog.c:212
+msgid "Copying files"
+msgstr "複製檔案"
+
+#: ../src/copy-theme-dialog.c:230
+msgid "From:"
+msgstr "從:"
+
+#: ../src/copy-theme-dialog.c:234
+msgid "To:"
+msgstr "到:"
+
+#: ../src/copy-theme-dialog.c:254
+msgid "Copying themes"
+msgstr "複製主題"
+
+#: ../src/copy-theme-dialog.c:298
+msgid "Invalid screensaver theme"
+msgstr "螢幕保護程式主題無效"
+
+#: ../src/copy-theme-dialog.c:301
+#, c-format
+msgid "%s does not appear to be a valid screensaver theme."
+msgstr "%s 似乎不是有效的螢幕保護程式主題檔案。"
+
+#: ../src/copy-theme-dialog.c:481
+#, c-format
+msgid "Copying file: %u of %u"
+msgstr "複製檔案:%2$u 之 %1$u"
+
+#: ../src/mate-screensaver-command.c:62
+msgid "Causes the screensaver to exit gracefully"
+msgstr "令螢幕保護程式正常結束"
+
+#: ../src/mate-screensaver-command.c:64
+msgid "Query the state of the screensaver"
+msgstr "查詢螢幕保護程式狀態"
+
+#: ../src/mate-screensaver-command.c:66
+msgid "Query the length of time the screensaver has been active"
+msgstr "查詢螢幕保護程式已啟動的時間"
+
+#: ../src/mate-screensaver-command.c:68
+msgid "Tells the running screensaver process to lock the screen immediately"
+msgstr "要求螢幕保護程式立刻鎖定畫定"
+
+#: ../src/mate-screensaver-command.c:70
+msgid "If the screensaver is active then switch to another graphics demo"
+msgstr "如果螢幕保護程已經啟動,立刻切換直另一種畫面"
+
+#: ../src/mate-screensaver-command.c:72
+msgid "Turn the screensaver on (blank the screen)"
+msgstr "啟動螢幕保護程式(畫面變黑)"
+
+#: ../src/mate-screensaver-command.c:74
+msgid "If the screensaver is active then deactivate it (un-blank the screen)"
+msgstr "如果螢幕保護程已經啟動,立刻回復狀態 (不變黑)"
+
+#: ../src/mate-screensaver-command.c:76
+msgid "Poke the running screensaver to simulate user activity"
+msgstr "模擬用家使用電腦,令螢幕保護程式重設計時器"
+
+# (Abel) 似乎後一句的語意和前一句大致相同
+#: ../src/mate-screensaver-command.c:78
+msgid ""
+"Inhibit the screensaver from activating.  Command blocks while inhibit is "
+"active."
+msgstr "禁止螢幕保護程式發生作用,這時螢幕保護程式會被封。"
+
+#: ../src/mate-screensaver-command.c:80
+msgid "The calling application that is inhibiting the screensaver"
+msgstr "禁止螢幕保護程式發生作用的應用程式"
+
+#: ../src/mate-screensaver-command.c:82
+msgid "The reason for inhibiting the screensaver"
+msgstr "禁止螢幕保護程式發生作用的理由"
+
+#: ../src/mate-screensaver-command.c:84 ../src/mate-screensaver-dialog.c:58
+#: ../src/mate-screensaver.c:56
+msgid "Version of this application"
+msgstr "本程式的版本"
+
+#: ../src/mate-screensaver-command.c:311
+#, c-format
+msgid "The screensaver is %s\n"
+msgstr "螢幕保護程式目前是 %s\n"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "active"
+msgstr "啟動中"
+
+#: ../src/mate-screensaver-command.c:311
+msgid "inactive"
+msgstr "暫停運作"
+
+#: ../src/mate-screensaver-command.c:325
+#, c-format
+msgid "The screensaver is not inhibited\n"
+msgstr "螢幕保護程式並未被抑制\n"
+
+#: ../src/mate-screensaver-command.c:331
+#, c-format
+msgid "The screensaver is being inhibited by:\n"
+msgstr "螢幕保護程式已被抑制:\n"
+
+#: ../src/mate-screensaver-command.c:362
+#, c-format
+msgid "The screensaver has been active for %d seconds.\n"
+msgstr "螢幕保護程式己啟動了 %d 秒。\n"
+
+#: ../src/mate-screensaver-command.c:366
+#, c-format
+msgid "The screensaver is not currently active.\n"
+msgstr "螢幕保護程式目前並未使用。\n"
+
+#: ../src/mate-screensaver-dialog.c:56
+msgid "Show debugging output"
+msgstr "顯示詳細偵錯訊息"
+
+#: ../src/mate-screensaver-dialog.c:60
+msgid "Show the logout button"
+msgstr "顯示「登出」按鈕"
+
+#: ../src/mate-screensaver-dialog.c:62
+msgid "Command to invoke from the logout button"
+msgstr "「登出」按鈕呼叫的指令"
+
+#: ../src/mate-screensaver-dialog.c:64
+msgid "Show the switch user button"
+msgstr "顯示「切換使用者」按鈕"
+
+#: ../src/mate-screensaver-dialog.c:66
+msgid "Message to show in the dialog"
+msgstr "要在對話視窗顯示的留言"
+
+#: ../src/mate-screensaver-dialog.c:66 ../src/mate-screensaver-dialog.c:68
+msgid "MESSAGE"
+msgstr "MESSAGE"
+
+#: ../src/mate-screensaver-dialog.c:68
+msgid "Not used"
+msgstr "並未使用"
+
+#. login: is whacked always translate to Username:
+#: ../src/mate-screensaver-dialog.c:178 ../src/mate-screensaver-dialog.c:179
+#: ../src/mate-screensaver-dialog.c:180 ../src/gs-auth-pam.c:698
+msgid "Username:"
+msgstr "使用者名稱:"
+
+#: ../src/mate-screensaver-dialog.c:181 ../src/mate-screensaver-dialog.c:182
+#: ../src/gs-auth-pam.c:166
+msgid "Password:"
+msgstr "密碼:"
+
+#: ../src/mate-screensaver-dialog.c:183
+msgid "You are required to change your password immediately (password aged)"
+msgstr "您必須立即變更密碼(密碼過期)"
+
+#: ../src/mate-screensaver-dialog.c:184
+msgid "You are required to change your password immediately (root enforced)"
+msgstr "您必須立即變更密碼(root 強制執行)"
+
+#: ../src/mate-screensaver-dialog.c:185
+msgid "Your account has expired; please contact your system administrator"
+msgstr "您的帳戶已經過期,請連絡系統管理員"
+
+#: ../src/mate-screensaver-dialog.c:186
+msgid "No password supplied"
+msgstr "沒有提供密碼"
+
+#: ../src/mate-screensaver-dialog.c:187
+msgid "Password unchanged"
+msgstr "密碼沒有變更"
+
+#: ../src/mate-screensaver-dialog.c:188
+msgid "Can not get username"
+msgstr "無法取得使用者名稱"
+
+#: ../src/mate-screensaver-dialog.c:189
+msgid "Retype new UNIX password:"
+msgstr "再輸入新的 UNIX 密碼:"
+
+#: ../src/mate-screensaver-dialog.c:190
+msgid "Enter new UNIX password:"
+msgstr "輸入新的 UNIX 密碼:"
+
+#: ../src/mate-screensaver-dialog.c:191
+msgid "(current) UNIX password:"
+msgstr "(目前的)UNIX 密碼:"
+
+#: ../src/mate-screensaver-dialog.c:192
+msgid "Error while changing NIS password."
+msgstr "變更 NIS 密碼時發生錯誤。"
+
+#: ../src/mate-screensaver-dialog.c:193
+msgid "You must choose a longer password"
+msgstr "您必須選用一個較長的密碼"
+
+#: ../src/mate-screensaver-dialog.c:194
+msgid "Password has been already used. Choose another."
+msgstr "密碼已經使用,請選用另一個。"
+
+#: ../src/mate-screensaver-dialog.c:195
+msgid "You must wait longer to change your password"
+msgstr "變更密碼需要等候較長時間"
+
+#: ../src/mate-screensaver-dialog.c:196
+msgid "Sorry, passwords do not match"
+msgstr "對不起,密碼不符"
+
+#: ../src/mate-screensaver-dialog.c:262
+msgid "Checking..."
+msgstr "檢查中..."
+
+#: ../src/mate-screensaver-dialog.c:304 ../src/gs-auth-pam.c:457
+msgid "Authentication failed."
+msgstr "認證失敗。"
+
+#: ../src/mate-screensaver-preferences.c:524
+msgid "Blank screen"
+msgstr "空白畫面"
+
+#: ../src/mate-screensaver-preferences.c:530
+msgid "Random"
+msgstr "隨機"
+
+#: ../src/mate-screensaver-preferences.c:980
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d 時"
+
+#: ../src/mate-screensaver-preferences.c:983
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d 分"
+
+#: ../src/mate-screensaver-preferences.c:986
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d 秒"
+
+#. hour:minutes:seconds
+#: ../src/mate-screensaver-preferences.c:992
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#. hour:minutes
+#. minutes:seconds
+#: ../src/mate-screensaver-preferences.c:995
+#: ../src/mate-screensaver-preferences.c:1003
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#. hour
+#. minutes
+#. seconds
+#: ../src/mate-screensaver-preferences.c:998
+#: ../src/mate-screensaver-preferences.c:1006
+#: ../src/mate-screensaver-preferences.c:1010
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: ../src/mate-screensaver-preferences.c:1025
+#, c-format
+msgid "Never"
+msgstr "永不"
+
+#: ../src/mate-screensaver-preferences.c:1467
+msgid "Could not load the main interface"
+msgstr "無法載入主視窗介面"
+
+#: ../src/mate-screensaver-preferences.c:1469
+msgid "Please make sure that the screensaver is properly installed"
+msgstr "請確保螢幕保護程式已經正確安裝"
+
+#: ../src/mate-screensaver.c:57
+msgid "Don't become a daemon"
+msgstr "不要成為服務程式"
+
+#: ../src/mate-screensaver.c:58
+msgid "Enable debugging code"
+msgstr "啟用除錯碼"
+
+#: ../src/mate-screensaver.desktop.in.in.h:1
+msgid "Launch screen saver and locker program"
+msgstr "啟動螢幕保護程式並鎖定程式"
+
+#: ../src/gs-auth-pam.c:397
+#, c-format
+msgid "Unable to establish service %s: %s\n"
+msgstr "無法建構服務 %s:%s\n"
+
+#: ../src/gs-auth-pam.c:423
+#, c-format
+msgid "Can't set PAM_TTY=%s"
+msgstr "無法設定 PAM_TTY=%s"
+
+#: ../src/gs-auth-pam.c:455
+msgid "Incorrect password."
+msgstr "密碼錯誤。"
+
+#: ../src/gs-auth-pam.c:471
+msgid "Not permitted to gain access at this time."
+msgstr "現在不允許存取。"
+
+#: ../src/gs-auth-pam.c:477
+msgid "No longer permitted to access the system."
+msgstr "不再允許存取系統。"
+
+# (Abel) 我真是無恥,連 dbus 的運作也未清楚就譯了
+#: ../src/gs-listener-dbus.c:1851
+msgid "failed to register with the message bus"
+msgstr "無法向 message bus 登記"
+
+# (Abel) 我真是無恥,連 dbus 的運作也未清楚就譯了
+#: ../src/gs-listener-dbus.c:1861
+msgid "not connected to the message bus"
+msgstr "無法連接到 message bus"
+
+#: ../src/gs-listener-dbus.c:1870
+msgid "screensaver already running in this session"
+msgstr "螢幕保護程式正在執行中"
+
+#: ../src/gs-lock-plug.c:270
+msgid "Time has expired."
+msgstr "已經逾時了。"
+
+#: ../src/gs-lock-plug.c:298
+msgid "You have the Caps Lock key on."
+msgstr "您按下了 Caps Lock 鍵。"
+
+#: ../src/gs-lock-plug.c:1362
+msgid "S_witch User..."
+msgstr "切換使用者(_W)..."
+
+#: ../src/gs-lock-plug.c:1371
+msgid "Log _Out"
+msgstr "登出(_O)"
+
+#. To translators: This expands to USERNAME on HOSTNAME
+#: ../src/gs-lock-plug.c:1547
+msgid "%U on %h"
+msgstr "%U 於 %h"
+
+#: ../src/gs-lock-plug.c:1561
+msgid "_Password:"
+msgstr "密碼(_P):"
+
+#~ msgid "Reason for being away"
+#~ msgstr "判斷為離開的理由"
+
+#~ msgid "The reason for being away from the computer."
+#~ msgstr "判斷為離開這台電腦的理由。"
+
+#~ msgid "_Switch user..."
+#~ msgstr "切換使用者(_S)..."
+
+#~ msgid "N"
+#~ msgstr "N"
+
+#~ msgid "Copying '%s'"
+#~ msgstr "正在複製‘%s’"
+
+#~ msgid "From URI"
+#~ msgstr "來源 URI"
+
+#~ msgid "URI currently transferring from"
+#~ msgstr "代表傳送來源的 URI"
+
+#~ msgid "To URI"
+#~ msgstr "目的地 URI"
+
+#~ msgid "URI currently transferring to"
+#~ msgstr "代表傳送目的地的 URI"
+
+#~ msgid "Fraction completed"
+#~ msgstr "完成比例"
+
+#~ msgid "Fraction of transfer currently completed"
+#~ msgstr "完成傳送檔案的比例"
+
+#~ msgid "Current URI index"
+#~ msgstr "目前的 URI 索引編號"
+
+#~ msgid "Current URI index - starts from 1"
+#~ msgstr "目前的 URI 索引編號 - 由 1 開始"
+
+#~ msgid "Total URIs"
+#~ msgstr "URI 總數"
+
+#~ msgid "Total number of URIs"
+#~ msgstr "URI 總數"
+
+#~ msgid "Connecting..."
+#~ msgstr "正在連線..."
+
+#~ msgid "S_witch to user:"
+#~ msgstr "切換為使用者(_W):"
+
+#~ msgid "Manager"
+#~ msgstr "管理程式"
+
+#~ msgid "The manager which owns this object."
+#~ msgstr "擁有這個物件的管理程式。"
+
+#~ msgid "Name"
+#~ msgstr "名稱"
+
+#~ msgid "The name of the X11 display this object refers to."
+#~ msgstr "這個物件指向的 X11 畫面名稱。"
+
+#~ msgid "User"
+#~ msgstr "使用者"
+
+#~ msgid "The user currently logged in on this virtual terminal."
+#~ msgstr "目前登入了這個虛擬終端機的使用者。"
+
+#~ msgid "Console"
+#~ msgstr "主控台"
+
+#~ msgid ""
+#~ "The number of the virtual console this display can be found on, or %-1."
+#~ msgstr "這個畫面可以找到的虛擬主控台數量,或是 %-1。"
+
+#~ msgid "Nested"
+#~ msgstr "巢狀"
+
+#~ msgid "Whether or not this display is a windowed (Xnest) display."
+#~ msgstr "此畫面是否為視窗式 (Xnest) 畫面。"
+
+#~ msgid "The display manager could not be contacted for unknown reasons."
+#~ msgstr "由於不明的原因無法連繫登入管理程式。"
+
+#~ msgid "The display manager is not running or too old."
+#~ msgstr "登入管理程式並未執行或版本太舊。"
+
+#~ msgid "The configured limit of flexible servers has been reached."
+#~ msgstr "已達到可變伺服器設定的上限。"
+
+#~ msgid "There was an unknown error starting X."
+#~ msgstr "啟動 X 伺服器時出現原因不明的錯誤。"
+
+#~ msgid "The X server failed to finish starting."
+#~ msgstr "X 伺服器無法完成啟動程序。"
+
+#~ msgid "There are too many X sessions running."
+#~ msgstr "已有太多執行中的 X 作業階段。"
+
+#~ msgid "The nested X server (Xnest) cannot connect to your current X server."
+#~ msgstr "Xnest 伺服器無法連上目前的 X 伺服器。"
+
+#~ msgid "The X server in the MDM configuration could not be found."
+#~ msgstr "找不到在 MDM 組態中所指定的 X 伺服器。"
+
+#~ msgid ""
+#~ "Trying to set an unknown logout action, or trying to set a logout action "
+#~ "which is not available."
+#~ msgstr "嘗試設定不明的或不存在的登出行動。"
+
+#~ msgid "Virtual terminals not supported."
+#~ msgstr "不支援虛擬終端機。"
+
+#~ msgid "Invalid virtual terminal number."
+#~ msgstr "虛擬終端機編號無效。"
+
+#~ msgid "Trying to update an unsupported configuration key."
+#~ msgstr "嘗試更新不支援的設定鍵。"
+
+#~ msgid "~/.Xauthority file badly configured or missing."
+#~ msgstr "~/.Xauthority 檔案設定錯誤或遺失。"
+
+#~ msgid "Too many messages were sent to the display manager, and it hung up."
+#~ msgstr "太多訊息傳送至登入管理程式,程式因而停止。"
+
+#~ msgid "The display manager sent an unknown error message."
+#~ msgstr "登入管理程式送出未知的錯誤訊息。"
+
+#~ msgid "The user this menu item represents."
+#~ msgstr "這個選單項目所表示的使用者。"
+
+#~ msgid "Icon Size"
+#~ msgstr "圖示大小"
+
+#~ msgid "The size of the icon to use."
+#~ msgstr "要使用的圖示大小。"
+
+#~ msgid "Indicator Size"
+#~ msgstr "指示器大小"
+
+#~ msgid "Size of check indicator"
+#~ msgstr "檢查指示器的大小"
+
+#~ msgid "Indicator Spacing"
+#~ msgstr "指示器間隔"
+
+#~ msgid "Space between the username and the indicator"
+#~ msgstr "使用者名稱與指示器之間的空白間隔"
+
+#~ msgid "The user manager object this user is controlled by."
+#~ msgstr "控制這個使用者的使用者管理程式物件。"
+
+#~ msgid "Show Details"
+#~ msgstr "顯示詳細資料"
+
+#~ msgid "MDM (The MATE Display Manager) is not running."
+#~ msgstr "MDM (MATE 登入管理員) 並未執行。"
+
+#~ msgid ""
+#~ "You might in fact be using a different display manager, such as KDM (KDE "
+#~ "Display Manager) or xdm."
+#~ msgstr ""
+#~ "您可能是正在使用另一個登入管理員,例如 KDM (KDE 登入管理員) 或者 xdm。"
+
+#~ msgid ""
+#~ "If you still wish to use this feature, either start MDM yourself or ask "
+#~ "your system administrator to start MDM."
+#~ msgstr "如果您想使用此項功能,請自行啟動 MDM 或要求系統管理員啟動 MDM。"
+
+#~ msgid "Cannot communicate with MDM (The MATE Display Manager)"
+#~ msgstr "無法與 MDM (MATE 登入管理員) 溝通"
+
+#~ msgid "Perhaps you have an old version of MDM running."
+#~ msgstr "可能是正在使用舊版本的 MDM。"
+
+#~ msgid ""
+#~ "Cannot communicate with mdm, perhaps you have an old version running."
+#~ msgstr "無法與 MDM 溝通,可能是正在使用舊版本的 MDM。"
+
+#~ msgid "The allowed limit of flexible X servers reached."
+#~ msgstr "已達到可開啟的彈性伺服器數目上限"
+
+#~ msgid "There were errors trying to start the X server."
+#~ msgstr "嘗試啟動 X 伺服程式時發生錯誤。"
+
+#~ msgid "The X server failed.  Perhaps it is not configured well."
+#~ msgstr "X 伺服程式發生錯誤。可能是未設定好。"
+
+#~ msgid "Too many X sessions running."
+#~ msgstr "正在執行的 X 作業階段太多了。"
+
+#~ msgid ""
+#~ "The nested X server (Xnest) cannot connect to your current X server.  You "
+#~ "may be missing an X authorization file."
+#~ msgstr "Xnest 無法連接至目前的 X 伺服程式。可能是缺少了 X 認證資料檔。"
+
+#~ msgid ""
+#~ "The nested X server (Xnest) is not available, or mdm is badly "
+#~ "configured.\n"
+#~ "Please install the Xnest package in order to use the nested login."
+#~ msgstr ""
+#~ "Xnest 無法提供服務,或是 MDM 設定出錯。\n"
+#~ "請重新安裝 Xnest 套件,使得以視窗模式重新登入的功能可以繼續使用。"
+
+#~ msgid ""
+#~ "The X server is not available, it is likely that mdm is badly configured."
+#~ msgstr "無法提供 X 伺服程式服務,可能是設定出錯。"
+
+#~ msgid "Trying to change to an invalid virtual terminal number."
+#~ msgstr "嘗試變更無效的虛擬終端機號碼。"
+
+#~ msgid ""
+#~ "You do not seem to have authentication needed be for this operation.  "
+#~ "Perhaps your .Xauthority file is not set up correctly."
+#~ msgstr ""
+#~ "您沒有此項操作程序所需的認證資料。可能是沒有正確設定 .Xauthority 檔案。"
+
+#~ msgid "Too many messages were sent to mdm and it hung upon us."
+#~ msgstr "太多信息傳送到 mdm 令到它當了。"
+
+#~ msgid "Unknown error occurred."
+#~ msgstr "出現不明的錯誤。"
+
+#~ msgid "Time before activation"
+#~ msgstr "作用時間"
diff --git a/savers/Makefile.am b/savers/Makefile.am
new file mode 100644
index 0000000..298177e
--- /dev/null
+++ b/savers/Makefile.am
@@ -0,0 +1,142 @@
+## We require new-style dependency handling.
+AUTOMAKE_OPTIONS = 1.7
+
+NULL =
+
+INCLUDES =							\
+	-I.							\
+	-I$(srcdir)						\
+	$(MATE_SCREENSAVER_SAVER_CFLAGS)			\
+	$(DISABLE_DEPRECATED_CFLAGS)				\
+	-DLIBEXECDIR=\""$(libexecdir)"\"			\
+	-DMATELOCALEDIR=\""$(datadir)/locale"\"		\
+	-DDATADIR=\""$(datadir)"\"				\
+	$(WARN_CFLAGS)						\
+	$(NULL)
+
+DESKTOP_IN_IN_FILES = 			 \
+	cosmos-slideshow.desktop.in.in 	 \
+	footlogo-floaters.desktop.in.in	 \
+	personal-slideshow.desktop.in.in \
+	popsquares.desktop.in.in	 \
+	$(NULL)
+
+cosmos-slideshow.desktop.in: cosmos-slideshow.desktop.in.in Makefile
+	$(edit) $< >$@
+footlogo-floaters.desktop.in: footlogo-floaters.desktop.in.in Makefile
+	$(edit) $< >$@
+personal-slideshow.desktop.in: personal-slideshow.desktop.in.in Makefile
+	$(edit) $< >$@
+popsquares.desktop.in: popsquares.desktop.in.in Makefile
+	$(edit) $< >$@
+
+ at INTLTOOL_DESKTOP_RULE@
+
+edit = sed \
+	-e 's|@SLIDESHOW_COSMOS_DIR[@]|$(SLIDESHOW_COSMOS_DIR)|g' \
+	-e 's|@FLOATERS_FOOT_LOGO_IMAGE[@]|$(FLOATERS_FOOT_LOGO_IMAGE)|g' \
+	-e 's|@SAVERDIR[@]|$(privlibexecdir)|g'
+
+themesdir = $(datadir)/applications/screensavers
+themes_in_files = 			\
+	cosmos-slideshow.desktop.in	\
+	footlogo-floaters.desktop.in    \
+	personal-slideshow.desktop.in	\
+	popsquares.desktop.in		\
+	$(NULL)
+themes_DATA = $(themes_in_files:.desktop.in=.desktop)
+
+BUILT_SOURCES = 			\
+	gs-theme-engine-marshal.c	\
+	gs-theme-engine-marshal.h	\
+	$(NULL)
+
+gs-theme-engine-marshal.c: gs-theme-engine-marshal.list
+	echo "#include \"gs-theme-engine-marshal.h\"" > $@ && \
+	@GLIB_GENMARSHAL@ $< --prefix=gs_theme_engine_marshal --body >> $@
+
+gs-theme-engine-marshal.h: gs-theme-engine-marshal.list
+	@GLIB_GENMARSHAL@ $< --prefix=gs_theme_engine_marshal --header > $@
+
+noinst_LIBRARIES =			\
+	libgs-theme-engine.a
+
+libgs_theme_engine_a_CPPFLAGS =					\
+	-DDATADIR=\""$(datadir)"\"				\
+	$(NULL)
+
+libgs_theme_engine_a_SOURCES =		\
+	$(BUILT_SOURCES)		\
+	gs-theme-window.h		\
+	gs-theme-window.c		\
+	gs-theme-engine.c		\
+	gs-theme-engine.h		\
+	$(NULL)
+
+saverdir = $(libexecdir)/mate-screensaver
+saver_PROGRAMS = 	\
+	floaters	\
+	popsquares	\
+	slideshow	\
+	$(NULL)
+
+floaters_SOURCES =	\
+	floaters.c	\
+	$(NULL)
+
+floaters_LDADD =		       \
+	libgs-theme-engine.a		\
+	$(MATE_SCREENSAVER_SAVER_LIBS) \
+	-lm                             \
+	$(NULL)
+
+popsquares_SOURCES = 		\
+	gste-popsquares.c	\
+	gste-popsquares.h	\
+	popsquares.c		\
+	$(NULL)
+
+popsquares_LDADD =			\
+	libgs-theme-engine.a 		\
+	$(MATE_SCREENSAVER_SAVER_LIBS)	\
+	$(NULL)
+
+slideshow_SOURCES =   \
+	gste-slideshow.c	\
+	gste-slideshow.h	\
+	xdg-user-dir-lookup.c	\
+	xdg-user-dir-lookup.h	\
+	slideshow.c		\
+	$(NULL)
+
+slideshow_LDADD =     \
+	libgs-theme-engine.a 		\
+	$(MATE_SCREENSAVER_SAVER_LIBS)	\
+	$(NULL)
+
+EXTRA_DIST =				\
+	gs-theme-engine-marshal.list	\
+	$(DESKTOP_IN_IN_FILES)		\
+	$(themes_in_files)		\
+	$(NULL)
+
+CLEANFILES = 				\
+	$(BUILT_SOURCES)		\
+	cosmos-slideshow.desktop.in	\
+	footlogo-floaters.desktop.in	\
+	popsquares.desktop.in		\
+	personal-slideshow.desktop.in	\
+	$(NULL)
+
+DISTCLEANFILES = 			\
+	$(themes_DATA)			\
+	$(NULL)
+
+MAINTAINERCLEANFILES =			\
+	*~				\
+	Makefile.in			\
+	cosmos-slideshow.desktop	\
+	footlogo-floaters.desktop	\
+	personal-slideshow.desktop	\
+	popsquares.desktop		\
+	$(NULL)
diff --git a/savers/cosmos-slideshow.desktop.in.in b/savers/cosmos-slideshow.desktop.in.in
new file mode 100644
index 0000000..cc51661
--- /dev/null
+++ b/savers/cosmos-slideshow.desktop.in.in
@@ -0,0 +1,10 @@
+[Desktop Entry]
+_Name=Cosmos
+_Comment=Display a slideshow of pictures of the cosmos
+Exec=@SAVERDIR@/slideshow --location=@SLIDESHOW_COSMOS_DIR@
+TryExec=@SAVERDIR@/slideshow
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=MATE;Screensaver;
+OnlyShowIn=MATE;
diff --git a/savers/floaters.c b/savers/floaters.c
new file mode 100644
index 0000000..8052e95
--- /dev/null
+++ b/savers/floaters.c
@@ -0,0 +1,1269 @@
+/*
+ * Copyright (C) 2005 Ray Strode <rstrode at redhat.com>,
+ *                    Matthias Clasen <mclasen at redhat.com>,
+ *                    Søren Sandmann <sandmann at redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Originally written by: Ray Strode <rstrode at redhat.com>
+ *
+ * Later contributions by: Matthias Clasen <mclasen at redhat.com>
+ *                         Søren Sandmann <sandmann at redhat.com>
+ */
+
+#include "config.h"
+
+#include <math.h>
+#include <stdlib.h>
+#include <sysexits.h>
+#include <time.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include <gtk/gtk.h>
+
+#include "gs-theme-window.h"
+
+#ifndef trunc
+#define trunc(x) (((x) > 0.0) ? floor((x)) : -floor(-(x)))
+#endif
+
+#ifndef OPTIMAL_FRAME_RATE
+#define OPTIMAL_FRAME_RATE (25.0)
+#endif
+
+#ifndef STAT_PRINT_FREQUENCY
+#define STAT_PRINT_FREQUENCY (2000)
+#endif
+
+#ifndef FLOATER_MAX_SIZE
+#define FLOATER_MAX_SIZE (128.0)
+#endif
+
+#ifndef FLOATER_MIN_SIZE
+#define FLOATER_MIN_SIZE (16.0)
+#endif
+#ifndef FLOATER_DEFAULT_COUNT
+#define FLOATER_DEFAULT_COUNT (5)
+#endif
+
+#ifndef SMALL_ANGLE
+#define SMALL_ANGLE (0.025 * G_PI)
+#endif
+
+#ifndef BIG_ANGLE
+#define BIG_ANGLE (0.125 * G_PI)
+#endif
+
+#ifndef GAMMA
+#define GAMMA 2.2
+#endif
+
+static gboolean should_show_paths = FALSE;
+static gboolean should_do_rotations = FALSE;
+static gboolean should_print_stats = FALSE;
+static gint max_floater_count = FLOATER_DEFAULT_COUNT;
+static gchar *geometry = NULL;
+static gchar **filenames = NULL;
+
+static GOptionEntry options[] =
+{
+	{
+		"show-paths", 'p', 0, G_OPTION_ARG_NONE, &should_show_paths,
+		N_("Show paths that images follow"), NULL
+	},
+
+	{
+		"do-rotations", 'r', 0, G_OPTION_ARG_NONE, &should_do_rotations,
+		N_("Occasionally rotate images as they move"), NULL
+	},
+
+	{
+		"print-stats", 's', 0, G_OPTION_ARG_NONE, &should_print_stats,
+		N_("Print out frame rate and other statistics"), NULL
+	},
+
+	{
+		"number-of-images", 'n', 0, G_OPTION_ARG_INT, &max_floater_count,
+		N_("The maximum number of images to keep on screen"), N_("MAX_IMAGES")
+	},
+
+	{
+		"geometry", 0, 0, G_OPTION_ARG_STRING, &geometry,
+		N_("The initial size and position of window"), N_("WIDTHxHEIGHT+X+Y")
+	},
+
+	{
+		G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames,
+		N_("The source image to use"), NULL
+	},
+
+	{NULL}
+};
+
+
+typedef struct _Point Point;
+typedef struct _Path Path;
+typedef struct _Rectangle Rectangle;
+typedef struct _ScreenSaverFloater ScreenSaverFloater;
+typedef struct _CachedSource CachedSource;
+typedef struct _ScreenSaver ScreenSaver;
+
+struct _Point
+{
+	gdouble x, y;
+};
+
+struct _Path
+{
+	Point start_point;
+	Point start_control_point;
+	Point end_control_point;
+	Point end_point;
+
+	gdouble x_linear_coefficient,
+	        y_linear_coefficient;
+
+	gdouble x_quadratic_coefficient,
+	        y_quadratic_coefficient;
+
+	gdouble x_cubic_coefficient,
+	        y_cubic_coefficient;
+
+	gdouble duration;
+};
+
+struct _CachedSource
+{
+	cairo_pattern_t *pattern;
+	gint width, height;
+};
+
+struct _Rectangle
+{
+	Point top_left_point;
+	Point bottom_right_point;
+};
+
+struct _ScreenSaverFloater
+{
+	GdkRectangle bounds;
+
+	Point start_position;
+	Point position;
+
+	gdouble scale;
+	gdouble opacity;
+
+	Path *path;
+	gdouble path_start_time;
+	gdouble path_start_scale;
+	gdouble path_end_scale;
+
+	gdouble angle;
+	gdouble angle_increment;
+};
+
+struct _ScreenSaver
+{
+	GtkWidget  *drawing_area;
+	Rectangle canvas_rectangle;
+	GHashTable *cached_sources;
+
+	char *filename;
+
+	gdouble first_update_time;
+
+	gdouble last_calculated_stats_time,
+	        current_calculated_stats_time;
+	gint update_count, frame_count;
+
+	gdouble updates_per_second;
+	gdouble frames_per_second;
+
+	guint state_update_timeout_id;
+	guint stats_update_timeout_id;
+
+	GList *floaters;
+	gint max_floater_count;
+
+	guint should_do_rotations: 1;
+	guint should_show_paths : 1;
+	guint draw_ops_pending : 1;
+};
+
+static Path *path_new (Point *start_point,
+                       Point *start_control_point,
+                       Point *end_control_point,
+                       Point *end_point,
+                       gdouble duration);
+static void path_free (Path *path);
+
+static ScreenSaverFloater *screen_saver_floater_new (ScreenSaver *screen_saver,
+        Point       *position,
+        gdouble      scale);
+static void screen_saver_floater_free (ScreenSaver        *screen_saver,
+                                       ScreenSaverFloater *floater);
+static gboolean screen_saver_floater_is_off_canvas (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater);
+static gboolean screen_saver_floater_should_bubble_up (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             performance_ratio,
+        gdouble            *duration);
+static gboolean screen_saver_floater_should_come_on_screen (ScreenSaver   *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             performance_ratio,
+        gdouble            *duration);
+static Point screen_saver_floater_get_position_from_time (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             time);
+static gdouble screen_saver_floater_get_scale_from_time (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             time);
+static gdouble screen_saver_floater_get_angle_from_time (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             time);
+
+static Path *screen_saver_floater_create_path_to_on_screen (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             duration);
+static Path *screen_saver_floater_create_path_to_bubble_up (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             duration);
+static Path *screen_saver_floater_create_path_to_random_point (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             duration);
+static Path *screen_saver_floater_create_path (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater);
+static void screen_saver_floater_update_state (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             time);
+
+static gboolean screen_saver_floater_do_draw (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        cairo_t            *context);
+
+static CachedSource *cached_source_new (cairo_pattern_t *pattern,
+                                        gint             width,
+                                        gint             height);
+static void cached_source_free (CachedSource *source);
+
+static ScreenSaver *screen_saver_new (GtkDrawingArea  *drawing_area,
+                                      const gchar     *filename,
+                                      gint             max_floater_count,
+                                      gboolean         should_do_rotations,
+                                      gboolean         should_show_paths);
+static void screen_saver_free (ScreenSaver *screen_saver);
+static gdouble screen_saver_get_timestamp (ScreenSaver *screen_saver);
+static void screen_saver_get_initial_state (ScreenSaver *screen_saver);
+static void screen_saver_update_state (ScreenSaver *screen_saver,
+                                       gdouble      time);
+static gboolean screen_saver_do_update_state (ScreenSaver *screen_saver);
+static gboolean screen_saver_do_update_stats (ScreenSaver *screen_saver);
+static gdouble screen_saver_get_updates_per_second (ScreenSaver *screen_saver);
+static gdouble screen_saver_get_frames_per_second (ScreenSaver *screen_saver);
+static gdouble screen_saver_get_image_cache_usage (ScreenSaver *screen_saver);
+static void screen_saver_create_floaters (ScreenSaver *screen_saver);
+static void screen_saver_destroy_floaters (ScreenSaver *screen_saver);
+static void screen_saver_on_size_allocate (ScreenSaver   *screen_saver,
+        GtkAllocation *allocation);
+static void screen_saver_on_expose_event (ScreenSaver    *screen_saver,
+        GdkEventExpose *event);
+static gboolean do_print_screen_saver_stats (ScreenSaver *screen_saver);
+static GdkPixbuf *gamma_correct (const GdkPixbuf *input_pixbuf);
+
+static CachedSource*
+cached_source_new (cairo_pattern_t *pattern,
+                   gint              width,
+                   gint             height)
+{
+	CachedSource *source;
+
+	source = g_new (CachedSource, 1);
+	source->pattern = cairo_pattern_reference (pattern);
+	source->width = width;
+	source->height = height;
+
+	return source;
+}
+
+static void
+cached_source_free (CachedSource *source)
+{
+	if (source == NULL)
+		return;
+
+	cairo_pattern_destroy (source->pattern);
+
+	g_free (source);
+}
+
+static Path *
+path_new (Point *start_point,
+          Point *start_control_point,
+          Point *end_control_point,
+          Point *end_point,
+          gdouble duration)
+{
+	Path *path;
+
+	path = g_new (Path, 1);
+	path->start_point = *start_point;
+	path->start_control_point = *start_control_point;
+	path->end_control_point = *end_control_point;
+	path->end_point = *end_point;
+	path->duration = duration;
+
+	/* we precompute the coefficients to the cubic bezier curve here
+	 * so that we don't have to do it repeatedly later The equation is:
+	 *
+	 * B(t) = A * t^3 + B * t^2 + C * t + start_point
+	 */
+	path->x_linear_coefficient = 3 * (start_control_point->x - start_point->x);
+	path->x_quadratic_coefficient = 3 * (end_control_point->x -
+	                                     start_control_point->x) -
+	                                path->x_linear_coefficient;
+	path->x_cubic_coefficient = end_point->x - start_point->x -
+	                            path->x_linear_coefficient -
+	                            path->x_quadratic_coefficient;
+
+	path->y_linear_coefficient = 3 * (start_control_point->y - start_point->y);
+	path->y_quadratic_coefficient = 3 * (end_control_point->y -
+	                                     start_control_point->y) -
+	                                path->y_linear_coefficient;
+	path->y_cubic_coefficient = end_point->y - start_point->y -
+	                            path->y_linear_coefficient -
+	                            path->y_quadratic_coefficient;
+	return path;
+}
+
+static void
+path_free (Path *path)
+{
+	g_free (path);
+}
+
+static ScreenSaverFloater*
+screen_saver_floater_new (ScreenSaver *screen_saver,
+                          Point       *position,
+                          gdouble      scale)
+{
+	ScreenSaverFloater *floater;
+
+	floater = g_new (ScreenSaverFloater, 1);
+	floater->bounds.width = 0;
+	floater->start_position = *position;
+	floater->position = *position;
+	floater->scale = scale;
+	floater->opacity = pow (scale, 1.0 / GAMMA);
+	floater->path = NULL;
+	floater->path_start_time = 0.0;
+	floater->path_start_scale = 1.0;
+	floater->path_end_scale = 0.0;
+
+	floater->angle = 0.0;
+	floater->angle_increment = 0.0;
+
+	return floater;
+}
+
+void
+screen_saver_floater_free (ScreenSaver        *screen_saver,
+                           ScreenSaverFloater *floater)
+{
+	if (floater == NULL)
+		return;
+
+	path_free (floater->path);
+
+	g_free (floater);
+}
+
+static gboolean
+screen_saver_floater_is_off_canvas (ScreenSaver        *screen_saver,
+                                    ScreenSaverFloater *floater)
+{
+	if ((floater->position.x < screen_saver->canvas_rectangle.top_left_point.x) ||
+	        (floater->position.x > screen_saver->canvas_rectangle.bottom_right_point.x) ||
+	        (floater->position.y < screen_saver->canvas_rectangle.top_left_point.y) ||
+	        (floater->position.y > screen_saver->canvas_rectangle.bottom_right_point.y))
+		return TRUE;
+
+	return FALSE;
+}
+
+static gboolean
+screen_saver_floater_should_come_on_screen (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             performance_ratio,
+        gdouble            *duration)
+{
+
+	if (!screen_saver_floater_is_off_canvas (screen_saver, floater))
+		return FALSE;
+
+	if ((abs (performance_ratio - .5) >= G_MINDOUBLE) &&
+	        (g_random_double () > .5))
+	{
+		if (duration)
+			*duration = g_random_double_range (3.0, 7.0);
+
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static gboolean
+screen_saver_floater_should_bubble_up (ScreenSaver        *screen_saver,
+                                       ScreenSaverFloater *floater,
+                                       gdouble             performance_ratio,
+                                       gdouble            *duration)
+{
+
+	if ((performance_ratio < .5) && (g_random_double () > .5))
+	{
+		if (duration)
+			*duration = performance_ratio * 30.0;
+
+		return TRUE;
+	}
+
+	if ((floater->scale < .3) && (g_random_double () > .6))
+	{
+		if (duration)
+			*duration = 30.0;
+
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static Point
+screen_saver_floater_get_position_from_time (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             time)
+{
+	Point point;
+
+	time = time / floater->path->duration;
+
+	point.x = floater->path->x_cubic_coefficient * (time * time * time) +
+	          floater->path->x_quadratic_coefficient * (time * time) +
+	          floater->path->x_linear_coefficient * (time) +
+	          floater->path->start_point.x;
+	point.y = floater->path->y_cubic_coefficient * (time * time * time) +
+	          floater->path->y_quadratic_coefficient * (time * time) +
+	          floater->path->y_linear_coefficient * (time) +
+	          floater->path->start_point.y;
+
+	return point;
+}
+
+static gdouble
+screen_saver_floater_get_scale_from_time (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             time)
+{
+	gdouble completion_ratio, total_scale_growth, new_scale;
+
+	completion_ratio = time / floater->path->duration;
+	total_scale_growth = (floater->path_end_scale - floater->path_start_scale);
+	new_scale = floater->path_start_scale + total_scale_growth * completion_ratio;
+
+	return CLAMP (new_scale, 0.0, 1.0);
+}
+
+static gdouble
+screen_saver_floater_get_angle_from_time (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             time)
+{
+	gdouble completion_ratio;
+	gdouble total_rotation;
+
+	completion_ratio = time / floater->path->duration;
+	total_rotation = floater->angle_increment * floater->path->duration;
+
+	return floater->angle + total_rotation * completion_ratio;
+}
+
+static Path *
+screen_saver_floater_create_path_to_on_screen (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             duration)
+{
+	Point start_position, end_position, start_control_point, end_control_point;
+	start_position = floater->position;
+
+	end_position.x = g_random_double_range (.25, .75) *
+	                 (screen_saver->canvas_rectangle.top_left_point.x +
+	                  screen_saver->canvas_rectangle.bottom_right_point.x);
+	end_position.y = g_random_double_range (.25, .75) *
+	                 (screen_saver->canvas_rectangle.top_left_point.y +
+	                  screen_saver->canvas_rectangle.bottom_right_point.y);
+
+	start_control_point.x = start_position.x + .9 * (end_position.x - start_position.x);
+	start_control_point.y = start_position.y + .9 * (end_position.y - start_position.y);
+
+	end_control_point.x = start_position.x + 1.0 * (end_position.x - start_position.x);
+	end_control_point.y = start_position.y + 1.0 * (end_position.y - start_position.y);
+
+	return path_new (&start_position, &start_control_point, &end_control_point,
+	                 &end_position, duration);
+}
+
+static Path *
+screen_saver_floater_create_path_to_bubble_up (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             duration)
+{
+	Point start_position, end_position, start_control_point, end_control_point;
+
+	start_position = floater->position;
+	end_position.x = start_position.x;
+	end_position.y = screen_saver->canvas_rectangle.top_left_point.y - FLOATER_MAX_SIZE;
+	start_control_point.x = .5 * start_position.x;
+	start_control_point.y = .5 * start_position.y;
+	end_control_point.x = 1.5 * end_position.x;
+	end_control_point.y = .5 * end_position.y;
+
+	return path_new (&start_position, &start_control_point, &end_control_point,
+	                 &end_position, duration);
+}
+
+static Path *
+screen_saver_floater_create_path_to_random_point (ScreenSaver        *screen_saver,
+        ScreenSaverFloater *floater,
+        gdouble             duration)
+{
+	Point start_position, end_position, start_control_point, end_control_point;
+
+	start_position = floater->position;
+
+	end_position.x = start_position.x +
+	                 (g_random_double_range (-.5, .5) * 4 * FLOATER_MAX_SIZE);
+	end_position.y = start_position.y +
+	                 (g_random_double_range (-.5, .5) * 4 * FLOATER_MAX_SIZE);
+
+	start_control_point.x = start_position.x + .95 * (end_position.x - start_position.x);
+	start_control_point.y = start_position.y + .95 * (end_position.y - start_position.y);
+
+	end_control_point.x = start_position.x + 1.0 * (end_position.x - start_position.x);
+	end_control_point.y = start_position.y + 1.0 * (end_position.y - start_position.y);
+
+	return path_new (&start_position, &start_control_point, &end_control_point,
+	                 &end_position, duration);
+}
+
+static Path *
+screen_saver_floater_create_path (ScreenSaver        *screen_saver,
+                                  ScreenSaverFloater *floater)
+{
+	gdouble performance_ratio;
+	gdouble duration;
+
+	performance_ratio =
+	    screen_saver_get_frames_per_second (screen_saver) / OPTIMAL_FRAME_RATE;
+
+	if (abs (performance_ratio) <= G_MINDOUBLE)
+		performance_ratio = 1.0;
+
+	if (screen_saver_floater_should_bubble_up (screen_saver, floater, performance_ratio, &duration))
+		return screen_saver_floater_create_path_to_bubble_up (screen_saver, floater, duration);
+
+	if (screen_saver_floater_should_come_on_screen (screen_saver, floater, performance_ratio, &duration))
+		return screen_saver_floater_create_path_to_on_screen (screen_saver, floater, duration);
+
+	return screen_saver_floater_create_path_to_random_point (screen_saver, floater,
+	        g_random_double_range (3.0, 7.0));
+}
+
+static void
+screen_saver_floater_update_state (ScreenSaver        *screen_saver,
+                                   ScreenSaverFloater *floater,
+                                   gdouble             time)
+{
+	gdouble performance_ratio;
+
+	performance_ratio =
+	    screen_saver_get_frames_per_second (screen_saver) / OPTIMAL_FRAME_RATE;
+
+	if (floater->path == NULL)
+	{
+		floater->path = screen_saver_floater_create_path (screen_saver, floater);
+		floater->path_start_time = time;
+
+		floater->path_start_scale = floater->scale;
+
+		if (g_random_double () > .5)
+			floater->path_end_scale = g_random_double_range (0.10, performance_ratio);
+
+		/* poor man's distribution */
+		if (screen_saver->should_do_rotations &&
+		        (g_random_double () < .75 * performance_ratio))
+		{
+			gint r;
+
+			r = g_random_int_range (0, 100);
+			if (r < 80)
+				floater->angle_increment = 0.0;
+			else if (r < 95)
+				floater->angle_increment = g_random_double_range (-SMALL_ANGLE, SMALL_ANGLE);
+			else
+				floater->angle_increment = g_random_double_range (-BIG_ANGLE, BIG_ANGLE);
+		}
+	}
+
+	if (time < (floater->path_start_time + floater->path->duration))
+	{
+		gdouble path_time;
+
+		path_time = time - floater->path_start_time;
+
+		floater->position =
+		    screen_saver_floater_get_position_from_time (screen_saver, floater,
+		            path_time);
+		floater->scale =
+		    screen_saver_floater_get_scale_from_time (screen_saver, floater, path_time);
+
+		floater->angle =
+		    screen_saver_floater_get_angle_from_time (screen_saver, floater, path_time);
+
+		floater->opacity = pow (floater->scale, 1.0 / GAMMA);
+	}
+	else
+	{
+		path_free (floater->path);
+
+		floater->path = NULL;
+		floater->path_start_time = 0.0;
+	}
+}
+
+static GdkPixbuf *
+gamma_correct (const GdkPixbuf *input_pixbuf)
+{
+	gint x, y, width, height, rowstride;
+	GdkPixbuf *output_pixbuf;
+	guchar *pixels;
+
+	output_pixbuf = gdk_pixbuf_copy (input_pixbuf);
+	pixels = gdk_pixbuf_get_pixels (output_pixbuf);
+
+	width = gdk_pixbuf_get_width (output_pixbuf);
+	height = gdk_pixbuf_get_height (output_pixbuf);
+	rowstride = gdk_pixbuf_get_rowstride (output_pixbuf);
+
+	for (y = 0; y < height; y++)
+		for (x = 0; x < width; x++)
+		{
+			guchar *alpha_channel;
+			guchar opacity;
+
+			alpha_channel = pixels + y * (rowstride / 4) + x + 3;
+			opacity = (guchar) (255 * pow ((*alpha_channel / 255.0), 1.0 / GAMMA));
+
+			*alpha_channel = opacity;
+		}
+
+	return output_pixbuf;
+}
+
+static gboolean
+screen_saver_floater_do_draw (ScreenSaver        *screen_saver,
+                              ScreenSaverFloater *floater,
+                              cairo_t            *context)
+{
+	gint size;
+	CachedSource *source;
+
+	size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->scale),
+	              FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
+
+	source = g_hash_table_lookup (screen_saver->cached_sources, GINT_TO_POINTER (size));
+
+	if (source == NULL)
+	{
+		GdkPixbuf *pixbuf;
+		GError *error;
+
+		pixbuf = NULL;
+		error = NULL;
+
+		pixbuf = gdk_pixbuf_new_from_file_at_size (screen_saver->filename, size, -1,
+		         &error);
+		if (pixbuf == NULL)
+		{
+			g_assert (error != NULL);
+			g_printerr ("%s", _(error->message));
+			g_error_free (error);
+			return FALSE;
+		}
+
+		if (gdk_pixbuf_get_has_alpha (pixbuf))
+			gamma_correct (pixbuf);
+
+		gdk_cairo_set_source_pixbuf (context, pixbuf, 0.0, 0.0);
+
+		source = cached_source_new (cairo_get_source (context),
+		                            gdk_pixbuf_get_width (pixbuf),
+		                            gdk_pixbuf_get_height (pixbuf));
+		g_object_unref (pixbuf);
+		g_hash_table_insert (screen_saver->cached_sources, GINT_TO_POINTER (size),
+		                     source);
+	}
+
+	cairo_save (context);
+
+	if (screen_saver->should_do_rotations && (abs (floater->angle) > G_MINDOUBLE))
+	{
+		floater->bounds.width = G_SQRT2 * source->width + 2;
+		floater->bounds.height = G_SQRT2 * source->height + 2;
+		floater->bounds.x = (int) (floater->position.x - .5 * G_SQRT2 * source->width) - 1;
+		floater->bounds.y = (int) (floater->position.y - .5 * G_SQRT2 * source->height) - 1;
+
+		cairo_translate (context,
+		                 trunc (floater->position.x),
+		                 trunc (floater->position.y));
+		cairo_rotate (context, floater->angle);
+		cairo_translate (context,
+		                 -trunc (floater->position.x),
+		                 -trunc (floater->position.y));
+	}
+	else
+	{
+		floater->bounds.width = source->width + 2;
+		floater->bounds.height = source->height + 2;
+		floater->bounds.x = (int) (floater->position.x - .5 * source->width) - 1;
+		floater->bounds.y = (int) (floater->position.y - .5 * source->height) - 1;
+	}
+
+	cairo_translate (context,
+	                 trunc (floater->position.x - .5 * source->width),
+	                 trunc (floater->position.y - .5 * source->height));
+
+	cairo_set_source (context, source->pattern);
+
+	cairo_rectangle (context,
+	                 trunc (.5 * (source->width - floater->bounds.width)),
+	                 trunc (.5 * (source->height - floater->bounds.height)),
+	                 floater->bounds.width, floater->bounds.height);
+
+	cairo_clip (context);
+	cairo_paint_with_alpha (context, floater->opacity);
+	cairo_restore (context);
+
+	if (screen_saver->should_show_paths && (floater->path != NULL))
+	{
+		gdouble dash_pattern[] = { 5.0 };
+		gint size;
+
+		size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->path_start_scale),
+		              FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
+
+		cairo_save (context);
+		cairo_set_source_rgba (context, 1.0, 1.0, 1.0, .2 * floater->opacity);
+		cairo_move_to (context,
+		               floater->path->start_point.x,
+		               floater->path->start_point.y);
+		cairo_curve_to (context,
+		                floater->path->start_control_point.x,
+		                floater->path->start_control_point.y,
+		                floater->path->end_control_point.x,
+		                floater->path->end_control_point.y,
+		                floater->path->end_point.x,
+		                floater->path->end_point.y);
+		cairo_set_line_cap (context, CAIRO_LINE_CAP_ROUND);
+		cairo_stroke (context);
+		cairo_set_source_rgba (context, 1.0, 0.0, 0.0, .5 * floater->opacity);
+		cairo_rectangle (context,
+		                 floater->path->start_point.x - 3,
+		                 floater->path->start_point.y - 3,
+		                 6, 6);
+		cairo_fill (context);
+		cairo_set_source_rgba (context, 0.0, 0.5, 0.0, .5 * floater->opacity);
+		cairo_arc (context,
+		           floater->path->start_control_point.x,
+		           floater->path->start_control_point.y,
+		           3, 0.0, 2.0 * G_PI);
+		cairo_stroke (context);
+		cairo_set_source_rgba (context, 0.5, 0.0, 0.5, .5 * floater->opacity);
+		cairo_arc (context,
+		           floater->path->end_control_point.x,
+		           floater->path->end_control_point.y,
+		           3, 0.0, 2.0 * G_PI);
+		cairo_stroke (context);
+		cairo_set_source_rgba (context, 0.0, 0.0, 1.0, .5 * floater->opacity);
+		cairo_rectangle (context,
+		                 floater->path->end_point.x - 3,
+		                 floater->path->end_point.y - 3,
+		                 6, 6);
+		cairo_fill (context);
+
+		cairo_set_dash (context, dash_pattern, G_N_ELEMENTS (dash_pattern), 0);
+		cairo_set_source_rgba (context, .5, .5, .5, .2 * floater->scale);
+		cairo_move_to (context, floater->path->start_point.x,
+		               floater->path->start_point.y);
+		cairo_line_to (context, floater->path->start_control_point.x,
+		               floater->path->start_control_point.y);
+		cairo_stroke (context);
+
+		cairo_move_to (context, floater->path->end_point.x,
+		               floater->path->end_point.y);
+		cairo_line_to (context, floater->path->end_control_point.x,
+		               floater->path->end_control_point.y);
+		cairo_stroke (context);
+
+		cairo_restore (context);
+	}
+
+	return TRUE;
+}
+
+static ScreenSaver *
+screen_saver_new (GtkDrawingArea  *drawing_area,
+                  const gchar     *filename,
+                  gint             max_floater_count,
+                  gboolean         should_do_rotations,
+                  gboolean         should_show_paths)
+{
+	ScreenSaver *screen_saver;
+
+	screen_saver = g_new (ScreenSaver, 1);
+	screen_saver->filename = g_strdup (filename);
+	screen_saver->drawing_area = GTK_WIDGET (drawing_area);
+	screen_saver->cached_sources =
+	    g_hash_table_new_full (NULL, NULL, NULL,
+	                           (GDestroyNotify) cached_source_free);
+
+	g_signal_connect_swapped (G_OBJECT (drawing_area), "size-allocate",
+	                          G_CALLBACK (screen_saver_on_size_allocate),
+	                          screen_saver);
+
+	g_signal_connect_swapped (G_OBJECT (drawing_area), "expose-event",
+	                          G_CALLBACK (screen_saver_on_expose_event),
+	                          screen_saver);
+
+	screen_saver->first_update_time = 0.0;
+	screen_saver->current_calculated_stats_time = 0.0;
+	screen_saver->last_calculated_stats_time = 0.0;
+	screen_saver->update_count = 0;
+	screen_saver->frame_count = 0;
+	screen_saver->updates_per_second = 0.0;
+	screen_saver->frames_per_second = 0.0;
+	screen_saver->floaters = NULL;
+	screen_saver->max_floater_count = max_floater_count;
+
+	screen_saver->should_show_paths = should_show_paths;
+	screen_saver->should_do_rotations = should_do_rotations;
+
+	screen_saver_get_initial_state (screen_saver);
+
+	screen_saver->state_update_timeout_id =
+	    g_timeout_add (1000 / (2.0 * OPTIMAL_FRAME_RATE),
+	                   (GSourceFunc) screen_saver_do_update_state, screen_saver);
+
+	screen_saver->stats_update_timeout_id =
+	    g_timeout_add (1000, (GSourceFunc) screen_saver_do_update_stats,
+	                   screen_saver);
+
+	return screen_saver;
+}
+
+static void
+screen_saver_free (ScreenSaver *screen_saver)
+{
+	if (screen_saver == NULL)
+		return;
+
+	g_free (screen_saver->filename);
+
+	g_hash_table_destroy (screen_saver->cached_sources);
+
+	if (screen_saver->state_update_timeout_id != 0)
+		g_source_remove (screen_saver->state_update_timeout_id);
+
+	if (screen_saver->stats_update_timeout_id != 0)
+		g_source_remove (screen_saver->stats_update_timeout_id);
+
+	screen_saver_destroy_floaters (screen_saver);
+
+	g_free (screen_saver);
+}
+
+static gdouble
+screen_saver_get_timestamp (ScreenSaver *screen_saver)
+{
+	const gdouble microseconds_per_second = (gdouble ) G_USEC_PER_SEC;
+	gdouble timestamp;
+	GTimeVal now = { 0L, /* zero-filled */ };
+
+	g_get_current_time (&now);
+	timestamp = ((microseconds_per_second * now.tv_sec) + now.tv_usec) /
+	            microseconds_per_second;
+
+	return timestamp;
+}
+
+static void
+screen_saver_create_floaters (ScreenSaver *screen_saver)
+{
+	gint i;
+
+	for (i = 0; i < screen_saver->max_floater_count; i++)
+	{
+		ScreenSaverFloater *floater;
+		Point position;
+		gdouble scale;
+
+		position.x = g_random_double_range (screen_saver->canvas_rectangle.top_left_point.x,
+		                                    screen_saver->canvas_rectangle.bottom_right_point.x);
+		position.y = g_random_double_range (screen_saver->canvas_rectangle.top_left_point.y,
+		                                    screen_saver->canvas_rectangle.bottom_right_point.y);
+
+		scale = g_random_double ();
+
+		floater = screen_saver_floater_new (screen_saver, &position, scale);
+
+		screen_saver->floaters = g_list_prepend (screen_saver->floaters,
+		                         floater);
+	}
+}
+
+static gdouble
+screen_saver_get_updates_per_second (ScreenSaver *screen_saver)
+{
+	return screen_saver->updates_per_second;
+}
+
+static gdouble
+screen_saver_get_frames_per_second (ScreenSaver *screen_saver)
+{
+	return screen_saver->frames_per_second;
+}
+
+static gdouble
+screen_saver_get_image_cache_usage (ScreenSaver *screen_saver)
+{
+	static const gdouble cache_capacity = (FLOATER_MAX_SIZE - FLOATER_MIN_SIZE + 1);
+
+	return g_hash_table_size (screen_saver->cached_sources) / cache_capacity;
+}
+
+static void
+screen_saver_destroy_floaters (ScreenSaver *screen_saver)
+{
+	if (screen_saver->floaters == NULL)
+		return;
+
+	g_list_foreach (screen_saver->floaters, (GFunc) screen_saver_floater_free,
+	                NULL);
+	g_list_free (screen_saver->floaters);
+
+	screen_saver->floaters = NULL;
+}
+
+static void
+screen_saver_on_size_allocate (ScreenSaver   *screen_saver,
+                               GtkAllocation *allocation)
+{
+	Rectangle canvas_rectangle;
+
+	canvas_rectangle.top_left_point.x = allocation->x - .1 * allocation->width;
+	canvas_rectangle.top_left_point.y = allocation->y - .1 * allocation->height;
+
+	canvas_rectangle.bottom_right_point.x = allocation->x + (1.1 * allocation->width);
+	canvas_rectangle.bottom_right_point.y = allocation->y + (1.1 * allocation->height);
+
+	screen_saver->canvas_rectangle = canvas_rectangle;
+}
+
+static gint
+compare_floaters (ScreenSaverFloater *a,
+                  ScreenSaverFloater *b)
+{
+	if (a->scale > b->scale)
+		return 1;
+	else if (abs (a->scale - b->scale) <= G_MINDOUBLE)
+		return 0;
+	else
+		return -1;
+}
+
+static void
+screen_saver_on_expose_event (ScreenSaver    *screen_saver,
+                              GdkEventExpose *event)
+{
+	GList *tmp;
+	cairo_t *context;
+
+	if (screen_saver->floaters == NULL)
+		screen_saver_create_floaters (screen_saver);
+
+	context = gdk_cairo_create (screen_saver->drawing_area->window);
+
+	cairo_rectangle (context,
+	                 (double) event->area.x,
+	                 (double) event->area.y,
+	                 (double) event->area.width,
+	                 (double) event->area.height);
+	cairo_clip (context);
+
+	screen_saver->floaters = g_list_sort (screen_saver->floaters,
+	                                      (GCompareFunc)compare_floaters);
+
+	for (tmp = screen_saver->floaters; tmp != NULL; tmp = tmp->next)
+	{
+		ScreenSaverFloater *floater;
+		GdkRectangle rect;
+		gint size;
+
+		floater = (ScreenSaverFloater *) tmp->data;
+
+		size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->scale),
+		              FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
+
+		rect.x = (int) (floater->position.x - .5 * G_SQRT2 * size);
+		rect.y = (int) (floater->position.y - .5 * G_SQRT2 * size);
+		rect.width = G_SQRT2 * size;
+		rect.height = G_SQRT2 * size;
+
+		if (!gdk_region_rect_in (event->region, &rect))
+			continue;
+
+		if (!screen_saver_floater_do_draw (screen_saver, floater, context))
+		{
+			gtk_main_quit ();
+			break;
+		}
+	}
+
+	cairo_destroy (context);
+
+	screen_saver->draw_ops_pending = TRUE;
+	screen_saver->frame_count++;
+}
+
+static void
+screen_saver_update_state (ScreenSaver *screen_saver,
+                           gdouble      time)
+{
+	GList *tmp;
+
+	tmp = screen_saver->floaters;
+	while (tmp != NULL)
+	{
+		ScreenSaverFloater *floater;
+		floater = (ScreenSaverFloater *) tmp->data;
+
+		screen_saver_floater_update_state (screen_saver, floater, time);
+
+		if (GTK_WIDGET_REALIZED (screen_saver->drawing_area)
+		        && (floater->bounds.width > 0) && (floater->bounds.height > 0))
+		{
+			gint size;
+			size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->scale),
+			              FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
+
+			gtk_widget_queue_draw_area (screen_saver->drawing_area,
+			                            floater->bounds.x,
+			                            floater->bounds.y,
+			                            floater->bounds.width,
+			                            floater->bounds.height);
+
+			/* the edges could concievably be spread across two
+			 * pixels so we add +2 to invalidated region
+			 */
+			if (screen_saver->should_do_rotations)
+				gtk_widget_queue_draw_area (screen_saver->drawing_area,
+				                            (int) (floater->position.x -
+				                                   .5 * G_SQRT2 * size),
+				                            (int) (floater->position.y -
+				                                   .5 * G_SQRT2 * size),
+				                            G_SQRT2 * size + 2,
+				                            G_SQRT2 * size + 2);
+			else
+				gtk_widget_queue_draw_area (screen_saver->drawing_area,
+				                            (int) (floater->position.x -
+				                                   .5 * size),
+				                            (int) (floater->position.y -
+				                                   .5 * size),
+				                            size + 2, size + 2);
+
+			if  (screen_saver->should_show_paths)
+				gtk_widget_queue_draw (screen_saver->drawing_area);
+		}
+
+		tmp = tmp->next;
+	}
+}
+
+static void
+screen_saver_get_initial_state (ScreenSaver *screen_saver)
+{
+	screen_saver->first_update_time = screen_saver_get_timestamp (screen_saver);
+	screen_saver_update_state (screen_saver, 0.0);
+}
+
+static gboolean
+screen_saver_do_update_state (ScreenSaver *screen_saver)
+{
+	gdouble current_update_time;
+
+	/* flush pending requests to the X server and block for
+	 * replies before proceeding to help prevent the X server from
+	 * getting overrun with requests
+	 */
+	if (screen_saver->draw_ops_pending)
+	{
+		gdk_flush ();
+		screen_saver->draw_ops_pending = FALSE;
+	}
+
+	current_update_time = screen_saver_get_timestamp (screen_saver);
+	screen_saver_update_state (screen_saver, current_update_time -
+	                           screen_saver->first_update_time);
+	screen_saver->update_count++;
+	return TRUE;
+}
+
+static gboolean
+screen_saver_do_update_stats (ScreenSaver *screen_saver)
+{
+	gdouble last_calculated_stats_time, seconds_since_last_stats_update;
+
+	last_calculated_stats_time = screen_saver->current_calculated_stats_time;
+	screen_saver->current_calculated_stats_time =
+	    screen_saver_get_timestamp (screen_saver);
+	screen_saver->last_calculated_stats_time = last_calculated_stats_time;
+
+	if (abs (last_calculated_stats_time) <= G_MINDOUBLE)
+		return TRUE;
+
+	seconds_since_last_stats_update =
+	    screen_saver->current_calculated_stats_time - last_calculated_stats_time;
+
+	screen_saver->updates_per_second =
+	    screen_saver->update_count / seconds_since_last_stats_update;
+	screen_saver->frames_per_second =
+	    screen_saver->frame_count / seconds_since_last_stats_update;
+
+	screen_saver->update_count = 0;
+	screen_saver->frame_count = 0;
+
+	return TRUE;
+}
+
+static gboolean
+do_print_screen_saver_stats (ScreenSaver *screen_saver)
+{
+
+	g_print ("updates per second: %.2f, frames per second: %.2f, "
+	         "image cache %.0f%% full\n",
+	         screen_saver_get_updates_per_second (screen_saver),
+	         screen_saver_get_frames_per_second (screen_saver),
+	         screen_saver_get_image_cache_usage (screen_saver) * 100.0);
+
+	return TRUE;
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+	ScreenSaver *screen_saver;
+	GtkWidget *window;
+	GtkWidget *drawing_area;
+
+	GtkStateType state;
+
+	GError *error;
+
+	error = NULL;
+
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	gtk_init_with_args (&argc, &argv,
+	                    /* translators: the word "image" here
+	                     * represents a command line argument
+	                     */
+	                    _("image - floats images around the screen"),
+	                    options, GETTEXT_PACKAGE, &error);
+
+
+	if (error != NULL)
+	{
+		g_printerr (_("%s. See --help for usage information.\n"),
+		            _(error->message));
+		g_error_free (error);
+		return EX_SOFTWARE;
+	}
+
+	if ((filenames == NULL) || (filenames[0] == NULL) ||
+	        (filenames[1] != NULL))
+	{
+		g_printerr (_("You must specify one image.  See --help for usage "
+		              "information.\n"));
+		return EX_USAGE;
+	}
+
+	window = gs_theme_window_new ();
+
+	g_signal_connect (G_OBJECT (window), "delete-event",
+	                  G_CALLBACK (gtk_main_quit), NULL);
+
+	drawing_area = gtk_drawing_area_new ();
+
+	state = (GtkStateType) 0;
+	while (state < (GtkStateType) G_N_ELEMENTS (drawing_area->style->bg))
+	{
+		gtk_widget_modify_bg (drawing_area, state, &drawing_area->style->mid[state]);
+		state++;
+	}
+
+	gtk_widget_show (drawing_area);
+	gtk_container_add (GTK_CONTAINER (window), drawing_area);
+
+	screen_saver = screen_saver_new (GTK_DRAWING_AREA (drawing_area),
+	                                 filenames[0], max_floater_count,
+	                                 should_do_rotations, should_show_paths);
+	g_strfreev (filenames);
+
+	if (should_print_stats)
+		g_timeout_add (STAT_PRINT_FREQUENCY,
+		               (GSourceFunc) do_print_screen_saver_stats,
+		               screen_saver);
+
+	if ((geometry == NULL)
+	        || !gtk_window_parse_geometry (GTK_WINDOW (window), geometry))
+		gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
+
+	gtk_widget_show (window);
+
+	gtk_main ();
+
+	screen_saver_free (screen_saver);
+
+	return EX_OK;
+}
diff --git a/savers/floaters.c.orig b/savers/floaters.c.orig
new file mode 100644
index 0000000..1fd84f5
--- /dev/null
+++ b/savers/floaters.c.orig
@@ -0,0 +1,1256 @@
+/*
+ * Copyright (C) 2005 Ray Strode <rstrode at redhat.com>,
+ *                    Matthias Clasen <mclasen at redhat.com>,
+ *                    Søren Sandmann <sandmann at redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Originally written by: Ray Strode <rstrode at redhat.com>
+ *
+ * Later contributions by: Matthias Clasen <mclasen at redhat.com>
+ *                         Søren Sandmann <sandmann at redhat.com>
+ */
+
+#include "config.h"
+
+#include <math.h>
+#include <stdlib.h>
+#include <sysexits.h>
+#include <time.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include <gtk/gtk.h>
+
+#include "gs-theme-window.h"
+
+#ifndef trunc
+#define trunc(x) (((x) > 0.0) ? floor((x)) : -floor(-(x)))
+#endif
+
+#ifndef OPTIMAL_FRAME_RATE
+#define OPTIMAL_FRAME_RATE (25.0)
+#endif
+
+#ifndef STAT_PRINT_FREQUENCY
+#define STAT_PRINT_FREQUENCY (2000)
+#endif
+
+#ifndef FLOATER_MAX_SIZE
+#define FLOATER_MAX_SIZE (128.0)
+#endif
+
+#ifndef FLOATER_MIN_SIZE
+#define FLOATER_MIN_SIZE (16.0)
+#endif
+#ifndef FLOATER_DEFAULT_COUNT
+#define FLOATER_DEFAULT_COUNT (5)
+#endif
+
+#ifndef SMALL_ANGLE
+#define SMALL_ANGLE (0.025 * G_PI)
+#endif
+
+#ifndef BIG_ANGLE
+#define BIG_ANGLE (0.125 * G_PI)
+#endif
+
+#ifndef GAMMA
+#define GAMMA 2.2
+#endif
+
+static gboolean should_show_paths = FALSE;
+static gboolean should_do_rotations = FALSE;
+static gboolean should_print_stats = FALSE;
+static gint max_floater_count = FLOATER_DEFAULT_COUNT;
+static gchar *geometry = NULL;
+static gchar **filenames = NULL;
+
+static GOptionEntry options[] = {
+       {"show-paths", 'p', 0, G_OPTION_ARG_NONE, &should_show_paths,
+            N_("Show paths that images follow"), NULL},
+
+       {"do-rotations", 'r', 0, G_OPTION_ARG_NONE, &should_do_rotations,
+            N_("Occasionally rotate images as they move"), NULL},
+
+       {"print-stats", 's', 0, G_OPTION_ARG_NONE, &should_print_stats,
+            N_("Print out frame rate and other statistics"), NULL},
+
+       {"number-of-images", 'n', 0, G_OPTION_ARG_INT, &max_floater_count,
+             N_("The maximum number of images to keep on screen"), N_("MAX_IMAGES")},
+
+       {"geometry", 0, 0, G_OPTION_ARG_STRING, &geometry,
+             N_("The initial size and position of window"), N_("WIDTHxHEIGHT+X+Y")},
+
+       {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames,
+            N_("The source image to use"), NULL},
+
+       {NULL}
+};
+
+
+typedef struct _Point Point;
+typedef struct _Path Path;
+typedef struct _Rectangle Rectangle;
+typedef struct _ScreenSaverFloater ScreenSaverFloater;
+typedef struct _CachedSource CachedSource;
+typedef struct _ScreenSaver ScreenSaver;
+
+struct _Point
+{
+  gdouble x, y;
+};
+
+struct _Path
+{
+  Point start_point;
+  Point start_control_point;
+  Point end_control_point;
+  Point end_point;
+
+  gdouble x_linear_coefficient,
+          y_linear_coefficient;
+
+  gdouble x_quadratic_coefficient,
+          y_quadratic_coefficient;
+
+  gdouble x_cubic_coefficient,
+          y_cubic_coefficient;
+
+  gdouble duration;
+};
+
+struct _CachedSource
+{
+  cairo_pattern_t *pattern;
+  gint width, height;
+};
+
+struct _Rectangle
+{
+  Point top_left_point;
+  Point bottom_right_point;
+};
+
+struct _ScreenSaverFloater
+{
+  GdkRectangle bounds;
+
+  Point start_position;
+  Point position;
+
+  gdouble scale;
+  gdouble opacity;
+
+  Path *path;
+  gdouble path_start_time;
+  gdouble path_start_scale;
+  gdouble path_end_scale;
+
+  gdouble angle;
+  gdouble angle_increment;
+};
+
+struct _ScreenSaver
+{
+  GtkWidget  *drawing_area;
+  Rectangle canvas_rectangle;
+  GHashTable *cached_sources;
+
+  char *filename;
+
+  gdouble first_update_time;
+
+  gdouble last_calculated_stats_time,
+          current_calculated_stats_time;
+  gint update_count, frame_count;
+
+  gdouble updates_per_second;
+  gdouble frames_per_second;
+
+  guint state_update_timeout_id;
+  guint stats_update_timeout_id;
+
+  GList *floaters;
+  gint max_floater_count;
+
+  guint should_do_rotations: 1;
+  guint should_show_paths : 1;
+  guint draw_ops_pending : 1;
+};
+
+static Path *path_new (Point *start_point,
+                       Point *start_control_point,
+                       Point *end_control_point,
+                       Point *end_point,
+                       gdouble duration);
+static void path_free (Path *path);
+
+static ScreenSaverFloater *screen_saver_floater_new (ScreenSaver *screen_saver,
+                                                     Point       *position,
+                                                     gdouble      scale);
+static void screen_saver_floater_free (ScreenSaver        *screen_saver,
+                                       ScreenSaverFloater *floater);
+static gboolean screen_saver_floater_is_off_canvas (ScreenSaver        *screen_saver,
+                                                    ScreenSaverFloater *floater);
+static gboolean screen_saver_floater_should_bubble_up (ScreenSaver        *screen_saver,
+                                                       ScreenSaverFloater *floater,
+                                                       gdouble             performance_ratio,
+                                                       gdouble            *duration);
+static gboolean screen_saver_floater_should_come_on_screen (ScreenSaver   *screen_saver,
+                                                            ScreenSaverFloater *floater,
+                                                            gdouble             performance_ratio,
+                                                            gdouble            *duration);
+static Point screen_saver_floater_get_position_from_time (ScreenSaver        *screen_saver,
+                                                          ScreenSaverFloater *floater,
+                                                          gdouble             time);
+static gdouble screen_saver_floater_get_scale_from_time (ScreenSaver        *screen_saver,
+                                                         ScreenSaverFloater *floater,
+                                                         gdouble             time);
+static gdouble screen_saver_floater_get_angle_from_time (ScreenSaver        *screen_saver,
+                                                         ScreenSaverFloater *floater,
+                                                         gdouble             time);
+
+static Path *screen_saver_floater_create_path_to_on_screen (ScreenSaver        *screen_saver,
+                                                            ScreenSaverFloater *floater,
+                                                            gdouble             duration);
+static Path *screen_saver_floater_create_path_to_bubble_up (ScreenSaver        *screen_saver,
+                                                            ScreenSaverFloater *floater,
+                                                            gdouble             duration);
+static Path *screen_saver_floater_create_path_to_random_point (ScreenSaver        *screen_saver,
+                                                               ScreenSaverFloater *floater,
+                                                               gdouble             duration);
+static Path *screen_saver_floater_create_path (ScreenSaver        *screen_saver,
+                                               ScreenSaverFloater *floater);
+static void screen_saver_floater_update_state (ScreenSaver        *screen_saver,
+                                               ScreenSaverFloater *floater,
+                                               gdouble             time);
+
+static gboolean screen_saver_floater_do_draw (ScreenSaver        *screen_saver,
+                                              ScreenSaverFloater *floater,
+                                              cairo_t            *context);
+
+static CachedSource *cached_source_new (cairo_pattern_t *pattern,
+                                        gint             width,
+                                        gint             height);
+static void cached_source_free (CachedSource *source);
+
+static ScreenSaver *screen_saver_new (GtkDrawingArea  *drawing_area,
+                                      const gchar     *filename,
+                                      gint             max_floater_count,
+                                      gboolean         should_do_rotations,
+                                      gboolean         should_show_paths);
+static void screen_saver_free (ScreenSaver *screen_saver);
+static gdouble screen_saver_get_timestamp (ScreenSaver *screen_saver);
+static void screen_saver_get_initial_state (ScreenSaver *screen_saver);
+static void screen_saver_update_state (ScreenSaver *screen_saver,
+                                       gdouble      time);
+static gboolean screen_saver_do_update_state (ScreenSaver *screen_saver);
+static gboolean screen_saver_do_update_stats (ScreenSaver *screen_saver);
+static gdouble screen_saver_get_updates_per_second (ScreenSaver *screen_saver);
+static gdouble screen_saver_get_frames_per_second (ScreenSaver *screen_saver);
+static gdouble screen_saver_get_image_cache_usage (ScreenSaver *screen_saver);
+static void screen_saver_create_floaters (ScreenSaver *screen_saver);
+static void screen_saver_destroy_floaters (ScreenSaver *screen_saver);
+static void screen_saver_on_size_allocate (ScreenSaver   *screen_saver,
+                                           GtkAllocation *allocation);
+static void screen_saver_on_expose_event (ScreenSaver    *screen_saver,
+                                          GdkEventExpose *event);
+static gboolean do_print_screen_saver_stats (ScreenSaver *screen_saver);
+static GdkPixbuf *gamma_correct (const GdkPixbuf *input_pixbuf);
+
+static CachedSource*
+cached_source_new (cairo_pattern_t *pattern,
+                   gint              width,
+                   gint             height)
+{
+  CachedSource *source;
+
+  source = g_new (CachedSource, 1);
+  source->pattern = cairo_pattern_reference (pattern);
+  source->width = width;
+  source->height = height;
+
+  return source;
+}
+
+static void
+cached_source_free (CachedSource *source)
+{
+  if (source == NULL)
+    return;
+
+  cairo_pattern_destroy (source->pattern);
+
+  g_free (source);
+}
+
+static Path *
+path_new (Point *start_point,
+          Point *start_control_point,
+          Point *end_control_point,
+          Point *end_point,
+          gdouble duration)
+{
+  Path *path;
+
+  path = g_new (Path, 1);
+  path->start_point = *start_point;
+  path->start_control_point = *start_control_point;
+  path->end_control_point = *end_control_point;
+  path->end_point = *end_point;
+  path->duration = duration;
+
+  /* we precompute the coefficients to the cubic bezier curve here
+   * so that we don't have to do it repeatedly later The equation is:
+   *
+   * B(t) = A * t^3 + B * t^2 + C * t + start_point
+   */
+  path->x_linear_coefficient = 3 * (start_control_point->x - start_point->x);
+  path->x_quadratic_coefficient = 3 * (end_control_point->x -
+                                       start_control_point->x) -
+                                  path->x_linear_coefficient;
+  path->x_cubic_coefficient = end_point->x - start_point->x -
+                              path->x_linear_coefficient -
+                              path->x_quadratic_coefficient;
+
+  path->y_linear_coefficient = 3 * (start_control_point->y - start_point->y);
+  path->y_quadratic_coefficient = 3 * (end_control_point->y -
+                                       start_control_point->y) -
+                                  path->y_linear_coefficient;
+  path->y_cubic_coefficient = end_point->y - start_point->y -
+                              path->y_linear_coefficient -
+                              path->y_quadratic_coefficient;
+  return path;
+}
+
+static void
+path_free (Path *path)
+{
+  g_free (path);
+}
+
+static ScreenSaverFloater*
+screen_saver_floater_new (ScreenSaver *screen_saver,
+                          Point       *position,
+                          gdouble      scale)
+{
+  ScreenSaverFloater *floater;
+
+  floater = g_new (ScreenSaverFloater, 1);
+  floater->bounds.width = 0;
+  floater->start_position = *position;
+  floater->position = *position;
+  floater->scale = scale;
+  floater->opacity = pow (scale, 1.0 / GAMMA);
+  floater->path = NULL;
+  floater->path_start_time = 0.0;
+  floater->path_start_scale = 1.0;
+  floater->path_end_scale = 0.0;
+
+  floater->angle = 0.0;
+  floater->angle_increment = 0.0;
+
+  return floater;
+}
+
+void
+screen_saver_floater_free (ScreenSaver        *screen_saver,
+                           ScreenSaverFloater *floater)
+{
+  if (floater == NULL)
+    return;
+
+  path_free (floater->path);
+
+  g_free (floater);
+}
+
+static gboolean
+screen_saver_floater_is_off_canvas (ScreenSaver        *screen_saver,
+                                    ScreenSaverFloater *floater)
+{
+  if ((floater->position.x < screen_saver->canvas_rectangle.top_left_point.x) ||
+      (floater->position.x > screen_saver->canvas_rectangle.bottom_right_point.x) ||
+      (floater->position.y < screen_saver->canvas_rectangle.top_left_point.y) ||
+      (floater->position.y > screen_saver->canvas_rectangle.bottom_right_point.y))
+    return TRUE;
+
+  return FALSE;
+}
+
+static gboolean
+screen_saver_floater_should_come_on_screen (ScreenSaver        *screen_saver,
+                                            ScreenSaverFloater *floater,
+                                            gdouble             performance_ratio,
+                                            gdouble            *duration)
+{
+
+  if (!screen_saver_floater_is_off_canvas (screen_saver, floater))
+    return FALSE;
+
+  if ((abs (performance_ratio - .5) >= G_MINDOUBLE) &&
+      (g_random_double () > .5))
+    {
+      if (duration)
+        *duration = g_random_double_range (3.0, 7.0);
+
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+static gboolean
+screen_saver_floater_should_bubble_up (ScreenSaver        *screen_saver,
+                                       ScreenSaverFloater *floater,
+                                       gdouble             performance_ratio,
+                                       gdouble            *duration)
+{
+
+  if ((performance_ratio < .5) && (g_random_double () > .5))
+    {
+      if (duration)
+        *duration = performance_ratio * 30.0;
+
+      return TRUE;
+    }
+
+  if ((floater->scale < .3) && (g_random_double () > .6))
+    {
+      if (duration)
+        *duration = 30.0;
+
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+static Point
+screen_saver_floater_get_position_from_time (ScreenSaver        *screen_saver,
+                                             ScreenSaverFloater *floater,
+                                             gdouble             time)
+{
+  Point point;
+
+  time = time / floater->path->duration;
+
+  point.x = floater->path->x_cubic_coefficient * (time * time * time) +
+            floater->path->x_quadratic_coefficient * (time * time) +
+            floater->path->x_linear_coefficient * (time) +
+            floater->path->start_point.x;
+  point.y = floater->path->y_cubic_coefficient * (time * time * time) +
+            floater->path->y_quadratic_coefficient * (time * time) +
+            floater->path->y_linear_coefficient * (time) +
+            floater->path->start_point.y;
+
+  return point;
+}
+
+static gdouble
+screen_saver_floater_get_scale_from_time (ScreenSaver        *screen_saver,
+                                          ScreenSaverFloater *floater,
+                                          gdouble             time)
+{
+  gdouble completion_ratio, total_scale_growth, new_scale;
+
+  completion_ratio = time / floater->path->duration;
+  total_scale_growth = (floater->path_end_scale - floater->path_start_scale);
+  new_scale = floater->path_start_scale + total_scale_growth * completion_ratio;
+
+  return CLAMP (new_scale, 0.0, 1.0);
+}
+
+static gdouble
+screen_saver_floater_get_angle_from_time (ScreenSaver        *screen_saver,
+                                          ScreenSaverFloater *floater,
+                                          gdouble             time)
+{
+  gdouble completion_ratio;
+  gdouble total_rotation;
+
+  completion_ratio = time / floater->path->duration;
+  total_rotation = floater->angle_increment * floater->path->duration;
+
+  return floater->angle + total_rotation * completion_ratio;
+}
+
+static Path *
+screen_saver_floater_create_path_to_on_screen (ScreenSaver        *screen_saver,
+                                               ScreenSaverFloater *floater,
+                                               gdouble             duration)
+{
+  Point start_position, end_position, start_control_point, end_control_point;
+  start_position = floater->position;
+
+  end_position.x = g_random_double_range (.25, .75) *
+      (screen_saver->canvas_rectangle.top_left_point.x +
+       screen_saver->canvas_rectangle.bottom_right_point.x);
+  end_position.y = g_random_double_range (.25, .75) *
+      (screen_saver->canvas_rectangle.top_left_point.y +
+       screen_saver->canvas_rectangle.bottom_right_point.y);
+
+  start_control_point.x = start_position.x + .9 * (end_position.x - start_position.x);
+  start_control_point.y = start_position.y + .9 * (end_position.y - start_position.y);
+
+  end_control_point.x = start_position.x + 1.0 * (end_position.x - start_position.x);
+  end_control_point.y = start_position.y + 1.0 * (end_position.y - start_position.y);
+
+  return path_new (&start_position, &start_control_point, &end_control_point,
+                   &end_position, duration);
+}
+
+static Path *
+screen_saver_floater_create_path_to_bubble_up (ScreenSaver        *screen_saver,
+                                               ScreenSaverFloater *floater,
+                                               gdouble             duration)
+{
+  Point start_position, end_position, start_control_point, end_control_point;
+
+  start_position = floater->position;
+  end_position.x = start_position.x;
+  end_position.y = screen_saver->canvas_rectangle.top_left_point.y - FLOATER_MAX_SIZE;
+  start_control_point.x = .5 * start_position.x;
+  start_control_point.y = .5 * start_position.y;
+  end_control_point.x = 1.5 * end_position.x;
+  end_control_point.y = .5 * end_position.y;
+
+  return path_new (&start_position, &start_control_point, &end_control_point,
+                   &end_position, duration);
+}
+
+static Path *
+screen_saver_floater_create_path_to_random_point (ScreenSaver        *screen_saver,
+                                                  ScreenSaverFloater *floater,
+                                                  gdouble             duration)
+{
+  Point start_position, end_position, start_control_point, end_control_point;
+
+  start_position = floater->position;
+
+  end_position.x = start_position.x +
+      (g_random_double_range (-.5, .5) * 4 * FLOATER_MAX_SIZE);
+  end_position.y = start_position.y +
+      (g_random_double_range (-.5, .5) * 4 * FLOATER_MAX_SIZE);
+
+  start_control_point.x = start_position.x + .95 * (end_position.x - start_position.x);
+  start_control_point.y = start_position.y + .95 * (end_position.y - start_position.y);
+
+  end_control_point.x = start_position.x + 1.0 * (end_position.x - start_position.x);
+  end_control_point.y = start_position.y + 1.0 * (end_position.y - start_position.y);
+
+  return path_new (&start_position, &start_control_point, &end_control_point,
+                   &end_position, duration);
+}
+
+static Path *
+screen_saver_floater_create_path (ScreenSaver        *screen_saver,
+                                  ScreenSaverFloater *floater)
+{
+  gdouble performance_ratio;
+  gdouble duration;
+
+  performance_ratio =
+    screen_saver_get_frames_per_second (screen_saver) / OPTIMAL_FRAME_RATE;
+
+  if (abs (performance_ratio) <= G_MINDOUBLE)
+    performance_ratio = 1.0;
+
+  if (screen_saver_floater_should_bubble_up (screen_saver, floater, performance_ratio, &duration))
+    return screen_saver_floater_create_path_to_bubble_up (screen_saver, floater, duration);
+
+  if (screen_saver_floater_should_come_on_screen (screen_saver, floater, performance_ratio, &duration))
+    return screen_saver_floater_create_path_to_on_screen (screen_saver, floater, duration);
+
+  return screen_saver_floater_create_path_to_random_point (screen_saver, floater,
+                                                           g_random_double_range (3.0, 7.0));
+}
+
+static void
+screen_saver_floater_update_state (ScreenSaver        *screen_saver,
+                                   ScreenSaverFloater *floater,
+                                   gdouble             time)
+{
+  gdouble performance_ratio;
+
+  performance_ratio =
+    screen_saver_get_frames_per_second (screen_saver) / OPTIMAL_FRAME_RATE;
+
+  if (floater->path == NULL)
+    {
+      floater->path = screen_saver_floater_create_path (screen_saver, floater);
+      floater->path_start_time = time;
+
+      floater->path_start_scale = floater->scale;
+
+      if (g_random_double () > .5)
+        floater->path_end_scale = g_random_double_range (0.10, performance_ratio);
+
+      /* poor man's distribution */
+      if (screen_saver->should_do_rotations &&
+          (g_random_double () < .75 * performance_ratio))
+        {
+          gint r;
+
+          r = g_random_int_range (0, 100);
+          if (r < 80)
+            floater->angle_increment = 0.0;
+          else if (r < 95)
+            floater->angle_increment = g_random_double_range (-SMALL_ANGLE, SMALL_ANGLE);
+          else
+            floater->angle_increment = g_random_double_range (-BIG_ANGLE, BIG_ANGLE);
+        }
+    }
+
+  if (time < (floater->path_start_time + floater->path->duration))
+    {
+      gdouble path_time;
+
+      path_time = time - floater->path_start_time;
+
+      floater->position =
+          screen_saver_floater_get_position_from_time (screen_saver, floater,
+                                                       path_time);
+      floater->scale =
+          screen_saver_floater_get_scale_from_time (screen_saver, floater, path_time);
+
+      floater->angle =
+          screen_saver_floater_get_angle_from_time (screen_saver, floater, path_time);
+
+      floater->opacity = pow (floater->scale, 1.0 / GAMMA);
+    }
+  else
+    {
+      path_free (floater->path);
+
+      floater->path = NULL;
+      floater->path_start_time = 0.0;
+    }
+}
+
+static GdkPixbuf *
+gamma_correct (const GdkPixbuf *input_pixbuf)
+{
+    gint x, y, width, height, rowstride;
+    GdkPixbuf *output_pixbuf;
+    guchar *pixels;
+
+    output_pixbuf = gdk_pixbuf_copy (input_pixbuf);
+    pixels = gdk_pixbuf_get_pixels (output_pixbuf);
+
+    width = gdk_pixbuf_get_width (output_pixbuf);
+    height = gdk_pixbuf_get_height (output_pixbuf);
+    rowstride = gdk_pixbuf_get_rowstride (output_pixbuf);
+
+    for (y = 0; y < height; y++)
+      for (x = 0; x < width; x++)
+        {
+          guchar *alpha_channel;
+          guchar opacity;
+
+          alpha_channel = pixels + y * (rowstride / 4) + x + 3;
+          opacity = (guchar) (255 * pow ((*alpha_channel / 255.0), 1.0 / GAMMA));
+
+          *alpha_channel = opacity;
+        }
+
+    return output_pixbuf;
+}
+
+static gboolean
+screen_saver_floater_do_draw (ScreenSaver        *screen_saver,
+                              ScreenSaverFloater *floater,
+                              cairo_t            *context)
+{
+  gint size;
+  CachedSource *source;
+
+  size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->scale),
+                FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
+
+  source = g_hash_table_lookup (screen_saver->cached_sources, GINT_TO_POINTER (size));
+
+  if (source == NULL)
+    {
+      GdkPixbuf *pixbuf;
+      GError *error;
+
+      pixbuf = NULL;
+      error = NULL;
+
+      pixbuf = gdk_pixbuf_new_from_file_at_size (screen_saver->filename, size, -1,
+                                                 &error);
+      if (pixbuf == NULL)
+        {
+          g_assert (error != NULL);
+          g_printerr ("%s", _(error->message));
+          g_error_free (error);
+          return FALSE;
+        }
+
+      if (gdk_pixbuf_get_has_alpha (pixbuf))
+          gamma_correct (pixbuf);
+
+      gdk_cairo_set_source_pixbuf (context, pixbuf, 0.0, 0.0);
+
+      source = cached_source_new (cairo_get_source (context),
+                                  gdk_pixbuf_get_width (pixbuf),
+                                  gdk_pixbuf_get_height (pixbuf));
+      g_object_unref (pixbuf);
+      g_hash_table_insert (screen_saver->cached_sources, GINT_TO_POINTER (size),
+                           source);
+    }
+
+  cairo_save (context);
+
+  if (screen_saver->should_do_rotations && (abs (floater->angle) > G_MINDOUBLE))
+    {
+      floater->bounds.width = G_SQRT2 * source->width + 2;
+      floater->bounds.height = G_SQRT2 * source->height + 2;
+      floater->bounds.x = (int) (floater->position.x - .5 * G_SQRT2 * source->width) - 1;
+      floater->bounds.y = (int) (floater->position.y - .5 * G_SQRT2 * source->height) - 1;
+
+      cairo_translate (context,
+                       trunc (floater->position.x),
+                       trunc (floater->position.y));
+      cairo_rotate (context, floater->angle);
+      cairo_translate (context,
+                       -trunc (floater->position.x),
+                       -trunc (floater->position.y));
+    }
+  else
+    {
+      floater->bounds.width = source->width + 2;
+      floater->bounds.height = source->height + 2;
+      floater->bounds.x = (int) (floater->position.x - .5 * source->width) - 1;
+      floater->bounds.y = (int) (floater->position.y - .5 * source->height) - 1;
+    }
+
+  cairo_translate (context,
+                   trunc (floater->position.x - .5 * source->width),
+                   trunc (floater->position.y - .5 * source->height));
+
+  cairo_set_source (context, source->pattern);
+
+  cairo_rectangle (context,
+                   trunc (.5 * (source->width - floater->bounds.width)),
+                   trunc (.5 * (source->height - floater->bounds.height)),
+                   floater->bounds.width, floater->bounds.height);
+
+  cairo_clip (context);
+  cairo_paint_with_alpha (context, floater->opacity);
+  cairo_restore (context);
+
+  if (screen_saver->should_show_paths && (floater->path != NULL))
+    {
+      gdouble dash_pattern[] = { 5.0 };
+      gint size;
+
+      size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->path_start_scale),
+                    FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
+
+      cairo_save (context);
+      cairo_set_source_rgba (context, 1.0, 1.0, 1.0, .2 * floater->opacity);
+      cairo_move_to (context,
+                     floater->path->start_point.x,
+                     floater->path->start_point.y);
+      cairo_curve_to (context,
+                      floater->path->start_control_point.x,
+                      floater->path->start_control_point.y,
+                      floater->path->end_control_point.x,
+                      floater->path->end_control_point.y,
+                      floater->path->end_point.x,
+                      floater->path->end_point.y);
+      cairo_set_line_cap (context, CAIRO_LINE_CAP_ROUND);
+      cairo_stroke (context);
+      cairo_set_source_rgba (context, 1.0, 0.0, 0.0, .5 * floater->opacity);
+      cairo_rectangle (context,
+                       floater->path->start_point.x - 3,
+                       floater->path->start_point.y - 3,
+                       6, 6);
+      cairo_fill (context);
+      cairo_set_source_rgba (context, 0.0, 0.5, 0.0, .5 * floater->opacity);
+      cairo_arc (context,
+                 floater->path->start_control_point.x,
+                 floater->path->start_control_point.y,
+                 3, 0.0, 2.0 * G_PI);
+      cairo_stroke (context);
+      cairo_set_source_rgba (context, 0.5, 0.0, 0.5, .5 * floater->opacity);
+      cairo_arc (context,
+                 floater->path->end_control_point.x,
+                 floater->path->end_control_point.y,
+                 3, 0.0, 2.0 * G_PI);
+      cairo_stroke (context);
+      cairo_set_source_rgba (context, 0.0, 0.0, 1.0, .5 * floater->opacity);
+      cairo_rectangle (context,
+                       floater->path->end_point.x - 3,
+                       floater->path->end_point.y - 3,
+                       6, 6);
+      cairo_fill (context);
+
+      cairo_set_dash (context, dash_pattern, G_N_ELEMENTS (dash_pattern), 0);
+      cairo_set_source_rgba (context, .5, .5, .5, .2 * floater->scale);
+      cairo_move_to (context, floater->path->start_point.x,
+                     floater->path->start_point.y);
+      cairo_line_to (context, floater->path->start_control_point.x,
+                     floater->path->start_control_point.y);
+      cairo_stroke (context);
+
+      cairo_move_to (context, floater->path->end_point.x,
+                     floater->path->end_point.y);
+      cairo_line_to (context, floater->path->end_control_point.x,
+                     floater->path->end_control_point.y);
+      cairo_stroke (context);
+
+      cairo_restore (context);
+    }
+
+  return TRUE;
+}
+
+static ScreenSaver *
+screen_saver_new (GtkDrawingArea  *drawing_area,
+                  const gchar     *filename,
+                  gint             max_floater_count,
+                  gboolean         should_do_rotations,
+                  gboolean         should_show_paths)
+{
+  ScreenSaver *screen_saver;
+
+  screen_saver = g_new (ScreenSaver, 1);
+  screen_saver->filename = g_strdup (filename);
+  screen_saver->drawing_area = GTK_WIDGET (drawing_area);
+  screen_saver->cached_sources =
+      g_hash_table_new_full (NULL, NULL, NULL,
+                             (GDestroyNotify) cached_source_free);
+
+  g_signal_connect_swapped (G_OBJECT (drawing_area), "size-allocate",
+                            G_CALLBACK (screen_saver_on_size_allocate),
+                            screen_saver);
+
+  g_signal_connect_swapped (G_OBJECT (drawing_area), "expose-event",
+                            G_CALLBACK (screen_saver_on_expose_event),
+                            screen_saver);
+
+  screen_saver->first_update_time = 0.0;
+  screen_saver->current_calculated_stats_time = 0.0;
+  screen_saver->last_calculated_stats_time = 0.0;
+  screen_saver->update_count = 0;
+  screen_saver->frame_count = 0;
+  screen_saver->updates_per_second = 0.0;
+  screen_saver->frames_per_second = 0.0;
+  screen_saver->floaters = NULL;
+  screen_saver->max_floater_count = max_floater_count;
+
+  screen_saver->should_show_paths = should_show_paths;
+  screen_saver->should_do_rotations = should_do_rotations;
+
+  screen_saver_get_initial_state (screen_saver);
+
+  screen_saver->state_update_timeout_id =
+      g_timeout_add (1000 / (2.0 * OPTIMAL_FRAME_RATE),
+                     (GSourceFunc) screen_saver_do_update_state, screen_saver);
+
+  screen_saver->stats_update_timeout_id =
+      g_timeout_add (1000, (GSourceFunc) screen_saver_do_update_stats,
+                     screen_saver);
+
+  return screen_saver;
+}
+
+static void
+screen_saver_free (ScreenSaver *screen_saver)
+{
+  if (screen_saver == NULL)
+    return;
+
+  g_free (screen_saver->filename);
+
+  g_hash_table_destroy (screen_saver->cached_sources);
+
+  if (screen_saver->state_update_timeout_id != 0)
+    g_source_remove (screen_saver->state_update_timeout_id);
+
+  if (screen_saver->stats_update_timeout_id != 0)
+    g_source_remove (screen_saver->stats_update_timeout_id);
+
+  screen_saver_destroy_floaters (screen_saver);
+
+  g_free (screen_saver);
+}
+
+static gdouble
+screen_saver_get_timestamp (ScreenSaver *screen_saver)
+{
+  const gdouble microseconds_per_second = (gdouble ) G_USEC_PER_SEC;
+  gdouble timestamp;
+  GTimeVal now = { 0L, /* zero-filled */ };
+
+  g_get_current_time (&now);
+  timestamp = ((microseconds_per_second * now.tv_sec) + now.tv_usec) /
+              microseconds_per_second;
+
+  return timestamp;
+}
+
+static void
+screen_saver_create_floaters (ScreenSaver *screen_saver)
+{
+  gint i;
+
+  for (i = 0; i < screen_saver->max_floater_count; i++)
+    {
+      ScreenSaverFloater *floater;
+      Point position;
+      gdouble scale;
+
+      position.x = g_random_double_range (screen_saver->canvas_rectangle.top_left_point.x,
+                                          screen_saver->canvas_rectangle.bottom_right_point.x);
+      position.y = g_random_double_range (screen_saver->canvas_rectangle.top_left_point.y,
+                                          screen_saver->canvas_rectangle.bottom_right_point.y);
+
+      scale = g_random_double ();
+
+      floater = screen_saver_floater_new (screen_saver, &position, scale);
+
+      screen_saver->floaters = g_list_prepend (screen_saver->floaters,
+                                               floater);
+    }
+}
+
+static gdouble
+screen_saver_get_updates_per_second (ScreenSaver *screen_saver)
+{
+  return screen_saver->updates_per_second;
+}
+
+static gdouble
+screen_saver_get_frames_per_second (ScreenSaver *screen_saver)
+{
+  return screen_saver->frames_per_second;
+}
+
+static gdouble
+screen_saver_get_image_cache_usage (ScreenSaver *screen_saver)
+{
+  static const gdouble cache_capacity = (FLOATER_MAX_SIZE - FLOATER_MIN_SIZE + 1);
+
+  return g_hash_table_size (screen_saver->cached_sources) / cache_capacity;
+}
+
+static void
+screen_saver_destroy_floaters (ScreenSaver *screen_saver)
+{
+  if (screen_saver->floaters == NULL)
+    return;
+
+  g_list_foreach (screen_saver->floaters, (GFunc) screen_saver_floater_free,
+                  NULL);
+  g_list_free (screen_saver->floaters);
+
+  screen_saver->floaters = NULL;
+}
+
+static void
+screen_saver_on_size_allocate (ScreenSaver   *screen_saver,
+                               GtkAllocation *allocation)
+{
+  Rectangle canvas_rectangle;
+
+  canvas_rectangle.top_left_point.x = allocation->x - .1 * allocation->width;
+  canvas_rectangle.top_left_point.y = allocation->y - .1 * allocation->height;
+
+  canvas_rectangle.bottom_right_point.x = allocation->x + (1.1 * allocation->width);
+  canvas_rectangle.bottom_right_point.y = allocation->y + (1.1 * allocation->height);
+
+  screen_saver->canvas_rectangle = canvas_rectangle;
+}
+
+static gint
+compare_floaters (ScreenSaverFloater *a,
+                  ScreenSaverFloater *b)
+{
+  if (a->scale > b->scale)
+    return 1;
+  else if (abs (a->scale - b->scale) <= G_MINDOUBLE)
+    return 0;
+  else
+    return -1;
+}
+
+static void
+screen_saver_on_expose_event (ScreenSaver    *screen_saver,
+                              GdkEventExpose *event)
+{
+  GList *tmp;
+  cairo_t *context;
+
+  if (screen_saver->floaters == NULL)
+    screen_saver_create_floaters (screen_saver);
+
+  context = gdk_cairo_create (screen_saver->drawing_area->window);
+
+  cairo_rectangle (context,
+                   (double) event->area.x,
+                   (double) event->area.y,
+                   (double) event->area.width,
+                   (double) event->area.height);
+  cairo_clip (context);
+
+  screen_saver->floaters = g_list_sort (screen_saver->floaters,
+                                        (GCompareFunc)compare_floaters);
+
+  for (tmp = screen_saver->floaters; tmp != NULL; tmp = tmp->next)
+    {
+      ScreenSaverFloater *floater;
+      GdkRectangle rect;
+      gint size;
+
+      floater = (ScreenSaverFloater *) tmp->data;
+
+      size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->scale),
+		    FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
+
+      rect.x = (int) (floater->position.x - .5 * G_SQRT2 * size);
+      rect.y = (int) (floater->position.y - .5 * G_SQRT2 * size);
+      rect.width = G_SQRT2 * size;
+      rect.height = G_SQRT2 * size;
+
+      if (!gdk_region_rect_in (event->region, &rect))
+        continue;
+
+      if (!screen_saver_floater_do_draw (screen_saver, floater, context))
+        {
+          gtk_main_quit ();
+          break;
+        }
+    }
+
+  cairo_destroy (context);
+
+  screen_saver->draw_ops_pending = TRUE;
+  screen_saver->frame_count++;
+}
+
+static void
+screen_saver_update_state (ScreenSaver *screen_saver,
+                           gdouble      time)
+{
+  GList *tmp;
+
+  tmp = screen_saver->floaters;
+  while (tmp != NULL)
+    {
+      ScreenSaverFloater *floater;
+      floater = (ScreenSaverFloater *) tmp->data;
+
+      screen_saver_floater_update_state (screen_saver, floater, time);
+
+      if (GTK_WIDGET_REALIZED (screen_saver->drawing_area)
+          && (floater->bounds.width > 0) && (floater->bounds.height > 0))
+        {
+          gint size;
+          size = CLAMP ((int) (FLOATER_MAX_SIZE * floater->scale),
+                        FLOATER_MIN_SIZE, FLOATER_MAX_SIZE);
+
+          gtk_widget_queue_draw_area (screen_saver->drawing_area,
+                                      floater->bounds.x,
+                                      floater->bounds.y,
+                                      floater->bounds.width,
+                                      floater->bounds.height);
+
+          /* the edges could concievably be spread across two
+           * pixels so we add +2 to invalidated region
+           */
+          if (screen_saver->should_do_rotations)
+            gtk_widget_queue_draw_area (screen_saver->drawing_area,
+                                        (int) (floater->position.x -
+                                               .5 * G_SQRT2 * size),
+                                        (int) (floater->position.y -
+                                               .5 * G_SQRT2 * size),
+                                        G_SQRT2 * size + 2,
+                                        G_SQRT2 * size + 2);
+          else
+            gtk_widget_queue_draw_area (screen_saver->drawing_area,
+                                        (int) (floater->position.x -
+                                               .5 * size),
+                                        (int) (floater->position.y -
+                                               .5 * size),
+                                        size + 2, size + 2);
+
+          if  (screen_saver->should_show_paths)
+            gtk_widget_queue_draw (screen_saver->drawing_area);
+        }
+
+      tmp = tmp->next;
+    }
+}
+
+static void
+screen_saver_get_initial_state (ScreenSaver *screen_saver)
+{
+  screen_saver->first_update_time = screen_saver_get_timestamp (screen_saver);
+  screen_saver_update_state (screen_saver, 0.0);
+}
+
+static gboolean
+screen_saver_do_update_state (ScreenSaver *screen_saver)
+{
+  gdouble current_update_time;
+
+  /* flush pending requests to the X server and block for
+   * replies before proceeding to help prevent the X server from
+   * getting overrun with requests
+   */
+  if (screen_saver->draw_ops_pending)
+    {
+      gdk_flush ();
+      screen_saver->draw_ops_pending = FALSE;
+    }
+
+  current_update_time = screen_saver_get_timestamp (screen_saver);
+  screen_saver_update_state (screen_saver, current_update_time -
+                                           screen_saver->first_update_time);
+  screen_saver->update_count++;
+  return TRUE;
+}
+
+static gboolean
+screen_saver_do_update_stats (ScreenSaver *screen_saver)
+{
+  gdouble last_calculated_stats_time, seconds_since_last_stats_update;
+
+  last_calculated_stats_time = screen_saver->current_calculated_stats_time;
+  screen_saver->current_calculated_stats_time =
+      screen_saver_get_timestamp (screen_saver);
+  screen_saver->last_calculated_stats_time = last_calculated_stats_time;
+
+  if (abs (last_calculated_stats_time) <= G_MINDOUBLE)
+    return TRUE;
+
+  seconds_since_last_stats_update =
+      screen_saver->current_calculated_stats_time - last_calculated_stats_time;
+
+  screen_saver->updates_per_second =
+      screen_saver->update_count / seconds_since_last_stats_update;
+  screen_saver->frames_per_second =
+      screen_saver->frame_count / seconds_since_last_stats_update;
+
+  screen_saver->update_count = 0;
+  screen_saver->frame_count = 0;
+
+  return TRUE;
+}
+
+static gboolean
+do_print_screen_saver_stats (ScreenSaver *screen_saver)
+{
+
+  g_print ("updates per second: %.2f, frames per second: %.2f, "
+           "image cache %.0f%% full\n",
+           screen_saver_get_updates_per_second (screen_saver),
+           screen_saver_get_frames_per_second (screen_saver),
+           screen_saver_get_image_cache_usage (screen_saver) * 100.0);
+
+  return TRUE;
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  ScreenSaver *screen_saver;
+  GtkWidget *window;
+  GtkWidget *drawing_area;
+
+  GtkStateType state;
+
+  GError *error;
+
+  error = NULL;
+
+  bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+  textdomain (GETTEXT_PACKAGE);
+
+  gtk_init_with_args (&argc, &argv,
+                      /* translators: the word "image" here
+                       * represents a command line argument
+                       */
+                      _("image - floats images around the screen"),
+                      options, GETTEXT_PACKAGE, &error);
+
+
+  if (error != NULL)
+    {
+      g_printerr (_("%s. See --help for usage information.\n"),
+                  _(error->message));
+      g_error_free (error);
+      return EX_SOFTWARE;
+    }
+
+  if ((filenames == NULL) || (filenames[0] == NULL) ||
+      (filenames[1] != NULL))
+    {
+      g_printerr (_("You must specify one image.  See --help for usage "
+                    "information.\n"));
+      return EX_USAGE;
+    }
+
+  window = gs_theme_window_new ();
+
+  g_signal_connect (G_OBJECT (window), "delete-event",
+                    G_CALLBACK (gtk_main_quit), NULL);
+
+  drawing_area = gtk_drawing_area_new ();
+
+  state = (GtkStateType) 0;
+  while (state < (GtkStateType) G_N_ELEMENTS (drawing_area->style->bg))
+    {
+      gtk_widget_modify_bg (drawing_area, state, &drawing_area->style->mid[state]);
+      state++;
+    }
+
+  gtk_widget_show (drawing_area);
+  gtk_container_add (GTK_CONTAINER (window), drawing_area);
+
+  screen_saver = screen_saver_new (GTK_DRAWING_AREA (drawing_area),
+                                   filenames[0], max_floater_count,
+                                   should_do_rotations, should_show_paths);
+  g_strfreev (filenames);
+
+  if (should_print_stats)
+    g_timeout_add (STAT_PRINT_FREQUENCY,
+                   (GSourceFunc) do_print_screen_saver_stats,
+                   screen_saver);
+
+  if ((geometry == NULL)
+      || !gtk_window_parse_geometry (GTK_WINDOW (window), geometry))
+    gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
+
+  gtk_widget_show (window);
+
+  gtk_main ();
+
+  screen_saver_free (screen_saver);
+
+  return EX_OK;
+}
diff --git a/savers/footlogo-floaters.desktop.in.in b/savers/footlogo-floaters.desktop.in.in
new file mode 100644
index 0000000..03cdad4
--- /dev/null
+++ b/savers/footlogo-floaters.desktop.in.in
@@ -0,0 +1,10 @@
+[Desktop Entry]
+_Name=Floating Feet
+_Comment=Bubbles the MATE foot logo around the screen
+Exec=@SAVERDIR@/floaters @FLOATERS_FOOT_LOGO_IMAGE@
+TryExec=@SAVERDIR@/floaters
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=MATE;Screensaver;
+OnlyShowIn=MATE;
diff --git a/savers/gs-theme-engine-marshal.list b/savers/gs-theme-engine-marshal.list
new file mode 100644
index 0000000..70e7616
--- /dev/null
+++ b/savers/gs-theme-engine-marshal.list
@@ -0,0 +1 @@
+BOOLEAN:BOXED
diff --git a/savers/gs-theme-engine.c b/savers/gs-theme-engine.c
new file mode 100644
index 0000000..042bc53
--- /dev/null
+++ b/savers/gs-theme-engine.c
@@ -0,0 +1,226 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-engine.h"
+#include "gs-theme-engine-marshal.h"
+
+static void     gs_theme_engine_class_init (GSThemeEngineClass *klass);
+static void     gs_theme_engine_init       (GSThemeEngine      *engine);
+static void     gs_theme_engine_finalize   (GObject            *object);
+
+struct GSThemeEnginePrivate
+{
+	gpointer reserved;
+};
+
+#define GS_THEME_ENGINE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_THEME_ENGINE, GSThemeEnginePrivate))
+
+static GObjectClass *parent_class = NULL;
+
+G_DEFINE_ABSTRACT_TYPE (GSThemeEngine, gs_theme_engine, GTK_TYPE_DRAWING_AREA)
+
+void
+_gs_theme_engine_profile_log (const char *func,
+                              const char *note,
+                              const char *format,
+                              ...)
+{
+	va_list args;
+	char   *str;
+	char   *formatted;
+
+	va_start (args, format);
+	formatted = g_strdup_vprintf (format, args);
+	va_end (args);
+
+	if (func != NULL)
+	{
+		str = g_strdup_printf ("MARK: %s %s: %s %s", g_get_prgname(), func, note ? note : "", formatted);
+	}
+	else
+	{
+		str = g_strdup_printf ("MARK: %s: %s %s", g_get_prgname(), note ? note : "", formatted);
+	}
+
+	g_free (formatted);
+
+	access (str, F_OK);
+	g_free (str);
+}
+
+static void
+gs_theme_engine_set_property (GObject            *object,
+                              guint               prop_id,
+                              const GValue       *value,
+                              GParamSpec         *pspec)
+{
+	GSThemeEngine *self;
+
+	self = GS_THEME_ENGINE (object);
+
+	switch (prop_id)
+	{
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_theme_engine_get_property (GObject            *object,
+                              guint               prop_id,
+                              GValue             *value,
+                              GParamSpec         *pspec)
+{
+	GSThemeEngine *self;
+
+	self = GS_THEME_ENGINE (object);
+
+	switch (prop_id)
+	{
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_theme_engine_clear (GtkWidget *widget)
+{
+	GdkColor     color = { 0, 0x0000, 0x0000, 0x0000 };
+	GdkColormap *colormap;
+	GtkStateType state;
+
+	g_return_if_fail (GS_IS_THEME_ENGINE (widget));
+
+	if (! GTK_WIDGET_VISIBLE (widget))
+	{
+		return;
+	}
+
+	state = (GtkStateType) 0;
+	while (state < (GtkStateType) G_N_ELEMENTS (widget->style->bg))
+	{
+		gtk_widget_modify_bg (widget, state, &color);
+		state++;
+	}
+
+	colormap = gdk_drawable_get_colormap (widget->window);
+	gdk_colormap_alloc_color (colormap, &color, FALSE, TRUE);
+	gdk_window_set_background (widget->window, &color);
+	gdk_window_clear (widget->window);
+	gdk_flush ();
+}
+
+static gboolean
+gs_theme_engine_real_map_event (GtkWidget   *widget,
+                                GdkEventAny *event)
+{
+	gboolean handled = FALSE;
+
+	gs_theme_engine_clear (widget);
+
+	return handled;
+}
+
+static void
+gs_theme_engine_class_init (GSThemeEngineClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+	parent_class = g_type_class_peek_parent (klass);
+
+	object_class->finalize = gs_theme_engine_finalize;
+	object_class->get_property = gs_theme_engine_get_property;
+	object_class->set_property = gs_theme_engine_set_property;
+
+	widget_class->map_event = gs_theme_engine_real_map_event;
+
+	g_type_class_add_private (klass, sizeof (GSThemeEnginePrivate));
+}
+
+static void
+gs_theme_engine_init (GSThemeEngine *engine)
+{
+	engine->priv = GS_THEME_ENGINE_GET_PRIVATE (engine);
+}
+
+static void
+gs_theme_engine_finalize (GObject *object)
+{
+	GSThemeEngine *engine;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_THEME_ENGINE (object));
+
+	engine = GS_THEME_ENGINE (object);
+
+	g_return_if_fail (engine->priv != NULL);
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+void
+gs_theme_engine_get_window_size (GSThemeEngine *engine,
+                                 int           *width,
+                                 int           *height)
+{
+	if (width != NULL)
+	{
+		*width = 0;
+	}
+	if (height != NULL)
+	{
+		*height = 0;
+	}
+
+	g_return_if_fail (GS_IS_THEME_ENGINE (engine));
+
+	if (! GTK_WIDGET_VISIBLE (GTK_WIDGET (engine)))
+	{
+		return;
+	}
+
+	gdk_window_get_geometry (GTK_WIDGET (engine)->window,
+	                         NULL,
+	                         NULL,
+	                         width,
+	                         height,
+	                         NULL);
+}
+
+GdkWindow *
+gs_theme_engine_get_window (GSThemeEngine *engine)
+{
+	g_return_val_if_fail (GS_IS_THEME_ENGINE (engine), NULL);
+
+	return GTK_WIDGET (engine)->window;
+}
diff --git a/savers/gs-theme-engine.c.orig b/savers/gs-theme-engine.c.orig
new file mode 100644
index 0000000..9724e5b
--- /dev/null
+++ b/savers/gs-theme-engine.c.orig
@@ -0,0 +1,216 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-engine.h"
+#include "gs-theme-engine-marshal.h"
+
+static void     gs_theme_engine_class_init (GSThemeEngineClass *klass);
+static void     gs_theme_engine_init       (GSThemeEngine      *engine);
+static void     gs_theme_engine_finalize   (GObject            *object);
+
+struct GSThemeEnginePrivate
+{
+        gpointer reserved;
+};
+
+#define GS_THEME_ENGINE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_THEME_ENGINE, GSThemeEnginePrivate))
+
+static GObjectClass *parent_class = NULL;
+
+G_DEFINE_ABSTRACT_TYPE (GSThemeEngine, gs_theme_engine, GTK_TYPE_DRAWING_AREA)
+
+void
+_gs_theme_engine_profile_log (const char *func,
+                              const char *note,
+                              const char *format,
+                              ...)
+{
+        va_list args;
+        char   *str;
+        char   *formatted;
+
+        va_start (args, format);
+        formatted = g_strdup_vprintf (format, args);
+        va_end (args);
+
+        if (func != NULL) {
+                str = g_strdup_printf ("MARK: %s %s: %s %s", g_get_prgname(), func, note ? note : "", formatted);
+        } else {
+                str = g_strdup_printf ("MARK: %s: %s %s", g_get_prgname(), note ? note : "", formatted);
+        }
+
+        g_free (formatted);
+
+        access (str, F_OK);
+        g_free (str);
+}
+
+static void
+gs_theme_engine_set_property (GObject            *object,
+                              guint               prop_id,
+                              const GValue       *value,
+                              GParamSpec         *pspec)
+{
+        GSThemeEngine *self;
+
+        self = GS_THEME_ENGINE (object);
+
+        switch (prop_id) {
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gs_theme_engine_get_property (GObject            *object,
+                              guint               prop_id,
+                              GValue             *value,
+                              GParamSpec         *pspec)
+{
+        GSThemeEngine *self;
+
+        self = GS_THEME_ENGINE (object);
+
+        switch (prop_id) {
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gs_theme_engine_clear (GtkWidget *widget)
+{
+        GdkColor     color = { 0, 0x0000, 0x0000, 0x0000 };
+        GdkColormap *colormap;
+        GtkStateType state;
+
+        g_return_if_fail (GS_IS_THEME_ENGINE (widget));
+
+        if (! GTK_WIDGET_VISIBLE (widget)) {
+                return;
+        }
+
+        state = (GtkStateType) 0;
+        while (state < (GtkStateType) G_N_ELEMENTS (widget->style->bg)) {
+                gtk_widget_modify_bg (widget, state, &color);
+                state++;
+        }
+
+        colormap = gdk_drawable_get_colormap (widget->window);
+        gdk_colormap_alloc_color (colormap, &color, FALSE, TRUE);
+        gdk_window_set_background (widget->window, &color);
+        gdk_window_clear (widget->window);
+        gdk_flush ();
+}
+
+static gboolean
+gs_theme_engine_real_map_event (GtkWidget   *widget,
+                                GdkEventAny *event)
+{
+        gboolean handled = FALSE;
+
+        gs_theme_engine_clear (widget);
+
+        return handled;
+}
+
+static void
+gs_theme_engine_class_init (GSThemeEngineClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+        parent_class = g_type_class_peek_parent (klass);
+
+        object_class->finalize = gs_theme_engine_finalize;
+        object_class->get_property = gs_theme_engine_get_property;
+        object_class->set_property = gs_theme_engine_set_property;
+
+        widget_class->map_event = gs_theme_engine_real_map_event;
+
+        g_type_class_add_private (klass, sizeof (GSThemeEnginePrivate));
+}
+
+static void
+gs_theme_engine_init (GSThemeEngine *engine)
+{
+        engine->priv = GS_THEME_ENGINE_GET_PRIVATE (engine);
+}
+
+static void
+gs_theme_engine_finalize (GObject *object)
+{
+        GSThemeEngine *engine;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GS_IS_THEME_ENGINE (object));
+
+        engine = GS_THEME_ENGINE (object);
+
+        g_return_if_fail (engine->priv != NULL);
+
+        G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+void
+gs_theme_engine_get_window_size (GSThemeEngine *engine,
+                                 int           *width,
+                                 int           *height)
+{
+        if (width != NULL) {
+                *width = 0;
+        }
+        if (height != NULL) {
+                *height = 0;
+        }
+
+        g_return_if_fail (GS_IS_THEME_ENGINE (engine));
+
+        if (! GTK_WIDGET_VISIBLE (GTK_WIDGET (engine))) {
+                return;
+        }
+
+        gdk_window_get_geometry (GTK_WIDGET (engine)->window,
+                                 NULL,
+                                 NULL,
+                                 width,
+                                 height,
+                                 NULL);
+}
+
+GdkWindow *
+gs_theme_engine_get_window (GSThemeEngine *engine)
+{
+        g_return_val_if_fail (GS_IS_THEME_ENGINE (engine), NULL);
+
+        return GTK_WIDGET (engine)->window;
+}
diff --git a/savers/gs-theme-engine.h b/savers/gs-theme-engine.h
new file mode 100644
index 0000000..b4dda3a
--- /dev/null
+++ b/savers/gs-theme-engine.h
@@ -0,0 +1,88 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_THEME_ENGINE_H
+#define __GS_THEME_ENGINE_H
+
+#include <glib.h>
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_THEME_ENGINE         (gs_theme_engine_get_type ())
+#define GS_THEME_ENGINE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_THEME_ENGINE, GSThemeEngine))
+#define GS_THEME_ENGINE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_THEME_ENGINE, GSThemeEngineClass))
+#define GS_IS_THEME_ENGINE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_THEME_ENGINE))
+#define GS_IS_THEME_ENGINE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_THEME_ENGINE))
+#define GS_THEME_ENGINE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_THEME_ENGINE, GSThemeEngineClass))
+
+typedef struct GSThemeEnginePrivate GSThemeEnginePrivate;
+
+typedef struct
+{
+	GtkDrawingArea        parent;
+	GSThemeEnginePrivate *priv;
+} GSThemeEngine;
+
+typedef struct
+{
+	GtkDrawingAreaClass parent_class;
+
+	/* for signals later if needed */
+	gpointer reserved_1;
+	gpointer reserved_2;
+	gpointer reserved_3;
+	gpointer reserved_4;
+} GSThemeEngineClass;
+
+GType           gs_theme_engine_get_type         (void);
+
+void            gs_theme_engine_get_window_size (GSThemeEngine *engine,
+        int           *width,
+        int           *height);
+GdkWindow      *gs_theme_engine_get_window      (GSThemeEngine *engine);
+
+#define ENABLE_PROFILING 1
+#ifdef ENABLE_PROFILING
+#ifdef G_HAVE_ISO_VARARGS
+#define gs_theme_engine_profile_start(...) _gs_theme_engine_profile_log (G_STRFUNC, "start", __VA_ARGS__)
+#define gs_theme_engine_profile_end(...)   _gs_theme_engine_profile_log (G_STRFUNC, "end", __VA_ARGS__)
+#define gs_theme_engine_profile_msg(...)   _gs_theme_engine_profile_log (NULL, NULL, __VA_ARGS__)
+#elif defined(G_HAVE_GNUC_VARARGS)
+#define gs_theme_engine_profile_start(format...) _gs_theme_engine_profile_log (G_STRFUNC, "start", format)
+#define gs_theme_engine_profile_end(format...)   _gs_theme_engine_profile_log (G_STRFUNC, "end", format)
+#define gs_theme_engine_profile_msg(format...)   _gs_theme_engine_profile_log (NULL, NULL, format)
+#endif
+#else
+#define gs_theme_engine_profile_start(...)
+#define gs_theme_engine_profile_end(...)
+#define gs_theme_engine_profile_msg(...)
+#endif
+
+void            _gs_theme_engine_profile_log    (const char *func,
+        const char *note,
+        const char *format,
+        ...) G_GNUC_PRINTF (3, 4);
+
+G_END_DECLS
+
+#endif /* __GS_THEME_ENGINE_H */
diff --git a/savers/gs-theme-engine.h.orig b/savers/gs-theme-engine.h.orig
new file mode 100644
index 0000000..5c6fd30
--- /dev/null
+++ b/savers/gs-theme-engine.h.orig
@@ -0,0 +1,88 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_THEME_ENGINE_H
+#define __GS_THEME_ENGINE_H
+
+#include <glib.h>
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_THEME_ENGINE         (gs_theme_engine_get_type ())
+#define GS_THEME_ENGINE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_THEME_ENGINE, GSThemeEngine))
+#define GS_THEME_ENGINE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_THEME_ENGINE, GSThemeEngineClass))
+#define GS_IS_THEME_ENGINE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_THEME_ENGINE))
+#define GS_IS_THEME_ENGINE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_THEME_ENGINE))
+#define GS_THEME_ENGINE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_THEME_ENGINE, GSThemeEngineClass))
+
+typedef struct GSThemeEnginePrivate GSThemeEnginePrivate;
+
+typedef struct
+{
+        GtkDrawingArea        parent;
+        GSThemeEnginePrivate *priv;
+} GSThemeEngine;
+
+typedef struct
+{
+        GtkDrawingAreaClass parent_class;
+
+        /* for signals later if needed */
+        gpointer reserved_1;
+        gpointer reserved_2;
+        gpointer reserved_3;
+        gpointer reserved_4;
+} GSThemeEngineClass;
+
+GType           gs_theme_engine_get_type         (void);
+
+void            gs_theme_engine_get_window_size (GSThemeEngine *engine,
+                                                 int           *width,
+                                                 int           *height);
+GdkWindow      *gs_theme_engine_get_window      (GSThemeEngine *engine);
+
+#define ENABLE_PROFILING 1
+#ifdef ENABLE_PROFILING
+#ifdef G_HAVE_ISO_VARARGS
+#define gs_theme_engine_profile_start(...) _gs_theme_engine_profile_log (G_STRFUNC, "start", __VA_ARGS__)
+#define gs_theme_engine_profile_end(...)   _gs_theme_engine_profile_log (G_STRFUNC, "end", __VA_ARGS__)
+#define gs_theme_engine_profile_msg(...)   _gs_theme_engine_profile_log (NULL, NULL, __VA_ARGS__)
+#elif defined(G_HAVE_GNUC_VARARGS)
+#define gs_theme_engine_profile_start(format...) _gs_theme_engine_profile_log (G_STRFUNC, "start", format)
+#define gs_theme_engine_profile_end(format...)   _gs_theme_engine_profile_log (G_STRFUNC, "end", format)
+#define gs_theme_engine_profile_msg(format...)   _gs_theme_engine_profile_log (NULL, NULL, format)
+#endif
+#else
+#define gs_theme_engine_profile_start(...)
+#define gs_theme_engine_profile_end(...)
+#define gs_theme_engine_profile_msg(...)
+#endif
+
+void            _gs_theme_engine_profile_log    (const char *func,
+                                                 const char *note,
+                                                 const char *format,
+                                                 ...) G_GNUC_PRINTF (3, 4);
+
+G_END_DECLS
+
+#endif /* __GS_THEME_ENGINE_H */
diff --git a/savers/gs-theme-window.c b/savers/gs-theme-window.c
new file mode 100644
index 0000000..bdc1c88
--- /dev/null
+++ b/savers/gs-theme-window.c
@@ -0,0 +1,214 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * gs-theme-window.c - special toplevel for screensavers
+ *
+ * Copyright (C) 2005 Ray Strode <rstrode at redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2, 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 Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Originally written by: Ray Strode <rstrode at redhat.com>
+ */
+
+#include "config.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include <glib.h>
+#include <glib-object.h>
+#include <glib/gi18n.h>
+
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-window.h"
+
+static void gs_theme_window_finalize     (GObject *object);
+static void gs_theme_window_real_realize (GtkWidget *widget);
+
+static GObjectClass   *parent_class = NULL;
+
+G_DEFINE_TYPE (GSThemeWindow, gs_theme_window, GTK_TYPE_WINDOW)
+
+#define MIN_SIZE 10
+
+static void
+gs_theme_window_class_init (GSThemeWindowClass *klass)
+{
+	GObjectClass   *object_class;
+	GtkWidgetClass *widget_class;
+
+	object_class = G_OBJECT_CLASS (klass);
+	widget_class = GTK_WIDGET_CLASS (klass);
+
+	parent_class = g_type_class_peek_parent (klass);
+
+	object_class->finalize = gs_theme_window_finalize;
+
+	widget_class->realize = gs_theme_window_real_realize;
+}
+
+static void
+force_no_pixmap_background (GtkWidget *widget)
+{
+	static gboolean first_time = TRUE;
+
+	if (first_time)
+	{
+		gtk_rc_parse_string ("\n"
+		                     "   style \"gs-theme-engine-style\"\n"
+		                     "   {\n"
+		                     "      bg_pixmap[NORMAL] = \"<none>\"\n"
+		                     "      bg_pixmap[ACTIVE] = \"<none>\"\n"
+		                     "      bg_pixmap[PRELIGHT] = \"<none>\"\n"
+		                     "      bg_pixmap[SELECTED] = \"<none>\"\n"
+		                     "      bg_pixmap[INSENSITIVE] = \"<none>\"\n"
+		                     "      bg[NORMAL] = \"#000000\"\n"
+		                     "      bg[ACTIVE] = \"#000000\"\n"
+		                     "      bg[PRELIGHT] = \"#000000\"\n"
+		                     "      bg[SELECTED] = \"#000000\"\n"
+		                     "      bg[INSENSITIVE] = \"#000000\"\n"
+		                     "   }\n"
+		                     "   widget \"gs-window*\" style : highest \"gs-theme-engine-style\"\n"
+		                     "\n");
+		first_time = FALSE;
+	}
+
+	gtk_widget_set_name (widget, "gs-window");
+}
+
+static void
+gs_theme_window_init (GSThemeWindow *window)
+{
+	force_no_pixmap_background (GTK_WIDGET (window));
+}
+
+static void
+gs_theme_window_finalize (GObject *object)
+{
+	GSThemeWindow *window;
+	GObjectClass  *parent_class;
+
+	window = GS_THEME_WINDOW (object);
+
+	parent_class = G_OBJECT_CLASS (gs_theme_window_parent_class);
+
+	if (parent_class->finalize != NULL)
+		parent_class->finalize (object);
+}
+
+static void
+gs_theme_window_real_realize (GtkWidget *widget)
+{
+	GdkWindow     *window;
+	Window         remote_xwindow;
+	GtkRequisition requisition;
+	GtkAllocation  allocation;
+	const char    *preview_xid;
+	int            x;
+	int            y;
+	int            width;
+	int            height;
+	int            event_mask;
+
+	event_mask = 0;
+	window = NULL;
+	preview_xid = g_getenv ("XSCREENSAVER_WINDOW");
+
+	if (preview_xid != NULL)
+	{
+		char *end;
+
+		remote_xwindow = (Window) strtoul (preview_xid, &end, 0);
+
+		if ((remote_xwindow != 0) && (end != NULL) &&
+		        ((*end == ' ') || (*end == '\0')) &&
+		        ((remote_xwindow < G_MAXULONG) || (errno != ERANGE)))
+		{
+			window = gdk_window_foreign_new (remote_xwindow);
+
+			if (window != NULL)
+			{
+				/* This is a kludge; we need to set the same
+				 * flags gs-window-x11.c does, to ensure they
+				 * don't get unset by gtk_window_map() later.
+				 */
+				gtk_window_set_decorated (GTK_WINDOW (widget), FALSE);
+
+				gtk_window_set_skip_taskbar_hint (GTK_WINDOW (widget), TRUE);
+				gtk_window_set_skip_pager_hint (GTK_WINDOW (widget), TRUE);
+
+				gtk_window_set_keep_above (GTK_WINDOW (widget), TRUE);
+
+				gtk_window_fullscreen (GTK_WINDOW (widget));
+
+				event_mask = GDK_EXPOSURE_MASK | GDK_STRUCTURE_MASK;
+				gtk_widget_set_events (widget, gtk_widget_get_events (widget) | event_mask);
+			}
+		}
+	}
+
+	if (window == NULL)
+	{
+		GtkWidgetClass *parent_class;
+
+		parent_class = GTK_WIDGET_CLASS (gs_theme_window_parent_class);
+
+		if (parent_class->realize != NULL)
+			parent_class->realize (widget);
+
+		return;
+	}
+
+	gtk_style_set_background (widget->style,
+	                          window,
+	                          GTK_STATE_NORMAL);
+	gdk_window_set_decorations (window, (GdkWMDecoration) 0);
+	gdk_window_set_events (window, gdk_window_get_events (window) | event_mask);
+
+	widget->window = window;
+	gdk_window_set_user_data (window, widget);
+	GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+
+	gdk_window_get_geometry (window, &x, &y, &width, &height, NULL);
+
+	if (width < MIN_SIZE || height < MIN_SIZE)
+	{
+		g_critical ("This window is way too small to use");
+		exit (1);
+	}
+
+	gtk_widget_size_request (widget, &requisition);
+	allocation.x = x;
+	allocation.y = y;
+	allocation.width = width;
+	allocation.height = height;
+	gtk_widget_size_allocate (widget, &allocation);
+	gtk_window_resize (GTK_WINDOW (widget), width, height);
+}
+
+GtkWidget *
+gs_theme_window_new (void)
+{
+	GSThemeWindow *window;
+
+	window = g_object_new (GS_TYPE_THEME_WINDOW,
+	                       "type", GTK_WINDOW_TOPLEVEL,
+	                       NULL);
+
+	return GTK_WIDGET (window);
+}
diff --git a/savers/gs-theme-window.c.orig b/savers/gs-theme-window.c.orig
new file mode 100644
index 0000000..805387c
--- /dev/null
+++ b/savers/gs-theme-window.c.orig
@@ -0,0 +1,208 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * gs-theme-window.c - special toplevel for screensavers
+ *
+ * Copyright (C) 2005 Ray Strode <rstrode at redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2, 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 Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Originally written by: Ray Strode <rstrode at redhat.com>
+ */
+
+#include "config.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include <glib.h>
+#include <glib-object.h>
+#include <glib/gi18n.h>
+
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-window.h"
+
+static void gs_theme_window_finalize     (GObject *object);
+static void gs_theme_window_real_realize (GtkWidget *widget);
+
+static GObjectClass   *parent_class = NULL;
+
+G_DEFINE_TYPE (GSThemeWindow, gs_theme_window, GTK_TYPE_WINDOW)
+
+#define MIN_SIZE 10
+
+static void
+gs_theme_window_class_init (GSThemeWindowClass *klass)
+{
+        GObjectClass   *object_class;
+        GtkWidgetClass *widget_class;
+
+        object_class = G_OBJECT_CLASS (klass);
+        widget_class = GTK_WIDGET_CLASS (klass);
+
+        parent_class = g_type_class_peek_parent (klass);
+
+        object_class->finalize = gs_theme_window_finalize;
+
+        widget_class->realize = gs_theme_window_real_realize;
+}
+
+static void
+force_no_pixmap_background (GtkWidget *widget)
+{
+        static gboolean first_time = TRUE;
+
+        if (first_time) {
+                gtk_rc_parse_string ("\n"
+                                     "   style \"gs-theme-engine-style\"\n"
+                                     "   {\n"
+                                     "      bg_pixmap[NORMAL] = \"<none>\"\n"
+                                     "      bg_pixmap[ACTIVE] = \"<none>\"\n"
+                                     "      bg_pixmap[PRELIGHT] = \"<none>\"\n"
+                                     "      bg_pixmap[SELECTED] = \"<none>\"\n"
+                                     "      bg_pixmap[INSENSITIVE] = \"<none>\"\n"
+                                     "      bg[NORMAL] = \"#000000\"\n"
+                                     "      bg[ACTIVE] = \"#000000\"\n"
+                                     "      bg[PRELIGHT] = \"#000000\"\n"
+                                     "      bg[SELECTED] = \"#000000\"\n"
+                                     "      bg[INSENSITIVE] = \"#000000\"\n"
+                                     "   }\n"
+                                     "   widget \"gs-window*\" style : highest \"gs-theme-engine-style\"\n"
+                                     "\n");
+                first_time = FALSE;
+        }
+
+        gtk_widget_set_name (widget, "gs-window");
+}
+
+static void
+gs_theme_window_init (GSThemeWindow *window)
+{
+        force_no_pixmap_background (GTK_WIDGET (window));
+}
+
+static void
+gs_theme_window_finalize (GObject *object)
+{
+        GSThemeWindow *window;
+        GObjectClass  *parent_class;
+
+        window = GS_THEME_WINDOW (object);
+
+        parent_class = G_OBJECT_CLASS (gs_theme_window_parent_class);
+
+        if (parent_class->finalize != NULL)
+                parent_class->finalize (object);
+}
+
+static void
+gs_theme_window_real_realize (GtkWidget *widget)
+{
+        GdkWindow     *window;
+        Window         remote_xwindow;
+        GtkRequisition requisition;
+        GtkAllocation  allocation;
+        const char    *preview_xid;
+        int            x;
+        int            y;
+        int            width;
+        int            height;
+        int            event_mask;
+
+        event_mask = 0;
+        window = NULL;
+        preview_xid = g_getenv ("XSCREENSAVER_WINDOW");
+
+        if (preview_xid != NULL) {
+                char *end;
+
+                remote_xwindow = (Window) strtoul (preview_xid, &end, 0);
+
+                if ((remote_xwindow != 0) && (end != NULL) &&
+                    ((*end == ' ') || (*end == '\0')) &&
+                    ((remote_xwindow < G_MAXULONG) || (errno != ERANGE))) {
+                        window = gdk_window_foreign_new (remote_xwindow);
+
+                        if (window != NULL) {
+                                /* This is a kludge; we need to set the same
+                                 * flags gs-window-x11.c does, to ensure they
+                                 * don't get unset by gtk_window_map() later.
+                                 */
+                                gtk_window_set_decorated (GTK_WINDOW (widget), FALSE);
+
+                                gtk_window_set_skip_taskbar_hint (GTK_WINDOW (widget), TRUE);
+                                gtk_window_set_skip_pager_hint (GTK_WINDOW (widget), TRUE);
+
+                                gtk_window_set_keep_above (GTK_WINDOW (widget), TRUE);
+
+                                gtk_window_fullscreen (GTK_WINDOW (widget));
+
+                                event_mask = GDK_EXPOSURE_MASK | GDK_STRUCTURE_MASK;
+                                gtk_widget_set_events (widget, gtk_widget_get_events (widget) | event_mask);
+                        }
+                }
+        }
+
+        if (window == NULL) {
+                GtkWidgetClass *parent_class;
+
+                parent_class = GTK_WIDGET_CLASS (gs_theme_window_parent_class);
+
+                if (parent_class->realize != NULL)
+                        parent_class->realize (widget);
+
+                return;
+        }
+
+        gtk_style_set_background (widget->style,
+                                  window,
+                                  GTK_STATE_NORMAL);
+        gdk_window_set_decorations (window, (GdkWMDecoration) 0);
+        gdk_window_set_events (window, gdk_window_get_events (window) | event_mask);
+
+        widget->window = window;
+        gdk_window_set_user_data (window, widget);
+        GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+
+        gdk_window_get_geometry (window, &x, &y, &width, &height, NULL);
+
+        if (width < MIN_SIZE || height < MIN_SIZE) {
+                g_critical ("This window is way too small to use");
+                exit (1);
+        }
+
+        gtk_widget_size_request (widget, &requisition);
+        allocation.x = x;
+        allocation.y = y;
+        allocation.width = width;
+        allocation.height = height;
+        gtk_widget_size_allocate (widget, &allocation);
+        gtk_window_resize (GTK_WINDOW (widget), width, height);
+}
+
+GtkWidget *
+gs_theme_window_new (void)
+{
+        GSThemeWindow *window;
+
+        window = g_object_new (GS_TYPE_THEME_WINDOW,
+                               "type", GTK_WINDOW_TOPLEVEL,
+                               NULL);
+
+        return GTK_WIDGET (window);
+}
diff --git a/savers/gs-theme-window.h b/savers/gs-theme-window.h
new file mode 100644
index 0000000..8223828
--- /dev/null
+++ b/savers/gs-theme-window.h
@@ -0,0 +1,72 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * gs-theme-window.h - special toplevel for screensavers
+ *
+ * Copyright (C) 2005 Ray Strode <rstrode at redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2, 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 Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Originally written by: Ray Strode <rstrode at redhat.com>
+ */
+
+#ifndef GS_THEME_WINDOW_H
+#define GS_THEME_WINDOW_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_THEME_WINDOW            (gs_theme_window_get_type ())
+#define GS_THEME_WINDOW(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GS_TYPE_THEME_WINDOW, GSThemeWindow))
+#define GS_THEME_WINDOW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GS_TYPE_THEME_WINDOW, GSThemeWindowClass))
+#define GS_IS_WINDOW(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GS_TYPE_THEME_WINDOW))
+#define GS_IS_WINDOW_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), GS_TYPE_THEME_WINDOW))
+#define GS_THEME_WINDOW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), GS_TYPE_THEME_WINDOW, GSThemeWindowClass))
+
+typedef struct _GSThemeWindow GSThemeWindow;
+typedef struct _GSThemeWindowClass GSThemeWindowClass;
+
+struct _GSThemeWindow
+{
+	GtkWindow parent;
+
+	/*< private >*/
+	/* reserved for priv pointer */
+	gpointer reserved;
+};
+
+struct _GSThemeWindowClass
+{
+	GtkWindowClass parent_class;
+
+	/* for signals later if needed */
+	gpointer reserved_1;
+	gpointer reserved_2;
+	gpointer reserved_3;
+	gpointer reserved_4;
+};
+
+#ifndef GS_HIDE_FUNCTION_DECLARATIONS
+GType         gs_theme_window_get_type (void);
+GtkWidget    *gs_theme_window_new      (void);
+#endif
+
+G_END_DECLS
+#endif /* GS_THEME_WINDOW_H */
diff --git a/savers/gs-theme-window.h.orig b/savers/gs-theme-window.h.orig
new file mode 100644
index 0000000..cfc5edf
--- /dev/null
+++ b/savers/gs-theme-window.h.orig
@@ -0,0 +1,72 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * gs-theme-window.h - special toplevel for screensavers
+ *
+ * Copyright (C) 2005 Ray Strode <rstrode at redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2, 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 Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Originally written by: Ray Strode <rstrode at redhat.com>
+ */
+
+#ifndef GS_THEME_WINDOW_H
+#define GS_THEME_WINDOW_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_THEME_WINDOW            (gs_theme_window_get_type ())
+#define GS_THEME_WINDOW(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GS_TYPE_THEME_WINDOW, GSThemeWindow))
+#define GS_THEME_WINDOW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GS_TYPE_THEME_WINDOW, GSThemeWindowClass))
+#define GS_IS_WINDOW(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GS_TYPE_THEME_WINDOW))
+#define GS_IS_WINDOW_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), GS_TYPE_THEME_WINDOW))
+#define GS_THEME_WINDOW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), GS_TYPE_THEME_WINDOW, GSThemeWindowClass))
+
+typedef struct _GSThemeWindow GSThemeWindow;
+typedef struct _GSThemeWindowClass GSThemeWindowClass;
+
+struct _GSThemeWindow
+{
+        GtkWindow parent;
+
+        /*< private >*/
+        /* reserved for priv pointer */
+        gpointer reserved;
+};
+
+struct _GSThemeWindowClass
+{
+        GtkWindowClass parent_class;
+
+        /* for signals later if needed */
+        gpointer reserved_1;
+        gpointer reserved_2;
+        gpointer reserved_3;
+        gpointer reserved_4;
+};
+
+#ifndef GS_HIDE_FUNCTION_DECLARATIONS
+GType         gs_theme_window_get_type (void);
+GtkWidget    *gs_theme_window_new      (void);
+#endif
+
+G_END_DECLS
+#endif /* GS_THEME_WINDOW_H */
diff --git a/savers/gste-popsquares.c b/savers/gste-popsquares.c
new file mode 100644
index 0000000..6a6f2e3
--- /dev/null
+++ b/savers/gste-popsquares.c
@@ -0,0 +1,622 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-engine.h"
+#include "gste-popsquares.h"
+
+static void     gste_popsquares_class_init (GSTEPopsquaresClass *klass);
+static void     gste_popsquares_init       (GSTEPopsquares      *engine);
+static void     gste_popsquares_finalize   (GObject            *object);
+
+typedef struct _square
+{
+	int x, y, w, h;
+	int color;
+} square;
+
+struct GSTEPopsquaresPrivate
+{
+	guint timeout_id;
+
+	int        ncolors;
+	int        subdivision;
+
+	GdkGC     *gc;
+	GdkColor  *colors;
+	square    *squares;
+
+};
+
+#define GSTE_POPSQUARES_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSTE_TYPE_POPSQUARES, GSTEPopsquaresPrivate))
+
+static GObjectClass *parent_class = NULL;
+
+G_DEFINE_TYPE (GSTEPopsquares, gste_popsquares, GS_TYPE_THEME_ENGINE)
+
+static void
+hsv_to_rgb (int             h,
+            double          s,
+            double          v,
+            unsigned short *r,
+            unsigned short *g,
+            unsigned short *b)
+{
+	double H, S, V, R, G, B;
+	double p1, p2, p3;
+	double f;
+	int    i;
+
+	if (s < 0)
+	{
+		s = 0;
+	}
+	if (v < 0)
+	{
+		v = 0;
+	}
+	if (s > 1)
+	{
+		s = 1;
+	}
+	if (v > 1)
+	{
+		v = 1;
+	}
+
+	S = s;
+	V = v;
+	H = (h % 360) / 60.0;
+	i = H;
+	f = H - i;
+	p1 = V * (1 - S);
+	p2 = V * (1 - (S * f));
+	p3 = V * (1 - (S * (1 - f)));
+
+	if (i == 0)
+	{
+		R = V;
+		G = p3;
+		B = p1;
+	}
+	else if (i == 1)
+	{
+		R = p2;
+		G = V;
+		B = p1;
+	}
+	else if (i == 2)
+	{
+		R = p1;
+		G = V;
+		B = p3;
+	}
+	else if (i == 3)
+	{
+		R = p1;
+		G = p2;
+		B = V;
+	}
+	else if (i == 4)
+	{
+		R = p3;
+		G = p1;
+		B = V;
+	}
+	else
+	{
+		R = V;
+		G = p1;
+		B = p2;
+	}
+
+	*r = R * 65535;
+	*g = G * 65535;
+	*b = B * 65535;
+}
+
+static void
+rgb_to_hsv (unsigned short r,
+            unsigned short g,
+            unsigned short b,
+            int           *h,
+            double        *s,
+            double        *v)
+{
+	double R, G, B, H, S, V;
+	double cmax, cmin;
+	double cmm;
+	int    imax;
+
+	R = ((double) r) / 65535.0;
+	G = ((double) g) / 65535.0;
+	B = ((double) b) / 65535.0;
+	cmax = R;
+	cmin = G;
+	imax = 1;
+
+	if (cmax < G)
+	{
+		cmax = G;
+		cmin = R;
+		imax = 2;
+	}
+	if (cmax < B)
+	{
+		cmax = B;
+		imax = 3;
+	}
+	if (cmin > B)
+	{
+		cmin = B;
+	}
+
+	cmm = cmax - cmin;
+	V = cmax;
+
+	if (cmm == 0)
+	{
+		S = H = 0;
+	}
+	else
+	{
+		S = cmm / cmax;
+		if (imax == 1)
+		{
+			H = (G - B) / cmm;
+		}
+		else if (imax == 2)
+		{
+			H = 2.0 + (B - R) / cmm;
+		}
+		else
+		{
+			/*if (imax == 3)*/
+			H = 4.0 + (R - G) / cmm;
+		}
+
+		if (H < 0)
+		{
+			H += 6.0;
+		}
+	}
+
+	*h = (H * 60.0);
+	*s = S;
+	*v = V;
+}
+
+static void
+make_color_ramp (GdkColormap *colormap,
+                 int          h1,
+                 double       s1,
+                 double       v1,
+                 int          h2,
+                 double       s2,
+                 double       v2,
+                 GdkColor    *colors,
+                 int          n_colors,
+                 gboolean     closed,
+                 gboolean     allocate,
+                 gboolean     writable)
+{
+	double   dh, ds, dv;		/* deltas */
+	int      i;
+	int      ncolors, wanted;
+	int      total_ncolors   = n_colors;
+
+	wanted = total_ncolors;
+	if (closed)
+	{
+		wanted = (wanted / 2) + 1;
+	}
+
+	ncolors = total_ncolors;
+
+	memset (colors, 0, n_colors * sizeof (*colors));
+
+	if (closed)
+	{
+		ncolors = (ncolors / 2) + 1;
+	}
+
+	/* Note: unlike other routines in this module, this function assumes that
+	   if h1 and h2 are more than 180 degrees apart, then the desired direction
+	   is always from h1 to h2 (rather than the shorter path.)  make_uniform
+	   depends on this.
+	*/
+	dh = ((double)h2 - (double)h1) / ncolors;
+	ds = (s2 - s1) / ncolors;
+	dv = (v2 - v1) / ncolors;
+
+	for (i = 0; i < ncolors; i++)
+	{
+		hsv_to_rgb ((int) (h1 + (i * dh)),
+		            (s1 + (i * ds)),
+		            (v1 + (i * dv)),
+		            &colors [i].red,
+		            &colors [i].green,
+		            &colors [i].blue);
+		if (allocate)
+		{
+			gdk_colormap_alloc_color (colormap,
+			                          &colors [i],
+			                          writable,
+			                          TRUE);
+		}
+	}
+
+	if (closed)
+	{
+		for (i = ncolors; i < n_colors; i++)
+		{
+			colors [i] = colors [n_colors - i];
+		}
+	}
+
+}
+
+static void
+randomize_square_colors (square *squares,
+                         int     nsquares,
+                         int     ncolors)
+{
+	int     i;
+	square *s;
+
+	s = squares;
+
+	for (i = 0; i < nsquares; i++)
+	{
+		s[i].color = g_random_int_range (0, ncolors);
+	}
+}
+
+static void
+set_colors (GdkWindow *window,
+            GdkColor  *fg,
+            GdkColor  *bg)
+{
+	GtkWidget *widget;
+	GdkColor   color;
+
+	widget = gtk_invisible_new ();
+
+	color = widget->style->dark [GTK_STATE_SELECTED];
+	fg->red   = color.red;
+	fg->green = color.green;
+	fg->blue  = color.blue;
+	color = widget->style->bg [GTK_STATE_SELECTED];
+	bg->red   = color.red;
+	bg->green = color.green;
+	bg->blue  = color.blue;
+}
+
+static void
+gste_popsquares_set_property (GObject            *object,
+                              guint               prop_id,
+                              const GValue       *value,
+                              GParamSpec         *pspec)
+{
+	GSTEPopsquares *self;
+
+	self = GSTE_POPSQUARES (object);
+
+	switch (prop_id)
+	{
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gste_popsquares_get_property (GObject            *object,
+                              guint               prop_id,
+                              GValue             *value,
+                              GParamSpec         *pspec)
+{
+	GSTEPopsquares *self;
+
+	self = GSTE_POPSQUARES (object);
+
+	switch (prop_id)
+	{
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+setup_squares (GSTEPopsquares *pop)
+{
+	int       window_width;
+	int       window_height;
+	int       nsquares;
+	int       x, y;
+	int       sw, sh, gw, gh;
+	GdkWindow *window;
+
+	window = gs_theme_engine_get_window (GS_THEME_ENGINE (pop));
+
+	if (window == NULL)
+	{
+		return;
+	}
+
+	gs_theme_engine_get_window_size (GS_THEME_ENGINE (pop), &window_width, &window_height);
+
+	sw = window_width / pop->priv->subdivision;
+	sh = window_height / pop->priv->subdivision;
+
+	gw = pop->priv->subdivision;
+	gh = pop->priv->subdivision;
+	nsquares = gw * gh;
+
+	if (pop->priv->squares)
+	{
+		g_free (pop->priv->squares);
+	}
+	pop->priv->squares = g_new0 (square, nsquares);
+
+	for (y = 0; y < gh; y++)
+	{
+		for (x = 0; x < gw; x++)
+		{
+			square *s = (square *) &pop->priv->squares [gw * y + x];
+			s->w = sw;
+			s->h = sh;
+			s->x = x * sw;
+			s->y = y * sh;
+		}
+	}
+}
+
+static void
+setup_colors (GSTEPopsquares *pop)
+{
+	double    s1, v1, s2, v2 = 0;
+	int       h1, h2 = 0;
+	int       nsquares;
+	GdkColor  fg;
+	GdkColor  bg;
+	GdkWindow *window;
+
+	window = gs_theme_engine_get_window (GS_THEME_ENGINE (pop));
+
+	if (window == NULL)
+	{
+		return;
+	}
+
+	set_colors (window, &fg, &bg);
+
+	if (pop->priv->gc)
+	{
+		g_object_unref (pop->priv->gc);
+	}
+	pop->priv->gc = gdk_gc_new (window);
+
+	if (pop->priv->colors)
+	{
+		g_free (pop->priv->colors);
+	}
+	pop->priv->colors = g_new0 (GdkColor, pop->priv->ncolors);
+
+	rgb_to_hsv (fg.red, fg.green, fg.blue, &h1, &s1, &v1);
+	rgb_to_hsv (bg.red, bg.green, bg.blue, &h2, &s2, &v2);
+
+	make_color_ramp (gtk_widget_get_colormap (GTK_WIDGET (pop)),
+	                 h1, s1, v1,
+	                 h2, s2, v2,
+	                 pop->priv->colors,
+	                 pop->priv->ncolors,
+	                 TRUE,
+	                 TRUE,
+	                 FALSE);
+
+	nsquares = pop->priv->subdivision * pop->priv->subdivision;
+
+	randomize_square_colors (pop->priv->squares, nsquares, pop->priv->ncolors);
+}
+
+static void
+gste_popsquares_real_show (GtkWidget *widget)
+{
+	GSTEPopsquares *pop = GSTE_POPSQUARES (widget);
+
+	/* start */
+	setup_squares (pop);
+	setup_colors (pop);
+
+	if (GTK_WIDGET_CLASS (parent_class)->show)
+	{
+		GTK_WIDGET_CLASS (parent_class)->show (widget);
+	}
+}
+
+static gboolean
+gste_popsquares_real_expose (GtkWidget      *widget,
+                             GdkEventExpose *event)
+{
+	gboolean handled = FALSE;
+
+	/* draw */
+
+	/* FIXME: should double buffer? */
+
+	if (GTK_WIDGET_CLASS (parent_class)->expose_event)
+	{
+		handled = GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+	}
+
+	return handled;
+}
+
+static gboolean
+gste_popsquares_real_configure (GtkWidget         *widget,
+                                GdkEventConfigure *event)
+{
+	GSTEPopsquares *pop = GSTE_POPSQUARES (widget);
+	gboolean        handled = FALSE;
+
+	/* resize */
+
+	/* just reset everything */
+	setup_squares (pop);
+	setup_colors (pop);
+
+	/* schedule a redraw */
+	gtk_widget_queue_draw (widget);
+
+	if (GTK_WIDGET_CLASS (parent_class)->configure_event)
+	{
+		handled = GTK_WIDGET_CLASS (parent_class)->configure_event (widget, event);
+	}
+
+	return handled;
+}
+
+static void
+gste_popsquares_class_init (GSTEPopsquaresClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+	parent_class = g_type_class_peek_parent (klass);
+
+	object_class->finalize = gste_popsquares_finalize;
+	object_class->get_property = gste_popsquares_get_property;
+	object_class->set_property = gste_popsquares_set_property;
+
+	widget_class->show = gste_popsquares_real_show;
+	widget_class->expose_event = gste_popsquares_real_expose;
+	widget_class->configure_event = gste_popsquares_real_configure;
+
+	g_type_class_add_private (klass, sizeof (GSTEPopsquaresPrivate));
+}
+
+static gboolean
+draw_iter (GSTEPopsquares *pop)
+{
+	int      border = 1;
+	gboolean twitch = FALSE;
+	int      x, y;
+	int      sw, sh, gw, gh;
+	int      nsquares;
+	int      window_width;
+	int      window_height;
+	GdkWindow *window;
+
+	window = gs_theme_engine_get_window (GS_THEME_ENGINE (pop));
+
+	if (window == NULL)
+	{
+		return TRUE;
+	}
+
+	gs_theme_engine_get_window_size (GS_THEME_ENGINE (pop),
+	                                 &window_width,
+	                                 &window_height);
+	sw = window_width / pop->priv->subdivision;
+	sh = window_height / pop->priv->subdivision;
+
+	gw = pop->priv->subdivision;
+	gh = pop->priv->subdivision;
+	nsquares = gw * gh;
+
+	for (y = 0; y < gh; y++)
+	{
+		for (x = 0; x < gw; x++)
+		{
+			square *s = (square *) &pop->priv->squares [gw * y + x];
+
+			gdk_gc_set_foreground (pop->priv->gc, &(pop->priv->colors [s->color]));
+			gdk_draw_rectangle (window, pop->priv->gc, TRUE, s->x, s->y,
+			                    border ? s->w - border : s->w,
+			                    border ? s->h - border : s->h);
+			s->color++;
+
+			if (s->color == pop->priv->ncolors)
+			{
+				if (twitch && ((g_random_int_range (0, 4)) == 0))
+				{
+					randomize_square_colors (pop->priv->squares, nsquares, pop->priv->ncolors);
+				}
+				else
+				{
+					s->color = g_random_int_range (0, pop->priv->ncolors);
+				}
+			}
+		}
+	}
+
+	return TRUE;
+}
+
+static void
+gste_popsquares_init (GSTEPopsquares *pop)
+{
+	int delay;
+
+	pop->priv = GSTE_POPSQUARES_GET_PRIVATE (pop);
+
+	pop->priv->ncolors = 128;
+	pop->priv->subdivision = 5;
+
+	delay = 25;
+	pop->priv->timeout_id = g_timeout_add (delay, (GSourceFunc)draw_iter, pop);
+}
+
+static void
+gste_popsquares_finalize (GObject *object)
+{
+	GSTEPopsquares *pop;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GSTE_IS_POPSQUARES (object));
+
+	pop = GSTE_POPSQUARES (object);
+
+	g_return_if_fail (pop->priv != NULL);
+
+	if (pop->priv->timeout_id > 0)
+	{
+		g_source_remove (pop->priv->timeout_id);
+		pop->priv->timeout_id = 0;
+	}
+
+	g_free (pop->priv->squares);
+	g_free (pop->priv->colors);
+	g_object_unref (pop->priv->gc);
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
diff --git a/savers/gste-popsquares.c.orig b/savers/gste-popsquares.c.orig
new file mode 100644
index 0000000..cda78c7
--- /dev/null
+++ b/savers/gste-popsquares.c.orig
@@ -0,0 +1,563 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-engine.h"
+#include "gste-popsquares.h"
+
+static void     gste_popsquares_class_init (GSTEPopsquaresClass *klass);
+static void     gste_popsquares_init       (GSTEPopsquares      *engine);
+static void     gste_popsquares_finalize   (GObject            *object);
+
+typedef struct _square {
+        int x, y, w, h;
+        int color;
+} square;
+
+struct GSTEPopsquaresPrivate
+{
+        guint timeout_id;
+
+        int        ncolors;
+        int        subdivision;
+
+        GdkGC     *gc;
+        GdkColor  *colors;
+        square    *squares;
+
+};
+
+#define GSTE_POPSQUARES_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSTE_TYPE_POPSQUARES, GSTEPopsquaresPrivate))
+
+static GObjectClass *parent_class = NULL;
+
+G_DEFINE_TYPE (GSTEPopsquares, gste_popsquares, GS_TYPE_THEME_ENGINE)
+
+static void
+hsv_to_rgb (int             h,
+            double          s,
+            double          v,
+	    unsigned short *r,
+            unsigned short *g,
+            unsigned short *b)
+{
+        double H, S, V, R, G, B;
+        double p1, p2, p3;
+        double f;
+        int    i;
+
+        if (s < 0) {
+                s = 0;
+        }
+        if (v < 0) {
+                v = 0;
+        }
+        if (s > 1) {
+                s = 1;
+        }
+        if (v > 1) {
+                v = 1;
+        }
+
+        S = s; V = v;
+        H = (h % 360) / 60.0;
+        i = H;
+        f = H - i;
+        p1 = V * (1 - S);
+        p2 = V * (1 - (S * f));
+        p3 = V * (1 - (S * (1 - f)));
+
+        if (i == 0) {
+                R = V;
+                G = p3;
+                B = p1;
+        } else if (i == 1) {
+                R = p2;
+                G = V;
+                B = p1;
+        } else if (i == 2) {
+                R = p1;
+                G = V;
+                B = p3;
+        } else if (i == 3) {
+                R = p1;
+                G = p2;
+                B = V;
+        } else if (i == 4) {
+                R = p3;
+                G = p1;
+                B = V;
+        } else {
+                R = V;
+                G = p1;
+                B = p2;
+        }
+
+        *r = R * 65535;
+        *g = G * 65535;
+        *b = B * 65535;
+}
+
+static void
+rgb_to_hsv (unsigned short r,
+            unsigned short g,
+            unsigned short b,
+	    int           *h,
+            double        *s,
+            double        *v)
+{
+        double R, G, B, H, S, V;
+        double cmax, cmin;
+        double cmm;
+        int    imax;
+
+        R = ((double) r) / 65535.0;
+        G = ((double) g) / 65535.0;
+        B = ((double) b) / 65535.0;
+        cmax = R;
+        cmin = G;
+        imax = 1;
+
+        if (cmax < G) {
+                cmax = G; cmin = R; imax = 2;
+        }
+        if (cmax < B) {
+                cmax = B; imax = 3;
+        }
+        if (cmin > B) {
+                cmin = B;
+        }
+
+        cmm = cmax - cmin;
+        V = cmax;
+
+        if (cmm == 0) {
+                S = H = 0;
+        } else {
+                S = cmm / cmax;
+                if (imax == 1) {
+                        H = (G - B) / cmm;
+                } else if (imax == 2) {
+                        H = 2.0 + (B - R) / cmm;
+                } else {
+                        /*if (imax == 3)*/
+                        H = 4.0 + (R - G) / cmm;
+                }
+
+                if (H < 0) {
+                        H += 6.0;
+                }
+        }
+
+        *h = (H * 60.0);
+        *s = S;
+        *v = V;
+}
+
+static void
+make_color_ramp (GdkColormap *colormap,
+		 int          h1,
+                 double       s1,
+                 double       v1,
+		 int          h2,
+                 double       s2,
+                 double       v2,
+		 GdkColor    *colors,
+                 int          n_colors,
+		 gboolean     closed,
+		 gboolean     allocate,
+		 gboolean     writable)
+{
+        double   dh, ds, dv;		/* deltas */
+        int      i;
+        int      ncolors, wanted;
+        int      total_ncolors   = n_colors;
+
+        wanted = total_ncolors;
+        if (closed) {
+                wanted = (wanted / 2) + 1;
+        }
+
+        ncolors = total_ncolors;
+
+        memset (colors, 0, n_colors * sizeof (*colors));
+
+        if (closed) {
+                ncolors = (ncolors / 2) + 1;
+        }
+
+        /* Note: unlike other routines in this module, this function assumes that
+           if h1 and h2 are more than 180 degrees apart, then the desired direction
+           is always from h1 to h2 (rather than the shorter path.)  make_uniform
+           depends on this.
+        */
+        dh = ((double)h2 - (double)h1) / ncolors;
+        ds = (s2 - s1) / ncolors;
+        dv = (v2 - v1) / ncolors;
+
+        for (i = 0; i < ncolors; i++) {
+                hsv_to_rgb ((int) (h1 + (i * dh)),
+                            (s1 + (i * ds)),
+                            (v1 + (i * dv)),
+                            &colors [i].red,
+                            &colors [i].green,
+                            &colors [i].blue);
+                if (allocate) {
+                        gdk_colormap_alloc_color (colormap,
+                                                  &colors [i],
+                                                  writable,
+                                                  TRUE);
+                }
+        }
+
+        if (closed) {
+                for (i = ncolors; i < n_colors; i++) {
+                        colors [i] = colors [n_colors - i];
+                }
+        }
+
+}
+
+static void
+randomize_square_colors (square *squares,
+                         int     nsquares,
+                         int     ncolors)
+{
+        int     i;
+        square *s;
+
+        s = squares;
+
+        for (i = 0; i < nsquares; i++) {
+                s[i].color = g_random_int_range (0, ncolors);
+        }
+}
+
+static void
+set_colors (GdkWindow *window,
+            GdkColor  *fg,
+            GdkColor  *bg)
+{
+        GtkWidget *widget;
+        GdkColor   color;
+
+        widget = gtk_invisible_new ();
+
+        color = widget->style->dark [GTK_STATE_SELECTED];
+        fg->red   = color.red;
+        fg->green = color.green;
+        fg->blue  = color.blue;
+        color = widget->style->bg [GTK_STATE_SELECTED];
+        bg->red   = color.red;
+        bg->green = color.green;
+        bg->blue  = color.blue;
+}
+
+static void
+gste_popsquares_set_property (GObject            *object,
+                              guint               prop_id,
+                              const GValue       *value,
+                              GParamSpec         *pspec)
+{
+        GSTEPopsquares *self;
+
+        self = GSTE_POPSQUARES (object);
+
+        switch (prop_id) {
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gste_popsquares_get_property (GObject            *object,
+                              guint               prop_id,
+                              GValue             *value,
+                              GParamSpec         *pspec)
+{
+        GSTEPopsquares *self;
+
+        self = GSTE_POPSQUARES (object);
+
+        switch (prop_id) {
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+setup_squares (GSTEPopsquares *pop)
+{
+        int       window_width;
+        int       window_height;
+        int       nsquares;
+        int       x, y;
+        int       sw, sh, gw, gh;
+        GdkWindow *window;
+
+        window = gs_theme_engine_get_window (GS_THEME_ENGINE (pop));
+
+        if (window == NULL) {
+                return;
+        }
+
+        gs_theme_engine_get_window_size (GS_THEME_ENGINE (pop), &window_width, &window_height);
+
+        sw = window_width / pop->priv->subdivision;
+        sh = window_height / pop->priv->subdivision;
+
+        gw = pop->priv->subdivision;
+        gh = pop->priv->subdivision;
+        nsquares = gw * gh;
+
+        if (pop->priv->squares) {
+                g_free (pop->priv->squares);
+        }
+        pop->priv->squares = g_new0 (square, nsquares);
+
+        for (y = 0; y < gh; y++) {
+                for (x = 0; x < gw; x++) {
+                        square *s = (square *) &pop->priv->squares [gw * y + x];
+                        s->w = sw;
+                        s->h = sh;
+                        s->x = x * sw;
+                        s->y = y * sh;
+                }
+        }
+}
+
+static void
+setup_colors (GSTEPopsquares *pop)
+{
+        double    s1, v1, s2, v2 = 0;
+        int       h1, h2 = 0;
+        int       nsquares;
+        GdkColor  fg;
+        GdkColor  bg;
+        GdkWindow *window;
+
+        window = gs_theme_engine_get_window (GS_THEME_ENGINE (pop));
+
+        if (window == NULL) {
+                return;
+        }
+
+        set_colors (window, &fg, &bg);
+
+        if (pop->priv->gc) {
+                g_object_unref (pop->priv->gc);
+        }
+        pop->priv->gc = gdk_gc_new (window);
+
+        if (pop->priv->colors) {
+                g_free (pop->priv->colors);
+        }
+        pop->priv->colors = g_new0 (GdkColor, pop->priv->ncolors);
+
+        rgb_to_hsv (fg.red, fg.green, fg.blue, &h1, &s1, &v1);
+        rgb_to_hsv (bg.red, bg.green, bg.blue, &h2, &s2, &v2);
+
+        make_color_ramp (gtk_widget_get_colormap (GTK_WIDGET (pop)),
+                         h1, s1, v1,
+                         h2, s2, v2,
+                         pop->priv->colors,
+                         pop->priv->ncolors,
+                         TRUE,
+                         TRUE,
+                         FALSE);
+
+        nsquares = pop->priv->subdivision * pop->priv->subdivision;
+
+        randomize_square_colors (pop->priv->squares, nsquares, pop->priv->ncolors);
+}
+
+static void
+gste_popsquares_real_show (GtkWidget *widget)
+{
+        GSTEPopsquares *pop = GSTE_POPSQUARES (widget);
+
+        /* start */
+        setup_squares (pop);
+        setup_colors (pop);
+
+        if (GTK_WIDGET_CLASS (parent_class)->show) {
+                GTK_WIDGET_CLASS (parent_class)->show (widget);
+        }
+}
+
+static gboolean
+gste_popsquares_real_expose (GtkWidget      *widget,
+                             GdkEventExpose *event)
+{
+        gboolean handled = FALSE;
+
+        /* draw */
+
+        /* FIXME: should double buffer? */
+
+        if (GTK_WIDGET_CLASS (parent_class)->expose_event) {
+                handled = GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+        }
+
+        return handled;
+}
+
+static gboolean
+gste_popsquares_real_configure (GtkWidget         *widget,
+                                GdkEventConfigure *event)
+{
+        GSTEPopsquares *pop = GSTE_POPSQUARES (widget);
+        gboolean        handled = FALSE;
+
+        /* resize */
+
+        /* just reset everything */
+        setup_squares (pop);
+        setup_colors (pop);
+
+        /* schedule a redraw */
+        gtk_widget_queue_draw (widget);
+
+        if (GTK_WIDGET_CLASS (parent_class)->configure_event) {
+                handled = GTK_WIDGET_CLASS (parent_class)->configure_event (widget, event);
+        }
+
+        return handled;
+}
+
+static void
+gste_popsquares_class_init (GSTEPopsquaresClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+        parent_class = g_type_class_peek_parent (klass);
+
+        object_class->finalize = gste_popsquares_finalize;
+        object_class->get_property = gste_popsquares_get_property;
+        object_class->set_property = gste_popsquares_set_property;
+
+        widget_class->show = gste_popsquares_real_show;
+        widget_class->expose_event = gste_popsquares_real_expose;
+        widget_class->configure_event = gste_popsquares_real_configure;
+
+        g_type_class_add_private (klass, sizeof (GSTEPopsquaresPrivate));
+}
+
+static gboolean
+draw_iter (GSTEPopsquares *pop)
+{
+        int      border = 1;
+        gboolean twitch = FALSE;
+        int      x, y;
+        int      sw, sh, gw, gh;
+        int      nsquares;
+        int      window_width;
+        int      window_height;
+        GdkWindow *window;
+
+        window = gs_theme_engine_get_window (GS_THEME_ENGINE (pop));
+
+        if (window == NULL) {
+                return TRUE;
+        }
+
+        gs_theme_engine_get_window_size (GS_THEME_ENGINE (pop),
+                                         &window_width,
+                                         &window_height);
+        sw = window_width / pop->priv->subdivision;
+        sh = window_height / pop->priv->subdivision;
+
+        gw = pop->priv->subdivision;
+        gh = pop->priv->subdivision;
+        nsquares = gw * gh;
+
+        for (y = 0; y < gh; y++) {
+                for (x = 0; x < gw; x++) {
+                        square *s = (square *) &pop->priv->squares [gw * y + x];
+
+                        gdk_gc_set_foreground (pop->priv->gc, &(pop->priv->colors [s->color]));
+                        gdk_draw_rectangle (window, pop->priv->gc, TRUE, s->x, s->y,
+                                            border ? s->w - border : s->w,
+                                            border ? s->h - border : s->h);
+                        s->color++;
+
+                        if (s->color == pop->priv->ncolors) {
+                                if (twitch && ((g_random_int_range (0, 4)) == 0)) {
+                                        randomize_square_colors (pop->priv->squares, nsquares, pop->priv->ncolors);
+                                } else {
+                                        s->color = g_random_int_range (0, pop->priv->ncolors);
+                                }
+                        }
+                }
+        }
+
+        return TRUE;
+}
+
+static void
+gste_popsquares_init (GSTEPopsquares *pop)
+{
+        int delay;
+
+        pop->priv = GSTE_POPSQUARES_GET_PRIVATE (pop);
+
+        pop->priv->ncolors = 128;
+        pop->priv->subdivision = 5;
+
+        delay = 25;
+        pop->priv->timeout_id = g_timeout_add (delay, (GSourceFunc)draw_iter, pop);
+}
+
+static void
+gste_popsquares_finalize (GObject *object)
+{
+        GSTEPopsquares *pop;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GSTE_IS_POPSQUARES (object));
+
+        pop = GSTE_POPSQUARES (object);
+
+        g_return_if_fail (pop->priv != NULL);
+
+        if (pop->priv->timeout_id > 0) {
+                g_source_remove (pop->priv->timeout_id);
+                pop->priv->timeout_id = 0;
+        }
+
+        g_free (pop->priv->squares);
+        g_free (pop->priv->colors);
+        g_object_unref (pop->priv->gc);
+
+        G_OBJECT_CLASS (parent_class)->finalize (object);
+}
diff --git a/savers/gste-popsquares.h b/savers/gste-popsquares.h
new file mode 100644
index 0000000..eefb363
--- /dev/null
+++ b/savers/gste-popsquares.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GSTE_POPSQUARES_H
+#define __GSTE_POPSQUARES_H
+
+#include <glib.h>
+#include <gdk/gdk.h>
+#include "gs-theme-engine.h"
+
+G_BEGIN_DECLS
+
+#define GSTE_TYPE_POPSQUARES         (gste_popsquares_get_type ())
+#define GSTE_POPSQUARES(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSTE_TYPE_POPSQUARES, GSTEPopsquares))
+#define GSTE_POPSQUARES_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSTE_TYPE_POPSQUARES, GSTEPopsquaresClass))
+#define GSTE_IS_POPSQUARES(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSTE_TYPE_POPSQUARES))
+#define GSTE_IS_POPSQUARES_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSTE_TYPE_POPSQUARES))
+#define GSTE_POPSQUARES_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSTE_TYPE_POPSQUARES, GSTEPopsquaresClass))
+
+typedef struct GSTEPopsquaresPrivate GSTEPopsquaresPrivate;
+
+typedef struct
+{
+	GSThemeEngine          parent;
+	GSTEPopsquaresPrivate *priv;
+} GSTEPopsquares;
+
+typedef struct
+{
+	GSThemeEngineClass     parent_class;
+} GSTEPopsquaresClass;
+
+GType           gste_popsquares_get_type         (void);
+GSThemeEngine  *gste_popsquares_new              (void);
+
+G_END_DECLS
+
+#endif /* __GSTE_POPSQUARES_H */
diff --git a/savers/gste-popsquares.h.orig b/savers/gste-popsquares.h.orig
new file mode 100644
index 0000000..4139652
--- /dev/null
+++ b/savers/gste-popsquares.h.orig
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GSTE_POPSQUARES_H
+#define __GSTE_POPSQUARES_H
+
+#include <glib.h>
+#include <gdk/gdk.h>
+#include "gs-theme-engine.h"
+
+G_BEGIN_DECLS
+
+#define GSTE_TYPE_POPSQUARES         (gste_popsquares_get_type ())
+#define GSTE_POPSQUARES(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSTE_TYPE_POPSQUARES, GSTEPopsquares))
+#define GSTE_POPSQUARES_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSTE_TYPE_POPSQUARES, GSTEPopsquaresClass))
+#define GSTE_IS_POPSQUARES(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSTE_TYPE_POPSQUARES))
+#define GSTE_IS_POPSQUARES_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSTE_TYPE_POPSQUARES))
+#define GSTE_POPSQUARES_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSTE_TYPE_POPSQUARES, GSTEPopsquaresClass))
+
+typedef struct GSTEPopsquaresPrivate GSTEPopsquaresPrivate;
+
+typedef struct
+{
+        GSThemeEngine          parent;
+        GSTEPopsquaresPrivate *priv;
+} GSTEPopsquares;
+
+typedef struct
+{
+        GSThemeEngineClass     parent_class;
+} GSTEPopsquaresClass;
+
+GType           gste_popsquares_get_type         (void);
+GSThemeEngine  *gste_popsquares_new              (void);
+
+G_END_DECLS
+
+#endif /* __GSTE_POPSQUARES_H */
diff --git a/savers/gste-slideshow.c b/savers/gste-slideshow.c
new file mode 100644
index 0000000..9180be8
--- /dev/null
+++ b/savers/gste-slideshow.c
@@ -0,0 +1,1082 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-engine.h"
+#include "gste-slideshow.h"
+
+static void     gste_slideshow_class_init (GSTESlideshowClass *klass);
+static void     gste_slideshow_init       (GSTESlideshow      *engine);
+static void     gste_slideshow_finalize   (GObject            *object);
+
+struct GSTESlideshowPrivate
+{
+	/* Image at full opacity */
+	cairo_pattern_t *pat1;
+	/* Image at partial opacity */
+	cairo_pattern_t *pat2;
+	/* Alpha of pat2 */
+	gdouble          alpha2;
+	/* edges of pat2 */
+	int              pat2top;
+	int              pat2bottom;
+	int              pat2left;
+	int              pat2right;
+
+	/* backbuffer that we do all the alpha drawing into (no round
+	 * trips to the X server when the server doesn't support drawing
+	 * pixmaps with alpha?) */
+	cairo_surface_t *surf;
+
+	gint64           fade_ticks;
+
+	GThread         *load_thread;
+	GAsyncQueue     *op_q;
+	GAsyncQueue     *results_q;
+
+	guint           results_pull_id;
+	guint           update_image_id;
+
+	GSList         *filename_list;
+	char           *images_location;
+	gboolean        sort_images;
+	int             window_width;
+	int             window_height;
+	PangoColor     *background_color;
+	gboolean        no_stretch_hint;
+
+	guint           timeout_id;
+
+	GTimer         *timer;
+	gboolean        fade_disabled;
+};
+
+enum
+{
+    PROP_0,
+    PROP_IMAGES_LOCATION,
+    PROP_SORT_IMAGES,
+    PROP_SOLID_BACKGROUND,
+    PROP_NO_STRETCH_HINT
+};
+
+#define GSTE_SLIDESHOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSTE_TYPE_SLIDESHOW, GSTESlideshowPrivate))
+
+static GObjectClass *parent_class = NULL;
+
+G_DEFINE_TYPE (GSTESlideshow, gste_slideshow, GS_TYPE_THEME_ENGINE)
+
+#define N_FADE_TICKS 10
+#define MINIMUM_FPS 3.0
+#define DEFAULT_IMAGES_LOCATION DATADIR "/pixmaps/backgrounds"
+#define IMAGE_LOAD_TIMEOUT 10000
+
+typedef struct _Op
+{
+	char          *location;
+	GSTESlideshow *slideshow;
+} Op;
+
+typedef struct _OpResult
+{
+	GdkPixbuf *pixbuf;
+} OpResult;
+
+static gboolean
+push_load_image_func (GSTESlideshow *show)
+{
+	Op *op;
+
+	gs_theme_engine_profile_msg ("Starting a new image load");
+
+	op = g_new (Op, 1);
+
+	op->location = g_strdup (show->priv->images_location);
+	op->slideshow = g_object_ref (show);
+
+	g_async_queue_push (show->priv->op_q, op);
+
+	show->priv->update_image_id = 0;
+
+	return FALSE;
+}
+
+static void
+start_new_load (GSTESlideshow *show,
+                guint          timeout)
+{
+	gs_theme_engine_profile_msg ("Scheduling a new image load");
+
+	/* queue a new load */
+	if (show->priv->update_image_id <= 0)
+	{
+		show->priv->update_image_id = g_timeout_add_full (G_PRIORITY_LOW, timeout,
+		                              (GSourceFunc)push_load_image_func,
+		                              show, NULL);
+	}
+}
+
+static void
+start_fade (GSTESlideshow *show,
+            GdkPixbuf     *pixbuf)
+{
+	int      pw;
+	int      ph;
+	int      x;
+	int      y;
+	cairo_t *cr;
+	int      window_width;
+	int      window_height;
+
+	gs_theme_engine_profile_start ("start");
+
+	window_width = show->priv->window_width;
+	window_height = show->priv->window_height;
+
+	if (show->priv->pat2 != NULL)
+	{
+		cairo_pattern_destroy (show->priv->pat2);
+	}
+
+	pw = gdk_pixbuf_get_width (pixbuf);
+	ph = gdk_pixbuf_get_height (pixbuf);
+	x = (window_width - pw) / 2;
+	y = (window_height - ph) / 2;
+
+	if (gdk_pixbuf_get_has_alpha (pixbuf) && show->priv->background_color)
+	{
+		GdkPixbuf *colored;
+		guint32    color;
+		GdkPixmap *pixmap;
+
+		color = (show->priv->background_color->red << 16)
+		        + (show->priv->background_color->green / 256 << 8)
+		        + show->priv->background_color->blue / 256;
+		colored = gdk_pixbuf_composite_color_simple (pixbuf,
+		          pw, ph,
+		          GDK_INTERP_BILINEAR,
+		          255,
+		          256,
+		          color,
+		          color);
+		pixmap = gdk_pixmap_new (NULL, ph, pw,  gdk_visual_get_system ()->depth);
+
+		gdk_draw_pixbuf (pixmap, NULL, colored, 0, 0, 0, 0, -1, -1, GDK_RGB_DITHER_MAX, 0, 0);
+		gdk_pixbuf_get_from_drawable (pixbuf, pixmap, NULL, 0, 0, 0, 0, -1, -1);
+
+		g_object_unref (pixmap);
+
+		g_object_unref(colored);
+	}
+
+	cr = cairo_create (show->priv->surf);
+
+	/* XXX Handle out of memory? */
+	gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y);
+	show->priv->pat2 = cairo_pattern_reference (cairo_get_source (cr));
+	show->priv->pat2top = y;
+	show->priv->pat2bottom = y + ph;
+	show->priv->pat2left = x;
+	show->priv->pat2right = x + pw;
+
+	cairo_destroy (cr);
+
+	show->priv->fade_ticks = 0;
+	g_timer_start (show->priv->timer);
+
+	gs_theme_engine_profile_end ("end");
+}
+
+static void
+finish_fade (GSTESlideshow *show)
+{
+	gs_theme_engine_profile_start ("start");
+
+	if (show->priv->pat1 != NULL)
+	{
+		cairo_pattern_destroy (show->priv->pat1);
+	}
+
+	show->priv->pat1 = show->priv->pat2;
+	show->priv->pat2 = NULL;
+
+	start_new_load (show, IMAGE_LOAD_TIMEOUT);
+
+	gs_theme_engine_profile_end ("end");
+}
+
+static void
+update_display (GSTESlideshow *show)
+{
+	int      window_width;
+	int      window_height;
+	cairo_t *cr;
+
+	gs_theme_engine_profile_start ("start");
+
+	cr = cairo_create (show->priv->surf);
+
+	gs_theme_engine_get_window_size (GS_THEME_ENGINE (show),
+	                                 &window_width,
+	                                 &window_height);
+
+	if (show->priv->pat2 != NULL)
+	{
+		/* fade out areas not covered by the new image */
+		/* top */
+		cairo_rectangle (cr, 0, 0, window_width, show->priv->pat2top);
+		if (show->priv->background_color)
+		{
+			cairo_set_source_rgba (cr, show->priv->background_color->red / 65535.0,
+			                       show->priv->background_color->green / 65535.0,
+			                       show->priv->background_color->blue / 65535.0, show->priv->alpha2);
+		}
+		else
+		{
+			cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, show->priv->alpha2);
+		}
+		cairo_fill (cr);
+		/* left (excluding what's covered by top and bottom) */
+		cairo_rectangle (cr, 0, show->priv->pat2top,
+		                 show->priv->pat2left,
+		                 show->priv->pat2bottom - show->priv->pat2top);
+		if (show->priv->background_color)
+		{
+			cairo_set_source_rgba (cr, show->priv->background_color->red / 65535.0,
+			                       show->priv->background_color->green / 65535.0,
+			                       show->priv->background_color->blue / 65535.0, show->priv->alpha2);
+		}
+		else
+		{
+			cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, show->priv->alpha2);
+		}
+		cairo_fill (cr);
+		/* bottom */
+		cairo_rectangle (cr, 0, show->priv->pat2bottom, window_width,
+		                 window_height - show->priv->pat2bottom);
+		if (show->priv->background_color)
+		{
+			cairo_set_source_rgba (cr, show->priv->background_color->red / 65535.0,
+			                       show->priv->background_color->green / 65535.0,
+			                       show->priv->background_color->blue / 65535.0, show->priv->alpha2);
+		}
+		else
+		{
+			cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, show->priv->alpha2);
+		}
+		cairo_fill (cr);
+		/* right (excluding what's covered by top and bottom) */
+		cairo_rectangle (cr, show->priv->pat2right,
+		                 show->priv->pat2top,
+		                 window_width - show->priv->pat2right,
+		                 show->priv->pat2bottom - show->priv->pat2top);
+		if (show->priv->background_color)
+		{
+			cairo_set_source_rgba (cr, show->priv->background_color->red / 65535.0,
+			                       show->priv->background_color->green / 65535.0,
+			                       show->priv->background_color->blue / 65535.0, show->priv->alpha2);
+		}
+		else
+		{
+			cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, show->priv->alpha2);
+		}
+		cairo_fill (cr);
+
+		gs_theme_engine_profile_start ("paint pattern to surface");
+		cairo_set_source (cr, show->priv->pat2);
+
+		cairo_paint_with_alpha (cr, show->priv->alpha2);
+		gs_theme_engine_profile_end ("paint pattern to surface");
+	}
+	else
+	{
+		if (show->priv->pat1 != NULL)
+		{
+			cairo_set_source (cr, show->priv->pat1);
+			cairo_paint (cr);
+		}
+	}
+
+	cairo_destroy (cr);
+
+	/* paint the image buffer into the window */
+	cr = gdk_cairo_create (GTK_WIDGET (show)->window);
+
+	cairo_set_source_surface (cr, show->priv->surf, 0, 0);
+
+	gs_theme_engine_profile_start ("paint surface to window");
+	cairo_paint (cr);
+	gs_theme_engine_profile_end ("paint surface to window");
+
+	cairo_destroy (cr);
+
+	gs_theme_engine_profile_end ("end");
+}
+
+static gboolean
+draw_iter (GSTESlideshow *show)
+{
+	double old_opacity;
+	double new_opacity;
+
+	if (show->priv->pat2 != NULL)
+	{
+		gdouble fps;
+		gdouble elapsed;
+
+		if (show->priv->fade_disabled)
+		{
+			show->priv->alpha2 = 1.0;
+			update_display (show);
+			finish_fade (show);
+			return TRUE;
+		}
+
+		/* we are in a fade */
+		show->priv->fade_ticks++;
+
+		/*
+		 * We have currently drawn pat2 with old_opacity, and we
+		 * want to set alpha2 so that drawing pat2 at alpha2
+		 * yields it drawn with new_opacity
+		 *
+		 * Solving
+		 *   new_opacity = 1 - (1 - alpha2) * (1 - old_opacity)
+		 * yields
+		 *   alpha2 = 1 - (1 - new_opacity) / (1 - old_opacity)
+		 *
+		 * XXX This assumes that cairo doesn't correct alpha for
+		 * the color profile.  However, any error is guaranteed
+		 * to be cleaned up by the last iteration, where alpha2
+		 * becomes 1 because new_opacity is 1.
+		 */
+		old_opacity = (double) (show->priv->fade_ticks - 1) /
+		              (double) N_FADE_TICKS;
+		new_opacity = (double) show->priv->fade_ticks /
+		              (double) N_FADE_TICKS;
+		show->priv->alpha2 = 1.0 - (1.0 - new_opacity) /
+		                     (1.0 - old_opacity);
+
+		update_display (show);
+
+		elapsed = g_timer_elapsed (show->priv->timer, NULL);
+		fps = (gdouble)show->priv->fade_ticks / elapsed;
+		if (fps < MINIMUM_FPS)
+		{
+			g_warning ("Getting less than %.2f frames per second, disabling fade", MINIMUM_FPS);
+			show->priv->fade_ticks = N_FADE_TICKS - 1;
+			show->priv->fade_disabled = TRUE;
+		}
+
+		if (show->priv->fade_ticks >= N_FADE_TICKS)
+		{
+			finish_fade (show);
+		}
+	}
+
+	return TRUE;
+}
+
+static void
+process_new_pixbuf (GSTESlideshow *show,
+                    GdkPixbuf     *pixbuf)
+{
+	gs_theme_engine_profile_msg ("Processing a new image");
+
+	if (pixbuf != NULL)
+	{
+		start_fade (show, pixbuf);
+	}
+	else
+	{
+		start_new_load (show, 10);
+	}
+}
+
+static void
+op_result_free (OpResult *result)
+{
+	if (result == NULL)
+	{
+		return;
+	}
+
+	if (result->pixbuf != NULL)
+	{
+		g_object_unref (result->pixbuf);
+	}
+
+	g_free (result);
+}
+
+static gboolean
+results_pull_func (GSTESlideshow *show)
+{
+	OpResult *result;
+
+	GDK_THREADS_ENTER ();
+
+	g_async_queue_lock (show->priv->results_q);
+
+	result = g_async_queue_try_pop_unlocked (show->priv->results_q);
+	g_assert (result);
+
+	while (result != NULL)
+	{
+		process_new_pixbuf (show, result->pixbuf);
+		op_result_free (result);
+
+		result = g_async_queue_try_pop_unlocked (show->priv->results_q);
+	}
+
+	show->priv->results_pull_id = 0;
+
+	g_async_queue_unlock (show->priv->results_q);
+
+	GDK_THREADS_LEAVE ();
+
+	return FALSE;
+}
+
+static GdkPixbuf *
+scale_pixbuf (GdkPixbuf *pixbuf,
+              int        max_width,
+              int        max_height,
+              gboolean   no_stretch_hint)
+{
+	int        pw;
+	int        ph;
+	float      scale_factor_x = 1.0;
+	float      scale_factor_y = 1.0;
+	float      scale_factor = 1.0;
+
+	pw = gdk_pixbuf_get_width (pixbuf);
+	ph = gdk_pixbuf_get_height (pixbuf);
+
+	/* If the image is less than 256 wide or high then it
+	   is probably a thumbnail and we should ignore it */
+	if (pw < 256 || ph < 256)
+	{
+		return NULL;
+	}
+
+	/* Determine which dimension requires the smallest scale. */
+	scale_factor_x = (float) max_width / (float) pw;
+	scale_factor_y = (float) max_height / (float) ph;
+
+	if (scale_factor_x > scale_factor_y)
+	{
+		scale_factor = scale_factor_y;
+	}
+	else
+	{
+		scale_factor = scale_factor_x;
+	}
+
+	/* always scale down, allow to disable scaling up */
+	if (scale_factor < 1.0 || !no_stretch_hint)
+	{
+		int scale_x;
+		int scale_y;
+
+		scale_x = (int) (pw * scale_factor);
+		scale_y = (int) (ph * scale_factor);
+		return gdk_pixbuf_scale_simple (pixbuf,
+		                                scale_x,
+		                                scale_y,
+		                                GDK_INTERP_BILINEAR);
+	}
+	else
+	{
+		return g_object_ref (pixbuf);
+	}
+}
+
+static void
+add_files_to_list (GSList    **list,
+                   const char *base)
+{
+	GDir       *d;
+	const char *d_name;
+
+	d = g_dir_open (base, 0, NULL);
+	if (d == NULL)
+	{
+		g_warning ("Could not open directory: %s", base);
+		return;
+	}
+
+	while ((d_name = g_dir_read_name (d)) != NULL)
+	{
+		char *path;
+
+		/* skip hidden files */
+		if (d_name[0] == '.')
+		{
+			continue;
+		}
+
+		path = g_build_filename (base, d_name, NULL);
+		if (g_file_test (path, G_FILE_TEST_IS_DIR))
+		{
+			add_files_to_list (list, path);
+			g_free (path);
+		}
+		else
+		{
+			*list = g_slist_prepend (*list, path);
+		}
+	}
+
+	g_dir_close (d);
+}
+
+static GSList *
+build_filename_list_local_dir (const char *base)
+{
+	GSList *list = NULL;
+
+	add_files_to_list (&list, base);
+
+	return list;
+}
+
+static int
+gste_strcmp_compare_func (gconstpointer string_a, gconstpointer string_b)
+{
+	return strcmp (string_a == NULL ? "" : string_a,
+	               string_b == NULL ? "" : string_b);
+}
+
+
+static GdkPixbuf *
+get_pixbuf_from_local_dir (GSTESlideshow *show,
+                           const char    *location)
+{
+	GdkPixbuf *pixbuf, *transformed_pixbuf;
+	char      *filename;
+	int        i;
+	GSList    *l;
+
+	/* rebuild the cache */
+	if (show->priv->filename_list == NULL)
+	{
+		show->priv->filename_list = build_filename_list_local_dir (location);
+	}
+
+	if (show->priv->filename_list == NULL)
+	{
+		return NULL;
+	}
+	else
+	{
+		if (show->priv->sort_images)
+		{
+			show->priv->filename_list = g_slist_sort (show->priv->filename_list, gste_strcmp_compare_func);
+		}
+	}
+
+	/* get a random filename if needed */
+	if (! show->priv->sort_images)
+	{
+		i = g_random_int_range (0, g_slist_length (show->priv->filename_list));
+		l = g_slist_nth (show->priv->filename_list, i);
+	}
+	else
+	{
+		l = show->priv->filename_list;
+	}
+	filename = l->data;
+
+	pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
+
+	if (pixbuf != NULL)
+	{
+		transformed_pixbuf = gdk_pixbuf_apply_embedded_orientation (pixbuf);
+		g_object_unref (pixbuf);
+	}
+	else
+	{
+		transformed_pixbuf = NULL;
+	}
+
+	g_free (filename);
+	show->priv->filename_list = g_slist_delete_link (show->priv->filename_list, l);
+
+	return transformed_pixbuf;
+}
+
+static GdkPixbuf *
+get_pixbuf_from_location (GSTESlideshow *show,
+                          const char    *location)
+{
+	GdkPixbuf *pixbuf = NULL;
+	gboolean   is_dir;
+
+	if (location == NULL)
+	{
+		return NULL;
+	}
+
+	is_dir = g_file_test (location, G_FILE_TEST_IS_DIR);
+
+	if (is_dir)
+	{
+		pixbuf = get_pixbuf_from_local_dir (show, location);
+	}
+
+	return pixbuf;
+}
+
+static GdkPixbuf *
+get_pixbuf (GSTESlideshow *show,
+            const char    *location,
+            int            width,
+            int            height)
+{
+	GdkPixbuf *pixbuf;
+	GdkPixbuf *scaled = NULL;
+
+	if (location == NULL)
+	{
+		return NULL;
+	}
+
+	pixbuf = get_pixbuf_from_location (show, location);
+
+	if (pixbuf != NULL)
+	{
+		scaled = scale_pixbuf (pixbuf, width, height, show->priv->no_stretch_hint);
+		g_object_unref (pixbuf);
+	}
+
+	return scaled;
+}
+
+static void
+op_load_image (GSTESlideshow *show,
+               const char    *location)
+{
+	OpResult *op_result;
+	int       window_width;
+	int       window_height;
+
+	window_width = show->priv->window_width;
+	window_height = show->priv->window_height;
+
+	op_result = g_new0 (OpResult, 1);
+
+	op_result->pixbuf = get_pixbuf (show,
+	                                location,
+	                                window_width,
+	                                window_height);
+
+	GDK_THREADS_ENTER ();
+	g_async_queue_lock (show->priv->results_q);
+	g_async_queue_push_unlocked (show->priv->results_q, op_result);
+
+	if (show->priv->results_pull_id == 0)
+	{
+		show->priv->results_pull_id = g_idle_add_full (G_PRIORITY_HIGH_IDLE,
+		                              (GSourceFunc)results_pull_func,
+		                              show, NULL);
+	}
+
+	g_async_queue_unlock (show->priv->results_q);
+	GDK_THREADS_LEAVE ();
+}
+
+static gpointer
+load_threadfunc (GAsyncQueue *op_q)
+{
+	Op *op;
+
+	op = g_async_queue_pop (op_q);
+	while (op)
+	{
+		op_load_image (op->slideshow,
+		               op->location);
+
+		if (op->slideshow != NULL)
+		{
+			g_object_unref (op->slideshow);
+		}
+		g_free (op->location);
+		g_free (op);
+
+		op = g_async_queue_pop (op_q);
+	}
+
+	return NULL;
+}
+
+void
+gste_slideshow_set_images_location (GSTESlideshow *show,
+                                    const char    *location)
+{
+	g_return_if_fail (GSTE_IS_SLIDESHOW (show));
+
+	g_free (show->priv->images_location);
+	show->priv->images_location = g_strdup (location);
+}
+
+
+void
+gste_slideshow_set_sort_images (GSTESlideshow *show,
+                                gboolean       sort_images)
+{
+	g_return_if_fail (GSTE_IS_SLIDESHOW (show));
+
+	show->priv->sort_images = sort_images;
+}
+
+void
+gste_slideshow_set_no_stretch_hint (GSTESlideshow *show,
+                                    gboolean       no_stretch_hint)
+{
+	g_return_if_fail (GSTE_IS_SLIDESHOW (show));
+
+	show->priv->no_stretch_hint = no_stretch_hint;
+}
+
+void
+gste_slideshow_set_background_color (GSTESlideshow *show,
+                                     const char    *background_color)
+{
+	g_return_if_fail (GSTE_IS_SLIDESHOW (show));
+
+	if (show->priv->background_color != NULL)
+	{
+		g_slice_free (PangoColor, show->priv->background_color);
+		show->priv->background_color = NULL;
+	}
+
+	if (background_color != NULL)
+	{
+		show->priv->background_color = g_slice_new (PangoColor);
+
+		if (pango_color_parse (show->priv->background_color, background_color) == FALSE)
+		{
+			g_slice_free (PangoColor, show->priv->background_color);
+			show->priv->background_color = NULL;
+		}
+	}
+}
+
+static void
+gste_slideshow_set_property (GObject            *object,
+                             guint               prop_id,
+                             const GValue       *value,
+                             GParamSpec         *pspec)
+{
+	GSTESlideshow *self;
+
+	self = GSTE_SLIDESHOW (object);
+
+	switch (prop_id)
+	{
+	case PROP_IMAGES_LOCATION:
+		gste_slideshow_set_images_location (self, g_value_get_string (value));
+		break;
+	case PROP_SORT_IMAGES:
+		gste_slideshow_set_sort_images (self, g_value_get_boolean (value));
+		break;
+	case PROP_SOLID_BACKGROUND:
+		gste_slideshow_set_background_color (self, g_value_get_string (value));
+		break;
+	case PROP_NO_STRETCH_HINT:
+		gste_slideshow_set_no_stretch_hint (self, g_value_get_boolean (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gste_slideshow_get_property (GObject            *object,
+                             guint               prop_id,
+                             GValue             *value,
+                             GParamSpec         *pspec)
+{
+	GSTESlideshow *self;
+
+	self = GSTE_SLIDESHOW (object);
+
+	switch (prop_id)
+	{
+	case PROP_IMAGES_LOCATION:
+		g_value_set_string (value, self->priv->images_location);
+		break;
+	case PROP_SORT_IMAGES:
+		g_value_set_boolean (value, self->priv->sort_images);
+		break;
+	case PROP_SOLID_BACKGROUND:
+	{
+		char *color = NULL;
+		color = pango_color_to_string (self->priv->background_color);
+		g_value_set_string (value, color);
+		g_free (color);
+		break;
+	}
+	case PROP_NO_STRETCH_HINT:
+		g_value_set_boolean (value, self->priv->no_stretch_hint);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gste_slideshow_real_show (GtkWidget *widget)
+{
+	GSTESlideshow *show = GSTE_SLIDESHOW (widget);
+	int            delay;
+
+	if (GTK_WIDGET_CLASS (parent_class)->show)
+	{
+		GTK_WIDGET_CLASS (parent_class)->show (widget);
+	}
+
+	start_new_load (show, 10);
+
+	delay = 25;
+	show->priv->timeout_id = g_timeout_add (delay, (GSourceFunc)draw_iter, show);
+
+	if (show->priv->timer != NULL)
+	{
+		g_timer_destroy (show->priv->timer);
+	}
+	show->priv->timer = g_timer_new ();
+}
+
+static gboolean
+gste_slideshow_real_expose (GtkWidget      *widget,
+                            GdkEventExpose *event)
+{
+	GSTESlideshow *show = GSTE_SLIDESHOW (widget);
+	gboolean       handled = FALSE;
+
+	update_display (show);
+
+	if (GTK_WIDGET_CLASS (parent_class)->expose_event)
+	{
+		handled = GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+	}
+
+	return handled;
+}
+
+static gboolean
+gste_slideshow_real_configure (GtkWidget         *widget,
+                               GdkEventConfigure *event)
+{
+	GSTESlideshow *show = GSTE_SLIDESHOW (widget);
+	gboolean       handled = FALSE;
+	cairo_t       *cr;
+
+	/* resize */
+	gs_theme_engine_get_window_size (GS_THEME_ENGINE (show),
+	                                 &show->priv->window_width,
+	                                 &show->priv->window_height);
+
+	gs_theme_engine_profile_msg ("Resize to x:%d y:%d",
+	                             show->priv->window_width,
+	                             show->priv->window_height);
+
+	if (show->priv->surf != NULL)
+	{
+		cairo_surface_destroy (show->priv->surf);
+	}
+
+	cr = gdk_cairo_create (widget->window);
+	show->priv->surf = cairo_surface_create_similar (cairo_get_target (cr),
+	                   CAIRO_CONTENT_COLOR,
+	                   show->priv->window_width,
+	                   show->priv->window_height);
+	cairo_destroy (cr);
+
+	/* schedule a redraw */
+	gtk_widget_queue_draw (widget);
+
+	if (GTK_WIDGET_CLASS (parent_class)->configure_event)
+	{
+		handled = GTK_WIDGET_CLASS (parent_class)->configure_event (widget, event);
+	}
+
+	return handled;
+}
+
+static void
+gste_slideshow_class_init (GSTESlideshowClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+	parent_class = g_type_class_peek_parent (klass);
+
+	object_class->finalize = gste_slideshow_finalize;
+	object_class->get_property = gste_slideshow_get_property;
+	object_class->set_property = gste_slideshow_set_property;
+
+	widget_class->show = gste_slideshow_real_show;
+	widget_class->expose_event = gste_slideshow_real_expose;
+	widget_class->configure_event = gste_slideshow_real_configure;
+
+	g_type_class_add_private (klass, sizeof (GSTESlideshowPrivate));
+
+	g_object_class_install_property (object_class,
+	                                 PROP_IMAGES_LOCATION,
+	                                 g_param_spec_string ("images-location",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_SORT_IMAGES,
+	                                 g_param_spec_boolean ("sort-images",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_SOLID_BACKGROUND,
+	                                 g_param_spec_string ("background-color",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_NO_STRETCH_HINT,
+	                                 g_param_spec_boolean ("no-stretch",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+}
+
+static void
+set_colormap (GtkWidget *widget)
+{
+	GdkScreen   *screen;
+	GdkColormap *colormap;
+
+	screen = gtk_widget_get_screen (widget);
+	colormap = gdk_screen_get_rgba_colormap (screen);
+	if (colormap == NULL)
+	{
+		colormap = gdk_screen_get_rgb_colormap (screen);
+	}
+
+	gtk_widget_set_colormap (widget, colormap);
+}
+
+static void
+gste_slideshow_init (GSTESlideshow *show)
+{
+	GError *error;
+
+	show->priv = GSTE_SLIDESHOW_GET_PRIVATE (show);
+
+	show->priv->images_location = g_strdup (DEFAULT_IMAGES_LOCATION);
+
+	show->priv->op_q = g_async_queue_new ();
+	show->priv->results_q = g_async_queue_new ();
+
+	error = NULL;
+	show->priv->load_thread = g_thread_create ((GThreadFunc)load_threadfunc, show->priv->op_q, FALSE, &error);
+	if (show->priv->load_thread == NULL)
+	{
+		g_error ("Could not create a thread to load images: %s",
+		         error->message);
+		g_error_free (error);
+		exit (-1);
+	}
+
+	set_colormap (GTK_WIDGET (show));
+}
+
+static void
+gste_slideshow_finalize (GObject *object)
+{
+	GSTESlideshow *show;
+	gpointer       result;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GSTE_IS_SLIDESHOW (object));
+
+	show = GSTE_SLIDESHOW (object);
+
+	g_return_if_fail (show->priv != NULL);
+
+	if (show->priv->surf)
+	{
+		cairo_surface_destroy (show->priv->surf);
+	}
+
+	if (show->priv->timeout_id > 0)
+	{
+		g_source_remove (show->priv->timeout_id);
+		show->priv->timeout_id = 0;
+	}
+
+	if (show->priv->results_pull_id > 0)
+	{
+		g_source_remove (show->priv->results_pull_id);
+	}
+
+	if (show->priv->results_q != NULL)
+	{
+		result = g_async_queue_try_pop (show->priv->results_q);
+
+		while (result)
+		{
+			result = g_async_queue_try_pop (show->priv->results_q);
+		}
+		g_async_queue_unref (show->priv->results_q);
+	}
+
+	g_free (show->priv->images_location);
+	show->priv->images_location = NULL;
+
+	if (show->priv->background_color)
+	{
+		g_slice_free (PangoColor, show->priv->background_color);
+		show->priv->background_color = NULL;
+	}
+
+	if (show->priv->timer != NULL)
+	{
+		g_timer_destroy (show->priv->timer);
+	}
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
diff --git a/savers/gste-slideshow.c.orig b/savers/gste-slideshow.c.orig
new file mode 100644
index 0000000..8ea83bd
--- /dev/null
+++ b/savers/gste-slideshow.c.orig
@@ -0,0 +1,1001 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-engine.h"
+#include "gste-slideshow.h"
+
+static void     gste_slideshow_class_init (GSTESlideshowClass *klass);
+static void     gste_slideshow_init       (GSTESlideshow      *engine);
+static void     gste_slideshow_finalize   (GObject            *object);
+
+struct GSTESlideshowPrivate
+{
+        /* Image at full opacity */
+        cairo_pattern_t *pat1;
+        /* Image at partial opacity */
+        cairo_pattern_t *pat2;
+        /* Alpha of pat2 */
+        gdouble          alpha2;
+        /* edges of pat2 */
+        int              pat2top;
+        int              pat2bottom;
+        int              pat2left;
+        int              pat2right;
+
+        /* backbuffer that we do all the alpha drawing into (no round
+         * trips to the X server when the server doesn't support drawing
+         * pixmaps with alpha?) */
+        cairo_surface_t *surf;
+
+        gint64           fade_ticks;
+
+        GThread         *load_thread;
+        GAsyncQueue     *op_q;
+        GAsyncQueue     *results_q;
+
+        guint           results_pull_id;
+        guint           update_image_id;
+
+        GSList         *filename_list;
+        char           *images_location;
+        gboolean        sort_images;
+        int             window_width;
+        int             window_height;
+        PangoColor     *background_color;
+        gboolean        no_stretch_hint;
+
+        guint           timeout_id;
+
+        GTimer         *timer;
+        gboolean        fade_disabled;
+};
+
+enum {
+        PROP_0,
+        PROP_IMAGES_LOCATION,
+        PROP_SORT_IMAGES,
+        PROP_SOLID_BACKGROUND,
+        PROP_NO_STRETCH_HINT
+};
+
+#define GSTE_SLIDESHOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSTE_TYPE_SLIDESHOW, GSTESlideshowPrivate))
+
+static GObjectClass *parent_class = NULL;
+
+G_DEFINE_TYPE (GSTESlideshow, gste_slideshow, GS_TYPE_THEME_ENGINE)
+
+#define N_FADE_TICKS 10
+#define MINIMUM_FPS 3.0
+#define DEFAULT_IMAGES_LOCATION DATADIR "/pixmaps/backgrounds"
+#define IMAGE_LOAD_TIMEOUT 10000
+
+typedef struct _Op
+{
+        char          *location;
+        GSTESlideshow *slideshow;
+} Op;
+
+typedef struct _OpResult
+{
+        GdkPixbuf *pixbuf;
+} OpResult;
+
+static gboolean
+push_load_image_func (GSTESlideshow *show)
+{
+        Op *op;
+
+        gs_theme_engine_profile_msg ("Starting a new image load");
+
+        op = g_new (Op, 1);
+
+        op->location = g_strdup (show->priv->images_location);
+        op->slideshow = g_object_ref (show);
+
+        g_async_queue_push (show->priv->op_q, op);
+
+        show->priv->update_image_id = 0;
+
+        return FALSE;
+}
+
+static void
+start_new_load (GSTESlideshow *show,
+                guint          timeout)
+{
+        gs_theme_engine_profile_msg ("Scheduling a new image load");
+
+        /* queue a new load */
+        if (show->priv->update_image_id <= 0) {
+                show->priv->update_image_id = g_timeout_add_full (G_PRIORITY_LOW, timeout,
+                                                                  (GSourceFunc)push_load_image_func,
+                                                                  show, NULL);
+        }
+}
+
+static void
+start_fade (GSTESlideshow *show,
+            GdkPixbuf     *pixbuf)
+{
+        int      pw;
+        int      ph;
+        int      x;
+        int      y;
+        cairo_t *cr;
+        int      window_width;
+        int      window_height;
+
+        gs_theme_engine_profile_start ("start");
+
+        window_width = show->priv->window_width;
+        window_height = show->priv->window_height;
+
+        if (show->priv->pat2 != NULL) {
+                cairo_pattern_destroy (show->priv->pat2);
+        }
+
+        pw = gdk_pixbuf_get_width (pixbuf);
+        ph = gdk_pixbuf_get_height (pixbuf);
+        x = (window_width - pw) / 2;
+        y = (window_height - ph) / 2;
+
+        if (gdk_pixbuf_get_has_alpha (pixbuf) && show->priv->background_color) {
+                GdkPixbuf *colored;
+                guint32    color;
+                GdkPixmap *pixmap;
+
+                color = (show->priv->background_color->red << 16)
+                        + (show->priv->background_color->green / 256 << 8)
+                        + show->priv->background_color->blue / 256;
+                colored = gdk_pixbuf_composite_color_simple (pixbuf,
+                                                             pw, ph,
+                                                             GDK_INTERP_BILINEAR,
+                                                             255,
+                                                             256,
+                                                             color,
+                                                             color);
+                pixmap = gdk_pixmap_new (NULL, ph, pw,  gdk_visual_get_system ()->depth);
+
+                gdk_draw_pixbuf (pixmap, NULL, colored, 0, 0, 0, 0, -1, -1, GDK_RGB_DITHER_MAX, 0, 0);
+                gdk_pixbuf_get_from_drawable (pixbuf, pixmap, NULL, 0, 0, 0, 0, -1, -1);
+
+                g_object_unref (pixmap);
+
+                g_object_unref(colored);
+        }
+
+        cr = cairo_create (show->priv->surf);
+
+        /* XXX Handle out of memory? */
+        gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y);
+        show->priv->pat2 = cairo_pattern_reference (cairo_get_source (cr));
+        show->priv->pat2top = y;
+        show->priv->pat2bottom = y + ph;
+        show->priv->pat2left = x;
+        show->priv->pat2right = x + pw;
+
+        cairo_destroy (cr);
+
+        show->priv->fade_ticks = 0;
+        g_timer_start (show->priv->timer);
+
+        gs_theme_engine_profile_end ("end");
+}
+
+static void
+finish_fade (GSTESlideshow *show)
+{
+        gs_theme_engine_profile_start ("start");
+
+        if (show->priv->pat1 != NULL) {
+                cairo_pattern_destroy (show->priv->pat1);
+        }
+
+        show->priv->pat1 = show->priv->pat2;
+        show->priv->pat2 = NULL;
+
+        start_new_load (show, IMAGE_LOAD_TIMEOUT);
+
+        gs_theme_engine_profile_end ("end");
+}
+
+static void
+update_display (GSTESlideshow *show)
+{
+        int      window_width;
+        int      window_height;
+        cairo_t *cr;
+
+        gs_theme_engine_profile_start ("start");
+
+        cr = cairo_create (show->priv->surf);
+
+        gs_theme_engine_get_window_size (GS_THEME_ENGINE (show),
+                                         &window_width,
+                                         &window_height);
+
+        if (show->priv->pat2 != NULL) {
+                /* fade out areas not covered by the new image */
+                /* top */
+                cairo_rectangle (cr, 0, 0, window_width, show->priv->pat2top);
+                if (show->priv->background_color) {
+                        cairo_set_source_rgba (cr, show->priv->background_color->red / 65535.0,
+                               show->priv->background_color->green / 65535.0,
+                               show->priv->background_color->blue / 65535.0, show->priv->alpha2);
+                } else {
+                        cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, show->priv->alpha2);
+                }
+                cairo_fill (cr);
+                /* left (excluding what's covered by top and bottom) */
+                cairo_rectangle (cr, 0, show->priv->pat2top,
+                                 show->priv->pat2left,
+                                 show->priv->pat2bottom - show->priv->pat2top);
+                if (show->priv->background_color) {
+                        cairo_set_source_rgba (cr, show->priv->background_color->red / 65535.0,
+                               show->priv->background_color->green / 65535.0,
+                               show->priv->background_color->blue / 65535.0, show->priv->alpha2);
+                } else {
+                        cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, show->priv->alpha2);
+                }
+                cairo_fill (cr);
+                /* bottom */
+                cairo_rectangle (cr, 0, show->priv->pat2bottom, window_width,
+                                 window_height - show->priv->pat2bottom);
+                if (show->priv->background_color) {
+                        cairo_set_source_rgba (cr, show->priv->background_color->red / 65535.0,
+                               show->priv->background_color->green / 65535.0,
+                               show->priv->background_color->blue / 65535.0, show->priv->alpha2);
+                } else {
+                        cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, show->priv->alpha2);
+                }
+                cairo_fill (cr);
+                /* right (excluding what's covered by top and bottom) */
+                cairo_rectangle (cr, show->priv->pat2right,
+                                 show->priv->pat2top,
+                                 window_width - show->priv->pat2right,
+                                 show->priv->pat2bottom - show->priv->pat2top);
+                if (show->priv->background_color)  {
+                        cairo_set_source_rgba (cr, show->priv->background_color->red / 65535.0,
+                               show->priv->background_color->green / 65535.0,
+                               show->priv->background_color->blue / 65535.0, show->priv->alpha2);
+                } else {
+                        cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, show->priv->alpha2);
+                }
+                cairo_fill (cr);
+
+                gs_theme_engine_profile_start ("paint pattern to surface");
+                cairo_set_source (cr, show->priv->pat2);
+
+                cairo_paint_with_alpha (cr, show->priv->alpha2);
+                gs_theme_engine_profile_end ("paint pattern to surface");
+        } else {
+                if (show->priv->pat1 != NULL) {
+                        cairo_set_source (cr, show->priv->pat1);
+                        cairo_paint (cr);
+                }
+        }
+
+        cairo_destroy (cr);
+
+        /* paint the image buffer into the window */
+        cr = gdk_cairo_create (GTK_WIDGET (show)->window);
+
+        cairo_set_source_surface (cr, show->priv->surf, 0, 0);
+
+        gs_theme_engine_profile_start ("paint surface to window");
+        cairo_paint (cr);
+        gs_theme_engine_profile_end ("paint surface to window");
+
+        cairo_destroy (cr);
+
+        gs_theme_engine_profile_end ("end");
+}
+
+static gboolean
+draw_iter (GSTESlideshow *show)
+{
+        double old_opacity;
+        double new_opacity;
+
+        if (show->priv->pat2 != NULL) {
+                gdouble fps;
+                gdouble elapsed;
+
+                if (show->priv->fade_disabled) {
+                        show->priv->alpha2 = 1.0;
+                        update_display (show);
+                        finish_fade (show);
+                        return TRUE;
+                }
+
+                /* we are in a fade */
+                show->priv->fade_ticks++;
+
+                /*
+                 * We have currently drawn pat2 with old_opacity, and we
+                 * want to set alpha2 so that drawing pat2 at alpha2
+                 * yields it drawn with new_opacity
+                 *
+                 * Solving
+                 *   new_opacity = 1 - (1 - alpha2) * (1 - old_opacity)
+                 * yields
+                 *   alpha2 = 1 - (1 - new_opacity) / (1 - old_opacity)
+                 *
+                 * XXX This assumes that cairo doesn't correct alpha for
+                 * the color profile.  However, any error is guaranteed
+                 * to be cleaned up by the last iteration, where alpha2
+                 * becomes 1 because new_opacity is 1.
+                 */
+                old_opacity = (double) (show->priv->fade_ticks - 1) /
+                              (double) N_FADE_TICKS;
+                new_opacity = (double) show->priv->fade_ticks /
+                              (double) N_FADE_TICKS;
+                show->priv->alpha2 = 1.0 - (1.0 - new_opacity) /
+                                           (1.0 - old_opacity);
+
+                update_display (show);
+
+                elapsed = g_timer_elapsed (show->priv->timer, NULL);
+                fps = (gdouble)show->priv->fade_ticks / elapsed;
+                if (fps < MINIMUM_FPS) {
+                        g_warning ("Getting less than %.2f frames per second, disabling fade", MINIMUM_FPS);
+                        show->priv->fade_ticks = N_FADE_TICKS - 1;
+                        show->priv->fade_disabled = TRUE;
+                }
+
+                if (show->priv->fade_ticks >= N_FADE_TICKS) {
+                        finish_fade (show);
+                }
+        }
+
+        return TRUE;
+}
+
+static void
+process_new_pixbuf (GSTESlideshow *show,
+                    GdkPixbuf     *pixbuf)
+{
+        gs_theme_engine_profile_msg ("Processing a new image");
+
+        if (pixbuf != NULL) {
+                start_fade (show, pixbuf);
+        } else {
+                start_new_load (show, 10);
+        }
+}
+
+static void
+op_result_free (OpResult *result)
+{
+        if (result == NULL) {
+                return;
+        }
+
+        if (result->pixbuf != NULL) {
+                g_object_unref (result->pixbuf);
+        }
+
+        g_free (result);
+}
+
+static gboolean
+results_pull_func (GSTESlideshow *show)
+{
+        OpResult *result;
+
+        GDK_THREADS_ENTER ();
+
+        g_async_queue_lock (show->priv->results_q);
+
+        result = g_async_queue_try_pop_unlocked (show->priv->results_q);
+        g_assert (result);
+
+        while (result != NULL) {
+                process_new_pixbuf (show, result->pixbuf);
+                op_result_free (result);
+
+                result = g_async_queue_try_pop_unlocked (show->priv->results_q);
+        }
+
+        show->priv->results_pull_id = 0;
+
+        g_async_queue_unlock (show->priv->results_q);
+
+        GDK_THREADS_LEAVE ();
+
+        return FALSE;
+}
+
+static GdkPixbuf *
+scale_pixbuf (GdkPixbuf *pixbuf,
+              int        max_width,
+              int        max_height,
+              gboolean   no_stretch_hint)
+{
+        int        pw;
+        int        ph;
+        float      scale_factor_x = 1.0;
+        float      scale_factor_y = 1.0;
+        float      scale_factor = 1.0;
+
+        pw = gdk_pixbuf_get_width (pixbuf);
+        ph = gdk_pixbuf_get_height (pixbuf);
+
+        /* If the image is less than 256 wide or high then it
+           is probably a thumbnail and we should ignore it */
+        if (pw < 256 || ph < 256) {
+                return NULL;
+        }
+
+        /* Determine which dimension requires the smallest scale. */
+        scale_factor_x = (float) max_width / (float) pw;
+        scale_factor_y = (float) max_height / (float) ph;
+
+        if (scale_factor_x > scale_factor_y) {
+                scale_factor = scale_factor_y;
+        } else {
+                scale_factor = scale_factor_x;
+        }
+
+        /* always scale down, allow to disable scaling up */
+        if (scale_factor < 1.0 || !no_stretch_hint) {
+                int scale_x;
+                int scale_y;
+
+                scale_x = (int) (pw * scale_factor);
+                scale_y = (int) (ph * scale_factor);
+                return gdk_pixbuf_scale_simple (pixbuf,
+                                                scale_x,
+                                                scale_y,
+                                                GDK_INTERP_BILINEAR);
+        } else {
+                return g_object_ref (pixbuf);
+        }
+}
+
+static void
+add_files_to_list (GSList    **list,
+                   const char *base)
+{
+        GDir       *d;
+        const char *d_name;
+
+        d = g_dir_open (base, 0, NULL);
+        if (d == NULL) {
+                g_warning ("Could not open directory: %s", base);
+                return;
+        }
+
+        while ((d_name = g_dir_read_name (d)) != NULL) {
+                char *path;
+
+                /* skip hidden files */
+                if (d_name[0] == '.') {
+                        continue;
+                }
+
+                path = g_build_filename (base, d_name, NULL);
+                if (g_file_test (path, G_FILE_TEST_IS_DIR)) {
+                        add_files_to_list (list, path);
+                        g_free (path);
+                } else {
+                        *list = g_slist_prepend (*list, path);
+                }
+        }
+
+        g_dir_close (d);
+}
+
+static GSList *
+build_filename_list_local_dir (const char *base)
+{
+        GSList *list = NULL;
+
+        add_files_to_list (&list, base);
+
+        return list;
+}
+
+static int
+gste_strcmp_compare_func (gconstpointer string_a, gconstpointer string_b)
+{
+        return strcmp (string_a == NULL ? "" : string_a,
+                       string_b == NULL ? "" : string_b);
+}
+
+
+static GdkPixbuf *
+get_pixbuf_from_local_dir (GSTESlideshow *show,
+                           const char    *location)
+{
+        GdkPixbuf *pixbuf, *transformed_pixbuf;
+        char      *filename;
+        int        i;
+        GSList    *l;
+
+        /* rebuild the cache */
+        if (show->priv->filename_list == NULL) {
+                show->priv->filename_list = build_filename_list_local_dir (location);
+        }
+
+        if (show->priv->filename_list == NULL) {
+                return NULL;
+        } else {
+                if (show->priv->sort_images) {
+                        show->priv->filename_list = g_slist_sort (show->priv->filename_list, gste_strcmp_compare_func);
+                }
+        }
+
+        /* get a random filename if needed */
+        if (! show->priv->sort_images) {
+                i = g_random_int_range (0, g_slist_length (show->priv->filename_list));
+                l = g_slist_nth (show->priv->filename_list, i);
+        } else {
+                l = show->priv->filename_list;
+        }
+        filename = l->data;
+
+        pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
+
+        if (pixbuf != NULL) {
+                transformed_pixbuf = gdk_pixbuf_apply_embedded_orientation (pixbuf);
+                g_object_unref (pixbuf);
+        } else {
+                transformed_pixbuf = NULL;
+        }
+
+        g_free (filename);
+        show->priv->filename_list = g_slist_delete_link (show->priv->filename_list, l);
+
+        return transformed_pixbuf;
+}
+
+static GdkPixbuf *
+get_pixbuf_from_location (GSTESlideshow *show,
+                          const char    *location)
+{
+        GdkPixbuf *pixbuf = NULL;
+        gboolean   is_dir;
+
+        if (location == NULL) {
+                return NULL;
+        }
+
+        is_dir = g_file_test (location, G_FILE_TEST_IS_DIR);
+
+        if (is_dir) {
+                pixbuf = get_pixbuf_from_local_dir (show, location);
+        }
+
+        return pixbuf;
+}
+
+static GdkPixbuf *
+get_pixbuf (GSTESlideshow *show,
+            const char    *location,
+            int            width,
+            int            height)
+{
+        GdkPixbuf *pixbuf;
+        GdkPixbuf *scaled = NULL;
+
+        if (location == NULL) {
+                return NULL;
+        }
+
+        pixbuf = get_pixbuf_from_location (show, location);
+
+        if (pixbuf != NULL) {
+                scaled = scale_pixbuf (pixbuf, width, height, show->priv->no_stretch_hint);
+                g_object_unref (pixbuf);
+        }
+
+        return scaled;
+}
+
+static void
+op_load_image (GSTESlideshow *show,
+               const char    *location)
+{
+        OpResult *op_result;
+        int       window_width;
+        int       window_height;
+
+        window_width = show->priv->window_width;
+        window_height = show->priv->window_height;
+
+        op_result = g_new0 (OpResult, 1);
+
+        op_result->pixbuf = get_pixbuf (show,
+                                        location,
+                                        window_width,
+                                        window_height);
+
+        GDK_THREADS_ENTER ();
+        g_async_queue_lock (show->priv->results_q);
+        g_async_queue_push_unlocked (show->priv->results_q, op_result);
+
+        if (show->priv->results_pull_id == 0) {
+                show->priv->results_pull_id = g_idle_add_full (G_PRIORITY_HIGH_IDLE,
+                                                               (GSourceFunc)results_pull_func,
+                                                               show, NULL);
+        }
+
+        g_async_queue_unlock (show->priv->results_q);
+        GDK_THREADS_LEAVE ();
+}
+
+static gpointer
+load_threadfunc (GAsyncQueue *op_q)
+{
+        Op *op;
+
+        op = g_async_queue_pop (op_q);
+        while (op) {
+                op_load_image (op->slideshow,
+                               op->location);
+
+                if (op->slideshow != NULL) {
+                        g_object_unref (op->slideshow);
+                }
+                g_free (op->location);
+                g_free (op);
+
+                op = g_async_queue_pop (op_q);
+        }
+
+        return NULL;
+}
+
+void
+gste_slideshow_set_images_location (GSTESlideshow *show,
+                                    const char    *location)
+{
+        g_return_if_fail (GSTE_IS_SLIDESHOW (show));
+
+        g_free (show->priv->images_location);
+        show->priv->images_location = g_strdup (location);
+}
+
+
+void
+gste_slideshow_set_sort_images (GSTESlideshow *show,
+                                gboolean       sort_images)
+{
+        g_return_if_fail (GSTE_IS_SLIDESHOW (show));
+
+        show->priv->sort_images = sort_images;
+}
+
+void
+gste_slideshow_set_no_stretch_hint (GSTESlideshow *show,
+                                     gboolean       no_stretch_hint)
+{
+        g_return_if_fail (GSTE_IS_SLIDESHOW (show));
+
+        show->priv->no_stretch_hint = no_stretch_hint;
+}
+
+void
+gste_slideshow_set_background_color (GSTESlideshow *show,
+                                     const char    *background_color)
+{
+        g_return_if_fail (GSTE_IS_SLIDESHOW (show));
+
+        if (show->priv->background_color != NULL) {
+                g_slice_free (PangoColor, show->priv->background_color);
+                show->priv->background_color = NULL;
+        }
+
+        if (background_color != NULL) {
+               show->priv->background_color = g_slice_new (PangoColor);
+
+               if (pango_color_parse (show->priv->background_color, background_color) == FALSE) {
+                       g_slice_free (PangoColor, show->priv->background_color);
+                       show->priv->background_color = NULL;
+               }
+        }
+}
+
+static void
+gste_slideshow_set_property (GObject            *object,
+                             guint               prop_id,
+                             const GValue       *value,
+                             GParamSpec         *pspec)
+{
+        GSTESlideshow *self;
+
+        self = GSTE_SLIDESHOW (object);
+
+        switch (prop_id) {
+        case PROP_IMAGES_LOCATION:
+                gste_slideshow_set_images_location (self, g_value_get_string (value));
+                break;
+        case PROP_SORT_IMAGES:
+                gste_slideshow_set_sort_images (self, g_value_get_boolean (value));
+                break;
+        case PROP_SOLID_BACKGROUND:
+                gste_slideshow_set_background_color (self, g_value_get_string (value));
+                break;
+        case PROP_NO_STRETCH_HINT:
+                gste_slideshow_set_no_stretch_hint (self, g_value_get_boolean (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gste_slideshow_get_property (GObject            *object,
+                             guint               prop_id,
+                             GValue             *value,
+                             GParamSpec         *pspec)
+{
+        GSTESlideshow *self;
+
+        self = GSTE_SLIDESHOW (object);
+
+        switch (prop_id) {
+        case PROP_IMAGES_LOCATION:
+                g_value_set_string (value, self->priv->images_location);
+                break;
+        case PROP_SORT_IMAGES:
+                g_value_set_boolean (value, self->priv->sort_images);
+                break;
+        case PROP_SOLID_BACKGROUND:
+                {
+                        char *color = NULL;
+                        color = pango_color_to_string (self->priv->background_color);
+                        g_value_set_string (value, color);
+                        g_free (color);
+                        break;
+                }
+        case PROP_NO_STRETCH_HINT:
+                g_value_set_boolean (value, self->priv->no_stretch_hint);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gste_slideshow_real_show (GtkWidget *widget)
+{
+        GSTESlideshow *show = GSTE_SLIDESHOW (widget);
+        int            delay;
+
+        if (GTK_WIDGET_CLASS (parent_class)->show) {
+                GTK_WIDGET_CLASS (parent_class)->show (widget);
+        }
+
+        start_new_load (show, 10);
+
+        delay = 25;
+        show->priv->timeout_id = g_timeout_add (delay, (GSourceFunc)draw_iter, show);
+
+        if (show->priv->timer != NULL) {
+                g_timer_destroy (show->priv->timer);
+        }
+        show->priv->timer = g_timer_new ();
+}
+
+static gboolean
+gste_slideshow_real_expose (GtkWidget      *widget,
+                            GdkEventExpose *event)
+{
+        GSTESlideshow *show = GSTE_SLIDESHOW (widget);
+        gboolean       handled = FALSE;
+
+        update_display (show);
+
+        if (GTK_WIDGET_CLASS (parent_class)->expose_event) {
+                handled = GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+        }
+
+        return handled;
+}
+
+static gboolean
+gste_slideshow_real_configure (GtkWidget         *widget,
+                               GdkEventConfigure *event)
+{
+        GSTESlideshow *show = GSTE_SLIDESHOW (widget);
+        gboolean       handled = FALSE;
+        cairo_t       *cr;
+
+        /* resize */
+        gs_theme_engine_get_window_size (GS_THEME_ENGINE (show),
+                                         &show->priv->window_width,
+                                         &show->priv->window_height);
+
+        gs_theme_engine_profile_msg ("Resize to x:%d y:%d",
+                                     show->priv->window_width,
+                                     show->priv->window_height);
+
+        if (show->priv->surf != NULL) {
+                cairo_surface_destroy (show->priv->surf);
+        }
+
+        cr = gdk_cairo_create (widget->window);
+        show->priv->surf = cairo_surface_create_similar (cairo_get_target (cr),
+                                                         CAIRO_CONTENT_COLOR,
+                                                         show->priv->window_width,
+                                                         show->priv->window_height);
+        cairo_destroy (cr);
+
+        /* schedule a redraw */
+        gtk_widget_queue_draw (widget);
+
+        if (GTK_WIDGET_CLASS (parent_class)->configure_event) {
+                handled = GTK_WIDGET_CLASS (parent_class)->configure_event (widget, event);
+        }
+
+        return handled;
+}
+
+static void
+gste_slideshow_class_init (GSTESlideshowClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+        parent_class = g_type_class_peek_parent (klass);
+
+        object_class->finalize = gste_slideshow_finalize;
+        object_class->get_property = gste_slideshow_get_property;
+        object_class->set_property = gste_slideshow_set_property;
+
+        widget_class->show = gste_slideshow_real_show;
+        widget_class->expose_event = gste_slideshow_real_expose;
+        widget_class->configure_event = gste_slideshow_real_configure;
+
+        g_type_class_add_private (klass, sizeof (GSTESlideshowPrivate));
+
+        g_object_class_install_property (object_class,
+                                         PROP_IMAGES_LOCATION,
+                                         g_param_spec_string ("images-location",
+                                                              NULL,
+                                                              NULL,
+                                                              NULL,
+                                                              G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_SORT_IMAGES,
+                                         g_param_spec_boolean ("sort-images",
+                                                               NULL,
+                                                               NULL,
+                                                               FALSE,
+                                                               G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_SOLID_BACKGROUND,
+                                         g_param_spec_string ("background-color",
+                                                              NULL,
+                                                              NULL,
+                                                              NULL,
+                                                              G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_NO_STRETCH_HINT,
+                                         g_param_spec_boolean ("no-stretch",
+                                                               NULL,
+                                                               NULL,
+                                                               FALSE,
+                                                               G_PARAM_READWRITE));
+}
+
+static void
+set_colormap (GtkWidget *widget)
+{
+        GdkScreen   *screen;
+        GdkColormap *colormap;
+
+        screen = gtk_widget_get_screen (widget);
+        colormap = gdk_screen_get_rgba_colormap (screen);
+        if (colormap == NULL) {
+                colormap = gdk_screen_get_rgb_colormap (screen);
+        }
+
+        gtk_widget_set_colormap (widget, colormap);
+}
+
+static void
+gste_slideshow_init (GSTESlideshow *show)
+{
+        GError *error;
+
+        show->priv = GSTE_SLIDESHOW_GET_PRIVATE (show);
+
+        show->priv->images_location = g_strdup (DEFAULT_IMAGES_LOCATION);
+
+        show->priv->op_q = g_async_queue_new ();
+        show->priv->results_q = g_async_queue_new ();
+
+        error = NULL;
+        show->priv->load_thread = g_thread_create ((GThreadFunc)load_threadfunc, show->priv->op_q, FALSE, &error);
+        if (show->priv->load_thread == NULL) {
+                g_error ("Could not create a thread to load images: %s",
+                         error->message);
+                g_error_free (error);
+                exit (-1);
+        }
+
+        set_colormap (GTK_WIDGET (show));
+}
+
+static void
+gste_slideshow_finalize (GObject *object)
+{
+        GSTESlideshow *show;
+        gpointer       result;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GSTE_IS_SLIDESHOW (object));
+
+        show = GSTE_SLIDESHOW (object);
+
+        g_return_if_fail (show->priv != NULL);
+
+        if (show->priv->surf) {
+                cairo_surface_destroy (show->priv->surf);
+        }
+
+        if (show->priv->timeout_id > 0) {
+                g_source_remove (show->priv->timeout_id);
+                show->priv->timeout_id = 0;
+        }
+
+        if (show->priv->results_pull_id > 0) {
+                g_source_remove (show->priv->results_pull_id);
+        }
+
+        if (show->priv->results_q != NULL) {
+                result = g_async_queue_try_pop (show->priv->results_q);
+
+                while (result) {
+                        result = g_async_queue_try_pop (show->priv->results_q);
+                }
+                g_async_queue_unref (show->priv->results_q);
+        }
+
+        g_free (show->priv->images_location);
+        show->priv->images_location = NULL;
+
+        if (show->priv->background_color) {
+                g_slice_free (PangoColor, show->priv->background_color);
+                show->priv->background_color = NULL;
+        }
+
+        if (show->priv->timer != NULL) {
+                g_timer_destroy (show->priv->timer);
+        }
+
+        G_OBJECT_CLASS (parent_class)->finalize (object);
+}
diff --git a/savers/gste-slideshow.h b/savers/gste-slideshow.h
new file mode 100644
index 0000000..b76794f
--- /dev/null
+++ b/savers/gste-slideshow.h
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GSTE_SLIDESHOW_H
+#define __GSTE_SLIDESHOW_H
+
+#include <glib.h>
+#include <gdk/gdk.h>
+#include "gs-theme-engine.h"
+
+G_BEGIN_DECLS
+
+#define GSTE_TYPE_SLIDESHOW         (gste_slideshow_get_type ())
+#define GSTE_SLIDESHOW(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSTE_TYPE_SLIDESHOW, GSTESlideshow))
+#define GSTE_SLIDESHOW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSTE_TYPE_SLIDESHOW, GSTESlideshowClass))
+#define GSTE_IS_SLIDESHOW(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSTE_TYPE_SLIDESHOW))
+#define GSTE_IS_SLIDESHOW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSTE_TYPE_SLIDESHOW))
+#define GSTE_SLIDESHOW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSTE_TYPE_SLIDESHOW, GSTESlideshowClass))
+
+typedef struct GSTESlideshowPrivate GSTESlideshowPrivate;
+
+typedef struct
+{
+	GSThemeEngine         parent;
+	GSTESlideshowPrivate *priv;
+} GSTESlideshow;
+
+typedef struct
+{
+	GSThemeEngineClass     parent_class;
+} GSTESlideshowClass;
+
+GType           gste_slideshow_get_type         (void);
+GSThemeEngine  *gste_slideshow_new              (void);
+
+void            gste_slideshow_set_images_location  (GSTESlideshow *show,
+        const char    *location);
+
+void            gste_slideshow_set_sort_images      (GSTESlideshow *show,
+        gboolean       sort_image);
+
+void            gste_slideshow_set_background_color (GSTESlideshow *show,
+        const char    *background_color);
+
+void            gste_slideshow_set_no_stretch_hint  (GSTESlideshow *show,
+        gboolean       no_stretch_hint);
+
+G_END_DECLS
+
+#endif /* __GSTE_SLIDESHOW_H */
diff --git a/savers/gste-slideshow.h.orig b/savers/gste-slideshow.h.orig
new file mode 100644
index 0000000..5d7ec7c
--- /dev/null
+++ b/savers/gste-slideshow.h.orig
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GSTE_SLIDESHOW_H
+#define __GSTE_SLIDESHOW_H
+
+#include <glib.h>
+#include <gdk/gdk.h>
+#include "gs-theme-engine.h"
+
+G_BEGIN_DECLS
+
+#define GSTE_TYPE_SLIDESHOW         (gste_slideshow_get_type ())
+#define GSTE_SLIDESHOW(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GSTE_TYPE_SLIDESHOW, GSTESlideshow))
+#define GSTE_SLIDESHOW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GSTE_TYPE_SLIDESHOW, GSTESlideshowClass))
+#define GSTE_IS_SLIDESHOW(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSTE_TYPE_SLIDESHOW))
+#define GSTE_IS_SLIDESHOW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GSTE_TYPE_SLIDESHOW))
+#define GSTE_SLIDESHOW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSTE_TYPE_SLIDESHOW, GSTESlideshowClass))
+
+typedef struct GSTESlideshowPrivate GSTESlideshowPrivate;
+
+typedef struct
+{
+        GSThemeEngine         parent;
+        GSTESlideshowPrivate *priv;
+} GSTESlideshow;
+
+typedef struct
+{
+        GSThemeEngineClass     parent_class;
+} GSTESlideshowClass;
+
+GType           gste_slideshow_get_type         (void);
+GSThemeEngine  *gste_slideshow_new              (void);
+
+void            gste_slideshow_set_images_location  (GSTESlideshow *show,
+                                                     const char    *location);
+
+void            gste_slideshow_set_sort_images      (GSTESlideshow *show,
+                                                     gboolean       sort_image);
+
+void            gste_slideshow_set_background_color (GSTESlideshow *show,
+                                                     const char    *background_color);
+
+void            gste_slideshow_set_no_stretch_hint  (GSTESlideshow *show,
+                                                     gboolean       no_stretch_hint);
+
+G_END_DECLS
+
+#endif /* __GSTE_SLIDESHOW_H */
diff --git a/savers/personal-slideshow.desktop.in.in b/savers/personal-slideshow.desktop.in.in
new file mode 100644
index 0000000..80d38bd
--- /dev/null
+++ b/savers/personal-slideshow.desktop.in.in
@@ -0,0 +1,10 @@
+[Desktop Entry]
+_Name=Pictures folder
+_Comment=Display a slideshow from your Pictures folder
+Exec=@SAVERDIR@/slideshow
+TryExec=@SAVERDIR@/slideshow
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=MATE;Screensaver;
+OnlyShowIn=MATE;
diff --git a/savers/popsquares.c b/savers/popsquares.c
new file mode 100644
index 0000000..22533b6
--- /dev/null
+++ b/savers/popsquares.c
@@ -0,0 +1,73 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include <glib/gi18n.h>
+
+#include "gs-theme-window.h"
+#include "gs-theme-engine.h"
+#include "gste-popsquares.h"
+
+int
+main (int argc, char **argv)
+{
+	GSThemeEngine *engine;
+	GtkWidget     *window;
+	GError        *error;
+
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	error = NULL;
+
+	if (!gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+	{
+		g_printerr (_("%s. See --help for usage information.\n"),
+		            error->message);
+		g_error_free (error);
+		exit (1);
+	}
+
+	window = gs_theme_window_new ();
+	g_signal_connect (G_OBJECT (window), "delete-event",
+	                  G_CALLBACK (gtk_main_quit), NULL);
+
+	g_set_prgname ("popsquares");
+
+	engine = g_object_new (GSTE_TYPE_POPSQUARES, NULL);
+	gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (engine));
+
+	gtk_widget_show (GTK_WIDGET (engine));
+
+	gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
+	gtk_widget_show (window);
+
+	gtk_main ();
+
+	return 0;
+}
diff --git a/savers/popsquares.c.orig b/savers/popsquares.c.orig
new file mode 100644
index 0000000..04ea19d
--- /dev/null
+++ b/savers/popsquares.c.orig
@@ -0,0 +1,72 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <string.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include <glib/gi18n.h>
+
+#include "gs-theme-window.h"
+#include "gs-theme-engine.h"
+#include "gste-popsquares.h"
+
+int
+main (int argc, char **argv)
+{
+        GSThemeEngine *engine;
+        GtkWidget     *window;
+        GError        *error;
+
+        bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+        textdomain (GETTEXT_PACKAGE);
+
+        error = NULL;
+
+        if (!gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error)) {
+		g_printerr (_("%s. See --help for usage information.\n"),
+			    error->message);
+		g_error_free (error);
+	        exit (1);
+	}
+
+        window = gs_theme_window_new ();
+        g_signal_connect (G_OBJECT (window), "delete-event",
+                          G_CALLBACK (gtk_main_quit), NULL);
+
+        g_set_prgname ("popsquares");
+
+        engine = g_object_new (GSTE_TYPE_POPSQUARES, NULL);
+        gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (engine));
+
+        gtk_widget_show (GTK_WIDGET (engine));
+
+        gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
+        gtk_widget_show (window);
+
+        gtk_main ();
+
+        return 0;
+}
diff --git a/savers/popsquares.desktop.in.in b/savers/popsquares.desktop.in.in
new file mode 100644
index 0000000..261d4d1
--- /dev/null
+++ b/savers/popsquares.desktop.in.in
@@ -0,0 +1,10 @@
+[Desktop Entry]
+_Name=Pop art squares
+_Comment=A pop-art-ish grid of pulsing colors.
+Exec=@SAVERDIR@/popsquares
+TryExec=@SAVERDIR@/popsquares
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=MATE;Screensaver;
+OnlyShowIn=MATE;
diff --git a/savers/slideshow.c b/savers/slideshow.c
new file mode 100644
index 0000000..e406d34
--- /dev/null
+++ b/savers/slideshow.c
@@ -0,0 +1,143 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-window.h"
+#include "gs-theme-engine.h"
+#include "gste-slideshow.h"
+
+#include "xdg-user-dir-lookup.h"
+
+int
+main (int argc, char **argv)
+{
+	GSThemeEngine *engine;
+	GtkWidget     *window;
+	GError        *error;
+	gboolean       ret;
+	char          *location = NULL;
+	char          *background_color = NULL;
+	gboolean       sort_images = FALSE;
+	gboolean       no_stretch = FALSE;
+	GOptionEntry  entries [] =
+	{
+		{
+			"location", 0, 0, G_OPTION_ARG_STRING, &location,
+			N_("Location to get images from"), N_("PATH")
+		},
+		{
+			"background-color", 0, 0, G_OPTION_ARG_STRING, &background_color,
+			N_("Color to use for images background"), N_("\"#rrggbb\"")
+		},
+		{
+			"sort-images", 0, 0, G_OPTION_ARG_NONE, &sort_images,
+			N_("Do not randomize pictures from location"), NULL
+		},
+		{
+			"no-stretch", 0, 0, G_OPTION_ARG_NONE, &no_stretch,
+			N_("Do not try to stretch images on screen"), NULL
+		},
+		{ NULL }
+	};
+
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	error = NULL;
+
+	g_thread_init (NULL);
+	ret = gtk_init_with_args (&argc, &argv,
+	                          NULL,
+	                          entries,
+	                          NULL,
+	                          &error);
+	if (! ret)
+	{
+		g_message ("%s", error->message);
+		g_error_free (error);
+		exit (1);
+	}
+
+	g_chdir (g_get_home_dir ());
+
+	g_set_prgname ("slideshow");
+
+	window = gs_theme_window_new ();
+	g_signal_connect (G_OBJECT (window), "delete-event",
+	                  G_CALLBACK (gtk_main_quit), NULL);
+
+	engine = g_object_new (GSTE_TYPE_SLIDESHOW, NULL);
+
+	if (location == NULL)
+	{
+		location = xdg_user_dir_lookup ("PICTURES");
+		if (location == NULL ||
+		        strcmp (location, "/tmp") == 0 ||
+		        strcmp (location, g_get_home_dir ()) == 0)
+		{
+			free (location);
+			location = g_build_filename (g_get_home_dir (), "Pictures", NULL);
+		}
+	}
+
+	if (location != NULL)
+	{
+		g_object_set (engine, "images-location", location, NULL);
+	}
+
+	if (sort_images)
+	{
+		g_object_set (engine, "sort-images", sort_images, NULL);
+	}
+
+	if (background_color != NULL)
+	{
+		g_object_set (engine, "background-color", background_color, NULL);
+	}
+
+	if (no_stretch)
+	{
+		g_object_set (engine, "no-stretch", no_stretch, NULL);
+	}
+
+	gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (engine));
+
+	gtk_widget_show (GTK_WIDGET (engine));
+
+	gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
+	gtk_widget_show (window);
+
+	gtk_main ();
+
+	return 0;
+}
diff --git a/savers/slideshow.c.orig b/savers/slideshow.c.orig
new file mode 100644
index 0000000..f18dc5c
--- /dev/null
+++ b/savers/slideshow.c.orig
@@ -0,0 +1,127 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+
+#include "gs-theme-window.h"
+#include "gs-theme-engine.h"
+#include "gste-slideshow.h"
+
+#include "xdg-user-dir-lookup.h"
+
+int
+main (int argc, char **argv)
+{
+        GSThemeEngine *engine;
+        GtkWidget     *window;
+        GError        *error;
+        gboolean       ret;
+        char          *location = NULL;
+        char          *background_color = NULL;
+        gboolean       sort_images = FALSE;
+        gboolean       no_stretch = FALSE;
+        GOptionEntry  entries [] = {
+                { "location", 0, 0, G_OPTION_ARG_STRING, &location,
+                  N_("Location to get images from"), N_("PATH") },
+                { "background-color", 0, 0, G_OPTION_ARG_STRING, &background_color,
+                  N_("Color to use for images background"), N_("\"#rrggbb\"") },
+                { "sort-images", 0, 0, G_OPTION_ARG_NONE, &sort_images,
+                  N_("Do not randomize pictures from location"), NULL },
+                { "no-stretch", 0, 0, G_OPTION_ARG_NONE, &no_stretch,
+                  N_("Do not try to stretch images on screen"), NULL },
+                { NULL }
+        };
+
+        bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+        textdomain (GETTEXT_PACKAGE);
+
+        error = NULL;
+
+        g_thread_init (NULL);
+        ret = gtk_init_with_args (&argc, &argv,
+                                  NULL,
+                                  entries,
+                                  NULL,
+                                  &error);
+        if (! ret) {
+                g_message ("%s", error->message);
+                g_error_free (error);
+                exit (1);
+        }
+
+        g_chdir (g_get_home_dir ());
+
+        g_set_prgname ("slideshow");
+
+        window = gs_theme_window_new ();
+        g_signal_connect (G_OBJECT (window), "delete-event",
+                          G_CALLBACK (gtk_main_quit), NULL);
+
+        engine = g_object_new (GSTE_TYPE_SLIDESHOW, NULL);
+
+        if (location == NULL) {
+                location = xdg_user_dir_lookup ("PICTURES");
+                if (location == NULL ||
+                    strcmp (location, "/tmp") == 0 ||
+                    strcmp (location, g_get_home_dir ()) == 0) {
+                        free (location);
+                        location = g_build_filename (g_get_home_dir (), "Pictures", NULL);
+                }
+        }
+
+        if (location != NULL) {
+                g_object_set (engine, "images-location", location, NULL);
+        }
+
+        if (sort_images) {
+                g_object_set (engine, "sort-images", sort_images, NULL);
+        }
+
+        if (background_color != NULL) {
+                g_object_set (engine, "background-color", background_color, NULL);
+        }
+
+        if (no_stretch) {
+                g_object_set (engine, "no-stretch", no_stretch, NULL);
+        }
+
+        gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (engine));
+
+        gtk_widget_show (GTK_WIDGET (engine));
+
+        gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
+        gtk_widget_show (window);
+
+        gtk_main ();
+
+        return 0;
+}
diff --git a/savers/xdg-user-dir-lookup.c b/savers/xdg-user-dir-lookup.c
new file mode 100644
index 0000000..c9e8fe2
--- /dev/null
+++ b/savers/xdg-user-dir-lookup.c
@@ -0,0 +1,168 @@
+/*
+  This file is not licenced under the GPL like the rest of the code.
+  Its is under the MIT license, to encourage reuse by cut-and-paste.
+
+  Copyright (c) 2007 Red Hat, inc
+
+  Permission is hereby granted, free of charge, to any person
+  obtaining a copy of this software and associated documentation files
+  (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge,
+  publish, distribute, sublicense, and/or sell copies of the Software,
+  and to permit persons to whom the Software is furnished to do so,
+  subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xdg-user-dir-lookup.h"
+
+char *
+xdg_user_dir_lookup (const char *type)
+{
+	FILE *file;
+	char *home_dir, *config_home, *config_file;
+	char buffer[512];
+	char *user_dir;
+	char *p, *d;
+	int len;
+	int relative;
+
+	home_dir = getenv ("HOME");
+
+	if (home_dir == NULL)
+		return strdup ("/tmp");
+
+	config_home = getenv ("XDG_CONFIG_HOME");
+	if (config_home == NULL || config_home[0] == 0)
+	{
+		config_file = malloc (strlen (home_dir) + strlen ("/.config/user-dirs.dirs") + 1);
+		strcpy (config_file, home_dir);
+		strcat (config_file, "/.config/user-dirs.dirs");
+	}
+	else
+	{
+		config_file = malloc (strlen (config_home) + strlen ("/user-dirs.dirs") + 1);
+		strcpy (config_file, config_home);
+		strcat (config_file, "/user-dirs.dirs");
+	}
+
+	file = fopen (config_file, "r");
+	free (config_file);
+	if (file == NULL)
+		goto error;
+
+	user_dir = NULL;
+	while (fgets (buffer, sizeof (buffer), file))
+	{
+		/* Remove newline at end */
+		len = strlen (buffer);
+		if (len > 0 && buffer[len-1] == '\n')
+			buffer[len-1] = 0;
+
+		p = buffer;
+		while (*p == ' ' || *p == '\t')
+			p++;
+
+		if (strncmp (p, "XDG_", 4) != 0)
+			continue;
+		p += 4;
+		if (strncmp (p, type, strlen (type)) != 0)
+			continue;
+		p += strlen (type);
+		if (strncmp (p, "_DIR", 4) != 0)
+			continue;
+		p += 4;
+
+		while (*p == ' ' || *p == '\t')
+			p++;
+
+		if (*p != '=')
+			continue;
+		p++;
+
+		while (*p == ' ' || *p == '\t')
+			p++;
+
+		if (*p != '"')
+			continue;
+		p++;
+
+		relative = 0;
+		if (strncmp (p, "$HOME/", 6) == 0)
+		{
+			p += 6;
+			relative = 1;
+		}
+		else if (*p != '/')
+			continue;
+
+		if (relative)
+		{
+			user_dir = malloc (strlen (home_dir) + 1 + strlen (p) + 1);
+			strcpy (user_dir, home_dir);
+			strcat (user_dir, "/");
+		}
+		else
+		{
+			user_dir = malloc (strlen (p) + 1);
+			*user_dir = 0;
+		}
+
+		d = user_dir + strlen (user_dir);
+		while (*p && *p != '"')
+		{
+			if ((*p == '\\') && (*(p+1) != 0))
+				p++;
+			*d++ = *p++;
+		}
+		*d = 0;
+	}
+	fclose (file);
+
+	if (user_dir)
+		return user_dir;
+
+error:
+	/* Special case desktop for historical compatibility */
+	if (strcmp (type, "DESKTOP") == 0)
+	{
+		user_dir = malloc (strlen (home_dir) + strlen ("/Desktop") + 1);
+		strcpy (user_dir, home_dir);
+		strcat (user_dir, "/Desktop");
+		return user_dir;
+	}
+	else
+		return strdup (home_dir);
+}
+
+#ifdef STANDALONE
+
+int
+main (int argc, char *argv[])
+{
+	if (argc != 2)
+	{
+		fprintf (stderr, "Usage %s <dir-type>\n", argv[0]);
+		exit (1);
+	}
+
+	printf ("%s\n", xdg_user_dir_lookup (argv[1]));
+	return 0;
+}
+
+#endif
diff --git a/savers/xdg-user-dir-lookup.c.orig b/savers/xdg-user-dir-lookup.c.orig
new file mode 100644
index 0000000..a6b2fb1
--- /dev/null
+++ b/savers/xdg-user-dir-lookup.c.orig
@@ -0,0 +1,168 @@
+/*
+  This file is not licenced under the GPL like the rest of the code.
+  Its is under the MIT license, to encourage reuse by cut-and-paste.
+
+  Copyright (c) 2007 Red Hat, inc
+
+  Permission is hereby granted, free of charge, to any person
+  obtaining a copy of this software and associated documentation files
+  (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge,
+  publish, distribute, sublicense, and/or sell copies of the Software,
+  and to permit persons to whom the Software is furnished to do so,
+  subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xdg-user-dir-lookup.h"
+
+char *
+xdg_user_dir_lookup (const char *type)
+{
+  FILE *file;
+  char *home_dir, *config_home, *config_file;
+  char buffer[512];
+  char *user_dir;
+  char *p, *d;
+  int len;
+  int relative;
+
+  home_dir = getenv ("HOME");
+
+  if (home_dir == NULL)
+    return strdup ("/tmp");
+
+  config_home = getenv ("XDG_CONFIG_HOME");
+  if (config_home == NULL || config_home[0] == 0)
+    {
+      config_file = malloc (strlen (home_dir) + strlen ("/.config/user-dirs.dirs") + 1);
+      strcpy (config_file, home_dir);
+      strcat (config_file, "/.config/user-dirs.dirs");
+    }
+  else
+    {
+      config_file = malloc (strlen (config_home) + strlen ("/user-dirs.dirs") + 1);
+      strcpy (config_file, config_home);
+      strcat (config_file, "/user-dirs.dirs");
+    }
+
+  file = fopen (config_file, "r");
+  free (config_file);
+  if (file == NULL)
+    goto error;
+
+  user_dir = NULL;
+  while (fgets (buffer, sizeof (buffer), file))
+    {
+      /* Remove newline at end */
+      len = strlen (buffer);
+      if (len > 0 && buffer[len-1] == '\n')
+	buffer[len-1] = 0;
+
+      p = buffer;
+      while (*p == ' ' || *p == '\t')
+	p++;
+
+      if (strncmp (p, "XDG_", 4) != 0)
+	continue;
+      p += 4;
+      if (strncmp (p, type, strlen (type)) != 0)
+	continue;
+      p += strlen (type);
+      if (strncmp (p, "_DIR", 4) != 0)
+	continue;
+      p += 4;
+
+      while (*p == ' ' || *p == '\t')
+	p++;
+
+      if (*p != '=')
+	continue;
+      p++;
+
+      while (*p == ' ' || *p == '\t')
+	p++;
+
+      if (*p != '"')
+	continue;
+      p++;
+
+      relative = 0;
+      if (strncmp (p, "$HOME/", 6) == 0)
+	{
+	  p += 6;
+	  relative = 1;
+	}
+      else if (*p != '/')
+	continue;
+
+      if (relative)
+	{
+	  user_dir = malloc (strlen (home_dir) + 1 + strlen (p) + 1);
+	  strcpy (user_dir, home_dir);
+	  strcat (user_dir, "/");
+	}
+      else
+	{
+	  user_dir = malloc (strlen (p) + 1);
+	  *user_dir = 0;
+	}
+
+      d = user_dir + strlen (user_dir);
+      while (*p && *p != '"')
+	{
+	  if ((*p == '\\') && (*(p+1) != 0))
+	    p++;
+	  *d++ = *p++;
+	}
+      *d = 0;
+    }
+  fclose (file);
+
+  if (user_dir)
+    return user_dir;
+
+ error:
+  /* Special case desktop for historical compatibility */
+  if (strcmp (type, "DESKTOP") == 0)
+    {
+      user_dir = malloc (strlen (home_dir) + strlen ("/Desktop") + 1);
+      strcpy (user_dir, home_dir);
+      strcat (user_dir, "/Desktop");
+      return user_dir;
+    }
+  else
+    return strdup (home_dir);
+}
+
+#ifdef STANDALONE
+
+int
+main (int argc, char *argv[])
+{
+  if (argc != 2)
+    {
+      fprintf (stderr, "Usage %s <dir-type>\n", argv[0]);
+      exit (1);
+    }
+
+  printf ("%s\n", xdg_user_dir_lookup (argv[1]));
+  return 0;
+}
+
+#endif
diff --git a/savers/xdg-user-dir-lookup.h b/savers/xdg-user-dir-lookup.h
new file mode 100644
index 0000000..2803be3
--- /dev/null
+++ b/savers/xdg-user-dir-lookup.h
@@ -0,0 +1,28 @@
+/*
+  This file is not licenced under the GPL like the rest of the code.
+  Its is under the MIT license, to encourage reuse by cut-and-paste.
+
+  Copyright (c) 2007 Red Hat, inc
+
+  Permission is hereby granted, free of charge, to any person
+  obtaining a copy of this software and associated documentation files
+  (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge,
+  publish, distribute, sublicense, and/or sell copies of the Software,
+  and to permit persons to whom the Software is furnished to do so,
+  subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+*/
+
+char * xdg_user_dir_lookup (const char *type);
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..1de819f
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,268 @@
+## We require new-style dependency handling.
+AUTOMAKE_OPTIONS = 1.7
+
+NULL =
+
+saverdir = $(libexecdir)/mate-screensaver
+themesdir = $(pkgdatadir)/themes
+
+INCLUDES =							\
+	-I.							\
+	-I$(srcdir)						\
+	-DMATEMENU_I_KNOW_THIS_IS_UNSTABLE				\
+	$(MATE_SCREENSAVER_CFLAGS)				\
+	$(MATE_SCREENSAVER_DIALOG_CFLAGS)			\
+	$(MATE_SCREENSAVER_CAPPLET_CFLAGS)			\
+	$(DISABLE_DEPRECATED_CFLAGS)				\
+	-DPREFIX=\""$(prefix)"\" 				\
+	-DBINDIR=\""$(bindir)"\"				\
+	-DLIBDIR=\""$(libdir)"\" 				\
+	-DLIBEXECDIR=\""$(libexecdir)"\"			\
+	-DDATADIR=\""$(datadir)"\"				\
+	-DSYSCONFDIR=\""$(sysconfdir)"\" 			\
+	-DMATELOCALEDIR=\""$(datadir)/locale"\"		\
+	-DSAVERDIR=\""$(saverdir)"\"				\
+	-DTHEMESDIR=\""$(themesdir)"\"				\
+	-DGTKBUILDERDIR=\"$(pkgdatadir)\"				\
+	-DPAM_SERVICE_NAME=\""mate-screensaver"\"		\
+	$(WARN_CFLAGS)						\
+	$(AUTH_CFLAGS)						\
+	$(DEBUG_CFLAGS)						\
+	$(DBUS_CFLAGS)						\
+	$(LIBMATEKBDUI_CFLAGS)					\
+	$(LIBMATENOTIFY_CFLAGS)					\
+	$(NULL)
+
+bin_PROGRAMS = \
+	mate-screensaver		\
+	mate-screensaver-command	\
+	mate-screensaver-preferences	\
+	$(NULL)
+
+libexec_PROGRAMS = \
+	mate-screensaver-dialog	\
+	mate-screensaver-gl-helper	\
+	$(NULL)
+
+noinst_PROGRAMS = 	\
+	test-fade	\
+	test-passwd	\
+	test-watcher	\
+	test-window	\
+	$(NULL)
+
+desktopdir = $(sysconfdir)/xdg/autostart
+desktop_in_files = mate-screensaver.desktop.in
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+ at INTLTOOL_DESKTOP_RULE@
+
+mate_screensaver_command_SOURCES = 	\
+	mate-screensaver-command.c	\
+	$(NULL)
+
+mate_screensaver_command_LDADD =	\
+	$(MATE_SCREENSAVER_COMMAND_LIBS)	\
+	$(NULL)
+
+AUTH_SOURCES = 			\
+	gs-auth.h		\
+	gs-auth- at AUTH_SCHEME@.c	\
+	$(NULL)
+
+test_fade_SOURCES = 			\
+	test-fade.c 			\
+	gs-fade.c	 		\
+	gs-fade.h	 		\
+	gs-debug.c			\
+	gs-debug.h			\
+	$(NULL)
+
+test_fade_LDADD =			\
+	$(MATE_SCREENSAVER_LIBS)	\
+	$(SAVER_LIBS)			\
+	$(NULL)
+
+test_passwd_SOURCES = 			\
+	test-passwd.c 			\
+	$(AUTH_SOURCES)			\
+	setuid.c			\
+	setuid.h			\
+	subprocs.c			\
+	subprocs.h			\
+	$(NULL)
+
+test_passwd_LDADD =			\
+	$(MATE_SCREENSAVER_DIALOG_LIBS)\
+	$(AUTH_LIBS)			\
+	$(NULL)
+
+test_watcher_SOURCES =			\
+	test-watcher.c			\
+	gs-watcher.h			\
+	gs-watcher-x11.c		\
+	gs-marshal.c 			\
+	gs-marshal.h			\
+	gs-debug.c			\
+	gs-debug.h			\
+	$(NULL)
+
+test_watcher_LDADD =			\
+	$(MATE_SCREENSAVER_LIBS)	\
+	$(SAVER_LIBS)			\
+	$(NULL)
+
+test_window_SOURCES =			\
+	test-window.c			\
+	gs-window.h			\
+	gs-window-x11.c			\
+	gs-grab-x11.c			\
+	gs-grab.h			\
+	gs-marshal.c 			\
+	gs-marshal.h			\
+	gs-debug.c			\
+	gs-debug.h			\
+	subprocs.c			\
+	subprocs.h			\
+	$(NULL)
+
+test_window_LDADD =			\
+	$(MATE_SCREENSAVER_LIBS)	\
+	$(SAVER_LIBS)			\
+	$(NULL)
+
+mate_screensaver_dialog_SOURCES = 	\
+	mate-screensaver-dialog.c	\
+	gs-lock-plug.c			\
+	gs-lock-plug.h			\
+	gs-debug.c			\
+	gs-debug.h			\
+	setuid.c			\
+	setuid.h			\
+	subprocs.c			\
+	subprocs.h			\
+	$(AUTH_SOURCES)			\
+	$(NULL)
+
+EXTRA_mate_screensaver_dialog_SOURCES = \
+	gs-auth-pam.c		\
+	gs-auth-helper.c	\
+	gs-auth-pwent.c		\
+	$(NULL)
+
+mate_screensaver_dialog_LDADD =	\
+	$(MATE_SCREENSAVER_DIALOG_LIBS)\
+	$(SAVER_LIBS)			\
+	$(AUTH_LIBS)			\
+	$(LIBMATEKBDUI_LIBS)		\
+	$(LIBMATENOTIFY_LIBS)		\
+	$(NULL)
+
+BUILT_SOURCES = 		\
+	gs-marshal.c 		\
+	gs-marshal.h		\
+	$(NULL)
+
+gs-marshal.c: gs-marshal.list
+	echo "#include \"gs-marshal.h\"" > $@ && \
+	@GLIB_GENMARSHAL@ $< --prefix=gs_marshal --body >> $@
+
+gs-marshal.h: gs-marshal.list
+	@GLIB_GENMARSHAL@ $< --prefix=gs_marshal --header > $@
+
+mate_screensaver_SOURCES =	\
+	mate-screensaver.c	\
+	mate-screensaver.h	\
+	gs-monitor.c		\
+	gs-monitor.h		\
+	gs-watcher-x11.c	\
+	gs-watcher.h		\
+	gs-listener-dbus.c	\
+	gs-listener-dbus.h	\
+	gs-manager.c		\
+	gs-manager.h		\
+	gs-window-x11.c		\
+	gs-window.h		\
+	gs-prefs.c		\
+	gs-prefs.h		\
+	gs-theme-manager.c	\
+	gs-theme-manager.h	\
+	gs-job.c		\
+	gs-job.h		\
+	gs-debug.c		\
+	gs-debug.h		\
+	subprocs.c		\
+	subprocs.h		\
+	gs-grab-x11.c		\
+	gs-grab.h		\
+	gs-fade.c		\
+	gs-fade.h		\
+	$(BUILT_SOURCES)	\
+	$(NULL)
+
+mate_screensaver_gl_helper_LDADD =	\
+	$(MATE_SCREENSAVER_LIBS)	\
+	$(GL_LIBS)			\
+	$(NULL)
+
+mate_screensaver_gl_helper_SOURCES =	\
+	mate-screensaver-gl-helper.c	\
+	gs-visual-gl.c			\
+	gs-visual-gl.h			\
+	$(NULL)
+
+mate_screensaver_LDADD =		\
+	$(MATE_SCREENSAVER_LIBS)	\
+	$(SAVER_LIBS)			\
+	$(NULL)
+
+mate_screensaver_LDFLAGS = -export-dynamic
+
+mate_screensaver_preferences_SOURCES =	\
+	mate-screensaver-preferences.c	\
+	copy-theme-dialog.c		\
+	copy-theme-dialog.h		\
+	gs-theme-manager.c		\
+	gs-theme-manager.h		\
+	gs-job.c			\
+	gs-job.h			\
+	gs-debug.c			\
+	gs-debug.h			\
+	subprocs.c			\
+	subprocs.h			\
+	$(NULL)
+
+mate_screensaver_preferences_LDADD =	\
+	$(MATE_SCREENSAVER_CAPPLET_LIBS)	\
+	$(NULL)
+
+EXTRA_DIST =				\
+	debug-screensaver.sh		\
+	gs-marshal.list			\
+	mate-screensaver.desktop.in	\
+	$(NULL)
+
+CLEANFILES = 				\
+	$(desktop_DATA) 		\
+	mate-screensaver.desktop.in	\
+	$(BUILT_SOURCES)
+
+MAINTAINERCLEANFILES =			\
+	*~				\
+	Makefile.in
+
+install-exec-hook:
+	@if [ "x at NEED_SETUID@" = "xyes" ]; then \
+	    echo "***" ; \
+	    echo "***  Warning: mate-screensaver has been compiled with support for" ; \
+	    echo "***           shadow passwords.  If your system actually uses shadow" ; \
+	    echo "***           passwords then it must be installed as a setuid root" ; \
+	    echo "***           program in order for locking to work.  To do this, you" ; \
+	    echo "***           must run:" ; \
+	    echo "***" ; \
+	    echo "***           chown root $(DESTDIR)$(libexecdir)/mate-screensaver-dialog" ; \
+	    echo "***           chmod +s $(DESTDIR)$(libexecdir)/mate-screensaver-dialog" ; \
+	    echo "***" ; \
+	    echo "***           For now, it will be installed non-setuid, which" ; \
+	    echo "***           means that locking might not work." ; \
+	    echo "***" ; \
+	fi
diff --git a/src/copy-theme-dialog.c b/src/copy-theme-dialog.c
new file mode 100644
index 0000000..ed7808d
--- /dev/null
+++ b/src/copy-theme-dialog.c
@@ -0,0 +1,545 @@
+/* copy-theme-dialog.c
+ * Copyright (C) 2008 John Millikin <jmillikin at gmail.com>
+ *
+ * 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, 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+**/
+
+#include "config.h"
+
+#include <limits.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gio/gio.h>
+
+#include "copy-theme-dialog.h"
+
+static void
+copy_theme_dialog_class_init (CopyThemeDialogClass *klass);
+static void
+copy_theme_dialog_init (CopyThemeDialog *dlg);
+static void
+add_file_to_dialog (gpointer data, gpointer user_data);
+static void
+single_copy_complete (GObject *source_object, GAsyncResult *res,
+                      gpointer user_data);
+static void
+copy_theme_dialog_copy_next (CopyThemeDialog *dialog);
+static void
+copy_theme_dialog_cancel (CopyThemeDialog *dialog);
+static void
+copy_theme_dialog_finalize (GObject *obj);
+static void
+copy_theme_dialog_update_num_files (CopyThemeDialog *dlg);
+static void
+copy_theme_dialog_response (GtkDialog *dialog, gint response_id);
+static void
+eel_gtk_label_make_bold (GtkLabel *label);
+static void
+create_titled_label (GtkTable   *table,
+                     int         row,
+                     GtkWidget **title_widget,
+                     GtkWidget **label_text_widget);
+
+static GObjectClass *parent_class = NULL;
+
+enum
+{
+    CANCELLED = 0,
+    COMPLETE,
+    SIGNAL_COUNT
+};
+
+struct _CopyThemeDialogPrivate
+{
+	GtkWidget *progress;
+	GtkWidget *status;
+	GtkWidget *current;
+	GtkWidget *from;
+	GtkWidget *to;
+
+	GFile *theme_dir;
+	GSList *all_files, *file;
+	GSList *all_basenames, *basename;
+	guint index;
+	guint total_files;
+	GCancellable *cancellable;
+};
+
+guint signals[SIGNAL_COUNT] = {0, 0};
+
+GType
+copy_theme_dialog_get_type (void)
+{
+	static GType copy_theme_dialog_type = 0;
+
+	if (!copy_theme_dialog_type)
+	{
+		static GTypeInfo copy_theme_dialog_info =
+		{
+			sizeof (CopyThemeDialogClass),
+			NULL, /* GBaseInitFunc */
+			NULL, /* GBaseFinalizeFunc */
+			(GClassInitFunc) copy_theme_dialog_class_init,
+			NULL, /* GClassFinalizeFunc */
+			NULL, /* data */
+			sizeof (CopyThemeDialog),
+			0, /* n_preallocs */
+			(GInstanceInitFunc) copy_theme_dialog_init,
+			NULL
+		};
+
+		copy_theme_dialog_type = g_type_register_static (GTK_TYPE_DIALOG,
+		                         "CopyThemeDialog",
+		                         &copy_theme_dialog_info,
+		                         0);
+	}
+
+	return copy_theme_dialog_type;
+}
+
+static void
+copy_theme_dialog_class_init (CopyThemeDialogClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	g_type_class_add_private (klass, sizeof (CopyThemeDialogPrivate));
+
+	klass->cancelled = copy_theme_dialog_cancel;
+	object_class->finalize = copy_theme_dialog_finalize;
+
+	GTK_DIALOG_CLASS (klass)->response = copy_theme_dialog_response;
+
+	signals[CANCELLED] = g_signal_new ("cancelled",
+	                                   G_TYPE_FROM_CLASS (object_class),
+	                                   G_SIGNAL_RUN_FIRST,
+	                                   G_STRUCT_OFFSET (CopyThemeDialogClass, cancelled),
+	                                   NULL, NULL,
+	                                   g_cclosure_marshal_VOID__VOID,
+	                                   G_TYPE_NONE, 0);
+
+	signals[COMPLETE] = g_signal_new ("complete",
+	                                  G_TYPE_FROM_CLASS (object_class),
+	                                  G_SIGNAL_RUN_LAST,
+	                                  G_STRUCT_OFFSET (CopyThemeDialogClass, complete),
+	                                  NULL, NULL,
+	                                  g_cclosure_marshal_VOID__VOID,
+	                                  G_TYPE_NONE, 0);
+
+	parent_class = g_type_class_peek_parent (klass);
+}
+
+GtkWidget*
+copy_theme_dialog_new (GList *files)
+{
+	GtkWidget *dialog;
+	CopyThemeDialogPrivate *priv;
+
+	dialog = GTK_WIDGET (g_object_new (COPY_THEME_DIALOG_TYPE, NULL));
+	priv = COPY_THEME_DIALOG (dialog)->priv;
+	priv->index = 0;
+	priv->total_files = 0;
+	priv->all_files = NULL;
+	priv->all_basenames = NULL;
+
+	g_list_foreach (files, add_file_to_dialog, dialog);
+
+	priv->file = priv->all_files;
+	priv->basename = priv->all_basenames;
+
+	return dialog;
+}
+
+static gboolean
+copy_finished (CopyThemeDialog *dialog)
+{
+	return (g_cancellable_is_cancelled (dialog->priv->cancellable) ||
+	        dialog->priv->file == NULL);
+}
+
+static void
+copy_theme_dialog_init (CopyThemeDialog *dlg)
+{
+	GtkWidget *vbox;
+	GtkWidget *hbox;
+	GtkWidget *progress_vbox;
+	GtkWidget *table;
+	GtkWidget *label;
+	char      *markup;
+	gchar     *theme_dir_path;
+
+	dlg->priv = G_TYPE_INSTANCE_GET_PRIVATE (dlg, COPY_THEME_DIALOG_TYPE,
+	            CopyThemeDialogPrivate);
+
+	/* Find and, if needed, create the directory for storing themes */
+	theme_dir_path = g_build_filename (g_get_user_data_dir (),
+	                                   "applications", "screensavers",
+	                                   NULL);
+	dlg->priv->theme_dir = g_file_new_for_path (theme_dir_path);
+	g_mkdir_with_parents (theme_dir_path, S_IRWXU);
+	g_free (theme_dir_path);
+
+	/* For cancelling async I/O operations */
+	dlg->priv->cancellable = g_cancellable_new ();
+
+	/* GUI settings */
+	gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox),
+	                                4);
+	gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dlg)->vbox), 4);
+
+	vbox = gtk_vbox_new (FALSE, 6);
+	gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
+	gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), vbox, TRUE, TRUE, 0);
+
+	dlg->priv->status = gtk_label_new ("");
+	markup = g_strdup_printf ("<big><b>%s</b></big>", _("Copying files"));
+	gtk_label_set_markup (GTK_LABEL (dlg->priv->status), markup);
+	g_free (markup);
+
+	gtk_misc_set_alignment (GTK_MISC (dlg->priv->status), 0.0, 0.0);
+
+	gtk_box_pack_start (GTK_BOX (vbox), dlg->priv->status, FALSE, FALSE, 0);
+
+	hbox = gtk_hbox_new (FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+
+	table = gtk_table_new (2, 2, FALSE);
+	gtk_table_set_row_spacings (GTK_TABLE (table), 4);
+	gtk_table_set_col_spacings (GTK_TABLE (table), 4);
+
+	create_titled_label (GTK_TABLE (table), 0,
+	                     &label,
+	                     &dlg->priv->from);
+	gtk_label_set_text (GTK_LABEL (label), _("From:"));
+	create_titled_label (GTK_TABLE (table), 1,
+	                     &label,
+	                     &dlg->priv->to);
+	gtk_label_set_text (GTK_LABEL (label), _("To:"));
+
+	gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (table), FALSE, FALSE, 0);
+
+	progress_vbox = gtk_vbox_new (TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (vbox), progress_vbox, FALSE, FALSE, 0);
+
+	dlg->priv->progress = gtk_progress_bar_new ();
+	gtk_box_pack_start (GTK_BOX (progress_vbox),
+	                    dlg->priv->progress, FALSE, FALSE, 0);
+
+	dlg->priv->current = gtk_label_new ("");
+	gtk_box_pack_start (GTK_BOX (progress_vbox),
+	                    dlg->priv->current, FALSE, FALSE, 0);
+	gtk_misc_set_alignment (GTK_MISC (dlg->priv->current), 0.0, 0.5);
+
+	gtk_dialog_add_button (GTK_DIALOG (dlg),
+	                       GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+
+	gtk_window_set_title (GTK_WINDOW (dlg),
+	                      _("Copying themes"));
+	gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE);
+	gtk_container_set_border_width (GTK_CONTAINER (dlg), 6);
+
+	gtk_widget_show_all (GTK_DIALOG (dlg)->vbox);
+}
+
+static void
+add_file_to_dialog (gpointer data, gpointer user_data)
+{
+	CopyThemeDialogPrivate *priv;
+	GFile *file;
+	gchar *basename = NULL, *raw_basename;
+
+	priv = COPY_THEME_DIALOG (user_data)->priv;
+	file = G_FILE (data);
+
+	raw_basename = g_file_get_basename (file);
+	if (g_str_has_suffix (raw_basename, ".desktop"))
+	{
+		/* FIXME: validate key file? */
+		basename = g_strndup (raw_basename,
+		                      /* 8 = strlen (".desktop") */
+		                      strlen (raw_basename) - 8);
+	}
+	g_free (raw_basename);
+
+	if (basename)
+	{
+		g_object_ref (file);
+		priv->all_files = g_slist_append (priv->all_files, file);
+		priv->all_basenames = g_slist_append (priv->all_basenames, basename);
+		priv->total_files++;
+	}
+
+	else
+	{
+		GtkWidget *dialog;
+		gchar *uri;
+
+		dialog = gtk_message_dialog_new (GTK_WINDOW (user_data),
+		                                 GTK_DIALOG_MODAL,
+		                                 GTK_MESSAGE_ERROR,
+		                                 GTK_BUTTONS_OK,
+		                                 _("Invalid screensaver theme"));
+		uri = g_file_get_uri (file);
+		gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+		        _("%s does not appear to be a valid screensaver theme."),
+		        uri);
+		g_free (uri);
+		gtk_window_set_title (GTK_WINDOW (dialog), "");
+		gtk_window_set_icon_name (GTK_WINDOW (dialog), "preferences-desktop-screensaver");
+
+		gtk_dialog_run (GTK_DIALOG (dialog));
+		gtk_widget_destroy (dialog);
+	}
+}
+
+static void
+single_copy_complete (GObject *source_object, GAsyncResult *res,
+                      gpointer user_data)
+{
+	GError *error = NULL;
+	gboolean should_continue = FALSE;
+	CopyThemeDialog *dialog = COPY_THEME_DIALOG (user_data);
+
+	if (g_file_copy_finish (G_FILE (source_object), res, &error))
+	{
+		should_continue = TRUE;
+	}
+
+	else
+	{
+		/* If the file already exists, generate a new random name
+		 * and try again.
+		**/
+		if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
+		{
+			GFile *file, *destination;
+			gchar *basename, *full_basename;
+			g_error_free (error);
+
+			file = G_FILE (dialog->priv->file->data);
+			basename = (gchar *) (dialog->priv->basename->data);
+
+			g_return_if_fail (file != NULL);
+			g_return_if_fail (basename != NULL);
+
+			full_basename = g_strdup_printf ("%s-%u.desktop",
+			                                 basename,
+			                                 g_random_int ());
+			destination = g_file_get_child (dialog->priv->theme_dir,
+			                                full_basename);
+			g_free (full_basename);
+
+			g_file_copy_async (file, destination, G_FILE_COPY_NONE,
+			                   G_PRIORITY_DEFAULT,
+			                   dialog->priv->cancellable,
+			                   NULL, NULL,
+			                   single_copy_complete, dialog);
+		}
+
+		else
+		{
+			if (g_error_matches (error, G_IO_ERROR,
+			                     G_IO_ERROR_CANCELLED))
+			{
+				/* User has cancelled the theme copy */
+				g_signal_emit (G_OBJECT (dialog),
+				               signals[CANCELLED],
+				               0, NULL);
+			}
+
+			else
+			{
+				/* Some other error occurred, ignore and
+				 * try to copy remaining files
+				**/
+				should_continue = TRUE;
+			}
+
+			g_error_free (error);
+		}
+	}
+
+	/* Update informational widgets and, if needed, signal
+	 * copy completion.
+	**/
+	if (should_continue)
+	{
+		dialog->priv->index++;
+		dialog->priv->file = dialog->priv->file->next;
+		dialog->priv->basename = dialog->priv->basename->next;
+		copy_theme_dialog_update_num_files (dialog);
+		copy_theme_dialog_copy_next (dialog);
+	}
+}
+
+/* Try to copy the theme file to the user's screensaver directory.
+ * If a file with the given name already exists, the error will be
+ * caught later and the copy re-attempted with a random value
+ * appended to the filename.
+**/
+static void
+copy_theme_dialog_copy_next (CopyThemeDialog *dialog)
+{
+	GFile *file, *destination;
+	gchar *basename, *full_basename;
+
+	if (copy_finished (dialog))
+	{
+		g_signal_emit (G_OBJECT (dialog), signals[COMPLETE],
+		               0, NULL);
+		return;
+	}
+
+	file = G_FILE (dialog->priv->file->data);
+	basename = (gchar *) (dialog->priv->basename->data);
+
+	g_return_if_fail (file != NULL);
+	g_return_if_fail (basename != NULL);
+
+	full_basename = g_strdup_printf ("%s.desktop", basename);
+	destination = g_file_get_child (dialog->priv->theme_dir, full_basename);
+	g_free (full_basename);
+
+	g_file_copy_async (file, destination, G_FILE_COPY_NONE,
+	                   G_PRIORITY_DEFAULT, dialog->priv->cancellable,
+	                   NULL, NULL, single_copy_complete, dialog);
+}
+
+static gboolean
+timeout_display_dialog (gpointer data)
+{
+	if (IS_COPY_THEME_DIALOG (data))
+	{
+		CopyThemeDialog *dialog = COPY_THEME_DIALOG (data);
+		if (!copy_finished (dialog))
+		{
+			gtk_widget_show (GTK_WIDGET (dialog));
+
+			g_signal_connect (dialog, "response",
+			                  G_CALLBACK (copy_theme_dialog_response),
+			                  dialog);
+		}
+	}
+	return FALSE;
+}
+
+void
+copy_theme_dialog_begin (CopyThemeDialog *dialog)
+{
+	gtk_widget_hide (GTK_WIDGET (dialog));
+
+	/* If the copy operation takes more than half a second to
+	 * complete, display the dialog.
+	**/
+	g_timeout_add (500, timeout_display_dialog, dialog);
+
+	copy_theme_dialog_copy_next (dialog);
+}
+
+static void
+copy_theme_dialog_cancel (CopyThemeDialog *dialog)
+{
+	g_cancellable_cancel (dialog->priv->cancellable);
+}
+
+static void
+copy_theme_dialog_finalize (GObject *obj)
+{
+	CopyThemeDialog *dlg = COPY_THEME_DIALOG (obj);
+
+	g_object_unref (dlg->priv->theme_dir);
+	g_slist_foreach (dlg->priv->all_files, (GFunc) (g_object_unref), NULL);
+	g_slist_free (dlg->priv->all_files);
+	g_slist_foreach (dlg->priv->all_basenames, (GFunc) (g_free), NULL);
+	g_slist_free (dlg->priv->all_basenames);
+	g_object_unref (dlg->priv->cancellable);
+
+	if (parent_class->finalize)
+		parent_class->finalize (G_OBJECT (dlg));
+}
+
+static void
+copy_theme_dialog_update_num_files (CopyThemeDialog *dlg)
+{
+	gchar *str = g_strdup_printf (_("Copying file: %u of %u"),
+	                              dlg->priv->index, dlg->priv->total_files);
+	gtk_progress_bar_set_text (GTK_PROGRESS_BAR (dlg->priv->progress), str);
+	g_free (str);
+}
+
+static void
+copy_theme_dialog_response (GtkDialog *dialog, gint response_id)
+{
+	g_cancellable_cancel (COPY_THEME_DIALOG (dialog)->priv->cancellable);
+}
+
+/**
+ * eel_gtk_label_make_bold.
+ *
+ * Switches the font of label to a bold equivalent.
+ * @label: The label.
+ **/
+static void
+eel_gtk_label_make_bold (GtkLabel *label)
+{
+	PangoFontDescription *font_desc;
+
+	font_desc = pango_font_description_new ();
+
+	pango_font_description_set_weight (font_desc,
+	                                   PANGO_WEIGHT_BOLD);
+
+	/* This will only affect the weight of the font, the rest is
+	 * from the current state of the widget, which comes from the
+	 * theme or user prefs, since the font desc only has the
+	 * weight flag turned on.
+	 */
+	gtk_widget_modify_font (GTK_WIDGET (label), font_desc);
+
+	pango_font_description_free (font_desc);
+}
+
+/* from caja */
+static void
+create_titled_label (GtkTable   *table,
+                     int         row,
+                     GtkWidget **title_widget,
+                     GtkWidget **label_text_widget)
+{
+	*title_widget = gtk_label_new ("");
+	eel_gtk_label_make_bold (GTK_LABEL (*title_widget));
+	gtk_misc_set_alignment (GTK_MISC (*title_widget), 1, 0);
+	gtk_table_attach (table, *title_widget,
+	                  0, 1,
+	                  row, row + 1,
+	                  GTK_FILL, 0,
+	                  0, 0);
+	gtk_widget_show (*title_widget);
+
+	*label_text_widget = gtk_label_new ("");
+	gtk_label_set_ellipsize (GTK_LABEL (*label_text_widget), PANGO_ELLIPSIZE_END);
+	gtk_table_attach (table, *label_text_widget,
+	                  1, 2,
+	                  row, row + 1,
+	                  GTK_FILL | GTK_EXPAND, 0,
+	                  0, 0);
+	gtk_widget_show (*label_text_widget);
+	gtk_misc_set_alignment (GTK_MISC (*label_text_widget), 0, 0);
+}
diff --git a/src/copy-theme-dialog.c.orig b/src/copy-theme-dialog.c.orig
new file mode 100644
index 0000000..d8150eb
--- /dev/null
+++ b/src/copy-theme-dialog.c.orig
@@ -0,0 +1,545 @@
+/* copy-theme-dialog.c
+ * Copyright (C) 2008 John Millikin <jmillikin at gmail.com>
+ *
+ * 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, 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+**/
+
+#include "config.h"
+
+#include <limits.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gio/gio.h>
+
+#include "copy-theme-dialog.h"
+
+static void
+copy_theme_dialog_class_init (CopyThemeDialogClass *klass);
+static void
+copy_theme_dialog_init (CopyThemeDialog *dlg);
+static void
+add_file_to_dialog (gpointer data, gpointer user_data);
+static void
+single_copy_complete (GObject *source_object, GAsyncResult *res,
+                      gpointer user_data);
+static void
+copy_theme_dialog_copy_next (CopyThemeDialog *dialog);
+static void
+copy_theme_dialog_cancel (CopyThemeDialog *dialog);
+static void
+copy_theme_dialog_finalize (GObject *obj);
+static void
+copy_theme_dialog_update_num_files (CopyThemeDialog *dlg);
+static void
+copy_theme_dialog_response (GtkDialog *dialog, gint response_id);
+static void
+eel_gtk_label_make_bold (GtkLabel *label);
+static void
+create_titled_label (GtkTable   *table,
+                     int         row,
+                     GtkWidget **title_widget,
+                     GtkWidget **label_text_widget);
+
+static GObjectClass *parent_class = NULL;
+
+enum
+{
+    CANCELLED = 0,
+    COMPLETE,
+    SIGNAL_COUNT
+};
+
+struct _CopyThemeDialogPrivate
+{
+    GtkWidget *progress;
+    GtkWidget *status;
+    GtkWidget *current;
+    GtkWidget *from;
+    GtkWidget *to;
+
+    GFile *theme_dir;
+    GSList *all_files, *file;
+    GSList *all_basenames, *basename;
+    guint index;
+    guint total_files;
+    GCancellable *cancellable;
+};
+
+guint signals[SIGNAL_COUNT] = {0, 0};
+
+GType
+copy_theme_dialog_get_type (void)
+{
+    static GType copy_theme_dialog_type = 0;
+
+    if (!copy_theme_dialog_type)
+    {
+        static GTypeInfo copy_theme_dialog_info =
+        {
+            sizeof (CopyThemeDialogClass),
+            NULL, /* GBaseInitFunc */
+            NULL, /* GBaseFinalizeFunc */
+            (GClassInitFunc) copy_theme_dialog_class_init,
+            NULL, /* GClassFinalizeFunc */
+            NULL, /* data */
+            sizeof (CopyThemeDialog),
+            0, /* n_preallocs */
+            (GInstanceInitFunc) copy_theme_dialog_init,
+            NULL
+        };
+
+        copy_theme_dialog_type = g_type_register_static (GTK_TYPE_DIALOG,
+                                 "CopyThemeDialog",
+                                 &copy_theme_dialog_info,
+                                 0);
+    }
+
+    return copy_theme_dialog_type;
+}
+
+static void
+copy_theme_dialog_class_init (CopyThemeDialogClass *klass)
+{
+    GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+    g_type_class_add_private (klass, sizeof (CopyThemeDialogPrivate));
+
+    klass->cancelled = copy_theme_dialog_cancel;
+    object_class->finalize = copy_theme_dialog_finalize;
+
+    GTK_DIALOG_CLASS (klass)->response = copy_theme_dialog_response;
+
+    signals[CANCELLED] = g_signal_new ("cancelled",
+                                       G_TYPE_FROM_CLASS (object_class),
+                                       G_SIGNAL_RUN_FIRST,
+                                       G_STRUCT_OFFSET (CopyThemeDialogClass, cancelled),
+                                       NULL, NULL,
+                                       g_cclosure_marshal_VOID__VOID,
+                                       G_TYPE_NONE, 0);
+
+    signals[COMPLETE] = g_signal_new ("complete",
+                                      G_TYPE_FROM_CLASS (object_class),
+                                      G_SIGNAL_RUN_LAST,
+                                      G_STRUCT_OFFSET (CopyThemeDialogClass, complete),
+                                      NULL, NULL,
+                                      g_cclosure_marshal_VOID__VOID,
+                                      G_TYPE_NONE, 0);
+
+    parent_class = g_type_class_peek_parent (klass);
+}
+
+GtkWidget*
+copy_theme_dialog_new (GList *files)
+{
+    GtkWidget *dialog;
+    CopyThemeDialogPrivate *priv;
+
+    dialog = GTK_WIDGET (g_object_new (COPY_THEME_DIALOG_TYPE, NULL));
+    priv = COPY_THEME_DIALOG (dialog)->priv;
+    priv->index = 0;
+    priv->total_files = 0;
+    priv->all_files = NULL;
+    priv->all_basenames = NULL;
+
+    g_list_foreach (files, add_file_to_dialog, dialog);
+
+    priv->file = priv->all_files;
+    priv->basename = priv->all_basenames;
+
+    return dialog;
+}
+
+static gboolean
+copy_finished (CopyThemeDialog *dialog)
+{
+    return (g_cancellable_is_cancelled (dialog->priv->cancellable) ||
+            dialog->priv->file == NULL);
+}
+
+static void
+copy_theme_dialog_init (CopyThemeDialog *dlg)
+{
+    GtkWidget *vbox;
+    GtkWidget *hbox;
+    GtkWidget *progress_vbox;
+    GtkWidget *table;
+    GtkWidget *label;
+    char      *markup;
+    gchar     *theme_dir_path;
+
+    dlg->priv = G_TYPE_INSTANCE_GET_PRIVATE (dlg, COPY_THEME_DIALOG_TYPE,
+                CopyThemeDialogPrivate);
+
+    /* Find and, if needed, create the directory for storing themes */
+    theme_dir_path = g_build_filename (g_get_user_data_dir (),
+                                       "applications", "screensavers",
+                                       NULL);
+    dlg->priv->theme_dir = g_file_new_for_path (theme_dir_path);
+    g_mkdir_with_parents (theme_dir_path, S_IRWXU);
+    g_free (theme_dir_path);
+
+    /* For cancelling async I/O operations */
+    dlg->priv->cancellable = g_cancellable_new ();
+
+    /* GUI settings */
+    gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->vbox),
+                                    4);
+    gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dlg)->vbox), 4);
+
+    vbox = gtk_vbox_new (FALSE, 6);
+    gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
+    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), vbox, TRUE, TRUE, 0);
+
+    dlg->priv->status = gtk_label_new ("");
+    markup = g_strdup_printf ("<big><b>%s</b></big>", _("Copying files"));
+    gtk_label_set_markup (GTK_LABEL (dlg->priv->status), markup);
+    g_free (markup);
+
+    gtk_misc_set_alignment (GTK_MISC (dlg->priv->status), 0.0, 0.0);
+
+    gtk_box_pack_start (GTK_BOX (vbox), dlg->priv->status, FALSE, FALSE, 0);
+
+    hbox = gtk_hbox_new (FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+
+    table = gtk_table_new (2, 2, FALSE);
+    gtk_table_set_row_spacings (GTK_TABLE (table), 4);
+    gtk_table_set_col_spacings (GTK_TABLE (table), 4);
+
+    create_titled_label (GTK_TABLE (table), 0,
+                         &label,
+                         &dlg->priv->from);
+    gtk_label_set_text (GTK_LABEL (label), _("From:"));
+    create_titled_label (GTK_TABLE (table), 1,
+                         &label,
+                         &dlg->priv->to);
+    gtk_label_set_text (GTK_LABEL (label), _("To:"));
+
+    gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (table), FALSE, FALSE, 0);
+
+    progress_vbox = gtk_vbox_new (TRUE, 0);
+    gtk_box_pack_start (GTK_BOX (vbox), progress_vbox, FALSE, FALSE, 0);
+
+    dlg->priv->progress = gtk_progress_bar_new ();
+    gtk_box_pack_start (GTK_BOX (progress_vbox),
+                        dlg->priv->progress, FALSE, FALSE, 0);
+
+    dlg->priv->current = gtk_label_new ("");
+    gtk_box_pack_start (GTK_BOX (progress_vbox),
+                        dlg->priv->current, FALSE, FALSE, 0);
+    gtk_misc_set_alignment (GTK_MISC (dlg->priv->current), 0.0, 0.5);
+
+    gtk_dialog_add_button (GTK_DIALOG (dlg),
+                           GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+
+    gtk_window_set_title (GTK_WINDOW (dlg),
+                          _("Copying themes"));
+    gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE);
+    gtk_container_set_border_width (GTK_CONTAINER (dlg), 6);
+
+    gtk_widget_show_all (GTK_DIALOG (dlg)->vbox);
+}
+
+static void
+add_file_to_dialog (gpointer data, gpointer user_data)
+{
+    CopyThemeDialogPrivate *priv;
+    GFile *file;
+    gchar *basename = NULL, *raw_basename;
+
+    priv = COPY_THEME_DIALOG (user_data)->priv;
+    file = G_FILE (data);
+
+    raw_basename = g_file_get_basename (file);
+    if (g_str_has_suffix (raw_basename, ".desktop"))
+    {
+        /* FIXME: validate key file? */
+        basename = g_strndup (raw_basename,
+                              /* 8 = strlen (".desktop") */
+                              strlen (raw_basename) - 8);
+    }
+    g_free (raw_basename);
+
+    if (basename)
+    {
+        g_object_ref (file);
+        priv->all_files = g_slist_append (priv->all_files, file);
+        priv->all_basenames = g_slist_append (priv->all_basenames, basename);
+        priv->total_files++;
+    }
+
+    else
+    {
+        GtkWidget *dialog;
+        gchar *uri;
+
+        dialog = gtk_message_dialog_new (GTK_WINDOW (user_data),
+                                         GTK_DIALOG_MODAL,
+                                         GTK_MESSAGE_ERROR,
+                                         GTK_BUTTONS_OK,
+                                         _("Invalid screensaver theme"));
+        uri = g_file_get_uri (file);
+        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+                _("%s does not appear to be a valid screensaver theme."),
+                uri);
+        g_free (uri);
+        gtk_window_set_title (GTK_WINDOW (dialog), "");
+        gtk_window_set_icon_name (GTK_WINDOW (dialog), "preferences-desktop-screensaver");
+
+        gtk_dialog_run (GTK_DIALOG (dialog));
+        gtk_widget_destroy (dialog);
+    }
+}
+
+static void
+single_copy_complete (GObject *source_object, GAsyncResult *res,
+                      gpointer user_data)
+{
+    GError *error = NULL;
+    gboolean should_continue = FALSE;
+    CopyThemeDialog *dialog = COPY_THEME_DIALOG (user_data);
+
+    if (g_file_copy_finish (G_FILE (source_object), res, &error))
+    {
+        should_continue = TRUE;
+    }
+
+    else
+    {
+        /* If the file already exists, generate a new random name
+         * and try again.
+        **/
+        if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))
+        {
+            GFile *file, *destination;
+            gchar *basename, *full_basename;
+            g_error_free (error);
+
+            file = G_FILE (dialog->priv->file->data);
+            basename = (gchar *) (dialog->priv->basename->data);
+
+            g_return_if_fail (file != NULL);
+            g_return_if_fail (basename != NULL);
+
+            full_basename = g_strdup_printf ("%s-%u.desktop",
+                                             basename,
+                                             g_random_int ());
+            destination = g_file_get_child (dialog->priv->theme_dir,
+                                            full_basename);
+            g_free (full_basename);
+
+            g_file_copy_async (file, destination, G_FILE_COPY_NONE,
+                               G_PRIORITY_DEFAULT,
+                               dialog->priv->cancellable,
+                               NULL, NULL,
+                               single_copy_complete, dialog);
+        }
+
+        else
+        {
+            if (g_error_matches (error, G_IO_ERROR,
+                                 G_IO_ERROR_CANCELLED))
+            {
+                /* User has cancelled the theme copy */
+                g_signal_emit (G_OBJECT (dialog),
+                               signals[CANCELLED],
+                               0, NULL);
+            }
+
+            else
+            {
+                /* Some other error occurred, ignore and
+                 * try to copy remaining files
+                **/
+                should_continue = TRUE;
+            }
+
+            g_error_free (error);
+        }
+    }
+
+    /* Update informational widgets and, if needed, signal
+     * copy completion.
+    **/
+    if (should_continue)
+    {
+        dialog->priv->index++;
+        dialog->priv->file = dialog->priv->file->next;
+        dialog->priv->basename = dialog->priv->basename->next;
+        copy_theme_dialog_update_num_files (dialog);
+        copy_theme_dialog_copy_next (dialog);
+    }
+}
+
+/* Try to copy the theme file to the user's screensaver directory.
+ * If a file with the given name already exists, the error will be
+ * caught later and the copy re-attempted with a random value
+ * appended to the filename.
+**/
+static void
+copy_theme_dialog_copy_next (CopyThemeDialog *dialog)
+{
+    GFile *file, *destination;
+    gchar *basename, *full_basename;
+
+    if (copy_finished (dialog))
+    {
+        g_signal_emit (G_OBJECT (dialog), signals[COMPLETE],
+                       0, NULL);
+        return;
+    }
+
+    file = G_FILE (dialog->priv->file->data);
+    basename = (gchar *) (dialog->priv->basename->data);
+
+    g_return_if_fail (file != NULL);
+    g_return_if_fail (basename != NULL);
+
+    full_basename = g_strdup_printf ("%s.desktop", basename);
+    destination = g_file_get_child (dialog->priv->theme_dir, full_basename);
+    g_free (full_basename);
+
+    g_file_copy_async (file, destination, G_FILE_COPY_NONE,
+                       G_PRIORITY_DEFAULT, dialog->priv->cancellable,
+                       NULL, NULL, single_copy_complete, dialog);
+}
+
+static gboolean
+timeout_display_dialog (gpointer data)
+{
+    if (IS_COPY_THEME_DIALOG (data))
+    {
+        CopyThemeDialog *dialog = COPY_THEME_DIALOG (data);
+        if (!copy_finished (dialog))
+        {
+            gtk_widget_show (GTK_WIDGET (dialog));
+
+            g_signal_connect (dialog, "response",
+                              G_CALLBACK (copy_theme_dialog_response),
+                              dialog);
+        }
+    }
+    return FALSE;
+}
+
+void
+copy_theme_dialog_begin (CopyThemeDialog *dialog)
+{
+    gtk_widget_hide (GTK_WIDGET (dialog));
+
+    /* If the copy operation takes more than half a second to
+     * complete, display the dialog.
+    **/
+    g_timeout_add (500, timeout_display_dialog, dialog);
+
+    copy_theme_dialog_copy_next (dialog);
+}
+
+static void
+copy_theme_dialog_cancel (CopyThemeDialog *dialog)
+{
+    g_cancellable_cancel (dialog->priv->cancellable);
+}
+
+static void
+copy_theme_dialog_finalize (GObject *obj)
+{
+    CopyThemeDialog *dlg = COPY_THEME_DIALOG (obj);
+
+    g_object_unref (dlg->priv->theme_dir);
+    g_slist_foreach (dlg->priv->all_files, (GFunc) (g_object_unref), NULL);
+    g_slist_free (dlg->priv->all_files);
+    g_slist_foreach (dlg->priv->all_basenames, (GFunc) (g_free), NULL);
+    g_slist_free (dlg->priv->all_basenames);
+    g_object_unref (dlg->priv->cancellable);
+
+    if (parent_class->finalize)
+        parent_class->finalize (G_OBJECT (dlg));
+}
+
+static void
+copy_theme_dialog_update_num_files (CopyThemeDialog *dlg)
+{
+    gchar *str = g_strdup_printf (_("Copying file: %u of %u"),
+                                  dlg->priv->index, dlg->priv->total_files);
+    gtk_progress_bar_set_text (GTK_PROGRESS_BAR (dlg->priv->progress), str);
+    g_free (str);
+}
+
+static void
+copy_theme_dialog_response (GtkDialog *dialog, gint response_id)
+{
+    g_cancellable_cancel (COPY_THEME_DIALOG (dialog)->priv->cancellable);
+}
+
+/**
+ * eel_gtk_label_make_bold.
+ *
+ * Switches the font of label to a bold equivalent.
+ * @label: The label.
+ **/
+static void
+eel_gtk_label_make_bold (GtkLabel *label)
+{
+    PangoFontDescription *font_desc;
+
+    font_desc = pango_font_description_new ();
+
+    pango_font_description_set_weight (font_desc,
+                                       PANGO_WEIGHT_BOLD);
+
+    /* This will only affect the weight of the font, the rest is
+     * from the current state of the widget, which comes from the
+     * theme or user prefs, since the font desc only has the
+     * weight flag turned on.
+     */
+    gtk_widget_modify_font (GTK_WIDGET (label), font_desc);
+
+    pango_font_description_free (font_desc);
+}
+
+/* from caja */
+static void
+create_titled_label (GtkTable   *table,
+                     int         row,
+                     GtkWidget **title_widget,
+                     GtkWidget **label_text_widget)
+{
+    *title_widget = gtk_label_new ("");
+    eel_gtk_label_make_bold (GTK_LABEL (*title_widget));
+    gtk_misc_set_alignment (GTK_MISC (*title_widget), 1, 0);
+    gtk_table_attach (table, *title_widget,
+                      0, 1,
+                      row, row + 1,
+                      GTK_FILL, 0,
+                      0, 0);
+    gtk_widget_show (*title_widget);
+
+    *label_text_widget = gtk_label_new ("");
+    gtk_label_set_ellipsize (GTK_LABEL (*label_text_widget), PANGO_ELLIPSIZE_END);
+    gtk_table_attach (table, *label_text_widget,
+                      1, 2,
+                      row, row + 1,
+                      GTK_FILL | GTK_EXPAND, 0,
+                      0, 0);
+    gtk_widget_show (*label_text_widget);
+    gtk_misc_set_alignment (GTK_MISC (*label_text_widget), 0, 0);
+}
diff --git a/src/copy-theme-dialog.h b/src/copy-theme-dialog.h
new file mode 100644
index 0000000..6e72017
--- /dev/null
+++ b/src/copy-theme-dialog.h
@@ -0,0 +1,56 @@
+/* copy-theme-dialog.h
+ * Copyright (C) 2008 John Millikin <jmillikin at gmail.com>
+ *
+ * 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, 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+**/
+
+#ifndef __COPY_THEME_DIALOG_H__
+#define __COPY_THEME_DIALOG_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define COPY_THEME_DIALOG_TYPE copy_theme_dialog_get_type ()
+#define COPY_THEME_DIALOG(obj)          G_TYPE_CHECK_INSTANCE_CAST (obj, COPY_THEME_DIALOG_TYPE, CopyThemeDialog)
+#define COPY_THEME_DIALOG_CLASS(klass)  G_TYPE_CHECK_CLASS_CAST (klass, COPY_THEME_DIALOG_TYPE, CopyThemeDialogClass)
+#define IS_COPY_THEME_DIALOG(obj)       G_TYPE_CHECK_INSTANCE_TYPE (obj, COPY_THEME_DIALOG_TYPE)
+
+typedef struct _CopyThemeDialog CopyThemeDialog;
+typedef struct _CopyThemeDialogClass CopyThemeDialogClass;
+typedef struct _CopyThemeDialogPrivate CopyThemeDialogPrivate;
+
+struct _CopyThemeDialog
+{
+	GtkDialog dialog;
+	CopyThemeDialogPrivate *priv;
+};
+
+struct _CopyThemeDialogClass
+{
+	GtkDialogClass parent_class;
+
+	void (*cancelled) (CopyThemeDialog *dialog);
+	void (*complete) (CopyThemeDialog *dialog);
+};
+
+GType copy_theme_dialog_get_type (void);
+GtkWidget *copy_theme_dialog_new (GList *files);
+void copy_theme_dialog_begin (CopyThemeDialog *dialog);
+
+G_END_DECLS
+
+#endif /* __COPY_THEME_DIALOG_H__ */
diff --git a/src/copy-theme-dialog.h.orig b/src/copy-theme-dialog.h.orig
new file mode 100644
index 0000000..b1e66fd
--- /dev/null
+++ b/src/copy-theme-dialog.h.orig
@@ -0,0 +1,56 @@
+/* copy-theme-dialog.h
+ * Copyright (C) 2008 John Millikin <jmillikin at gmail.com>
+ *
+ * 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, 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+**/
+
+#ifndef __COPY_THEME_DIALOG_H__
+#define __COPY_THEME_DIALOG_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define COPY_THEME_DIALOG_TYPE copy_theme_dialog_get_type ()
+#define COPY_THEME_DIALOG(obj)          G_TYPE_CHECK_INSTANCE_CAST (obj, COPY_THEME_DIALOG_TYPE, CopyThemeDialog)
+#define COPY_THEME_DIALOG_CLASS(klass)  G_TYPE_CHECK_CLASS_CAST (klass, COPY_THEME_DIALOG_TYPE, CopyThemeDialogClass)
+#define IS_COPY_THEME_DIALOG(obj)       G_TYPE_CHECK_INSTANCE_TYPE (obj, COPY_THEME_DIALOG_TYPE)
+
+typedef struct _CopyThemeDialog CopyThemeDialog;
+typedef struct _CopyThemeDialogClass CopyThemeDialogClass;
+typedef struct _CopyThemeDialogPrivate CopyThemeDialogPrivate;
+
+struct _CopyThemeDialog
+{
+    GtkDialog dialog;
+    CopyThemeDialogPrivate *priv;
+};
+
+struct _CopyThemeDialogClass
+{
+    GtkDialogClass parent_class;
+
+    void (*cancelled) (CopyThemeDialog *dialog);
+    void (*complete) (CopyThemeDialog *dialog);
+};
+
+GType copy_theme_dialog_get_type (void);
+GtkWidget *copy_theme_dialog_new (GList *files);
+void copy_theme_dialog_begin (CopyThemeDialog *dialog);
+
+G_END_DECLS
+
+#endif /* __COPY_THEME_DIALOG_H__ */
diff --git a/src/debug-screensaver.sh b/src/debug-screensaver.sh
new file mode 100755
index 0000000..c8b1a93
--- /dev/null
+++ b/src/debug-screensaver.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+# This is probably linux only at the moment
+
+if [ -z "${DBUS_SESSION_BUS_ADDRESS}" ]; then
+    pid=`pgrep -u $USER "mate-session|x-session-manager"`
+    if [ "x$pid" != "x" ]; then
+        env_address=`(cat /proc/$pid/environ; echo) | tr "\000" "\n" | grep '^DBUS_SESSION_BUS_ADDRESS='`
+        env_display=`(cat /proc/$pid/environ; echo) | tr "\000" "\n" | grep '^DISPLAY='`
+        env_xdg_cookie=`(cat /proc/$pid/environ; echo) | tr "\000" "\n" | grep '^XDG_SESSION_COOKIE='`
+        env_path=`(cat /proc/$pid/environ; echo) | tr "\000" "\n" | grep '^PATH='`
+        if [ "x$env_address" != "x" ]; then
+            echo "Setting $env_address"
+            echo "Setting $env_display"
+            echo "Setting $env_path"
+            echo "Setting $env_xdg_cookie"
+            eval "export $env_address"
+            eval "export $env_display"
+            eval "export $env_path"
+            eval "export $env_xdg_cookie"
+        fi
+    fi
+fi
+
+if [ -z "${DBUS_SESSION_BUS_ADDRESS}" ]; then
+    echo "Could not determine DBUS_SESSION_BUS_ADDRESS"
+    exit 1
+fi
+
+export G_DEBUG=fatal_criticals
+
+# kill the existing daemon
+mate-screensaver-command --exit
+
+# run the daemon in the debugger
+#gdb --args mate-screensaver --no-daemon --debug --sync
+
+# or if that isn't helpful just get the debug output
+#mate-screensaver --no-daemon --debug > /tmp/gs-debug-log.txt 2>&1
+
+# or just run it with debugging on
+mate-screensaver --no-daemon --debug
diff --git a/src/gs-auth-helper.c b/src/gs-auth-helper.c
new file mode 100644
index 0000000..ea9aefe
--- /dev/null
+++ b/src/gs-auth-helper.c
@@ -0,0 +1,213 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * written by Olaf Kirch <okir at suse.de>
+ * xscreensaver, Copyright (c) 1993-2004 Jamie Zawinski <jwz at jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+/* The idea here is to be able to run mate-screensaver-dialog without any setuid bits.
+ * Password verification happens through an external program that you feed
+ * your password to on stdin.  The external command is invoked with a user
+ * name argument.
+ *
+ * The external helper does whatever authentication is necessary.  Currently,
+ * SuSE uses "unix2_chkpwd", which is a variation of "unix_chkpwd" from the
+ * PAM distribution.
+ *
+ * Normally, the password helper should just authenticate the calling user
+ * (i.e. based on the caller's real uid).  This is in order to prevent
+ * brute-forcing passwords in a shadow environment.  A less restrictive
+ * approach would be to allow verifying other passwords as well, but always
+ * with a 2 second delay or so.  (Not sure what SuSE's "unix2_chkpwd"
+ * currently does.)
+ *                         -- Olaf Kirch <okir at suse.de>, 16-Dec-2003
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <errno.h>
+#include <sys/wait.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+#include "gs-auth.h"
+#include "subprocs.h"
+
+static gboolean verbose_enabled = FALSE;
+
+GQuark
+gs_auth_error_quark (void)
+{
+	static GQuark quark = 0;
+	if (! quark)
+	{
+		quark = g_quark_from_static_string ("gs_auth_error");
+	}
+
+	return quark;
+}
+
+void
+gs_auth_set_verbose (gboolean enabled)
+{
+	verbose_enabled = enabled;
+}
+
+gboolean
+gs_auth_get_verbose (void)
+{
+	return verbose_enabled;
+}
+
+static gboolean
+ext_run (const char *user,
+         const char *typed_passwd,
+         gboolean    verbose)
+{
+	int   pfd[2], status;
+	pid_t pid;
+
+	if (pipe (pfd) < 0)
+	{
+		return 0;
+	}
+
+	if (verbose)
+	{
+		g_message ("ext_run (%s, %s)",
+		           PASSWD_HELPER_PROGRAM, user);
+	}
+
+	block_sigchld ();
+
+	if ((pid = fork ()) < 0)
+	{
+		close (pfd [0]);
+		close (pfd [1]);
+		return FALSE;
+	}
+
+	if (pid == 0)
+	{
+		close (pfd [1]);
+		if (pfd [0] != 0)
+		{
+			dup2 (pfd [0], 0);
+		}
+
+		/* Helper is invoked as helper service-name [user] */
+		execlp (PASSWD_HELPER_PROGRAM, PASSWD_HELPER_PROGRAM, "mate-screensaver", user, NULL);
+		if (verbose)
+		{
+			g_message ("%s: %s", PASSWD_HELPER_PROGRAM, g_strerror (errno));
+		}
+
+		exit (1);
+	}
+
+	close (pfd [0]);
+
+	/* Write out password to helper process */
+	if (!typed_passwd)
+	{
+		typed_passwd = "";
+	}
+	write (pfd [1], typed_passwd, strlen (typed_passwd));
+	close (pfd [1]);
+
+	while (waitpid (pid, &status, 0) < 0)
+	{
+		if (errno == EINTR)
+		{
+			continue;
+		}
+
+		if (verbose)
+		{
+			g_message ("ext_run: waitpid failed: %s\n",
+			           g_strerror (errno));
+		}
+
+		unblock_sigchld ();
+		return FALSE;
+	}
+
+	unblock_sigchld ();
+
+	if (! WIFEXITED (status) || WEXITSTATUS (status) != 0)
+	{
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+gboolean
+gs_auth_verify_user (const char       *username,
+                     const char       *display,
+                     GSAuthMessageFunc func,
+                     gpointer          data,
+                     GError          **error)
+{
+	gboolean       res = FALSE;
+	char          *password;
+
+	password = NULL;
+
+	/* ask for the password for user */
+	if (func != NULL)
+	{
+		func (GS_AUTH_MESSAGE_PROMPT_ECHO_OFF,
+		      "Password: ",
+		      &password,
+		      data);
+	}
+
+	if (password == NULL)
+	{
+		return FALSE;
+	}
+
+	res = ext_run (username, password, gs_auth_get_verbose ());
+
+	return res;
+}
+
+gboolean
+gs_auth_init (void)
+{
+	return TRUE;
+}
+
+gboolean
+gs_auth_priv_init (void)
+{
+	/* Make sure the passwd helper exists */
+	if (g_access (PASSWD_HELPER_PROGRAM, X_OK) < 0)
+	{
+		g_warning ("%s does not exist. "
+		           "password authentication via "
+		           "external helper will not work.",
+		           PASSWD_HELPER_PROGRAM);
+		return FALSE;
+	}
+
+	return TRUE;
+}
diff --git a/src/gs-auth-helper.c.orig b/src/gs-auth-helper.c.orig
new file mode 100644
index 0000000..946aef3
--- /dev/null
+++ b/src/gs-auth-helper.c.orig
@@ -0,0 +1,213 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * written by Olaf Kirch <okir at suse.de>
+ * xscreensaver, Copyright (c) 1993-2004 Jamie Zawinski <jwz at jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+/* The idea here is to be able to run mate-screensaver-dialog without any setuid bits.
+ * Password verification happens through an external program that you feed
+ * your password to on stdin.  The external command is invoked with a user
+ * name argument.
+ *
+ * The external helper does whatever authentication is necessary.  Currently,
+ * SuSE uses "unix2_chkpwd", which is a variation of "unix_chkpwd" from the
+ * PAM distribution.
+ *
+ * Normally, the password helper should just authenticate the calling user
+ * (i.e. based on the caller's real uid).  This is in order to prevent
+ * brute-forcing passwords in a shadow environment.  A less restrictive
+ * approach would be to allow verifying other passwords as well, but always
+ * with a 2 second delay or so.  (Not sure what SuSE's "unix2_chkpwd"
+ * currently does.)
+ *                         -- Olaf Kirch <okir at suse.de>, 16-Dec-2003
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <errno.h>
+#include <sys/wait.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+#include "gs-auth.h"
+#include "subprocs.h"
+
+static gboolean verbose_enabled = FALSE;
+
+GQuark
+gs_auth_error_quark (void)
+{
+    static GQuark quark = 0;
+    if (! quark)
+    {
+        quark = g_quark_from_static_string ("gs_auth_error");
+    }
+
+    return quark;
+}
+
+void
+gs_auth_set_verbose (gboolean enabled)
+{
+    verbose_enabled = enabled;
+}
+
+gboolean
+gs_auth_get_verbose (void)
+{
+    return verbose_enabled;
+}
+
+static gboolean
+ext_run (const char *user,
+         const char *typed_passwd,
+         gboolean    verbose)
+{
+    int   pfd[2], status;
+    pid_t pid;
+
+    if (pipe (pfd) < 0)
+    {
+        return 0;
+    }
+
+    if (verbose)
+    {
+        g_message ("ext_run (%s, %s)",
+                   PASSWD_HELPER_PROGRAM, user);
+    }
+
+    block_sigchld ();
+
+    if ((pid = fork ()) < 0)
+    {
+        close (pfd [0]);
+        close (pfd [1]);
+        return FALSE;
+    }
+
+    if (pid == 0)
+    {
+        close (pfd [1]);
+        if (pfd [0] != 0)
+        {
+            dup2 (pfd [0], 0);
+        }
+
+        /* Helper is invoked as helper service-name [user] */
+        execlp (PASSWD_HELPER_PROGRAM, PASSWD_HELPER_PROGRAM, "mate-screensaver", user, NULL);
+        if (verbose)
+        {
+            g_message ("%s: %s", PASSWD_HELPER_PROGRAM, g_strerror (errno));
+        }
+
+        exit (1);
+    }
+
+    close (pfd [0]);
+
+    /* Write out password to helper process */
+    if (!typed_passwd)
+    {
+        typed_passwd = "";
+    }
+    write (pfd [1], typed_passwd, strlen (typed_passwd));
+    close (pfd [1]);
+
+    while (waitpid (pid, &status, 0) < 0)
+    {
+        if (errno == EINTR)
+        {
+            continue;
+        }
+
+        if (verbose)
+        {
+            g_message ("ext_run: waitpid failed: %s\n",
+                       g_strerror (errno));
+        }
+
+        unblock_sigchld ();
+        return FALSE;
+    }
+
+    unblock_sigchld ();
+
+    if (! WIFEXITED (status) || WEXITSTATUS (status) != 0)
+    {
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+gboolean
+gs_auth_verify_user (const char       *username,
+                     const char       *display,
+                     GSAuthMessageFunc func,
+                     gpointer          data,
+                     GError          **error)
+{
+    gboolean       res = FALSE;
+    char          *password;
+
+    password = NULL;
+
+    /* ask for the password for user */
+    if (func != NULL)
+    {
+        func (GS_AUTH_MESSAGE_PROMPT_ECHO_OFF,
+              "Password: ",
+              &password,
+              data);
+    }
+
+    if (password == NULL)
+    {
+        return FALSE;
+    }
+
+    res = ext_run (username, password, gs_auth_get_verbose ());
+
+    return res;
+}
+
+gboolean
+gs_auth_init (void)
+{
+    return TRUE;
+}
+
+gboolean
+gs_auth_priv_init (void)
+{
+    /* Make sure the passwd helper exists */
+    if (g_access (PASSWD_HELPER_PROGRAM, X_OK) < 0)
+    {
+        g_warning ("%s does not exist. "
+                   "password authentication via "
+                   "external helper will not work.",
+                   PASSWD_HELPER_PROGRAM);
+        return FALSE;
+    }
+
+    return TRUE;
+}
diff --git a/src/gs-auth-pam.c b/src/gs-auth-pam.c
new file mode 100644
index 0000000..44c8aca
--- /dev/null
+++ b/src/gs-auth-pam.c
@@ -0,0 +1,843 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ * Copyright (C) 2006 Ray Strode <rstrode at redhat.com>
+ * Copyright (C) 2003 Bill Nottingham <notting at redhat.com>
+ * Copyright (c) 1993-2003 Jamie Zawinski <jwz at jwz.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+#include <security/pam_appl.h>
+#include <signal.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "gs-auth.h"
+
+#include "subprocs.h"
+
+/* Some time between Red Hat 4.2 and 7.0, the words were transposed
+   in the various PAM_x_CRED macro names.  Yay!
+*/
+#ifndef  PAM_REFRESH_CRED
+# define PAM_REFRESH_CRED PAM_CRED_REFRESH
+#endif
+
+#ifdef HAVE_PAM_FAIL_DELAY
+/* We handle delays ourself.*/
+/* Don't set this to 0 (Linux bug workaround.) */
+# define PAM_NO_DELAY(pamh) pam_fail_delay ((pamh), 1)
+#else  /* !HAVE_PAM_FAIL_DELAY */
+# define PAM_NO_DELAY(pamh) /* */
+#endif /* !HAVE_PAM_FAIL_DELAY */
+
+
+/* On SunOS 5.6, and on Linux with PAM 0.64, pam_strerror() takes two args.
+   On some other Linux systems with some other version of PAM (e.g.,
+   whichever Debian release comes with a 2.2.5 kernel) it takes one arg.
+   I can't tell which is more "recent" or "correct" behavior, so configure
+   figures out which is in use for us.  Shoot me!
+*/
+#ifdef PAM_STRERROR_TWO_ARGS
+# define PAM_STRERROR(pamh, status) pam_strerror((pamh), (status))
+#else  /* !PAM_STRERROR_TWO_ARGS */
+# define PAM_STRERROR(pamh, status) pam_strerror((status))
+#endif /* !PAM_STRERROR_TWO_ARGS */
+
+static gboolean      verbose_enabled = FALSE;
+static pam_handle_t *pam_handle = NULL;
+static gboolean      did_we_ask_for_password = FALSE;
+
+struct pam_closure
+{
+	const char       *username;
+	GSAuthMessageFunc cb_func;
+	gpointer          cb_data;
+	int               signal_fd;
+	int               result;
+};
+
+typedef struct
+{
+	struct pam_closure *closure;
+	GSAuthMessageStyle style;
+	const char        *msg;
+	char             **resp;
+	gboolean           should_interrupt_stack;
+} GsAuthMessageHandlerData;
+
+static GCond  *message_handled_condition;
+static GMutex *message_handler_mutex;
+
+GQuark
+gs_auth_error_quark (void)
+{
+	static GQuark quark = 0;
+	if (! quark)
+	{
+		quark = g_quark_from_static_string ("gs_auth_error");
+	}
+
+	return quark;
+}
+
+void
+gs_auth_set_verbose (gboolean enabled)
+{
+	verbose_enabled = enabled;
+}
+
+gboolean
+gs_auth_get_verbose (void)
+{
+	return verbose_enabled;
+}
+
+static GSAuthMessageStyle
+pam_style_to_gs_style (int pam_style)
+{
+	GSAuthMessageStyle style;
+
+	switch (pam_style)
+	{
+	case PAM_PROMPT_ECHO_ON:
+		style = GS_AUTH_MESSAGE_PROMPT_ECHO_ON;
+		break;
+	case PAM_PROMPT_ECHO_OFF:
+		style = GS_AUTH_MESSAGE_PROMPT_ECHO_OFF;
+		break;
+	case PAM_ERROR_MSG:
+		style = GS_AUTH_MESSAGE_ERROR_MSG;
+		break;
+	case PAM_TEXT_INFO:
+		style = GS_AUTH_MESSAGE_TEXT_INFO;
+		break;
+	default:
+		g_assert_not_reached ();
+		break;
+	}
+
+	return style;
+}
+
+static gboolean
+auth_message_handler (GSAuthMessageStyle style,
+                      const char        *msg,
+                      char             **response,
+                      gpointer           data)
+{
+	gboolean ret;
+
+	ret = TRUE;
+	*response = NULL;
+
+	switch (style)
+	{
+	case GS_AUTH_MESSAGE_PROMPT_ECHO_ON:
+		break;
+	case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF:
+		if (msg != NULL && g_str_has_prefix (msg, _("Password:")))
+		{
+			did_we_ask_for_password = TRUE;
+		}
+		break;
+	case GS_AUTH_MESSAGE_ERROR_MSG:
+		break;
+	case GS_AUTH_MESSAGE_TEXT_INFO:
+		break;
+	default:
+		g_assert_not_reached ();
+	}
+
+	return ret;
+}
+
+static gboolean
+gs_auth_queued_message_handler (GsAuthMessageHandlerData *data)
+{
+	gboolean res;
+
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("Waiting for lock");
+	}
+
+	g_mutex_lock (message_handler_mutex);
+
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("Waiting for response");
+	}
+
+	res = data->closure->cb_func (data->style,
+	                              data->msg,
+	                              data->resp,
+	                              data->closure->cb_data);
+
+	data->should_interrupt_stack = res == FALSE;
+
+	g_cond_signal (message_handled_condition);
+	g_mutex_unlock (message_handler_mutex);
+
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("Got response");
+	}
+
+	return FALSE;
+}
+
+static gboolean
+gs_auth_run_message_handler (struct pam_closure *c,
+                             GSAuthMessageStyle  style,
+                             const char         *msg,
+                             char              **resp)
+{
+	GsAuthMessageHandlerData data;
+
+	data.closure = c;
+	data.style = style;
+	data.msg = msg;
+	data.resp = resp;
+	data.should_interrupt_stack = TRUE;
+
+	g_mutex_lock (message_handler_mutex);
+
+	/* Queue the callback in the gui (the main) thread
+	 */
+	g_idle_add ((GSourceFunc) gs_auth_queued_message_handler, &data);
+
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("Waiting for respose to message style %d: '%s'", style, msg);
+	}
+
+	/* Wait for the response
+	 */
+	g_cond_wait (message_handled_condition,
+	             message_handler_mutex);
+	g_mutex_unlock (message_handler_mutex);
+
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("Got respose to message style %d: interrupt:%d", style, data.should_interrupt_stack);
+	}
+
+	return data.should_interrupt_stack == FALSE;
+}
+
+static int
+pam_conversation (int                        nmsgs,
+                  const struct pam_message **msg,
+                  struct pam_response      **resp,
+                  void                      *closure)
+{
+	int                  replies = 0;
+	struct pam_response *reply = NULL;
+	struct pam_closure  *c = (struct pam_closure *) closure;
+	gboolean             res;
+	int                  ret;
+
+	reply = (struct pam_response *) calloc (nmsgs, sizeof (*reply));
+
+	if (reply == NULL)
+	{
+		return PAM_CONV_ERR;
+	}
+
+	res = TRUE;
+	ret = PAM_SUCCESS;
+
+	for (replies = 0; replies < nmsgs && ret == PAM_SUCCESS; replies++)
+	{
+		GSAuthMessageStyle style;
+		char              *utf8_msg;
+
+		style = pam_style_to_gs_style (msg [replies]->msg_style);
+
+		utf8_msg = g_locale_to_utf8 (msg [replies]->msg,
+		                             -1,
+		                             NULL,
+		                             NULL,
+		                             NULL);
+
+		/* if we couldn't convert text from locale then
+		 * assume utf-8 and hope for the best */
+		if (utf8_msg == NULL)
+		{
+			char *p;
+			char *q;
+
+			utf8_msg = g_strdup (msg [replies]->msg);
+
+			p = utf8_msg;
+			while (*p != '\0' && !g_utf8_validate ((const char *)p, -1, (const char **)&q))
+			{
+				*q = '?';
+				p = q + 1;
+			}
+		}
+
+		/* handle message locally first */
+		auth_message_handler (style,
+		                      utf8_msg,
+		                      &reply [replies].resp,
+		                      NULL);
+
+		if (c->cb_func != NULL)
+		{
+			if (gs_auth_get_verbose ())
+			{
+				g_message ("Handling message style %d: '%s'", style, utf8_msg);
+			}
+
+			/* blocks until the gui responds
+			 */
+			res = gs_auth_run_message_handler (c,
+			                                   style,
+			                                   utf8_msg,
+			                                   &reply [replies].resp);
+
+			if (gs_auth_get_verbose ())
+			{
+				g_message ("Msg handler returned %d", res);
+			}
+
+			/* If the handler returns FALSE - interrupt the PAM stack */
+			if (res)
+			{
+				reply [replies].resp_retcode = PAM_SUCCESS;
+			}
+			else
+			{
+				int i;
+				for (i = 0; i <= replies; i++)
+				{
+					free (reply [i].resp);
+				}
+				free (reply);
+				reply = NULL;
+				ret = PAM_CONV_ERR;
+			}
+		}
+
+		g_free (utf8_msg);
+	}
+
+	*resp = reply;
+
+	return ret;
+}
+
+static gboolean
+close_pam_handle (int status)
+{
+
+	if (pam_handle != NULL)
+	{
+		int status2;
+
+		status2 = pam_end (pam_handle, status);
+		pam_handle = NULL;
+
+		if (gs_auth_get_verbose ())
+		{
+			g_message (" pam_end (...) ==> %d (%s)",
+			           status2,
+			           (status2 == PAM_SUCCESS ? "Success" : "Failure"));
+		}
+	}
+
+	if (message_handled_condition != NULL)
+	{
+		g_cond_free (message_handled_condition);
+		message_handled_condition = NULL;
+	}
+
+	if (message_handler_mutex != NULL)
+	{
+		g_mutex_free (message_handler_mutex);
+		message_handler_mutex = NULL;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+create_pam_handle (const char      *username,
+                   const char      *display,
+                   struct pam_conv *conv,
+                   int             *status_code)
+{
+	int         status;
+	const char *service = PAM_SERVICE_NAME;
+	char       *disp;
+	gboolean    ret;
+
+	if (pam_handle != NULL)
+	{
+		g_warning ("create_pam_handle: Stale pam handle around, cleaning up");
+		close_pam_handle (PAM_SUCCESS);
+	}
+
+	/* init things */
+	pam_handle = NULL;
+	status = -1;
+	disp = NULL;
+	ret = TRUE;
+
+	/* Initialize a PAM session for the user */
+	if ((status = pam_start (service, username, conv, &pam_handle)) != PAM_SUCCESS)
+	{
+		pam_handle = NULL;
+		g_warning (_("Unable to establish service %s: %s\n"),
+		           service,
+		           PAM_STRERROR (NULL, status));
+
+		if (status_code != NULL)
+		{
+			*status_code = status;
+		}
+
+		ret = FALSE;
+		goto out;
+	}
+
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("pam_start (\"%s\", \"%s\", ...) ==> %d (%s)",
+		           service,
+		           username,
+		           status,
+		           PAM_STRERROR (pam_handle, status));
+	}
+
+	disp = g_strdup (display);
+	if (disp == NULL)
+	{
+		disp = g_strdup (":0.0");
+	}
+
+	if ((status = pam_set_item (pam_handle, PAM_TTY, disp)) != PAM_SUCCESS)
+	{
+		g_warning (_("Can't set PAM_TTY=%s"), display);
+
+		if (status_code != NULL)
+		{
+			*status_code = status;
+		}
+
+		ret = FALSE;
+		goto out;
+	}
+
+	ret = TRUE;
+	message_handled_condition = g_cond_new ();
+	message_handler_mutex = g_mutex_new ();
+
+out:
+	if (status_code != NULL)
+	{
+		*status_code = status;
+	}
+
+	g_free (disp);
+
+	return ret;
+}
+
+static void
+set_pam_error (GError **error,
+               int      status)
+{
+	if (status == PAM_AUTH_ERR || status == PAM_USER_UNKNOWN)
+	{
+		char *msg;
+
+		if (did_we_ask_for_password)
+		{
+			msg = g_strdup (_("Incorrect password."));
+		}
+		else
+		{
+			msg = g_strdup (_("Authentication failed."));
+		}
+
+		g_set_error (error,
+		             GS_AUTH_ERROR,
+		             GS_AUTH_ERROR_AUTH_ERROR,
+		             "%s",
+		             msg);
+		g_free (msg);
+	}
+	else if (status == PAM_PERM_DENIED)
+	{
+		g_set_error (error,
+		             GS_AUTH_ERROR,
+		             GS_AUTH_ERROR_AUTH_DENIED,
+		             "%s",
+		             _("Not permitted to gain access at this time."));
+	}
+	else if (status == PAM_ACCT_EXPIRED)
+	{
+		g_set_error (error,
+		             GS_AUTH_ERROR,
+		             GS_AUTH_ERROR_AUTH_DENIED,
+		             "%s",
+		             _("No longer permitted to access the system."));
+	}
+
+}
+
+static int
+gs_auth_thread_func (int auth_operation_fd)
+{
+	static const int flags = 0;
+	int              status;
+	int              status2;
+	struct timespec  timeout;
+	sigset_t         set;
+	const void      *p;
+
+	timeout.tv_sec = 0;
+	timeout.tv_nsec = 1;
+
+	set = block_sigchld ();
+
+	status = pam_authenticate (pam_handle, flags);
+
+	sigtimedwait (&set, NULL, &timeout);
+	unblock_sigchld ();
+
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("   pam_authenticate (...) ==> %d (%s)",
+		           status,
+		           PAM_STRERROR (pam_handle, status));
+	}
+
+	if (status != PAM_SUCCESS)
+	{
+		goto done;
+	}
+
+	if ((status = pam_get_item (pam_handle, PAM_USER, &p)) != PAM_SUCCESS)
+	{
+		/* is not really an auth problem, but it will
+		   pretty much look as such, it shouldn't really
+		   happen */
+		goto done;
+	}
+
+	/* We don't actually care if the account modules fail or succeed,
+	 * but we need to run them anyway because certain pam modules
+	 * depend on side effects of the account modules getting run.
+	 */
+	status2 = pam_acct_mgmt (pam_handle, 0);
+
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("pam_acct_mgmt (...) ==> %d (%s)\n",
+		           status2,
+		           PAM_STRERROR (pam_handle, status2));
+	}
+
+	/* FIXME: should we handle these? */
+	switch (status2)
+	{
+	case PAM_SUCCESS:
+		break;
+	case PAM_NEW_AUTHTOK_REQD:
+		break;
+	case PAM_AUTHINFO_UNAVAIL:
+		break;
+	case PAM_ACCT_EXPIRED:
+		break;
+	case PAM_PERM_DENIED:
+		break;
+	default :
+		break;
+	}
+
+	/* Each time we successfully authenticate, refresh credentials,
+	   for Kerberos/AFS/DCE/etc.  If this fails, just ignore that
+	   failure and blunder along; it shouldn't matter.
+
+	   Note: this used to be PAM_REFRESH_CRED instead of
+	   PAM_REINITIALIZE_CRED, but Jason Heiss <jheiss at ee.washington.edu>
+	   says that the Linux PAM library ignores that one, and only refreshes
+	   credentials when using PAM_REINITIALIZE_CRED.
+	*/
+	status2 = pam_setcred (pam_handle, PAM_REINITIALIZE_CRED);
+	if (gs_auth_get_verbose ())
+	{
+		g_message ("   pam_setcred (...) ==> %d (%s)",
+		           status2,
+		           PAM_STRERROR (pam_handle, status2));
+	}
+
+done:
+	/* we're done, close the fd and wake up the main
+	 * loop
+	 */
+	close (auth_operation_fd);
+
+	return status;
+}
+
+static gboolean
+gs_auth_loop_quit (GIOChannel  *source,
+                   GIOCondition condition,
+                   gboolean    *thread_done)
+{
+	*thread_done = TRUE;
+	gtk_main_quit ();
+	return FALSE;
+}
+
+static gboolean
+gs_auth_pam_verify_user (pam_handle_t *handle,
+                         int          *status)
+{
+	GThread    *auth_thread;
+	GIOChannel *channel;
+	guint       watch_id;
+	int         auth_operation_fds[2];
+	int         auth_status;
+	gboolean    thread_done;
+
+	channel = NULL;
+	watch_id = 0;
+	auth_status = PAM_AUTH_ERR;
+
+	/* This pipe gives us a set of fds we can hook into
+	 * the event loop to be notified when our helper thread
+	 * is ready to be reaped.
+	 */
+	if (pipe (auth_operation_fds) < 0)
+	{
+		goto out;
+	}
+
+	if (fcntl (auth_operation_fds[0], F_SETFD, FD_CLOEXEC) < 0)
+	{
+		close (auth_operation_fds[0]);
+		close (auth_operation_fds[1]);
+		goto out;
+	}
+
+	if (fcntl (auth_operation_fds[1], F_SETFD, FD_CLOEXEC) < 0)
+	{
+		close (auth_operation_fds[0]);
+		close (auth_operation_fds[1]);
+		goto out;
+	}
+
+	channel = g_io_channel_unix_new (auth_operation_fds[0]);
+
+	/* we use a recursive main loop to process ui events
+	 * while we wait on a thread to handle the blocking parts
+	 * of pam authentication.
+	 */
+	thread_done = FALSE;
+	watch_id = g_io_add_watch (channel, G_IO_ERR | G_IO_HUP,
+	                           (GIOFunc) gs_auth_loop_quit, &thread_done);
+
+	auth_thread = g_thread_create ((GThreadFunc) gs_auth_thread_func,
+	                               GINT_TO_POINTER (auth_operation_fds[1]),
+	                               TRUE, NULL);
+
+	if (auth_thread == NULL)
+	{
+		goto out;
+	}
+
+	gtk_main ();
+
+	/* if the event loop was quit before the thread is done then we can't
+	 * reap the thread without blocking on it finishing.  The
+	 * thread may not ever finish though if the pam module is blocking.
+	 *
+	 * The only time the event loop is going to stop when the thread isn't
+	 * done, however, is if the dialog quits early (from, e.g., "cancel"),
+	 * so we can just exit.  An alternative option would be to switch to
+	 * using pthreads directly and calling pthread_cancel.
+	 */
+	if (!thread_done)
+	{
+		raise (SIGTERM);
+	}
+
+	auth_status = GPOINTER_TO_INT (g_thread_join (auth_thread));
+
+out:
+	if (watch_id != 0)
+	{
+		g_source_remove (watch_id);
+	}
+
+	if (channel != NULL)
+	{
+		g_io_channel_unref (channel);
+	}
+
+	if (status)
+	{
+		*status = auth_status;
+	}
+
+	return auth_status == PAM_SUCCESS;
+}
+
+gboolean
+gs_auth_verify_user (const char       *username,
+                     const char       *display,
+                     GSAuthMessageFunc func,
+                     gpointer          data,
+                     GError          **error)
+{
+	int                status = -1;
+	struct pam_conv    conv;
+	struct pam_closure c;
+	struct passwd     *pwent;
+
+	pwent = getpwnam (username);
+	if (pwent == NULL)
+	{
+		return FALSE;
+	}
+
+	c.username = username;
+	c.cb_func = func;
+	c.cb_data = data;
+
+	conv.conv = &pam_conversation;
+	conv.appdata_ptr = (void *) &c;
+
+	/* Initialize PAM. */
+	create_pam_handle (username, display, &conv, &status);
+	if (status != PAM_SUCCESS)
+	{
+		goto done;
+	}
+
+	pam_set_item (pam_handle, PAM_USER_PROMPT, _("Username:"));
+
+	PAM_NO_DELAY(pam_handle);
+
+	did_we_ask_for_password = FALSE;
+	if (! gs_auth_pam_verify_user (pam_handle, &status))
+	{
+		goto done;
+	}
+
+done:
+	if (status != PAM_SUCCESS)
+	{
+		set_pam_error (error, status);
+	}
+
+	close_pam_handle (status);
+
+	return (status == PAM_SUCCESS ? TRUE : FALSE);
+}
+
+gboolean
+gs_auth_init (void)
+{
+	return TRUE;
+}
+
+gboolean
+gs_auth_priv_init (void)
+{
+	/* We have nothing to do at init-time.
+	   However, we might as well do some error checking.
+	   If "/etc/pam.d" exists and is a directory, but "/etc/pam.d/xlock"
+	   does not exist, warn that PAM probably isn't going to work.
+
+	   This is a priv-init instead of a non-priv init in case the directory
+	   is unreadable or something (don't know if that actually happens.)
+	*/
+	const char   dir [] = "/etc/pam.d";
+	const char  file [] = "/etc/pam.d/" PAM_SERVICE_NAME;
+	const char file2 [] = "/etc/pam.conf";
+	struct stat st;
+
+	if (g_stat (dir, &st) == 0 && st.st_mode & S_IFDIR)
+	{
+		if (g_stat (file, &st) != 0)
+		{
+			g_warning ("%s does not exist.\n"
+			           "Authentication via PAM is unlikely to work.",
+			           file);
+		}
+	}
+	else if (g_stat (file2, &st) == 0)
+	{
+		FILE *f = g_fopen (file2, "r");
+		if (f)
+		{
+			gboolean ok = FALSE;
+			char buf[255];
+			while (fgets (buf, sizeof(buf), f))
+			{
+				if (strstr (buf, PAM_SERVICE_NAME))
+				{
+					ok = TRUE;
+					break;
+				}
+			}
+
+			fclose (f);
+			if (!ok)
+			{
+				g_warning ("%s does not list the `%s' service.\n"
+				           "Authentication via PAM is unlikely to work.",
+				           file2, PAM_SERVICE_NAME);
+			}
+		}
+		/* else warn about file2 existing but being unreadable? */
+	}
+	else
+	{
+		g_warning ("Neither %s nor %s exist.\n"
+		           "Authentication via PAM is unlikely to work.",
+		           file2, file);
+	}
+
+	/* Return true anyway, just in case. */
+	return TRUE;
+}
diff --git a/src/gs-auth-pam.c.orig b/src/gs-auth-pam.c.orig
new file mode 100644
index 0000000..88852d9
--- /dev/null
+++ b/src/gs-auth-pam.c.orig
@@ -0,0 +1,843 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ * Copyright (C) 2006 Ray Strode <rstrode at redhat.com>
+ * Copyright (C) 2003 Bill Nottingham <notting at redhat.com>
+ * Copyright (c) 1993-2003 Jamie Zawinski <jwz at jwz.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+#include <security/pam_appl.h>
+#include <signal.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "gs-auth.h"
+
+#include "subprocs.h"
+
+/* Some time between Red Hat 4.2 and 7.0, the words were transposed
+   in the various PAM_x_CRED macro names.  Yay!
+*/
+#ifndef  PAM_REFRESH_CRED
+# define PAM_REFRESH_CRED PAM_CRED_REFRESH
+#endif
+
+#ifdef HAVE_PAM_FAIL_DELAY
+/* We handle delays ourself.*/
+/* Don't set this to 0 (Linux bug workaround.) */
+# define PAM_NO_DELAY(pamh) pam_fail_delay ((pamh), 1)
+#else  /* !HAVE_PAM_FAIL_DELAY */
+# define PAM_NO_DELAY(pamh) /* */
+#endif /* !HAVE_PAM_FAIL_DELAY */
+
+
+/* On SunOS 5.6, and on Linux with PAM 0.64, pam_strerror() takes two args.
+   On some other Linux systems with some other version of PAM (e.g.,
+   whichever Debian release comes with a 2.2.5 kernel) it takes one arg.
+   I can't tell which is more "recent" or "correct" behavior, so configure
+   figures out which is in use for us.  Shoot me!
+*/
+#ifdef PAM_STRERROR_TWO_ARGS
+# define PAM_STRERROR(pamh, status) pam_strerror((pamh), (status))
+#else  /* !PAM_STRERROR_TWO_ARGS */
+# define PAM_STRERROR(pamh, status) pam_strerror((status))
+#endif /* !PAM_STRERROR_TWO_ARGS */
+
+static gboolean      verbose_enabled = FALSE;
+static pam_handle_t *pam_handle = NULL;
+static gboolean      did_we_ask_for_password = FALSE;
+
+struct pam_closure
+{
+    const char       *username;
+    GSAuthMessageFunc cb_func;
+    gpointer          cb_data;
+    int               signal_fd;
+    int               result;
+};
+
+typedef struct
+{
+    struct pam_closure *closure;
+    GSAuthMessageStyle style;
+    const char        *msg;
+    char             **resp;
+    gboolean           should_interrupt_stack;
+} GsAuthMessageHandlerData;
+
+static GCond  *message_handled_condition;
+static GMutex *message_handler_mutex;
+
+GQuark
+gs_auth_error_quark (void)
+{
+    static GQuark quark = 0;
+    if (! quark)
+    {
+        quark = g_quark_from_static_string ("gs_auth_error");
+    }
+
+    return quark;
+}
+
+void
+gs_auth_set_verbose (gboolean enabled)
+{
+    verbose_enabled = enabled;
+}
+
+gboolean
+gs_auth_get_verbose (void)
+{
+    return verbose_enabled;
+}
+
+static GSAuthMessageStyle
+pam_style_to_gs_style (int pam_style)
+{
+    GSAuthMessageStyle style;
+
+    switch (pam_style)
+    {
+    case PAM_PROMPT_ECHO_ON:
+        style = GS_AUTH_MESSAGE_PROMPT_ECHO_ON;
+        break;
+    case PAM_PROMPT_ECHO_OFF:
+        style = GS_AUTH_MESSAGE_PROMPT_ECHO_OFF;
+        break;
+    case PAM_ERROR_MSG:
+        style = GS_AUTH_MESSAGE_ERROR_MSG;
+        break;
+    case PAM_TEXT_INFO:
+        style = GS_AUTH_MESSAGE_TEXT_INFO;
+        break;
+    default:
+        g_assert_not_reached ();
+        break;
+    }
+
+    return style;
+}
+
+static gboolean
+auth_message_handler (GSAuthMessageStyle style,
+                      const char        *msg,
+                      char             **response,
+                      gpointer           data)
+{
+    gboolean ret;
+
+    ret = TRUE;
+    *response = NULL;
+
+    switch (style)
+    {
+    case GS_AUTH_MESSAGE_PROMPT_ECHO_ON:
+        break;
+    case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF:
+        if (msg != NULL && g_str_has_prefix (msg, _("Password:")))
+        {
+            did_we_ask_for_password = TRUE;
+        }
+        break;
+    case GS_AUTH_MESSAGE_ERROR_MSG:
+        break;
+    case GS_AUTH_MESSAGE_TEXT_INFO:
+        break;
+    default:
+        g_assert_not_reached ();
+    }
+
+    return ret;
+}
+
+static gboolean
+gs_auth_queued_message_handler (GsAuthMessageHandlerData *data)
+{
+    gboolean res;
+
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("Waiting for lock");
+    }
+
+    g_mutex_lock (message_handler_mutex);
+
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("Waiting for response");
+    }
+
+    res = data->closure->cb_func (data->style,
+                                  data->msg,
+                                  data->resp,
+                                  data->closure->cb_data);
+
+    data->should_interrupt_stack = res == FALSE;
+
+    g_cond_signal (message_handled_condition);
+    g_mutex_unlock (message_handler_mutex);
+
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("Got response");
+    }
+
+    return FALSE;
+}
+
+static gboolean
+gs_auth_run_message_handler (struct pam_closure *c,
+                             GSAuthMessageStyle  style,
+                             const char         *msg,
+                             char              **resp)
+{
+    GsAuthMessageHandlerData data;
+
+    data.closure = c;
+    data.style = style;
+    data.msg = msg;
+    data.resp = resp;
+    data.should_interrupt_stack = TRUE;
+
+    g_mutex_lock (message_handler_mutex);
+
+    /* Queue the callback in the gui (the main) thread
+     */
+    g_idle_add ((GSourceFunc) gs_auth_queued_message_handler, &data);
+
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("Waiting for respose to message style %d: '%s'", style, msg);
+    }
+
+    /* Wait for the response
+     */
+    g_cond_wait (message_handled_condition,
+                 message_handler_mutex);
+    g_mutex_unlock (message_handler_mutex);
+
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("Got respose to message style %d: interrupt:%d", style, data.should_interrupt_stack);
+    }
+
+    return data.should_interrupt_stack == FALSE;
+}
+
+static int
+pam_conversation (int                        nmsgs,
+                  const struct pam_message **msg,
+                  struct pam_response      **resp,
+                  void                      *closure)
+{
+    int                  replies = 0;
+    struct pam_response *reply = NULL;
+    struct pam_closure  *c = (struct pam_closure *) closure;
+    gboolean             res;
+    int                  ret;
+
+    reply = (struct pam_response *) calloc (nmsgs, sizeof (*reply));
+
+    if (reply == NULL)
+    {
+        return PAM_CONV_ERR;
+    }
+
+    res = TRUE;
+    ret = PAM_SUCCESS;
+
+    for (replies = 0; replies < nmsgs && ret == PAM_SUCCESS; replies++)
+    {
+        GSAuthMessageStyle style;
+        char              *utf8_msg;
+
+        style = pam_style_to_gs_style (msg [replies]->msg_style);
+
+        utf8_msg = g_locale_to_utf8 (msg [replies]->msg,
+                                     -1,
+                                     NULL,
+                                     NULL,
+                                     NULL);
+
+        /* if we couldn't convert text from locale then
+         * assume utf-8 and hope for the best */
+        if (utf8_msg == NULL)
+        {
+            char *p;
+            char *q;
+
+            utf8_msg = g_strdup (msg [replies]->msg);
+
+            p = utf8_msg;
+            while (*p != '\0' && !g_utf8_validate ((const char *)p, -1, (const char **)&q))
+            {
+                *q = '?';
+                p = q + 1;
+            }
+        }
+
+        /* handle message locally first */
+        auth_message_handler (style,
+                              utf8_msg,
+                              &reply [replies].resp,
+                              NULL);
+
+        if (c->cb_func != NULL)
+        {
+            if (gs_auth_get_verbose ())
+            {
+                g_message ("Handling message style %d: '%s'", style, utf8_msg);
+            }
+
+            /* blocks until the gui responds
+             */
+            res = gs_auth_run_message_handler (c,
+                                               style,
+                                               utf8_msg,
+                                               &reply [replies].resp);
+
+            if (gs_auth_get_verbose ())
+            {
+                g_message ("Msg handler returned %d", res);
+            }
+
+            /* If the handler returns FALSE - interrupt the PAM stack */
+            if (res)
+            {
+                reply [replies].resp_retcode = PAM_SUCCESS;
+            }
+            else
+            {
+                int i;
+                for (i = 0; i <= replies; i++)
+                {
+                    free (reply [i].resp);
+                }
+                free (reply);
+                reply = NULL;
+                ret = PAM_CONV_ERR;
+            }
+        }
+
+        g_free (utf8_msg);
+    }
+
+    *resp = reply;
+
+    return ret;
+}
+
+static gboolean
+close_pam_handle (int status)
+{
+
+    if (pam_handle != NULL)
+    {
+        int status2;
+
+        status2 = pam_end (pam_handle, status);
+        pam_handle = NULL;
+
+        if (gs_auth_get_verbose ())
+        {
+            g_message (" pam_end (...) ==> %d (%s)",
+                       status2,
+                       (status2 == PAM_SUCCESS ? "Success" : "Failure"));
+        }
+    }
+
+    if (message_handled_condition != NULL)
+    {
+        g_cond_free (message_handled_condition);
+        message_handled_condition = NULL;
+    }
+
+    if (message_handler_mutex != NULL)
+    {
+        g_mutex_free (message_handler_mutex);
+        message_handler_mutex = NULL;
+    }
+
+    return TRUE;
+}
+
+static gboolean
+create_pam_handle (const char      *username,
+                   const char      *display,
+                   struct pam_conv *conv,
+                   int             *status_code)
+{
+    int         status;
+    const char *service = PAM_SERVICE_NAME;
+    char       *disp;
+    gboolean    ret;
+
+    if (pam_handle != NULL)
+    {
+        g_warning ("create_pam_handle: Stale pam handle around, cleaning up");
+        close_pam_handle (PAM_SUCCESS);
+    }
+
+    /* init things */
+    pam_handle = NULL;
+    status = -1;
+    disp = NULL;
+    ret = TRUE;
+
+    /* Initialize a PAM session for the user */
+    if ((status = pam_start (service, username, conv, &pam_handle)) != PAM_SUCCESS)
+    {
+        pam_handle = NULL;
+        g_warning (_("Unable to establish service %s: %s\n"),
+                   service,
+                   PAM_STRERROR (NULL, status));
+
+        if (status_code != NULL)
+        {
+            *status_code = status;
+        }
+
+        ret = FALSE;
+        goto out;
+    }
+
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("pam_start (\"%s\", \"%s\", ...) ==> %d (%s)",
+                   service,
+                   username,
+                   status,
+                   PAM_STRERROR (pam_handle, status));
+    }
+
+    disp = g_strdup (display);
+    if (disp == NULL)
+    {
+        disp = g_strdup (":0.0");
+    }
+
+    if ((status = pam_set_item (pam_handle, PAM_TTY, disp)) != PAM_SUCCESS)
+    {
+        g_warning (_("Can't set PAM_TTY=%s"), display);
+
+        if (status_code != NULL)
+        {
+            *status_code = status;
+        }
+
+        ret = FALSE;
+        goto out;
+    }
+
+    ret = TRUE;
+    message_handled_condition = g_cond_new ();
+    message_handler_mutex = g_mutex_new ();
+
+out:
+    if (status_code != NULL)
+    {
+        *status_code = status;
+    }
+
+    g_free (disp);
+
+    return ret;
+}
+
+static void
+set_pam_error (GError **error,
+               int      status)
+{
+    if (status == PAM_AUTH_ERR || status == PAM_USER_UNKNOWN)
+    {
+        char *msg;
+
+        if (did_we_ask_for_password)
+        {
+            msg = g_strdup (_("Incorrect password."));
+        }
+        else
+        {
+            msg = g_strdup (_("Authentication failed."));
+        }
+
+        g_set_error (error,
+                     GS_AUTH_ERROR,
+                     GS_AUTH_ERROR_AUTH_ERROR,
+                     "%s",
+                     msg);
+        g_free (msg);
+    }
+    else if (status == PAM_PERM_DENIED)
+    {
+        g_set_error (error,
+                     GS_AUTH_ERROR,
+                     GS_AUTH_ERROR_AUTH_DENIED,
+                     "%s",
+                     _("Not permitted to gain access at this time."));
+    }
+    else if (status == PAM_ACCT_EXPIRED)
+    {
+        g_set_error (error,
+                     GS_AUTH_ERROR,
+                     GS_AUTH_ERROR_AUTH_DENIED,
+                     "%s",
+                     _("No longer permitted to access the system."));
+    }
+
+}
+
+static int
+gs_auth_thread_func (int auth_operation_fd)
+{
+    static const int flags = 0;
+    int              status;
+    int              status2;
+    struct timespec  timeout;
+    sigset_t         set;
+    const void      *p;
+
+    timeout.tv_sec = 0;
+    timeout.tv_nsec = 1;
+
+    set = block_sigchld ();
+
+    status = pam_authenticate (pam_handle, flags);
+
+    sigtimedwait (&set, NULL, &timeout);
+    unblock_sigchld ();
+
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("   pam_authenticate (...) ==> %d (%s)",
+                   status,
+                   PAM_STRERROR (pam_handle, status));
+    }
+
+    if (status != PAM_SUCCESS)
+    {
+        goto done;
+    }
+
+    if ((status = pam_get_item (pam_handle, PAM_USER, &p)) != PAM_SUCCESS)
+    {
+        /* is not really an auth problem, but it will
+           pretty much look as such, it shouldn't really
+           happen */
+        goto done;
+    }
+
+    /* We don't actually care if the account modules fail or succeed,
+     * but we need to run them anyway because certain pam modules
+     * depend on side effects of the account modules getting run.
+     */
+    status2 = pam_acct_mgmt (pam_handle, 0);
+
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("pam_acct_mgmt (...) ==> %d (%s)\n",
+                   status2,
+                   PAM_STRERROR (pam_handle, status2));
+    }
+
+    /* FIXME: should we handle these? */
+    switch (status2)
+    {
+    case PAM_SUCCESS:
+        break;
+    case PAM_NEW_AUTHTOK_REQD:
+        break;
+    case PAM_AUTHINFO_UNAVAIL:
+        break;
+    case PAM_ACCT_EXPIRED:
+        break;
+    case PAM_PERM_DENIED:
+        break;
+    default :
+        break;
+    }
+
+    /* Each time we successfully authenticate, refresh credentials,
+       for Kerberos/AFS/DCE/etc.  If this fails, just ignore that
+       failure and blunder along; it shouldn't matter.
+
+       Note: this used to be PAM_REFRESH_CRED instead of
+       PAM_REINITIALIZE_CRED, but Jason Heiss <jheiss at ee.washington.edu>
+       says that the Linux PAM library ignores that one, and only refreshes
+       credentials when using PAM_REINITIALIZE_CRED.
+    */
+    status2 = pam_setcred (pam_handle, PAM_REINITIALIZE_CRED);
+    if (gs_auth_get_verbose ())
+    {
+        g_message ("   pam_setcred (...) ==> %d (%s)",
+                   status2,
+                   PAM_STRERROR (pam_handle, status2));
+    }
+
+done:
+    /* we're done, close the fd and wake up the main
+     * loop
+     */
+    close (auth_operation_fd);
+
+    return status;
+}
+
+static gboolean
+gs_auth_loop_quit (GIOChannel  *source,
+                   GIOCondition condition,
+                   gboolean    *thread_done)
+{
+    *thread_done = TRUE;
+    gtk_main_quit ();
+    return FALSE;
+}
+
+static gboolean
+gs_auth_pam_verify_user (pam_handle_t *handle,
+                         int          *status)
+{
+    GThread    *auth_thread;
+    GIOChannel *channel;
+    guint       watch_id;
+    int         auth_operation_fds[2];
+    int         auth_status;
+    gboolean    thread_done;
+
+    channel = NULL;
+    watch_id = 0;
+    auth_status = PAM_AUTH_ERR;
+
+    /* This pipe gives us a set of fds we can hook into
+     * the event loop to be notified when our helper thread
+     * is ready to be reaped.
+     */
+    if (pipe (auth_operation_fds) < 0)
+    {
+        goto out;
+    }
+
+    if (fcntl (auth_operation_fds[0], F_SETFD, FD_CLOEXEC) < 0)
+    {
+        close (auth_operation_fds[0]);
+        close (auth_operation_fds[1]);
+        goto out;
+    }
+
+    if (fcntl (auth_operation_fds[1], F_SETFD, FD_CLOEXEC) < 0)
+    {
+        close (auth_operation_fds[0]);
+        close (auth_operation_fds[1]);
+        goto out;
+    }
+
+    channel = g_io_channel_unix_new (auth_operation_fds[0]);
+
+    /* we use a recursive main loop to process ui events
+     * while we wait on a thread to handle the blocking parts
+     * of pam authentication.
+     */
+    thread_done = FALSE;
+    watch_id = g_io_add_watch (channel, G_IO_ERR | G_IO_HUP,
+                               (GIOFunc) gs_auth_loop_quit, &thread_done);
+
+    auth_thread = g_thread_create ((GThreadFunc) gs_auth_thread_func,
+                                   GINT_TO_POINTER (auth_operation_fds[1]),
+                                   TRUE, NULL);
+
+    if (auth_thread == NULL)
+    {
+        goto out;
+    }
+
+    gtk_main ();
+
+    /* if the event loop was quit before the thread is done then we can't
+     * reap the thread without blocking on it finishing.  The
+     * thread may not ever finish though if the pam module is blocking.
+     *
+     * The only time the event loop is going to stop when the thread isn't
+     * done, however, is if the dialog quits early (from, e.g., "cancel"),
+     * so we can just exit.  An alternative option would be to switch to
+     * using pthreads directly and calling pthread_cancel.
+     */
+    if (!thread_done)
+    {
+        raise (SIGTERM);
+    }
+
+    auth_status = GPOINTER_TO_INT (g_thread_join (auth_thread));
+
+out:
+    if (watch_id != 0)
+    {
+        g_source_remove (watch_id);
+    }
+
+    if (channel != NULL)
+    {
+        g_io_channel_unref (channel);
+    }
+
+    if (status)
+    {
+        *status = auth_status;
+    }
+
+    return auth_status == PAM_SUCCESS;
+}
+
+gboolean
+gs_auth_verify_user (const char       *username,
+                     const char       *display,
+                     GSAuthMessageFunc func,
+                     gpointer          data,
+                     GError          **error)
+{
+    int                status = -1;
+    struct pam_conv    conv;
+    struct pam_closure c;
+    struct passwd     *pwent;
+
+    pwent = getpwnam (username);
+    if (pwent == NULL)
+    {
+        return FALSE;
+    }
+
+    c.username = username;
+    c.cb_func = func;
+    c.cb_data = data;
+
+    conv.conv = &pam_conversation;
+    conv.appdata_ptr = (void *) &c;
+
+    /* Initialize PAM. */
+    create_pam_handle (username, display, &conv, &status);
+    if (status != PAM_SUCCESS)
+    {
+        goto done;
+    }
+
+    pam_set_item (pam_handle, PAM_USER_PROMPT, _("Username:"));
+
+    PAM_NO_DELAY(pam_handle);
+
+    did_we_ask_for_password = FALSE;
+    if (! gs_auth_pam_verify_user (pam_handle, &status))
+    {
+        goto done;
+    }
+
+done:
+    if (status != PAM_SUCCESS)
+    {
+        set_pam_error (error, status);
+    }
+
+    close_pam_handle (status);
+
+    return (status == PAM_SUCCESS ? TRUE : FALSE);
+}
+
+gboolean
+gs_auth_init (void)
+{
+    return TRUE;
+}
+
+gboolean
+gs_auth_priv_init (void)
+{
+    /* We have nothing to do at init-time.
+       However, we might as well do some error checking.
+       If "/etc/pam.d" exists and is a directory, but "/etc/pam.d/xlock"
+       does not exist, warn that PAM probably isn't going to work.
+
+       This is a priv-init instead of a non-priv init in case the directory
+       is unreadable or something (don't know if that actually happens.)
+    */
+    const char   dir [] = "/etc/pam.d";
+    const char  file [] = "/etc/pam.d/" PAM_SERVICE_NAME;
+    const char file2 [] = "/etc/pam.conf";
+    struct stat st;
+
+    if (g_stat (dir, &st) == 0 && st.st_mode & S_IFDIR)
+    {
+        if (g_stat (file, &st) != 0)
+        {
+            g_warning ("%s does not exist.\n"
+                       "Authentication via PAM is unlikely to work.",
+                       file);
+        }
+    }
+    else if (g_stat (file2, &st) == 0)
+    {
+        FILE *f = g_fopen (file2, "r");
+        if (f)
+        {
+            gboolean ok = FALSE;
+            char buf[255];
+            while (fgets (buf, sizeof(buf), f))
+            {
+                if (strstr (buf, PAM_SERVICE_NAME))
+                {
+                    ok = TRUE;
+                    break;
+                }
+            }
+
+            fclose (f);
+            if (!ok)
+            {
+                g_warning ("%s does not list the `%s' service.\n"
+                           "Authentication via PAM is unlikely to work.",
+                           file2, PAM_SERVICE_NAME);
+            }
+        }
+        /* else warn about file2 existing but being unreadable? */
+    }
+    else
+    {
+        g_warning ("Neither %s nor %s exist.\n"
+                   "Authentication via PAM is unlikely to work.",
+                   file2, file);
+    }
+
+    /* Return true anyway, just in case. */
+    return TRUE;
+}
diff --git a/src/gs-auth-pwent.c b/src/gs-auth-pwent.c
new file mode 100644
index 0000000..3fe1b22
--- /dev/null
+++ b/src/gs-auth-pwent.c
@@ -0,0 +1,291 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (c) 1993-1998 Jamie Zawinski <jwz at jwz.org>
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifdef HAVE_CRYPT_H
+# include <crypt.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+
+#ifdef __bsdi__
+# include <sys/param.h>
+# if _BSDI_VERSION >= 199608
+#  define BSD_AUTH
+# endif
+#endif /* __bsdi__ */
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#if defined(HAVE_SHADOW_PASSWD)	      /* passwds live in /etc/shadow */
+
+#   include <shadow.h>
+#   define PWTYPE   struct spwd *
+#   define PWPSLOT  sp_pwdp
+#   define GETPW    getspnam
+
+#elif defined(HAVE_ENHANCED_PASSWD)      /* passwds live in /tcb/files/auth/ */
+/* M.Matsumoto <matsu at yao.sharp.co.jp> */
+#   include <sys/security.h>
+#   include <prot.h>
+
+#   define PWTYPE   struct pr_passwd *
+#   define PWPSLOT  ufld.fd_encrypt
+#   define GETPW    getprpwnam
+
+#elif defined(HAVE_ADJUNCT_PASSWD)
+
+#   include <sys/label.h>
+#   include <sys/audit.h>
+#   include <pwdadj.h>
+
+#   define PWTYPE   struct passwd_adjunct *
+#   define PWPSLOT  pwa_passwd
+#   define GETPW    getpwanam
+
+#elif defined(HAVE_HPUX_PASSWD)
+
+#   include <hpsecurity.h>
+#   include <prot.h>
+
+#   define PWTYPE   struct s_passwd *
+#   define PWPSLOT  pw_passwd
+#   define GETPW    getspwnam
+
+#   define HAVE_BIGCRYPT
+
+#endif
+
+#include "gs-auth.h"
+
+static gboolean verbose_enabled = FALSE;
+
+static char *encrypted_user_passwd = NULL;
+
+GQuark
+gs_auth_error_quark (void)
+{
+	static GQuark quark = 0;
+	if (! quark)
+	{
+		quark = g_quark_from_static_string ("gs_auth_error");
+	}
+
+	return quark;
+}
+
+void
+gs_auth_set_verbose (gboolean enabled)
+{
+	verbose_enabled = enabled;
+}
+
+gboolean
+gs_auth_get_verbose (void)
+{
+	return verbose_enabled;
+}
+
+static gboolean
+passwd_known (const char *pw)
+{
+	return (pw &&
+	        pw[0] != '*' &&	/* This would be sensible...         */
+	        strlen (pw) > 4);	/* ...but this is what Solaris does. */
+}
+
+static char *
+get_encrypted_passwd (const char *user)
+{
+	char *result = NULL;
+
+#ifdef PWTYPE
+	if (user && *user && !result)
+	{
+		/* First check the shadow passwords. */
+		PWTYPE p = GETPW ((char *) user);
+		if (p && passwd_known (p->PWPSLOT))
+		{
+			result = g_strdup (p->PWPSLOT);
+		}
+	}
+#endif /* PWTYPE */
+
+	if (user && *user && !result)
+	{
+		/* Check non-shadow passwords too. */
+		struct passwd *p = getpwnam (user);
+		if (p && passwd_known (p->pw_passwd))
+		{
+			result = g_strdup (p->pw_passwd);
+		}
+	}
+
+	/* The manual for passwd(4) on HPUX 10.10 says:
+
+	Password aging is put in effect for a particular user if his
+	encrypted password in the password file is followed by a comma and
+	a nonnull string of characters from the above alphabet.  This
+	string defines the "age" needed to implement password aging.
+
+	So this means that passwd->pw_passwd isn't simply a string of cyphertext,
+	it might have trailing junk.  So, if there is a comma in the string, and
+	that comma is beyond position 13, terminate the string before the comma.
+	*/
+	if (result && strlen (result) > 13)
+	{
+		char *s = strchr (result + 13, ',');
+		if (s)
+		{
+			*s = 0;
+		}
+	}
+
+#ifndef HAVE_PAM
+	/* We only issue this warning if not compiled with support for PAM.
+	   If we're using PAM, it's not unheard of that normal pwent passwords
+	   would be unavailable. */
+
+	if (!result)
+	{
+		g_warning ("Couldn't get password of \"%s\"",
+		           (user ? user : "(null)"));
+	}
+
+#endif /* !HAVE_PAM */
+
+	return result;
+}
+
+/* This has to be called before we've changed our effective user ID,
+   because it might need privileges to get at the encrypted passwords.
+   Returns false if we weren't able to get any passwords, and therefore,
+   locking isn't possible.  (It will also have written to stderr.)
+*/
+
+gboolean
+gs_auth_priv_init (void)
+{
+	const char *u;
+
+	u = g_get_user_name ();
+
+	encrypted_user_passwd = get_encrypted_passwd (u);
+
+	if (encrypted_user_passwd != NULL)
+	{
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+
+gboolean
+gs_auth_init (void)
+{
+	if (encrypted_user_passwd != NULL)
+	{
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+static gboolean
+passwds_match (const char *cleartext,
+               const char *ciphertext)
+{
+	char *s = NULL;  /* note that on some systems, crypt() may return null */
+
+	s = (char *) crypt (cleartext, ciphertext);
+	if (s && !strcmp (s, ciphertext))
+	{
+		return TRUE;
+	}
+
+#ifdef HAVE_BIGCRYPT
+	/* There seems to be no way to tell at runtime if an HP machine is in
+	   "trusted" mode, and thereby, which of crypt() or bigcrypt() we should
+	   be calling to compare passwords.  So call them both, and see which
+	   one works. */
+
+	s = (char *) bigcrypt (cleartext, ciphertext);
+	if (s && !strcmp (s, ciphertext))
+	{
+		return TRUE;
+	}
+
+#endif /* HAVE_BIGCRYPT */
+
+	return FALSE;
+}
+
+gboolean
+gs_auth_verify_user (const char       *username,
+                     const char       *display,
+                     GSAuthMessageFunc func,
+                     gpointer          data,
+                     GError          **error)
+{
+	char *password;
+
+	password = NULL;
+
+	/* ask for the password for user */
+	if (func != NULL)
+	{
+		func (GS_AUTH_MESSAGE_PROMPT_ECHO_OFF,
+		      "Password: ",
+		      &password,
+		      data);
+	}
+
+	if (password == NULL)
+	{
+		return FALSE;
+	}
+
+	if (encrypted_user_passwd && passwds_match (password, encrypted_user_passwd))
+	{
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
diff --git a/src/gs-auth-pwent.c.orig b/src/gs-auth-pwent.c.orig
new file mode 100644
index 0000000..21abbee
--- /dev/null
+++ b/src/gs-auth-pwent.c.orig
@@ -0,0 +1,291 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (c) 1993-1998 Jamie Zawinski <jwz at jwz.org>
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifdef HAVE_CRYPT_H
+# include <crypt.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+
+#ifdef __bsdi__
+# include <sys/param.h>
+# if _BSDI_VERSION >= 199608
+#  define BSD_AUTH
+# endif
+#endif /* __bsdi__ */
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#if defined(HAVE_SHADOW_PASSWD)	      /* passwds live in /etc/shadow */
+
+#   include <shadow.h>
+#   define PWTYPE   struct spwd *
+#   define PWPSLOT  sp_pwdp
+#   define GETPW    getspnam
+
+#elif defined(HAVE_ENHANCED_PASSWD)      /* passwds live in /tcb/files/auth/ */
+/* M.Matsumoto <matsu at yao.sharp.co.jp> */
+#   include <sys/security.h>
+#   include <prot.h>
+
+#   define PWTYPE   struct pr_passwd *
+#   define PWPSLOT  ufld.fd_encrypt
+#   define GETPW    getprpwnam
+
+#elif defined(HAVE_ADJUNCT_PASSWD)
+
+#   include <sys/label.h>
+#   include <sys/audit.h>
+#   include <pwdadj.h>
+
+#   define PWTYPE   struct passwd_adjunct *
+#   define PWPSLOT  pwa_passwd
+#   define GETPW    getpwanam
+
+#elif defined(HAVE_HPUX_PASSWD)
+
+#   include <hpsecurity.h>
+#   include <prot.h>
+
+#   define PWTYPE   struct s_passwd *
+#   define PWPSLOT  pw_passwd
+#   define GETPW    getspwnam
+
+#   define HAVE_BIGCRYPT
+
+#endif
+
+#include "gs-auth.h"
+
+static gboolean verbose_enabled = FALSE;
+
+static char *encrypted_user_passwd = NULL;
+
+GQuark
+gs_auth_error_quark (void)
+{
+    static GQuark quark = 0;
+    if (! quark)
+    {
+        quark = g_quark_from_static_string ("gs_auth_error");
+    }
+
+    return quark;
+}
+
+void
+gs_auth_set_verbose (gboolean enabled)
+{
+    verbose_enabled = enabled;
+}
+
+gboolean
+gs_auth_get_verbose (void)
+{
+    return verbose_enabled;
+}
+
+static gboolean
+passwd_known (const char *pw)
+{
+    return (pw &&
+            pw[0] != '*' &&	/* This would be sensible...         */
+            strlen (pw) > 4);	/* ...but this is what Solaris does. */
+}
+
+static char *
+get_encrypted_passwd (const char *user)
+{
+    char *result = NULL;
+
+#ifdef PWTYPE
+    if (user && *user && !result)
+    {
+        /* First check the shadow passwords. */
+        PWTYPE p = GETPW ((char *) user);
+        if (p && passwd_known (p->PWPSLOT))
+        {
+            result = g_strdup (p->PWPSLOT);
+        }
+    }
+#endif /* PWTYPE */
+
+    if (user && *user && !result)
+    {
+        /* Check non-shadow passwords too. */
+        struct passwd *p = getpwnam (user);
+        if (p && passwd_known (p->pw_passwd))
+        {
+            result = g_strdup (p->pw_passwd);
+        }
+    }
+
+    /* The manual for passwd(4) on HPUX 10.10 says:
+
+    Password aging is put in effect for a particular user if his
+    encrypted password in the password file is followed by a comma and
+    a nonnull string of characters from the above alphabet.  This
+    string defines the "age" needed to implement password aging.
+
+    So this means that passwd->pw_passwd isn't simply a string of cyphertext,
+    it might have trailing junk.  So, if there is a comma in the string, and
+    that comma is beyond position 13, terminate the string before the comma.
+    */
+    if (result && strlen (result) > 13)
+    {
+        char *s = strchr (result + 13, ',');
+        if (s)
+        {
+            *s = 0;
+        }
+    }
+
+#ifndef HAVE_PAM
+    /* We only issue this warning if not compiled with support for PAM.
+       If we're using PAM, it's not unheard of that normal pwent passwords
+       would be unavailable. */
+
+    if (!result)
+    {
+        g_warning ("Couldn't get password of \"%s\"",
+                   (user ? user : "(null)"));
+    }
+
+#endif /* !HAVE_PAM */
+
+    return result;
+}
+
+/* This has to be called before we've changed our effective user ID,
+   because it might need privileges to get at the encrypted passwords.
+   Returns false if we weren't able to get any passwords, and therefore,
+   locking isn't possible.  (It will also have written to stderr.)
+*/
+
+gboolean
+gs_auth_priv_init (void)
+{
+    const char *u;
+
+    u = g_get_user_name ();
+
+    encrypted_user_passwd = get_encrypted_passwd (u);
+
+    if (encrypted_user_passwd != NULL)
+    {
+        return TRUE;
+    }
+    else
+    {
+        return FALSE;
+    }
+}
+
+
+gboolean
+gs_auth_init (void)
+{
+    if (encrypted_user_passwd != NULL)
+    {
+        return TRUE;
+    }
+    else
+    {
+        return FALSE;
+    }
+}
+
+static gboolean
+passwds_match (const char *cleartext,
+               const char *ciphertext)
+{
+    char *s = NULL;  /* note that on some systems, crypt() may return null */
+
+    s = (char *) crypt (cleartext, ciphertext);
+    if (s && !strcmp (s, ciphertext))
+    {
+        return TRUE;
+    }
+
+#ifdef HAVE_BIGCRYPT
+    /* There seems to be no way to tell at runtime if an HP machine is in
+       "trusted" mode, and thereby, which of crypt() or bigcrypt() we should
+       be calling to compare passwords.  So call them both, and see which
+       one works. */
+
+    s = (char *) bigcrypt (cleartext, ciphertext);
+    if (s && !strcmp (s, ciphertext))
+    {
+        return TRUE;
+    }
+
+#endif /* HAVE_BIGCRYPT */
+
+    return FALSE;
+}
+
+gboolean
+gs_auth_verify_user (const char       *username,
+                     const char       *display,
+                     GSAuthMessageFunc func,
+                     gpointer          data,
+                     GError          **error)
+{
+    char *password;
+
+    password = NULL;
+
+    /* ask for the password for user */
+    if (func != NULL)
+    {
+        func (GS_AUTH_MESSAGE_PROMPT_ECHO_OFF,
+              "Password: ",
+              &password,
+              data);
+    }
+
+    if (password == NULL)
+    {
+        return FALSE;
+    }
+
+    if (encrypted_user_passwd && passwds_match (password, encrypted_user_passwd))
+    {
+        return TRUE;
+    }
+    else
+    {
+        return FALSE;
+    }
+}
diff --git a/src/gs-auth.h b/src/gs-auth.h
new file mode 100644
index 0000000..503e92d
--- /dev/null
+++ b/src/gs-auth.h
@@ -0,0 +1,67 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#ifndef __GS_AUTH_H
+#define __GS_AUTH_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef enum
+{
+    GS_AUTH_MESSAGE_PROMPT_ECHO_ON,
+    GS_AUTH_MESSAGE_PROMPT_ECHO_OFF,
+    GS_AUTH_MESSAGE_ERROR_MSG,
+    GS_AUTH_MESSAGE_TEXT_INFO
+} GSAuthMessageStyle;
+
+typedef enum
+{
+    GS_AUTH_ERROR_GENERAL,
+    GS_AUTH_ERROR_AUTH_ERROR,
+    GS_AUTH_ERROR_USER_UNKNOWN,
+    GS_AUTH_ERROR_AUTH_DENIED
+} GSAuthError;
+
+typedef gboolean  (* GSAuthMessageFunc) (GSAuthMessageStyle style,
+        const char        *msg,
+        char             **response,
+        gpointer           data);
+
+#define GS_AUTH_ERROR gs_auth_error_quark ()
+
+GQuark   gs_auth_error_quark (void);
+
+void     gs_auth_set_verbose (gboolean verbose);
+gboolean gs_auth_get_verbose (void);
+
+gboolean gs_auth_priv_init   (void);
+gboolean gs_auth_init        (void);
+gboolean gs_auth_verify_user (const char       *username,
+                              const char       *display,
+                              GSAuthMessageFunc func,
+                              gpointer          data,
+                              GError          **error);
+
+G_END_DECLS
+
+#endif /* __GS_AUTH_H */
diff --git a/src/gs-auth.h.orig b/src/gs-auth.h.orig
new file mode 100644
index 0000000..25e5271
--- /dev/null
+++ b/src/gs-auth.h.orig
@@ -0,0 +1,65 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#ifndef __GS_AUTH_H
+#define __GS_AUTH_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+        GS_AUTH_MESSAGE_PROMPT_ECHO_ON,
+        GS_AUTH_MESSAGE_PROMPT_ECHO_OFF,
+        GS_AUTH_MESSAGE_ERROR_MSG,
+        GS_AUTH_MESSAGE_TEXT_INFO
+} GSAuthMessageStyle;
+
+typedef enum {
+	GS_AUTH_ERROR_GENERAL,
+        GS_AUTH_ERROR_AUTH_ERROR,
+        GS_AUTH_ERROR_USER_UNKNOWN,
+        GS_AUTH_ERROR_AUTH_DENIED
+} GSAuthError;
+
+typedef gboolean  (* GSAuthMessageFunc) (GSAuthMessageStyle style,
+                                         const char        *msg,
+                                         char             **response,
+                                         gpointer           data);
+
+#define GS_AUTH_ERROR gs_auth_error_quark ()
+
+GQuark   gs_auth_error_quark (void);
+
+void     gs_auth_set_verbose (gboolean verbose);
+gboolean gs_auth_get_verbose (void);
+
+gboolean gs_auth_priv_init   (void);
+gboolean gs_auth_init        (void);
+gboolean gs_auth_verify_user (const char       *username,
+                              const char       *display,
+                              GSAuthMessageFunc func,
+                              gpointer          data,
+                              GError          **error);
+
+G_END_DECLS
+
+#endif /* __GS_AUTH_H */
diff --git a/src/gs-debug.c b/src/gs-debug.c
new file mode 100644
index 0000000..52fbc12
--- /dev/null
+++ b/src/gs-debug.c
@@ -0,0 +1,163 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <signal.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+#include "gs-debug.h"
+
+static gboolean debugging = FALSE;
+static FILE    *debug_out = NULL;
+
+/* Based on rhythmbox/lib/rb-debug.c */
+/* Our own funky debugging function, should only be used when something
+ * is not going wrong, if something *is* wrong use g_warning.
+ */
+void
+gs_debug_real (const char *func,
+               const char *file,
+               const int   line,
+               const char *format, ...)
+{
+	va_list args;
+	char    buffer [1025];
+	char   *str_time;
+	time_t  the_time;
+
+	if (debugging == FALSE)
+		return;
+
+	va_start (args, format);
+
+	g_vsnprintf (buffer, 1024, format, args);
+
+	va_end (args);
+
+	time (&the_time);
+	str_time = g_new0 (char, 255);
+	strftime (str_time, 254, "%H:%M:%S", localtime (&the_time));
+
+	fprintf ((debug_out ? debug_out : stderr),
+	         "[%s] %s:%d (%s):\t %s\n",
+	         func, file, line, str_time, buffer);
+
+	if (debug_out)
+		fflush (debug_out);
+
+	g_free (str_time);
+}
+
+gboolean
+gs_debug_enabled (void)
+{
+	return debugging;
+}
+
+void
+gs_debug_init (gboolean debug,
+               gboolean to_file)
+{
+	/* return if already initialized */
+	if (debugging == TRUE)
+	{
+		return;
+	}
+
+	debugging = debug;
+
+	if (debug && to_file)
+	{
+		const char path [50] = "mate_screensaver_debug_XXXXXX";
+		int        fd;
+
+		fd = g_file_open_tmp (path, NULL, NULL);
+
+		if (fd >= 0)
+		{
+			debug_out = fdopen (fd, "a");
+		}
+	}
+
+	gs_debug ("Debugging %s", (debug) ? "enabled" : "disabled");
+}
+
+void
+gs_debug_shutdown (void)
+{
+	if (! debugging)
+		return;
+
+	gs_debug ("Shutting down debugging");
+
+	debugging = FALSE;
+
+	if (debug_out != NULL)
+	{
+		fclose (debug_out);
+		debug_out = NULL;
+	}
+}
+
+void
+_gs_profile_log (const char *func,
+                 const char *note,
+                 const char *format,
+                 ...)
+{
+	va_list args;
+	char   *str;
+	char   *formatted;
+
+	if (format == NULL)
+	{
+		formatted = g_strdup ("");
+	}
+	else
+	{
+		va_start (args, format);
+		formatted = g_strdup_vprintf (format, args);
+		va_end (args);
+	}
+
+	if (func != NULL)
+	{
+		str = g_strdup_printf ("MARK: %s %s: %s %s", g_get_prgname(), func, note ? note : "", formatted);
+	}
+	else
+	{
+		str = g_strdup_printf ("MARK: %s: %s %s", g_get_prgname(), note ? note : "", formatted);
+	}
+
+	g_free (formatted);
+
+	g_access (str, F_OK);
+	g_free (str);
+}
diff --git a/src/gs-debug.c.orig b/src/gs-debug.c.orig
new file mode 100644
index 0000000..ff80c0c
--- /dev/null
+++ b/src/gs-debug.c.orig
@@ -0,0 +1,163 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <signal.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+#include "gs-debug.h"
+
+static gboolean debugging = FALSE;
+static FILE    *debug_out = NULL;
+
+/* Based on rhythmbox/lib/rb-debug.c */
+/* Our own funky debugging function, should only be used when something
+ * is not going wrong, if something *is* wrong use g_warning.
+ */
+void
+gs_debug_real (const char *func,
+               const char *file,
+               const int   line,
+               const char *format, ...)
+{
+    va_list args;
+    char    buffer [1025];
+    char   *str_time;
+    time_t  the_time;
+
+    if (debugging == FALSE)
+        return;
+
+    va_start (args, format);
+
+    g_vsnprintf (buffer, 1024, format, args);
+
+    va_end (args);
+
+    time (&the_time);
+    str_time = g_new0 (char, 255);
+    strftime (str_time, 254, "%H:%M:%S", localtime (&the_time));
+
+    fprintf ((debug_out ? debug_out : stderr),
+             "[%s] %s:%d (%s):\t %s\n",
+             func, file, line, str_time, buffer);
+
+    if (debug_out)
+        fflush (debug_out);
+
+    g_free (str_time);
+}
+
+gboolean
+gs_debug_enabled (void)
+{
+    return debugging;
+}
+
+void
+gs_debug_init (gboolean debug,
+               gboolean to_file)
+{
+    /* return if already initialized */
+    if (debugging == TRUE)
+    {
+        return;
+    }
+
+    debugging = debug;
+
+    if (debug && to_file)
+    {
+        const char path [50] = "mate_screensaver_debug_XXXXXX";
+        int        fd;
+
+        fd = g_file_open_tmp (path, NULL, NULL);
+
+        if (fd >= 0)
+        {
+            debug_out = fdopen (fd, "a");
+        }
+    }
+
+    gs_debug ("Debugging %s", (debug) ? "enabled" : "disabled");
+}
+
+void
+gs_debug_shutdown (void)
+{
+    if (! debugging)
+        return;
+
+    gs_debug ("Shutting down debugging");
+
+    debugging = FALSE;
+
+    if (debug_out != NULL)
+    {
+        fclose (debug_out);
+        debug_out = NULL;
+    }
+}
+
+void
+_gs_profile_log (const char *func,
+                 const char *note,
+                 const char *format,
+                 ...)
+{
+    va_list args;
+    char   *str;
+    char   *formatted;
+
+    if (format == NULL)
+    {
+        formatted = g_strdup ("");
+    }
+    else
+    {
+        va_start (args, format);
+        formatted = g_strdup_vprintf (format, args);
+        va_end (args);
+    }
+
+    if (func != NULL)
+    {
+        str = g_strdup_printf ("MARK: %s %s: %s %s", g_get_prgname(), func, note ? note : "", formatted);
+    }
+    else
+    {
+        str = g_strdup_printf ("MARK: %s: %s %s", g_get_prgname(), note ? note : "", formatted);
+    }
+
+    g_free (formatted);
+
+    g_access (str, F_OK);
+    g_free (str);
+}
diff --git a/src/gs-debug.h b/src/gs-debug.h
new file mode 100644
index 0000000..fdf9fd8
--- /dev/null
+++ b/src/gs-debug.h
@@ -0,0 +1,71 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_DEBUG_H
+#define __GS_DEBUG_H
+
+#include <stdarg.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#define gs_debug(...) gs_debug_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
+#elif defined(__GNUC__) && __GNUC__ >= 3
+#define gs_debug(...) gs_debug_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
+#else
+#define gs_debug(...)
+#endif
+
+void gs_debug_init             (gboolean debug,
+                                gboolean to_file);
+gboolean gs_debug_enabled      (void);
+void gs_debug_shutdown         (void);
+void gs_debug_real             (const char *func,
+                                const char *file,
+                                int         line,
+                                const char *format, ...);
+
+#ifdef ENABLE_PROFILING
+#ifdef G_HAVE_ISO_VARARGS
+#define gs_profile_start(...) _gs_profile_log (G_STRFUNC, "start", __VA_ARGS__)
+#define gs_profile_end(...)   _gs_profile_log (G_STRFUNC, "end", __VA_ARGS__)
+#define gs_profile_msg(...)   _gs_profile_log (NULL, NULL, __VA_ARGS__)
+#elif defined(G_HAVE_GNUC_VARARGS)
+#define gs_profile_start(format...) _gs_profile_log (G_STRFUNC, "start", format)
+#define gs_profile_end(format...)   _gs_profile_log (G_STRFUNC, "end", format)
+#define gs_profile_msg(format...)   _gs_profile_log (NULL, NULL, format)
+#endif
+#else
+#define gs_profile_start(...)
+#define gs_profile_end(...)
+#define gs_profile_msg(...)
+#endif
+
+void            _gs_profile_log    (const char *func,
+                                    const char *note,
+                                    const char *format,
+                                    ...) G_GNUC_PRINTF (3, 4);
+
+G_END_DECLS
+
+#endif /* __GS_DEBUG_H */
diff --git a/src/gs-fade.c b/src/gs-fade.c
new file mode 100644
index 0000000..ba04b67
--- /dev/null
+++ b/src/gs-fade.c
@@ -0,0 +1,987 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2009 William Jon McCann <mccann at jhu.edu>
+ * Copyright (C) 2009      Red Hat, Inc.
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <errno.h>
+
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "gs-fade.h"
+#include "gs-debug.h"
+
+#define MATE_DESKTOP_USE_UNSTABLE_API
+
+#include "libmateui/mate-rr.h"
+
+/* XFree86 4.x+ Gamma fading */
+
+
+#ifdef HAVE_XF86VMODE_GAMMA
+
+#include <X11/extensions/xf86vmode.h>
+
+#define XF86_MIN_GAMMA  0.1
+
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+static void     gs_fade_class_init (GSFadeClass *klass);
+static void     gs_fade_init       (GSFade      *fade);
+static void     gs_fade_finalize   (GObject        *object);
+
+#define GS_FADE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_FADE, GSFadePrivate))
+
+struct GSGammaInfo
+{
+	int              size;
+	unsigned short  *r;
+	unsigned short  *g;
+	unsigned short  *b;
+};
+
+struct GSFadeScreenPrivate
+{
+	int                 fade_type;
+	int                 num_ramps;
+	/* one per crtc in randr mode */
+	struct GSGammaInfo *info;
+	/* one per screen in theory */
+	MateRRScreen      *rrscreen;
+#ifdef HAVE_XF86VMODE_GAMMA
+	/* one per screen also */
+	XF86VidModeGamma    vmg;
+#endif /* HAVE_XF86VMODE_GAMMA */
+	gboolean (*fade_setup)           (GSFade *fade,
+	                                  int     screen);
+	gboolean (*fade_set_alpha_gamma) (GSFade *fade,
+	                                  int     screen,
+	                                  gdouble alpha);
+	void     (*fade_finish)          (GSFade *fade,
+	                                  int     screen);
+};
+
+struct GSFadePrivate
+{
+	guint            enabled : 1;
+	guint            active : 1;
+
+	guint            timeout;
+
+	guint            step;
+	guint            num_steps;
+	guint            timer_id;
+
+	gdouble          alpha_per_iter;
+	gdouble          current_alpha;
+
+	int              num_screens;
+
+	struct GSFadeScreenPrivate *screen_priv;
+};
+
+enum
+{
+    FADED,
+    LAST_SIGNAL
+};
+
+enum
+{
+    FADE_TYPE_NONE,
+    FADE_TYPE_GAMMA_NUMBER,
+    FADE_TYPE_GAMMA_RAMP,
+    FADE_TYPE_XRANDR,
+};
+
+static guint         signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSFade, gs_fade, G_TYPE_OBJECT)
+
+static gpointer fade_object = NULL;
+
+#ifdef HAVE_XF86VMODE_GAMMA
+
+/* This is needed because the VidMode extension doesn't work
+   on remote displays -- but if the remote display has the extension
+   at all, XF86VidModeQueryExtension returns true, and then
+   XF86VidModeQueryVersion dies with an X error.
+*/
+
+static gboolean error_handler_hit = FALSE;
+
+static int
+ignore_all_errors_ehandler (Display     *dpy,
+                            XErrorEvent *error)
+{
+	error_handler_hit = TRUE;
+
+	return 0;
+}
+
+static Bool
+safe_XF86VidModeQueryVersion (Display *dpy,
+                              int     *majP,
+                              int     *minP)
+{
+	Bool          result;
+	XErrorHandler old_handler;
+
+	XSync (dpy, False);
+	error_handler_hit = FALSE;
+	old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
+
+	result = XF86VidModeQueryVersion (dpy, majP, minP);
+
+	XSync (dpy, False);
+	XSetErrorHandler (old_handler);
+	XSync (dpy, False);
+
+	return (error_handler_hit
+	        ? False
+	        : result);
+}
+
+static gboolean
+xf86_whack_gamma (int              screen,
+                  struct GSFadeScreenPrivate *screen_priv,
+                  float            ratio)
+{
+	Bool status;
+	struct GSGammaInfo *gamma_info;
+
+	gamma_info = screen_priv->info;
+
+	if (!gamma_info)
+		return FALSE;
+
+	if (ratio < 0)
+	{
+		ratio = 0;
+	}
+	if (ratio > 1)
+	{
+		ratio = 1;
+	}
+
+	if (gamma_info->size == 0)
+	{
+		/* we only have a gamma number, not a ramp. */
+
+		XF86VidModeGamma g2;
+
+		g2.red   = screen_priv->vmg.red   * ratio;
+		g2.green = screen_priv->vmg.green * ratio;
+		g2.blue  = screen_priv->vmg.blue  * ratio;
+
+		if (g2.red < XF86_MIN_GAMMA)
+		{
+			g2.red = XF86_MIN_GAMMA;
+		}
+		if (g2.green < XF86_MIN_GAMMA)
+		{
+			g2.green = XF86_MIN_GAMMA;
+		}
+		if (g2.blue < XF86_MIN_GAMMA)
+		{
+			g2.blue = XF86_MIN_GAMMA;
+		}
+
+		status = XF86VidModeSetGamma (GDK_DISPLAY (), screen, &g2);
+	}
+	else
+	{
+
+# ifdef HAVE_XF86VMODE_GAMMA_RAMP
+		unsigned short *r, *g, *b;
+		int i;
+
+		r = g_new0 (unsigned short, gamma_info->size);
+		g = g_new0 (unsigned short, gamma_info->size);
+		b = g_new0 (unsigned short, gamma_info->size);
+
+		for (i = 0; i < gamma_info->size; i++)
+		{
+			r[i] = gamma_info->r[i] * ratio;
+			g[i] = gamma_info->g[i] * ratio;
+			b[i] = gamma_info->b[i] * ratio;
+		}
+
+		status = XF86VidModeSetGammaRamp (GDK_DISPLAY (), screen, gamma_info->size, r, g, b);
+
+		g_free (r);
+		g_free (g);
+		g_free (b);
+
+# else  /* !HAVE_XF86VMODE_GAMMA_RAMP */
+		abort ();
+# endif /* !HAVE_XF86VMODE_GAMMA_RAMP */
+	}
+
+	gdk_flush ();
+
+	return status;
+}
+
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+/* VidModeExtension version 2.0 or better is needed to do gamma.
+   2.0 added gamma values; 2.1 added gamma ramps.
+*/
+# define XF86_VIDMODE_GAMMA_MIN_MAJOR 2
+# define XF86_VIDMODE_GAMMA_MIN_MINOR 0
+# define XF86_VIDMODE_GAMMA_RAMP_MIN_MAJOR 2
+# define XF86_VIDMODE_GAMMA_RAMP_MIN_MINOR 1
+
+
+gboolean
+gs_fade_get_enabled (GSFade *fade)
+{
+	g_return_val_if_fail (GS_IS_FADE (fade), FALSE);
+
+	return fade->priv->enabled;
+}
+
+void
+gs_fade_set_enabled (GSFade  *fade,
+                     gboolean enabled)
+{
+	g_return_if_fail (GS_IS_FADE (fade));
+
+	if (fade->priv->enabled != enabled)
+	{
+		fade->priv->enabled = enabled;
+	}
+}
+
+#ifdef HAVE_XF86VMODE_GAMMA
+static gboolean
+gamma_fade_setup (GSFade *fade, int screen_idx)
+{
+	gboolean         res;
+	struct GSFadeScreenPrivate *screen_priv;
+
+	screen_priv = &fade->priv->screen_priv[screen_idx];
+
+	if (screen_priv->info)
+		return TRUE;
+
+# ifndef HAVE_XF86VMODE_GAMMA_RAMP
+	if (FADE_TYPE_GAMMA_RAMP == screen_priv->fade_type)
+	{
+		/* server is newer than client! */
+		screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+	}
+# endif
+
+# ifdef HAVE_XF86VMODE_GAMMA_RAMP
+
+	screen_priv->info = g_new0(struct GSGammaInfo, 1);
+	screen_priv->num_ramps = 1;
+
+	if (FADE_TYPE_GAMMA_RAMP == screen_priv->fade_type)
+	{
+		/* have ramps */
+
+		res = XF86VidModeGetGammaRampSize (GDK_DISPLAY (), screen_idx, &screen_priv->info->size);
+		if (!res || screen_priv->info->size <= 0)
+		{
+			screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+			goto test_number;
+		}
+
+		screen_priv->info->r = g_new0 (unsigned short, screen_priv->info->size);
+		screen_priv->info->g = g_new0 (unsigned short, screen_priv->info->size);
+		screen_priv->info->b = g_new0 (unsigned short, screen_priv->info->size);
+
+		if (! (screen_priv->info->r && screen_priv->info->g && screen_priv->info->b))
+		{
+			screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+			goto test_number;
+		}
+
+		res = XF86VidModeGetGammaRamp (GDK_DISPLAY (),
+		                               screen_idx,
+		                               screen_priv->info->size,
+		                               screen_priv->info->r,
+		                               screen_priv->info->g,
+		                               screen_priv->info->b);
+		if (! res)
+		{
+			screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+			goto test_number;
+		}
+		gs_debug ("Initialized gamma ramp fade");
+	}
+# endif /* HAVE_XF86VMODE_GAMMA_RAMP */
+
+test_number:
+	if (FADE_TYPE_GAMMA_NUMBER == screen_priv->fade_type)
+	{
+		/* only have gamma parameter, not ramps. */
+
+		res = XF86VidModeGetGamma (GDK_DISPLAY (), screen_idx, &screen_priv->vmg);
+		if (! res)
+		{
+			screen_priv->fade_type = FADE_TYPE_NONE;
+			goto test_none;
+		}
+		gs_debug ("Initialized gamma fade for screen %d: %f %f %f",
+		          screen_idx,
+		          screen_priv->vmg.red,
+		          screen_priv->vmg.green,
+		          screen_priv->vmg.blue);
+	}
+
+test_none:
+	if (FADE_TYPE_NONE == screen_priv->fade_type)
+	{
+		goto FAIL;
+	}
+
+	return TRUE;
+FAIL:
+
+	return FALSE;
+}
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+static void
+screen_fade_finish (GSFade *fade, int screen_idx)
+{
+	struct GSFadeScreenPrivate *screen_priv;
+	int i;
+	screen_priv = &fade->priv->screen_priv[screen_idx];
+
+	if (!screen_priv->info)
+		return;
+
+	for (i = 0; i < screen_priv->num_ramps; i++)
+	{
+		if (screen_priv->info[i].r)
+			g_free (screen_priv->info[i].r);
+		if (screen_priv->info[i].g)
+			g_free (screen_priv->info[i].g);
+		if (screen_priv->info[i].b)
+			g_free (screen_priv->info[i].b);
+	}
+
+	g_free (screen_priv->info);
+	screen_priv->info = NULL;
+	screen_priv->num_ramps = 0;
+}
+
+#ifdef HAVE_XF86VMODE_GAMMA
+static gboolean
+gamma_fade_set_alpha_gamma (GSFade *fade,
+                            int screen_idx,
+                            gdouble alpha)
+{
+	struct GSFadeScreenPrivate *screen_priv;
+	gboolean res;
+
+	screen_priv = &fade->priv->screen_priv[screen_idx];
+	res = xf86_whack_gamma (screen_idx, screen_priv, alpha);
+
+	return TRUE;
+}
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+static void
+check_gamma_extension (GSFade *fade, int screen_idx)
+{
+	struct GSFadeScreenPrivate *screen_priv;
+#ifdef HAVE_XF86VMODE_GAMMA
+	int      event;
+	int      error;
+	int      major;
+	int      minor;
+	gboolean res;
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+	screen_priv = &fade->priv->screen_priv[screen_idx];
+
+#ifdef HAVE_XF86VMODE_GAMMA
+	res = XF86VidModeQueryExtension (GDK_DISPLAY (), &event, &error);
+	if (! res)
+		goto fade_none;
+
+	res = safe_XF86VidModeQueryVersion (GDK_DISPLAY (), &major, &minor);
+	if (! res)
+		goto fade_none;
+
+	if (major < XF86_VIDMODE_GAMMA_MIN_MAJOR ||
+	        (major == XF86_VIDMODE_GAMMA_MIN_MAJOR &&
+	         minor < XF86_VIDMODE_GAMMA_MIN_MINOR))
+		goto fade_none;
+
+	screen_priv->fade_setup = gamma_fade_setup;
+	screen_priv->fade_finish = screen_fade_finish;
+	screen_priv->fade_set_alpha_gamma = gamma_fade_set_alpha_gamma;
+
+	if (major < XF86_VIDMODE_GAMMA_RAMP_MIN_MAJOR ||
+	        (major == XF86_VIDMODE_GAMMA_RAMP_MIN_MAJOR &&
+	         minor < XF86_VIDMODE_GAMMA_RAMP_MIN_MINOR))
+	{
+		screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+		return;
+	}
+
+	/* Copacetic */
+	screen_priv->fade_type = FADE_TYPE_GAMMA_RAMP;
+	return;
+fade_none:
+#endif
+	screen_priv->fade_type = FADE_TYPE_NONE;
+}
+
+/* Xrandr support */
+
+static gboolean xrandr_fade_setup (GSFade *fade, int screen_idx)
+{
+	struct GSFadeScreenPrivate *screen_priv;
+	MateRRCrtc *crtc;
+	MateRRCrtc **crtcs;
+	int crtc_count = 0;
+	struct GSGammaInfo *info;
+	gboolean res;
+
+	screen_priv = &fade->priv->screen_priv[screen_idx];
+
+	if (screen_priv->info)
+		return TRUE;
+
+	/* refresh the screen info */
+	mate_rr_screen_refresh (screen_priv->rrscreen, NULL);
+
+	crtcs = mate_rr_screen_list_crtcs (screen_priv->rrscreen);
+	while (*crtcs)
+	{
+		crtc_count++;
+		crtcs++;
+	};
+
+	screen_priv->info = g_new0 (struct GSGammaInfo, crtc_count);
+	screen_priv->num_ramps = crtc_count;
+
+	crtc_count = 0;
+	crtcs = mate_rr_screen_list_crtcs (screen_priv->rrscreen);
+	while (*crtcs)
+	{
+		crtc = *crtcs;
+
+		info = &screen_priv->info[crtc_count];
+
+		/* if no mode ignore crtc */
+		if (!mate_rr_crtc_get_current_mode (crtc))
+		{
+			info->size = 0;
+			info->r = NULL;
+			info->g = NULL;
+			info->b = NULL;
+		}
+		else
+		{
+			res = mate_rr_crtc_get_gamma (crtc, &info->size,
+			                              &info->r, &info->g,
+			                              &info->b);
+			if (res == FALSE)
+				goto fail;
+		}
+
+		crtcs++;
+		crtc_count++;
+	}
+	return TRUE;
+fail:
+	return FALSE;
+}
+
+static void xrandr_crtc_whack_gamma (MateRRCrtc *crtc,
+                                     struct GSGammaInfo *gamma_info,
+                                     float            ratio)
+{
+	unsigned short *r, *g, *b;
+	int i;
+
+	if (gamma_info->size == 0)
+		return;
+
+	if (ratio < 0)
+	{
+		ratio = 0;
+	}
+	if (ratio > 1)
+	{
+		ratio = 1;
+	}
+
+	r = g_new0 (unsigned short, gamma_info->size);
+	g = g_new0 (unsigned short, gamma_info->size);
+	b = g_new0 (unsigned short, gamma_info->size);
+
+	for (i = 0; i < gamma_info->size; i++)
+	{
+		r[i] = gamma_info->r[i] * ratio;
+		g[i] = gamma_info->g[i] * ratio;
+		b[i] = gamma_info->b[i] * ratio;
+	}
+
+	mate_rr_crtc_set_gamma (crtc, gamma_info->size,
+	                        r, g, b);
+	g_free (r);
+	g_free (g);
+	g_free (b);
+}
+
+static gboolean xrandr_fade_set_alpha_gamma (GSFade *fade,
+        int screen_idx,
+        gdouble alpha)
+{
+	struct GSFadeScreenPrivate *screen_priv;
+	struct GSGammaInfo *info;
+	MateRRCrtc **crtcs;
+	int i;
+
+	screen_priv = &fade->priv->screen_priv[screen_idx];
+
+	if (!screen_priv->info)
+		return FALSE;
+
+	crtcs = mate_rr_screen_list_crtcs (screen_priv->rrscreen);
+	i = 0;
+
+	while (*crtcs)
+	{
+		info = &screen_priv->info[i];
+		xrandr_crtc_whack_gamma (*crtcs, info, alpha);
+		i++;
+		crtcs++;
+	}
+	return TRUE;
+}
+
+static void
+check_randr_extension (GSFade *fade, int screen_idx)
+{
+	GdkDisplay *display = gdk_display_get_default ();
+	GdkScreen *screen = gdk_display_get_screen (display, screen_idx);
+	struct GSFadeScreenPrivate *screen_priv;
+
+	screen_priv = &fade->priv->screen_priv[screen_idx];
+
+	screen_priv->rrscreen = mate_rr_screen_new (screen,
+	                        NULL,
+	                        NULL,
+	                        NULL);
+	if (!screen_priv->rrscreen)
+	{
+		screen_priv->fade_type = FADE_TYPE_NONE;
+		return;
+	}
+
+	screen_priv->fade_type = FADE_TYPE_XRANDR;
+	screen_priv->fade_setup = xrandr_fade_setup;
+	screen_priv->fade_finish = screen_fade_finish;
+	screen_priv->fade_set_alpha_gamma = xrandr_fade_set_alpha_gamma;
+}
+
+static gboolean
+gs_fade_set_alpha (GSFade *fade,
+                   gdouble alpha)
+{
+	gboolean ret = FALSE;
+	int i;
+
+	for (i = 0; i < fade->priv->num_screens; i++)
+	{
+		switch (fade->priv->screen_priv[i].fade_type)
+		{
+		case FADE_TYPE_GAMMA_RAMP:
+		case FADE_TYPE_GAMMA_NUMBER:
+		case FADE_TYPE_XRANDR:
+			ret = fade->priv->screen_priv[i].fade_set_alpha_gamma (fade, i, alpha);
+			break;
+		case FADE_TYPE_NONE:
+			ret = FALSE;
+			break;
+		default:
+			g_warning ("Unknown fade type");
+			ret = FALSE;
+			break;
+		}
+	}
+	return ret;
+}
+
+static gboolean
+gs_fade_out_iter (GSFade *fade)
+{
+	gboolean ret;
+
+	if (fade->priv->current_alpha < 0.01)
+	{
+		return FALSE;
+	}
+
+	fade->priv->current_alpha -= fade->priv->alpha_per_iter;
+
+	ret = gs_fade_set_alpha (fade, fade->priv->current_alpha);
+
+	return ret;
+}
+
+static gboolean
+gs_fade_stop (GSFade *fade)
+{
+	if (fade->priv->timer_id > 0)
+	{
+		g_source_remove (fade->priv->timer_id);
+		fade->priv->timer_id = 0;
+	}
+
+	fade->priv->step = 0;
+	fade->priv->active = FALSE;
+
+	return TRUE;
+}
+
+void
+gs_fade_finish (GSFade *fade)
+{
+	g_return_if_fail (GS_IS_FADE (fade));
+
+	if (! fade->priv->active)
+	{
+		return;
+	}
+
+	gs_fade_stop (fade);
+
+	g_signal_emit (fade, signals [FADED], 0);
+
+	fade->priv->active = FALSE;
+}
+
+static gboolean
+fade_out_timer (GSFade *fade)
+{
+	gboolean res;
+
+	res = gs_fade_out_iter (fade);
+
+	/* if failed then fade is complete */
+	if (! res)
+	{
+		gs_fade_finish (fade);
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+gboolean
+gs_fade_get_active (GSFade *fade)
+{
+	g_return_val_if_fail (GS_IS_FADE (fade), FALSE);
+
+	return fade->priv->active;
+}
+
+static void
+gs_fade_set_timeout (GSFade   *fade,
+                     guint     timeout)
+{
+	g_return_if_fail (GS_IS_FADE (fade));
+
+	fade->priv->timeout = timeout;
+}
+
+static void
+gs_fade_start (GSFade *fade,
+               guint   timeout)
+{
+	guint steps_per_sec = 30;
+	guint msecs_per_step;
+	struct GSFadeScreenPrivate *screen_priv;
+	gboolean active_fade, res;
+	int i;
+
+	g_return_if_fail (GS_IS_FADE (fade));
+
+	for (i = 0; i < fade->priv->num_screens; i++)
+	{
+		screen_priv = &fade->priv->screen_priv[i];
+		if (screen_priv->fade_type != FADE_TYPE_NONE)
+		{
+			res = screen_priv->fade_setup (fade, i);
+			if (res == FALSE)
+				return;
+		}
+	}
+
+	if (fade->priv->timer_id > 0)
+	{
+		gs_fade_stop (fade);
+	}
+
+	fade->priv->active = TRUE;
+
+	gs_fade_set_timeout (fade, timeout);
+
+	active_fade = FALSE;
+	for (i = 0; i < fade->priv->num_screens; i++)
+	{
+		screen_priv = &fade->priv->screen_priv[i];
+		if (screen_priv->fade_type != FADE_TYPE_NONE)
+			active_fade = TRUE;
+	}
+	if (active_fade)
+	{
+		guint num_steps;
+
+		num_steps = (fade->priv->timeout / 1000) * steps_per_sec;
+		msecs_per_step = 1000 / steps_per_sec;
+		fade->priv->alpha_per_iter = 1.0 / (gdouble)num_steps;
+
+		fade->priv->timer_id = g_timeout_add (msecs_per_step, (GSourceFunc)fade_out_timer, fade);
+	}
+	else
+	{
+		gs_fade_finish (fade);
+	}
+}
+
+typedef struct
+{
+	GSFadeDoneFunc done_cb;
+	gpointer       data;
+} FadedCallbackData;
+
+static void
+gs_fade_async_callback (GSFade            *fade,
+                        FadedCallbackData *cdata)
+{
+	g_signal_handlers_disconnect_by_func (fade,
+	                                      gs_fade_async_callback,
+	                                      cdata);
+
+	if (cdata->done_cb)
+	{
+		cdata->done_cb (fade, cdata->data);
+	}
+
+	g_free (cdata);
+}
+
+void
+gs_fade_async (GSFade        *fade,
+               guint          timeout,
+               GSFadeDoneFunc func,
+               gpointer       data)
+{
+	g_return_if_fail (GS_IS_FADE (fade));
+
+	/* if fade is active then pause it */
+	if (fade->priv->active)
+	{
+		gs_fade_stop (fade);
+	}
+
+	if (func)
+	{
+		FadedCallbackData *cb_data;
+
+		cb_data = g_new0 (FadedCallbackData, 1);
+		cb_data->done_cb = func;
+		cb_data->data = data;
+
+		g_signal_connect (fade, "faded",
+		                  G_CALLBACK (gs_fade_async_callback),
+		                  cb_data);
+	}
+
+	gs_fade_start (fade, timeout);
+}
+
+static void
+gs_fade_sync_callback (GSFade *fade,
+                       int    *flag)
+{
+	*flag = TRUE;
+	g_signal_handlers_disconnect_by_func (fade,
+	                                      gs_fade_sync_callback,
+	                                      flag);
+}
+
+void
+gs_fade_sync (GSFade        *fade,
+              guint          timeout)
+{
+	int      flag = FALSE;
+
+	g_return_if_fail (GS_IS_FADE (fade));
+
+	/* if fade is active then pause it */
+	if (fade->priv->active)
+	{
+		gs_fade_stop (fade);
+	}
+
+	g_signal_connect (fade, "faded",
+	                  G_CALLBACK (gs_fade_sync_callback),
+	                  &flag);
+
+	gs_fade_start (fade, timeout);
+
+	while (! flag)
+	{
+		gtk_main_iteration ();
+	}
+}
+
+void
+gs_fade_reset (GSFade *fade)
+{
+	int i;
+	g_return_if_fail (GS_IS_FADE (fade));
+
+	gs_debug ("Resetting fade");
+
+	if (fade->priv->active)
+	{
+		gs_fade_stop (fade);
+	}
+
+	fade->priv->current_alpha = 1.0;
+
+	gs_fade_set_alpha (fade, fade->priv->current_alpha);
+
+	for (i = 0; i < fade->priv->num_screens; i++)
+		fade->priv->screen_priv[i].fade_finish (fade, i);
+}
+
+static void
+gs_fade_class_init (GSFadeClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize = gs_fade_finalize;
+
+	signals [FADED] =
+	    g_signal_new ("faded",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSFadeClass, faded),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0, G_TYPE_NONE);
+
+	g_type_class_add_private (klass, sizeof (GSFadePrivate));
+}
+
+static void
+gs_fade_init (GSFade *fade)
+{
+	GdkDisplay *display;
+	int i;
+
+	fade->priv = GS_FADE_GET_PRIVATE (fade);
+
+	fade->priv->timeout = 1000;
+	fade->priv->current_alpha = 1.0;
+
+	display = gdk_display_get_default ();
+	fade->priv->num_screens = gdk_display_get_n_screens (display);
+
+	fade->priv->screen_priv = g_new0 (struct GSFadeScreenPrivate, fade->priv->num_screens);
+
+	for (i = 0; i < fade->priv->num_screens; i++)
+	{
+		check_randr_extension (fade, i);
+		if (!fade->priv->screen_priv[i].fade_type)
+			check_gamma_extension (fade, i);
+		gs_debug ("Fade type: %d", fade->priv->screen_priv[i].fade_type);
+	}
+}
+
+static void
+gs_fade_finalize (GObject *object)
+{
+	GSFade *fade;
+	int i;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_FADE (object));
+
+	fade = GS_FADE (object);
+
+	g_return_if_fail (fade->priv != NULL);
+
+	for (i = 0; i < fade->priv->num_screens; i++)
+		fade->priv->screen_priv[i].fade_finish(fade, i);
+
+	if (fade->priv->screen_priv)
+	{
+		for (i = 0; i < fade->priv->num_screens; i++)
+		{
+			if (!fade->priv->screen_priv[i].rrscreen)
+				continue;
+			mate_rr_screen_destroy (fade->priv->screen_priv[i].rrscreen);
+		}
+
+		g_free (fade->priv->screen_priv);
+		fade->priv->screen_priv = NULL;
+	}
+
+	G_OBJECT_CLASS (gs_fade_parent_class)->finalize (object);
+}
+
+GSFade *
+gs_fade_new (void)
+{
+	if (fade_object)
+	{
+		g_object_ref (fade_object);
+	}
+	else
+	{
+		fade_object = g_object_new (GS_TYPE_FADE, NULL);
+		g_object_add_weak_pointer (fade_object,
+		                           (gpointer *) &fade_object);
+	}
+
+	return GS_FADE (fade_object);
+}
diff --git a/src/gs-fade.c.orig b/src/gs-fade.c.orig
new file mode 100644
index 0000000..3b46004
--- /dev/null
+++ b/src/gs-fade.c.orig
@@ -0,0 +1,987 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2009 William Jon McCann <mccann at jhu.edu>
+ * Copyright (C) 2009      Red Hat, Inc.
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <errno.h>
+
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "gs-fade.h"
+#include "gs-debug.h"
+
+#define MATE_DESKTOP_USE_UNSTABLE_API
+
+#include "libmateui/mate-rr.h"
+
+/* XFree86 4.x+ Gamma fading */
+
+
+#ifdef HAVE_XF86VMODE_GAMMA
+
+#include <X11/extensions/xf86vmode.h>
+
+#define XF86_MIN_GAMMA  0.1
+
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+static void     gs_fade_class_init (GSFadeClass *klass);
+static void     gs_fade_init       (GSFade      *fade);
+static void     gs_fade_finalize   (GObject        *object);
+
+#define GS_FADE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_FADE, GSFadePrivate))
+
+struct GSGammaInfo
+{
+    int              size;
+    unsigned short  *r;
+    unsigned short  *g;
+    unsigned short  *b;
+};
+
+struct GSFadeScreenPrivate
+{
+    int                 fade_type;
+    int                 num_ramps;
+    /* one per crtc in randr mode */
+    struct GSGammaInfo *info;
+    /* one per screen in theory */
+    MateRRScreen      *rrscreen;
+#ifdef HAVE_XF86VMODE_GAMMA
+    /* one per screen also */
+    XF86VidModeGamma    vmg;
+#endif /* HAVE_XF86VMODE_GAMMA */
+    gboolean (*fade_setup)           (GSFade *fade,
+                                      int     screen);
+    gboolean (*fade_set_alpha_gamma) (GSFade *fade,
+                                      int     screen,
+                                      gdouble alpha);
+    void     (*fade_finish)          (GSFade *fade,
+                                      int     screen);
+};
+
+struct GSFadePrivate
+{
+    guint            enabled : 1;
+    guint            active : 1;
+
+    guint            timeout;
+
+    guint            step;
+    guint            num_steps;
+    guint            timer_id;
+
+    gdouble          alpha_per_iter;
+    gdouble          current_alpha;
+
+    int              num_screens;
+
+    struct GSFadeScreenPrivate *screen_priv;
+};
+
+enum
+{
+    FADED,
+    LAST_SIGNAL
+};
+
+enum
+{
+    FADE_TYPE_NONE,
+    FADE_TYPE_GAMMA_NUMBER,
+    FADE_TYPE_GAMMA_RAMP,
+    FADE_TYPE_XRANDR,
+};
+
+static guint         signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSFade, gs_fade, G_TYPE_OBJECT)
+
+static gpointer fade_object = NULL;
+
+#ifdef HAVE_XF86VMODE_GAMMA
+
+/* This is needed because the VidMode extension doesn't work
+   on remote displays -- but if the remote display has the extension
+   at all, XF86VidModeQueryExtension returns true, and then
+   XF86VidModeQueryVersion dies with an X error.
+*/
+
+static gboolean error_handler_hit = FALSE;
+
+static int
+ignore_all_errors_ehandler (Display     *dpy,
+                            XErrorEvent *error)
+{
+    error_handler_hit = TRUE;
+
+    return 0;
+}
+
+static Bool
+safe_XF86VidModeQueryVersion (Display *dpy,
+                              int     *majP,
+                              int     *minP)
+{
+    Bool          result;
+    XErrorHandler old_handler;
+
+    XSync (dpy, False);
+    error_handler_hit = FALSE;
+    old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
+
+    result = XF86VidModeQueryVersion (dpy, majP, minP);
+
+    XSync (dpy, False);
+    XSetErrorHandler (old_handler);
+    XSync (dpy, False);
+
+    return (error_handler_hit
+            ? False
+            : result);
+}
+
+static gboolean
+xf86_whack_gamma (int              screen,
+                  struct GSFadeScreenPrivate *screen_priv,
+                  float            ratio)
+{
+    Bool status;
+    struct GSGammaInfo *gamma_info;
+
+    gamma_info = screen_priv->info;
+
+    if (!gamma_info)
+        return FALSE;
+
+    if (ratio < 0)
+    {
+        ratio = 0;
+    }
+    if (ratio > 1)
+    {
+        ratio = 1;
+    }
+
+    if (gamma_info->size == 0)
+    {
+        /* we only have a gamma number, not a ramp. */
+
+        XF86VidModeGamma g2;
+
+        g2.red   = screen_priv->vmg.red   * ratio;
+        g2.green = screen_priv->vmg.green * ratio;
+        g2.blue  = screen_priv->vmg.blue  * ratio;
+
+        if (g2.red < XF86_MIN_GAMMA)
+        {
+            g2.red = XF86_MIN_GAMMA;
+        }
+        if (g2.green < XF86_MIN_GAMMA)
+        {
+            g2.green = XF86_MIN_GAMMA;
+        }
+        if (g2.blue < XF86_MIN_GAMMA)
+        {
+            g2.blue = XF86_MIN_GAMMA;
+        }
+
+        status = XF86VidModeSetGamma (GDK_DISPLAY (), screen, &g2);
+    }
+    else
+    {
+
+# ifdef HAVE_XF86VMODE_GAMMA_RAMP
+        unsigned short *r, *g, *b;
+        int i;
+
+        r = g_new0 (unsigned short, gamma_info->size);
+        g = g_new0 (unsigned short, gamma_info->size);
+        b = g_new0 (unsigned short, gamma_info->size);
+
+        for (i = 0; i < gamma_info->size; i++)
+        {
+            r[i] = gamma_info->r[i] * ratio;
+            g[i] = gamma_info->g[i] * ratio;
+            b[i] = gamma_info->b[i] * ratio;
+        }
+
+        status = XF86VidModeSetGammaRamp (GDK_DISPLAY (), screen, gamma_info->size, r, g, b);
+
+        g_free (r);
+        g_free (g);
+        g_free (b);
+
+# else  /* !HAVE_XF86VMODE_GAMMA_RAMP */
+        abort ();
+# endif /* !HAVE_XF86VMODE_GAMMA_RAMP */
+    }
+
+    gdk_flush ();
+
+    return status;
+}
+
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+/* VidModeExtension version 2.0 or better is needed to do gamma.
+   2.0 added gamma values; 2.1 added gamma ramps.
+*/
+# define XF86_VIDMODE_GAMMA_MIN_MAJOR 2
+# define XF86_VIDMODE_GAMMA_MIN_MINOR 0
+# define XF86_VIDMODE_GAMMA_RAMP_MIN_MAJOR 2
+# define XF86_VIDMODE_GAMMA_RAMP_MIN_MINOR 1
+
+
+gboolean
+gs_fade_get_enabled (GSFade *fade)
+{
+    g_return_val_if_fail (GS_IS_FADE (fade), FALSE);
+
+    return fade->priv->enabled;
+}
+
+void
+gs_fade_set_enabled (GSFade  *fade,
+                     gboolean enabled)
+{
+    g_return_if_fail (GS_IS_FADE (fade));
+
+    if (fade->priv->enabled != enabled)
+    {
+        fade->priv->enabled = enabled;
+    }
+}
+
+#ifdef HAVE_XF86VMODE_GAMMA
+static gboolean
+gamma_fade_setup (GSFade *fade, int screen_idx)
+{
+    gboolean         res;
+    struct GSFadeScreenPrivate *screen_priv;
+
+    screen_priv = &fade->priv->screen_priv[screen_idx];
+
+    if (screen_priv->info)
+        return TRUE;
+
+# ifndef HAVE_XF86VMODE_GAMMA_RAMP
+    if (FADE_TYPE_GAMMA_RAMP == screen_priv->fade_type)
+    {
+        /* server is newer than client! */
+        screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+    }
+# endif
+
+# ifdef HAVE_XF86VMODE_GAMMA_RAMP
+
+    screen_priv->info = g_new0(struct GSGammaInfo, 1);
+    screen_priv->num_ramps = 1;
+
+    if (FADE_TYPE_GAMMA_RAMP == screen_priv->fade_type)
+    {
+        /* have ramps */
+
+        res = XF86VidModeGetGammaRampSize (GDK_DISPLAY (), screen_idx, &screen_priv->info->size);
+        if (!res || screen_priv->info->size <= 0)
+        {
+            screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+            goto test_number;
+        }
+
+        screen_priv->info->r = g_new0 (unsigned short, screen_priv->info->size);
+        screen_priv->info->g = g_new0 (unsigned short, screen_priv->info->size);
+        screen_priv->info->b = g_new0 (unsigned short, screen_priv->info->size);
+
+        if (! (screen_priv->info->r && screen_priv->info->g && screen_priv->info->b))
+        {
+            screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+            goto test_number;
+        }
+
+        res = XF86VidModeGetGammaRamp (GDK_DISPLAY (),
+                                       screen_idx,
+                                       screen_priv->info->size,
+                                       screen_priv->info->r,
+                                       screen_priv->info->g,
+                                       screen_priv->info->b);
+        if (! res)
+        {
+            screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+            goto test_number;
+        }
+        gs_debug ("Initialized gamma ramp fade");
+    }
+# endif /* HAVE_XF86VMODE_GAMMA_RAMP */
+
+test_number:
+    if (FADE_TYPE_GAMMA_NUMBER == screen_priv->fade_type)
+    {
+        /* only have gamma parameter, not ramps. */
+
+        res = XF86VidModeGetGamma (GDK_DISPLAY (), screen_idx, &screen_priv->vmg);
+        if (! res)
+        {
+            screen_priv->fade_type = FADE_TYPE_NONE;
+            goto test_none;
+        }
+        gs_debug ("Initialized gamma fade for screen %d: %f %f %f",
+                  screen_idx,
+                  screen_priv->vmg.red,
+                  screen_priv->vmg.green,
+                  screen_priv->vmg.blue);
+    }
+
+test_none:
+    if (FADE_TYPE_NONE == screen_priv->fade_type)
+    {
+        goto FAIL;
+    }
+
+    return TRUE;
+FAIL:
+
+    return FALSE;
+}
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+static void
+screen_fade_finish (GSFade *fade, int screen_idx)
+{
+    struct GSFadeScreenPrivate *screen_priv;
+    int i;
+    screen_priv = &fade->priv->screen_priv[screen_idx];
+
+    if (!screen_priv->info)
+        return;
+
+    for (i = 0; i < screen_priv->num_ramps; i++)
+    {
+        if (screen_priv->info[i].r)
+            g_free (screen_priv->info[i].r);
+        if (screen_priv->info[i].g)
+            g_free (screen_priv->info[i].g);
+        if (screen_priv->info[i].b)
+            g_free (screen_priv->info[i].b);
+    }
+
+    g_free (screen_priv->info);
+    screen_priv->info = NULL;
+    screen_priv->num_ramps = 0;
+}
+
+#ifdef HAVE_XF86VMODE_GAMMA
+static gboolean
+gamma_fade_set_alpha_gamma (GSFade *fade,
+                            int screen_idx,
+                            gdouble alpha)
+{
+    struct GSFadeScreenPrivate *screen_priv;
+    gboolean res;
+
+    screen_priv = &fade->priv->screen_priv[screen_idx];
+    res = xf86_whack_gamma (screen_idx, screen_priv, alpha);
+
+    return TRUE;
+}
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+static void
+check_gamma_extension (GSFade *fade, int screen_idx)
+{
+    struct GSFadeScreenPrivate *screen_priv;
+#ifdef HAVE_XF86VMODE_GAMMA
+    int      event;
+    int      error;
+    int      major;
+    int      minor;
+    gboolean res;
+#endif /* HAVE_XF86VMODE_GAMMA */
+
+    screen_priv = &fade->priv->screen_priv[screen_idx];
+
+#ifdef HAVE_XF86VMODE_GAMMA
+    res = XF86VidModeQueryExtension (GDK_DISPLAY (), &event, &error);
+    if (! res)
+        goto fade_none;
+
+    res = safe_XF86VidModeQueryVersion (GDK_DISPLAY (), &major, &minor);
+    if (! res)
+        goto fade_none;
+
+    if (major < XF86_VIDMODE_GAMMA_MIN_MAJOR ||
+            (major == XF86_VIDMODE_GAMMA_MIN_MAJOR &&
+             minor < XF86_VIDMODE_GAMMA_MIN_MINOR))
+        goto fade_none;
+
+    screen_priv->fade_setup = gamma_fade_setup;
+    screen_priv->fade_finish = screen_fade_finish;
+    screen_priv->fade_set_alpha_gamma = gamma_fade_set_alpha_gamma;
+
+    if (major < XF86_VIDMODE_GAMMA_RAMP_MIN_MAJOR ||
+            (major == XF86_VIDMODE_GAMMA_RAMP_MIN_MAJOR &&
+             minor < XF86_VIDMODE_GAMMA_RAMP_MIN_MINOR))
+    {
+        screen_priv->fade_type = FADE_TYPE_GAMMA_NUMBER;
+        return;
+    }
+
+    /* Copacetic */
+    screen_priv->fade_type = FADE_TYPE_GAMMA_RAMP;
+    return;
+fade_none:
+#endif
+    screen_priv->fade_type = FADE_TYPE_NONE;
+}
+
+/* Xrandr support */
+
+static gboolean xrandr_fade_setup (GSFade *fade, int screen_idx)
+{
+    struct GSFadeScreenPrivate *screen_priv;
+    MateRRCrtc *crtc;
+    MateRRCrtc **crtcs;
+    int crtc_count = 0;
+    struct GSGammaInfo *info;
+    gboolean res;
+
+    screen_priv = &fade->priv->screen_priv[screen_idx];
+
+    if (screen_priv->info)
+        return TRUE;
+
+    /* refresh the screen info */
+    mate_rr_screen_refresh (screen_priv->rrscreen, NULL);
+
+    crtcs = mate_rr_screen_list_crtcs (screen_priv->rrscreen);
+    while (*crtcs)
+    {
+        crtc_count++;
+        crtcs++;
+    };
+
+    screen_priv->info = g_new0 (struct GSGammaInfo, crtc_count);
+    screen_priv->num_ramps = crtc_count;
+
+    crtc_count = 0;
+    crtcs = mate_rr_screen_list_crtcs (screen_priv->rrscreen);
+    while (*crtcs)
+    {
+        crtc = *crtcs;
+
+        info = &screen_priv->info[crtc_count];
+
+        /* if no mode ignore crtc */
+        if (!mate_rr_crtc_get_current_mode (crtc))
+        {
+            info->size = 0;
+            info->r = NULL;
+            info->g = NULL;
+            info->b = NULL;
+        }
+        else
+        {
+            res = mate_rr_crtc_get_gamma (crtc, &info->size,
+                                          &info->r, &info->g,
+                                          &info->b);
+            if (res == FALSE)
+                goto fail;
+        }
+
+        crtcs++;
+        crtc_count++;
+    }
+    return TRUE;
+fail:
+    return FALSE;
+}
+
+static void xrandr_crtc_whack_gamma (MateRRCrtc *crtc,
+                                     struct GSGammaInfo *gamma_info,
+                                     float            ratio)
+{
+    unsigned short *r, *g, *b;
+    int i;
+
+    if (gamma_info->size == 0)
+        return;
+
+    if (ratio < 0)
+    {
+        ratio = 0;
+    }
+    if (ratio > 1)
+    {
+        ratio = 1;
+    }
+
+    r = g_new0 (unsigned short, gamma_info->size);
+    g = g_new0 (unsigned short, gamma_info->size);
+    b = g_new0 (unsigned short, gamma_info->size);
+
+    for (i = 0; i < gamma_info->size; i++)
+    {
+        r[i] = gamma_info->r[i] * ratio;
+        g[i] = gamma_info->g[i] * ratio;
+        b[i] = gamma_info->b[i] * ratio;
+    }
+
+    mate_rr_crtc_set_gamma (crtc, gamma_info->size,
+                            r, g, b);
+    g_free (r);
+    g_free (g);
+    g_free (b);
+}
+
+static gboolean xrandr_fade_set_alpha_gamma (GSFade *fade,
+        int screen_idx,
+        gdouble alpha)
+{
+    struct GSFadeScreenPrivate *screen_priv;
+    struct GSGammaInfo *info;
+    MateRRCrtc **crtcs;
+    int i;
+
+    screen_priv = &fade->priv->screen_priv[screen_idx];
+
+    if (!screen_priv->info)
+        return FALSE;
+
+    crtcs = mate_rr_screen_list_crtcs (screen_priv->rrscreen);
+    i = 0;
+
+    while (*crtcs)
+    {
+        info = &screen_priv->info[i];
+        xrandr_crtc_whack_gamma (*crtcs, info, alpha);
+        i++;
+        crtcs++;
+    }
+    return TRUE;
+}
+
+static void
+check_randr_extension (GSFade *fade, int screen_idx)
+{
+    GdkDisplay *display = gdk_display_get_default ();
+    GdkScreen *screen = gdk_display_get_screen (display, screen_idx);
+    struct GSFadeScreenPrivate *screen_priv;
+
+    screen_priv = &fade->priv->screen_priv[screen_idx];
+
+    screen_priv->rrscreen = mate_rr_screen_new (screen,
+                            NULL,
+                            NULL,
+                            NULL);
+    if (!screen_priv->rrscreen)
+    {
+        screen_priv->fade_type = FADE_TYPE_NONE;
+        return;
+    }
+
+    screen_priv->fade_type = FADE_TYPE_XRANDR;
+    screen_priv->fade_setup = xrandr_fade_setup;
+    screen_priv->fade_finish = screen_fade_finish;
+    screen_priv->fade_set_alpha_gamma = xrandr_fade_set_alpha_gamma;
+}
+
+static gboolean
+gs_fade_set_alpha (GSFade *fade,
+                   gdouble alpha)
+{
+    gboolean ret = FALSE;
+    int i;
+
+    for (i = 0; i < fade->priv->num_screens; i++)
+    {
+        switch (fade->priv->screen_priv[i].fade_type)
+        {
+        case FADE_TYPE_GAMMA_RAMP:
+        case FADE_TYPE_GAMMA_NUMBER:
+        case FADE_TYPE_XRANDR:
+            ret = fade->priv->screen_priv[i].fade_set_alpha_gamma (fade, i, alpha);
+            break;
+        case FADE_TYPE_NONE:
+            ret = FALSE;
+            break;
+        default:
+            g_warning ("Unknown fade type");
+            ret = FALSE;
+            break;
+        }
+    }
+    return ret;
+}
+
+static gboolean
+gs_fade_out_iter (GSFade *fade)
+{
+    gboolean ret;
+
+    if (fade->priv->current_alpha < 0.01)
+    {
+        return FALSE;
+    }
+
+    fade->priv->current_alpha -= fade->priv->alpha_per_iter;
+
+    ret = gs_fade_set_alpha (fade, fade->priv->current_alpha);
+
+    return ret;
+}
+
+static gboolean
+gs_fade_stop (GSFade *fade)
+{
+    if (fade->priv->timer_id > 0)
+    {
+        g_source_remove (fade->priv->timer_id);
+        fade->priv->timer_id = 0;
+    }
+
+    fade->priv->step = 0;
+    fade->priv->active = FALSE;
+
+    return TRUE;
+}
+
+void
+gs_fade_finish (GSFade *fade)
+{
+    g_return_if_fail (GS_IS_FADE (fade));
+
+    if (! fade->priv->active)
+    {
+        return;
+    }
+
+    gs_fade_stop (fade);
+
+    g_signal_emit (fade, signals [FADED], 0);
+
+    fade->priv->active = FALSE;
+}
+
+static gboolean
+fade_out_timer (GSFade *fade)
+{
+    gboolean res;
+
+    res = gs_fade_out_iter (fade);
+
+    /* if failed then fade is complete */
+    if (! res)
+    {
+        gs_fade_finish (fade);
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+gboolean
+gs_fade_get_active (GSFade *fade)
+{
+    g_return_val_if_fail (GS_IS_FADE (fade), FALSE);
+
+    return fade->priv->active;
+}
+
+static void
+gs_fade_set_timeout (GSFade   *fade,
+                     guint     timeout)
+{
+    g_return_if_fail (GS_IS_FADE (fade));
+
+    fade->priv->timeout = timeout;
+}
+
+static void
+gs_fade_start (GSFade *fade,
+               guint   timeout)
+{
+    guint steps_per_sec = 30;
+    guint msecs_per_step;
+    struct GSFadeScreenPrivate *screen_priv;
+    gboolean active_fade, res;
+    int i;
+
+    g_return_if_fail (GS_IS_FADE (fade));
+
+    for (i = 0; i < fade->priv->num_screens; i++)
+    {
+        screen_priv = &fade->priv->screen_priv[i];
+        if (screen_priv->fade_type != FADE_TYPE_NONE)
+        {
+            res = screen_priv->fade_setup (fade, i);
+            if (res == FALSE)
+                return;
+        }
+    }
+
+    if (fade->priv->timer_id > 0)
+    {
+        gs_fade_stop (fade);
+    }
+
+    fade->priv->active = TRUE;
+
+    gs_fade_set_timeout (fade, timeout);
+
+    active_fade = FALSE;
+    for (i = 0; i < fade->priv->num_screens; i++)
+    {
+        screen_priv = &fade->priv->screen_priv[i];
+        if (screen_priv->fade_type != FADE_TYPE_NONE)
+            active_fade = TRUE;
+    }
+    if (active_fade)
+    {
+        guint num_steps;
+
+        num_steps = (fade->priv->timeout / 1000) * steps_per_sec;
+        msecs_per_step = 1000 / steps_per_sec;
+        fade->priv->alpha_per_iter = 1.0 / (gdouble)num_steps;
+
+        fade->priv->timer_id = g_timeout_add (msecs_per_step, (GSourceFunc)fade_out_timer, fade);
+    }
+    else
+    {
+        gs_fade_finish (fade);
+    }
+}
+
+typedef struct
+{
+    GSFadeDoneFunc done_cb;
+    gpointer       data;
+} FadedCallbackData;
+
+static void
+gs_fade_async_callback (GSFade            *fade,
+                        FadedCallbackData *cdata)
+{
+    g_signal_handlers_disconnect_by_func (fade,
+                                          gs_fade_async_callback,
+                                          cdata);
+
+    if (cdata->done_cb)
+    {
+        cdata->done_cb (fade, cdata->data);
+    }
+
+    g_free (cdata);
+}
+
+void
+gs_fade_async (GSFade        *fade,
+               guint          timeout,
+               GSFadeDoneFunc func,
+               gpointer       data)
+{
+    g_return_if_fail (GS_IS_FADE (fade));
+
+    /* if fade is active then pause it */
+    if (fade->priv->active)
+    {
+        gs_fade_stop (fade);
+    }
+
+    if (func)
+    {
+        FadedCallbackData *cb_data;
+
+        cb_data = g_new0 (FadedCallbackData, 1);
+        cb_data->done_cb = func;
+        cb_data->data = data;
+
+        g_signal_connect (fade, "faded",
+                          G_CALLBACK (gs_fade_async_callback),
+                          cb_data);
+    }
+
+    gs_fade_start (fade, timeout);
+}
+
+static void
+gs_fade_sync_callback (GSFade *fade,
+                       int    *flag)
+{
+    *flag = TRUE;
+    g_signal_handlers_disconnect_by_func (fade,
+                                          gs_fade_sync_callback,
+                                          flag);
+}
+
+void
+gs_fade_sync (GSFade        *fade,
+              guint          timeout)
+{
+    int      flag = FALSE;
+
+    g_return_if_fail (GS_IS_FADE (fade));
+
+    /* if fade is active then pause it */
+    if (fade->priv->active)
+    {
+        gs_fade_stop (fade);
+    }
+
+    g_signal_connect (fade, "faded",
+                      G_CALLBACK (gs_fade_sync_callback),
+                      &flag);
+
+    gs_fade_start (fade, timeout);
+
+    while (! flag)
+    {
+        gtk_main_iteration ();
+    }
+}
+
+void
+gs_fade_reset (GSFade *fade)
+{
+    int i;
+    g_return_if_fail (GS_IS_FADE (fade));
+
+    gs_debug ("Resetting fade");
+
+    if (fade->priv->active)
+    {
+        gs_fade_stop (fade);
+    }
+
+    fade->priv->current_alpha = 1.0;
+
+    gs_fade_set_alpha (fade, fade->priv->current_alpha);
+
+    for (i = 0; i < fade->priv->num_screens; i++)
+        fade->priv->screen_priv[i].fade_finish (fade, i);
+}
+
+static void
+gs_fade_class_init (GSFadeClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize = gs_fade_finalize;
+
+    signals [FADED] =
+        g_signal_new ("faded",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSFadeClass, faded),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0, G_TYPE_NONE);
+
+    g_type_class_add_private (klass, sizeof (GSFadePrivate));
+}
+
+static void
+gs_fade_init (GSFade *fade)
+{
+    GdkDisplay *display;
+    int i;
+
+    fade->priv = GS_FADE_GET_PRIVATE (fade);
+
+    fade->priv->timeout = 1000;
+    fade->priv->current_alpha = 1.0;
+
+    display = gdk_display_get_default ();
+    fade->priv->num_screens = gdk_display_get_n_screens (display);
+
+    fade->priv->screen_priv = g_new0 (struct GSFadeScreenPrivate, fade->priv->num_screens);
+
+    for (i = 0; i < fade->priv->num_screens; i++)
+    {
+        check_randr_extension (fade, i);
+        if (!fade->priv->screen_priv[i].fade_type)
+            check_gamma_extension (fade, i);
+        gs_debug ("Fade type: %d", fade->priv->screen_priv[i].fade_type);
+    }
+}
+
+static void
+gs_fade_finalize (GObject *object)
+{
+    GSFade *fade;
+    int i;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_FADE (object));
+
+    fade = GS_FADE (object);
+
+    g_return_if_fail (fade->priv != NULL);
+
+    for (i = 0; i < fade->priv->num_screens; i++)
+        fade->priv->screen_priv[i].fade_finish(fade, i);
+
+    if (fade->priv->screen_priv)
+    {
+        for (i = 0; i < fade->priv->num_screens; i++)
+        {
+            if (!fade->priv->screen_priv[i].rrscreen)
+                continue;
+            mate_rr_screen_destroy (fade->priv->screen_priv[i].rrscreen);
+        }
+
+        g_free (fade->priv->screen_priv);
+        fade->priv->screen_priv = NULL;
+    }
+
+    G_OBJECT_CLASS (gs_fade_parent_class)->finalize (object);
+}
+
+GSFade *
+gs_fade_new (void)
+{
+    if (fade_object)
+    {
+        g_object_ref (fade_object);
+    }
+    else
+    {
+        fade_object = g_object_new (GS_TYPE_FADE, NULL);
+        g_object_add_weak_pointer (fade_object,
+                                   (gpointer *) &fade_object);
+    }
+
+    return GS_FADE (fade_object);
+}
diff --git a/src/gs-fade.h b/src/gs-fade.h
new file mode 100644
index 0000000..65f3e7f
--- /dev/null
+++ b/src/gs-fade.h
@@ -0,0 +1,77 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_FADE_H
+#define __GS_FADE_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_FADE         (gs_fade_get_type ())
+#define GS_FADE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_FADE, GSFade))
+#define GS_FADE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_FADE, GSFadeClass))
+#define GS_IS_FADE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_FADE))
+#define GS_IS_FADE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_FADE))
+#define GS_FADE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_FADE, GSFadeClass))
+
+
+typedef struct GSFadePrivate GSFadePrivate;
+
+typedef struct
+{
+	GObject        parent;
+	GSFadePrivate *priv;
+} GSFade;
+
+typedef struct
+{
+	GObjectClass   parent_class;
+
+	void          (* faded)        (GSFade *fade);
+} GSFadeClass;
+
+typedef void  (* GSFadeDoneFunc) (GSFade       *fade,
+                                  gpointer      data);
+
+
+GType       gs_fade_get_type         (void);
+
+GSFade    * gs_fade_new              (void);
+
+void        gs_fade_async            (GSFade        *fade,
+                                      guint          timeout,
+                                      GSFadeDoneFunc done_cb,
+                                      gpointer       data);
+void        gs_fade_sync             (GSFade        *fade,
+                                      guint          timeout);
+
+void        gs_fade_finish           (GSFade    *fade);
+void        gs_fade_reset            (GSFade    *fade);
+
+gboolean    gs_fade_get_active       (GSFade    *fade);
+
+gboolean    gs_fade_get_enabled      (GSFade    *fade);
+void        gs_fade_set_enabled      (GSFade    *fade,
+                                      gboolean   enabled);
+
+G_END_DECLS
+
+#endif /* __GS_FADE_H */
diff --git a/src/gs-fade.h.orig b/src/gs-fade.h.orig
new file mode 100644
index 0000000..bfa7c2a
--- /dev/null
+++ b/src/gs-fade.h.orig
@@ -0,0 +1,77 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_FADE_H
+#define __GS_FADE_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_FADE         (gs_fade_get_type ())
+#define GS_FADE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_FADE, GSFade))
+#define GS_FADE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_FADE, GSFadeClass))
+#define GS_IS_FADE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_FADE))
+#define GS_IS_FADE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_FADE))
+#define GS_FADE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_FADE, GSFadeClass))
+
+
+typedef struct GSFadePrivate GSFadePrivate;
+
+typedef struct
+{
+    GObject        parent;
+    GSFadePrivate *priv;
+} GSFade;
+
+typedef struct
+{
+    GObjectClass   parent_class;
+
+    void          (* faded)        (GSFade *fade);
+} GSFadeClass;
+
+typedef void  (* GSFadeDoneFunc) (GSFade       *fade,
+                                  gpointer      data);
+
+
+GType       gs_fade_get_type         (void);
+
+GSFade    * gs_fade_new              (void);
+
+void        gs_fade_async            (GSFade        *fade,
+                                      guint          timeout,
+                                      GSFadeDoneFunc done_cb,
+                                      gpointer       data);
+void        gs_fade_sync             (GSFade        *fade,
+                                      guint          timeout);
+
+void        gs_fade_finish           (GSFade    *fade);
+void        gs_fade_reset            (GSFade    *fade);
+
+gboolean    gs_fade_get_active       (GSFade    *fade);
+
+gboolean    gs_fade_get_enabled      (GSFade    *fade);
+void        gs_fade_set_enabled      (GSFade    *fade,
+                                      gboolean   enabled);
+
+G_END_DECLS
+
+#endif /* __GS_FADE_H */
diff --git a/src/gs-grab-x11.c b/src/gs-grab-x11.c
new file mode 100644
index 0000000..9eca1ec
--- /dev/null
+++ b/src/gs-grab-x11.c
@@ -0,0 +1,672 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#ifdef HAVE_XF86MISCSETGRABKEYSSTATE
+# include <X11/extensions/xf86misc.h>
+#endif /* HAVE_XF86MISCSETGRABKEYSSTATE */
+
+#include "gs-window.h"
+#include "gs-grab.h"
+#include "gs-debug.h"
+
+static void     gs_grab_class_init (GSGrabClass *klass);
+static void     gs_grab_init       (GSGrab      *grab);
+static void     gs_grab_finalize   (GObject        *object);
+
+#define GS_GRAB_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_GRAB, GSGrabPrivate))
+
+G_DEFINE_TYPE (GSGrab, gs_grab, G_TYPE_OBJECT)
+
+static gpointer grab_object = NULL;
+
+struct GSGrabPrivate
+{
+	guint      mouse_hide_cursor : 1;
+	GdkWindow *mouse_grab_window;
+	GdkWindow *keyboard_grab_window;
+	GdkScreen *mouse_grab_screen;
+	GdkScreen *keyboard_grab_screen;
+
+	GtkWidget *invisible;
+};
+
+static GdkCursor *
+get_cursor (void)
+{
+	GdkBitmap *empty_bitmap;
+	GdkCursor *cursor;
+	GdkColor   useless;
+	char       invisible_cursor_bits [] = { 0x0 };
+
+	useless.red = useless.green = useless.blue = 0;
+	useless.pixel = 0;
+
+	empty_bitmap = gdk_bitmap_create_from_data (NULL,
+	               invisible_cursor_bits,
+	               1, 1);
+
+	cursor = gdk_cursor_new_from_pixmap (empty_bitmap,
+	                                     empty_bitmap,
+	                                     &useless,
+	                                     &useless, 0, 0);
+
+	g_object_unref (empty_bitmap);
+
+	return cursor;
+}
+
+static const char *
+grab_string (int status)
+{
+	switch (status)
+	{
+	case GDK_GRAB_SUCCESS:
+		return "GrabSuccess";
+	case GDK_GRAB_ALREADY_GRABBED:
+		return "AlreadyGrabbed";
+	case GDK_GRAB_INVALID_TIME:
+		return "GrabInvalidTime";
+	case GDK_GRAB_NOT_VIEWABLE:
+		return "GrabNotViewable";
+	case GDK_GRAB_FROZEN:
+		return "GrabFrozen";
+	default:
+	{
+		static char foo [255];
+		sprintf (foo, "unknown status: %d", status);
+		return foo;
+	}
+	}
+}
+
+#ifdef HAVE_XF86MISCSETGRABKEYSSTATE
+/* This function enables and disables the Ctrl-Alt-KP_star and
+   Ctrl-Alt-KP_slash hot-keys, which (in XFree86 4.2) break any
+   grabs and/or kill the grabbing client.  That would effectively
+   unlock the screen, so we don't like that.
+
+   The Ctrl-Alt-KP_star and Ctrl-Alt-KP_slash hot-keys only exist
+   if AllowDeactivateGrabs and/or AllowClosedownGrabs are turned on
+   in XF86Config.  I believe they are disabled by default.
+
+   This does not affect any other keys (specifically Ctrl-Alt-BS or
+   Ctrl-Alt-F1) but I wish it did.  Maybe it will someday.
+ */
+static void
+xorg_lock_smasher_set_active (GSGrab  *grab,
+                              gboolean active)
+{
+	int status, event, error;
+
+	if (!XF86MiscQueryExtension (GDK_DISPLAY (), &event, &error))
+	{
+		gs_debug ("No XFree86-Misc extension present");
+		return;
+	}
+
+	if (active)
+	{
+		gs_debug ("Enabling the x.org grab smasher");
+	}
+	else
+	{
+		gs_debug ("Disabling the x.org grab smasher");
+	}
+
+	gdk_error_trap_push ();
+
+	status = XF86MiscSetGrabKeysState (GDK_DISPLAY (), active);
+
+	gdk_display_sync (gdk_display_get_default ());
+	gdk_error_trap_pop ();
+
+	if (active && status == MiscExtGrabStateAlready)
+	{
+		/* shut up, consider this success */
+		status = MiscExtGrabStateSuccess;
+	}
+
+	gs_debug ("XF86MiscSetGrabKeysState(%s) returned %s\n",
+	          active ? "on" : "off",
+	          (status == MiscExtGrabStateSuccess ? "MiscExtGrabStateSuccess" :
+	           status == MiscExtGrabStateLocked  ? "MiscExtGrabStateLocked"  :
+	           status == MiscExtGrabStateAlready ? "MiscExtGrabStateAlready" :
+	           "unknown value"));
+}
+#else
+static void
+xorg_lock_smasher_set_active (GSGrab  *grab,
+                              gboolean active)
+{
+}
+#endif /* HAVE_XF86MISCSETGRABKEYSSTATE */
+
+static int
+gs_grab_get_keyboard (GSGrab    *grab,
+                      GdkWindow *window,
+                      GdkScreen *screen)
+{
+	GdkGrabStatus status;
+
+	g_return_val_if_fail (window != NULL, FALSE);
+	g_return_val_if_fail (screen != NULL, FALSE);
+
+	gs_debug ("Grabbing keyboard widget=%X", (guint32) GDK_WINDOW_XID (window));
+	status = gdk_keyboard_grab (window, FALSE, GDK_CURRENT_TIME);
+
+	if (status == GDK_GRAB_SUCCESS)
+	{
+		if (grab->priv->keyboard_grab_window != NULL)
+		{
+			g_object_remove_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
+			                              (gpointer *) &grab->priv->keyboard_grab_window);
+		}
+		grab->priv->keyboard_grab_window = window;
+
+		g_object_add_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
+		                           (gpointer *) &grab->priv->keyboard_grab_window);
+
+		grab->priv->keyboard_grab_screen = screen;
+	}
+	else
+	{
+		gs_debug ("Couldn't grab keyboard!  (%s)", grab_string (status));
+	}
+
+	return status;
+}
+
+static int
+gs_grab_get_mouse (GSGrab    *grab,
+                   GdkWindow *window,
+                   GdkScreen *screen,
+                   gboolean   hide_cursor)
+{
+	GdkGrabStatus status;
+	GdkCursor    *cursor;
+
+	g_return_val_if_fail (window != NULL, FALSE);
+	g_return_val_if_fail (screen != NULL, FALSE);
+
+	cursor = get_cursor ();
+
+	gs_debug ("Grabbing mouse widget=%X", (guint32) GDK_WINDOW_XID (window));
+	status = gdk_pointer_grab (window, TRUE, 0, NULL,
+	                           (hide_cursor ? cursor : NULL),
+	                           GDK_CURRENT_TIME);
+
+	if (status == GDK_GRAB_SUCCESS)
+	{
+		if (grab->priv->mouse_grab_window != NULL)
+		{
+			g_object_remove_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
+			                              (gpointer *) &grab->priv->mouse_grab_window);
+		}
+		grab->priv->mouse_grab_window = window;
+
+		g_object_add_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
+		                           (gpointer *) &grab->priv->mouse_grab_window);
+
+		grab->priv->mouse_grab_screen = screen;
+		grab->priv->mouse_hide_cursor = hide_cursor;
+	}
+
+	gdk_cursor_unref (cursor);
+
+	return status;
+}
+
+void
+gs_grab_keyboard_reset (GSGrab *grab)
+{
+	if (grab->priv->keyboard_grab_window != NULL)
+	{
+		g_object_remove_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
+		                              (gpointer *) &grab->priv->keyboard_grab_window);
+	}
+	grab->priv->keyboard_grab_window = NULL;
+	grab->priv->keyboard_grab_screen = NULL;
+}
+
+static gboolean
+gs_grab_release_keyboard (GSGrab *grab)
+{
+	gs_debug ("Ungrabbing keyboard");
+	gdk_keyboard_ungrab (GDK_CURRENT_TIME);
+
+	gs_grab_keyboard_reset (grab);
+
+	return TRUE;
+}
+
+void
+gs_grab_mouse_reset (GSGrab *grab)
+{
+	if (grab->priv->mouse_grab_window != NULL)
+	{
+		g_object_remove_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
+		                              (gpointer *) &grab->priv->mouse_grab_window);
+	}
+
+	grab->priv->mouse_grab_window = NULL;
+	grab->priv->mouse_grab_screen = NULL;
+}
+
+gboolean
+gs_grab_release_mouse (GSGrab *grab)
+{
+	gs_debug ("Ungrabbing pointer");
+	gdk_pointer_ungrab (GDK_CURRENT_TIME);
+
+	gs_grab_mouse_reset (grab);
+
+	return TRUE;
+}
+
+static gboolean
+gs_grab_move_mouse (GSGrab    *grab,
+                    GdkWindow *window,
+                    GdkScreen *screen,
+                    gboolean   hide_cursor)
+{
+	gboolean   result;
+	GdkWindow *old_window;
+	GdkScreen *old_screen;
+	gboolean   old_hide_cursor;
+
+	/* if the pointer is not grabbed and we have a
+	   mouse_grab_window defined then we lost the grab */
+	if (! gdk_pointer_is_grabbed ())
+	{
+		gs_grab_mouse_reset (grab);
+	}
+
+	if (grab->priv->mouse_grab_window == window)
+	{
+		gs_debug ("Window %X is already grabbed, skipping",
+		          (guint32) GDK_WINDOW_XID (grab->priv->mouse_grab_window));
+		return TRUE;
+	}
+
+#if 0
+	gs_debug ("Intentionally skipping move pointer grabs");
+	/* FIXME: GTK doesn't like having the pointer grabbed */
+	return TRUE;
+#else
+	if (grab->priv->mouse_grab_window)
+	{
+		gs_debug ("Moving pointer grab from %X to %X",
+		          (guint32) GDK_WINDOW_XID (grab->priv->mouse_grab_window),
+		          (guint32) GDK_WINDOW_XID (window));
+	}
+	else
+	{
+		gs_debug ("Getting pointer grab on %X",
+		          (guint32) GDK_WINDOW_XID (window));
+	}
+#endif
+
+	gs_debug ("*** doing X server grab");
+	gdk_x11_grab_server ();
+
+	old_window = grab->priv->mouse_grab_window;
+	old_screen = grab->priv->mouse_grab_screen;
+	old_hide_cursor = grab->priv->mouse_hide_cursor;
+
+	if (old_window)
+	{
+		gs_grab_release_mouse (grab);
+	}
+
+	result = gs_grab_get_mouse (grab, window, screen, hide_cursor);
+
+	if (result != GDK_GRAB_SUCCESS)
+	{
+		sleep (1);
+		result = gs_grab_get_mouse (grab, window, screen, hide_cursor);
+	}
+
+	if ((result != GDK_GRAB_SUCCESS) && old_window)
+	{
+		gs_debug ("Could not grab mouse for new window.  Resuming previous grab.");
+		gs_grab_get_mouse (grab, old_window, old_screen, old_hide_cursor);
+	}
+
+	gs_debug ("*** releasing X server grab");
+	gdk_x11_ungrab_server ();
+	gdk_flush ();
+
+	return (result == GDK_GRAB_SUCCESS);
+}
+
+static gboolean
+gs_grab_move_keyboard (GSGrab    *grab,
+                       GdkWindow *window,
+                       GdkScreen *screen)
+{
+	gboolean   result;
+	GdkWindow *old_window;
+	GdkScreen *old_screen;
+
+	if (grab->priv->keyboard_grab_window == window)
+	{
+		gs_debug ("Window %X is already grabbed, skipping",
+		          (guint32) GDK_WINDOW_XID (grab->priv->keyboard_grab_window));
+		return TRUE;
+	}
+
+	if (grab->priv->keyboard_grab_window != NULL)
+	{
+		gs_debug ("Moving keyboard grab from %X to %X",
+		          (guint32) GDK_WINDOW_XID (grab->priv->keyboard_grab_window),
+		          (guint32) GDK_WINDOW_XID (window));
+	}
+	else
+	{
+		gs_debug ("Getting keyboard grab on %X",
+		          (guint32) GDK_WINDOW_XID (window));
+
+	}
+
+	gs_debug ("*** doing X server grab");
+	gdk_x11_grab_server ();
+
+	old_window = grab->priv->keyboard_grab_window;
+	old_screen = grab->priv->keyboard_grab_screen;
+
+	if (old_window)
+	{
+		gs_grab_release_keyboard (grab);
+	}
+
+	result = gs_grab_get_keyboard (grab, window, screen);
+
+	if (result != GDK_GRAB_SUCCESS)
+	{
+		sleep (1);
+		result = gs_grab_get_keyboard (grab, window, screen);
+	}
+
+	if ((result != GDK_GRAB_SUCCESS) && old_window)
+	{
+		gs_debug ("Could not grab keyboard for new window.  Resuming previous grab.");
+		gs_grab_get_keyboard (grab, old_window, old_screen);
+	}
+
+	gs_debug ("*** releasing X server grab");
+	gdk_x11_ungrab_server ();
+	gdk_flush ();
+
+	return (result == GDK_GRAB_SUCCESS);
+}
+
+static void
+gs_grab_nuke_focus (void)
+{
+	Window focus = 0;
+	int    rev = 0;
+
+	gs_debug ("Nuking focus");
+
+	gdk_error_trap_push ();
+
+	XGetInputFocus (GDK_DISPLAY (), &focus, &rev);
+
+	XSetInputFocus (GDK_DISPLAY (), None, RevertToNone, CurrentTime);
+
+	gdk_display_sync (gdk_display_get_default ());
+	gdk_error_trap_pop ();
+}
+
+void
+gs_grab_release (GSGrab *grab)
+{
+	gs_debug ("Releasing all grabs");
+
+	gs_grab_release_mouse (grab);
+	gs_grab_release_keyboard (grab);
+
+	/* FIXME: is it right to enable this ? */
+	xorg_lock_smasher_set_active (grab, TRUE);
+
+	gdk_display_sync (gdk_display_get_default ());
+	gdk_flush ();
+}
+
+gboolean
+gs_grab_grab_window (GSGrab    *grab,
+                     GdkWindow *window,
+                     GdkScreen *screen,
+                     gboolean   hide_cursor)
+{
+	gboolean mstatus = FALSE;
+	gboolean kstatus = FALSE;
+	int      i;
+	int      retries = 4;
+	gboolean focus_fuckus = FALSE;
+
+AGAIN:
+
+	for (i = 0; i < retries; i++)
+	{
+		kstatus = gs_grab_get_keyboard (grab, window, screen);
+		if (kstatus == GDK_GRAB_SUCCESS)
+		{
+			break;
+		}
+
+		/* else, wait a second and try to grab again. */
+		sleep (1);
+	}
+
+	if (kstatus != GDK_GRAB_SUCCESS)
+	{
+		if (!focus_fuckus)
+		{
+			focus_fuckus = TRUE;
+			gs_grab_nuke_focus ();
+			goto AGAIN;
+		}
+	}
+
+	for (i = 0; i < retries; i++)
+	{
+		mstatus = gs_grab_get_mouse (grab, window, screen, hide_cursor);
+		if (mstatus == GDK_GRAB_SUCCESS)
+		{
+			break;
+		}
+
+		/* else, wait a second and try to grab again. */
+		sleep (1);
+	}
+
+	if (mstatus != GDK_GRAB_SUCCESS)
+	{
+		gs_debug ("Couldn't grab pointer!  (%s)",
+		          grab_string (mstatus));
+	}
+
+#if 0
+	/* FIXME: release the pointer grab so GTK will work */
+	gs_grab_release_mouse (grab);
+#endif
+
+	/* When should we allow blanking to proceed?  The current theory
+	   is that both a keyboard grab and a mouse grab are mandatory
+
+	   - If we don't have a keyboard grab, then we won't be able to
+	   read a password to unlock, so the kbd grab is manditory.
+
+	   - If we don't have a mouse grab, then we might not see mouse
+	   clicks as a signal to unblank, on-screen widgets won't work ideally,
+	   and gs_grab_move_to_window() will spin forever when it gets called.
+	*/
+
+	if (kstatus != GDK_GRAB_SUCCESS || mstatus != GDK_GRAB_SUCCESS)
+	{
+		/* Do not blank without a keyboard and mouse grabs. */
+
+		/* Release keyboard or mouse which was grabbed. */
+		if (kstatus == GDK_GRAB_SUCCESS)
+		{
+			gs_grab_release_keyboard (grab);
+		}
+		if (mstatus == GDK_GRAB_SUCCESS)
+		{
+			gs_grab_release_mouse (grab);
+		}
+
+		return FALSE;
+	}
+
+	/* Grab is good, go ahead and blank.  */
+	return TRUE;
+}
+
+/* this is used to grab the keyboard and mouse to the root */
+gboolean
+gs_grab_grab_root (GSGrab  *grab,
+                   gboolean hide_cursor)
+{
+	GdkDisplay *display;
+	GdkWindow  *root;
+	GdkScreen  *screen;
+	gboolean    res;
+
+	gs_debug ("Grabbing the root window");
+
+	display = gdk_display_get_default ();
+	gdk_display_get_pointer (display, &screen, NULL, NULL, NULL);
+	root = gdk_screen_get_root_window (screen);
+
+	res = gs_grab_grab_window (grab, root, screen, hide_cursor);
+
+	return res;
+}
+
+/* this is used to grab the keyboard and mouse to an offscreen window */
+gboolean
+gs_grab_grab_offscreen (GSGrab *grab,
+                        gboolean hide_cursor)
+{
+	GdkScreen *screen;
+	gboolean   res;
+
+	gs_debug ("Grabbing an offscreen window");
+
+	screen = gtk_invisible_get_screen (GTK_INVISIBLE (grab->priv->invisible));
+	res = gs_grab_grab_window (grab, grab->priv->invisible->window, screen, hide_cursor);
+
+	return res;
+}
+
+/* This is similar to gs_grab_grab_window but doesn't fail */
+void
+gs_grab_move_to_window (GSGrab    *grab,
+                        GdkWindow *window,
+                        GdkScreen *screen,
+                        gboolean   hide_cursor)
+{
+	gboolean result = FALSE;
+
+	g_return_if_fail (GS_IS_GRAB (grab));
+
+	xorg_lock_smasher_set_active (grab, FALSE);
+
+	do
+	{
+		result = gs_grab_move_keyboard (grab, window, screen);
+		gdk_flush ();
+	}
+	while (!result);
+
+	do
+	{
+		result = gs_grab_move_mouse (grab, window, screen, hide_cursor);
+		gdk_flush ();
+	}
+	while (!result);
+}
+
+static void
+gs_grab_class_init (GSGrabClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize = gs_grab_finalize;
+
+	g_type_class_add_private (klass, sizeof (GSGrabPrivate));
+}
+
+static void
+gs_grab_init (GSGrab *grab)
+{
+	grab->priv = GS_GRAB_GET_PRIVATE (grab);
+
+	grab->priv->mouse_hide_cursor = FALSE;
+	grab->priv->invisible = gtk_invisible_new ();
+	gtk_widget_show (grab->priv->invisible);
+}
+
+static void
+gs_grab_finalize (GObject *object)
+{
+	GSGrab *grab;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_GRAB (object));
+
+	grab = GS_GRAB (object);
+
+	g_return_if_fail (grab->priv != NULL);
+
+	gtk_widget_destroy (grab->priv->invisible);
+
+	G_OBJECT_CLASS (gs_grab_parent_class)->finalize (object);
+}
+
+GSGrab *
+gs_grab_new (void)
+{
+	if (grab_object)
+	{
+		g_object_ref (grab_object);
+	}
+	else
+	{
+		grab_object = g_object_new (GS_TYPE_GRAB, NULL);
+		g_object_add_weak_pointer (grab_object,
+		                           (gpointer *) &grab_object);
+	}
+
+	return GS_GRAB (grab_object);
+}
diff --git a/src/gs-grab-x11.c.orig b/src/gs-grab-x11.c.orig
new file mode 100644
index 0000000..e6e7f22
--- /dev/null
+++ b/src/gs-grab-x11.c.orig
@@ -0,0 +1,672 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#ifdef HAVE_XF86MISCSETGRABKEYSSTATE
+# include <X11/extensions/xf86misc.h>
+#endif /* HAVE_XF86MISCSETGRABKEYSSTATE */
+
+#include "gs-window.h"
+#include "gs-grab.h"
+#include "gs-debug.h"
+
+static void     gs_grab_class_init (GSGrabClass *klass);
+static void     gs_grab_init       (GSGrab      *grab);
+static void     gs_grab_finalize   (GObject        *object);
+
+#define GS_GRAB_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_GRAB, GSGrabPrivate))
+
+G_DEFINE_TYPE (GSGrab, gs_grab, G_TYPE_OBJECT)
+
+static gpointer grab_object = NULL;
+
+struct GSGrabPrivate
+{
+    guint      mouse_hide_cursor : 1;
+    GdkWindow *mouse_grab_window;
+    GdkWindow *keyboard_grab_window;
+    GdkScreen *mouse_grab_screen;
+    GdkScreen *keyboard_grab_screen;
+
+    GtkWidget *invisible;
+};
+
+static GdkCursor *
+get_cursor (void)
+{
+    GdkBitmap *empty_bitmap;
+    GdkCursor *cursor;
+    GdkColor   useless;
+    char       invisible_cursor_bits [] = { 0x0 };
+
+    useless.red = useless.green = useless.blue = 0;
+    useless.pixel = 0;
+
+    empty_bitmap = gdk_bitmap_create_from_data (NULL,
+                   invisible_cursor_bits,
+                   1, 1);
+
+    cursor = gdk_cursor_new_from_pixmap (empty_bitmap,
+                                         empty_bitmap,
+                                         &useless,
+                                         &useless, 0, 0);
+
+    g_object_unref (empty_bitmap);
+
+    return cursor;
+}
+
+static const char *
+grab_string (int status)
+{
+    switch (status)
+    {
+    case GDK_GRAB_SUCCESS:
+        return "GrabSuccess";
+    case GDK_GRAB_ALREADY_GRABBED:
+        return "AlreadyGrabbed";
+    case GDK_GRAB_INVALID_TIME:
+        return "GrabInvalidTime";
+    case GDK_GRAB_NOT_VIEWABLE:
+        return "GrabNotViewable";
+    case GDK_GRAB_FROZEN:
+        return "GrabFrozen";
+    default:
+    {
+        static char foo [255];
+        sprintf (foo, "unknown status: %d", status);
+        return foo;
+    }
+    }
+}
+
+#ifdef HAVE_XF86MISCSETGRABKEYSSTATE
+/* This function enables and disables the Ctrl-Alt-KP_star and
+   Ctrl-Alt-KP_slash hot-keys, which (in XFree86 4.2) break any
+   grabs and/or kill the grabbing client.  That would effectively
+   unlock the screen, so we don't like that.
+
+   The Ctrl-Alt-KP_star and Ctrl-Alt-KP_slash hot-keys only exist
+   if AllowDeactivateGrabs and/or AllowClosedownGrabs are turned on
+   in XF86Config.  I believe they are disabled by default.
+
+   This does not affect any other keys (specifically Ctrl-Alt-BS or
+   Ctrl-Alt-F1) but I wish it did.  Maybe it will someday.
+ */
+static void
+xorg_lock_smasher_set_active (GSGrab  *grab,
+                              gboolean active)
+{
+    int status, event, error;
+
+    if (!XF86MiscQueryExtension (GDK_DISPLAY (), &event, &error))
+    {
+        gs_debug ("No XFree86-Misc extension present");
+        return;
+    }
+
+    if (active)
+    {
+        gs_debug ("Enabling the x.org grab smasher");
+    }
+    else
+    {
+        gs_debug ("Disabling the x.org grab smasher");
+    }
+
+    gdk_error_trap_push ();
+
+    status = XF86MiscSetGrabKeysState (GDK_DISPLAY (), active);
+
+    gdk_display_sync (gdk_display_get_default ());
+    gdk_error_trap_pop ();
+
+    if (active && status == MiscExtGrabStateAlready)
+    {
+        /* shut up, consider this success */
+        status = MiscExtGrabStateSuccess;
+    }
+
+    gs_debug ("XF86MiscSetGrabKeysState(%s) returned %s\n",
+              active ? "on" : "off",
+              (status == MiscExtGrabStateSuccess ? "MiscExtGrabStateSuccess" :
+               status == MiscExtGrabStateLocked  ? "MiscExtGrabStateLocked"  :
+               status == MiscExtGrabStateAlready ? "MiscExtGrabStateAlready" :
+               "unknown value"));
+}
+#else
+static void
+xorg_lock_smasher_set_active (GSGrab  *grab,
+                              gboolean active)
+{
+}
+#endif /* HAVE_XF86MISCSETGRABKEYSSTATE */
+
+static int
+gs_grab_get_keyboard (GSGrab    *grab,
+                      GdkWindow *window,
+                      GdkScreen *screen)
+{
+    GdkGrabStatus status;
+
+    g_return_val_if_fail (window != NULL, FALSE);
+    g_return_val_if_fail (screen != NULL, FALSE);
+
+    gs_debug ("Grabbing keyboard widget=%X", (guint32) GDK_WINDOW_XID (window));
+    status = gdk_keyboard_grab (window, FALSE, GDK_CURRENT_TIME);
+
+    if (status == GDK_GRAB_SUCCESS)
+    {
+        if (grab->priv->keyboard_grab_window != NULL)
+        {
+            g_object_remove_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
+                                          (gpointer *) &grab->priv->keyboard_grab_window);
+        }
+        grab->priv->keyboard_grab_window = window;
+
+        g_object_add_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
+                                   (gpointer *) &grab->priv->keyboard_grab_window);
+
+        grab->priv->keyboard_grab_screen = screen;
+    }
+    else
+    {
+        gs_debug ("Couldn't grab keyboard!  (%s)", grab_string (status));
+    }
+
+    return status;
+}
+
+static int
+gs_grab_get_mouse (GSGrab    *grab,
+                   GdkWindow *window,
+                   GdkScreen *screen,
+                   gboolean   hide_cursor)
+{
+    GdkGrabStatus status;
+    GdkCursor    *cursor;
+
+    g_return_val_if_fail (window != NULL, FALSE);
+    g_return_val_if_fail (screen != NULL, FALSE);
+
+    cursor = get_cursor ();
+
+    gs_debug ("Grabbing mouse widget=%X", (guint32) GDK_WINDOW_XID (window));
+    status = gdk_pointer_grab (window, TRUE, 0, NULL,
+                               (hide_cursor ? cursor : NULL),
+                               GDK_CURRENT_TIME);
+
+    if (status == GDK_GRAB_SUCCESS)
+    {
+        if (grab->priv->mouse_grab_window != NULL)
+        {
+            g_object_remove_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
+                                          (gpointer *) &grab->priv->mouse_grab_window);
+        }
+        grab->priv->mouse_grab_window = window;
+
+        g_object_add_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
+                                   (gpointer *) &grab->priv->mouse_grab_window);
+
+        grab->priv->mouse_grab_screen = screen;
+        grab->priv->mouse_hide_cursor = hide_cursor;
+    }
+
+    gdk_cursor_unref (cursor);
+
+    return status;
+}
+
+void
+gs_grab_keyboard_reset (GSGrab *grab)
+{
+    if (grab->priv->keyboard_grab_window != NULL)
+    {
+        g_object_remove_weak_pointer (G_OBJECT (grab->priv->keyboard_grab_window),
+                                      (gpointer *) &grab->priv->keyboard_grab_window);
+    }
+    grab->priv->keyboard_grab_window = NULL;
+    grab->priv->keyboard_grab_screen = NULL;
+}
+
+static gboolean
+gs_grab_release_keyboard (GSGrab *grab)
+{
+    gs_debug ("Ungrabbing keyboard");
+    gdk_keyboard_ungrab (GDK_CURRENT_TIME);
+
+    gs_grab_keyboard_reset (grab);
+
+    return TRUE;
+}
+
+void
+gs_grab_mouse_reset (GSGrab *grab)
+{
+    if (grab->priv->mouse_grab_window != NULL)
+    {
+        g_object_remove_weak_pointer (G_OBJECT (grab->priv->mouse_grab_window),
+                                      (gpointer *) &grab->priv->mouse_grab_window);
+    }
+
+    grab->priv->mouse_grab_window = NULL;
+    grab->priv->mouse_grab_screen = NULL;
+}
+
+gboolean
+gs_grab_release_mouse (GSGrab *grab)
+{
+    gs_debug ("Ungrabbing pointer");
+    gdk_pointer_ungrab (GDK_CURRENT_TIME);
+
+    gs_grab_mouse_reset (grab);
+
+    return TRUE;
+}
+
+static gboolean
+gs_grab_move_mouse (GSGrab    *grab,
+                    GdkWindow *window,
+                    GdkScreen *screen,
+                    gboolean   hide_cursor)
+{
+    gboolean   result;
+    GdkWindow *old_window;
+    GdkScreen *old_screen;
+    gboolean   old_hide_cursor;
+
+    /* if the pointer is not grabbed and we have a
+       mouse_grab_window defined then we lost the grab */
+    if (! gdk_pointer_is_grabbed ())
+    {
+        gs_grab_mouse_reset (grab);
+    }
+
+    if (grab->priv->mouse_grab_window == window)
+    {
+        gs_debug ("Window %X is already grabbed, skipping",
+                  (guint32) GDK_WINDOW_XID (grab->priv->mouse_grab_window));
+        return TRUE;
+    }
+
+#if 0
+    gs_debug ("Intentionally skipping move pointer grabs");
+    /* FIXME: GTK doesn't like having the pointer grabbed */
+    return TRUE;
+#else
+    if (grab->priv->mouse_grab_window)
+    {
+        gs_debug ("Moving pointer grab from %X to %X",
+                  (guint32) GDK_WINDOW_XID (grab->priv->mouse_grab_window),
+                  (guint32) GDK_WINDOW_XID (window));
+    }
+    else
+    {
+        gs_debug ("Getting pointer grab on %X",
+                  (guint32) GDK_WINDOW_XID (window));
+    }
+#endif
+
+    gs_debug ("*** doing X server grab");
+    gdk_x11_grab_server ();
+
+    old_window = grab->priv->mouse_grab_window;
+    old_screen = grab->priv->mouse_grab_screen;
+    old_hide_cursor = grab->priv->mouse_hide_cursor;
+
+    if (old_window)
+    {
+        gs_grab_release_mouse (grab);
+    }
+
+    result = gs_grab_get_mouse (grab, window, screen, hide_cursor);
+
+    if (result != GDK_GRAB_SUCCESS)
+    {
+        sleep (1);
+        result = gs_grab_get_mouse (grab, window, screen, hide_cursor);
+    }
+
+    if ((result != GDK_GRAB_SUCCESS) && old_window)
+    {
+        gs_debug ("Could not grab mouse for new window.  Resuming previous grab.");
+        gs_grab_get_mouse (grab, old_window, old_screen, old_hide_cursor);
+    }
+
+    gs_debug ("*** releasing X server grab");
+    gdk_x11_ungrab_server ();
+    gdk_flush ();
+
+    return (result == GDK_GRAB_SUCCESS);
+}
+
+static gboolean
+gs_grab_move_keyboard (GSGrab    *grab,
+                       GdkWindow *window,
+                       GdkScreen *screen)
+{
+    gboolean   result;
+    GdkWindow *old_window;
+    GdkScreen *old_screen;
+
+    if (grab->priv->keyboard_grab_window == window)
+    {
+        gs_debug ("Window %X is already grabbed, skipping",
+                  (guint32) GDK_WINDOW_XID (grab->priv->keyboard_grab_window));
+        return TRUE;
+    }
+
+    if (grab->priv->keyboard_grab_window != NULL)
+    {
+        gs_debug ("Moving keyboard grab from %X to %X",
+                  (guint32) GDK_WINDOW_XID (grab->priv->keyboard_grab_window),
+                  (guint32) GDK_WINDOW_XID (window));
+    }
+    else
+    {
+        gs_debug ("Getting keyboard grab on %X",
+                  (guint32) GDK_WINDOW_XID (window));
+
+    }
+
+    gs_debug ("*** doing X server grab");
+    gdk_x11_grab_server ();
+
+    old_window = grab->priv->keyboard_grab_window;
+    old_screen = grab->priv->keyboard_grab_screen;
+
+    if (old_window)
+    {
+        gs_grab_release_keyboard (grab);
+    }
+
+    result = gs_grab_get_keyboard (grab, window, screen);
+
+    if (result != GDK_GRAB_SUCCESS)
+    {
+        sleep (1);
+        result = gs_grab_get_keyboard (grab, window, screen);
+    }
+
+    if ((result != GDK_GRAB_SUCCESS) && old_window)
+    {
+        gs_debug ("Could not grab keyboard for new window.  Resuming previous grab.");
+        gs_grab_get_keyboard (grab, old_window, old_screen);
+    }
+
+    gs_debug ("*** releasing X server grab");
+    gdk_x11_ungrab_server ();
+    gdk_flush ();
+
+    return (result == GDK_GRAB_SUCCESS);
+}
+
+static void
+gs_grab_nuke_focus (void)
+{
+    Window focus = 0;
+    int    rev = 0;
+
+    gs_debug ("Nuking focus");
+
+    gdk_error_trap_push ();
+
+    XGetInputFocus (GDK_DISPLAY (), &focus, &rev);
+
+    XSetInputFocus (GDK_DISPLAY (), None, RevertToNone, CurrentTime);
+
+    gdk_display_sync (gdk_display_get_default ());
+    gdk_error_trap_pop ();
+}
+
+void
+gs_grab_release (GSGrab *grab)
+{
+    gs_debug ("Releasing all grabs");
+
+    gs_grab_release_mouse (grab);
+    gs_grab_release_keyboard (grab);
+
+    /* FIXME: is it right to enable this ? */
+    xorg_lock_smasher_set_active (grab, TRUE);
+
+    gdk_display_sync (gdk_display_get_default ());
+    gdk_flush ();
+}
+
+gboolean
+gs_grab_grab_window (GSGrab    *grab,
+                     GdkWindow *window,
+                     GdkScreen *screen,
+                     gboolean   hide_cursor)
+{
+    gboolean mstatus = FALSE;
+    gboolean kstatus = FALSE;
+    int      i;
+    int      retries = 4;
+    gboolean focus_fuckus = FALSE;
+
+AGAIN:
+
+    for (i = 0; i < retries; i++)
+    {
+        kstatus = gs_grab_get_keyboard (grab, window, screen);
+        if (kstatus == GDK_GRAB_SUCCESS)
+        {
+            break;
+        }
+
+        /* else, wait a second and try to grab again. */
+        sleep (1);
+    }
+
+    if (kstatus != GDK_GRAB_SUCCESS)
+    {
+        if (!focus_fuckus)
+        {
+            focus_fuckus = TRUE;
+            gs_grab_nuke_focus ();
+            goto AGAIN;
+        }
+    }
+
+    for (i = 0; i < retries; i++)
+    {
+        mstatus = gs_grab_get_mouse (grab, window, screen, hide_cursor);
+        if (mstatus == GDK_GRAB_SUCCESS)
+        {
+            break;
+        }
+
+        /* else, wait a second and try to grab again. */
+        sleep (1);
+    }
+
+    if (mstatus != GDK_GRAB_SUCCESS)
+    {
+        gs_debug ("Couldn't grab pointer!  (%s)",
+                  grab_string (mstatus));
+    }
+
+#if 0
+    /* FIXME: release the pointer grab so GTK will work */
+    gs_grab_release_mouse (grab);
+#endif
+
+    /* When should we allow blanking to proceed?  The current theory
+       is that both a keyboard grab and a mouse grab are mandatory
+
+       - If we don't have a keyboard grab, then we won't be able to
+       read a password to unlock, so the kbd grab is manditory.
+
+       - If we don't have a mouse grab, then we might not see mouse
+       clicks as a signal to unblank, on-screen widgets won't work ideally,
+       and gs_grab_move_to_window() will spin forever when it gets called.
+    */
+
+    if (kstatus != GDK_GRAB_SUCCESS || mstatus != GDK_GRAB_SUCCESS)
+    {
+        /* Do not blank without a keyboard and mouse grabs. */
+
+        /* Release keyboard or mouse which was grabbed. */
+        if (kstatus == GDK_GRAB_SUCCESS)
+        {
+            gs_grab_release_keyboard (grab);
+        }
+        if (mstatus == GDK_GRAB_SUCCESS)
+        {
+            gs_grab_release_mouse (grab);
+        }
+
+        return FALSE;
+    }
+
+    /* Grab is good, go ahead and blank.  */
+    return TRUE;
+}
+
+/* this is used to grab the keyboard and mouse to the root */
+gboolean
+gs_grab_grab_root (GSGrab  *grab,
+                   gboolean hide_cursor)
+{
+    GdkDisplay *display;
+    GdkWindow  *root;
+    GdkScreen  *screen;
+    gboolean    res;
+
+    gs_debug ("Grabbing the root window");
+
+    display = gdk_display_get_default ();
+    gdk_display_get_pointer (display, &screen, NULL, NULL, NULL);
+    root = gdk_screen_get_root_window (screen);
+
+    res = gs_grab_grab_window (grab, root, screen, hide_cursor);
+
+    return res;
+}
+
+/* this is used to grab the keyboard and mouse to an offscreen window */
+gboolean
+gs_grab_grab_offscreen (GSGrab *grab,
+                        gboolean hide_cursor)
+{
+    GdkScreen *screen;
+    gboolean   res;
+
+    gs_debug ("Grabbing an offscreen window");
+
+    screen = gtk_invisible_get_screen (GTK_INVISIBLE (grab->priv->invisible));
+    res = gs_grab_grab_window (grab, grab->priv->invisible->window, screen, hide_cursor);
+
+    return res;
+}
+
+/* This is similar to gs_grab_grab_window but doesn't fail */
+void
+gs_grab_move_to_window (GSGrab    *grab,
+                        GdkWindow *window,
+                        GdkScreen *screen,
+                        gboolean   hide_cursor)
+{
+    gboolean result = FALSE;
+
+    g_return_if_fail (GS_IS_GRAB (grab));
+
+    xorg_lock_smasher_set_active (grab, FALSE);
+
+    do
+    {
+        result = gs_grab_move_keyboard (grab, window, screen);
+        gdk_flush ();
+    }
+    while (!result);
+
+    do
+    {
+        result = gs_grab_move_mouse (grab, window, screen, hide_cursor);
+        gdk_flush ();
+    }
+    while (!result);
+}
+
+static void
+gs_grab_class_init (GSGrabClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize = gs_grab_finalize;
+
+    g_type_class_add_private (klass, sizeof (GSGrabPrivate));
+}
+
+static void
+gs_grab_init (GSGrab *grab)
+{
+    grab->priv = GS_GRAB_GET_PRIVATE (grab);
+
+    grab->priv->mouse_hide_cursor = FALSE;
+    grab->priv->invisible = gtk_invisible_new ();
+    gtk_widget_show (grab->priv->invisible);
+}
+
+static void
+gs_grab_finalize (GObject *object)
+{
+    GSGrab *grab;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_GRAB (object));
+
+    grab = GS_GRAB (object);
+
+    g_return_if_fail (grab->priv != NULL);
+
+    gtk_widget_destroy (grab->priv->invisible);
+
+    G_OBJECT_CLASS (gs_grab_parent_class)->finalize (object);
+}
+
+GSGrab *
+gs_grab_new (void)
+{
+    if (grab_object)
+    {
+        g_object_ref (grab_object);
+    }
+    else
+    {
+        grab_object = g_object_new (GS_TYPE_GRAB, NULL);
+        g_object_add_weak_pointer (grab_object,
+                                   (gpointer *) &grab_object);
+    }
+
+    return GS_GRAB (grab_object);
+}
diff --git a/src/gs-grab.h b/src/gs-grab.h
new file mode 100644
index 0000000..4717f49
--- /dev/null
+++ b/src/gs-grab.h
@@ -0,0 +1,79 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_GRAB_H
+#define __GS_GRAB_H
+
+#include <glib.h>
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_GRAB         (gs_grab_get_type ())
+#define GS_GRAB(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_GRAB, GSGrab))
+#define GS_GRAB_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_GRAB, GSGrabClass))
+#define GS_IS_GRAB(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_GRAB))
+#define GS_IS_GRAB_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_GRAB))
+#define GS_GRAB_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_GRAB, GSGrabClass))
+
+typedef struct GSGrabPrivate GSGrabPrivate;
+
+typedef struct
+{
+	GObject        parent;
+	GSGrabPrivate *priv;
+} GSGrab;
+
+typedef struct
+{
+	GObjectClass   parent_class;
+
+} GSGrabClass;
+
+GType     gs_grab_get_type         (void);
+
+GSGrab  * gs_grab_new              (void);
+
+void      gs_grab_release          (GSGrab    *grab);
+gboolean  gs_grab_release_mouse    (GSGrab    *grab);
+
+gboolean  gs_grab_grab_window      (GSGrab    *grab,
+                                    GdkWindow *window,
+                                    GdkScreen *screen,
+                                    gboolean   hide_cursor);
+
+gboolean  gs_grab_grab_root        (GSGrab    *grab,
+                                    gboolean   hide_cursor);
+gboolean  gs_grab_grab_offscreen   (GSGrab    *grab,
+                                    gboolean   hide_cursor);
+
+void      gs_grab_move_to_window   (GSGrab    *grab,
+                                    GdkWindow *window,
+                                    GdkScreen *screen,
+                                    gboolean   hide_cursor);
+
+void      gs_grab_mouse_reset      (GSGrab    *grab);
+void      gs_grab_keyboard_reset   (GSGrab    *grab);
+
+G_END_DECLS
+
+#endif /* __GS_GRAB_H */
diff --git a/src/gs-grab.h.orig b/src/gs-grab.h.orig
new file mode 100644
index 0000000..a910403
--- /dev/null
+++ b/src/gs-grab.h.orig
@@ -0,0 +1,79 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_GRAB_H
+#define __GS_GRAB_H
+
+#include <glib.h>
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_GRAB         (gs_grab_get_type ())
+#define GS_GRAB(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_GRAB, GSGrab))
+#define GS_GRAB_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_GRAB, GSGrabClass))
+#define GS_IS_GRAB(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_GRAB))
+#define GS_IS_GRAB_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_GRAB))
+#define GS_GRAB_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_GRAB, GSGrabClass))
+
+typedef struct GSGrabPrivate GSGrabPrivate;
+
+typedef struct
+{
+    GObject        parent;
+    GSGrabPrivate *priv;
+} GSGrab;
+
+typedef struct
+{
+    GObjectClass   parent_class;
+
+} GSGrabClass;
+
+GType     gs_grab_get_type         (void);
+
+GSGrab  * gs_grab_new              (void);
+
+void      gs_grab_release          (GSGrab    *grab);
+gboolean  gs_grab_release_mouse    (GSGrab    *grab);
+
+gboolean  gs_grab_grab_window      (GSGrab    *grab,
+                                    GdkWindow *window,
+                                    GdkScreen *screen,
+                                    gboolean   hide_cursor);
+
+gboolean  gs_grab_grab_root        (GSGrab    *grab,
+                                    gboolean   hide_cursor);
+gboolean  gs_grab_grab_offscreen   (GSGrab    *grab,
+                                    gboolean   hide_cursor);
+
+void      gs_grab_move_to_window   (GSGrab    *grab,
+                                    GdkWindow *window,
+                                    GdkScreen *screen,
+                                    gboolean   hide_cursor);
+
+void      gs_grab_mouse_reset      (GSGrab    *grab);
+void      gs_grab_keyboard_reset   (GSGrab    *grab);
+
+G_END_DECLS
+
+#endif /* __GS_GRAB_H */
diff --git a/src/gs-job.c b/src/gs-job.c
new file mode 100644
index 0000000..30d1f34
--- /dev/null
+++ b/src/gs-job.c
@@ -0,0 +1,567 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <errno.h>
+#include <string.h>
+
+#if defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
+#include <sys/resource.h>
+#endif
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include "gs-debug.h"
+#include "gs-job.h"
+
+#include "subprocs.h"
+
+static void gs_job_class_init (GSJobClass *klass);
+static void gs_job_init       (GSJob      *job);
+static void gs_job_finalize   (GObject    *object);
+
+#define GS_JOB_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_JOB, GSJobPrivate))
+
+typedef enum
+{
+    GS_JOB_INVALID,
+    GS_JOB_RUNNING,
+    GS_JOB_STOPPED,
+    GS_JOB_KILLED,
+    GS_JOB_DEAD
+} GSJobStatus;
+
+struct GSJobPrivate
+{
+	GtkWidget      *widget;
+
+	GSJobStatus     status;
+	gint            pid;
+	guint           watch_id;
+
+	char           *command;
+};
+
+G_DEFINE_TYPE (GSJob, gs_job, G_TYPE_OBJECT)
+
+static char *
+widget_get_id_string (GtkWidget *widget)
+{
+	char *id = NULL;
+
+	g_return_val_if_fail (widget != NULL, NULL);
+
+	id = g_strdup_printf ("0x%X",
+	                      (guint32)GDK_WINDOW_XID (widget->window));
+	return id;
+}
+
+static void
+gs_job_class_init (GSJobClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize  = gs_job_finalize;
+
+	g_type_class_add_private (klass, sizeof (GSJobPrivate));
+}
+
+static void
+gs_job_init (GSJob *job)
+{
+	job->priv = GS_JOB_GET_PRIVATE (job);
+}
+
+/* adapted from gspawn.c */
+static int
+wait_on_child (int pid)
+{
+	int status;
+
+wait_again:
+	if (waitpid (pid, &status, 0) < 0)
+	{
+		if (errno == EINTR)
+		{
+			goto wait_again;
+		}
+		else if (errno == ECHILD)
+		{
+			; /* do nothing, child already reaped */
+		}
+		else
+		{
+			gs_debug ("waitpid () should not fail in 'GSJob'");
+		}
+	}
+
+	return status;
+}
+
+static void
+gs_job_died (GSJob *job)
+{
+	if (job->priv->pid > 0)
+	{
+		int exit_status;
+
+		gs_debug ("Waiting on process %d", job->priv->pid);
+		exit_status = wait_on_child (job->priv->pid);
+
+		job->priv->status = GS_JOB_DEAD;
+
+		if (WIFEXITED (exit_status) && (WEXITSTATUS (exit_status) != 0))
+		{
+			gs_debug ("Wait on child process failed");
+		}
+		else
+		{
+			/* exited normally */
+		}
+	}
+	g_spawn_close_pid (job->priv->pid);
+	job->priv->pid = 0;
+
+	gs_debug ("Job died");
+}
+
+static void
+gs_job_finalize (GObject *object)
+{
+	GSJob *job;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_JOB (object));
+
+	job = GS_JOB (object);
+
+	g_return_if_fail (job->priv != NULL);
+
+	if (job->priv->pid > 0)
+	{
+		signal_pid (job->priv->pid, SIGTERM);
+		gs_job_died (job);
+	}
+
+	g_free (job->priv->command);
+	job->priv->command = NULL;
+
+	G_OBJECT_CLASS (gs_job_parent_class)->finalize (object);
+}
+
+void
+gs_job_set_widget  (GSJob     *job,
+                    GtkWidget *widget)
+{
+	g_return_if_fail (job != NULL);
+	g_return_if_fail (GS_IS_JOB (job));
+
+	if (widget != job->priv->widget)
+	{
+		job->priv->widget = widget;
+
+		/* restart job */
+		if (gs_job_is_running (job))
+		{
+			gs_job_stop (job);
+			gs_job_start (job);
+		}
+	}
+}
+
+gboolean
+gs_job_set_command  (GSJob      *job,
+                     const char *command)
+{
+	g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+	gs_debug ("Setting command for job: '%s'",
+	          command != NULL ? command : "NULL");
+
+	g_free (job->priv->command);
+	job->priv->command = g_strdup (command);
+
+	return TRUE;
+}
+
+GSJob *
+gs_job_new (void)
+{
+	GObject *job;
+
+	job = g_object_new (GS_TYPE_JOB, NULL);
+
+	return GS_JOB (job);
+}
+
+GSJob *
+gs_job_new_for_widget (GtkWidget  *widget)
+{
+	GObject *job;
+
+	job = g_object_new (GS_TYPE_JOB, NULL);
+
+	gs_job_set_widget (GS_JOB (job), widget);
+
+	return GS_JOB (job);
+}
+
+static void
+nice_process (int pid,
+              int nice_level)
+{
+	g_return_if_fail (pid > 0);
+
+	if (nice_level == 0)
+	{
+		return;
+	}
+
+#if defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
+	gs_debug ("Setting child process priority to: %d", nice_level);
+	if (setpriority (PRIO_PROCESS, pid, nice_level) != 0)
+	{
+		gs_debug ("setpriority(PRIO_PROCESS, %lu, %d) failed",
+		          (unsigned long) pid, nice_level);
+	}
+#else
+	gs_debug ("don't know how to change process priority on this system.");
+#endif
+}
+
+static GPtrArray *
+get_env_vars (GtkWidget *widget)
+{
+	GPtrArray *env;
+	char      *str;
+	int        i;
+	static const char *allowed_env_vars [] =
+	{
+		"PATH",
+		"SESSION_MANAGER",
+		"XAUTHORITY",
+		"XAUTHLOCALHOSTNAME",
+		"LANG",
+		"LANGUAGE",
+		"DBUS_SESSION_BUS_ADDRESS"
+	};
+
+	env = g_ptr_array_new ();
+
+	str = gdk_screen_make_display_name (gtk_widget_get_screen (widget));
+	g_ptr_array_add (env, g_strdup_printf ("DISPLAY=%s", str));
+	g_free (str);
+
+	g_ptr_array_add (env, g_strdup_printf ("HOME=%s",
+	                                       g_get_home_dir ()));
+
+	for (i = 0; i < G_N_ELEMENTS (allowed_env_vars); i++)
+	{
+		const char *var;
+		const char *val;
+		var = allowed_env_vars [i];
+		val = g_getenv (var);
+		if (val != NULL)
+		{
+			g_ptr_array_add (env, g_strdup_printf ("%s=%s",
+			                                       var,
+			                                       val));
+		}
+	}
+
+	str = widget_get_id_string (widget);
+	g_ptr_array_add (env, g_strdup_printf ("XSCREENSAVER_WINDOW=%s", str));
+	g_free (str);
+
+	g_ptr_array_add (env, NULL);
+
+	return env;
+}
+
+static gboolean
+spawn_on_widget (GtkWidget  *widget,
+                 const char *command,
+                 int        *pid,
+                 GIOFunc     watch_func,
+                 gpointer    user_data,
+                 guint      *watch_id)
+{
+	char      **argv;
+	GPtrArray  *env;
+	gboolean    result;
+	GIOChannel *channel;
+	GError     *error = NULL;
+	int         standard_error;
+	int         child_pid;
+	int         id;
+	int         i;
+
+	if (command == NULL)
+	{
+		return FALSE;
+	}
+
+	if (! g_shell_parse_argv (command, NULL, &argv, &error))
+	{
+		gs_debug ("Could not parse command: %s", error->message);
+		g_error_free (error);
+		return FALSE;
+	}
+
+	env = get_env_vars (widget);
+
+	error = NULL;
+	result = gdk_spawn_on_screen_with_pipes (gtk_widget_get_screen (widget),
+	         NULL,
+	         argv,
+	         (char **)env->pdata,
+	         G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
+	         NULL,
+	         NULL,
+	         &child_pid,
+	         NULL,
+	         NULL,
+	         &standard_error,
+	         &error);
+	for (i = 0; i < env->len; i++)
+	{
+		g_free (g_ptr_array_index (env, i));
+	}
+	g_ptr_array_free (env, TRUE);
+
+	if (! result)
+	{
+		gs_debug ("Could not start command '%s': %s", command, error->message);
+		g_error_free (error);
+		g_strfreev (argv);
+		return FALSE;
+	}
+
+	g_strfreev (argv);
+
+	nice_process (child_pid, 10);
+
+	if (pid != NULL)
+	{
+		*pid = child_pid;
+	}
+	else
+	{
+		g_spawn_close_pid (child_pid);
+	}
+
+	channel = g_io_channel_unix_new (standard_error);
+	g_io_channel_set_close_on_unref (channel, TRUE);
+	g_io_channel_set_flags (channel,
+	                        g_io_channel_get_flags (channel) | G_IO_FLAG_NONBLOCK,
+	                        NULL);
+	id = g_io_add_watch (channel,
+	                     G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+	                     watch_func,
+	                     user_data);
+	if (watch_id != NULL)
+	{
+		*watch_id = id;
+	}
+
+	g_io_channel_unref (channel);
+
+	return result;
+}
+
+static gboolean
+command_watch (GIOChannel   *source,
+               GIOCondition  condition,
+               GSJob        *job)
+{
+	GIOStatus status;
+	GError   *error = NULL;
+	gboolean  done  = FALSE;
+
+	g_return_val_if_fail (job != NULL, FALSE);
+
+	if (condition & G_IO_IN)
+	{
+		char *str;
+
+		status = g_io_channel_read_line (source, &str, NULL, NULL, &error);
+
+		if (status == G_IO_STATUS_NORMAL)
+		{
+			gs_debug ("command output: %s", str);
+
+		}
+		else if (status == G_IO_STATUS_EOF)
+		{
+			done = TRUE;
+
+		}
+		else if (error != NULL)
+		{
+			gs_debug ("command error: %s", error->message);
+			g_error_free (error);
+		}
+
+		g_free (str);
+	}
+	else if (condition & G_IO_HUP)
+	{
+		done = TRUE;
+	}
+
+	if (done)
+	{
+		gs_job_died (job);
+
+		job->priv->watch_id = 0;
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+gboolean
+gs_job_is_running (GSJob *job)
+{
+	gboolean running;
+
+	g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+	running = (job->priv->pid > 0);
+
+	return running;
+}
+
+gboolean
+gs_job_start (GSJob *job)
+{
+	gboolean result;
+
+	g_return_val_if_fail (job != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+	gs_debug ("starting job");
+
+	if (job->priv->pid != 0)
+	{
+		gs_debug ("Cannot restart active job.");
+		return FALSE;
+	}
+
+	if (job->priv->widget == NULL)
+	{
+		gs_debug ("Could not start job: screensaver window is not set.");
+		return FALSE;
+	}
+
+	if (job->priv->command == NULL)
+	{
+		/* no warning here because a NULL command is interpreted
+		   as a no-op job */
+		gs_debug ("No command set for job.");
+		return FALSE;
+	}
+
+	result = spawn_on_widget (job->priv->widget,
+	                          job->priv->command,
+	                          &job->priv->pid,
+	                          (GIOFunc)command_watch,
+	                          job,
+	                          &job->priv->watch_id);
+
+	if (result)
+	{
+		job->priv->status = GS_JOB_RUNNING;
+	}
+
+	return result;
+}
+
+static void
+remove_command_watch (GSJob *job)
+{
+	if (job->priv->watch_id != 0)
+	{
+		g_source_remove (job->priv->watch_id);
+		job->priv->watch_id = 0;
+	}
+}
+
+gboolean
+gs_job_stop (GSJob *job)
+{
+	g_return_val_if_fail (job != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+	gs_debug ("stopping job");
+
+	if (job->priv->pid == 0)
+	{
+		gs_debug ("Could not stop job: pid not defined");
+		return FALSE;
+	}
+
+	if (job->priv->status == GS_JOB_STOPPED)
+	{
+		gs_job_suspend (job, FALSE);
+	}
+
+	remove_command_watch (job);
+
+	signal_pid (job->priv->pid, SIGTERM);
+
+	job->priv->status = GS_JOB_KILLED;
+
+	gs_job_died (job);
+
+	return TRUE;
+}
+
+gboolean
+gs_job_suspend (GSJob   *job,
+                gboolean suspend)
+{
+	g_return_val_if_fail (job != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+	gs_debug ("suspending job");
+
+	if (job->priv->pid == 0)
+	{
+		return FALSE;
+	}
+
+	signal_pid (job->priv->pid, (suspend ? SIGSTOP : SIGCONT));
+
+	job->priv->status = (suspend ? GS_JOB_STOPPED : GS_JOB_RUNNING);
+
+	return TRUE;
+}
diff --git a/src/gs-job.c.orig b/src/gs-job.c.orig
new file mode 100644
index 0000000..896addc
--- /dev/null
+++ b/src/gs-job.c.orig
@@ -0,0 +1,567 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <errno.h>
+#include <string.h>
+
+#if defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
+#include <sys/resource.h>
+#endif
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include "gs-debug.h"
+#include "gs-job.h"
+
+#include "subprocs.h"
+
+static void gs_job_class_init (GSJobClass *klass);
+static void gs_job_init       (GSJob      *job);
+static void gs_job_finalize   (GObject    *object);
+
+#define GS_JOB_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_JOB, GSJobPrivate))
+
+typedef enum
+{
+    GS_JOB_INVALID,
+    GS_JOB_RUNNING,
+    GS_JOB_STOPPED,
+    GS_JOB_KILLED,
+    GS_JOB_DEAD
+} GSJobStatus;
+
+struct GSJobPrivate
+{
+    GtkWidget      *widget;
+
+    GSJobStatus     status;
+    gint            pid;
+    guint           watch_id;
+
+    char           *command;
+};
+
+G_DEFINE_TYPE (GSJob, gs_job, G_TYPE_OBJECT)
+
+static char *
+widget_get_id_string (GtkWidget *widget)
+{
+    char *id = NULL;
+
+    g_return_val_if_fail (widget != NULL, NULL);
+
+    id = g_strdup_printf ("0x%X",
+                          (guint32)GDK_WINDOW_XID (widget->window));
+    return id;
+}
+
+static void
+gs_job_class_init (GSJobClass *klass)
+{
+    GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize  = gs_job_finalize;
+
+    g_type_class_add_private (klass, sizeof (GSJobPrivate));
+}
+
+static void
+gs_job_init (GSJob *job)
+{
+    job->priv = GS_JOB_GET_PRIVATE (job);
+}
+
+/* adapted from gspawn.c */
+static int
+wait_on_child (int pid)
+{
+    int status;
+
+wait_again:
+    if (waitpid (pid, &status, 0) < 0)
+    {
+        if (errno == EINTR)
+        {
+            goto wait_again;
+        }
+        else if (errno == ECHILD)
+        {
+            ; /* do nothing, child already reaped */
+        }
+        else
+        {
+            gs_debug ("waitpid () should not fail in 'GSJob'");
+        }
+    }
+
+    return status;
+}
+
+static void
+gs_job_died (GSJob *job)
+{
+    if (job->priv->pid > 0)
+    {
+        int exit_status;
+
+        gs_debug ("Waiting on process %d", job->priv->pid);
+        exit_status = wait_on_child (job->priv->pid);
+
+        job->priv->status = GS_JOB_DEAD;
+
+        if (WIFEXITED (exit_status) && (WEXITSTATUS (exit_status) != 0))
+        {
+            gs_debug ("Wait on child process failed");
+        }
+        else
+        {
+            /* exited normally */
+        }
+    }
+    g_spawn_close_pid (job->priv->pid);
+    job->priv->pid = 0;
+
+    gs_debug ("Job died");
+}
+
+static void
+gs_job_finalize (GObject *object)
+{
+    GSJob *job;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_JOB (object));
+
+    job = GS_JOB (object);
+
+    g_return_if_fail (job->priv != NULL);
+
+    if (job->priv->pid > 0)
+    {
+        signal_pid (job->priv->pid, SIGTERM);
+        gs_job_died (job);
+    }
+
+    g_free (job->priv->command);
+    job->priv->command = NULL;
+
+    G_OBJECT_CLASS (gs_job_parent_class)->finalize (object);
+}
+
+void
+gs_job_set_widget  (GSJob     *job,
+                    GtkWidget *widget)
+{
+    g_return_if_fail (job != NULL);
+    g_return_if_fail (GS_IS_JOB (job));
+
+    if (widget != job->priv->widget)
+    {
+        job->priv->widget = widget;
+
+        /* restart job */
+        if (gs_job_is_running (job))
+        {
+            gs_job_stop (job);
+            gs_job_start (job);
+        }
+    }
+}
+
+gboolean
+gs_job_set_command  (GSJob      *job,
+                     const char *command)
+{
+    g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+    gs_debug ("Setting command for job: '%s'",
+              command != NULL ? command : "NULL");
+
+    g_free (job->priv->command);
+    job->priv->command = g_strdup (command);
+
+    return TRUE;
+}
+
+GSJob *
+gs_job_new (void)
+{
+    GObject *job;
+
+    job = g_object_new (GS_TYPE_JOB, NULL);
+
+    return GS_JOB (job);
+}
+
+GSJob *
+gs_job_new_for_widget (GtkWidget  *widget)
+{
+    GObject *job;
+
+    job = g_object_new (GS_TYPE_JOB, NULL);
+
+    gs_job_set_widget (GS_JOB (job), widget);
+
+    return GS_JOB (job);
+}
+
+static void
+nice_process (int pid,
+              int nice_level)
+{
+    g_return_if_fail (pid > 0);
+
+    if (nice_level == 0)
+    {
+        return;
+    }
+
+#if defined(HAVE_SETPRIORITY) && defined(PRIO_PROCESS)
+    gs_debug ("Setting child process priority to: %d", nice_level);
+    if (setpriority (PRIO_PROCESS, pid, nice_level) != 0)
+    {
+        gs_debug ("setpriority(PRIO_PROCESS, %lu, %d) failed",
+                  (unsigned long) pid, nice_level);
+    }
+#else
+    gs_debug ("don't know how to change process priority on this system.");
+#endif
+}
+
+static GPtrArray *
+get_env_vars (GtkWidget *widget)
+{
+    GPtrArray *env;
+    char      *str;
+    int        i;
+    static const char *allowed_env_vars [] =
+    {
+        "PATH",
+        "SESSION_MANAGER",
+        "XAUTHORITY",
+        "XAUTHLOCALHOSTNAME",
+        "LANG",
+        "LANGUAGE",
+        "DBUS_SESSION_BUS_ADDRESS"
+    };
+
+    env = g_ptr_array_new ();
+
+    str = gdk_screen_make_display_name (gtk_widget_get_screen (widget));
+    g_ptr_array_add (env, g_strdup_printf ("DISPLAY=%s", str));
+    g_free (str);
+
+    g_ptr_array_add (env, g_strdup_printf ("HOME=%s",
+                                           g_get_home_dir ()));
+
+    for (i = 0; i < G_N_ELEMENTS (allowed_env_vars); i++)
+    {
+        const char *var;
+        const char *val;
+        var = allowed_env_vars [i];
+        val = g_getenv (var);
+        if (val != NULL)
+        {
+            g_ptr_array_add (env, g_strdup_printf ("%s=%s",
+                                                   var,
+                                                   val));
+        }
+    }
+
+    str = widget_get_id_string (widget);
+    g_ptr_array_add (env, g_strdup_printf ("XSCREENSAVER_WINDOW=%s", str));
+    g_free (str);
+
+    g_ptr_array_add (env, NULL);
+
+    return env;
+}
+
+static gboolean
+spawn_on_widget (GtkWidget  *widget,
+                 const char *command,
+                 int        *pid,
+                 GIOFunc     watch_func,
+                 gpointer    user_data,
+                 guint      *watch_id)
+{
+    char      **argv;
+    GPtrArray  *env;
+    gboolean    result;
+    GIOChannel *channel;
+    GError     *error = NULL;
+    int         standard_error;
+    int         child_pid;
+    int         id;
+    int         i;
+
+    if (command == NULL)
+    {
+        return FALSE;
+    }
+
+    if (! g_shell_parse_argv (command, NULL, &argv, &error))
+    {
+        gs_debug ("Could not parse command: %s", error->message);
+        g_error_free (error);
+        return FALSE;
+    }
+
+    env = get_env_vars (widget);
+
+    error = NULL;
+    result = gdk_spawn_on_screen_with_pipes (gtk_widget_get_screen (widget),
+             NULL,
+             argv,
+             (char **)env->pdata,
+             G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
+             NULL,
+             NULL,
+             &child_pid,
+             NULL,
+             NULL,
+             &standard_error,
+             &error);
+    for (i = 0; i < env->len; i++)
+    {
+        g_free (g_ptr_array_index (env, i));
+    }
+    g_ptr_array_free (env, TRUE);
+
+    if (! result)
+    {
+        gs_debug ("Could not start command '%s': %s", command, error->message);
+        g_error_free (error);
+        g_strfreev (argv);
+        return FALSE;
+    }
+
+    g_strfreev (argv);
+
+    nice_process (child_pid, 10);
+
+    if (pid != NULL)
+    {
+        *pid = child_pid;
+    }
+    else
+    {
+        g_spawn_close_pid (child_pid);
+    }
+
+    channel = g_io_channel_unix_new (standard_error);
+    g_io_channel_set_close_on_unref (channel, TRUE);
+    g_io_channel_set_flags (channel,
+                            g_io_channel_get_flags (channel) | G_IO_FLAG_NONBLOCK,
+                            NULL);
+    id = g_io_add_watch (channel,
+                         G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+                         watch_func,
+                         user_data);
+    if (watch_id != NULL)
+    {
+        *watch_id = id;
+    }
+
+    g_io_channel_unref (channel);
+
+    return result;
+}
+
+static gboolean
+command_watch (GIOChannel   *source,
+               GIOCondition  condition,
+               GSJob        *job)
+{
+    GIOStatus status;
+    GError   *error = NULL;
+    gboolean  done  = FALSE;
+
+    g_return_val_if_fail (job != NULL, FALSE);
+
+    if (condition & G_IO_IN)
+    {
+        char *str;
+
+        status = g_io_channel_read_line (source, &str, NULL, NULL, &error);
+
+        if (status == G_IO_STATUS_NORMAL)
+        {
+            gs_debug ("command output: %s", str);
+
+        }
+        else if (status == G_IO_STATUS_EOF)
+        {
+            done = TRUE;
+
+        }
+        else if (error != NULL)
+        {
+            gs_debug ("command error: %s", error->message);
+            g_error_free (error);
+        }
+
+        g_free (str);
+    }
+    else if (condition & G_IO_HUP)
+    {
+        done = TRUE;
+    }
+
+    if (done)
+    {
+        gs_job_died (job);
+
+        job->priv->watch_id = 0;
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+gboolean
+gs_job_is_running (GSJob *job)
+{
+    gboolean running;
+
+    g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+    running = (job->priv->pid > 0);
+
+    return running;
+}
+
+gboolean
+gs_job_start (GSJob *job)
+{
+    gboolean result;
+
+    g_return_val_if_fail (job != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+    gs_debug ("starting job");
+
+    if (job->priv->pid != 0)
+    {
+        gs_debug ("Cannot restart active job.");
+        return FALSE;
+    }
+
+    if (job->priv->widget == NULL)
+    {
+        gs_debug ("Could not start job: screensaver window is not set.");
+        return FALSE;
+    }
+
+    if (job->priv->command == NULL)
+    {
+        /* no warning here because a NULL command is interpreted
+           as a no-op job */
+        gs_debug ("No command set for job.");
+        return FALSE;
+    }
+
+    result = spawn_on_widget (job->priv->widget,
+                              job->priv->command,
+                              &job->priv->pid,
+                              (GIOFunc)command_watch,
+                              job,
+                              &job->priv->watch_id);
+
+    if (result)
+    {
+        job->priv->status = GS_JOB_RUNNING;
+    }
+
+    return result;
+}
+
+static void
+remove_command_watch (GSJob *job)
+{
+    if (job->priv->watch_id != 0)
+    {
+        g_source_remove (job->priv->watch_id);
+        job->priv->watch_id = 0;
+    }
+}
+
+gboolean
+gs_job_stop (GSJob *job)
+{
+    g_return_val_if_fail (job != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+    gs_debug ("stopping job");
+
+    if (job->priv->pid == 0)
+    {
+        gs_debug ("Could not stop job: pid not defined");
+        return FALSE;
+    }
+
+    if (job->priv->status == GS_JOB_STOPPED)
+    {
+        gs_job_suspend (job, FALSE);
+    }
+
+    remove_command_watch (job);
+
+    signal_pid (job->priv->pid, SIGTERM);
+
+    job->priv->status = GS_JOB_KILLED;
+
+    gs_job_died (job);
+
+    return TRUE;
+}
+
+gboolean
+gs_job_suspend (GSJob   *job,
+                gboolean suspend)
+{
+    g_return_val_if_fail (job != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_JOB (job), FALSE);
+
+    gs_debug ("suspending job");
+
+    if (job->priv->pid == 0)
+    {
+        return FALSE;
+    }
+
+    signal_pid (job->priv->pid, (suspend ? SIGSTOP : SIGCONT));
+
+    job->priv->status = (suspend ? GS_JOB_STOPPED : GS_JOB_RUNNING);
+
+    return TRUE;
+}
diff --git a/src/gs-job.h b/src/gs-job.h
new file mode 100644
index 0000000..ba7084e
--- /dev/null
+++ b/src/gs-job.h
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_JOB_H
+#define __GS_JOB_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_JOB         (gs_job_get_type ())
+#define GS_JOB(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_JOB, GSJob))
+#define GS_JOB_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_JOB, GSJobClass))
+#define GS_IS_JOB(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_JOB))
+#define GS_IS_JOB_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_JOB))
+#define GS_JOB_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_JOB, GSJobClass))
+
+typedef struct GSJobPrivate GSJobPrivate;
+
+typedef struct
+{
+	GObject       parent;
+	GSJobPrivate *priv;
+} GSJob;
+
+typedef struct
+{
+	GObjectClass  parent_class;
+} GSJobClass;
+
+GType           gs_job_get_type                  (void);
+
+GSJob          *gs_job_new                       (void);
+GSJob          *gs_job_new_for_widget            (GtkWidget  *widget);
+
+gboolean        gs_job_is_running                (GSJob      *job);
+gboolean        gs_job_start                     (GSJob      *job);
+gboolean        gs_job_stop                      (GSJob      *job);
+gboolean        gs_job_suspend                   (GSJob      *job,
+        gboolean    suspend);
+
+void            gs_job_set_widget                (GSJob      *job,
+        GtkWidget  *widget);
+
+gboolean        gs_job_set_command               (GSJob          *job,
+        const char     *command);
+
+G_END_DECLS
+
+#endif /* __GS_JOB_H */
diff --git a/src/gs-job.h.orig b/src/gs-job.h.orig
new file mode 100644
index 0000000..b4fa3dc
--- /dev/null
+++ b/src/gs-job.h.orig
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_JOB_H
+#define __GS_JOB_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_JOB         (gs_job_get_type ())
+#define GS_JOB(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_JOB, GSJob))
+#define GS_JOB_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_JOB, GSJobClass))
+#define GS_IS_JOB(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_JOB))
+#define GS_IS_JOB_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_JOB))
+#define GS_JOB_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_JOB, GSJobClass))
+
+typedef struct GSJobPrivate GSJobPrivate;
+
+typedef struct
+{
+    GObject       parent;
+    GSJobPrivate *priv;
+} GSJob;
+
+typedef struct
+{
+    GObjectClass  parent_class;
+} GSJobClass;
+
+GType           gs_job_get_type                  (void);
+
+GSJob          *gs_job_new                       (void);
+GSJob          *gs_job_new_for_widget            (GtkWidget  *widget);
+
+gboolean        gs_job_is_running                (GSJob      *job);
+gboolean        gs_job_start                     (GSJob      *job);
+gboolean        gs_job_stop                      (GSJob      *job);
+gboolean        gs_job_suspend                   (GSJob      *job,
+        gboolean    suspend);
+
+void            gs_job_set_widget                (GSJob      *job,
+        GtkWidget  *widget);
+
+gboolean        gs_job_set_command               (GSJob          *job,
+        const char     *command);
+
+G_END_DECLS
+
+#endif /* __GS_JOB_H */
diff --git a/src/gs-listener-dbus.c b/src/gs-listener-dbus.c
new file mode 100644
index 0000000..601689c
--- /dev/null
+++ b/src/gs-listener-dbus.c
@@ -0,0 +1,2272 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <string.h>
+
+#include <glib/gi18n.h>
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#include "gs-listener-dbus.h"
+#include "gs-marshal.h"
+#include "gs-debug.h"
+
+/* this is for dbus < 0.3 */
+#if ((DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR < 30))
+#define dbus_bus_name_has_owner(connection, name, err)      dbus_bus_service_exists(connection, name, err)
+#define dbus_bus_request_name(connection, name, flags, err) dbus_bus_acquire_service(connection, name, flags, err)
+#endif
+
+static void              gs_listener_class_init         (GSListenerClass *klass);
+static void              gs_listener_init               (GSListener      *listener);
+static void              gs_listener_finalize           (GObject         *object);
+
+static void              gs_listener_unregister_handler (DBusConnection  *connection,
+        void            *data);
+
+static DBusHandlerResult gs_listener_message_handler    (DBusConnection  *connection,
+        DBusMessage     *message,
+        void            *user_data);
+
+#define GS_LISTENER_SERVICE   "org.mate.ScreenSaver"
+#define GS_LISTENER_PATH      "/org/mate/ScreenSaver"
+#define GS_LISTENER_INTERFACE "org.mate.ScreenSaver"
+
+#define HAL_DEVICE_INTERFACE "org.freedesktop.Hal.Device"
+
+#define CK_NAME              "org.freedesktop.ConsoleKit"
+#define CK_MANAGER_PATH      "/org/freedesktop/ConsoleKit/Manager"
+#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
+#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
+
+#define SESSION_NAME         "org.mate.SessionManager"
+#define SESSION_PATH         "/org/mate/SessionManager"
+#define SESSION_INTERFACE    "org.mate.SessionManager"
+
+#define TYPE_MISMATCH_ERROR GS_LISTENER_INTERFACE ".TypeMismatch"
+
+#define GS_LISTENER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_LISTENER, GSListenerPrivate))
+
+struct GSListenerPrivate
+{
+	DBusConnection *connection;
+	DBusConnection *system_connection;
+
+	guint           session_idle : 1;
+	guint           active : 1;
+	guint           activation_enabled : 1;
+	guint           throttled : 1;
+	GHashTable     *inhibitors;
+	GHashTable     *throttlers;
+	time_t          active_start;
+	time_t          session_idle_start;
+	char           *session_id;
+
+	guint32         ck_throttle_cookie;
+};
+
+typedef struct
+{
+	int      entry_type;
+	char    *application;
+	char    *reason;
+	char    *connection;
+	guint32  cookie;
+	guint32  foreign_cookie;
+	GTimeVal since;
+} GSListenerRefEntry;
+
+enum
+{
+    LOCK,
+    CYCLE,
+    QUIT,
+    SIMULATE_USER_ACTIVITY,
+    ACTIVE_CHANGED,
+    THROTTLE_CHANGED,
+    SHOW_MESSAGE,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0,
+    PROP_ACTIVE,
+    PROP_SESSION_IDLE,
+    PROP_ACTIVATION_ENABLED,
+};
+
+enum
+{
+    REF_ENTRY_TYPE_INHIBIT,
+    REF_ENTRY_TYPE_THROTTLE
+};
+
+static DBusObjectPathVTable
+gs_listener_vtable = { &gs_listener_unregister_handler,
+                       &gs_listener_message_handler,
+                       NULL,
+                       NULL,
+                       NULL,
+                       NULL
+                     };
+
+static guint         signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSListener, gs_listener, G_TYPE_OBJECT)
+
+GQuark
+gs_listener_error_quark (void)
+{
+	static GQuark quark = 0;
+	if (!quark)
+	{
+		quark = g_quark_from_static_string ("gs_listener_error");
+	}
+
+	return quark;
+}
+
+static void
+gs_listener_ref_entry_free (GSListenerRefEntry *entry)
+{
+	g_free (entry->connection);
+	g_free (entry->application);
+	g_free (entry->reason);
+	g_free (entry);
+	entry = NULL;
+}
+
+static void
+gs_listener_unregister_handler (DBusConnection *connection,
+                                void           *data)
+{
+}
+
+static gboolean
+send_dbus_message (DBusConnection *connection,
+                   DBusMessage    *message)
+{
+	gboolean is_connected;
+	gboolean sent;
+
+	g_return_val_if_fail (message != NULL, FALSE);
+
+	if (! connection)
+	{
+		gs_debug ("There is no valid connection to the message bus");
+		return FALSE;
+	}
+
+	is_connected = dbus_connection_get_is_connected (connection);
+	if (! is_connected)
+	{
+		gs_debug ("Not connected to the message bus");
+		return FALSE;
+	}
+
+	sent = dbus_connection_send (connection, message, NULL);
+
+	return sent;
+}
+
+static void
+send_dbus_boolean_signal (GSListener *listener,
+                          const char *name,
+                          gboolean    value)
+{
+	DBusMessage    *message;
+	DBusMessageIter iter;
+
+	g_return_if_fail (listener != NULL);
+
+	message = dbus_message_new_signal (GS_LISTENER_PATH,
+	                                   GS_LISTENER_SERVICE,
+	                                   name);
+
+	dbus_message_iter_init_append (message, &iter);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &value);
+
+	if (! send_dbus_message (listener->priv->connection, message))
+	{
+		gs_debug ("Could not send %s signal", name);
+	}
+
+	dbus_message_unref (message);
+}
+
+static void
+gs_listener_send_signal_active_changed (GSListener *listener)
+{
+	g_return_if_fail (listener != NULL);
+
+	gs_debug ("Sending the ActiveChanged(%s) signal on the session bus",
+	          listener->priv->active ? "TRUE" : "FALSE");
+
+	send_dbus_boolean_signal (listener, "ActiveChanged", listener->priv->active);
+}
+
+static const char *
+get_name_for_entry_type (int entry_type)
+{
+	const char *name;
+
+	switch (entry_type)
+	{
+	case REF_ENTRY_TYPE_INHIBIT:
+		name = "inhibitor";
+		break;
+	case REF_ENTRY_TYPE_THROTTLE:
+		name = "throttler";
+		break;
+	default:
+		g_assert_not_reached ();
+		break;
+	}
+
+	return name;
+}
+
+static GHashTable *
+get_hash_for_entry_type (GSListener         *listener,
+                         int                 entry_type)
+{
+	GHashTable *hash;
+
+	switch (entry_type)
+	{
+	case REF_ENTRY_TYPE_INHIBIT:
+		hash = listener->priv->inhibitors;
+		break;
+	case REF_ENTRY_TYPE_THROTTLE:
+		hash = listener->priv->throttlers;
+		break;
+	default:
+		g_assert_not_reached ();
+		break;
+	}
+
+	return hash;
+}
+
+static void
+list_ref_entry (gpointer key,
+                gpointer value,
+                gpointer user_data)
+{
+	GSListenerRefEntry *entry;
+
+	entry =  (GSListenerRefEntry *)value;
+
+	gs_debug ("%s: %s for reason: %s",
+	          get_name_for_entry_type (entry->entry_type),
+	          entry->application,
+	          entry->reason);
+}
+
+static gboolean
+listener_ref_entry_is_present (GSListener *listener,
+                               int         entry_type)
+{
+	guint       n_entries;
+	gboolean    is_set;
+	GHashTable *hash;
+
+	hash = get_hash_for_entry_type (listener, entry_type);
+
+	/* if we aren't inhibited then activate */
+	n_entries = 0;
+	if (hash != NULL)
+	{
+		n_entries = g_hash_table_size (hash);
+
+		g_hash_table_foreach (hash, list_ref_entry, NULL);
+	}
+
+	is_set = (n_entries > 0);
+
+	return is_set;
+}
+
+static gboolean
+listener_check_activation (GSListener *listener)
+{
+	gboolean inhibited;
+	gboolean res;
+
+	gs_debug ("Checking for activation");
+
+	if (! listener->priv->activation_enabled)
+	{
+		return TRUE;
+	}
+
+	if (! listener->priv->session_idle)
+	{
+		return TRUE;
+	}
+
+	/* if we aren't inhibited then activate */
+	inhibited = listener_ref_entry_is_present (listener, REF_ENTRY_TYPE_INHIBIT);
+
+	res = FALSE;
+	if (! inhibited)
+	{
+		gs_debug ("Trying to activate");
+		res = gs_listener_set_active (listener, TRUE);
+	}
+
+	return res;
+}
+
+static void
+gs_listener_set_throttle (GSListener *listener,
+                          gboolean    throttled)
+{
+	g_return_if_fail (GS_IS_LISTENER (listener));
+
+	if (listener->priv->throttled != throttled)
+	{
+		gs_debug ("Changing throttle status: %d", throttled);
+
+		listener->priv->throttled = throttled;
+
+		g_signal_emit (listener, signals [THROTTLE_CHANGED], 0, throttled);
+	}
+}
+
+static gboolean
+listener_check_throttle (GSListener *listener)
+{
+	gboolean throttled;
+
+	gs_debug ("Checking for throttle");
+
+	throttled = listener_ref_entry_is_present (listener, REF_ENTRY_TYPE_THROTTLE);
+
+	if (throttled != listener->priv->throttled)
+	{
+		gs_listener_set_throttle (listener, throttled);
+	}
+
+	return TRUE;
+}
+
+static gboolean
+listener_set_session_idle_internal (GSListener *listener,
+                                    gboolean    idle)
+{
+	listener->priv->session_idle = idle;
+
+	if (idle)
+	{
+		listener->priv->session_idle_start = time (NULL);
+	}
+	else
+	{
+		listener->priv->session_idle_start = 0;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+listener_set_active_internal (GSListener *listener,
+                              gboolean    active)
+{
+	listener->priv->active = active;
+
+	/* if idle not in sync with active, change it */
+	if (listener->priv->session_idle != active)
+	{
+		listener_set_session_idle_internal (listener, active);
+	}
+
+	if (active)
+	{
+		listener->priv->active_start = time (NULL);
+	}
+	else
+	{
+		listener->priv->active_start = 0;
+	}
+
+	gs_listener_send_signal_active_changed (listener);
+
+	return TRUE;
+}
+
+gboolean
+gs_listener_set_active (GSListener *listener,
+                        gboolean    active)
+{
+	gboolean res;
+
+	g_return_val_if_fail (GS_IS_LISTENER (listener), FALSE);
+
+	if (listener->priv->active == active)
+	{
+		gs_debug ("Trying to set active state when already: %s",
+		          active ? "active" : "inactive");
+		return FALSE;
+	}
+
+	res = FALSE;
+	g_signal_emit (listener, signals [ACTIVE_CHANGED], 0, active, &res);
+	if (! res)
+	{
+		/* if the signal is not handled then we haven't changed state */
+		gs_debug ("Active-changed signal not handled");
+
+		/* clear the idle state */
+		if (active)
+		{
+			listener_set_session_idle_internal (listener, FALSE);
+		}
+
+		return FALSE;
+	}
+
+	listener_set_active_internal (listener, active);
+
+	return TRUE;
+}
+
+gboolean
+gs_listener_set_session_idle (GSListener *listener,
+                              gboolean    idle)
+{
+	gboolean res;
+
+	g_return_val_if_fail (GS_IS_LISTENER (listener), FALSE);
+
+	gs_debug ("Setting session idle: %d", idle);
+
+	if (listener->priv->session_idle == idle)
+	{
+		gs_debug ("Trying to set idle state when already %s",
+		          idle ? "idle" : "not idle");
+		return FALSE;
+	}
+
+	if (idle)
+	{
+		gboolean inhibited;
+
+		inhibited = listener_ref_entry_is_present (listener, REF_ENTRY_TYPE_INHIBIT);
+
+		/* if we are inhibited then do nothing */
+		if (inhibited)
+		{
+			return FALSE;
+		}
+	}
+
+	listener->priv->session_idle = idle;
+	res = listener_check_activation (listener);
+
+	/* if activation fails then don't set idle */
+	if (res)
+	{
+		listener_set_session_idle_internal (listener, idle);
+	}
+	else
+	{
+		gs_debug ("Idle activation failed");
+		listener->priv->session_idle = !idle;
+	}
+
+	return res;
+}
+
+gboolean
+gs_listener_get_activation_enabled (GSListener *listener)
+{
+	g_return_val_if_fail (GS_IS_LISTENER (listener), FALSE);
+
+	return listener->priv->activation_enabled;
+}
+
+gboolean
+gs_listener_is_inhibited (GSListener *listener)
+{
+	gboolean inhibited;
+
+	g_return_val_if_fail (GS_IS_LISTENER (listener), FALSE);
+
+	inhibited = listener_ref_entry_is_present (listener, REF_ENTRY_TYPE_INHIBIT);
+
+	return inhibited;
+}
+
+void
+gs_listener_set_activation_enabled (GSListener *listener,
+                                    gboolean    enabled)
+{
+	g_return_if_fail (GS_IS_LISTENER (listener));
+
+	if (listener->priv->activation_enabled != enabled)
+	{
+		listener->priv->activation_enabled = enabled;
+	}
+}
+
+static dbus_bool_t
+listener_property_set_bool (GSListener *listener,
+                            guint       prop_id,
+                            dbus_bool_t value)
+{
+	dbus_bool_t ret;
+
+	ret = FALSE;
+
+	switch (prop_id)
+	{
+	case PROP_ACTIVE:
+		gs_listener_set_active (listener, value);
+		ret = TRUE;
+		break;
+	default:
+		break;
+	}
+
+	return ret;
+}
+
+static void
+raise_error (DBusConnection *connection,
+             DBusMessage    *in_reply_to,
+             const char     *error_name,
+             char           *format, ...)
+{
+	char         buf[512];
+	DBusMessage *reply;
+
+	va_list args;
+	va_start (args, format);
+	vsnprintf (buf, sizeof (buf), format, args);
+	va_end (args);
+
+	gs_debug (buf);
+	reply = dbus_message_new_error (in_reply_to, error_name, buf);
+	if (reply == NULL)
+	{
+		g_error ("No memory");
+	}
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+}
+
+static void
+raise_syntax (DBusConnection *connection,
+              DBusMessage    *in_reply_to,
+              const char     *method_name)
+{
+	raise_error (connection, in_reply_to,
+	             GS_LISTENER_SERVICE ".SyntaxError",
+	             "There is a syntax error in the invocation of the method %s",
+	             method_name);
+}
+
+static guint32
+generate_cookie (void)
+{
+	guint32 cookie;
+
+	cookie = (guint32)g_random_int_range (1, G_MAXINT32);
+
+	return cookie;
+}
+
+static guint32
+listener_generate_unique_key (GSListener *listener,
+                              int         entry_type)
+{
+	guint32     cookie;
+	GHashTable *hash;
+
+	hash = get_hash_for_entry_type (listener, entry_type);
+
+	do
+	{
+		cookie = generate_cookie ();
+	}
+	while (g_hash_table_lookup (hash, &cookie) != NULL);
+
+	return cookie;
+}
+
+static void
+listener_ref_entry_check (GSListener *listener,
+                          int         entry_type)
+{
+	switch (entry_type)
+	{
+	case REF_ENTRY_TYPE_INHIBIT:
+		listener_check_activation (listener);
+		break;
+	case REF_ENTRY_TYPE_THROTTLE:
+		listener_check_throttle (listener);
+		break;
+	default:
+		g_assert_not_reached ();
+		break;
+	}
+}
+
+static void
+add_session_inhibit (GSListener         *listener,
+                     GSListenerRefEntry *entry)
+{
+	DBusMessage    *message;
+	DBusMessage    *reply;
+	DBusMessageIter iter;
+	DBusMessageIter reply_iter;
+	DBusError       error;
+	guint           xid;
+	guint           flags;
+
+	g_return_if_fail (listener != NULL);
+
+	dbus_error_init (&error);
+
+	message = dbus_message_new_method_call (SESSION_NAME,
+	                                        SESSION_PATH,
+	                                        SESSION_INTERFACE,
+	                                        "Inhibit");
+	if (message == NULL)
+	{
+		gs_debug ("Couldn't allocate the dbus message");
+		return;
+	}
+
+	dbus_message_iter_init_append (message, &iter);
+	xid = 0;
+	flags = 8;
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &entry->application);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &xid);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &entry->reason);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &flags);
+
+	/* FIXME: use async? */
+	reply = dbus_connection_send_with_reply_and_block (listener->priv->connection,
+	        message,
+	        -1,
+	        &error);
+	dbus_message_unref (message);
+
+	if (dbus_error_is_set (&error))
+	{
+		gs_debug ("%s raised:\n %s\n\n", error.name, error.message);
+		dbus_error_free (&error);
+		return;
+	}
+
+	dbus_message_iter_init (reply, &reply_iter);
+	dbus_message_iter_get_basic (&reply_iter, &entry->foreign_cookie);
+
+	dbus_message_unref (reply);
+}
+
+static void
+remove_session_inhibit (GSListener         *listener,
+                        GSListenerRefEntry *entry)
+{
+	DBusMessage    *message;
+	DBusMessage    *reply;
+	DBusMessageIter iter;
+	DBusError       error;
+
+	g_return_if_fail (listener != NULL);
+
+	if (entry->foreign_cookie == 0)
+	{
+		gs_debug ("Can't remove inhibitor from session: Session cookie not set");
+		return;
+	}
+
+	dbus_error_init (&error);
+
+	message = dbus_message_new_method_call (SESSION_NAME,
+	                                        SESSION_PATH,
+	                                        SESSION_INTERFACE,
+	                                        "Uninhibit");
+	if (message == NULL)
+	{
+		gs_debug ("Couldn't allocate the dbus message");
+		return;
+	}
+
+	dbus_message_iter_init_append (message, &iter);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &entry->foreign_cookie);
+
+	/* FIXME: use async? */
+	reply = dbus_connection_send_with_reply_and_block (listener->priv->connection,
+	        message,
+	        -1,
+	        &error);
+	dbus_message_unref (message);
+
+	if (dbus_error_is_set (&error))
+	{
+		gs_debug ("%s raised:\n %s\n\n", error.name, error.message);
+		dbus_error_free (&error);
+		return;
+	}
+
+	dbus_message_unref (reply);
+}
+
+static void
+listener_add_ref_entry (GSListener         *listener,
+                        int                 entry_type,
+                        GSListenerRefEntry *entry)
+{
+	GHashTable *hash;
+
+	gs_debug ("adding %s from %s for reason '%s' on connection %s",
+	          get_name_for_entry_type (entry_type),
+	          entry->application,
+	          entry->reason,
+	          entry->connection);
+
+	hash = get_hash_for_entry_type (listener, entry_type);
+	g_hash_table_insert (hash, &entry->cookie, entry);
+
+	if (entry_type == REF_ENTRY_TYPE_INHIBIT)
+	{
+		/* proxy inhibit over to mate session */
+		add_session_inhibit (listener, entry);
+	}
+
+	listener_ref_entry_check (listener, entry_type);
+}
+
+static gboolean
+listener_remove_ref_entry (GSListener *listener,
+                           int         entry_type,
+                           guint32     cookie)
+{
+	GHashTable         *hash;
+	gboolean            removed;
+	GSListenerRefEntry *entry;
+
+	removed = FALSE;
+
+	hash = get_hash_for_entry_type (listener, entry_type);
+
+	entry = g_hash_table_lookup (hash, &cookie);
+	if (entry == NULL)
+	{
+		goto out;
+	}
+
+	gs_debug ("removing %s from %s for reason '%s' on connection %s",
+	          get_name_for_entry_type (entry_type),
+	          entry->application,
+	          entry->reason,
+	          entry->connection);
+
+	if (entry_type == REF_ENTRY_TYPE_INHIBIT)
+	{
+		/* remove inhibit from mate session */
+		remove_session_inhibit (listener, entry);
+	}
+
+	removed = g_hash_table_remove (hash, &cookie);
+out:
+	if (removed)
+	{
+		listener_ref_entry_check (listener, entry_type);
+	}
+	else
+	{
+		gs_debug ("Cookie %u was not in the list!", cookie);
+	}
+
+	return removed;
+}
+
+#if GLIB_CHECK_VERSION(2,12,0)
+#define _g_time_val_to_iso8601(t) g_time_val_to_iso8601(t)
+#else
+/* copied from GLib */
+static gchar *
+_g_time_val_to_iso8601 (GTimeVal *time_)
+{
+	gchar *retval;
+
+	g_return_val_if_fail (time_->tv_usec >= 0 && time_->tv_usec < G_USEC_PER_SEC, NULL);
+
+#define ISO_8601_LEN    21
+#define ISO_8601_FORMAT "%Y-%m-%dT%H:%M:%SZ"
+	retval = g_new0 (gchar, ISO_8601_LEN + 1);
+
+	strftime (retval, ISO_8601_LEN,
+	          ISO_8601_FORMAT,
+	          gmtime (&(time_->tv_sec)));
+
+	return retval;
+}
+#endif
+
+static void
+accumulate_ref_entry (gpointer            key,
+                      GSListenerRefEntry *entry,
+                      DBusMessageIter    *iter)
+{
+	char *description;
+	char *time;
+
+	time = _g_time_val_to_iso8601 (&entry->since);
+
+	description = g_strdup_printf ("Application=\"%s\"; Since=\"%s\"; Reason=\"%s\";",
+	                               entry->application,
+	                               time,
+	                               entry->reason);
+
+	dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, &description);
+
+	g_free (description);
+	g_free (time);
+}
+
+static DBusHandlerResult
+listener_dbus_get_ref_entries (GSListener     *listener,
+                               int             entry_type,
+                               DBusConnection *connection,
+                               DBusMessage    *message)
+{
+	DBusMessage        *reply;
+	GHashTable         *hash;
+	DBusMessageIter     iter;
+	DBusMessageIter     iter_array;
+
+	hash = get_hash_for_entry_type (listener, entry_type);
+
+	reply = dbus_message_new_method_return (message);
+	if (reply == NULL)
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_iter_init_append (reply, &iter);
+	dbus_message_iter_open_container (&iter,
+	                                  DBUS_TYPE_ARRAY,
+	                                  DBUS_TYPE_STRING_AS_STRING,
+	                                  &iter_array);
+
+	if (hash != NULL)
+	{
+		g_hash_table_foreach (hash,
+		                      (GHFunc)accumulate_ref_entry,
+		                      &iter_array);
+	}
+
+	dbus_message_iter_close_container (&iter, &iter_array);
+
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static void
+listener_add_ck_ref_entry (GSListener     *listener,
+                           int             entry_type,
+                           DBusConnection *connection,
+                           DBusMessage    *message,
+                           guint32        *cookiep)
+{
+	GSListenerRefEntry *entry;
+
+	entry = g_new0 (GSListenerRefEntry, 1);
+	entry->entry_type = entry_type;
+	entry->connection = g_strdup (dbus_message_get_sender (message));
+	entry->cookie = listener_generate_unique_key (listener, entry_type);
+	entry->application = g_strdup ("ConsoleKit");
+	entry->reason = g_strdup ("Session is not active");
+	g_get_current_time (&entry->since);
+
+	/* takes ownership of entry */
+	listener_add_ref_entry (listener, entry_type, entry);
+
+	if (cookiep != NULL)
+	{
+		*cookiep = entry->cookie;
+	}
+}
+
+static void
+listener_remove_ck_ref_entry (GSListener *listener,
+                              int         entry_type,
+                              guint32     cookie)
+{
+	listener_remove_ref_entry (listener, entry_type, cookie);
+}
+
+static DBusHandlerResult
+listener_dbus_add_ref_entry (GSListener     *listener,
+                             int             entry_type,
+                             DBusConnection *connection,
+                             DBusMessage    *message)
+{
+	DBusMessage        *reply;
+	DBusError           error;
+	const char         *application;
+	const char         *reason;
+	GSListenerRefEntry *entry;
+	DBusMessageIter     iter;
+
+	dbus_error_init (&error);
+	if (! dbus_message_get_args (message, &error,
+	                             DBUS_TYPE_STRING, &application,
+	                             DBUS_TYPE_STRING, &reason,
+	                             DBUS_TYPE_INVALID))
+	{
+		if (entry_type == REF_ENTRY_TYPE_INHIBIT)
+		{
+			raise_syntax (connection, message, "Inhibit");
+		}
+		else if (entry_type == REF_ENTRY_TYPE_THROTTLE)
+		{
+			raise_syntax (connection, message, "Throttle");
+		}
+		else
+		{
+			g_assert_not_reached ();
+		}
+
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+
+	reply = dbus_message_new_method_return (message);
+	if (reply == NULL)
+	{
+		g_error ("No memory");
+	}
+
+	entry = g_new0 (GSListenerRefEntry, 1);
+	entry->entry_type = entry_type;
+	entry->connection = g_strdup (dbus_message_get_sender (message));
+	entry->cookie = listener_generate_unique_key (listener, entry_type);
+	entry->application = g_strdup (application);
+	entry->reason = g_strdup (reason);
+	g_get_current_time (&entry->since);
+
+	listener_add_ref_entry (listener, entry_type, entry);
+
+	dbus_message_iter_init_append (reply, &iter);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &entry->cookie);
+
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_dbus_remove_ref_entry (GSListener     *listener,
+                                int             entry_type,
+                                DBusConnection *connection,
+                                DBusMessage    *message)
+{
+	DBusMessage        *reply;
+	DBusError           error;
+	const char         *sender;
+	guint32             cookie;
+
+	dbus_error_init (&error);
+	if (! dbus_message_get_args (message, &error,
+	                             DBUS_TYPE_UINT32, &cookie,
+	                             DBUS_TYPE_INVALID))
+	{
+		if (entry_type == REF_ENTRY_TYPE_INHIBIT)
+		{
+			raise_syntax (connection, message, "UnInhibit");
+		}
+		else if (entry_type == REF_ENTRY_TYPE_THROTTLE)
+		{
+			raise_syntax (connection, message, "UnThrottle");
+		}
+		else
+		{
+			g_assert_not_reached ();
+		}
+
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+
+	reply = dbus_message_new_method_return (message);
+	if (reply == NULL)
+		g_error ("No memory");
+
+	/* FIXME: check sender is from same connection as entry */
+	sender = dbus_message_get_sender (message);
+
+	listener_remove_ref_entry (listener, entry_type, cookie);
+
+	/* FIXME:  Pointless? */
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static gboolean
+listener_ref_entry_remove_for_connection (GSListener  *listener,
+        int          entry_type,
+        const char  *connection)
+{
+	gboolean    removed;
+	GHashTable *hash;
+	GHashTableIter iter;
+	GSListenerRefEntry *entry;
+
+	if (connection == NULL)
+		return FALSE;
+
+	hash = get_hash_for_entry_type (listener, entry_type);
+
+	removed = FALSE;
+	g_hash_table_iter_init (&iter, hash);
+	while (g_hash_table_iter_next (&iter, NULL, (gpointer *)&entry))
+	{
+		if (entry->connection != NULL &&
+		        strcmp (connection, entry->connection) == 0)
+		{
+			gs_debug ("removing %s from %s for reason '%s' on connection %s",
+			          get_name_for_entry_type (entry->entry_type),
+			          entry->application,
+			          entry->reason,
+			          entry->connection);
+
+			if (entry->entry_type == REF_ENTRY_TYPE_INHIBIT)
+			{
+				/* remove inhibit from mate session */
+				remove_session_inhibit (listener, entry);
+			}
+
+			g_hash_table_iter_remove (&iter);
+			removed = TRUE;
+		}
+	}
+
+	return removed;
+}
+
+static void
+listener_service_deleted (GSListener  *listener,
+                          DBusMessage *message)
+{
+	const char *old_service_name;
+	const char *new_service_name;
+	gboolean    removed;
+
+	if (! dbus_message_get_args (message, NULL,
+	                             DBUS_TYPE_STRING, &old_service_name,
+	                             DBUS_TYPE_STRING, &new_service_name,
+	                             DBUS_TYPE_INVALID))
+	{
+		g_error ("Invalid NameOwnerChanged signal from bus!");
+		return;
+	}
+
+	gs_debug ("DBUS service deleted: %s", new_service_name);
+
+	removed = listener_ref_entry_remove_for_connection (listener, REF_ENTRY_TYPE_THROTTLE, new_service_name);
+	if (removed)
+	{
+		listener_ref_entry_check (listener, REF_ENTRY_TYPE_THROTTLE);
+	}
+
+	removed = listener_ref_entry_remove_for_connection (listener, REF_ENTRY_TYPE_INHIBIT, new_service_name);
+	if (removed)
+	{
+		listener_ref_entry_check (listener, REF_ENTRY_TYPE_INHIBIT);
+	}
+
+}
+
+static void
+raise_property_type_error (DBusConnection *connection,
+                           DBusMessage    *in_reply_to,
+                           const char     *device_id)
+{
+	char         buf [512];
+	DBusMessage *reply;
+
+	snprintf (buf, 511,
+	          "Type mismatch setting property with id %s",
+	          device_id);
+	gs_debug (buf);
+
+	reply = dbus_message_new_error (in_reply_to,
+	                                TYPE_MISMATCH_ERROR,
+	                                buf);
+	if (reply == NULL)
+	{
+		g_error ("No memory");
+	}
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+}
+
+static DBusHandlerResult
+listener_set_property (GSListener     *listener,
+                       DBusConnection *connection,
+                       DBusMessage    *message,
+                       guint           prop_id)
+{
+	const char     *path;
+	int             type;
+	gboolean        rc;
+	DBusMessageIter iter;
+	DBusMessage    *reply;
+
+	path = dbus_message_get_path (message);
+
+	dbus_message_iter_init (message, &iter);
+	type = dbus_message_iter_get_arg_type (&iter);
+	rc = FALSE;
+
+	switch (type)
+	{
+	case DBUS_TYPE_BOOLEAN:
+	{
+		dbus_bool_t v;
+		dbus_message_iter_get_basic (&iter, &v);
+		rc = listener_property_set_bool (listener, prop_id, v);
+		break;
+	}
+	default:
+		gs_debug ("Unsupported property type %d", type);
+		break;
+	}
+
+	if (! rc)
+	{
+		raise_property_type_error (connection, message, path);
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+
+	reply = dbus_message_new_method_return (message);
+
+	if (reply == NULL)
+	{
+		g_error ("No memory");
+	}
+
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_get_property (GSListener     *listener,
+                       DBusConnection *connection,
+                       DBusMessage    *message,
+                       guint           prop_id)
+{
+	DBusMessageIter iter;
+	DBusMessage    *reply;
+
+	reply = dbus_message_new_method_return (message);
+
+	dbus_message_iter_init_append (reply, &iter);
+
+	if (reply == NULL)
+		g_error ("No memory");
+
+	switch (prop_id)
+	{
+	case PROP_ACTIVE:
+	{
+		dbus_bool_t b;
+		b = listener->priv->active;
+		dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &b);
+	}
+	break;
+	default:
+		gs_debug ("Unsupported property id %u", prop_id);
+		break;
+	}
+
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_get_active_time (GSListener     *listener,
+                          DBusConnection *connection,
+                          DBusMessage    *message)
+{
+	DBusMessageIter iter;
+	DBusMessage    *reply;
+	dbus_uint32_t    secs;
+
+	reply = dbus_message_new_method_return (message);
+
+	dbus_message_iter_init_append (reply, &iter);
+
+	if (reply == NULL)
+	{
+		g_error ("No memory");
+	}
+
+	if (listener->priv->active)
+	{
+		time_t now = time (NULL);
+
+		if (now < listener->priv->active_start)
+		{
+			/* shouldn't happen */
+			gs_debug ("Active start time is in the future");
+			secs = 0;
+		}
+		else if (listener->priv->active_start <= 0)
+		{
+			/* shouldn't happen */
+			gs_debug ("Active start time was not set");
+			secs = 0;
+		}
+		else
+		{
+			secs = now - listener->priv->active_start;
+		}
+	}
+	else
+	{
+		secs = 0;
+	}
+
+	gs_debug ("Returning screensaver active for %u seconds", secs);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &secs);
+
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_show_message (GSListener     *listener,
+                       DBusConnection *connection,
+                       DBusMessage    *message)
+{
+	DBusMessageIter iter;
+	DBusMessage    *reply;
+	DBusError       error;
+
+	reply = dbus_message_new_method_return (message);
+
+	dbus_message_iter_init_append (reply, &iter);
+
+	if (reply == NULL)
+	{
+		g_error ("No memory");
+	}
+
+	if (listener->priv->active)
+	{
+		char *summary;
+		char *body;
+		char *icon;
+
+		/* if we're not active we ignore the request */
+
+		dbus_error_init (&error);
+		if (! dbus_message_get_args (message, &error,
+		                             DBUS_TYPE_STRING, &summary,
+		                             DBUS_TYPE_STRING, &body,
+		                             DBUS_TYPE_STRING, &icon,
+		                             DBUS_TYPE_INVALID))
+		{
+			raise_syntax (connection, message, "ShowMessage");
+			return DBUS_HANDLER_RESULT_HANDLED;
+		}
+
+		g_signal_emit (listener, signals [SHOW_MESSAGE], 0, summary, body, icon);
+	}
+
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+do_introspect (DBusConnection *connection,
+               DBusMessage    *message,
+               dbus_bool_t     local_interface)
+{
+	DBusMessage *reply;
+	GString     *xml;
+	char        *xml_string;
+
+	/* standard header */
+	xml = g_string_new ("<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
+	                    "\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
+	                    "<node>\n"
+	                    "  <interface name=\"org.freedesktop.DBus.Introspectable\">\n"
+	                    "    <method name=\"Introspect\">\n"
+	                    "      <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
+	                    "    </method>\n"
+	                    "  </interface>\n");
+
+	/* ScreenSaver interface */
+	xml = g_string_append (xml,
+	                       "  <interface name=\"org.mate.ScreenSaver\">\n"
+	                       "    <method name=\"Lock\">\n"
+	                       "    </method>\n"
+	                       "    <method name=\"Cycle\">\n"
+	                       "    </method>\n"
+	                       "    <method name=\"SimulateUserActivity\">\n"
+	                       "    </method>\n"
+	                       "    <method name=\"Inhibit\">\n"
+	                       "      <arg name=\"application_name\" direction=\"in\" type=\"s\"/>\n"
+	                       "      <arg name=\"reason\" direction=\"in\" type=\"s\"/>\n"
+	                       "      <arg name=\"cookie\" direction=\"out\" type=\"u\"/>\n"
+	                       "    </method>\n"
+	                       "    <method name=\"UnInhibit\">\n"
+	                       "      <arg name=\"cookie\" direction=\"in\" type=\"u\"/>\n"
+	                       "    </method>\n"
+	                       "    <method name=\"GetInhibitors\">\n"
+	                       "      <arg name=\"list\" direction=\"out\" type=\"as\"/>\n"
+	                       "    </method>\n"
+	                       "    <method name=\"Throttle\">\n"
+	                       "      <arg name=\"application_name\" direction=\"in\" type=\"s\"/>\n"
+	                       "      <arg name=\"reason\" direction=\"in\" type=\"s\"/>\n"
+	                       "      <arg name=\"cookie\" direction=\"out\" type=\"u\"/>\n"
+	                       "    </method>\n"
+	                       "    <method name=\"UnThrottle\">\n"
+	                       "      <arg name=\"cookie\" direction=\"in\" type=\"u\"/>\n"
+	                       "    </method>\n"
+	                       "    <method name=\"GetActive\">\n"
+	                       "      <arg name=\"value\" direction=\"out\" type=\"b\"/>\n"
+	                       "    </method>\n"
+	                       "    <method name=\"GetActiveTime\">\n"
+	                       "      <arg name=\"seconds\" direction=\"out\" type=\"u\"/>\n"
+	                       "    </method>\n"
+	                       "    <method name=\"SetActive\">\n"
+	                       "      <arg name=\"value\" direction=\"in\" type=\"b\"/>\n"
+	                       "    </method>\n"
+	                       "    <method name=\"ShowMessage\">\n"
+	                       "      <arg name=\"summary\" direction=\"in\" type=\"s\"/>\n"
+	                       "      <arg name=\"body\" direction=\"in\" type=\"s\"/>\n"
+	                       "      <arg name=\"icon\" direction=\"in\" type=\"s\"/>\n"
+	                       "    </method>\n"
+	                       "    <signal name=\"ActiveChanged\">\n"
+	                       "      <arg name=\"new_value\" type=\"b\"/>\n"
+	                       "    </signal>\n"
+	                       "  </interface>\n");
+
+	reply = dbus_message_new_method_return (message);
+
+	xml = g_string_append (xml, "</node>\n");
+	xml_string = g_string_free (xml, FALSE);
+
+	dbus_message_append_args (reply,
+	                          DBUS_TYPE_STRING, &xml_string,
+	                          DBUS_TYPE_INVALID);
+
+	g_free (xml_string);
+
+	if (reply == NULL)
+	{
+		g_error ("No memory");
+	}
+
+	if (! dbus_connection_send (connection, reply, NULL))
+	{
+		g_error ("No memory");
+	}
+
+	dbus_message_unref (reply);
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_dbus_handle_session_message (DBusConnection *connection,
+                                      DBusMessage    *message,
+                                      void           *user_data,
+                                      dbus_bool_t     local_interface)
+{
+	GSListener *listener = GS_LISTENER (user_data);
+
+#if 0
+	g_message ("obj_path=%s interface=%s method=%s destination=%s",
+	           dbus_message_get_path (message),
+	           dbus_message_get_interface (message),
+	           dbus_message_get_member (message),
+	           dbus_message_get_destination (message));
+#endif
+
+	g_return_val_if_fail (connection != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+	g_return_val_if_fail (message != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Lock"))
+	{
+		g_signal_emit (listener, signals [LOCK], 0);
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Quit"))
+	{
+		g_signal_emit (listener, signals [QUIT], 0);
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Cycle"))
+	{
+		g_signal_emit (listener, signals [CYCLE], 0);
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Inhibit"))
+	{
+		return listener_dbus_add_ref_entry (listener, REF_ENTRY_TYPE_INHIBIT, connection, message);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "UnInhibit"))
+	{
+		return listener_dbus_remove_ref_entry (listener, REF_ENTRY_TYPE_INHIBIT, connection, message);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "GetInhibitors"))
+	{
+		return listener_dbus_get_ref_entries (listener, REF_ENTRY_TYPE_INHIBIT, connection, message);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Throttle"))
+	{
+		return listener_dbus_add_ref_entry (listener, REF_ENTRY_TYPE_THROTTLE, connection, message);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "UnThrottle"))
+	{
+		return listener_dbus_remove_ref_entry (listener, REF_ENTRY_TYPE_THROTTLE, connection, message);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "SetActive"))
+	{
+		return listener_set_property (listener, connection, message, PROP_ACTIVE);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "GetActive"))
+	{
+		return listener_get_property (listener, connection, message, PROP_ACTIVE);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "GetActiveTime"))
+	{
+		return listener_get_active_time (listener, connection, message);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "ShowMessage"))
+	{
+		return listener_show_message (listener, connection, message);
+	}
+	if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "SimulateUserActivity"))
+	{
+		g_signal_emit (listener, signals [SIMULATE_USER_ACTIVITY], 0);
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect"))
+	{
+		return do_introspect (connection, message, local_interface);
+	}
+
+	return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static gboolean
+_listener_message_path_is_our_session (GSListener  *listener,
+                                       DBusMessage *message)
+{
+	const char *ssid;
+	gboolean    ours;
+
+	ours = FALSE;
+
+	ssid = dbus_message_get_path (message);
+	if (ssid != NULL
+	        && listener->priv->session_id != NULL
+	        && strcmp (ssid, listener->priv->session_id) == 0)
+	{
+		ours = TRUE;
+	}
+
+	return ours;
+}
+
+static DBusHandlerResult
+listener_dbus_handle_system_message (DBusConnection *connection,
+                                     DBusMessage    *message,
+                                     void           *user_data,
+                                     dbus_bool_t     local_interface)
+{
+	GSListener *listener = GS_LISTENER (user_data);
+
+	g_return_val_if_fail (connection != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+	g_return_val_if_fail (message != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+
+#if 1
+	gs_debug ("obj_path=%s interface=%s method=%s destination=%s",
+	          dbus_message_get_path (message),
+	          dbus_message_get_interface (message),
+	          dbus_message_get_member (message),
+	          dbus_message_get_destination (message));
+#endif
+
+	if (dbus_message_is_signal (message, HAL_DEVICE_INTERFACE, "Condition"))
+	{
+		DBusError   error;
+		const char *event;
+		const char *keyname;
+
+		dbus_error_init (&error);
+		if (dbus_message_get_args (message, &error,
+		                           DBUS_TYPE_STRING, &event,
+		                           DBUS_TYPE_STRING, &keyname,
+		                           DBUS_TYPE_INVALID))
+		{
+			if ((event && strcmp (event, "ButtonPressed") == 0) &&
+			        (keyname && strcmp (keyname, "coffee") == 0))
+			{
+				gs_debug ("Coffee key was pressed - locking");
+				g_signal_emit (listener, signals [LOCK], 0);
+			}
+		}
+
+		if (dbus_error_is_set (&error))
+		{
+			dbus_error_free (&error);
+		}
+
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	else if (dbus_message_is_signal (message, CK_SESSION_INTERFACE, "Unlock"))
+	{
+		if (_listener_message_path_is_our_session (listener, message))
+		{
+			gs_debug ("Console kit requested session unlock");
+			gs_listener_set_active (listener, FALSE);
+		}
+
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	else if (dbus_message_is_signal (message, CK_SESSION_INTERFACE, "Lock"))
+	{
+		if (_listener_message_path_is_our_session (listener, message))
+		{
+			gs_debug ("ConsoleKit requested session lock");
+			g_signal_emit (listener, signals [LOCK], 0);
+		}
+
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	else if (dbus_message_is_signal (message, CK_SESSION_INTERFACE, "ActiveChanged"))
+	{
+		/* NB that `ActiveChanged' refers to the active
+		 * session in ConsoleKit terminology - ie which
+		 * session is currently displayed on the screen.
+		 * mate-screensaver uses `active' to mean `is the
+		 * screensaver active' (ie, is the screen locked) but
+		 * that's not what we're referring to here.
+		 */
+
+		if (_listener_message_path_is_our_session (listener, message))
+		{
+			DBusError   error;
+			dbus_bool_t new_active;
+
+			dbus_error_init (&error);
+			if (dbus_message_get_args (message, &error,
+			                           DBUS_TYPE_BOOLEAN, &new_active,
+			                           DBUS_TYPE_INVALID))
+			{
+				gs_debug ("ConsoleKit notified ActiveChanged %d", new_active);
+
+				/* when we aren't active add an implicit throttle from CK
+				 * when we become active remove the throttle and poke the lock */
+				if (new_active)
+				{
+					if (listener->priv->ck_throttle_cookie != 0)
+					{
+						listener_remove_ck_ref_entry (listener,
+						                              REF_ENTRY_TYPE_THROTTLE,
+						                              listener->priv->ck_throttle_cookie);
+						listener->priv->ck_throttle_cookie = 0;
+					}
+
+					g_signal_emit (listener, signals [SIMULATE_USER_ACTIVITY], 0);
+				}
+				else
+				{
+					if (listener->priv->ck_throttle_cookie != 0)
+					{
+						g_warning ("ConsoleKit throttle already set");
+						listener_remove_ck_ref_entry (listener,
+						                              REF_ENTRY_TYPE_THROTTLE,
+						                              listener->priv->ck_throttle_cookie);
+						listener->priv->ck_throttle_cookie = 0;
+					}
+
+					listener_add_ck_ref_entry (listener,
+					                           REF_ENTRY_TYPE_THROTTLE,
+					                           connection,
+					                           message,
+					                           &listener->priv->ck_throttle_cookie);
+				}
+			}
+
+			if (dbus_error_is_set (&error))
+			{
+				dbus_error_free (&error);
+			}
+		}
+
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+
+	return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static DBusHandlerResult
+gs_listener_message_handler (DBusConnection *connection,
+                             DBusMessage    *message,
+                             void           *user_data)
+{
+	g_return_val_if_fail (connection != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+	g_return_val_if_fail (message != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+
+#if 0
+	g_message ("obj_path=%s interface=%s method=%s destination=%s",
+	           dbus_message_get_path (message),
+	           dbus_message_get_interface (message),
+	           dbus_message_get_member (message),
+	           dbus_message_get_destination (message));
+#endif
+
+	if (dbus_message_is_method_call (message, "org.freedesktop.DBus", "AddMatch"))
+	{
+		DBusMessage *reply;
+
+		reply = dbus_message_new_method_return (message);
+
+		if (reply == NULL)
+		{
+			g_error ("No memory");
+		}
+
+		if (! dbus_connection_send (connection, reply, NULL))
+		{
+			g_error ("No memory");
+		}
+
+		dbus_message_unref (reply);
+
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	else if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected") &&
+	         strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0)
+	{
+		dbus_connection_unref (connection);
+
+		return DBUS_HANDLER_RESULT_HANDLED;
+	}
+	else
+	{
+		return listener_dbus_handle_session_message (connection, message, user_data, TRUE);
+	}
+}
+
+static gboolean
+gs_listener_dbus_init (GSListener *listener)
+{
+	DBusError error;
+
+	dbus_error_init (&error);
+
+	if (listener->priv->connection == NULL)
+	{
+		listener->priv->connection = dbus_bus_get (DBUS_BUS_SESSION, &error);
+		if (listener->priv->connection == NULL)
+		{
+			if (dbus_error_is_set (&error))
+			{
+				gs_debug ("couldn't connect to session bus: %s",
+				          error.message);
+				dbus_error_free (&error);
+			}
+			return FALSE;
+		}
+
+		dbus_connection_setup_with_g_main (listener->priv->connection, NULL);
+		dbus_connection_set_exit_on_disconnect (listener->priv->connection, FALSE);
+	}
+
+	if (listener->priv->system_connection == NULL)
+	{
+		listener->priv->system_connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
+		if (listener->priv->system_connection == NULL)
+		{
+			if (dbus_error_is_set (&error))
+			{
+				gs_debug ("couldn't connect to system bus: %s",
+				          error.message);
+				dbus_error_free (&error);
+			}
+			return FALSE;
+		}
+
+		dbus_connection_setup_with_g_main (listener->priv->system_connection, NULL);
+		dbus_connection_set_exit_on_disconnect (listener->priv->system_connection, FALSE);
+	}
+
+	return TRUE;
+}
+
+static gboolean
+reinit_dbus (GSListener *listener)
+{
+	gboolean initialized;
+	gboolean try_again;
+
+	initialized = gs_listener_dbus_init (listener);
+
+	/* if we didn't initialize then try again */
+	/* FIXME: Should we keep trying forever?  If we fail more than
+	   once or twice then the session bus may have died.  The
+	   problem is that if it is restarted it will likely have a
+	   different bus address and we won't be able to find it */
+	try_again = !initialized;
+
+	return try_again;
+}
+
+static DBusHandlerResult
+listener_dbus_filter_function (DBusConnection *connection,
+                               DBusMessage    *message,
+                               void           *user_data)
+{
+	GSListener *listener = GS_LISTENER (user_data);
+	const char *path;
+
+	path = dbus_message_get_path (message);
+
+	/*
+	g_message ("obj_path=%s interface=%s method=%s",
+	           dbus_message_get_path (message),
+	           dbus_message_get_interface (message),
+	           dbus_message_get_member (message));
+	*/
+
+	if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected")
+	        && strcmp (path, DBUS_PATH_LOCAL) == 0)
+	{
+
+		g_message ("Got disconnected from the session message bus; "
+		           "retrying to reconnect every 10 seconds");
+
+		dbus_connection_unref (connection);
+		listener->priv->connection = NULL;
+
+		g_timeout_add (10000, (GSourceFunc)reinit_dbus, listener);
+	}
+	else if (dbus_message_is_signal (message,
+	                                 DBUS_INTERFACE_DBUS,
+	                                 "NameOwnerChanged"))
+	{
+
+		if (listener->priv->inhibitors != NULL)
+		{
+			listener_service_deleted (listener, message);
+		}
+	}
+	else
+	{
+		return listener_dbus_handle_session_message (connection, message, user_data, FALSE);
+	}
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_dbus_system_filter_function (DBusConnection *connection,
+                                      DBusMessage    *message,
+                                      void           *user_data)
+{
+	GSListener *listener = GS_LISTENER (user_data);
+	const char *path;
+
+	path = dbus_message_get_path (message);
+
+	if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected")
+	        && strcmp (path, DBUS_PATH_LOCAL) == 0)
+	{
+
+		g_message ("Got disconnected from the system message bus; "
+		           "retrying to reconnect every 10 seconds");
+
+		dbus_connection_unref (connection);
+		listener->priv->system_connection = NULL;
+
+		g_timeout_add (10000, (GSourceFunc)reinit_dbus, listener);
+	}
+	else
+	{
+		return listener_dbus_handle_system_message (connection, message, user_data, FALSE);
+	}
+
+	return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static void
+gs_listener_set_property (GObject            *object,
+                          guint               prop_id,
+                          const GValue       *value,
+                          GParamSpec         *pspec)
+{
+	GSListener *self;
+
+	self = GS_LISTENER (object);
+
+	switch (prop_id)
+	{
+	case PROP_ACTIVE:
+		gs_listener_set_active (self, g_value_get_boolean (value));
+		break;
+	case PROP_SESSION_IDLE:
+		gs_listener_set_session_idle (self, g_value_get_boolean (value));
+		break;
+	case PROP_ACTIVATION_ENABLED:
+		gs_listener_set_activation_enabled (self, g_value_get_boolean (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_listener_get_property (GObject            *object,
+                          guint               prop_id,
+                          GValue             *value,
+                          GParamSpec         *pspec)
+{
+	GSListener *self;
+
+	self = GS_LISTENER (object);
+
+	switch (prop_id)
+	{
+	case PROP_ACTIVE:
+		g_value_set_boolean (value, self->priv->active);
+		break;
+	case PROP_SESSION_IDLE:
+		g_value_set_boolean (value, self->priv->session_idle);
+		break;
+	case PROP_ACTIVATION_ENABLED:
+		g_value_set_boolean (value, self->priv->activation_enabled);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_listener_class_init (GSListenerClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize     = gs_listener_finalize;
+	object_class->get_property = gs_listener_get_property;
+	object_class->set_property = gs_listener_set_property;
+
+	signals [LOCK] =
+	    g_signal_new ("lock",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSListenerClass, lock),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+	signals [QUIT] =
+	    g_signal_new ("quit",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSListenerClass, quit),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+	signals [CYCLE] =
+	    g_signal_new ("cycle",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSListenerClass, cycle),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+	signals [SIMULATE_USER_ACTIVITY] =
+	    g_signal_new ("simulate-user-activity",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSListenerClass, simulate_user_activity),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+	signals [ACTIVE_CHANGED] =
+	    g_signal_new ("active-changed",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSListenerClass, active_changed),
+	                  NULL,
+	                  NULL,
+	                  gs_marshal_BOOLEAN__BOOLEAN,
+	                  G_TYPE_BOOLEAN,
+	                  1,
+	                  G_TYPE_BOOLEAN);
+	signals [THROTTLE_CHANGED] =
+	    g_signal_new ("throttle-changed",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSListenerClass, throttle_changed),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__BOOLEAN,
+	                  G_TYPE_NONE,
+	                  1,
+	                  G_TYPE_BOOLEAN);
+	signals [SHOW_MESSAGE] =
+	    g_signal_new ("show-message",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSListenerClass, show_message),
+	                  NULL,
+	                  NULL,
+	                  gs_marshal_VOID__STRING_STRING_STRING,
+	                  G_TYPE_NONE,
+	                  3,
+	                  G_TYPE_STRING,
+	                  G_TYPE_STRING,
+	                  G_TYPE_STRING);
+
+	g_object_class_install_property (object_class,
+	                                 PROP_ACTIVE,
+	                                 g_param_spec_boolean ("active",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_ACTIVATION_ENABLED,
+	                                 g_param_spec_boolean ("activation-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         TRUE,
+	                                         G_PARAM_READWRITE));
+
+	g_type_class_add_private (klass, sizeof (GSListenerPrivate));
+}
+
+
+static gboolean
+screensaver_is_running (DBusConnection *connection)
+{
+	DBusError error;
+	gboolean  exists;
+
+	g_return_val_if_fail (connection != NULL, FALSE);
+
+	dbus_error_init (&error);
+	exists = dbus_bus_name_has_owner (connection, GS_LISTENER_SERVICE, &error);
+	if (dbus_error_is_set (&error))
+	{
+		dbus_error_free (&error);
+	}
+
+	return exists;
+}
+
+gboolean
+gs_listener_acquire (GSListener *listener,
+                     GError    **error)
+{
+	gboolean  acquired;
+	DBusError buserror;
+	gboolean  is_connected;
+
+	g_return_val_if_fail (listener != NULL, FALSE);
+
+	if (! listener->priv->connection)
+	{
+		g_set_error (error,
+		             GS_LISTENER_ERROR,
+		             GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+		             "%s",
+		             _("failed to register with the message bus"));
+		return FALSE;
+	}
+
+	is_connected = dbus_connection_get_is_connected (listener->priv->connection);
+	if (! is_connected)
+	{
+		g_set_error (error,
+		             GS_LISTENER_ERROR,
+		             GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+		             "%s",
+		             _("not connected to the message bus"));
+		return FALSE;
+	}
+
+	if (screensaver_is_running (listener->priv->connection))
+	{
+		g_set_error (error,
+		             GS_LISTENER_ERROR,
+		             GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+		             "%s",
+		             _("screensaver already running in this session"));
+		return FALSE;
+	}
+
+	dbus_error_init (&buserror);
+
+	if (dbus_connection_register_object_path (listener->priv->connection,
+	        GS_LISTENER_PATH,
+	        &gs_listener_vtable,
+	        listener) == FALSE)
+	{
+		g_critical ("out of memory registering object path");
+		return FALSE;
+	}
+
+	acquired = dbus_bus_request_name (listener->priv->connection,
+	                                  GS_LISTENER_SERVICE,
+	                                  0, &buserror) != -1;
+	if (dbus_error_is_set (&buserror))
+	{
+		g_set_error (error,
+		             GS_LISTENER_ERROR,
+		             GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+		             "%s",
+		             buserror.message);
+	}
+
+	dbus_error_free (&buserror);
+
+	dbus_connection_add_filter (listener->priv->connection, listener_dbus_filter_function, listener, NULL);
+
+	dbus_bus_add_match (listener->priv->connection,
+	                    "type='signal'"
+	                    ",interface='"DBUS_INTERFACE_DBUS"'"
+	                    ",sender='"DBUS_SERVICE_DBUS"'"
+	                    ",member='NameOwnerChanged'",
+	                    NULL);
+
+	if (listener->priv->system_connection != NULL)
+	{
+		dbus_connection_add_filter (listener->priv->system_connection,
+		                            listener_dbus_system_filter_function,
+		                            listener,
+		                            NULL);
+
+		dbus_bus_add_match (listener->priv->system_connection,
+		                    "type='signal'"
+		                    ",interface='"HAL_DEVICE_INTERFACE"'"
+		                    ",member='Condition'",
+		                    NULL);
+		dbus_bus_add_match (listener->priv->system_connection,
+		                    "type='signal'"
+		                    ",interface='"CK_SESSION_INTERFACE"'"
+		                    ",member='Unlock'",
+		                    NULL);
+		dbus_bus_add_match (listener->priv->system_connection,
+		                    "type='signal'"
+		                    ",interface='"CK_SESSION_INTERFACE"'"
+		                    ",member='Lock'",
+		                    NULL);
+		dbus_bus_add_match (listener->priv->system_connection,
+		                    "type='signal'"
+		                    ",interface='"CK_SESSION_INTERFACE"'"
+		                    ",member='ActiveChanged'",
+		                    NULL);
+	}
+
+	return acquired;
+}
+
+static char *
+query_session_id (GSListener *listener)
+{
+	DBusMessage    *message;
+	DBusMessage    *reply;
+	DBusError       error;
+	DBusMessageIter reply_iter;
+	char           *ssid;
+
+	if (listener->priv->system_connection == NULL)
+	{
+		gs_debug ("No connection to the system bus");
+		return NULL;
+	}
+
+	ssid = NULL;
+
+	dbus_error_init (&error);
+
+	message = dbus_message_new_method_call (CK_NAME, CK_MANAGER_PATH, CK_MANAGER_INTERFACE, "GetCurrentSession");
+	if (message == NULL)
+	{
+		gs_debug ("Couldn't allocate the dbus message");
+		return NULL;
+	}
+
+	/* FIXME: use async? */
+	reply = dbus_connection_send_with_reply_and_block (listener->priv->system_connection,
+	        message,
+	        -1, &error);
+	dbus_message_unref (message);
+
+	if (dbus_error_is_set (&error))
+	{
+		gs_debug ("%s raised:\n %s\n\n", error.name, error.message);
+		dbus_error_free (&error);
+		return NULL;
+	}
+
+	dbus_message_iter_init (reply, &reply_iter);
+	dbus_message_iter_get_basic (&reply_iter, &ssid);
+
+	dbus_message_unref (reply);
+
+	return g_strdup (ssid);
+}
+
+static void
+init_session_id (GSListener *listener)
+{
+	g_free (listener->priv->session_id);
+	listener->priv->session_id = query_session_id (listener);
+	gs_debug ("Got session-id: %s", listener->priv->session_id);
+}
+
+static void
+gs_listener_init (GSListener *listener)
+{
+	listener->priv = GS_LISTENER_GET_PRIVATE (listener);
+
+	gs_listener_dbus_init (listener);
+
+	init_session_id (listener);
+
+	listener->priv->inhibitors = g_hash_table_new_full (g_int_hash,
+	                             g_int_equal,
+	                             NULL,
+	                             (GDestroyNotify)gs_listener_ref_entry_free);
+	listener->priv->throttlers = g_hash_table_new_full (g_int_hash,
+	                             g_int_equal,
+	                             NULL,
+	                             (GDestroyNotify)gs_listener_ref_entry_free);
+}
+
+static void
+gs_listener_finalize (GObject *object)
+{
+	GSListener *listener;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_LISTENER (object));
+
+	listener = GS_LISTENER (object);
+
+	g_return_if_fail (listener->priv != NULL);
+
+	if (listener->priv->inhibitors)
+	{
+		g_hash_table_destroy (listener->priv->inhibitors);
+	}
+
+	if (listener->priv->throttlers)
+	{
+		g_hash_table_destroy (listener->priv->throttlers);
+	}
+
+	g_free (listener->priv->session_id);
+
+	G_OBJECT_CLASS (gs_listener_parent_class)->finalize (object);
+}
+
+GSListener *
+gs_listener_new (void)
+{
+	GSListener *listener;
+
+	listener = g_object_new (GS_TYPE_LISTENER, NULL);
+
+	return GS_LISTENER (listener);
+}
diff --git a/src/gs-listener-dbus.c.orig b/src/gs-listener-dbus.c.orig
new file mode 100644
index 0000000..b8d4fab
--- /dev/null
+++ b/src/gs-listener-dbus.c.orig
@@ -0,0 +1,2272 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <string.h>
+
+#include <glib/gi18n.h>
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#include "gs-listener-dbus.h"
+#include "gs-marshal.h"
+#include "gs-debug.h"
+
+/* this is for dbus < 0.3 */
+#if ((DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR < 30))
+#define dbus_bus_name_has_owner(connection, name, err)      dbus_bus_service_exists(connection, name, err)
+#define dbus_bus_request_name(connection, name, flags, err) dbus_bus_acquire_service(connection, name, flags, err)
+#endif
+
+static void              gs_listener_class_init         (GSListenerClass *klass);
+static void              gs_listener_init               (GSListener      *listener);
+static void              gs_listener_finalize           (GObject         *object);
+
+static void              gs_listener_unregister_handler (DBusConnection  *connection,
+        void            *data);
+
+static DBusHandlerResult gs_listener_message_handler    (DBusConnection  *connection,
+        DBusMessage     *message,
+        void            *user_data);
+
+#define GS_LISTENER_SERVICE   "org.mate.ScreenSaver"
+#define GS_LISTENER_PATH      "/org/mate/ScreenSaver"
+#define GS_LISTENER_INTERFACE "org.mate.ScreenSaver"
+
+#define HAL_DEVICE_INTERFACE "org.freedesktop.Hal.Device"
+
+#define CK_NAME              "org.freedesktop.ConsoleKit"
+#define CK_MANAGER_PATH      "/org/freedesktop/ConsoleKit/Manager"
+#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
+#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
+
+#define SESSION_NAME         "org.mate.SessionManager"
+#define SESSION_PATH         "/org/mate/SessionManager"
+#define SESSION_INTERFACE    "org.mate.SessionManager"
+
+#define TYPE_MISMATCH_ERROR GS_LISTENER_INTERFACE ".TypeMismatch"
+
+#define GS_LISTENER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_LISTENER, GSListenerPrivate))
+
+struct GSListenerPrivate
+{
+    DBusConnection *connection;
+    DBusConnection *system_connection;
+
+    guint           session_idle : 1;
+    guint           active : 1;
+    guint           activation_enabled : 1;
+    guint           throttled : 1;
+    GHashTable     *inhibitors;
+    GHashTable     *throttlers;
+    time_t          active_start;
+    time_t          session_idle_start;
+    char           *session_id;
+
+    guint32         ck_throttle_cookie;
+};
+
+typedef struct
+{
+    int      entry_type;
+    char    *application;
+    char    *reason;
+    char    *connection;
+    guint32  cookie;
+    guint32  foreign_cookie;
+    GTimeVal since;
+} GSListenerRefEntry;
+
+enum
+{
+    LOCK,
+    CYCLE,
+    QUIT,
+    SIMULATE_USER_ACTIVITY,
+    ACTIVE_CHANGED,
+    THROTTLE_CHANGED,
+    SHOW_MESSAGE,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0,
+    PROP_ACTIVE,
+    PROP_SESSION_IDLE,
+    PROP_ACTIVATION_ENABLED,
+};
+
+enum
+{
+    REF_ENTRY_TYPE_INHIBIT,
+    REF_ENTRY_TYPE_THROTTLE
+};
+
+static DBusObjectPathVTable
+gs_listener_vtable = { &gs_listener_unregister_handler,
+                       &gs_listener_message_handler,
+                       NULL,
+                       NULL,
+                       NULL,
+                       NULL
+                     };
+
+static guint         signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSListener, gs_listener, G_TYPE_OBJECT)
+
+GQuark
+gs_listener_error_quark (void)
+{
+    static GQuark quark = 0;
+    if (!quark)
+    {
+        quark = g_quark_from_static_string ("gs_listener_error");
+    }
+
+    return quark;
+}
+
+static void
+gs_listener_ref_entry_free (GSListenerRefEntry *entry)
+{
+    g_free (entry->connection);
+    g_free (entry->application);
+    g_free (entry->reason);
+    g_free (entry);
+    entry = NULL;
+}
+
+static void
+gs_listener_unregister_handler (DBusConnection *connection,
+                                void           *data)
+{
+}
+
+static gboolean
+send_dbus_message (DBusConnection *connection,
+                   DBusMessage    *message)
+{
+    gboolean is_connected;
+    gboolean sent;
+
+    g_return_val_if_fail (message != NULL, FALSE);
+
+    if (! connection)
+    {
+        gs_debug ("There is no valid connection to the message bus");
+        return FALSE;
+    }
+
+    is_connected = dbus_connection_get_is_connected (connection);
+    if (! is_connected)
+    {
+        gs_debug ("Not connected to the message bus");
+        return FALSE;
+    }
+
+    sent = dbus_connection_send (connection, message, NULL);
+
+    return sent;
+}
+
+static void
+send_dbus_boolean_signal (GSListener *listener,
+                          const char *name,
+                          gboolean    value)
+{
+    DBusMessage    *message;
+    DBusMessageIter iter;
+
+    g_return_if_fail (listener != NULL);
+
+    message = dbus_message_new_signal (GS_LISTENER_PATH,
+                                       GS_LISTENER_SERVICE,
+                                       name);
+
+    dbus_message_iter_init_append (message, &iter);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &value);
+
+    if (! send_dbus_message (listener->priv->connection, message))
+    {
+        gs_debug ("Could not send %s signal", name);
+    }
+
+    dbus_message_unref (message);
+}
+
+static void
+gs_listener_send_signal_active_changed (GSListener *listener)
+{
+    g_return_if_fail (listener != NULL);
+
+    gs_debug ("Sending the ActiveChanged(%s) signal on the session bus",
+              listener->priv->active ? "TRUE" : "FALSE");
+
+    send_dbus_boolean_signal (listener, "ActiveChanged", listener->priv->active);
+}
+
+static const char *
+get_name_for_entry_type (int entry_type)
+{
+    const char *name;
+
+    switch (entry_type)
+    {
+    case REF_ENTRY_TYPE_INHIBIT:
+        name = "inhibitor";
+        break;
+    case REF_ENTRY_TYPE_THROTTLE:
+        name = "throttler";
+        break;
+    default:
+        g_assert_not_reached ();
+        break;
+    }
+
+    return name;
+}
+
+static GHashTable *
+get_hash_for_entry_type (GSListener         *listener,
+                         int                 entry_type)
+{
+    GHashTable *hash;
+
+    switch (entry_type)
+    {
+    case REF_ENTRY_TYPE_INHIBIT:
+        hash = listener->priv->inhibitors;
+        break;
+    case REF_ENTRY_TYPE_THROTTLE:
+        hash = listener->priv->throttlers;
+        break;
+    default:
+        g_assert_not_reached ();
+        break;
+    }
+
+    return hash;
+}
+
+static void
+list_ref_entry (gpointer key,
+                gpointer value,
+                gpointer user_data)
+{
+    GSListenerRefEntry *entry;
+
+    entry =  (GSListenerRefEntry *)value;
+
+    gs_debug ("%s: %s for reason: %s",
+              get_name_for_entry_type (entry->entry_type),
+              entry->application,
+              entry->reason);
+}
+
+static gboolean
+listener_ref_entry_is_present (GSListener *listener,
+                               int         entry_type)
+{
+    guint       n_entries;
+    gboolean    is_set;
+    GHashTable *hash;
+
+    hash = get_hash_for_entry_type (listener, entry_type);
+
+    /* if we aren't inhibited then activate */
+    n_entries = 0;
+    if (hash != NULL)
+    {
+        n_entries = g_hash_table_size (hash);
+
+        g_hash_table_foreach (hash, list_ref_entry, NULL);
+    }
+
+    is_set = (n_entries > 0);
+
+    return is_set;
+}
+
+static gboolean
+listener_check_activation (GSListener *listener)
+{
+    gboolean inhibited;
+    gboolean res;
+
+    gs_debug ("Checking for activation");
+
+    if (! listener->priv->activation_enabled)
+    {
+        return TRUE;
+    }
+
+    if (! listener->priv->session_idle)
+    {
+        return TRUE;
+    }
+
+    /* if we aren't inhibited then activate */
+    inhibited = listener_ref_entry_is_present (listener, REF_ENTRY_TYPE_INHIBIT);
+
+    res = FALSE;
+    if (! inhibited)
+    {
+        gs_debug ("Trying to activate");
+        res = gs_listener_set_active (listener, TRUE);
+    }
+
+    return res;
+}
+
+static void
+gs_listener_set_throttle (GSListener *listener,
+                          gboolean    throttled)
+{
+    g_return_if_fail (GS_IS_LISTENER (listener));
+
+    if (listener->priv->throttled != throttled)
+    {
+        gs_debug ("Changing throttle status: %d", throttled);
+
+        listener->priv->throttled = throttled;
+
+        g_signal_emit (listener, signals [THROTTLE_CHANGED], 0, throttled);
+    }
+}
+
+static gboolean
+listener_check_throttle (GSListener *listener)
+{
+    gboolean throttled;
+
+    gs_debug ("Checking for throttle");
+
+    throttled = listener_ref_entry_is_present (listener, REF_ENTRY_TYPE_THROTTLE);
+
+    if (throttled != listener->priv->throttled)
+    {
+        gs_listener_set_throttle (listener, throttled);
+    }
+
+    return TRUE;
+}
+
+static gboolean
+listener_set_session_idle_internal (GSListener *listener,
+                                    gboolean    idle)
+{
+    listener->priv->session_idle = idle;
+
+    if (idle)
+    {
+        listener->priv->session_idle_start = time (NULL);
+    }
+    else
+    {
+        listener->priv->session_idle_start = 0;
+    }
+
+    return TRUE;
+}
+
+static gboolean
+listener_set_active_internal (GSListener *listener,
+                              gboolean    active)
+{
+    listener->priv->active = active;
+
+    /* if idle not in sync with active, change it */
+    if (listener->priv->session_idle != active)
+    {
+        listener_set_session_idle_internal (listener, active);
+    }
+
+    if (active)
+    {
+        listener->priv->active_start = time (NULL);
+    }
+    else
+    {
+        listener->priv->active_start = 0;
+    }
+
+    gs_listener_send_signal_active_changed (listener);
+
+    return TRUE;
+}
+
+gboolean
+gs_listener_set_active (GSListener *listener,
+                        gboolean    active)
+{
+    gboolean res;
+
+    g_return_val_if_fail (GS_IS_LISTENER (listener), FALSE);
+
+    if (listener->priv->active == active)
+    {
+        gs_debug ("Trying to set active state when already: %s",
+                  active ? "active" : "inactive");
+        return FALSE;
+    }
+
+    res = FALSE;
+    g_signal_emit (listener, signals [ACTIVE_CHANGED], 0, active, &res);
+    if (! res)
+    {
+        /* if the signal is not handled then we haven't changed state */
+        gs_debug ("Active-changed signal not handled");
+
+        /* clear the idle state */
+        if (active)
+        {
+            listener_set_session_idle_internal (listener, FALSE);
+        }
+
+        return FALSE;
+    }
+
+    listener_set_active_internal (listener, active);
+
+    return TRUE;
+}
+
+gboolean
+gs_listener_set_session_idle (GSListener *listener,
+                              gboolean    idle)
+{
+    gboolean res;
+
+    g_return_val_if_fail (GS_IS_LISTENER (listener), FALSE);
+
+    gs_debug ("Setting session idle: %d", idle);
+
+    if (listener->priv->session_idle == idle)
+    {
+        gs_debug ("Trying to set idle state when already %s",
+                  idle ? "idle" : "not idle");
+        return FALSE;
+    }
+
+    if (idle)
+    {
+        gboolean inhibited;
+
+        inhibited = listener_ref_entry_is_present (listener, REF_ENTRY_TYPE_INHIBIT);
+
+        /* if we are inhibited then do nothing */
+        if (inhibited)
+        {
+            return FALSE;
+        }
+    }
+
+    listener->priv->session_idle = idle;
+    res = listener_check_activation (listener);
+
+    /* if activation fails then don't set idle */
+    if (res)
+    {
+        listener_set_session_idle_internal (listener, idle);
+    }
+    else
+    {
+        gs_debug ("Idle activation failed");
+        listener->priv->session_idle = !idle;
+    }
+
+    return res;
+}
+
+gboolean
+gs_listener_get_activation_enabled (GSListener *listener)
+{
+    g_return_val_if_fail (GS_IS_LISTENER (listener), FALSE);
+
+    return listener->priv->activation_enabled;
+}
+
+gboolean
+gs_listener_is_inhibited (GSListener *listener)
+{
+    gboolean inhibited;
+
+    g_return_val_if_fail (GS_IS_LISTENER (listener), FALSE);
+
+    inhibited = listener_ref_entry_is_present (listener, REF_ENTRY_TYPE_INHIBIT);
+
+    return inhibited;
+}
+
+void
+gs_listener_set_activation_enabled (GSListener *listener,
+                                    gboolean    enabled)
+{
+    g_return_if_fail (GS_IS_LISTENER (listener));
+
+    if (listener->priv->activation_enabled != enabled)
+    {
+        listener->priv->activation_enabled = enabled;
+    }
+}
+
+static dbus_bool_t
+listener_property_set_bool (GSListener *listener,
+                            guint       prop_id,
+                            dbus_bool_t value)
+{
+    dbus_bool_t ret;
+
+    ret = FALSE;
+
+    switch (prop_id)
+    {
+    case PROP_ACTIVE:
+        gs_listener_set_active (listener, value);
+        ret = TRUE;
+        break;
+    default:
+        break;
+    }
+
+    return ret;
+}
+
+static void
+raise_error (DBusConnection *connection,
+             DBusMessage    *in_reply_to,
+             const char     *error_name,
+             char           *format, ...)
+{
+    char         buf[512];
+    DBusMessage *reply;
+
+    va_list args;
+    va_start (args, format);
+    vsnprintf (buf, sizeof (buf), format, args);
+    va_end (args);
+
+    gs_debug (buf);
+    reply = dbus_message_new_error (in_reply_to, error_name, buf);
+    if (reply == NULL)
+    {
+        g_error ("No memory");
+    }
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+}
+
+static void
+raise_syntax (DBusConnection *connection,
+              DBusMessage    *in_reply_to,
+              const char     *method_name)
+{
+    raise_error (connection, in_reply_to,
+                 GS_LISTENER_SERVICE ".SyntaxError",
+                 "There is a syntax error in the invocation of the method %s",
+                 method_name);
+}
+
+static guint32
+generate_cookie (void)
+{
+    guint32 cookie;
+
+    cookie = (guint32)g_random_int_range (1, G_MAXINT32);
+
+    return cookie;
+}
+
+static guint32
+listener_generate_unique_key (GSListener *listener,
+                              int         entry_type)
+{
+    guint32     cookie;
+    GHashTable *hash;
+
+    hash = get_hash_for_entry_type (listener, entry_type);
+
+    do
+    {
+        cookie = generate_cookie ();
+    }
+    while (g_hash_table_lookup (hash, &cookie) != NULL);
+
+    return cookie;
+}
+
+static void
+listener_ref_entry_check (GSListener *listener,
+                          int         entry_type)
+{
+    switch (entry_type)
+    {
+    case REF_ENTRY_TYPE_INHIBIT:
+        listener_check_activation (listener);
+        break;
+    case REF_ENTRY_TYPE_THROTTLE:
+        listener_check_throttle (listener);
+        break;
+    default:
+        g_assert_not_reached ();
+        break;
+    }
+}
+
+static void
+add_session_inhibit (GSListener         *listener,
+                     GSListenerRefEntry *entry)
+{
+    DBusMessage    *message;
+    DBusMessage    *reply;
+    DBusMessageIter iter;
+    DBusMessageIter reply_iter;
+    DBusError       error;
+    guint           xid;
+    guint           flags;
+
+    g_return_if_fail (listener != NULL);
+
+    dbus_error_init (&error);
+
+    message = dbus_message_new_method_call (SESSION_NAME,
+                                            SESSION_PATH,
+                                            SESSION_INTERFACE,
+                                            "Inhibit");
+    if (message == NULL)
+    {
+        gs_debug ("Couldn't allocate the dbus message");
+        return;
+    }
+
+    dbus_message_iter_init_append (message, &iter);
+    xid = 0;
+    flags = 8;
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &entry->application);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &xid);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &entry->reason);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &flags);
+
+    /* FIXME: use async? */
+    reply = dbus_connection_send_with_reply_and_block (listener->priv->connection,
+            message,
+            -1,
+            &error);
+    dbus_message_unref (message);
+
+    if (dbus_error_is_set (&error))
+    {
+        gs_debug ("%s raised:\n %s\n\n", error.name, error.message);
+        dbus_error_free (&error);
+        return;
+    }
+
+    dbus_message_iter_init (reply, &reply_iter);
+    dbus_message_iter_get_basic (&reply_iter, &entry->foreign_cookie);
+
+    dbus_message_unref (reply);
+}
+
+static void
+remove_session_inhibit (GSListener         *listener,
+                        GSListenerRefEntry *entry)
+{
+    DBusMessage    *message;
+    DBusMessage    *reply;
+    DBusMessageIter iter;
+    DBusError       error;
+
+    g_return_if_fail (listener != NULL);
+
+    if (entry->foreign_cookie == 0)
+    {
+        gs_debug ("Can't remove inhibitor from session: Session cookie not set");
+        return;
+    }
+
+    dbus_error_init (&error);
+
+    message = dbus_message_new_method_call (SESSION_NAME,
+                                            SESSION_PATH,
+                                            SESSION_INTERFACE,
+                                            "Uninhibit");
+    if (message == NULL)
+    {
+        gs_debug ("Couldn't allocate the dbus message");
+        return;
+    }
+
+    dbus_message_iter_init_append (message, &iter);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &entry->foreign_cookie);
+
+    /* FIXME: use async? */
+    reply = dbus_connection_send_with_reply_and_block (listener->priv->connection,
+            message,
+            -1,
+            &error);
+    dbus_message_unref (message);
+
+    if (dbus_error_is_set (&error))
+    {
+        gs_debug ("%s raised:\n %s\n\n", error.name, error.message);
+        dbus_error_free (&error);
+        return;
+    }
+
+    dbus_message_unref (reply);
+}
+
+static void
+listener_add_ref_entry (GSListener         *listener,
+                        int                 entry_type,
+                        GSListenerRefEntry *entry)
+{
+    GHashTable *hash;
+
+    gs_debug ("adding %s from %s for reason '%s' on connection %s",
+              get_name_for_entry_type (entry_type),
+              entry->application,
+              entry->reason,
+              entry->connection);
+
+    hash = get_hash_for_entry_type (listener, entry_type);
+    g_hash_table_insert (hash, &entry->cookie, entry);
+
+    if (entry_type == REF_ENTRY_TYPE_INHIBIT)
+    {
+        /* proxy inhibit over to mate session */
+        add_session_inhibit (listener, entry);
+    }
+
+    listener_ref_entry_check (listener, entry_type);
+}
+
+static gboolean
+listener_remove_ref_entry (GSListener *listener,
+                           int         entry_type,
+                           guint32     cookie)
+{
+    GHashTable         *hash;
+    gboolean            removed;
+    GSListenerRefEntry *entry;
+
+    removed = FALSE;
+
+    hash = get_hash_for_entry_type (listener, entry_type);
+
+    entry = g_hash_table_lookup (hash, &cookie);
+    if (entry == NULL)
+    {
+        goto out;
+    }
+
+    gs_debug ("removing %s from %s for reason '%s' on connection %s",
+              get_name_for_entry_type (entry_type),
+              entry->application,
+              entry->reason,
+              entry->connection);
+
+    if (entry_type == REF_ENTRY_TYPE_INHIBIT)
+    {
+        /* remove inhibit from mate session */
+        remove_session_inhibit (listener, entry);
+    }
+
+    removed = g_hash_table_remove (hash, &cookie);
+out:
+    if (removed)
+    {
+        listener_ref_entry_check (listener, entry_type);
+    }
+    else
+    {
+        gs_debug ("Cookie %u was not in the list!", cookie);
+    }
+
+    return removed;
+}
+
+#if GLIB_CHECK_VERSION(2,12,0)
+#define _g_time_val_to_iso8601(t) g_time_val_to_iso8601(t)
+#else
+/* copied from GLib */
+static gchar *
+_g_time_val_to_iso8601 (GTimeVal *time_)
+{
+    gchar *retval;
+
+    g_return_val_if_fail (time_->tv_usec >= 0 && time_->tv_usec < G_USEC_PER_SEC, NULL);
+
+#define ISO_8601_LEN    21
+#define ISO_8601_FORMAT "%Y-%m-%dT%H:%M:%SZ"
+    retval = g_new0 (gchar, ISO_8601_LEN + 1);
+
+    strftime (retval, ISO_8601_LEN,
+              ISO_8601_FORMAT,
+              gmtime (&(time_->tv_sec)));
+
+    return retval;
+}
+#endif
+
+static void
+accumulate_ref_entry (gpointer            key,
+                      GSListenerRefEntry *entry,
+                      DBusMessageIter    *iter)
+{
+    char *description;
+    char *time;
+
+    time = _g_time_val_to_iso8601 (&entry->since);
+
+    description = g_strdup_printf ("Application=\"%s\"; Since=\"%s\"; Reason=\"%s\";",
+                                   entry->application,
+                                   time,
+                                   entry->reason);
+
+    dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, &description);
+
+    g_free (description);
+    g_free (time);
+}
+
+static DBusHandlerResult
+listener_dbus_get_ref_entries (GSListener     *listener,
+                               int             entry_type,
+                               DBusConnection *connection,
+                               DBusMessage    *message)
+{
+    DBusMessage        *reply;
+    GHashTable         *hash;
+    DBusMessageIter     iter;
+    DBusMessageIter     iter_array;
+
+    hash = get_hash_for_entry_type (listener, entry_type);
+
+    reply = dbus_message_new_method_return (message);
+    if (reply == NULL)
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_iter_init_append (reply, &iter);
+    dbus_message_iter_open_container (&iter,
+                                      DBUS_TYPE_ARRAY,
+                                      DBUS_TYPE_STRING_AS_STRING,
+                                      &iter_array);
+
+    if (hash != NULL)
+    {
+        g_hash_table_foreach (hash,
+                              (GHFunc)accumulate_ref_entry,
+                              &iter_array);
+    }
+
+    dbus_message_iter_close_container (&iter, &iter_array);
+
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static void
+listener_add_ck_ref_entry (GSListener     *listener,
+                           int             entry_type,
+                           DBusConnection *connection,
+                           DBusMessage    *message,
+                           guint32        *cookiep)
+{
+    GSListenerRefEntry *entry;
+
+    entry = g_new0 (GSListenerRefEntry, 1);
+    entry->entry_type = entry_type;
+    entry->connection = g_strdup (dbus_message_get_sender (message));
+    entry->cookie = listener_generate_unique_key (listener, entry_type);
+    entry->application = g_strdup ("ConsoleKit");
+    entry->reason = g_strdup ("Session is not active");
+    g_get_current_time (&entry->since);
+
+    /* takes ownership of entry */
+    listener_add_ref_entry (listener, entry_type, entry);
+
+    if (cookiep != NULL)
+    {
+        *cookiep = entry->cookie;
+    }
+}
+
+static void
+listener_remove_ck_ref_entry (GSListener *listener,
+                              int         entry_type,
+                              guint32     cookie)
+{
+    listener_remove_ref_entry (listener, entry_type, cookie);
+}
+
+static DBusHandlerResult
+listener_dbus_add_ref_entry (GSListener     *listener,
+                             int             entry_type,
+                             DBusConnection *connection,
+                             DBusMessage    *message)
+{
+    DBusMessage        *reply;
+    DBusError           error;
+    const char         *application;
+    const char         *reason;
+    GSListenerRefEntry *entry;
+    DBusMessageIter     iter;
+
+    dbus_error_init (&error);
+    if (! dbus_message_get_args (message, &error,
+                                 DBUS_TYPE_STRING, &application,
+                                 DBUS_TYPE_STRING, &reason,
+                                 DBUS_TYPE_INVALID))
+    {
+        if (entry_type == REF_ENTRY_TYPE_INHIBIT)
+        {
+            raise_syntax (connection, message, "Inhibit");
+        }
+        else if (entry_type == REF_ENTRY_TYPE_THROTTLE)
+        {
+            raise_syntax (connection, message, "Throttle");
+        }
+        else
+        {
+            g_assert_not_reached ();
+        }
+
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+
+    reply = dbus_message_new_method_return (message);
+    if (reply == NULL)
+    {
+        g_error ("No memory");
+    }
+
+    entry = g_new0 (GSListenerRefEntry, 1);
+    entry->entry_type = entry_type;
+    entry->connection = g_strdup (dbus_message_get_sender (message));
+    entry->cookie = listener_generate_unique_key (listener, entry_type);
+    entry->application = g_strdup (application);
+    entry->reason = g_strdup (reason);
+    g_get_current_time (&entry->since);
+
+    listener_add_ref_entry (listener, entry_type, entry);
+
+    dbus_message_iter_init_append (reply, &iter);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &entry->cookie);
+
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_dbus_remove_ref_entry (GSListener     *listener,
+                                int             entry_type,
+                                DBusConnection *connection,
+                                DBusMessage    *message)
+{
+    DBusMessage        *reply;
+    DBusError           error;
+    const char         *sender;
+    guint32             cookie;
+
+    dbus_error_init (&error);
+    if (! dbus_message_get_args (message, &error,
+                                 DBUS_TYPE_UINT32, &cookie,
+                                 DBUS_TYPE_INVALID))
+    {
+        if (entry_type == REF_ENTRY_TYPE_INHIBIT)
+        {
+            raise_syntax (connection, message, "UnInhibit");
+        }
+        else if (entry_type == REF_ENTRY_TYPE_THROTTLE)
+        {
+            raise_syntax (connection, message, "UnThrottle");
+        }
+        else
+        {
+            g_assert_not_reached ();
+        }
+
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+
+    reply = dbus_message_new_method_return (message);
+    if (reply == NULL)
+        g_error ("No memory");
+
+    /* FIXME: check sender is from same connection as entry */
+    sender = dbus_message_get_sender (message);
+
+    listener_remove_ref_entry (listener, entry_type, cookie);
+
+    /* FIXME:  Pointless? */
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static gboolean
+listener_ref_entry_remove_for_connection (GSListener  *listener,
+        int          entry_type,
+        const char  *connection)
+{
+    gboolean    removed;
+    GHashTable *hash;
+    GHashTableIter iter;
+    GSListenerRefEntry *entry;
+
+    if (connection == NULL)
+        return FALSE;
+
+    hash = get_hash_for_entry_type (listener, entry_type);
+
+    removed = FALSE;
+    g_hash_table_iter_init (&iter, hash);
+    while (g_hash_table_iter_next (&iter, NULL, (gpointer *)&entry))
+    {
+        if (entry->connection != NULL &&
+                strcmp (connection, entry->connection) == 0)
+        {
+            gs_debug ("removing %s from %s for reason '%s' on connection %s",
+                      get_name_for_entry_type (entry->entry_type),
+                      entry->application,
+                      entry->reason,
+                      entry->connection);
+
+            if (entry->entry_type == REF_ENTRY_TYPE_INHIBIT)
+            {
+                /* remove inhibit from mate session */
+                remove_session_inhibit (listener, entry);
+            }
+
+            g_hash_table_iter_remove (&iter);
+            removed = TRUE;
+        }
+    }
+
+    return removed;
+}
+
+static void
+listener_service_deleted (GSListener  *listener,
+                          DBusMessage *message)
+{
+    const char *old_service_name;
+    const char *new_service_name;
+    gboolean    removed;
+
+    if (! dbus_message_get_args (message, NULL,
+                                 DBUS_TYPE_STRING, &old_service_name,
+                                 DBUS_TYPE_STRING, &new_service_name,
+                                 DBUS_TYPE_INVALID))
+    {
+        g_error ("Invalid NameOwnerChanged signal from bus!");
+        return;
+    }
+
+    gs_debug ("DBUS service deleted: %s", new_service_name);
+
+    removed = listener_ref_entry_remove_for_connection (listener, REF_ENTRY_TYPE_THROTTLE, new_service_name);
+    if (removed)
+    {
+        listener_ref_entry_check (listener, REF_ENTRY_TYPE_THROTTLE);
+    }
+
+    removed = listener_ref_entry_remove_for_connection (listener, REF_ENTRY_TYPE_INHIBIT, new_service_name);
+    if (removed)
+    {
+        listener_ref_entry_check (listener, REF_ENTRY_TYPE_INHIBIT);
+    }
+
+}
+
+static void
+raise_property_type_error (DBusConnection *connection,
+                           DBusMessage    *in_reply_to,
+                           const char     *device_id)
+{
+    char         buf [512];
+    DBusMessage *reply;
+
+    snprintf (buf, 511,
+              "Type mismatch setting property with id %s",
+              device_id);
+    gs_debug (buf);
+
+    reply = dbus_message_new_error (in_reply_to,
+                                    TYPE_MISMATCH_ERROR,
+                                    buf);
+    if (reply == NULL)
+    {
+        g_error ("No memory");
+    }
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+}
+
+static DBusHandlerResult
+listener_set_property (GSListener     *listener,
+                       DBusConnection *connection,
+                       DBusMessage    *message,
+                       guint           prop_id)
+{
+    const char     *path;
+    int             type;
+    gboolean        rc;
+    DBusMessageIter iter;
+    DBusMessage    *reply;
+
+    path = dbus_message_get_path (message);
+
+    dbus_message_iter_init (message, &iter);
+    type = dbus_message_iter_get_arg_type (&iter);
+    rc = FALSE;
+
+    switch (type)
+    {
+    case DBUS_TYPE_BOOLEAN:
+    {
+        dbus_bool_t v;
+        dbus_message_iter_get_basic (&iter, &v);
+        rc = listener_property_set_bool (listener, prop_id, v);
+        break;
+    }
+    default:
+        gs_debug ("Unsupported property type %d", type);
+        break;
+    }
+
+    if (! rc)
+    {
+        raise_property_type_error (connection, message, path);
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+
+    reply = dbus_message_new_method_return (message);
+
+    if (reply == NULL)
+    {
+        g_error ("No memory");
+    }
+
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_get_property (GSListener     *listener,
+                       DBusConnection *connection,
+                       DBusMessage    *message,
+                       guint           prop_id)
+{
+    DBusMessageIter iter;
+    DBusMessage    *reply;
+
+    reply = dbus_message_new_method_return (message);
+
+    dbus_message_iter_init_append (reply, &iter);
+
+    if (reply == NULL)
+        g_error ("No memory");
+
+    switch (prop_id)
+    {
+    case PROP_ACTIVE:
+    {
+        dbus_bool_t b;
+        b = listener->priv->active;
+        dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &b);
+    }
+    break;
+    default:
+        gs_debug ("Unsupported property id %u", prop_id);
+        break;
+    }
+
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_get_active_time (GSListener     *listener,
+                          DBusConnection *connection,
+                          DBusMessage    *message)
+{
+    DBusMessageIter iter;
+    DBusMessage    *reply;
+    dbus_uint32_t    secs;
+
+    reply = dbus_message_new_method_return (message);
+
+    dbus_message_iter_init_append (reply, &iter);
+
+    if (reply == NULL)
+    {
+        g_error ("No memory");
+    }
+
+    if (listener->priv->active)
+    {
+        time_t now = time (NULL);
+
+        if (now < listener->priv->active_start)
+        {
+            /* shouldn't happen */
+            gs_debug ("Active start time is in the future");
+            secs = 0;
+        }
+        else if (listener->priv->active_start <= 0)
+        {
+            /* shouldn't happen */
+            gs_debug ("Active start time was not set");
+            secs = 0;
+        }
+        else
+        {
+            secs = now - listener->priv->active_start;
+        }
+    }
+    else
+    {
+        secs = 0;
+    }
+
+    gs_debug ("Returning screensaver active for %u seconds", secs);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &secs);
+
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_show_message (GSListener     *listener,
+                       DBusConnection *connection,
+                       DBusMessage    *message)
+{
+    DBusMessageIter iter;
+    DBusMessage    *reply;
+    DBusError       error;
+
+    reply = dbus_message_new_method_return (message);
+
+    dbus_message_iter_init_append (reply, &iter);
+
+    if (reply == NULL)
+    {
+        g_error ("No memory");
+    }
+
+    if (listener->priv->active)
+    {
+        char *summary;
+        char *body;
+        char *icon;
+
+        /* if we're not active we ignore the request */
+
+        dbus_error_init (&error);
+        if (! dbus_message_get_args (message, &error,
+                                     DBUS_TYPE_STRING, &summary,
+                                     DBUS_TYPE_STRING, &body,
+                                     DBUS_TYPE_STRING, &icon,
+                                     DBUS_TYPE_INVALID))
+        {
+            raise_syntax (connection, message, "ShowMessage");
+            return DBUS_HANDLER_RESULT_HANDLED;
+        }
+
+        g_signal_emit (listener, signals [SHOW_MESSAGE], 0, summary, body, icon);
+    }
+
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+do_introspect (DBusConnection *connection,
+               DBusMessage    *message,
+               dbus_bool_t     local_interface)
+{
+    DBusMessage *reply;
+    GString     *xml;
+    char        *xml_string;
+
+    /* standard header */
+    xml = g_string_new ("<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
+                        "\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
+                        "<node>\n"
+                        "  <interface name=\"org.freedesktop.DBus.Introspectable\">\n"
+                        "    <method name=\"Introspect\">\n"
+                        "      <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
+                        "    </method>\n"
+                        "  </interface>\n");
+
+    /* ScreenSaver interface */
+    xml = g_string_append (xml,
+                           "  <interface name=\"org.mate.ScreenSaver\">\n"
+                           "    <method name=\"Lock\">\n"
+                           "    </method>\n"
+                           "    <method name=\"Cycle\">\n"
+                           "    </method>\n"
+                           "    <method name=\"SimulateUserActivity\">\n"
+                           "    </method>\n"
+                           "    <method name=\"Inhibit\">\n"
+                           "      <arg name=\"application_name\" direction=\"in\" type=\"s\"/>\n"
+                           "      <arg name=\"reason\" direction=\"in\" type=\"s\"/>\n"
+                           "      <arg name=\"cookie\" direction=\"out\" type=\"u\"/>\n"
+                           "    </method>\n"
+                           "    <method name=\"UnInhibit\">\n"
+                           "      <arg name=\"cookie\" direction=\"in\" type=\"u\"/>\n"
+                           "    </method>\n"
+                           "    <method name=\"GetInhibitors\">\n"
+                           "      <arg name=\"list\" direction=\"out\" type=\"as\"/>\n"
+                           "    </method>\n"
+                           "    <method name=\"Throttle\">\n"
+                           "      <arg name=\"application_name\" direction=\"in\" type=\"s\"/>\n"
+                           "      <arg name=\"reason\" direction=\"in\" type=\"s\"/>\n"
+                           "      <arg name=\"cookie\" direction=\"out\" type=\"u\"/>\n"
+                           "    </method>\n"
+                           "    <method name=\"UnThrottle\">\n"
+                           "      <arg name=\"cookie\" direction=\"in\" type=\"u\"/>\n"
+                           "    </method>\n"
+                           "    <method name=\"GetActive\">\n"
+                           "      <arg name=\"value\" direction=\"out\" type=\"b\"/>\n"
+                           "    </method>\n"
+                           "    <method name=\"GetActiveTime\">\n"
+                           "      <arg name=\"seconds\" direction=\"out\" type=\"u\"/>\n"
+                           "    </method>\n"
+                           "    <method name=\"SetActive\">\n"
+                           "      <arg name=\"value\" direction=\"in\" type=\"b\"/>\n"
+                           "    </method>\n"
+                           "    <method name=\"ShowMessage\">\n"
+                           "      <arg name=\"summary\" direction=\"in\" type=\"s\"/>\n"
+                           "      <arg name=\"body\" direction=\"in\" type=\"s\"/>\n"
+                           "      <arg name=\"icon\" direction=\"in\" type=\"s\"/>\n"
+                           "    </method>\n"
+                           "    <signal name=\"ActiveChanged\">\n"
+                           "      <arg name=\"new_value\" type=\"b\"/>\n"
+                           "    </signal>\n"
+                           "  </interface>\n");
+
+    reply = dbus_message_new_method_return (message);
+
+    xml = g_string_append (xml, "</node>\n");
+    xml_string = g_string_free (xml, FALSE);
+
+    dbus_message_append_args (reply,
+                              DBUS_TYPE_STRING, &xml_string,
+                              DBUS_TYPE_INVALID);
+
+    g_free (xml_string);
+
+    if (reply == NULL)
+    {
+        g_error ("No memory");
+    }
+
+    if (! dbus_connection_send (connection, reply, NULL))
+    {
+        g_error ("No memory");
+    }
+
+    dbus_message_unref (reply);
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_dbus_handle_session_message (DBusConnection *connection,
+                                      DBusMessage    *message,
+                                      void           *user_data,
+                                      dbus_bool_t     local_interface)
+{
+    GSListener *listener = GS_LISTENER (user_data);
+
+#if 0
+    g_message ("obj_path=%s interface=%s method=%s destination=%s",
+               dbus_message_get_path (message),
+               dbus_message_get_interface (message),
+               dbus_message_get_member (message),
+               dbus_message_get_destination (message));
+#endif
+
+    g_return_val_if_fail (connection != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+    g_return_val_if_fail (message != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Lock"))
+    {
+        g_signal_emit (listener, signals [LOCK], 0);
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Quit"))
+    {
+        g_signal_emit (listener, signals [QUIT], 0);
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Cycle"))
+    {
+        g_signal_emit (listener, signals [CYCLE], 0);
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Inhibit"))
+    {
+        return listener_dbus_add_ref_entry (listener, REF_ENTRY_TYPE_INHIBIT, connection, message);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "UnInhibit"))
+    {
+        return listener_dbus_remove_ref_entry (listener, REF_ENTRY_TYPE_INHIBIT, connection, message);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "GetInhibitors"))
+    {
+        return listener_dbus_get_ref_entries (listener, REF_ENTRY_TYPE_INHIBIT, connection, message);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Throttle"))
+    {
+        return listener_dbus_add_ref_entry (listener, REF_ENTRY_TYPE_THROTTLE, connection, message);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "UnThrottle"))
+    {
+        return listener_dbus_remove_ref_entry (listener, REF_ENTRY_TYPE_THROTTLE, connection, message);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "SetActive"))
+    {
+        return listener_set_property (listener, connection, message, PROP_ACTIVE);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "GetActive"))
+    {
+        return listener_get_property (listener, connection, message, PROP_ACTIVE);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "GetActiveTime"))
+    {
+        return listener_get_active_time (listener, connection, message);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "ShowMessage"))
+    {
+        return listener_show_message (listener, connection, message);
+    }
+    if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "SimulateUserActivity"))
+    {
+        g_signal_emit (listener, signals [SIMULATE_USER_ACTIVITY], 0);
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect"))
+    {
+        return do_introspect (connection, message, local_interface);
+    }
+
+    return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static gboolean
+_listener_message_path_is_our_session (GSListener  *listener,
+                                       DBusMessage *message)
+{
+    const char *ssid;
+    gboolean    ours;
+
+    ours = FALSE;
+
+    ssid = dbus_message_get_path (message);
+    if (ssid != NULL
+            && listener->priv->session_id != NULL
+            && strcmp (ssid, listener->priv->session_id) == 0)
+    {
+        ours = TRUE;
+    }
+
+    return ours;
+}
+
+static DBusHandlerResult
+listener_dbus_handle_system_message (DBusConnection *connection,
+                                     DBusMessage    *message,
+                                     void           *user_data,
+                                     dbus_bool_t     local_interface)
+{
+    GSListener *listener = GS_LISTENER (user_data);
+
+    g_return_val_if_fail (connection != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+    g_return_val_if_fail (message != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+
+#if 1
+    gs_debug ("obj_path=%s interface=%s method=%s destination=%s",
+              dbus_message_get_path (message),
+              dbus_message_get_interface (message),
+              dbus_message_get_member (message),
+              dbus_message_get_destination (message));
+#endif
+
+    if (dbus_message_is_signal (message, HAL_DEVICE_INTERFACE, "Condition"))
+    {
+        DBusError   error;
+        const char *event;
+        const char *keyname;
+
+        dbus_error_init (&error);
+        if (dbus_message_get_args (message, &error,
+                                   DBUS_TYPE_STRING, &event,
+                                   DBUS_TYPE_STRING, &keyname,
+                                   DBUS_TYPE_INVALID))
+        {
+            if ((event && strcmp (event, "ButtonPressed") == 0) &&
+                    (keyname && strcmp (keyname, "coffee") == 0))
+            {
+                gs_debug ("Coffee key was pressed - locking");
+                g_signal_emit (listener, signals [LOCK], 0);
+            }
+        }
+
+        if (dbus_error_is_set (&error))
+        {
+            dbus_error_free (&error);
+        }
+
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    else if (dbus_message_is_signal (message, CK_SESSION_INTERFACE, "Unlock"))
+    {
+        if (_listener_message_path_is_our_session (listener, message))
+        {
+            gs_debug ("Console kit requested session unlock");
+            gs_listener_set_active (listener, FALSE);
+        }
+
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    else if (dbus_message_is_signal (message, CK_SESSION_INTERFACE, "Lock"))
+    {
+        if (_listener_message_path_is_our_session (listener, message))
+        {
+            gs_debug ("ConsoleKit requested session lock");
+            g_signal_emit (listener, signals [LOCK], 0);
+        }
+
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    else if (dbus_message_is_signal (message, CK_SESSION_INTERFACE, "ActiveChanged"))
+    {
+        /* NB that `ActiveChanged' refers to the active
+         * session in ConsoleKit terminology - ie which
+         * session is currently displayed on the screen.
+         * mate-screensaver uses `active' to mean `is the
+         * screensaver active' (ie, is the screen locked) but
+         * that's not what we're referring to here.
+         */
+
+        if (_listener_message_path_is_our_session (listener, message))
+        {
+            DBusError   error;
+            dbus_bool_t new_active;
+
+            dbus_error_init (&error);
+            if (dbus_message_get_args (message, &error,
+                                       DBUS_TYPE_BOOLEAN, &new_active,
+                                       DBUS_TYPE_INVALID))
+            {
+                gs_debug ("ConsoleKit notified ActiveChanged %d", new_active);
+
+                /* when we aren't active add an implicit throttle from CK
+                 * when we become active remove the throttle and poke the lock */
+                if (new_active)
+                {
+                    if (listener->priv->ck_throttle_cookie != 0)
+                    {
+                        listener_remove_ck_ref_entry (listener,
+                                                      REF_ENTRY_TYPE_THROTTLE,
+                                                      listener->priv->ck_throttle_cookie);
+                        listener->priv->ck_throttle_cookie = 0;
+                    }
+
+                    g_signal_emit (listener, signals [SIMULATE_USER_ACTIVITY], 0);
+                }
+                else
+                {
+                    if (listener->priv->ck_throttle_cookie != 0)
+                    {
+                        g_warning ("ConsoleKit throttle already set");
+                        listener_remove_ck_ref_entry (listener,
+                                                      REF_ENTRY_TYPE_THROTTLE,
+                                                      listener->priv->ck_throttle_cookie);
+                        listener->priv->ck_throttle_cookie = 0;
+                    }
+
+                    listener_add_ck_ref_entry (listener,
+                                               REF_ENTRY_TYPE_THROTTLE,
+                                               connection,
+                                               message,
+                                               &listener->priv->ck_throttle_cookie);
+                }
+            }
+
+            if (dbus_error_is_set (&error))
+            {
+                dbus_error_free (&error);
+            }
+        }
+
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+
+    return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+static DBusHandlerResult
+gs_listener_message_handler (DBusConnection *connection,
+                             DBusMessage    *message,
+                             void           *user_data)
+{
+    g_return_val_if_fail (connection != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+    g_return_val_if_fail (message != NULL, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
+
+#if 0
+    g_message ("obj_path=%s interface=%s method=%s destination=%s",
+               dbus_message_get_path (message),
+               dbus_message_get_interface (message),
+               dbus_message_get_member (message),
+               dbus_message_get_destination (message));
+#endif
+
+    if (dbus_message_is_method_call (message, "org.freedesktop.DBus", "AddMatch"))
+    {
+        DBusMessage *reply;
+
+        reply = dbus_message_new_method_return (message);
+
+        if (reply == NULL)
+        {
+            g_error ("No memory");
+        }
+
+        if (! dbus_connection_send (connection, reply, NULL))
+        {
+            g_error ("No memory");
+        }
+
+        dbus_message_unref (reply);
+
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    else if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected") &&
+             strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0)
+    {
+        dbus_connection_unref (connection);
+
+        return DBUS_HANDLER_RESULT_HANDLED;
+    }
+    else
+    {
+        return listener_dbus_handle_session_message (connection, message, user_data, TRUE);
+    }
+}
+
+static gboolean
+gs_listener_dbus_init (GSListener *listener)
+{
+    DBusError error;
+
+    dbus_error_init (&error);
+
+    if (listener->priv->connection == NULL)
+    {
+        listener->priv->connection = dbus_bus_get (DBUS_BUS_SESSION, &error);
+        if (listener->priv->connection == NULL)
+        {
+            if (dbus_error_is_set (&error))
+            {
+                gs_debug ("couldn't connect to session bus: %s",
+                          error.message);
+                dbus_error_free (&error);
+            }
+            return FALSE;
+        }
+
+        dbus_connection_setup_with_g_main (listener->priv->connection, NULL);
+        dbus_connection_set_exit_on_disconnect (listener->priv->connection, FALSE);
+    }
+
+    if (listener->priv->system_connection == NULL)
+    {
+        listener->priv->system_connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
+        if (listener->priv->system_connection == NULL)
+        {
+            if (dbus_error_is_set (&error))
+            {
+                gs_debug ("couldn't connect to system bus: %s",
+                          error.message);
+                dbus_error_free (&error);
+            }
+            return FALSE;
+        }
+
+        dbus_connection_setup_with_g_main (listener->priv->system_connection, NULL);
+        dbus_connection_set_exit_on_disconnect (listener->priv->system_connection, FALSE);
+    }
+
+    return TRUE;
+}
+
+static gboolean
+reinit_dbus (GSListener *listener)
+{
+    gboolean initialized;
+    gboolean try_again;
+
+    initialized = gs_listener_dbus_init (listener);
+
+    /* if we didn't initialize then try again */
+    /* FIXME: Should we keep trying forever?  If we fail more than
+       once or twice then the session bus may have died.  The
+       problem is that if it is restarted it will likely have a
+       different bus address and we won't be able to find it */
+    try_again = !initialized;
+
+    return try_again;
+}
+
+static DBusHandlerResult
+listener_dbus_filter_function (DBusConnection *connection,
+                               DBusMessage    *message,
+                               void           *user_data)
+{
+    GSListener *listener = GS_LISTENER (user_data);
+    const char *path;
+
+    path = dbus_message_get_path (message);
+
+    /*
+    g_message ("obj_path=%s interface=%s method=%s",
+               dbus_message_get_path (message),
+               dbus_message_get_interface (message),
+               dbus_message_get_member (message));
+    */
+
+    if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected")
+            && strcmp (path, DBUS_PATH_LOCAL) == 0)
+    {
+
+        g_message ("Got disconnected from the session message bus; "
+                   "retrying to reconnect every 10 seconds");
+
+        dbus_connection_unref (connection);
+        listener->priv->connection = NULL;
+
+        g_timeout_add (10000, (GSourceFunc)reinit_dbus, listener);
+    }
+    else if (dbus_message_is_signal (message,
+                                     DBUS_INTERFACE_DBUS,
+                                     "NameOwnerChanged"))
+    {
+
+        if (listener->priv->inhibitors != NULL)
+        {
+            listener_service_deleted (listener, message);
+        }
+    }
+    else
+    {
+        return listener_dbus_handle_session_message (connection, message, user_data, FALSE);
+    }
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static DBusHandlerResult
+listener_dbus_system_filter_function (DBusConnection *connection,
+                                      DBusMessage    *message,
+                                      void           *user_data)
+{
+    GSListener *listener = GS_LISTENER (user_data);
+    const char *path;
+
+    path = dbus_message_get_path (message);
+
+    if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected")
+            && strcmp (path, DBUS_PATH_LOCAL) == 0)
+    {
+
+        g_message ("Got disconnected from the system message bus; "
+                   "retrying to reconnect every 10 seconds");
+
+        dbus_connection_unref (connection);
+        listener->priv->system_connection = NULL;
+
+        g_timeout_add (10000, (GSourceFunc)reinit_dbus, listener);
+    }
+    else
+    {
+        return listener_dbus_handle_system_message (connection, message, user_data, FALSE);
+    }
+
+    return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+static void
+gs_listener_set_property (GObject            *object,
+                          guint               prop_id,
+                          const GValue       *value,
+                          GParamSpec         *pspec)
+{
+    GSListener *self;
+
+    self = GS_LISTENER (object);
+
+    switch (prop_id)
+    {
+    case PROP_ACTIVE:
+        gs_listener_set_active (self, g_value_get_boolean (value));
+        break;
+    case PROP_SESSION_IDLE:
+        gs_listener_set_session_idle (self, g_value_get_boolean (value));
+        break;
+    case PROP_ACTIVATION_ENABLED:
+        gs_listener_set_activation_enabled (self, g_value_get_boolean (value));
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_listener_get_property (GObject            *object,
+                          guint               prop_id,
+                          GValue             *value,
+                          GParamSpec         *pspec)
+{
+    GSListener *self;
+
+    self = GS_LISTENER (object);
+
+    switch (prop_id)
+    {
+    case PROP_ACTIVE:
+        g_value_set_boolean (value, self->priv->active);
+        break;
+    case PROP_SESSION_IDLE:
+        g_value_set_boolean (value, self->priv->session_idle);
+        break;
+    case PROP_ACTIVATION_ENABLED:
+        g_value_set_boolean (value, self->priv->activation_enabled);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_listener_class_init (GSListenerClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize     = gs_listener_finalize;
+    object_class->get_property = gs_listener_get_property;
+    object_class->set_property = gs_listener_set_property;
+
+    signals [LOCK] =
+        g_signal_new ("lock",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSListenerClass, lock),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+    signals [QUIT] =
+        g_signal_new ("quit",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSListenerClass, quit),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+    signals [CYCLE] =
+        g_signal_new ("cycle",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSListenerClass, cycle),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+    signals [SIMULATE_USER_ACTIVITY] =
+        g_signal_new ("simulate-user-activity",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSListenerClass, simulate_user_activity),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+    signals [ACTIVE_CHANGED] =
+        g_signal_new ("active-changed",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSListenerClass, active_changed),
+                      NULL,
+                      NULL,
+                      gs_marshal_BOOLEAN__BOOLEAN,
+                      G_TYPE_BOOLEAN,
+                      1,
+                      G_TYPE_BOOLEAN);
+    signals [THROTTLE_CHANGED] =
+        g_signal_new ("throttle-changed",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSListenerClass, throttle_changed),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__BOOLEAN,
+                      G_TYPE_NONE,
+                      1,
+                      G_TYPE_BOOLEAN);
+    signals [SHOW_MESSAGE] =
+        g_signal_new ("show-message",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSListenerClass, show_message),
+                      NULL,
+                      NULL,
+                      gs_marshal_VOID__STRING_STRING_STRING,
+                      G_TYPE_NONE,
+                      3,
+                      G_TYPE_STRING,
+                      G_TYPE_STRING,
+                      G_TYPE_STRING);
+
+    g_object_class_install_property (object_class,
+                                     PROP_ACTIVE,
+                                     g_param_spec_boolean ("active",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_ACTIVATION_ENABLED,
+                                     g_param_spec_boolean ("activation-enabled",
+                                             NULL,
+                                             NULL,
+                                             TRUE,
+                                             G_PARAM_READWRITE));
+
+    g_type_class_add_private (klass, sizeof (GSListenerPrivate));
+}
+
+
+static gboolean
+screensaver_is_running (DBusConnection *connection)
+{
+    DBusError error;
+    gboolean  exists;
+
+    g_return_val_if_fail (connection != NULL, FALSE);
+
+    dbus_error_init (&error);
+    exists = dbus_bus_name_has_owner (connection, GS_LISTENER_SERVICE, &error);
+    if (dbus_error_is_set (&error))
+    {
+        dbus_error_free (&error);
+    }
+
+    return exists;
+}
+
+gboolean
+gs_listener_acquire (GSListener *listener,
+                     GError    **error)
+{
+    gboolean  acquired;
+    DBusError buserror;
+    gboolean  is_connected;
+
+    g_return_val_if_fail (listener != NULL, FALSE);
+
+    if (! listener->priv->connection)
+    {
+        g_set_error (error,
+                     GS_LISTENER_ERROR,
+                     GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+                     "%s",
+                     _("failed to register with the message bus"));
+        return FALSE;
+    }
+
+    is_connected = dbus_connection_get_is_connected (listener->priv->connection);
+    if (! is_connected)
+    {
+        g_set_error (error,
+                     GS_LISTENER_ERROR,
+                     GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+                     "%s",
+                     _("not connected to the message bus"));
+        return FALSE;
+    }
+
+    if (screensaver_is_running (listener->priv->connection))
+    {
+        g_set_error (error,
+                     GS_LISTENER_ERROR,
+                     GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+                     "%s",
+                     _("screensaver already running in this session"));
+        return FALSE;
+    }
+
+    dbus_error_init (&buserror);
+
+    if (dbus_connection_register_object_path (listener->priv->connection,
+            GS_LISTENER_PATH,
+            &gs_listener_vtable,
+            listener) == FALSE)
+    {
+        g_critical ("out of memory registering object path");
+        return FALSE;
+    }
+
+    acquired = dbus_bus_request_name (listener->priv->connection,
+                                      GS_LISTENER_SERVICE,
+                                      0, &buserror) != -1;
+    if (dbus_error_is_set (&buserror))
+    {
+        g_set_error (error,
+                     GS_LISTENER_ERROR,
+                     GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+                     "%s",
+                     buserror.message);
+    }
+
+    dbus_error_free (&buserror);
+
+    dbus_connection_add_filter (listener->priv->connection, listener_dbus_filter_function, listener, NULL);
+
+    dbus_bus_add_match (listener->priv->connection,
+                        "type='signal'"
+                        ",interface='"DBUS_INTERFACE_DBUS"'"
+                        ",sender='"DBUS_SERVICE_DBUS"'"
+                        ",member='NameOwnerChanged'",
+                        NULL);
+
+    if (listener->priv->system_connection != NULL)
+    {
+        dbus_connection_add_filter (listener->priv->system_connection,
+                                    listener_dbus_system_filter_function,
+                                    listener,
+                                    NULL);
+
+        dbus_bus_add_match (listener->priv->system_connection,
+                            "type='signal'"
+                            ",interface='"HAL_DEVICE_INTERFACE"'"
+                            ",member='Condition'",
+                            NULL);
+        dbus_bus_add_match (listener->priv->system_connection,
+                            "type='signal'"
+                            ",interface='"CK_SESSION_INTERFACE"'"
+                            ",member='Unlock'",
+                            NULL);
+        dbus_bus_add_match (listener->priv->system_connection,
+                            "type='signal'"
+                            ",interface='"CK_SESSION_INTERFACE"'"
+                            ",member='Lock'",
+                            NULL);
+        dbus_bus_add_match (listener->priv->system_connection,
+                            "type='signal'"
+                            ",interface='"CK_SESSION_INTERFACE"'"
+                            ",member='ActiveChanged'",
+                            NULL);
+    }
+
+    return acquired;
+}
+
+static char *
+query_session_id (GSListener *listener)
+{
+    DBusMessage    *message;
+    DBusMessage    *reply;
+    DBusError       error;
+    DBusMessageIter reply_iter;
+    char           *ssid;
+
+    if (listener->priv->system_connection == NULL)
+    {
+        gs_debug ("No connection to the system bus");
+        return NULL;
+    }
+
+    ssid = NULL;
+
+    dbus_error_init (&error);
+
+    message = dbus_message_new_method_call (CK_NAME, CK_MANAGER_PATH, CK_MANAGER_INTERFACE, "GetCurrentSession");
+    if (message == NULL)
+    {
+        gs_debug ("Couldn't allocate the dbus message");
+        return NULL;
+    }
+
+    /* FIXME: use async? */
+    reply = dbus_connection_send_with_reply_and_block (listener->priv->system_connection,
+            message,
+            -1, &error);
+    dbus_message_unref (message);
+
+    if (dbus_error_is_set (&error))
+    {
+        gs_debug ("%s raised:\n %s\n\n", error.name, error.message);
+        dbus_error_free (&error);
+        return NULL;
+    }
+
+    dbus_message_iter_init (reply, &reply_iter);
+    dbus_message_iter_get_basic (&reply_iter, &ssid);
+
+    dbus_message_unref (reply);
+
+    return g_strdup (ssid);
+}
+
+static void
+init_session_id (GSListener *listener)
+{
+    g_free (listener->priv->session_id);
+    listener->priv->session_id = query_session_id (listener);
+    gs_debug ("Got session-id: %s", listener->priv->session_id);
+}
+
+static void
+gs_listener_init (GSListener *listener)
+{
+    listener->priv = GS_LISTENER_GET_PRIVATE (listener);
+
+    gs_listener_dbus_init (listener);
+
+    init_session_id (listener);
+
+    listener->priv->inhibitors = g_hash_table_new_full (g_int_hash,
+                                 g_int_equal,
+                                 NULL,
+                                 (GDestroyNotify)gs_listener_ref_entry_free);
+    listener->priv->throttlers = g_hash_table_new_full (g_int_hash,
+                                 g_int_equal,
+                                 NULL,
+                                 (GDestroyNotify)gs_listener_ref_entry_free);
+}
+
+static void
+gs_listener_finalize (GObject *object)
+{
+    GSListener *listener;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_LISTENER (object));
+
+    listener = GS_LISTENER (object);
+
+    g_return_if_fail (listener->priv != NULL);
+
+    if (listener->priv->inhibitors)
+    {
+        g_hash_table_destroy (listener->priv->inhibitors);
+    }
+
+    if (listener->priv->throttlers)
+    {
+        g_hash_table_destroy (listener->priv->throttlers);
+    }
+
+    g_free (listener->priv->session_id);
+
+    G_OBJECT_CLASS (gs_listener_parent_class)->finalize (object);
+}
+
+GSListener *
+gs_listener_new (void)
+{
+    GSListener *listener;
+
+    listener = g_object_new (GS_TYPE_LISTENER, NULL);
+
+    return GS_LISTENER (listener);
+}
diff --git a/src/gs-listener-dbus.h b/src/gs-listener-dbus.h
new file mode 100644
index 0000000..a2e298a
--- /dev/null
+++ b/src/gs-listener-dbus.h
@@ -0,0 +1,89 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_LISTENER_H
+#define __GS_LISTENER_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_LISTENER         (gs_listener_get_type ())
+#define GS_LISTENER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_LISTENER, GSListener))
+#define GS_LISTENER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_LISTENER, GSListenerClass))
+#define GS_IS_LISTENER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_LISTENER))
+#define GS_IS_LISTENER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_LISTENER))
+#define GS_LISTENER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_LISTENER, GSListenerClass))
+
+typedef struct GSListenerPrivate GSListenerPrivate;
+
+typedef struct
+{
+	GObject            parent;
+	GSListenerPrivate *priv;
+} GSListener;
+
+typedef struct
+{
+	GObjectClass       parent_class;
+
+	void            (* lock)                     (GSListener *listener);
+	void            (* cycle)                    (GSListener *listener);
+	void            (* quit)                     (GSListener *listener);
+	void            (* simulate_user_activity)   (GSListener *listener);
+	gboolean        (* active_changed)           (GSListener *listener,
+	        gboolean    active);
+	void            (* throttle_changed)         (GSListener *listener,
+	        gboolean    throttled);
+	void            (* show_message)             (GSListener *listener,
+	        const char *summary,
+	        const char *body,
+	        const char *icon);
+
+} GSListenerClass;
+
+typedef enum
+{
+    GS_LISTENER_ERROR_SERVICE_UNAVAILABLE,
+    GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+    GS_LISTENER_ERROR_ACTIVATION_FAILURE
+} GSListenerError;
+
+#define GS_LISTENER_ERROR gs_listener_error_quark ()
+
+GQuark      gs_listener_error_quark             (void);
+
+GType       gs_listener_get_type                (void);
+
+GSListener *gs_listener_new                     (void);
+gboolean    gs_listener_acquire                 (GSListener *listener,
+        GError    **error);
+gboolean    gs_listener_set_active              (GSListener *listener,
+        gboolean    active);
+gboolean    gs_listener_set_session_idle        (GSListener *listener,
+        gboolean    idle);
+void        gs_listener_set_activation_enabled  (GSListener *listener,
+        gboolean    enabled);
+gboolean    gs_listener_get_activation_enabled  (GSListener *listener);
+gboolean    gs_listener_is_inhibited            (GSListener *listener);
+
+G_END_DECLS
+
+#endif /* __GS_LISTENER_H */
diff --git a/src/gs-listener-dbus.h.orig b/src/gs-listener-dbus.h.orig
new file mode 100644
index 0000000..40a7e99
--- /dev/null
+++ b/src/gs-listener-dbus.h.orig
@@ -0,0 +1,89 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_LISTENER_H
+#define __GS_LISTENER_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_LISTENER         (gs_listener_get_type ())
+#define GS_LISTENER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_LISTENER, GSListener))
+#define GS_LISTENER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_LISTENER, GSListenerClass))
+#define GS_IS_LISTENER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_LISTENER))
+#define GS_IS_LISTENER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_LISTENER))
+#define GS_LISTENER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_LISTENER, GSListenerClass))
+
+typedef struct GSListenerPrivate GSListenerPrivate;
+
+typedef struct
+{
+    GObject            parent;
+    GSListenerPrivate *priv;
+} GSListener;
+
+typedef struct
+{
+    GObjectClass       parent_class;
+
+    void            (* lock)                     (GSListener *listener);
+    void            (* cycle)                    (GSListener *listener);
+    void            (* quit)                     (GSListener *listener);
+    void            (* simulate_user_activity)   (GSListener *listener);
+    gboolean        (* active_changed)           (GSListener *listener,
+            gboolean    active);
+    void            (* throttle_changed)         (GSListener *listener,
+            gboolean    throttled);
+    void            (* show_message)             (GSListener *listener,
+            const char *summary,
+            const char *body,
+            const char *icon);
+
+} GSListenerClass;
+
+typedef enum
+{
+    GS_LISTENER_ERROR_SERVICE_UNAVAILABLE,
+    GS_LISTENER_ERROR_ACQUISITION_FAILURE,
+    GS_LISTENER_ERROR_ACTIVATION_FAILURE
+} GSListenerError;
+
+#define GS_LISTENER_ERROR gs_listener_error_quark ()
+
+GQuark      gs_listener_error_quark             (void);
+
+GType       gs_listener_get_type                (void);
+
+GSListener *gs_listener_new                     (void);
+gboolean    gs_listener_acquire                 (GSListener *listener,
+        GError    **error);
+gboolean    gs_listener_set_active              (GSListener *listener,
+        gboolean    active);
+gboolean    gs_listener_set_session_idle        (GSListener *listener,
+        gboolean    idle);
+void        gs_listener_set_activation_enabled  (GSListener *listener,
+        gboolean    enabled);
+gboolean    gs_listener_get_activation_enabled  (GSListener *listener);
+gboolean    gs_listener_is_inhibited            (GSListener *listener);
+
+G_END_DECLS
+
+#endif /* __GS_LISTENER_H */
diff --git a/src/gs-lock-plug.c b/src/gs-lock-plug.c
new file mode 100644
index 0000000..81bea13
--- /dev/null
+++ b/src/gs-lock-plug.c
@@ -0,0 +1,2050 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/utsname.h>
+
+#include <glib/gprintf.h>
+#include <glib/gstdio.h>
+#include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdkx.h>
+#include <X11/XKBlib.h>
+#include <gtk/gtk.h>
+#include <mateconf/mateconf-client.h>
+
+#ifdef WITH_KBD_LAYOUT_INDICATOR
+#include <libmatekbd/matekbd-indicator.h>
+#endif
+
+#ifdef WITH_LIBMATENOTIFY
+#include <libmatenotify/notify.h>
+#endif
+
+#include "gs-lock-plug.h"
+
+#include "gs-debug.h"
+
+#define KEY_LOCK_DIALOG_THEME "/apps/mate-screensaver/lock_dialog_theme"
+#define MDM_FLEXISERVER_COMMAND "mdmflexiserver"
+#define MDM_FLEXISERVER_ARGS    "--startnew Standard"
+
+/* same as SMS ;) */
+#define NOTE_BUFFER_MAX_CHARS 160
+
+enum
+{
+    AUTH_PAGE = 0,
+};
+
+#define FACE_ICON_SIZE 48
+#define DIALOG_TIMEOUT_MSEC 60000
+
+static void gs_lock_plug_finalize   (GObject         *object);
+
+#define GS_LOCK_PLUG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_LOCK_PLUG, GSLockPlugPrivate))
+
+struct GSLockPlugPrivate
+{
+	GtkWidget   *vbox;
+	GtkWidget   *auth_action_area;
+
+	GtkWidget   *notebook;
+	GtkWidget   *auth_face_image;
+	GtkWidget   *auth_realname_label;
+	GtkWidget   *auth_username_label;
+	GtkWidget   *auth_prompt_label;
+	GtkWidget   *auth_prompt_entry;
+	GtkWidget   *auth_prompt_box;
+	GtkWidget   *auth_capslock_label;
+	GtkWidget   *auth_message_label;
+	GtkWidget   *status_message_label;
+
+	GtkWidget   *auth_unlock_button;
+	GtkWidget   *auth_switch_button;
+	GtkWidget   *auth_cancel_button;
+	GtkWidget   *auth_logout_button;
+	GtkWidget   *auth_note_button;
+	GtkWidget   *note_tab;
+	GtkWidget   *note_tab_label;
+	GtkWidget   *note_text_view;
+	GtkWidget   *note_ok_button;
+	GtkWidget   *note_cancel_button;
+
+	GtkWidget   *auth_prompt_kbd_layout_indicator;
+
+	gboolean     caps_lock_on;
+	gboolean     switch_enabled;
+	gboolean     leave_note_enabled;
+	gboolean     logout_enabled;
+	char        *logout_command;
+	char        *status_message;
+
+	guint        timeout;
+
+	guint        cancel_timeout_id;
+	guint        auth_check_idle_id;
+	guint        response_idle_id;
+
+	GList       *key_events;
+};
+
+typedef struct _ResponseData ResponseData;
+
+struct _ResponseData
+{
+	gint response_id;
+};
+
+
+enum
+{
+    RESPONSE,
+    CLOSE,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0,
+    PROP_LOGOUT_ENABLED,
+    PROP_LOGOUT_COMMAND,
+    PROP_SWITCH_ENABLED,
+    PROP_STATUS_MESSAGE
+};
+
+static guint lock_plug_signals [LAST_SIGNAL];
+
+G_DEFINE_TYPE (GSLockPlug, gs_lock_plug, GTK_TYPE_PLUG)
+
+static void
+gs_lock_plug_style_set (GtkWidget *widget,
+                        GtkStyle  *previous_style)
+{
+	GSLockPlug *plug;
+
+	if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->style_set)
+	{
+		GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->style_set (widget, previous_style);
+	}
+
+	plug = GS_LOCK_PLUG (widget);
+
+	if (! plug->priv->vbox)
+	{
+		return;
+	}
+
+	gtk_container_set_border_width (GTK_CONTAINER (plug->priv->vbox), 12);
+	gtk_box_set_spacing (GTK_BOX (plug->priv->vbox), 12);
+
+	gtk_container_set_border_width (GTK_CONTAINER (plug->priv->auth_action_area), 0);
+	gtk_box_set_spacing (GTK_BOX (plug->priv->auth_action_area), 5);
+}
+
+static void
+do_user_switch (GSLockPlug *plug)
+{
+	GError  *error;
+	gboolean res;
+	char    *command;
+
+	command = g_strdup_printf ("%s %s",
+	                           MDM_FLEXISERVER_COMMAND,
+	                           MDM_FLEXISERVER_ARGS);
+
+	error = NULL;
+	res = gdk_spawn_command_line_on_screen (gdk_screen_get_default (),
+	                                        command,
+	                                        &error);
+
+	g_free (command);
+
+	if (! res)
+	{
+		gs_debug ("Unable to start MDM greeter: %s", error->message);
+		g_error_free (error);
+	}
+}
+
+static void
+set_status_text (GSLockPlug *plug,
+                 const char *text)
+{
+	if (plug->priv->auth_message_label != NULL)
+	{
+		gtk_label_set_text (GTK_LABEL (plug->priv->auth_message_label), text);
+	}
+}
+
+void
+gs_lock_plug_set_sensitive (GSLockPlug *plug,
+                            gboolean    sensitive)
+{
+	g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+	gtk_widget_set_sensitive (plug->priv->auth_prompt_entry, sensitive);
+	gtk_widget_set_sensitive (plug->priv->auth_action_area, sensitive);
+}
+
+static void
+remove_cancel_timeout (GSLockPlug *plug)
+{
+	if (plug->priv->cancel_timeout_id > 0)
+	{
+		g_source_remove (plug->priv->cancel_timeout_id);
+		plug->priv->cancel_timeout_id = 0;
+	}
+}
+
+static void
+remove_response_idle (GSLockPlug *plug)
+{
+	if (plug->priv->response_idle_id > 0)
+	{
+		g_source_remove (plug->priv->response_idle_id);
+		plug->priv->response_idle_id = 0;
+	}
+}
+
+static void
+gs_lock_plug_response (GSLockPlug *plug,
+                       gint        response_id)
+{
+	int new_response;
+
+	new_response = response_id;
+
+	g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+	/* Act only on response IDs we recognize */
+	if (!(response_id == GS_LOCK_PLUG_RESPONSE_OK
+	        || response_id == GS_LOCK_PLUG_RESPONSE_CANCEL))
+	{
+		return;
+	}
+
+	remove_cancel_timeout (plug);
+	remove_response_idle (plug);
+
+	if (response_id == GS_LOCK_PLUG_RESPONSE_CANCEL)
+	{
+		gtk_entry_set_text (GTK_ENTRY (plug->priv->auth_prompt_entry), "");
+	}
+
+	g_signal_emit (plug,
+	               lock_plug_signals [RESPONSE],
+	               0,
+	               new_response);
+}
+
+static gboolean
+response_cancel_idle_cb (GSLockPlug *plug)
+{
+	plug->priv->response_idle_id = 0;
+
+	gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_CANCEL);
+
+	return FALSE;
+}
+
+static gboolean
+dialog_timed_out (GSLockPlug *plug)
+{
+	gs_lock_plug_set_sensitive (plug, FALSE);
+	set_status_text (plug, _("Time has expired."));
+
+	if (plug->priv->response_idle_id != 0)
+	{
+		g_warning ("Response idle ID already set but shouldn't be");
+	}
+
+	remove_response_idle (plug);
+
+	plug->priv->response_idle_id = g_timeout_add (2000,
+	                               (GSourceFunc)response_cancel_idle_cb,
+	                               plug);
+	return FALSE;
+}
+
+
+static void
+capslock_update (GSLockPlug *plug,
+                 gboolean    is_on)
+{
+
+	plug->priv->caps_lock_on = is_on;
+
+	if (plug->priv->auth_capslock_label == NULL)
+	{
+		return;
+	}
+
+	if (is_on)
+	{
+		gtk_label_set_text (GTK_LABEL (plug->priv->auth_capslock_label),
+		                    _("You have the Caps Lock key on."));
+	}
+	else
+	{
+		gtk_label_set_text (GTK_LABEL (plug->priv->auth_capslock_label),
+		                    "");
+	}
+}
+
+static gboolean
+is_capslock_on (void)
+{
+	XkbStateRec states;
+	Display    *dsp;
+
+	dsp = GDK_DISPLAY ();
+	if (XkbGetState (dsp, XkbUseCoreKbd, &states) != Success)
+	{
+		return FALSE;
+	}
+
+	return (states.locked_mods & LockMask) != 0;
+}
+
+static void
+restart_cancel_timeout (GSLockPlug *plug)
+{
+	remove_cancel_timeout (plug);
+
+	plug->priv->cancel_timeout_id = g_timeout_add (plug->priv->timeout,
+	                                (GSourceFunc)dialog_timed_out,
+	                                plug);
+}
+
+void
+gs_lock_plug_get_text (GSLockPlug *plug,
+                       char      **text)
+{
+	const char *typed_text;
+	char       *null_text;
+	char       *local_text;
+
+	typed_text = gtk_entry_get_text (GTK_ENTRY (plug->priv->auth_prompt_entry));
+	local_text = g_locale_from_utf8 (typed_text, strlen (typed_text), NULL, NULL, NULL);
+
+	null_text = g_strnfill (strlen (typed_text) + 1, '\b');
+	gtk_entry_set_text (GTK_ENTRY (plug->priv->auth_prompt_entry), null_text);
+	gtk_entry_set_text (GTK_ENTRY (plug->priv->auth_prompt_entry), "");
+	g_free (null_text);
+
+	if (text != NULL)
+	{
+		*text = local_text;
+	}
+}
+
+typedef struct
+{
+	GSLockPlug *plug;
+	gint response_id;
+	GMainLoop *loop;
+	gboolean destroyed;
+} RunInfo;
+
+static void
+shutdown_loop (RunInfo *ri)
+{
+	if (g_main_loop_is_running (ri->loop))
+		g_main_loop_quit (ri->loop);
+}
+
+static void
+run_unmap_handler (GSLockPlug *plug,
+                   gpointer data)
+{
+	RunInfo *ri = data;
+
+	shutdown_loop (ri);
+}
+
+static void
+run_response_handler (GSLockPlug *plug,
+                      gint response_id,
+                      gpointer data)
+{
+	RunInfo *ri;
+
+	ri = data;
+
+	ri->response_id = response_id;
+
+	shutdown_loop (ri);
+}
+
+static gint
+run_delete_handler (GSLockPlug *plug,
+                    GdkEventAny *event,
+                    gpointer data)
+{
+	RunInfo *ri = data;
+
+	shutdown_loop (ri);
+
+	return TRUE; /* Do not destroy */
+}
+
+static void
+run_destroy_handler (GSLockPlug *plug,
+                     gpointer data)
+{
+	RunInfo *ri = data;
+
+	/* shutdown_loop will be called by run_unmap_handler */
+	ri->destroyed = TRUE;
+}
+
+/* adapted from GTK+ gtkdialog.c */
+int
+gs_lock_plug_run (GSLockPlug *plug)
+{
+	RunInfo ri = { NULL, GTK_RESPONSE_NONE, NULL, FALSE };
+	gboolean was_modal;
+	gulong response_handler;
+	gulong unmap_handler;
+	gulong destroy_handler;
+	gulong delete_handler;
+
+	g_return_val_if_fail (GS_IS_LOCK_PLUG (plug), -1);
+
+	g_object_ref (plug);
+
+	was_modal = GTK_WINDOW (plug)->modal;
+	if (!was_modal)
+	{
+		gtk_window_set_modal (GTK_WINDOW (plug), TRUE);
+	}
+
+	if (!GTK_WIDGET_VISIBLE (plug))
+	{
+		gtk_widget_show (GTK_WIDGET (plug));
+	}
+
+	response_handler =
+	    g_signal_connect (plug,
+	                      "response",
+	                      G_CALLBACK (run_response_handler),
+	                      &ri);
+
+	unmap_handler =
+	    g_signal_connect (plug,
+	                      "unmap",
+	                      G_CALLBACK (run_unmap_handler),
+	                      &ri);
+
+	delete_handler =
+	    g_signal_connect (plug,
+	                      "delete_event",
+	                      G_CALLBACK (run_delete_handler),
+	                      &ri);
+
+	destroy_handler =
+	    g_signal_connect (plug,
+	                      "destroy",
+	                      G_CALLBACK (run_destroy_handler),
+	                      &ri);
+
+	ri.loop = g_main_loop_new (NULL, FALSE);
+
+	GDK_THREADS_LEAVE ();
+	g_main_loop_run (ri.loop);
+	GDK_THREADS_ENTER ();
+
+	g_main_loop_unref (ri.loop);
+
+	ri.loop = NULL;
+
+	if (!ri.destroyed)
+	{
+		if (! was_modal)
+		{
+			gtk_window_set_modal (GTK_WINDOW (plug), FALSE);
+		}
+
+		g_signal_handler_disconnect (plug, response_handler);
+		g_signal_handler_disconnect (plug, unmap_handler);
+		g_signal_handler_disconnect (plug, delete_handler);
+		g_signal_handler_disconnect (plug, destroy_handler);
+	}
+
+	g_object_unref (plug);
+
+	return ri.response_id;
+}
+
+
+static cairo_surface_t *
+surface_from_pixbuf (GdkPixbuf *pixbuf)
+{
+	cairo_surface_t *surface;
+	cairo_t         *cr;
+
+	surface = cairo_image_surface_create (gdk_pixbuf_get_has_alpha (pixbuf) ?
+	                                      CAIRO_FORMAT_ARGB32 : CAIRO_FORMAT_RGB24,
+	                                      gdk_pixbuf_get_width (pixbuf),
+	                                      gdk_pixbuf_get_height (pixbuf));
+	cr = cairo_create (surface);
+	gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+	cairo_paint (cr);
+	cairo_destroy (cr);
+
+	return surface;
+}
+
+static void
+rounded_rectangle (cairo_t *cr,
+                   gdouble  aspect,
+                   gdouble  x,
+                   gdouble  y,
+                   gdouble  corner_radius,
+                   gdouble  width,
+                   gdouble  height)
+{
+	gdouble radius;
+	gdouble degrees;
+
+	radius = corner_radius / aspect;
+	degrees = G_PI / 180.0;
+
+	cairo_new_sub_path (cr);
+	cairo_arc (cr,
+	           x + width - radius,
+	           y + radius,
+	           radius,
+	           -90 * degrees,
+	           0 * degrees);
+	cairo_arc (cr,
+	           x + width - radius,
+	           y + height - radius,
+	           radius,
+	           0 * degrees,
+	           90 * degrees);
+	cairo_arc (cr,
+	           x + radius,
+	           y + height - radius,
+	           radius,
+	           90 * degrees,
+	           180 * degrees);
+	cairo_arc (cr,
+	           x + radius,
+	           y + radius,
+	           radius,
+	           180 * degrees,
+	           270 * degrees);
+	cairo_close_path (cr);
+}
+
+static void
+image_set_from_pixbuf (GtkImage  *image,
+                       GdkPixbuf *source)
+{
+	cairo_t         *cr;
+	cairo_t         *cr_mask;
+	cairo_surface_t *surface;
+	GdkPixmap       *pixmap;
+	GdkPixmap       *bitmask;
+	int              w;
+	int              h;
+	int              frame_width;
+	double           radius;
+	GdkColor         color;
+	double           r;
+	double           g;
+	double           b;
+
+	frame_width = 5;
+
+	w = gdk_pixbuf_get_width (source) + frame_width * 2;
+	h = gdk_pixbuf_get_height (source) + frame_width * 2;
+
+	radius = w / 10;
+
+	pixmap = gdk_pixmap_new (GTK_WIDGET (image)->window, w, h, -1);
+	bitmask = gdk_pixmap_new (GTK_WIDGET (image)->window, w, h, 1);
+
+	cr = gdk_cairo_create (pixmap);
+	cr_mask = gdk_cairo_create (bitmask);
+
+	/* setup mask */
+	cairo_rectangle (cr_mask, 0, 0, w, h);
+	cairo_set_operator (cr_mask, CAIRO_OPERATOR_CLEAR);
+	cairo_fill (cr_mask);
+
+	rounded_rectangle (cr_mask, 1.0, 0.5, 0.5, radius, w - 1, h - 1);
+	cairo_set_operator (cr_mask, CAIRO_OPERATOR_OVER);
+	cairo_set_source_rgb (cr_mask, 1, 1, 1);
+	cairo_fill (cr_mask);
+
+	color = GTK_WIDGET (image)->style->bg [GTK_STATE_NORMAL];
+	r = (float)color.red / 65535.0;
+	g = (float)color.green / 65535.0;
+	b = (float)color.blue / 65535.0;
+
+	/* set up image */
+	cairo_rectangle (cr, 0, 0, w, h);
+	cairo_set_source_rgb (cr, r, g, b);
+	cairo_fill (cr);
+
+	rounded_rectangle (cr,
+	                   1.0,
+	                   frame_width + 0.5,
+	                   frame_width + 0.5,
+	                   radius,
+	                   w - frame_width * 2 - 1,
+	                   h - frame_width * 2 - 1);
+	cairo_set_source_rgba (cr, 0.5, 0.5, 0.5, 0.3);
+	cairo_fill_preserve (cr);
+
+	surface = surface_from_pixbuf (source);
+	cairo_set_source_surface (cr, surface, frame_width, frame_width);
+	cairo_fill (cr);
+
+	gtk_image_set_from_pixmap (image, pixmap, bitmask);
+
+	cairo_surface_destroy (surface);
+
+	g_object_unref (bitmask);
+	g_object_unref (pixmap);
+
+	cairo_destroy (cr_mask);
+	cairo_destroy (cr);
+}
+
+
+static gboolean
+check_user_file (const gchar *filename,
+                 uid_t        user,
+                 gssize       max_file_size,
+                 gboolean     relax_group,
+                 gboolean     relax_other)
+{
+	struct stat fileinfo;
+
+	if (max_file_size < 0)
+	{
+		max_file_size = G_MAXSIZE;
+	}
+
+	/* Exists/Readable? */
+	if (g_stat (filename, &fileinfo) < 0)
+	{
+		return FALSE;
+	}
+
+	/* Is a regular file */
+	if (G_UNLIKELY (!S_ISREG (fileinfo.st_mode)))
+	{
+		return FALSE;
+	}
+
+	/* Owned by user? */
+	if (G_UNLIKELY (fileinfo.st_uid != user))
+	{
+		return FALSE;
+	}
+
+	/* Group not writable or relax_group? */
+	if (G_UNLIKELY ((fileinfo.st_mode & S_IWGRP) == S_IWGRP && !relax_group))
+	{
+		return FALSE;
+	}
+
+	/* Other not writable or relax_other? */
+	if (G_UNLIKELY ((fileinfo.st_mode & S_IWOTH) == S_IWOTH && !relax_other))
+	{
+		return FALSE;
+	}
+
+	/* Size is kosher? */
+	if (G_UNLIKELY (fileinfo.st_size > max_file_size))
+	{
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+set_face_image (GSLockPlug *plug)
+{
+	GdkPixbuf    *pixbuf;
+	const char   *homedir;
+	char         *path;
+	int           icon_size = 96;
+	gsize         user_max_file = 65536;
+	uid_t         uid;
+
+	homedir = g_get_home_dir ();
+	uid = getuid ();
+
+	path = g_build_filename (homedir, ".face", NULL);
+
+	pixbuf = NULL;
+	if (check_user_file (path, uid, user_max_file, 0, 0))
+	{
+		pixbuf = gdk_pixbuf_new_from_file_at_size (path,
+		         icon_size,
+		         icon_size,
+		         NULL);
+	}
+
+	g_free (path);
+
+	if (pixbuf == NULL)
+	{
+		return FALSE;
+	}
+
+	image_set_from_pixbuf (GTK_IMAGE (plug->priv->auth_face_image), pixbuf);
+
+	g_object_unref (pixbuf);
+
+	return TRUE;
+}
+
+static void
+gs_lock_plug_show (GtkWidget *widget)
+{
+	GSLockPlug *plug = GS_LOCK_PLUG (widget);
+
+	gs_profile_start (NULL);
+
+	gs_profile_start ("parent");
+	if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->show)
+	{
+		GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->show (widget);
+	}
+
+	gs_profile_end ("parent");
+
+
+	if (plug->priv->auth_face_image)
+	{
+		set_face_image (plug);
+	}
+
+	capslock_update (plug, is_capslock_on ());
+
+	restart_cancel_timeout (plug);
+
+	gs_profile_end (NULL);
+}
+
+static void
+gs_lock_plug_hide (GtkWidget *widget)
+{
+	if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->hide)
+	{
+		GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->hide (widget);
+	}
+}
+
+static void
+queue_key_event (GSLockPlug  *plug,
+                 GdkEventKey *event)
+{
+	GdkEvent *saved_event;
+
+	saved_event = gdk_event_copy ((GdkEvent *)event);
+	plug->priv->key_events = g_list_prepend (plug->priv->key_events,
+	                         saved_event);
+}
+
+static void
+forward_key_events (GSLockPlug *plug)
+{
+	plug->priv->key_events = g_list_reverse (plug->priv->key_events);
+	while (plug->priv->key_events != NULL)
+	{
+		GdkEventKey *event = plug->priv->key_events->data;
+
+		gtk_window_propagate_key_event (GTK_WINDOW (plug), event);
+
+		gdk_event_free ((GdkEvent *)event);
+
+		plug->priv->key_events = g_list_delete_link (plug->priv->key_events,
+		                         plug->priv->key_events);
+	}
+}
+
+static void
+gs_lock_plug_size_request (GtkWidget      *widget,
+                           GtkRequisition *requisition)
+{
+	GSLockPlug *plug = GS_LOCK_PLUG (widget);
+	int mod_width;
+	int mod_height;
+
+	if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->size_request)
+	{
+		GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->size_request (widget, requisition);
+	}
+
+	/* don't constrain size when themed */
+	if (plug->priv->vbox == NULL)
+	{
+		return;
+	}
+
+	mod_width = requisition->height * 1.3;
+	mod_height = requisition->width / 1.6;
+	if (requisition->width < mod_width)
+	{
+		/* if the dialog is tall fill out the width */
+		requisition->width = mod_width;
+	}
+	else if (requisition->height < mod_height)
+	{
+		/* if the dialog is wide fill out the height */
+		requisition->height = mod_height;
+	}
+}
+
+static void
+gs_lock_plug_set_logout_enabled (GSLockPlug *plug,
+                                 gboolean    logout_enabled)
+{
+	g_return_if_fail (GS_LOCK_PLUG (plug));
+
+	if (plug->priv->logout_enabled == logout_enabled)
+	{
+		return;
+	}
+
+	plug->priv->logout_enabled = logout_enabled;
+	g_object_notify (G_OBJECT (plug), "logout-enabled");
+
+	if (plug->priv->auth_logout_button == NULL)
+	{
+		return;
+	}
+
+	if (logout_enabled)
+	{
+		gtk_widget_show (plug->priv->auth_logout_button);
+	}
+	else
+	{
+		gtk_widget_hide (plug->priv->auth_logout_button);
+	}
+}
+
+static void
+gs_lock_plug_set_logout_command (GSLockPlug *plug,
+                                 const char *command)
+{
+	g_return_if_fail (GS_LOCK_PLUG (plug));
+
+	g_free (plug->priv->logout_command);
+
+	if (command)
+	{
+		plug->priv->logout_command = g_strdup (command);
+	}
+	else
+	{
+		plug->priv->logout_command = NULL;
+	}
+}
+
+static gboolean
+is_program_in_path (const char *program)
+{
+	char *tmp = g_find_program_in_path (program);
+	if (tmp != NULL)
+	{
+		g_free (tmp);
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+static void
+gs_lock_plug_set_status_message (GSLockPlug *plug,
+                                 const char *status_message)
+{
+	g_return_if_fail (GS_LOCK_PLUG (plug));
+
+	g_free (plug->priv->status_message);
+	plug->priv->status_message = g_strdup (status_message);
+
+	if (plug->priv->status_message_label)
+	{
+		if (plug->priv->status_message)
+		{
+			gtk_label_set_text (GTK_LABEL (plug->priv->status_message_label),
+			                    plug->priv->status_message);
+			gtk_widget_show (plug->priv->status_message_label);
+		}
+		else
+		{
+			gtk_widget_hide (plug->priv->status_message_label);
+		}
+	}
+}
+
+static void
+gs_lock_plug_get_property (GObject    *object,
+                           guint       prop_id,
+                           GValue     *value,
+                           GParamSpec *pspec)
+{
+	GSLockPlug *self;
+
+	self = GS_LOCK_PLUG (object);
+
+	switch (prop_id)
+	{
+	case PROP_LOGOUT_ENABLED:
+		g_value_set_boolean (value, self->priv->logout_enabled);
+		break;
+	case PROP_LOGOUT_COMMAND:
+		g_value_set_string (value, self->priv->logout_command);
+		break;
+	case PROP_SWITCH_ENABLED:
+		g_value_set_boolean (value, self->priv->switch_enabled);
+		break;
+	case PROP_STATUS_MESSAGE:
+		g_value_set_string (value, self->priv->status_message);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_lock_plug_set_switch_enabled (GSLockPlug *plug,
+                                 gboolean    switch_enabled)
+{
+	g_return_if_fail (GS_LOCK_PLUG (plug));
+
+	if (plug->priv->switch_enabled == switch_enabled)
+	{
+		return;
+	}
+
+	plug->priv->switch_enabled = switch_enabled;
+	g_object_notify (G_OBJECT (plug), "switch-enabled");
+
+	if (plug->priv->auth_switch_button == NULL)
+	{
+		return;
+	}
+
+	if (switch_enabled)
+	{
+		gboolean found;
+		found = is_program_in_path (MDM_FLEXISERVER_COMMAND);
+		if (found)
+		{
+			gtk_widget_show (plug->priv->auth_switch_button);
+		}
+		else
+		{
+			gs_debug ("Waring: MDM flexiserver command not found: %s", MDM_FLEXISERVER_COMMAND);
+			gtk_widget_hide (plug->priv->auth_switch_button);
+		}
+	}
+	else
+	{
+		gtk_widget_hide (plug->priv->auth_switch_button);
+	}
+}
+
+static void
+gs_lock_plug_set_property (GObject            *object,
+                           guint               prop_id,
+                           const GValue       *value,
+                           GParamSpec         *pspec)
+{
+	GSLockPlug *self;
+
+	self = GS_LOCK_PLUG (object);
+
+	switch (prop_id)
+	{
+	case PROP_LOGOUT_ENABLED:
+		gs_lock_plug_set_logout_enabled (self, g_value_get_boolean (value));
+		break;
+	case PROP_LOGOUT_COMMAND:
+		gs_lock_plug_set_logout_command (self, g_value_get_string (value));
+		break;
+	case PROP_STATUS_MESSAGE:
+		gs_lock_plug_set_status_message (self, g_value_get_string (value));
+		break;
+	case PROP_SWITCH_ENABLED:
+		gs_lock_plug_set_switch_enabled (self, g_value_get_boolean (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_lock_plug_close (GSLockPlug *plug)
+{
+	/* Synthesize delete_event to close dialog. */
+
+	GtkWidget *widget = GTK_WIDGET (plug);
+	GdkEvent  *event;
+
+	event = gdk_event_new (GDK_DELETE);
+	event->any.window = g_object_ref (widget->window);
+	event->any.send_event = TRUE;
+
+	gtk_main_do_event (event);
+	gdk_event_free (event);
+}
+
+static void
+gs_lock_plug_class_init (GSLockPlugClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+	GtkBindingSet  *binding_set;
+
+	object_class->finalize     = gs_lock_plug_finalize;
+	object_class->get_property = gs_lock_plug_get_property;
+	object_class->set_property = gs_lock_plug_set_property;
+
+	widget_class->style_set    = gs_lock_plug_style_set;
+	widget_class->show         = gs_lock_plug_show;
+	widget_class->hide         = gs_lock_plug_hide;
+	widget_class->size_request = gs_lock_plug_size_request;
+
+	klass->close = gs_lock_plug_close;
+
+	g_type_class_add_private (klass, sizeof (GSLockPlugPrivate));
+
+	lock_plug_signals [RESPONSE] = g_signal_new ("response",
+	                               G_OBJECT_CLASS_TYPE (klass),
+	                               G_SIGNAL_RUN_LAST,
+	                               G_STRUCT_OFFSET (GSLockPlugClass, response),
+	                               NULL, NULL,
+	                               g_cclosure_marshal_VOID__INT,
+	                               G_TYPE_NONE, 1,
+	                               G_TYPE_INT);
+	lock_plug_signals [CLOSE] = g_signal_new ("close",
+	                            G_OBJECT_CLASS_TYPE (klass),
+	                            G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+	                            G_STRUCT_OFFSET (GSLockPlugClass, close),
+	                            NULL, NULL,
+	                            g_cclosure_marshal_VOID__VOID,
+	                            G_TYPE_NONE, 0);
+
+	g_object_class_install_property (object_class,
+	                                 PROP_LOGOUT_ENABLED,
+	                                 g_param_spec_boolean ("logout-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOGOUT_COMMAND,
+	                                 g_param_spec_string ("logout-command",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_STATUS_MESSAGE,
+	                                 g_param_spec_string ("status-message",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_SWITCH_ENABLED,
+	                                 g_param_spec_boolean ("switch-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+
+	binding_set = gtk_binding_set_by_class (klass);
+
+	gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0,
+	                              "close", 0);
+}
+
+static void
+clear_clipboards (GSLockPlug *plug)
+{
+	GtkClipboard *clipboard;
+
+	clipboard = gtk_widget_get_clipboard (GTK_WIDGET (plug), GDK_SELECTION_PRIMARY);
+	gtk_clipboard_clear (clipboard);
+	gtk_clipboard_set_text (clipboard, "", -1);
+	clipboard = gtk_widget_get_clipboard (GTK_WIDGET (plug), GDK_SELECTION_CLIPBOARD);
+	gtk_clipboard_clear (clipboard);
+	gtk_clipboard_set_text (clipboard, "", -1);
+}
+
+static void
+take_note (GtkButton  *button,
+           GSLockPlug *plug)
+{
+	int page;
+
+	page = gtk_notebook_page_num (GTK_NOTEBOOK (plug->priv->notebook), plug->priv->note_tab);
+	gtk_notebook_set_current_page (GTK_NOTEBOOK (plug->priv->notebook), page);
+	/* this counts as activity so restart the timer */
+	restart_cancel_timeout (plug);
+}
+
+static void
+submit_note (GtkButton  *button,
+             GSLockPlug *plug)
+{
+#ifdef WITH_LIBMATENOTIFY
+	char               *text;
+	char                summary[128];
+	char               *escaped_text;
+	GtkTextBuffer      *buffer;
+	GtkTextIter         start, end;
+	time_t              t;
+	struct tm          *tmp;
+	NotifyNotification *note;
+
+	gtk_notebook_set_current_page (GTK_NOTEBOOK (plug->priv->notebook), AUTH_PAGE);
+	buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (plug->priv->note_text_view));
+	gtk_text_buffer_get_bounds (buffer, &start, &end);
+	text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+	gtk_text_buffer_set_text (buffer, "", 0);
+	escaped_text = g_markup_escape_text (text, -1);
+
+	t = time (NULL);
+	tmp = localtime (&t);
+	strftime (summary, 128, "%X", tmp);
+
+	notify_init ("mate-screensaver-dialog");
+	note = notify_notification_new (summary, escaped_text, NULL, NULL);
+	notify_notification_set_timeout (note, NOTIFY_EXPIRES_NEVER);
+	notify_notification_show (note, NULL);
+	g_object_unref (note);
+
+	g_free (text);
+	g_free (escaped_text);
+
+	gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_CANCEL);
+#endif /* WITH_LIBMATENOTIFY */
+}
+
+static void
+cancel_note (GtkButton  *button,
+             GSLockPlug *plug)
+{
+	GtkTextBuffer *buffer;
+
+	gtk_notebook_set_current_page (GTK_NOTEBOOK (plug->priv->notebook), AUTH_PAGE);
+	buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (plug->priv->note_text_view));
+	gtk_text_buffer_set_text (buffer, "", 0);
+
+	/* this counts as activity so restart the timer */
+	restart_cancel_timeout (plug);
+
+	gtk_window_set_default (GTK_WINDOW (plug), plug->priv->auth_unlock_button);
+
+	clear_clipboards (plug);
+}
+
+static void
+logout_button_clicked (GtkButton  *button,
+                       GSLockPlug *plug)
+{
+	char   **argv  = NULL;
+	GError  *error = NULL;
+	gboolean res;
+
+	if (! plug->priv->logout_command)
+	{
+		return;
+	}
+
+	res = g_shell_parse_argv (plug->priv->logout_command, NULL, &argv, &error);
+
+	if (! res)
+	{
+		g_warning ("Could not parse logout command: %s", error->message);
+		g_error_free (error);
+		return;
+	}
+
+	g_spawn_async (g_get_home_dir (),
+	               argv,
+	               NULL,
+	               G_SPAWN_SEARCH_PATH,
+	               NULL,
+	               NULL,
+	               NULL,
+	               &error);
+
+	g_strfreev (argv);
+
+	if (error)
+	{
+		g_warning ("Could not run logout command: %s", error->message);
+		g_error_free (error);
+	}
+}
+
+void
+gs_lock_plug_set_busy (GSLockPlug *plug)
+{
+	GdkCursor *cursor;
+	GtkWidget *top_level;
+
+	top_level = gtk_widget_get_toplevel (GTK_WIDGET (plug));
+
+	cursor = gdk_cursor_new (GDK_WATCH);
+	gdk_window_set_cursor (top_level->window, cursor);
+	gdk_cursor_unref (cursor);
+}
+
+void
+gs_lock_plug_set_ready (GSLockPlug *plug)
+{
+	GdkCursor *cursor;
+	GtkWidget *top_level;
+
+	top_level = gtk_widget_get_toplevel (GTK_WIDGET (plug));
+
+	cursor = gdk_cursor_new (GDK_LEFT_PTR);
+	gdk_window_set_cursor (top_level->window, cursor);
+	gdk_cursor_unref (cursor);
+}
+
+void
+gs_lock_plug_enable_prompt (GSLockPlug *plug,
+                            const char *message,
+                            gboolean    visible)
+{
+	g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+	gs_debug ("Setting prompt to: %s", message);
+
+	gtk_widget_set_sensitive (plug->priv->auth_unlock_button, TRUE);
+	gtk_widget_show (plug->priv->auth_unlock_button);
+	gtk_widget_grab_default (plug->priv->auth_unlock_button);
+	gtk_label_set_text (GTK_LABEL (plug->priv->auth_prompt_label), message);
+	gtk_widget_show (plug->priv->auth_prompt_label);
+	gtk_entry_set_visibility (GTK_ENTRY (plug->priv->auth_prompt_entry), visible);
+	gtk_widget_set_sensitive (plug->priv->auth_prompt_entry, TRUE);
+	gtk_widget_show (plug->priv->auth_prompt_entry);
+
+	if (! GTK_WIDGET_HAS_FOCUS (plug->priv->auth_prompt_entry))
+	{
+		gtk_widget_grab_focus (plug->priv->auth_prompt_entry);
+	}
+
+	/* were there any key events sent to the plug while the
+	 * entry wasnt ready? If so, forward them along
+	 */
+	forward_key_events (plug);
+
+	restart_cancel_timeout (plug);
+}
+
+void
+gs_lock_plug_disable_prompt (GSLockPlug *plug)
+{
+	g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+	/* gtk_widget_hide (plug->priv->auth_prompt_entry); */
+	/* gtk_widget_hide (plug->priv->auth_prompt_label); */
+	gtk_widget_set_sensitive (plug->priv->auth_unlock_button, FALSE);
+	gtk_widget_set_sensitive (plug->priv->auth_prompt_entry, FALSE);
+	/* gtk_widget_hide (plug->priv->auth_unlock_button); */
+
+	gtk_widget_grab_default (plug->priv->auth_cancel_button);
+}
+
+void
+gs_lock_plug_show_message (GSLockPlug *plug,
+                           const char *message)
+{
+	g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+	set_status_text (plug, message ? message : "");
+}
+
+/* button press handler used to inhibit popup menu */
+static gint
+entry_button_press (GtkWidget      *widget,
+                    GdkEventButton *event)
+{
+	if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
+	{
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static gint
+entry_key_press (GtkWidget   *widget,
+                 GdkEventKey *event,
+                 GSLockPlug  *plug)
+{
+	gboolean capslock_on;
+
+	restart_cancel_timeout (plug);
+
+	capslock_on = is_capslock_on ();
+
+	if (capslock_on != plug->priv->caps_lock_on)
+	{
+		capslock_update (plug, capslock_on);
+	}
+
+	/* if the input widget is visible and ready for input
+	 * then just carry on as usual
+	 */
+	if (GTK_WIDGET_VISIBLE (plug->priv->auth_prompt_entry) &&
+	        GTK_WIDGET_IS_SENSITIVE (plug->priv->auth_prompt_entry))
+	{
+		return FALSE;
+	}
+
+	if (strcmp (event->string, "") == 0)
+	{
+		return FALSE;
+	}
+
+	queue_key_event (plug, event);
+
+	return TRUE;
+}
+
+/* adapted from gtk_dialog_add_button */
+static GtkWidget *
+gs_lock_plug_add_button (GSLockPlug  *plug,
+                         GtkWidget   *action_area,
+                         const gchar *button_text)
+{
+	GtkWidget *button;
+
+	g_return_val_if_fail (GS_IS_LOCK_PLUG (plug), NULL);
+	g_return_val_if_fail (button_text != NULL, NULL);
+
+	button = gtk_button_new_from_stock (button_text);
+
+	GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+
+	gtk_widget_show (button);
+
+	gtk_box_pack_end (GTK_BOX (action_area),
+	                  button,
+	                  FALSE, TRUE, 0);
+
+	return button;
+}
+
+static char *
+get_user_display_name (void)
+{
+	const char *name;
+	char       *utf8_name;
+
+	name = g_get_real_name ();
+
+	if (name == NULL || strcmp (name, "Unknown") == 0)
+	{
+		name = g_get_user_name ();
+	}
+
+	utf8_name = NULL;
+
+	if (name != NULL)
+	{
+		utf8_name = g_locale_to_utf8 (name, -1, NULL, NULL, NULL);
+	}
+
+	return utf8_name;
+}
+
+static char *
+get_user_name (void)
+{
+	const char *name;
+	char       *utf8_name;
+
+	name = g_get_user_name ();
+
+	utf8_name = NULL;
+	if (name != NULL)
+	{
+		utf8_name = g_locale_to_utf8 (name, -1, NULL, NULL, NULL);
+	}
+
+	return utf8_name;
+}
+
+static void
+create_page_one_buttons (GSLockPlug *plug)
+{
+
+	gs_profile_start ("page one buttons");
+
+	plug->priv->auth_switch_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),
+	                                  plug->priv->auth_action_area,
+	                                  _("S_witch User..."));
+	gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (plug->priv->auth_action_area),
+	                                    plug->priv->auth_switch_button,
+	                                    TRUE);
+	gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_switch_button), FALSE);
+	gtk_widget_set_no_show_all (plug->priv->auth_switch_button, TRUE);
+
+	plug->priv->auth_logout_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),
+	                                  plug->priv->auth_action_area,
+	                                  _("Log _Out"));
+	gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_logout_button), FALSE);
+	gtk_widget_set_no_show_all (plug->priv->auth_logout_button, TRUE);
+
+	plug->priv->auth_cancel_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),
+	                                  plug->priv->auth_action_area,
+	                                  GTK_STOCK_CANCEL);
+	gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_cancel_button), FALSE);
+
+	plug->priv->auth_unlock_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),
+	                                  plug->priv->auth_action_area,
+	                                  _("_Unlock"));
+	gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_unlock_button), FALSE);
+
+	gtk_window_set_default (GTK_WINDOW (plug), plug->priv->auth_unlock_button);
+
+	gs_profile_end ("page one buttons");
+}
+
+/* adapted from MDM */
+static char *
+expand_string (const char *text)
+{
+	GString       *str;
+	const char    *p;
+	char          *username;
+	int            i;
+	int            n_chars;
+	struct utsname name;
+
+	str = g_string_sized_new (strlen (text));
+
+	p = text;
+	n_chars = g_utf8_strlen (text, -1);
+	i = 0;
+
+	while (i < n_chars)
+	{
+		gunichar ch;
+
+		ch = g_utf8_get_char (p);
+
+		/* Backslash commands */
+		if (ch == '\\')
+		{
+			p = g_utf8_next_char (p);
+			i++;
+			ch = g_utf8_get_char (p);
+
+			if (i >= n_chars || ch == '\0')
+			{
+				g_warning ("Unescaped \\ at end of text\n");
+				goto bail;
+			}
+			else if (ch == 'n')
+			{
+				g_string_append_unichar (str, '\n');
+			}
+			else
+			{
+				g_string_append_unichar (str, ch);
+			}
+		}
+		else if (ch == '%')
+		{
+			p = g_utf8_next_char (p);
+			i++;
+			ch = g_utf8_get_char (p);
+
+			if (i >= n_chars || ch == '\0')
+			{
+				g_warning ("Unescaped %% at end of text\n");
+				goto bail;
+			}
+
+			switch (ch)
+			{
+			case '%':
+				g_string_append (str, "%");
+				break;
+			case 'c':
+				/* clock */
+				break;
+			case 'd':
+				/* display */
+				g_string_append (str, g_getenv ("DISPLAY"));
+				break;
+			case 'h':
+				/* hostname */
+				g_string_append (str, g_get_host_name ());
+				break;
+			case 'm':
+				/* machine name */
+				uname (&name);
+				g_string_append (str, name.machine);
+				break;
+			case 'n':
+				/* nodename */
+				uname (&name);
+				g_string_append (str, name.nodename);
+				break;
+			case 'r':
+				/* release */
+				uname (&name);
+				g_string_append (str, name.release);
+				break;
+			case 'R':
+				/* Real name */
+				username = get_user_display_name ();
+				g_string_append (str, username);
+				g_free (username);
+				break;
+			case 's':
+				/* system name */
+				uname (&name);
+				g_string_append (str, name.sysname);
+				break;
+			case 'U':
+				/* Username */
+				username = get_user_name ();
+				g_string_append (str, username);
+				g_free (username);
+				break;
+			default:
+				if (ch < 127)
+				{
+					g_warning ("unknown escape code %%%c in text\n", (char)ch);
+				}
+				else
+				{
+					g_warning ("unknown escape code %%(U%x) in text\n", (int)ch);
+				}
+			}
+		}
+		else
+		{
+			g_string_append_unichar (str, ch);
+		}
+		p = g_utf8_next_char (p);
+		i++;
+	}
+
+bail:
+
+	return g_string_free (str, FALSE);
+}
+
+static void
+expand_string_for_label (GtkWidget *label)
+{
+	const char *template;
+	char       *str;
+
+	template = gtk_label_get_label (GTK_LABEL (label));
+	str = expand_string (template);
+	gtk_label_set_label (GTK_LABEL (label), str);
+	g_free (str);
+}
+
+static void
+create_page_one (GSLockPlug *plug)
+{
+	GtkWidget            *align;
+	GtkWidget            *vbox;
+	GtkWidget            *vbox2;
+	GtkWidget            *hbox;
+	char                 *str;
+
+	gs_profile_start ("page one");
+
+	align = gtk_alignment_new (0.5, 0.5, 1, 1);
+	gtk_notebook_append_page (GTK_NOTEBOOK (plug->priv->notebook), align, NULL);
+
+	vbox = gtk_vbox_new (FALSE, 12);
+	gtk_container_add (GTK_CONTAINER (align), vbox);
+
+	plug->priv->auth_face_image = gtk_image_new ();
+	gtk_box_pack_start (GTK_BOX (vbox), plug->priv->auth_face_image, TRUE, TRUE, 0);
+	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_face_image), 0.5, 1.0);
+
+	vbox2 = gtk_vbox_new (FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (vbox), vbox2, FALSE, FALSE, 0);
+
+	str = g_strdup ("<span size=\"x-large\">%R</span>");
+	plug->priv->auth_realname_label = gtk_label_new (str);
+	g_free (str);
+	expand_string_for_label (plug->priv->auth_realname_label);
+	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_realname_label), 0.5, 0.5);
+	gtk_label_set_use_markup (GTK_LABEL (plug->priv->auth_realname_label), TRUE);
+	gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_realname_label, FALSE, FALSE, 0);
+
+	/* To translators: This expands to USERNAME on HOSTNAME */
+	str = g_strdup_printf ("<span size=\"small\">%s</span>", _("%U on %h"));
+	plug->priv->auth_username_label = gtk_label_new (str);
+	g_free (str);
+	expand_string_for_label (plug->priv->auth_username_label);
+	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_username_label), 0.5, 0.5);
+	gtk_label_set_use_markup (GTK_LABEL (plug->priv->auth_username_label), TRUE);
+	gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_username_label, FALSE, FALSE, 0);
+
+	vbox2 = gtk_vbox_new (FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (vbox), vbox2, TRUE, TRUE, 0);
+
+	hbox = gtk_hbox_new (FALSE, 6);
+	gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
+
+	plug->priv->auth_prompt_label = gtk_label_new_with_mnemonic (_("_Password:"));
+	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_prompt_label), 0, 0.5);
+	gtk_box_pack_start (GTK_BOX (hbox), plug->priv->auth_prompt_label, FALSE, FALSE, 0);
+
+	plug->priv->auth_prompt_entry = gtk_entry_new ();
+	gtk_box_pack_start (GTK_BOX (hbox), plug->priv->auth_prompt_entry, TRUE, TRUE, 0);
+
+	gtk_label_set_mnemonic_widget (GTK_LABEL (plug->priv->auth_prompt_label),
+	                               plug->priv->auth_prompt_entry);
+
+	plug->priv->auth_capslock_label = gtk_label_new ("");
+	gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_capslock_label), 0.5, 0.5);
+	gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_capslock_label, FALSE, FALSE, 0);
+
+	/* Status text */
+
+	plug->priv->auth_message_label = gtk_label_new (NULL);
+	gtk_box_pack_start (GTK_BOX (vbox), plug->priv->auth_message_label,
+	                    FALSE, FALSE, 0);
+	/* Buttons */
+	plug->priv->auth_action_area = gtk_hbutton_box_new ();
+
+	gtk_button_box_set_layout (GTK_BUTTON_BOX (plug->priv->auth_action_area),
+	                           GTK_BUTTONBOX_END);
+
+	gtk_box_pack_end (GTK_BOX (vbox), plug->priv->auth_action_area,
+	                  FALSE, TRUE, 0);
+	gtk_widget_show (plug->priv->auth_action_area);
+
+	create_page_one_buttons (plug);
+
+	gs_profile_end ("page one");
+}
+
+static void
+unlock_button_clicked (GtkButton  *button,
+                       GSLockPlug *plug)
+{
+	gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_OK);
+}
+
+static void
+cancel_button_clicked (GtkButton  *button,
+                       GSLockPlug *plug)
+{
+	gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_CANCEL);
+}
+
+static void
+switch_user_button_clicked (GtkButton  *button,
+                            GSLockPlug *plug)
+{
+
+	remove_response_idle (plug);
+
+	gs_lock_plug_set_sensitive (plug, FALSE);
+
+	plug->priv->response_idle_id = g_timeout_add (2000,
+	        (GSourceFunc)response_cancel_idle_cb,
+	        plug);
+
+	gs_lock_plug_set_busy (plug);
+	do_user_switch (plug);
+}
+
+static char *
+get_dialog_theme_name (GSLockPlug *plug)
+{
+	char        *name;
+	MateConfClient *client;
+
+	client = mateconf_client_get_default ();
+	name = mateconf_client_get_string (client, KEY_LOCK_DIALOG_THEME, NULL);
+	g_object_unref (client);
+
+	return name;
+}
+
+static gboolean
+load_theme (GSLockPlug *plug)
+{
+	char       *theme;
+	char       *filename;
+	char       *gtkbuilder;
+	char       *rc;
+	GtkBuilder *builder;
+	GtkWidget  *lock_dialog;
+	GError     *error=NULL;
+
+	theme = get_dialog_theme_name (plug);
+	if (theme == NULL)
+	{
+		return FALSE;
+	}
+
+	filename = g_strdup_printf ("lock-dialog-%s.ui", theme);
+	gtkbuilder = g_build_filename (GTKBUILDERDIR, filename, NULL);
+	g_free (filename);
+	if (! g_file_test (gtkbuilder, G_FILE_TEST_IS_REGULAR))
+	{
+		g_free (gtkbuilder);
+		g_free (theme);
+		return FALSE;
+	}
+
+	filename = g_strdup_printf ("lock-dialog-%s.gtkrc", theme);
+	g_free (theme);
+
+	rc = g_build_filename (GTKBUILDERDIR, filename, NULL);
+	g_free (filename);
+	if (g_file_test (rc, G_FILE_TEST_IS_REGULAR))
+	{
+		gtk_rc_parse (rc);
+	}
+	g_free (rc);
+
+	builder = gtk_builder_new();
+
+	if (!gtk_builder_add_from_file (builder,gtkbuilder,&error))
+	{
+		g_warning ("Couldn't load builder file '%s': %s", gtkbuilder, error->message);
+		g_error_free(error);
+		g_free (gtkbuilder);
+		return FALSE;
+	}
+	g_free (gtkbuilder);
+
+	lock_dialog = GTK_WIDGET (gtk_builder_get_object(builder, "lock-dialog"));
+	gtk_container_add (GTK_CONTAINER (plug), lock_dialog);
+
+	plug->priv->vbox = NULL;
+	plug->priv->notebook = GTK_WIDGET (gtk_builder_get_object(builder, "notebook"));
+
+	plug->priv->auth_face_image = GTK_WIDGET (gtk_builder_get_object(builder, "auth-face-image"));
+	plug->priv->auth_action_area = GTK_WIDGET (gtk_builder_get_object(builder, "auth-action-area"));
+	plug->priv->auth_realname_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-realname-label"));
+	plug->priv->auth_username_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-username-label"));
+	plug->priv->auth_prompt_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-label"));
+	plug->priv->auth_prompt_entry = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-entry"));
+	plug->priv->auth_prompt_box = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-box"));
+	plug->priv->auth_capslock_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-capslock-label"));
+	plug->priv->auth_message_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-status-label"));
+	plug->priv->auth_unlock_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-unlock-button"));
+	plug->priv->auth_cancel_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-cancel-button"));
+	plug->priv->auth_logout_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-logout-button"));
+	plug->priv->auth_switch_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-switch-button"));
+	plug->priv->auth_note_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-note-button"));
+	plug->priv->note_tab = GTK_WIDGET (gtk_builder_get_object(builder, "note-tab"));
+	plug->priv->note_tab_label = GTK_WIDGET (gtk_builder_get_object(builder, "note-tab-label"));
+	plug->priv->note_ok_button = GTK_WIDGET (gtk_builder_get_object(builder, "note-ok-button"));
+	plug->priv->note_text_view = GTK_WIDGET (gtk_builder_get_object(builder, "note-text-view"));
+	plug->priv->note_cancel_button = GTK_WIDGET (gtk_builder_get_object(builder, "note-cancel-button"));
+
+	/* Placeholder for the keyboard indicator */
+	plug->priv->auth_prompt_kbd_layout_indicator = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-kbd-layout-indicator"));
+	if (plug->priv->auth_logout_button != NULL)
+	{
+		gtk_widget_set_no_show_all (plug->priv->auth_logout_button, TRUE);
+	}
+	if (plug->priv->auth_switch_button != NULL)
+	{
+		gtk_widget_set_no_show_all (plug->priv->auth_switch_button, TRUE);
+	}
+	if (plug->priv->auth_note_button != NULL)
+	{
+		gtk_widget_set_no_show_all (plug->priv->auth_note_button, TRUE);
+	}
+
+	gtk_widget_show_all (lock_dialog);
+
+	plug->priv->status_message_label = GTK_WIDGET (gtk_builder_get_object(builder, "status-message-label"));
+
+	return TRUE;
+}
+
+static int
+delete_handler (GSLockPlug  *plug,
+                GdkEventAny *event,
+                gpointer     data)
+{
+	gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_CANCEL);
+
+	return TRUE; /* Do not destroy */
+}
+
+static void
+on_note_text_buffer_changed (GtkTextBuffer *buffer,
+                             GSLockPlug    *plug)
+{
+	int len;
+
+	len = gtk_text_buffer_get_char_count (buffer);
+	if (len > NOTE_BUFFER_MAX_CHARS)
+	{
+		gtk_widget_set_sensitive (plug->priv->note_text_view, FALSE);
+	}
+}
+
+static void
+gs_lock_plug_init (GSLockPlug *plug)
+{
+	gs_profile_start (NULL);
+
+	plug->priv = GS_LOCK_PLUG_GET_PRIVATE (plug);
+
+	clear_clipboards (plug);
+
+#ifdef WITH_LIBMATENOTIFY
+	plug->priv->leave_note_enabled = TRUE;
+#else
+	plug->priv->leave_note_enabled = FALSE;
+#endif
+
+	if (! load_theme (plug))
+	{
+		gs_debug ("Unable to load theme!");
+
+		plug->priv->vbox = gtk_vbox_new (FALSE, 0);
+
+		gtk_container_add (GTK_CONTAINER (plug), plug->priv->vbox);
+
+		/* Notebook */
+
+		plug->priv->notebook = gtk_notebook_new ();
+		gtk_notebook_set_show_tabs (GTK_NOTEBOOK (plug->priv->notebook), FALSE);
+		gtk_notebook_set_show_border (GTK_NOTEBOOK (plug->priv->notebook), FALSE);
+		gtk_box_pack_start (GTK_BOX (plug->priv->vbox), plug->priv->notebook, TRUE, TRUE, 0);
+
+		/* Page 1 */
+
+		create_page_one (plug);
+
+		gtk_widget_show_all (plug->priv->vbox);
+	}
+
+	if (plug->priv->note_text_view != NULL)
+	{
+		GtkTextBuffer *buffer;
+		buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (plug->priv->note_text_view));
+		g_signal_connect (buffer, "changed", G_CALLBACK (on_note_text_buffer_changed), plug);
+	}
+
+	/* Layout indicator */
+#ifdef WITH_KBD_LAYOUT_INDICATOR
+	if (plug->priv->auth_prompt_kbd_layout_indicator != NULL)
+	{
+		XklEngine *engine;
+
+		engine = xkl_engine_get_instance (GDK_DISPLAY ());
+		if (xkl_engine_get_num_groups (engine) > 1)
+		{
+			GtkWidget *layout_indicator;
+
+			layout_indicator = matekbd_indicator_new ();
+			matekbd_indicator_set_parent_tooltips (MATEKBD_INDICATOR (layout_indicator), TRUE);
+			gtk_box_pack_start (GTK_BOX (plug->priv->auth_prompt_kbd_layout_indicator),
+			                    layout_indicator,
+			                    FALSE,
+			                    FALSE,
+			                    6);
+
+			gtk_widget_show_all (layout_indicator);
+			gtk_widget_show (plug->priv->auth_prompt_kbd_layout_indicator);
+		}
+		else
+		{
+			gtk_widget_hide (plug->priv->auth_prompt_kbd_layout_indicator);
+		}
+
+		g_object_unref (engine);
+	}
+#endif
+
+	if (plug->priv->auth_note_button != NULL)
+	{
+		if (plug->priv->leave_note_enabled)
+		{
+			gtk_widget_show_all (plug->priv->auth_note_button);
+		}
+		else
+		{
+			gtk_widget_hide (plug->priv->auth_note_button);
+		}
+	}
+	if (plug->priv->auth_switch_button != NULL)
+	{
+		if (plug->priv->switch_enabled)
+		{
+			gtk_widget_show_all (plug->priv->auth_switch_button);
+		}
+		else
+		{
+			gtk_widget_hide (plug->priv->auth_switch_button);
+		}
+	}
+
+	gtk_widget_grab_default (plug->priv->auth_unlock_button);
+
+	if (plug->priv->auth_username_label != NULL)
+	{
+		expand_string_for_label (plug->priv->auth_username_label);
+	}
+
+	if (plug->priv->auth_realname_label != NULL)
+	{
+		expand_string_for_label (plug->priv->auth_realname_label);
+	}
+
+	if (! plug->priv->logout_enabled || ! plug->priv->logout_command)
+	{
+		if (plug->priv->auth_logout_button != NULL)
+		{
+			gtk_widget_hide (plug->priv->auth_logout_button);
+		}
+	}
+
+	plug->priv->timeout = DIALOG_TIMEOUT_MSEC;
+
+	g_signal_connect (plug, "key_press_event",
+	                  G_CALLBACK (entry_key_press), plug);
+
+	/* button press handler used to inhibit popup menu */
+	g_signal_connect (plug->priv->auth_prompt_entry, "button_press_event",
+	                  G_CALLBACK (entry_button_press), NULL);
+	gtk_entry_set_activates_default (GTK_ENTRY (plug->priv->auth_prompt_entry), TRUE);
+	gtk_entry_set_visibility (GTK_ENTRY (plug->priv->auth_prompt_entry), FALSE);
+
+	g_signal_connect (plug->priv->auth_unlock_button, "clicked",
+	                  G_CALLBACK (unlock_button_clicked), plug);
+
+	g_signal_connect (plug->priv->auth_cancel_button, "clicked",
+	                  G_CALLBACK (cancel_button_clicked), plug);
+
+	if (plug->priv->status_message_label)
+	{
+		if (plug->priv->status_message)
+		{
+			gtk_label_set_text (GTK_LABEL (plug->priv->status_message_label),
+			                    plug->priv->status_message);
+		}
+		else
+		{
+			gtk_widget_hide (plug->priv->status_message_label);
+		}
+	}
+
+	if (plug->priv->auth_switch_button != NULL)
+	{
+		g_signal_connect (plug->priv->auth_switch_button, "clicked",
+		                  G_CALLBACK (switch_user_button_clicked), plug);
+	}
+
+	if (plug->priv->auth_note_button != NULL)
+	{
+		g_signal_connect (plug->priv->auth_note_button, "clicked",
+		                  G_CALLBACK (take_note), plug);
+		g_signal_connect (plug->priv->note_ok_button, "clicked",
+		                  G_CALLBACK (submit_note), plug);
+		g_signal_connect (plug->priv->note_cancel_button, "clicked",
+		                  G_CALLBACK (cancel_note), plug);
+	}
+
+	if (plug->priv->note_tab_label != NULL)
+	{
+		expand_string_for_label (plug->priv->note_tab_label);
+	}
+
+	if (plug->priv->auth_logout_button != NULL)
+	{
+		g_signal_connect (plug->priv->auth_logout_button, "clicked",
+		                  G_CALLBACK (logout_button_clicked), plug);
+	}
+
+	g_signal_connect (plug, "delete_event", G_CALLBACK (delete_handler), NULL);
+
+	gs_profile_end (NULL);
+}
+
+static void
+gs_lock_plug_finalize (GObject *object)
+{
+	GSLockPlug *plug;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_LOCK_PLUG (object));
+
+	plug = GS_LOCK_PLUG (object);
+
+	g_return_if_fail (plug->priv != NULL);
+
+	g_free (plug->priv->logout_command);
+
+	remove_response_idle (plug);
+	remove_cancel_timeout (plug);
+
+	G_OBJECT_CLASS (gs_lock_plug_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gs_lock_plug_new (void)
+{
+	GtkWidget *result;
+
+	result = g_object_new (GS_TYPE_LOCK_PLUG, NULL);
+
+	gtk_window_set_focus_on_map (GTK_WINDOW (result), TRUE);
+
+	return result;
+}
diff --git a/src/gs-lock-plug.c.orig b/src/gs-lock-plug.c.orig
new file mode 100644
index 0000000..6b5856c
--- /dev/null
+++ b/src/gs-lock-plug.c.orig
@@ -0,0 +1,2050 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/utsname.h>
+
+#include <glib/gprintf.h>
+#include <glib/gstdio.h>
+#include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdkx.h>
+#include <X11/XKBlib.h>
+#include <gtk/gtk.h>
+#include <mateconf/mateconf-client.h>
+
+#ifdef WITH_KBD_LAYOUT_INDICATOR
+#include <libmatekbd/matekbd-indicator.h>
+#endif
+
+#ifdef WITH_LIBMATENOTIFY
+#include <libmatenotify/notify.h>
+#endif
+
+#include "gs-lock-plug.h"
+
+#include "gs-debug.h"
+
+#define KEY_LOCK_DIALOG_THEME "/apps/mate-screensaver/lock_dialog_theme"
+#define MDM_FLEXISERVER_COMMAND "mdmflexiserver"
+#define MDM_FLEXISERVER_ARGS    "--startnew Standard"
+
+/* same as SMS ;) */
+#define NOTE_BUFFER_MAX_CHARS 160
+
+enum
+{
+    AUTH_PAGE = 0,
+};
+
+#define FACE_ICON_SIZE 48
+#define DIALOG_TIMEOUT_MSEC 60000
+
+static void gs_lock_plug_finalize   (GObject         *object);
+
+#define GS_LOCK_PLUG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_LOCK_PLUG, GSLockPlugPrivate))
+
+struct GSLockPlugPrivate
+{
+    GtkWidget   *vbox;
+    GtkWidget   *auth_action_area;
+
+    GtkWidget   *notebook;
+    GtkWidget   *auth_face_image;
+    GtkWidget   *auth_realname_label;
+    GtkWidget   *auth_username_label;
+    GtkWidget   *auth_prompt_label;
+    GtkWidget   *auth_prompt_entry;
+    GtkWidget   *auth_prompt_box;
+    GtkWidget   *auth_capslock_label;
+    GtkWidget   *auth_message_label;
+    GtkWidget   *status_message_label;
+
+    GtkWidget   *auth_unlock_button;
+    GtkWidget   *auth_switch_button;
+    GtkWidget   *auth_cancel_button;
+    GtkWidget   *auth_logout_button;
+    GtkWidget   *auth_note_button;
+    GtkWidget   *note_tab;
+    GtkWidget   *note_tab_label;
+    GtkWidget   *note_text_view;
+    GtkWidget   *note_ok_button;
+    GtkWidget   *note_cancel_button;
+
+    GtkWidget   *auth_prompt_kbd_layout_indicator;
+
+    gboolean     caps_lock_on;
+    gboolean     switch_enabled;
+    gboolean     leave_note_enabled;
+    gboolean     logout_enabled;
+    char        *logout_command;
+    char        *status_message;
+
+    guint        timeout;
+
+    guint        cancel_timeout_id;
+    guint        auth_check_idle_id;
+    guint        response_idle_id;
+
+    GList       *key_events;
+};
+
+typedef struct _ResponseData ResponseData;
+
+struct _ResponseData
+{
+    gint response_id;
+};
+
+
+enum
+{
+    RESPONSE,
+    CLOSE,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0,
+    PROP_LOGOUT_ENABLED,
+    PROP_LOGOUT_COMMAND,
+    PROP_SWITCH_ENABLED,
+    PROP_STATUS_MESSAGE
+};
+
+static guint lock_plug_signals [LAST_SIGNAL];
+
+G_DEFINE_TYPE (GSLockPlug, gs_lock_plug, GTK_TYPE_PLUG)
+
+static void
+gs_lock_plug_style_set (GtkWidget *widget,
+                        GtkStyle  *previous_style)
+{
+    GSLockPlug *plug;
+
+    if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->style_set)
+    {
+        GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->style_set (widget, previous_style);
+    }
+
+    plug = GS_LOCK_PLUG (widget);
+
+    if (! plug->priv->vbox)
+    {
+        return;
+    }
+
+    gtk_container_set_border_width (GTK_CONTAINER (plug->priv->vbox), 12);
+    gtk_box_set_spacing (GTK_BOX (plug->priv->vbox), 12);
+
+    gtk_container_set_border_width (GTK_CONTAINER (plug->priv->auth_action_area), 0);
+    gtk_box_set_spacing (GTK_BOX (plug->priv->auth_action_area), 5);
+}
+
+static void
+do_user_switch (GSLockPlug *plug)
+{
+    GError  *error;
+    gboolean res;
+    char    *command;
+
+    command = g_strdup_printf ("%s %s",
+                               MDM_FLEXISERVER_COMMAND,
+                               MDM_FLEXISERVER_ARGS);
+
+    error = NULL;
+    res = gdk_spawn_command_line_on_screen (gdk_screen_get_default (),
+                                            command,
+                                            &error);
+
+    g_free (command);
+
+    if (! res)
+    {
+        gs_debug ("Unable to start MDM greeter: %s", error->message);
+        g_error_free (error);
+    }
+}
+
+static void
+set_status_text (GSLockPlug *plug,
+                 const char *text)
+{
+    if (plug->priv->auth_message_label != NULL)
+    {
+        gtk_label_set_text (GTK_LABEL (plug->priv->auth_message_label), text);
+    }
+}
+
+void
+gs_lock_plug_set_sensitive (GSLockPlug *plug,
+                            gboolean    sensitive)
+{
+    g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+    gtk_widget_set_sensitive (plug->priv->auth_prompt_entry, sensitive);
+    gtk_widget_set_sensitive (plug->priv->auth_action_area, sensitive);
+}
+
+static void
+remove_cancel_timeout (GSLockPlug *plug)
+{
+    if (plug->priv->cancel_timeout_id > 0)
+    {
+        g_source_remove (plug->priv->cancel_timeout_id);
+        plug->priv->cancel_timeout_id = 0;
+    }
+}
+
+static void
+remove_response_idle (GSLockPlug *plug)
+{
+    if (plug->priv->response_idle_id > 0)
+    {
+        g_source_remove (plug->priv->response_idle_id);
+        plug->priv->response_idle_id = 0;
+    }
+}
+
+static void
+gs_lock_plug_response (GSLockPlug *plug,
+                       gint        response_id)
+{
+    int new_response;
+
+    new_response = response_id;
+
+    g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+    /* Act only on response IDs we recognize */
+    if (!(response_id == GS_LOCK_PLUG_RESPONSE_OK
+            || response_id == GS_LOCK_PLUG_RESPONSE_CANCEL))
+    {
+        return;
+    }
+
+    remove_cancel_timeout (plug);
+    remove_response_idle (plug);
+
+    if (response_id == GS_LOCK_PLUG_RESPONSE_CANCEL)
+    {
+        gtk_entry_set_text (GTK_ENTRY (plug->priv->auth_prompt_entry), "");
+    }
+
+    g_signal_emit (plug,
+                   lock_plug_signals [RESPONSE],
+                   0,
+                   new_response);
+}
+
+static gboolean
+response_cancel_idle_cb (GSLockPlug *plug)
+{
+    plug->priv->response_idle_id = 0;
+
+    gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_CANCEL);
+
+    return FALSE;
+}
+
+static gboolean
+dialog_timed_out (GSLockPlug *plug)
+{
+    gs_lock_plug_set_sensitive (plug, FALSE);
+    set_status_text (plug, _("Time has expired."));
+
+    if (plug->priv->response_idle_id != 0)
+    {
+        g_warning ("Response idle ID already set but shouldn't be");
+    }
+
+    remove_response_idle (plug);
+
+    plug->priv->response_idle_id = g_timeout_add (2000,
+                                   (GSourceFunc)response_cancel_idle_cb,
+                                   plug);
+    return FALSE;
+}
+
+
+static void
+capslock_update (GSLockPlug *plug,
+                 gboolean    is_on)
+{
+
+    plug->priv->caps_lock_on = is_on;
+
+    if (plug->priv->auth_capslock_label == NULL)
+    {
+        return;
+    }
+
+    if (is_on)
+    {
+        gtk_label_set_text (GTK_LABEL (plug->priv->auth_capslock_label),
+                            _("You have the Caps Lock key on."));
+    }
+    else
+    {
+        gtk_label_set_text (GTK_LABEL (plug->priv->auth_capslock_label),
+                            "");
+    }
+}
+
+static gboolean
+is_capslock_on (void)
+{
+    XkbStateRec states;
+    Display    *dsp;
+
+    dsp = GDK_DISPLAY ();
+    if (XkbGetState (dsp, XkbUseCoreKbd, &states) != Success)
+    {
+        return FALSE;
+    }
+
+    return (states.locked_mods & LockMask) != 0;
+}
+
+static void
+restart_cancel_timeout (GSLockPlug *plug)
+{
+    remove_cancel_timeout (plug);
+
+    plug->priv->cancel_timeout_id = g_timeout_add (plug->priv->timeout,
+                                    (GSourceFunc)dialog_timed_out,
+                                    plug);
+}
+
+void
+gs_lock_plug_get_text (GSLockPlug *plug,
+                       char      **text)
+{
+    const char *typed_text;
+    char       *null_text;
+    char       *local_text;
+
+    typed_text = gtk_entry_get_text (GTK_ENTRY (plug->priv->auth_prompt_entry));
+    local_text = g_locale_from_utf8 (typed_text, strlen (typed_text), NULL, NULL, NULL);
+
+    null_text = g_strnfill (strlen (typed_text) + 1, '\b');
+    gtk_entry_set_text (GTK_ENTRY (plug->priv->auth_prompt_entry), null_text);
+    gtk_entry_set_text (GTK_ENTRY (plug->priv->auth_prompt_entry), "");
+    g_free (null_text);
+
+    if (text != NULL)
+    {
+        *text = local_text;
+    }
+}
+
+typedef struct
+{
+    GSLockPlug *plug;
+    gint response_id;
+    GMainLoop *loop;
+    gboolean destroyed;
+} RunInfo;
+
+static void
+shutdown_loop (RunInfo *ri)
+{
+    if (g_main_loop_is_running (ri->loop))
+        g_main_loop_quit (ri->loop);
+}
+
+static void
+run_unmap_handler (GSLockPlug *plug,
+                   gpointer data)
+{
+    RunInfo *ri = data;
+
+    shutdown_loop (ri);
+}
+
+static void
+run_response_handler (GSLockPlug *plug,
+                      gint response_id,
+                      gpointer data)
+{
+    RunInfo *ri;
+
+    ri = data;
+
+    ri->response_id = response_id;
+
+    shutdown_loop (ri);
+}
+
+static gint
+run_delete_handler (GSLockPlug *plug,
+                    GdkEventAny *event,
+                    gpointer data)
+{
+    RunInfo *ri = data;
+
+    shutdown_loop (ri);
+
+    return TRUE; /* Do not destroy */
+}
+
+static void
+run_destroy_handler (GSLockPlug *plug,
+                     gpointer data)
+{
+    RunInfo *ri = data;
+
+    /* shutdown_loop will be called by run_unmap_handler */
+    ri->destroyed = TRUE;
+}
+
+/* adapted from GTK+ gtkdialog.c */
+int
+gs_lock_plug_run (GSLockPlug *plug)
+{
+    RunInfo ri = { NULL, GTK_RESPONSE_NONE, NULL, FALSE };
+    gboolean was_modal;
+    gulong response_handler;
+    gulong unmap_handler;
+    gulong destroy_handler;
+    gulong delete_handler;
+
+    g_return_val_if_fail (GS_IS_LOCK_PLUG (plug), -1);
+
+    g_object_ref (plug);
+
+    was_modal = GTK_WINDOW (plug)->modal;
+    if (!was_modal)
+    {
+        gtk_window_set_modal (GTK_WINDOW (plug), TRUE);
+    }
+
+    if (!GTK_WIDGET_VISIBLE (plug))
+    {
+        gtk_widget_show (GTK_WIDGET (plug));
+    }
+
+    response_handler =
+        g_signal_connect (plug,
+                          "response",
+                          G_CALLBACK (run_response_handler),
+                          &ri);
+
+    unmap_handler =
+        g_signal_connect (plug,
+                          "unmap",
+                          G_CALLBACK (run_unmap_handler),
+                          &ri);
+
+    delete_handler =
+        g_signal_connect (plug,
+                          "delete_event",
+                          G_CALLBACK (run_delete_handler),
+                          &ri);
+
+    destroy_handler =
+        g_signal_connect (plug,
+                          "destroy",
+                          G_CALLBACK (run_destroy_handler),
+                          &ri);
+
+    ri.loop = g_main_loop_new (NULL, FALSE);
+
+    GDK_THREADS_LEAVE ();
+    g_main_loop_run (ri.loop);
+    GDK_THREADS_ENTER ();
+
+    g_main_loop_unref (ri.loop);
+
+    ri.loop = NULL;
+
+    if (!ri.destroyed)
+    {
+        if (! was_modal)
+        {
+            gtk_window_set_modal (GTK_WINDOW (plug), FALSE);
+        }
+
+        g_signal_handler_disconnect (plug, response_handler);
+        g_signal_handler_disconnect (plug, unmap_handler);
+        g_signal_handler_disconnect (plug, delete_handler);
+        g_signal_handler_disconnect (plug, destroy_handler);
+    }
+
+    g_object_unref (plug);
+
+    return ri.response_id;
+}
+
+
+static cairo_surface_t *
+surface_from_pixbuf (GdkPixbuf *pixbuf)
+{
+    cairo_surface_t *surface;
+    cairo_t         *cr;
+
+    surface = cairo_image_surface_create (gdk_pixbuf_get_has_alpha (pixbuf) ?
+                                          CAIRO_FORMAT_ARGB32 : CAIRO_FORMAT_RGB24,
+                                          gdk_pixbuf_get_width (pixbuf),
+                                          gdk_pixbuf_get_height (pixbuf));
+    cr = cairo_create (surface);
+    gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+    cairo_paint (cr);
+    cairo_destroy (cr);
+
+    return surface;
+}
+
+static void
+rounded_rectangle (cairo_t *cr,
+                   gdouble  aspect,
+                   gdouble  x,
+                   gdouble  y,
+                   gdouble  corner_radius,
+                   gdouble  width,
+                   gdouble  height)
+{
+    gdouble radius;
+    gdouble degrees;
+
+    radius = corner_radius / aspect;
+    degrees = G_PI / 180.0;
+
+    cairo_new_sub_path (cr);
+    cairo_arc (cr,
+               x + width - radius,
+               y + radius,
+               radius,
+               -90 * degrees,
+               0 * degrees);
+    cairo_arc (cr,
+               x + width - radius,
+               y + height - radius,
+               radius,
+               0 * degrees,
+               90 * degrees);
+    cairo_arc (cr,
+               x + radius,
+               y + height - radius,
+               radius,
+               90 * degrees,
+               180 * degrees);
+    cairo_arc (cr,
+               x + radius,
+               y + radius,
+               radius,
+               180 * degrees,
+               270 * degrees);
+    cairo_close_path (cr);
+}
+
+static void
+image_set_from_pixbuf (GtkImage  *image,
+                       GdkPixbuf *source)
+{
+    cairo_t         *cr;
+    cairo_t         *cr_mask;
+    cairo_surface_t *surface;
+    GdkPixmap       *pixmap;
+    GdkPixmap       *bitmask;
+    int              w;
+    int              h;
+    int              frame_width;
+    double           radius;
+    GdkColor         color;
+    double           r;
+    double           g;
+    double           b;
+
+    frame_width = 5;
+
+    w = gdk_pixbuf_get_width (source) + frame_width * 2;
+    h = gdk_pixbuf_get_height (source) + frame_width * 2;
+
+    radius = w / 10;
+
+    pixmap = gdk_pixmap_new (GTK_WIDGET (image)->window, w, h, -1);
+    bitmask = gdk_pixmap_new (GTK_WIDGET (image)->window, w, h, 1);
+
+    cr = gdk_cairo_create (pixmap);
+    cr_mask = gdk_cairo_create (bitmask);
+
+    /* setup mask */
+    cairo_rectangle (cr_mask, 0, 0, w, h);
+    cairo_set_operator (cr_mask, CAIRO_OPERATOR_CLEAR);
+    cairo_fill (cr_mask);
+
+    rounded_rectangle (cr_mask, 1.0, 0.5, 0.5, radius, w - 1, h - 1);
+    cairo_set_operator (cr_mask, CAIRO_OPERATOR_OVER);
+    cairo_set_source_rgb (cr_mask, 1, 1, 1);
+    cairo_fill (cr_mask);
+
+    color = GTK_WIDGET (image)->style->bg [GTK_STATE_NORMAL];
+    r = (float)color.red / 65535.0;
+    g = (float)color.green / 65535.0;
+    b = (float)color.blue / 65535.0;
+
+    /* set up image */
+    cairo_rectangle (cr, 0, 0, w, h);
+    cairo_set_source_rgb (cr, r, g, b);
+    cairo_fill (cr);
+
+    rounded_rectangle (cr,
+                       1.0,
+                       frame_width + 0.5,
+                       frame_width + 0.5,
+                       radius,
+                       w - frame_width * 2 - 1,
+                       h - frame_width * 2 - 1);
+    cairo_set_source_rgba (cr, 0.5, 0.5, 0.5, 0.3);
+    cairo_fill_preserve (cr);
+
+    surface = surface_from_pixbuf (source);
+    cairo_set_source_surface (cr, surface, frame_width, frame_width);
+    cairo_fill (cr);
+
+    gtk_image_set_from_pixmap (image, pixmap, bitmask);
+
+    cairo_surface_destroy (surface);
+
+    g_object_unref (bitmask);
+    g_object_unref (pixmap);
+
+    cairo_destroy (cr_mask);
+    cairo_destroy (cr);
+}
+
+
+static gboolean
+check_user_file (const gchar *filename,
+                 uid_t        user,
+                 gssize       max_file_size,
+                 gboolean     relax_group,
+                 gboolean     relax_other)
+{
+    struct stat fileinfo;
+
+    if (max_file_size < 0)
+    {
+        max_file_size = G_MAXSIZE;
+    }
+
+    /* Exists/Readable? */
+    if (g_stat (filename, &fileinfo) < 0)
+    {
+        return FALSE;
+    }
+
+    /* Is a regular file */
+    if (G_UNLIKELY (!S_ISREG (fileinfo.st_mode)))
+    {
+        return FALSE;
+    }
+
+    /* Owned by user? */
+    if (G_UNLIKELY (fileinfo.st_uid != user))
+    {
+        return FALSE;
+    }
+
+    /* Group not writable or relax_group? */
+    if (G_UNLIKELY ((fileinfo.st_mode & S_IWGRP) == S_IWGRP && !relax_group))
+    {
+        return FALSE;
+    }
+
+    /* Other not writable or relax_other? */
+    if (G_UNLIKELY ((fileinfo.st_mode & S_IWOTH) == S_IWOTH && !relax_other))
+    {
+        return FALSE;
+    }
+
+    /* Size is kosher? */
+    if (G_UNLIKELY (fileinfo.st_size > max_file_size))
+    {
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+static gboolean
+set_face_image (GSLockPlug *plug)
+{
+    GdkPixbuf    *pixbuf;
+    const char   *homedir;
+    char         *path;
+    int           icon_size = 96;
+    gsize         user_max_file = 65536;
+    uid_t         uid;
+
+    homedir = g_get_home_dir ();
+    uid = getuid ();
+
+    path = g_build_filename (homedir, ".face", NULL);
+
+    pixbuf = NULL;
+    if (check_user_file (path, uid, user_max_file, 0, 0))
+    {
+        pixbuf = gdk_pixbuf_new_from_file_at_size (path,
+                 icon_size,
+                 icon_size,
+                 NULL);
+    }
+
+    g_free (path);
+
+    if (pixbuf == NULL)
+    {
+        return FALSE;
+    }
+
+    image_set_from_pixbuf (GTK_IMAGE (plug->priv->auth_face_image), pixbuf);
+
+    g_object_unref (pixbuf);
+
+    return TRUE;
+}
+
+static void
+gs_lock_plug_show (GtkWidget *widget)
+{
+    GSLockPlug *plug = GS_LOCK_PLUG (widget);
+
+    gs_profile_start (NULL);
+
+    gs_profile_start ("parent");
+    if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->show)
+    {
+        GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->show (widget);
+    }
+
+    gs_profile_end ("parent");
+
+
+    if (plug->priv->auth_face_image)
+    {
+        set_face_image (plug);
+    }
+
+    capslock_update (plug, is_capslock_on ());
+
+    restart_cancel_timeout (plug);
+
+    gs_profile_end (NULL);
+}
+
+static void
+gs_lock_plug_hide (GtkWidget *widget)
+{
+    if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->hide)
+    {
+        GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->hide (widget);
+    }
+}
+
+static void
+queue_key_event (GSLockPlug  *plug,
+                 GdkEventKey *event)
+{
+    GdkEvent *saved_event;
+
+    saved_event = gdk_event_copy ((GdkEvent *)event);
+    plug->priv->key_events = g_list_prepend (plug->priv->key_events,
+                             saved_event);
+}
+
+static void
+forward_key_events (GSLockPlug *plug)
+{
+    plug->priv->key_events = g_list_reverse (plug->priv->key_events);
+    while (plug->priv->key_events != NULL)
+    {
+        GdkEventKey *event = plug->priv->key_events->data;
+
+        gtk_window_propagate_key_event (GTK_WINDOW (plug), event);
+
+        gdk_event_free ((GdkEvent *)event);
+
+        plug->priv->key_events = g_list_delete_link (plug->priv->key_events,
+                                 plug->priv->key_events);
+    }
+}
+
+static void
+gs_lock_plug_size_request (GtkWidget      *widget,
+                           GtkRequisition *requisition)
+{
+    GSLockPlug *plug = GS_LOCK_PLUG (widget);
+    int mod_width;
+    int mod_height;
+
+    if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->size_request)
+    {
+        GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->size_request (widget, requisition);
+    }
+
+    /* don't constrain size when themed */
+    if (plug->priv->vbox == NULL)
+    {
+        return;
+    }
+
+    mod_width = requisition->height * 1.3;
+    mod_height = requisition->width / 1.6;
+    if (requisition->width < mod_width)
+    {
+        /* if the dialog is tall fill out the width */
+        requisition->width = mod_width;
+    }
+    else if (requisition->height < mod_height)
+    {
+        /* if the dialog is wide fill out the height */
+        requisition->height = mod_height;
+    }
+}
+
+static void
+gs_lock_plug_set_logout_enabled (GSLockPlug *plug,
+                                 gboolean    logout_enabled)
+{
+    g_return_if_fail (GS_LOCK_PLUG (plug));
+
+    if (plug->priv->logout_enabled == logout_enabled)
+    {
+        return;
+    }
+
+    plug->priv->logout_enabled = logout_enabled;
+    g_object_notify (G_OBJECT (plug), "logout-enabled");
+
+    if (plug->priv->auth_logout_button == NULL)
+    {
+        return;
+    }
+
+    if (logout_enabled)
+    {
+        gtk_widget_show (plug->priv->auth_logout_button);
+    }
+    else
+    {
+        gtk_widget_hide (plug->priv->auth_logout_button);
+    }
+}
+
+static void
+gs_lock_plug_set_logout_command (GSLockPlug *plug,
+                                 const char *command)
+{
+    g_return_if_fail (GS_LOCK_PLUG (plug));
+
+    g_free (plug->priv->logout_command);
+
+    if (command)
+    {
+        plug->priv->logout_command = g_strdup (command);
+    }
+    else
+    {
+        plug->priv->logout_command = NULL;
+    }
+}
+
+static gboolean
+is_program_in_path (const char *program)
+{
+    char *tmp = g_find_program_in_path (program);
+    if (tmp != NULL)
+    {
+        g_free (tmp);
+        return TRUE;
+    }
+    else
+    {
+        return FALSE;
+    }
+}
+
+static void
+gs_lock_plug_set_status_message (GSLockPlug *plug,
+                                 const char *status_message)
+{
+    g_return_if_fail (GS_LOCK_PLUG (plug));
+
+    g_free (plug->priv->status_message);
+    plug->priv->status_message = g_strdup (status_message);
+
+    if (plug->priv->status_message_label)
+    {
+        if (plug->priv->status_message)
+        {
+            gtk_label_set_text (GTK_LABEL (plug->priv->status_message_label),
+                                plug->priv->status_message);
+            gtk_widget_show (plug->priv->status_message_label);
+        }
+        else
+        {
+            gtk_widget_hide (plug->priv->status_message_label);
+        }
+    }
+}
+
+static void
+gs_lock_plug_get_property (GObject    *object,
+                           guint       prop_id,
+                           GValue     *value,
+                           GParamSpec *pspec)
+{
+    GSLockPlug *self;
+
+    self = GS_LOCK_PLUG (object);
+
+    switch (prop_id)
+    {
+    case PROP_LOGOUT_ENABLED:
+        g_value_set_boolean (value, self->priv->logout_enabled);
+        break;
+    case PROP_LOGOUT_COMMAND:
+        g_value_set_string (value, self->priv->logout_command);
+        break;
+    case PROP_SWITCH_ENABLED:
+        g_value_set_boolean (value, self->priv->switch_enabled);
+        break;
+    case PROP_STATUS_MESSAGE:
+        g_value_set_string (value, self->priv->status_message);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_lock_plug_set_switch_enabled (GSLockPlug *plug,
+                                 gboolean    switch_enabled)
+{
+    g_return_if_fail (GS_LOCK_PLUG (plug));
+
+    if (plug->priv->switch_enabled == switch_enabled)
+    {
+        return;
+    }
+
+    plug->priv->switch_enabled = switch_enabled;
+    g_object_notify (G_OBJECT (plug), "switch-enabled");
+
+    if (plug->priv->auth_switch_button == NULL)
+    {
+        return;
+    }
+
+    if (switch_enabled)
+    {
+        gboolean found;
+        found = is_program_in_path (MDM_FLEXISERVER_COMMAND);
+        if (found)
+        {
+            gtk_widget_show (plug->priv->auth_switch_button);
+        }
+        else
+        {
+            gs_debug ("Waring: MDM flexiserver command not found: %s", MDM_FLEXISERVER_COMMAND);
+            gtk_widget_hide (plug->priv->auth_switch_button);
+        }
+    }
+    else
+    {
+        gtk_widget_hide (plug->priv->auth_switch_button);
+    }
+}
+
+static void
+gs_lock_plug_set_property (GObject            *object,
+                           guint               prop_id,
+                           const GValue       *value,
+                           GParamSpec         *pspec)
+{
+    GSLockPlug *self;
+
+    self = GS_LOCK_PLUG (object);
+
+    switch (prop_id)
+    {
+    case PROP_LOGOUT_ENABLED:
+        gs_lock_plug_set_logout_enabled (self, g_value_get_boolean (value));
+        break;
+    case PROP_LOGOUT_COMMAND:
+        gs_lock_plug_set_logout_command (self, g_value_get_string (value));
+        break;
+    case PROP_STATUS_MESSAGE:
+        gs_lock_plug_set_status_message (self, g_value_get_string (value));
+        break;
+    case PROP_SWITCH_ENABLED:
+        gs_lock_plug_set_switch_enabled (self, g_value_get_boolean (value));
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_lock_plug_close (GSLockPlug *plug)
+{
+    /* Synthesize delete_event to close dialog. */
+
+    GtkWidget *widget = GTK_WIDGET (plug);
+    GdkEvent  *event;
+
+    event = gdk_event_new (GDK_DELETE);
+    event->any.window = g_object_ref (widget->window);
+    event->any.send_event = TRUE;
+
+    gtk_main_do_event (event);
+    gdk_event_free (event);
+}
+
+static void
+gs_lock_plug_class_init (GSLockPlugClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+    GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+    GtkBindingSet  *binding_set;
+
+    object_class->finalize     = gs_lock_plug_finalize;
+    object_class->get_property = gs_lock_plug_get_property;
+    object_class->set_property = gs_lock_plug_set_property;
+
+    widget_class->style_set    = gs_lock_plug_style_set;
+    widget_class->show         = gs_lock_plug_show;
+    widget_class->hide         = gs_lock_plug_hide;
+    widget_class->size_request = gs_lock_plug_size_request;
+
+    klass->close = gs_lock_plug_close;
+
+    g_type_class_add_private (klass, sizeof (GSLockPlugPrivate));
+
+    lock_plug_signals [RESPONSE] = g_signal_new ("response",
+                                   G_OBJECT_CLASS_TYPE (klass),
+                                   G_SIGNAL_RUN_LAST,
+                                   G_STRUCT_OFFSET (GSLockPlugClass, response),
+                                   NULL, NULL,
+                                   g_cclosure_marshal_VOID__INT,
+                                   G_TYPE_NONE, 1,
+                                   G_TYPE_INT);
+    lock_plug_signals [CLOSE] = g_signal_new ("close",
+                                G_OBJECT_CLASS_TYPE (klass),
+                                G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+                                G_STRUCT_OFFSET (GSLockPlugClass, close),
+                                NULL, NULL,
+                                g_cclosure_marshal_VOID__VOID,
+                                G_TYPE_NONE, 0);
+
+    g_object_class_install_property (object_class,
+                                     PROP_LOGOUT_ENABLED,
+                                     g_param_spec_boolean ("logout-enabled",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOGOUT_COMMAND,
+                                     g_param_spec_string ("logout-command",
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_STATUS_MESSAGE,
+                                     g_param_spec_string ("status-message",
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_SWITCH_ENABLED,
+                                     g_param_spec_boolean ("switch-enabled",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+
+    binding_set = gtk_binding_set_by_class (klass);
+
+    gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0,
+                                  "close", 0);
+}
+
+static void
+clear_clipboards (GSLockPlug *plug)
+{
+    GtkClipboard *clipboard;
+
+    clipboard = gtk_widget_get_clipboard (GTK_WIDGET (plug), GDK_SELECTION_PRIMARY);
+    gtk_clipboard_clear (clipboard);
+    gtk_clipboard_set_text (clipboard, "", -1);
+    clipboard = gtk_widget_get_clipboard (GTK_WIDGET (plug), GDK_SELECTION_CLIPBOARD);
+    gtk_clipboard_clear (clipboard);
+    gtk_clipboard_set_text (clipboard, "", -1);
+}
+
+static void
+take_note (GtkButton  *button,
+           GSLockPlug *plug)
+{
+    int page;
+
+    page = gtk_notebook_page_num (GTK_NOTEBOOK (plug->priv->notebook), plug->priv->note_tab);
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (plug->priv->notebook), page);
+    /* this counts as activity so restart the timer */
+    restart_cancel_timeout (plug);
+}
+
+static void
+submit_note (GtkButton  *button,
+             GSLockPlug *plug)
+{
+#ifdef WITH_LIBMATENOTIFY
+    char               *text;
+    char                summary[128];
+    char               *escaped_text;
+    GtkTextBuffer      *buffer;
+    GtkTextIter         start, end;
+    time_t              t;
+    struct tm          *tmp;
+    NotifyNotification *note;
+
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (plug->priv->notebook), AUTH_PAGE);
+    buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (plug->priv->note_text_view));
+    gtk_text_buffer_get_bounds (buffer, &start, &end);
+    text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+    gtk_text_buffer_set_text (buffer, "", 0);
+    escaped_text = g_markup_escape_text (text, -1);
+
+    t = time (NULL);
+    tmp = localtime (&t);
+    strftime (summary, 128, "%X", tmp);
+
+    notify_init ("mate-screensaver-dialog");
+    note = notify_notification_new (summary, escaped_text, NULL, NULL);
+    notify_notification_set_timeout (note, NOTIFY_EXPIRES_NEVER);
+    notify_notification_show (note, NULL);
+    g_object_unref (note);
+
+    g_free (text);
+    g_free (escaped_text);
+
+    gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_CANCEL);
+#endif /* WITH_LIBMATENOTIFY */
+}
+
+static void
+cancel_note (GtkButton  *button,
+             GSLockPlug *plug)
+{
+    GtkTextBuffer *buffer;
+
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (plug->priv->notebook), AUTH_PAGE);
+    buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (plug->priv->note_text_view));
+    gtk_text_buffer_set_text (buffer, "", 0);
+
+    /* this counts as activity so restart the timer */
+    restart_cancel_timeout (plug);
+
+    gtk_window_set_default (GTK_WINDOW (plug), plug->priv->auth_unlock_button);
+
+    clear_clipboards (plug);
+}
+
+static void
+logout_button_clicked (GtkButton  *button,
+                       GSLockPlug *plug)
+{
+    char   **argv  = NULL;
+    GError  *error = NULL;
+    gboolean res;
+
+    if (! plug->priv->logout_command)
+    {
+        return;
+    }
+
+    res = g_shell_parse_argv (plug->priv->logout_command, NULL, &argv, &error);
+
+    if (! res)
+    {
+        g_warning ("Could not parse logout command: %s", error->message);
+        g_error_free (error);
+        return;
+    }
+
+    g_spawn_async (g_get_home_dir (),
+                   argv,
+                   NULL,
+                   G_SPAWN_SEARCH_PATH,
+                   NULL,
+                   NULL,
+                   NULL,
+                   &error);
+
+    g_strfreev (argv);
+
+    if (error)
+    {
+        g_warning ("Could not run logout command: %s", error->message);
+        g_error_free (error);
+    }
+}
+
+void
+gs_lock_plug_set_busy (GSLockPlug *plug)
+{
+    GdkCursor *cursor;
+    GtkWidget *top_level;
+
+    top_level = gtk_widget_get_toplevel (GTK_WIDGET (plug));
+
+    cursor = gdk_cursor_new (GDK_WATCH);
+    gdk_window_set_cursor (top_level->window, cursor);
+    gdk_cursor_unref (cursor);
+}
+
+void
+gs_lock_plug_set_ready (GSLockPlug *plug)
+{
+    GdkCursor *cursor;
+    GtkWidget *top_level;
+
+    top_level = gtk_widget_get_toplevel (GTK_WIDGET (plug));
+
+    cursor = gdk_cursor_new (GDK_LEFT_PTR);
+    gdk_window_set_cursor (top_level->window, cursor);
+    gdk_cursor_unref (cursor);
+}
+
+void
+gs_lock_plug_enable_prompt (GSLockPlug *plug,
+                            const char *message,
+                            gboolean    visible)
+{
+    g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+    gs_debug ("Setting prompt to: %s", message);
+
+    gtk_widget_set_sensitive (plug->priv->auth_unlock_button, TRUE);
+    gtk_widget_show (plug->priv->auth_unlock_button);
+    gtk_widget_grab_default (plug->priv->auth_unlock_button);
+    gtk_label_set_text (GTK_LABEL (plug->priv->auth_prompt_label), message);
+    gtk_widget_show (plug->priv->auth_prompt_label);
+    gtk_entry_set_visibility (GTK_ENTRY (plug->priv->auth_prompt_entry), visible);
+    gtk_widget_set_sensitive (plug->priv->auth_prompt_entry, TRUE);
+    gtk_widget_show (plug->priv->auth_prompt_entry);
+
+    if (! GTK_WIDGET_HAS_FOCUS (plug->priv->auth_prompt_entry))
+    {
+        gtk_widget_grab_focus (plug->priv->auth_prompt_entry);
+    }
+
+    /* were there any key events sent to the plug while the
+     * entry wasnt ready? If so, forward them along
+     */
+    forward_key_events (plug);
+
+    restart_cancel_timeout (plug);
+}
+
+void
+gs_lock_plug_disable_prompt (GSLockPlug *plug)
+{
+    g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+    /* gtk_widget_hide (plug->priv->auth_prompt_entry); */
+    /* gtk_widget_hide (plug->priv->auth_prompt_label); */
+    gtk_widget_set_sensitive (plug->priv->auth_unlock_button, FALSE);
+    gtk_widget_set_sensitive (plug->priv->auth_prompt_entry, FALSE);
+    /* gtk_widget_hide (plug->priv->auth_unlock_button); */
+
+    gtk_widget_grab_default (plug->priv->auth_cancel_button);
+}
+
+void
+gs_lock_plug_show_message (GSLockPlug *plug,
+                           const char *message)
+{
+    g_return_if_fail (GS_IS_LOCK_PLUG (plug));
+
+    set_status_text (plug, message ? message : "");
+}
+
+/* button press handler used to inhibit popup menu */
+static gint
+entry_button_press (GtkWidget      *widget,
+                    GdkEventButton *event)
+{
+    if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
+    {
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+static gint
+entry_key_press (GtkWidget   *widget,
+                 GdkEventKey *event,
+                 GSLockPlug  *plug)
+{
+    gboolean capslock_on;
+
+    restart_cancel_timeout (plug);
+
+    capslock_on = is_capslock_on ();
+
+    if (capslock_on != plug->priv->caps_lock_on)
+    {
+        capslock_update (plug, capslock_on);
+    }
+
+    /* if the input widget is visible and ready for input
+     * then just carry on as usual
+     */
+    if (GTK_WIDGET_VISIBLE (plug->priv->auth_prompt_entry) &&
+            GTK_WIDGET_IS_SENSITIVE (plug->priv->auth_prompt_entry))
+    {
+        return FALSE;
+    }
+
+    if (strcmp (event->string, "") == 0)
+    {
+        return FALSE;
+    }
+
+    queue_key_event (plug, event);
+
+    return TRUE;
+}
+
+/* adapted from gtk_dialog_add_button */
+static GtkWidget *
+gs_lock_plug_add_button (GSLockPlug  *plug,
+                         GtkWidget   *action_area,
+                         const gchar *button_text)
+{
+    GtkWidget *button;
+
+    g_return_val_if_fail (GS_IS_LOCK_PLUG (plug), NULL);
+    g_return_val_if_fail (button_text != NULL, NULL);
+
+    button = gtk_button_new_from_stock (button_text);
+
+    GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+
+    gtk_widget_show (button);
+
+    gtk_box_pack_end (GTK_BOX (action_area),
+                      button,
+                      FALSE, TRUE, 0);
+
+    return button;
+}
+
+static char *
+get_user_display_name (void)
+{
+    const char *name;
+    char       *utf8_name;
+
+    name = g_get_real_name ();
+
+    if (name == NULL || strcmp (name, "Unknown") == 0)
+    {
+        name = g_get_user_name ();
+    }
+
+    utf8_name = NULL;
+
+    if (name != NULL)
+    {
+        utf8_name = g_locale_to_utf8 (name, -1, NULL, NULL, NULL);
+    }
+
+    return utf8_name;
+}
+
+static char *
+get_user_name (void)
+{
+    const char *name;
+    char       *utf8_name;
+
+    name = g_get_user_name ();
+
+    utf8_name = NULL;
+    if (name != NULL)
+    {
+        utf8_name = g_locale_to_utf8 (name, -1, NULL, NULL, NULL);
+    }
+
+    return utf8_name;
+}
+
+static void
+create_page_one_buttons (GSLockPlug *plug)
+{
+
+    gs_profile_start ("page one buttons");
+
+    plug->priv->auth_switch_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),
+                                      plug->priv->auth_action_area,
+                                      _("S_witch User..."));
+    gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (plug->priv->auth_action_area),
+                                        plug->priv->auth_switch_button,
+                                        TRUE);
+    gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_switch_button), FALSE);
+    gtk_widget_set_no_show_all (plug->priv->auth_switch_button, TRUE);
+
+    plug->priv->auth_logout_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),
+                                      plug->priv->auth_action_area,
+                                      _("Log _Out"));
+    gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_logout_button), FALSE);
+    gtk_widget_set_no_show_all (plug->priv->auth_logout_button, TRUE);
+
+    plug->priv->auth_cancel_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),
+                                      plug->priv->auth_action_area,
+                                      GTK_STOCK_CANCEL);
+    gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_cancel_button), FALSE);
+
+    plug->priv->auth_unlock_button =  gs_lock_plug_add_button (GS_LOCK_PLUG (plug),
+                                      plug->priv->auth_action_area,
+                                      _("_Unlock"));
+    gtk_button_set_focus_on_click (GTK_BUTTON (plug->priv->auth_unlock_button), FALSE);
+
+    gtk_window_set_default (GTK_WINDOW (plug), plug->priv->auth_unlock_button);
+
+    gs_profile_end ("page one buttons");
+}
+
+/* adapted from MDM */
+static char *
+expand_string (const char *text)
+{
+    GString       *str;
+    const char    *p;
+    char          *username;
+    int            i;
+    int            n_chars;
+    struct utsname name;
+
+    str = g_string_sized_new (strlen (text));
+
+    p = text;
+    n_chars = g_utf8_strlen (text, -1);
+    i = 0;
+
+    while (i < n_chars)
+    {
+        gunichar ch;
+
+        ch = g_utf8_get_char (p);
+
+        /* Backslash commands */
+        if (ch == '\\')
+        {
+            p = g_utf8_next_char (p);
+            i++;
+            ch = g_utf8_get_char (p);
+
+            if (i >= n_chars || ch == '\0')
+            {
+                g_warning ("Unescaped \\ at end of text\n");
+                goto bail;
+            }
+            else if (ch == 'n')
+            {
+                g_string_append_unichar (str, '\n');
+            }
+            else
+            {
+                g_string_append_unichar (str, ch);
+            }
+        }
+        else if (ch == '%')
+        {
+            p = g_utf8_next_char (p);
+            i++;
+            ch = g_utf8_get_char (p);
+
+            if (i >= n_chars || ch == '\0')
+            {
+                g_warning ("Unescaped %% at end of text\n");
+                goto bail;
+            }
+
+            switch (ch)
+            {
+            case '%':
+                g_string_append (str, "%");
+                break;
+            case 'c':
+                /* clock */
+                break;
+            case 'd':
+                /* display */
+                g_string_append (str, g_getenv ("DISPLAY"));
+                break;
+            case 'h':
+                /* hostname */
+                g_string_append (str, g_get_host_name ());
+                break;
+            case 'm':
+                /* machine name */
+                uname (&name);
+                g_string_append (str, name.machine);
+                break;
+            case 'n':
+                /* nodename */
+                uname (&name);
+                g_string_append (str, name.nodename);
+                break;
+            case 'r':
+                /* release */
+                uname (&name);
+                g_string_append (str, name.release);
+                break;
+            case 'R':
+                /* Real name */
+                username = get_user_display_name ();
+                g_string_append (str, username);
+                g_free (username);
+                break;
+            case 's':
+                /* system name */
+                uname (&name);
+                g_string_append (str, name.sysname);
+                break;
+            case 'U':
+                /* Username */
+                username = get_user_name ();
+                g_string_append (str, username);
+                g_free (username);
+                break;
+            default:
+                if (ch < 127)
+                {
+                    g_warning ("unknown escape code %%%c in text\n", (char)ch);
+                }
+                else
+                {
+                    g_warning ("unknown escape code %%(U%x) in text\n", (int)ch);
+                }
+            }
+        }
+        else
+        {
+            g_string_append_unichar (str, ch);
+        }
+        p = g_utf8_next_char (p);
+        i++;
+    }
+
+bail:
+
+    return g_string_free (str, FALSE);
+}
+
+static void
+expand_string_for_label (GtkWidget *label)
+{
+    const char *template;
+    char       *str;
+
+    template = gtk_label_get_label (GTK_LABEL (label));
+    str = expand_string (template);
+    gtk_label_set_label (GTK_LABEL (label), str);
+    g_free (str);
+}
+
+static void
+create_page_one (GSLockPlug *plug)
+{
+    GtkWidget            *align;
+    GtkWidget            *vbox;
+    GtkWidget            *vbox2;
+    GtkWidget            *hbox;
+    char                 *str;
+
+    gs_profile_start ("page one");
+
+    align = gtk_alignment_new (0.5, 0.5, 1, 1);
+    gtk_notebook_append_page (GTK_NOTEBOOK (plug->priv->notebook), align, NULL);
+
+    vbox = gtk_vbox_new (FALSE, 12);
+    gtk_container_add (GTK_CONTAINER (align), vbox);
+
+    plug->priv->auth_face_image = gtk_image_new ();
+    gtk_box_pack_start (GTK_BOX (vbox), plug->priv->auth_face_image, TRUE, TRUE, 0);
+    gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_face_image), 0.5, 1.0);
+
+    vbox2 = gtk_vbox_new (FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (vbox), vbox2, FALSE, FALSE, 0);
+
+    str = g_strdup ("<span size=\"x-large\">%R</span>");
+    plug->priv->auth_realname_label = gtk_label_new (str);
+    g_free (str);
+    expand_string_for_label (plug->priv->auth_realname_label);
+    gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_realname_label), 0.5, 0.5);
+    gtk_label_set_use_markup (GTK_LABEL (plug->priv->auth_realname_label), TRUE);
+    gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_realname_label, FALSE, FALSE, 0);
+
+    /* To translators: This expands to USERNAME on HOSTNAME */
+    str = g_strdup_printf ("<span size=\"small\">%s</span>", _("%U on %h"));
+    plug->priv->auth_username_label = gtk_label_new (str);
+    g_free (str);
+    expand_string_for_label (plug->priv->auth_username_label);
+    gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_username_label), 0.5, 0.5);
+    gtk_label_set_use_markup (GTK_LABEL (plug->priv->auth_username_label), TRUE);
+    gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_username_label, FALSE, FALSE, 0);
+
+    vbox2 = gtk_vbox_new (FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (vbox), vbox2, TRUE, TRUE, 0);
+
+    hbox = gtk_hbox_new (FALSE, 6);
+    gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0);
+
+    plug->priv->auth_prompt_label = gtk_label_new_with_mnemonic (_("_Password:"));
+    gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_prompt_label), 0, 0.5);
+    gtk_box_pack_start (GTK_BOX (hbox), plug->priv->auth_prompt_label, FALSE, FALSE, 0);
+
+    plug->priv->auth_prompt_entry = gtk_entry_new ();
+    gtk_box_pack_start (GTK_BOX (hbox), plug->priv->auth_prompt_entry, TRUE, TRUE, 0);
+
+    gtk_label_set_mnemonic_widget (GTK_LABEL (plug->priv->auth_prompt_label),
+                                   plug->priv->auth_prompt_entry);
+
+    plug->priv->auth_capslock_label = gtk_label_new ("");
+    gtk_misc_set_alignment (GTK_MISC (plug->priv->auth_capslock_label), 0.5, 0.5);
+    gtk_box_pack_start (GTK_BOX (vbox2), plug->priv->auth_capslock_label, FALSE, FALSE, 0);
+
+    /* Status text */
+
+    plug->priv->auth_message_label = gtk_label_new (NULL);
+    gtk_box_pack_start (GTK_BOX (vbox), plug->priv->auth_message_label,
+                        FALSE, FALSE, 0);
+    /* Buttons */
+    plug->priv->auth_action_area = gtk_hbutton_box_new ();
+
+    gtk_button_box_set_layout (GTK_BUTTON_BOX (plug->priv->auth_action_area),
+                               GTK_BUTTONBOX_END);
+
+    gtk_box_pack_end (GTK_BOX (vbox), plug->priv->auth_action_area,
+                      FALSE, TRUE, 0);
+    gtk_widget_show (plug->priv->auth_action_area);
+
+    create_page_one_buttons (plug);
+
+    gs_profile_end ("page one");
+}
+
+static void
+unlock_button_clicked (GtkButton  *button,
+                       GSLockPlug *plug)
+{
+    gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_OK);
+}
+
+static void
+cancel_button_clicked (GtkButton  *button,
+                       GSLockPlug *plug)
+{
+    gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_CANCEL);
+}
+
+static void
+switch_user_button_clicked (GtkButton  *button,
+                            GSLockPlug *plug)
+{
+
+    remove_response_idle (plug);
+
+    gs_lock_plug_set_sensitive (plug, FALSE);
+
+    plug->priv->response_idle_id = g_timeout_add (2000,
+            (GSourceFunc)response_cancel_idle_cb,
+            plug);
+
+    gs_lock_plug_set_busy (plug);
+    do_user_switch (plug);
+}
+
+static char *
+get_dialog_theme_name (GSLockPlug *plug)
+{
+    char        *name;
+    MateConfClient *client;
+
+    client = mateconf_client_get_default ();
+    name = mateconf_client_get_string (client, KEY_LOCK_DIALOG_THEME, NULL);
+    g_object_unref (client);
+
+    return name;
+}
+
+static gboolean
+load_theme (GSLockPlug *plug)
+{
+    char       *theme;
+    char       *filename;
+    char       *gtkbuilder;
+    char       *rc;
+    GtkBuilder *builder;
+    GtkWidget  *lock_dialog;
+    GError     *error=NULL;
+
+    theme = get_dialog_theme_name (plug);
+    if (theme == NULL)
+    {
+        return FALSE;
+    }
+
+    filename = g_strdup_printf ("lock-dialog-%s.ui", theme);
+    gtkbuilder = g_build_filename (GTKBUILDERDIR, filename, NULL);
+    g_free (filename);
+    if (! g_file_test (gtkbuilder, G_FILE_TEST_IS_REGULAR))
+    {
+        g_free (gtkbuilder);
+        g_free (theme);
+        return FALSE;
+    }
+
+    filename = g_strdup_printf ("lock-dialog-%s.gtkrc", theme);
+    g_free (theme);
+
+    rc = g_build_filename (GTKBUILDERDIR, filename, NULL);
+    g_free (filename);
+    if (g_file_test (rc, G_FILE_TEST_IS_REGULAR))
+    {
+        gtk_rc_parse (rc);
+    }
+    g_free (rc);
+
+    builder = gtk_builder_new();
+
+    if (!gtk_builder_add_from_file (builder,gtkbuilder,&error))
+    {
+        g_warning ("Couldn't load builder file '%s': %s", gtkbuilder, error->message);
+        g_error_free(error);
+        g_free (gtkbuilder);
+        return FALSE;
+    }
+    g_free (gtkbuilder);
+
+    lock_dialog = GTK_WIDGET (gtk_builder_get_object(builder, "lock-dialog"));
+    gtk_container_add (GTK_CONTAINER (plug), lock_dialog);
+
+    plug->priv->vbox = NULL;
+    plug->priv->notebook = GTK_WIDGET (gtk_builder_get_object(builder, "notebook"));
+
+    plug->priv->auth_face_image = GTK_WIDGET (gtk_builder_get_object(builder, "auth-face-image"));
+    plug->priv->auth_action_area = GTK_WIDGET (gtk_builder_get_object(builder, "auth-action-area"));
+    plug->priv->auth_realname_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-realname-label"));
+    plug->priv->auth_username_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-username-label"));
+    plug->priv->auth_prompt_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-label"));
+    plug->priv->auth_prompt_entry = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-entry"));
+    plug->priv->auth_prompt_box = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-box"));
+    plug->priv->auth_capslock_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-capslock-label"));
+    plug->priv->auth_message_label = GTK_WIDGET (gtk_builder_get_object(builder, "auth-status-label"));
+    plug->priv->auth_unlock_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-unlock-button"));
+    plug->priv->auth_cancel_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-cancel-button"));
+    plug->priv->auth_logout_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-logout-button"));
+    plug->priv->auth_switch_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-switch-button"));
+    plug->priv->auth_note_button = GTK_WIDGET (gtk_builder_get_object(builder, "auth-note-button"));
+    plug->priv->note_tab = GTK_WIDGET (gtk_builder_get_object(builder, "note-tab"));
+    plug->priv->note_tab_label = GTK_WIDGET (gtk_builder_get_object(builder, "note-tab-label"));
+    plug->priv->note_ok_button = GTK_WIDGET (gtk_builder_get_object(builder, "note-ok-button"));
+    plug->priv->note_text_view = GTK_WIDGET (gtk_builder_get_object(builder, "note-text-view"));
+    plug->priv->note_cancel_button = GTK_WIDGET (gtk_builder_get_object(builder, "note-cancel-button"));
+
+    /* Placeholder for the keyboard indicator */
+    plug->priv->auth_prompt_kbd_layout_indicator = GTK_WIDGET (gtk_builder_get_object(builder, "auth-prompt-kbd-layout-indicator"));
+    if (plug->priv->auth_logout_button != NULL)
+    {
+        gtk_widget_set_no_show_all (plug->priv->auth_logout_button, TRUE);
+    }
+    if (plug->priv->auth_switch_button != NULL)
+    {
+        gtk_widget_set_no_show_all (plug->priv->auth_switch_button, TRUE);
+    }
+    if (plug->priv->auth_note_button != NULL)
+    {
+        gtk_widget_set_no_show_all (plug->priv->auth_note_button, TRUE);
+    }
+
+    gtk_widget_show_all (lock_dialog);
+
+    plug->priv->status_message_label = GTK_WIDGET (gtk_builder_get_object(builder, "status-message-label"));
+
+    return TRUE;
+}
+
+static int
+delete_handler (GSLockPlug  *plug,
+                GdkEventAny *event,
+                gpointer     data)
+{
+    gs_lock_plug_response (plug, GS_LOCK_PLUG_RESPONSE_CANCEL);
+
+    return TRUE; /* Do not destroy */
+}
+
+static void
+on_note_text_buffer_changed (GtkTextBuffer *buffer,
+                             GSLockPlug    *plug)
+{
+    int len;
+
+    len = gtk_text_buffer_get_char_count (buffer);
+    if (len > NOTE_BUFFER_MAX_CHARS)
+    {
+        gtk_widget_set_sensitive (plug->priv->note_text_view, FALSE);
+    }
+}
+
+static void
+gs_lock_plug_init (GSLockPlug *plug)
+{
+    gs_profile_start (NULL);
+
+    plug->priv = GS_LOCK_PLUG_GET_PRIVATE (plug);
+
+    clear_clipboards (plug);
+
+#ifdef WITH_LIBMATENOTIFY
+    plug->priv->leave_note_enabled = TRUE;
+#else
+    plug->priv->leave_note_enabled = FALSE;
+#endif
+
+    if (! load_theme (plug))
+    {
+        gs_debug ("Unable to load theme!");
+
+        plug->priv->vbox = gtk_vbox_new (FALSE, 0);
+
+        gtk_container_add (GTK_CONTAINER (plug), plug->priv->vbox);
+
+        /* Notebook */
+
+        plug->priv->notebook = gtk_notebook_new ();
+        gtk_notebook_set_show_tabs (GTK_NOTEBOOK (plug->priv->notebook), FALSE);
+        gtk_notebook_set_show_border (GTK_NOTEBOOK (plug->priv->notebook), FALSE);
+        gtk_box_pack_start (GTK_BOX (plug->priv->vbox), plug->priv->notebook, TRUE, TRUE, 0);
+
+        /* Page 1 */
+
+        create_page_one (plug);
+
+        gtk_widget_show_all (plug->priv->vbox);
+    }
+
+    if (plug->priv->note_text_view != NULL)
+    {
+        GtkTextBuffer *buffer;
+        buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (plug->priv->note_text_view));
+        g_signal_connect (buffer, "changed", G_CALLBACK (on_note_text_buffer_changed), plug);
+    }
+
+    /* Layout indicator */
+#ifdef WITH_KBD_LAYOUT_INDICATOR
+    if (plug->priv->auth_prompt_kbd_layout_indicator != NULL)
+    {
+        XklEngine *engine;
+
+        engine = xkl_engine_get_instance (GDK_DISPLAY ());
+        if (xkl_engine_get_num_groups (engine) > 1)
+        {
+            GtkWidget *layout_indicator;
+
+            layout_indicator = matekbd_indicator_new ();
+            matekbd_indicator_set_parent_tooltips (MATEKBD_INDICATOR (layout_indicator), TRUE);
+            gtk_box_pack_start (GTK_BOX (plug->priv->auth_prompt_kbd_layout_indicator),
+                                layout_indicator,
+                                FALSE,
+                                FALSE,
+                                6);
+
+            gtk_widget_show_all (layout_indicator);
+            gtk_widget_show (plug->priv->auth_prompt_kbd_layout_indicator);
+        }
+        else
+        {
+            gtk_widget_hide (plug->priv->auth_prompt_kbd_layout_indicator);
+        }
+
+        g_object_unref (engine);
+    }
+#endif
+
+    if (plug->priv->auth_note_button != NULL)
+    {
+        if (plug->priv->leave_note_enabled)
+        {
+            gtk_widget_show_all (plug->priv->auth_note_button);
+        }
+        else
+        {
+            gtk_widget_hide (plug->priv->auth_note_button);
+        }
+    }
+    if (plug->priv->auth_switch_button != NULL)
+    {
+        if (plug->priv->switch_enabled)
+        {
+            gtk_widget_show_all (plug->priv->auth_switch_button);
+        }
+        else
+        {
+            gtk_widget_hide (plug->priv->auth_switch_button);
+        }
+    }
+
+    gtk_widget_grab_default (plug->priv->auth_unlock_button);
+
+    if (plug->priv->auth_username_label != NULL)
+    {
+        expand_string_for_label (plug->priv->auth_username_label);
+    }
+
+    if (plug->priv->auth_realname_label != NULL)
+    {
+        expand_string_for_label (plug->priv->auth_realname_label);
+    }
+
+    if (! plug->priv->logout_enabled || ! plug->priv->logout_command)
+    {
+        if (plug->priv->auth_logout_button != NULL)
+        {
+            gtk_widget_hide (plug->priv->auth_logout_button);
+        }
+    }
+
+    plug->priv->timeout = DIALOG_TIMEOUT_MSEC;
+
+    g_signal_connect (plug, "key_press_event",
+                      G_CALLBACK (entry_key_press), plug);
+
+    /* button press handler used to inhibit popup menu */
+    g_signal_connect (plug->priv->auth_prompt_entry, "button_press_event",
+                      G_CALLBACK (entry_button_press), NULL);
+    gtk_entry_set_activates_default (GTK_ENTRY (plug->priv->auth_prompt_entry), TRUE);
+    gtk_entry_set_visibility (GTK_ENTRY (plug->priv->auth_prompt_entry), FALSE);
+
+    g_signal_connect (plug->priv->auth_unlock_button, "clicked",
+                      G_CALLBACK (unlock_button_clicked), plug);
+
+    g_signal_connect (plug->priv->auth_cancel_button, "clicked",
+                      G_CALLBACK (cancel_button_clicked), plug);
+
+    if (plug->priv->status_message_label)
+    {
+        if (plug->priv->status_message)
+        {
+            gtk_label_set_text (GTK_LABEL (plug->priv->status_message_label),
+                                plug->priv->status_message);
+        }
+        else
+        {
+            gtk_widget_hide (plug->priv->status_message_label);
+        }
+    }
+
+    if (plug->priv->auth_switch_button != NULL)
+    {
+        g_signal_connect (plug->priv->auth_switch_button, "clicked",
+                          G_CALLBACK (switch_user_button_clicked), plug);
+    }
+
+    if (plug->priv->auth_note_button != NULL)
+    {
+        g_signal_connect (plug->priv->auth_note_button, "clicked",
+                          G_CALLBACK (take_note), plug);
+        g_signal_connect (plug->priv->note_ok_button, "clicked",
+                          G_CALLBACK (submit_note), plug);
+        g_signal_connect (plug->priv->note_cancel_button, "clicked",
+                          G_CALLBACK (cancel_note), plug);
+    }
+
+    if (plug->priv->note_tab_label != NULL)
+    {
+        expand_string_for_label (plug->priv->note_tab_label);
+    }
+
+    if (plug->priv->auth_logout_button != NULL)
+    {
+        g_signal_connect (plug->priv->auth_logout_button, "clicked",
+                          G_CALLBACK (logout_button_clicked), plug);
+    }
+
+    g_signal_connect (plug, "delete_event", G_CALLBACK (delete_handler), NULL);
+
+    gs_profile_end (NULL);
+}
+
+static void
+gs_lock_plug_finalize (GObject *object)
+{
+    GSLockPlug *plug;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_LOCK_PLUG (object));
+
+    plug = GS_LOCK_PLUG (object);
+
+    g_return_if_fail (plug->priv != NULL);
+
+    g_free (plug->priv->logout_command);
+
+    remove_response_idle (plug);
+    remove_cancel_timeout (plug);
+
+    G_OBJECT_CLASS (gs_lock_plug_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gs_lock_plug_new (void)
+{
+    GtkWidget *result;
+
+    result = g_object_new (GS_TYPE_LOCK_PLUG, NULL);
+
+    gtk_window_set_focus_on_map (GTK_WINDOW (result), TRUE);
+
+    return result;
+}
diff --git a/src/gs-lock-plug.h b/src/gs-lock-plug.h
new file mode 100644
index 0000000..3217bbf
--- /dev/null
+++ b/src/gs-lock-plug.h
@@ -0,0 +1,82 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_LOCK_PLUG_H
+#define __GS_LOCK_PLUG_H
+
+G_BEGIN_DECLS
+
+typedef enum
+{
+    GS_LOCK_PLUG_RESPONSE_NONE   = -1,
+    GS_LOCK_PLUG_RESPONSE_OK     = -2,
+    GS_LOCK_PLUG_RESPONSE_CANCEL = -3
+} GSPlugResponseType;
+
+#define GS_TYPE_LOCK_PLUG         (gs_lock_plug_get_type ())
+#define GS_LOCK_PLUG(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_LOCK_PLUG, GSLockPlug))
+#define GS_LOCK_PLUG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_LOCK_PLUG, GSLockPlugClass))
+#define GS_IS_LOCK_PLUG(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_LOCK_PLUG))
+#define GS_IS_LOCK_PLUG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_LOCK_PLUG))
+#define GS_LOCK_PLUG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_LOCK_PLUG, GSLockPlugClass))
+
+typedef struct GSLockPlugPrivate GSLockPlugPrivate;
+
+typedef struct
+{
+	GtkPlug            parent;
+
+	GSLockPlugPrivate *priv;
+} GSLockPlug;
+
+typedef struct
+{
+	GtkPlugClass         parent_class;
+
+	void (* response) (GSLockPlug *plug, gint response_id);
+
+	/* Keybinding signals */
+	void (* close)    (GSLockPlug *plug);
+
+} GSLockPlugClass;
+
+GType       gs_lock_plug_get_type       (void);
+GtkWidget * gs_lock_plug_new            (void);
+
+int         gs_lock_plug_run            (GSLockPlug *plug);
+void        gs_lock_plug_set_sensitive  (GSLockPlug *plug,
+        gboolean    sensitive);
+void        gs_lock_plug_enable_prompt  (GSLockPlug *plug,
+        const char *message,
+        gboolean    visible);
+void        gs_lock_plug_disable_prompt (GSLockPlug *plug);
+void        gs_lock_plug_set_busy       (GSLockPlug *plug);
+void        gs_lock_plug_set_ready      (GSLockPlug *plug);
+
+void        gs_lock_plug_get_text       (GSLockPlug *plug,
+        char      **text);
+void        gs_lock_plug_show_message   (GSLockPlug *plug,
+        const char *message);
+
+G_END_DECLS
+
+#endif /* __GS_LOCK_PLUG_H */
diff --git a/src/gs-lock-plug.h.orig b/src/gs-lock-plug.h.orig
new file mode 100644
index 0000000..cc71f21
--- /dev/null
+++ b/src/gs-lock-plug.h.orig
@@ -0,0 +1,82 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_LOCK_PLUG_H
+#define __GS_LOCK_PLUG_H
+
+G_BEGIN_DECLS
+
+typedef enum
+{
+    GS_LOCK_PLUG_RESPONSE_NONE   = -1,
+    GS_LOCK_PLUG_RESPONSE_OK     = -2,
+    GS_LOCK_PLUG_RESPONSE_CANCEL = -3
+} GSPlugResponseType;
+
+#define GS_TYPE_LOCK_PLUG         (gs_lock_plug_get_type ())
+#define GS_LOCK_PLUG(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_LOCK_PLUG, GSLockPlug))
+#define GS_LOCK_PLUG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_LOCK_PLUG, GSLockPlugClass))
+#define GS_IS_LOCK_PLUG(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_LOCK_PLUG))
+#define GS_IS_LOCK_PLUG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_LOCK_PLUG))
+#define GS_LOCK_PLUG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_LOCK_PLUG, GSLockPlugClass))
+
+typedef struct GSLockPlugPrivate GSLockPlugPrivate;
+
+typedef struct
+{
+    GtkPlug            parent;
+
+    GSLockPlugPrivate *priv;
+} GSLockPlug;
+
+typedef struct
+{
+    GtkPlugClass         parent_class;
+
+    void (* response) (GSLockPlug *plug, gint response_id);
+
+    /* Keybinding signals */
+    void (* close)    (GSLockPlug *plug);
+
+} GSLockPlugClass;
+
+GType       gs_lock_plug_get_type       (void);
+GtkWidget * gs_lock_plug_new            (void);
+
+int         gs_lock_plug_run            (GSLockPlug *plug);
+void        gs_lock_plug_set_sensitive  (GSLockPlug *plug,
+        gboolean    sensitive);
+void        gs_lock_plug_enable_prompt  (GSLockPlug *plug,
+        const char *message,
+        gboolean    visible);
+void        gs_lock_plug_disable_prompt (GSLockPlug *plug);
+void        gs_lock_plug_set_busy       (GSLockPlug *plug);
+void        gs_lock_plug_set_ready      (GSLockPlug *plug);
+
+void        gs_lock_plug_get_text       (GSLockPlug *plug,
+        char      **text);
+void        gs_lock_plug_show_message   (GSLockPlug *plug,
+        const char *message);
+
+G_END_DECLS
+
+#endif /* __GS_LOCK_PLUG_H */
diff --git a/src/gs-manager.c b/src/gs-manager.c
new file mode 100644
index 0000000..3deca22
--- /dev/null
+++ b/src/gs-manager.c
@@ -0,0 +1,2030 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2008 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <time.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include <mateconf/mateconf-engine.h>
+#include <mateconf/mateconf-client.h>
+
+#define MATE_DESKTOP_USE_UNSTABLE_API
+#include <libmateui/mate-bg.h>
+
+#include "gs-prefs.h"        /* for GSSaverMode */
+
+#include "gs-manager.h"
+#include "gs-window.h"
+#include "gs-theme-manager.h"
+#include "gs-job.h"
+#include "gs-grab.h"
+#include "gs-fade.h"
+#include "gs-debug.h"
+
+static void gs_manager_class_init (GSManagerClass *klass);
+static void gs_manager_init       (GSManager      *manager);
+static void gs_manager_finalize   (GObject        *object);
+
+#define GS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_MANAGER, GSManagerPrivate))
+
+struct GSManagerPrivate
+{
+	GSList      *windows;
+	GHashTable  *jobs;
+
+	GSThemeManager *theme_manager;
+	MateConfClient    *client;
+	MateBG        *bg;
+	guint           bg_notify_id;
+
+	/* Policy */
+	glong        lock_timeout;
+	glong        cycle_timeout;
+	glong        logout_timeout;
+
+	guint        lock_enabled : 1;
+	guint        logout_enabled : 1;
+	guint        keyboard_enabled : 1;
+	guint        user_switch_enabled : 1;
+	guint        throttled : 1;
+
+	char        *logout_command;
+	char        *keyboard_command;
+
+	char        *status_message;
+
+	/* State */
+	guint        active : 1;
+	guint        lock_active : 1;
+
+	guint        fading : 1;
+	guint        dialog_up : 1;
+
+	time_t       activate_time;
+
+	guint        lock_timeout_id;
+	guint        cycle_timeout_id;
+
+	GSList      *themes;
+	GSSaverMode  saver_mode;
+	GSGrab      *grab;
+	GSFade      *fade;
+	guint        unfade_idle_id;
+};
+
+enum
+{
+    ACTIVATED,
+    DEACTIVATED,
+    AUTH_REQUEST_BEGIN,
+    AUTH_REQUEST_END,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0,
+    PROP_LOCK_ENABLED,
+    PROP_LOGOUT_ENABLED,
+    PROP_USER_SWITCH_ENABLED,
+    PROP_KEYBOARD_ENABLED,
+    PROP_LOCK_TIMEOUT,
+    PROP_CYCLE_TIMEOUT,
+    PROP_LOGOUT_TIMEOUT,
+    PROP_LOGOUT_COMMAND,
+    PROP_KEYBOARD_COMMAND,
+    PROP_STATUS_MESSAGE,
+    PROP_ACTIVE,
+    PROP_THROTTLED,
+};
+
+#define FADE_TIMEOUT 1000
+
+static guint         signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSManager, gs_manager, G_TYPE_OBJECT)
+
+static void
+manager_add_job_for_window (GSManager *manager,
+                            GSWindow  *window,
+                            GSJob     *job)
+{
+	if (manager->priv->jobs == NULL)
+	{
+		return;
+	}
+
+	g_hash_table_insert (manager->priv->jobs, window, job);
+}
+
+static const char *
+select_theme (GSManager *manager)
+{
+	const char *theme = NULL;
+
+	g_return_val_if_fail (manager != NULL, NULL);
+	g_return_val_if_fail (GS_IS_MANAGER (manager), NULL);
+
+	if (manager->priv->saver_mode == GS_MODE_BLANK_ONLY)
+	{
+		return NULL;
+	}
+
+	if (manager->priv->themes)
+	{
+		int number = 0;
+
+		if (manager->priv->saver_mode == GS_MODE_RANDOM)
+		{
+			g_random_set_seed (time (NULL));
+			number = g_random_int_range (0, g_slist_length (manager->priv->themes));
+		}
+		theme = g_slist_nth_data (manager->priv->themes, number);
+	}
+
+	return theme;
+}
+
+static GSJob *
+lookup_job_for_window (GSManager *manager,
+                       GSWindow  *window)
+{
+	GSJob *job;
+
+	if (manager->priv->jobs == NULL)
+	{
+		return NULL;
+	}
+
+	job = g_hash_table_lookup (manager->priv->jobs, window);
+
+	return job;
+}
+
+static void
+manager_maybe_stop_job_for_window (GSManager *manager,
+                                   GSWindow  *window)
+{
+	GSJob *job;
+
+	job = lookup_job_for_window (manager, window);
+
+	if (job == NULL)
+	{
+		gs_debug ("Job not found for window");
+		return;
+	}
+
+	gs_job_stop (job);
+}
+
+static void
+manager_maybe_start_job_for_window (GSManager *manager,
+                                    GSWindow  *window)
+{
+	GSJob *job;
+
+	job = lookup_job_for_window (manager, window);
+
+	if (job == NULL)
+	{
+		gs_debug ("Job not found for window");
+		return;
+	}
+
+	if (! manager->priv->dialog_up)
+	{
+		if (! manager->priv->throttled)
+		{
+			if (! gs_job_is_running (job))
+			{
+				if (! gs_window_is_obscured (window))
+				{
+					gs_debug ("Starting job for window");
+					gs_job_start (job);
+				}
+				else
+				{
+					gs_debug ("Window is obscured deferring start of job");
+				}
+			}
+			else
+			{
+				gs_debug ("Not starting job because job is running");
+			}
+		}
+		else
+		{
+			gs_debug ("Not starting job because throttled");
+		}
+	}
+	else
+	{
+		gs_debug ("Not starting job because dialog is up");
+	}
+}
+
+static void
+manager_select_theme_for_job (GSManager *manager,
+                              GSJob     *job)
+{
+	const char *theme;
+
+	theme = select_theme (manager);
+
+	if (theme != NULL)
+	{
+		GSThemeInfo    *info;
+		const char     *command;
+
+		command = NULL;
+
+		info = gs_theme_manager_lookup_theme_info (manager->priv->theme_manager, theme);
+		if (info != NULL)
+		{
+			command = gs_theme_info_get_exec (info);
+		}
+		else
+		{
+			gs_debug ("Could not find information for theme: %s",
+			          theme);
+		}
+
+		gs_job_set_command (job, command);
+
+
+		if (info != NULL)
+		{
+			gs_theme_info_unref (info);
+		}
+	}
+	else
+	{
+		gs_job_set_command (job, NULL);
+	}
+}
+
+static void
+cycle_job (GSWindow  *window,
+           GSJob     *job,
+           GSManager *manager)
+{
+	gs_job_stop (job);
+	manager_select_theme_for_job (manager, job);
+	manager_maybe_start_job_for_window (manager, window);
+}
+
+static void
+manager_cycle_jobs (GSManager *manager)
+{
+	if (manager->priv->jobs != NULL)
+	{
+		g_hash_table_foreach (manager->priv->jobs, (GHFunc) cycle_job, manager);
+	}
+}
+
+static void
+throttle_job (GSWindow  *window,
+              GSJob     *job,
+              GSManager *manager)
+{
+	if (manager->priv->throttled)
+	{
+		gs_job_stop (job);
+	}
+	else
+	{
+		manager_maybe_start_job_for_window (manager, window);
+	}
+}
+
+static void
+manager_throttle_jobs (GSManager *manager)
+{
+	if (manager->priv->jobs != NULL)
+	{
+		g_hash_table_foreach (manager->priv->jobs, (GHFunc) throttle_job, manager);
+	}
+}
+
+static void
+resume_job (GSWindow  *window,
+            GSJob     *job,
+            GSManager *manager)
+{
+	if (gs_job_is_running (job))
+	{
+		gs_job_suspend (job, FALSE);
+	}
+	else
+	{
+		manager_maybe_start_job_for_window (manager, window);
+	}
+}
+
+static void
+manager_resume_jobs (GSManager *manager)
+{
+	if (manager->priv->jobs != NULL)
+	{
+		g_hash_table_foreach (manager->priv->jobs, (GHFunc) resume_job, manager);
+	}
+}
+
+static void
+suspend_job (GSWindow  *window,
+             GSJob     *job,
+             GSManager *manager)
+{
+	gs_job_suspend (job, TRUE);
+}
+
+static void
+manager_suspend_jobs (GSManager *manager)
+{
+	if (manager->priv->jobs != NULL)
+	{
+		g_hash_table_foreach (manager->priv->jobs, (GHFunc) suspend_job, manager);
+	}
+}
+
+static void
+manager_stop_jobs (GSManager *manager)
+{
+	if (manager->priv->jobs != NULL)
+	{
+		g_hash_table_destroy (manager->priv->jobs);
+
+	}
+	manager->priv->jobs = NULL;
+}
+
+void
+gs_manager_set_mode (GSManager  *manager,
+                     GSSaverMode mode)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	manager->priv->saver_mode = mode;
+}
+
+static void
+free_themes (GSManager *manager)
+{
+	if (manager->priv->themes)
+	{
+		g_slist_foreach (manager->priv->themes, (GFunc)g_free, NULL);
+		g_slist_free (manager->priv->themes);
+	}
+}
+
+void
+gs_manager_set_themes (GSManager *manager,
+                       GSList    *themes)
+{
+	GSList *l;
+
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	free_themes (manager);
+	manager->priv->themes = NULL;
+
+	for (l = themes; l; l = l->next)
+	{
+		manager->priv->themes = g_slist_append (manager->priv->themes, g_strdup (l->data));
+	}
+}
+
+void
+gs_manager_set_throttled (GSManager *manager,
+                          gboolean   throttled)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->throttled != throttled)
+	{
+		GSList *l;
+
+		manager->priv->throttled = throttled;
+
+		if (! manager->priv->dialog_up)
+		{
+
+			manager_throttle_jobs (manager);
+
+			for (l = manager->priv->windows; l; l = l->next)
+			{
+				gs_window_clear (l->data);
+			}
+		}
+	}
+}
+
+void
+gs_manager_get_lock_active (GSManager *manager,
+                            gboolean  *lock_active)
+{
+	if (lock_active != NULL)
+	{
+		*lock_active = FALSE;
+	}
+
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	*lock_active = manager->priv->lock_active;
+}
+
+void
+gs_manager_set_lock_active (GSManager *manager,
+                            gboolean   lock_active)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	gs_debug ("Setting lock active: %d", lock_active);
+
+	if (manager->priv->lock_active != lock_active)
+	{
+		GSList *l;
+
+		manager->priv->lock_active = lock_active;
+		for (l = manager->priv->windows; l; l = l->next)
+		{
+			gs_window_set_lock_enabled (l->data, lock_active);
+		}
+	}
+}
+
+void
+gs_manager_get_lock_enabled (GSManager *manager,
+                             gboolean  *lock_enabled)
+{
+	if (lock_enabled != NULL)
+	{
+		*lock_enabled = FALSE;
+	}
+
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	*lock_enabled = manager->priv->lock_enabled;
+}
+
+void
+gs_manager_set_lock_enabled (GSManager *manager,
+                             gboolean   lock_enabled)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->lock_enabled != lock_enabled)
+	{
+		manager->priv->lock_enabled = lock_enabled;
+	}
+}
+
+void
+gs_manager_set_logout_enabled (GSManager *manager,
+                               gboolean   logout_enabled)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->logout_enabled != logout_enabled)
+	{
+		GSList *l;
+
+		manager->priv->logout_enabled = logout_enabled;
+		for (l = manager->priv->windows; l; l = l->next)
+		{
+			gs_window_set_logout_enabled (l->data, logout_enabled);
+		}
+	}
+}
+
+void
+gs_manager_set_keyboard_enabled (GSManager *manager,
+                                 gboolean   enabled)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->keyboard_enabled != enabled)
+	{
+		GSList *l;
+
+		manager->priv->keyboard_enabled = enabled;
+		for (l = manager->priv->windows; l; l = l->next)
+		{
+			gs_window_set_keyboard_enabled (l->data, enabled);
+		}
+	}
+}
+
+void
+gs_manager_set_user_switch_enabled (GSManager *manager,
+                                    gboolean   user_switch_enabled)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->user_switch_enabled != user_switch_enabled)
+	{
+		GSList *l;
+
+		manager->priv->user_switch_enabled = user_switch_enabled;
+		for (l = manager->priv->windows; l; l = l->next)
+		{
+			gs_window_set_user_switch_enabled (l->data, user_switch_enabled);
+		}
+	}
+}
+
+static gboolean
+activate_lock_timeout (GSManager *manager)
+{
+	if (manager->priv->lock_enabled)
+	{
+		gs_manager_set_lock_active (manager, TRUE);
+	}
+
+	manager->priv->lock_timeout_id = 0;
+
+	return FALSE;
+}
+
+static void
+remove_lock_timer (GSManager *manager)
+{
+	if (manager->priv->lock_timeout_id != 0)
+	{
+		g_source_remove (manager->priv->lock_timeout_id);
+		manager->priv->lock_timeout_id = 0;
+	}
+}
+
+static void
+add_lock_timer (GSManager *manager,
+                glong      timeout)
+{
+	manager->priv->lock_timeout_id = g_timeout_add (timeout,
+	                                 (GSourceFunc)activate_lock_timeout,
+	                                 manager);
+}
+
+void
+gs_manager_set_lock_timeout (GSManager *manager,
+                             glong      lock_timeout)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->lock_timeout != lock_timeout)
+	{
+
+		manager->priv->lock_timeout = lock_timeout;
+
+		if (manager->priv->active
+		        && ! manager->priv->lock_active
+		        && (lock_timeout >= 0))
+		{
+
+			glong elapsed = (time (NULL) - manager->priv->activate_time) * 1000;
+
+			remove_lock_timer (manager);
+
+			if (elapsed >= lock_timeout)
+			{
+				activate_lock_timeout (manager);
+			}
+			else
+			{
+				add_lock_timer (manager, lock_timeout - elapsed);
+			}
+		}
+	}
+}
+
+void
+gs_manager_set_logout_timeout (GSManager *manager,
+                               glong      logout_timeout)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->logout_timeout != logout_timeout)
+	{
+		GSList *l;
+
+		manager->priv->logout_timeout = logout_timeout;
+		for (l = manager->priv->windows; l; l = l->next)
+		{
+			gs_window_set_logout_timeout (l->data, logout_timeout);
+		}
+	}
+}
+
+void
+gs_manager_set_logout_command (GSManager  *manager,
+                               const char *command)
+{
+	GSList *l;
+
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	g_free (manager->priv->logout_command);
+
+	if (command)
+	{
+		manager->priv->logout_command = g_strdup (command);
+	}
+	else
+	{
+		manager->priv->logout_command = NULL;
+	}
+
+	for (l = manager->priv->windows; l; l = l->next)
+	{
+		gs_window_set_logout_command (l->data, manager->priv->logout_command);
+	}
+}
+
+void
+gs_manager_set_keyboard_command (GSManager  *manager,
+                                 const char *command)
+{
+	GSList *l;
+
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	g_free (manager->priv->keyboard_command);
+
+	if (command)
+	{
+		manager->priv->keyboard_command = g_strdup (command);
+	}
+	else
+	{
+		manager->priv->keyboard_command = NULL;
+	}
+
+	for (l = manager->priv->windows; l; l = l->next)
+	{
+		gs_window_set_keyboard_command (l->data, manager->priv->keyboard_command);
+	}
+}
+
+void
+gs_manager_set_status_message (GSManager  *manager,
+                               const char *status_message)
+{
+	GSList *l;
+
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	g_free (manager->priv->status_message);
+
+	manager->priv->status_message = g_strdup (status_message);
+
+	for (l = manager->priv->windows; l; l = l->next)
+	{
+		gs_window_set_status_message (l->data, manager->priv->status_message);
+	}
+}
+
+gboolean
+gs_manager_cycle (GSManager *manager)
+{
+	g_return_val_if_fail (manager != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+	gs_debug ("cycling jobs");
+
+	if (! manager->priv->active)
+	{
+		return FALSE;
+	}
+
+	if (manager->priv->dialog_up)
+	{
+		return FALSE;
+	}
+
+	if (manager->priv->throttled)
+	{
+		return FALSE;
+	}
+
+	manager_cycle_jobs (manager);
+
+	return TRUE;
+}
+
+static gboolean
+cycle_timeout (GSManager *manager)
+{
+	g_return_val_if_fail (manager != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+	if (! manager->priv->dialog_up)
+	{
+		gs_manager_cycle (manager);
+	}
+
+	return TRUE;
+}
+
+static void
+remove_cycle_timer (GSManager *manager)
+{
+	if (manager->priv->cycle_timeout_id != 0)
+	{
+		g_source_remove (manager->priv->cycle_timeout_id);
+		manager->priv->cycle_timeout_id = 0;
+	}
+}
+
+static void
+add_cycle_timer (GSManager *manager,
+                 glong      timeout)
+{
+	manager->priv->cycle_timeout_id = g_timeout_add (timeout,
+	                                  (GSourceFunc)cycle_timeout,
+	                                  manager);
+}
+
+void
+gs_manager_set_cycle_timeout (GSManager *manager,
+                              glong      cycle_timeout)
+{
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->cycle_timeout != cycle_timeout)
+	{
+
+		manager->priv->cycle_timeout = cycle_timeout;
+
+		if (manager->priv->active && (cycle_timeout >= 0))
+		{
+			glong timeout;
+			glong elapsed = (time (NULL) - manager->priv->activate_time) * 1000;
+
+			remove_cycle_timer (manager);
+
+			if (elapsed >= cycle_timeout)
+			{
+				timeout = 0;
+			}
+			else
+			{
+				timeout = cycle_timeout - elapsed;
+			}
+
+			add_cycle_timer (manager, timeout);
+
+		}
+	}
+}
+
+static void
+gs_manager_set_property (GObject            *object,
+                         guint               prop_id,
+                         const GValue       *value,
+                         GParamSpec         *pspec)
+{
+	GSManager *self;
+
+	self = GS_MANAGER (object);
+
+	switch (prop_id)
+	{
+	case PROP_THROTTLED:
+		gs_manager_set_throttled (self, g_value_get_boolean (value));
+		break;
+	case PROP_LOCK_ENABLED:
+		gs_manager_set_lock_enabled (self, g_value_get_boolean (value));
+		break;
+	case PROP_LOCK_TIMEOUT:
+		gs_manager_set_lock_timeout (self, g_value_get_long (value));
+		break;
+	case PROP_LOGOUT_ENABLED:
+		gs_manager_set_logout_enabled (self, g_value_get_boolean (value));
+		break;
+	case PROP_KEYBOARD_ENABLED:
+		gs_manager_set_keyboard_enabled (self, g_value_get_boolean (value));
+		break;
+	case PROP_USER_SWITCH_ENABLED:
+		gs_manager_set_user_switch_enabled (self, g_value_get_boolean (value));
+		break;
+	case PROP_LOGOUT_TIMEOUT:
+		gs_manager_set_logout_timeout (self, g_value_get_long (value));
+		break;
+	case PROP_LOGOUT_COMMAND:
+		gs_manager_set_logout_command (self, g_value_get_string (value));
+		break;
+	case PROP_KEYBOARD_COMMAND:
+		gs_manager_set_keyboard_command (self, g_value_get_string (value));
+		break;
+	case PROP_STATUS_MESSAGE:
+		gs_manager_set_status_message (self, g_value_get_string (value));
+		break;
+	case PROP_CYCLE_TIMEOUT:
+		gs_manager_set_cycle_timeout (self, g_value_get_long (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_manager_get_property (GObject            *object,
+                         guint               prop_id,
+                         GValue             *value,
+                         GParamSpec         *pspec)
+{
+	GSManager *self;
+
+	self = GS_MANAGER (object);
+
+	switch (prop_id)
+	{
+	case PROP_THROTTLED:
+		g_value_set_boolean (value, self->priv->throttled);
+		break;
+	case PROP_LOCK_ENABLED:
+		g_value_set_boolean (value, self->priv->lock_enabled);
+		break;
+	case PROP_LOCK_TIMEOUT:
+		g_value_set_long (value, self->priv->lock_timeout);
+		break;
+	case PROP_LOGOUT_ENABLED:
+		g_value_set_boolean (value, self->priv->logout_enabled);
+		break;
+	case PROP_KEYBOARD_ENABLED:
+		g_value_set_boolean (value, self->priv->keyboard_enabled);
+		break;
+	case PROP_USER_SWITCH_ENABLED:
+		g_value_set_boolean (value, self->priv->user_switch_enabled);
+		break;
+	case PROP_LOGOUT_TIMEOUT:
+		g_value_set_long (value, self->priv->logout_timeout);
+		break;
+	case PROP_LOGOUT_COMMAND:
+		g_value_set_string (value, self->priv->logout_command);
+		break;
+	case PROP_KEYBOARD_COMMAND:
+		g_value_set_string (value, self->priv->keyboard_command);
+		break;
+	case PROP_STATUS_MESSAGE:
+		g_value_set_string (value, self->priv->status_message);
+		break;
+	case PROP_CYCLE_TIMEOUT:
+		g_value_set_long (value, self->priv->cycle_timeout);
+		break;
+	case PROP_ACTIVE:
+		g_value_set_boolean (value, self->priv->active);
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_manager_class_init (GSManagerClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize     = gs_manager_finalize;
+	object_class->get_property = gs_manager_get_property;
+	object_class->set_property = gs_manager_set_property;
+
+	signals [ACTIVATED] =
+	    g_signal_new ("activated",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSManagerClass, activated),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+	signals [DEACTIVATED] =
+	    g_signal_new ("deactivated",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSManagerClass, deactivated),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+	signals [AUTH_REQUEST_BEGIN] =
+	    g_signal_new ("auth-request-begin",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSManagerClass, auth_request_begin),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+	signals [AUTH_REQUEST_END] =
+	    g_signal_new ("auth-request-end",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSManagerClass, auth_request_end),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+
+	g_object_class_install_property (object_class,
+	                                 PROP_ACTIVE,
+	                                 g_param_spec_boolean ("active",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READABLE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOCK_ENABLED,
+	                                 g_param_spec_boolean ("lock-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOCK_TIMEOUT,
+	                                 g_param_spec_long ("lock-timeout",
+	                                         NULL,
+	                                         NULL,
+	                                         -1,
+	                                         G_MAXLONG,
+	                                         0,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOGOUT_ENABLED,
+	                                 g_param_spec_boolean ("logout-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_USER_SWITCH_ENABLED,
+	                                 g_param_spec_boolean ("user-switch-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+
+	g_object_class_install_property (object_class,
+	                                 PROP_LOGOUT_TIMEOUT,
+	                                 g_param_spec_long ("logout-timeout",
+	                                         NULL,
+	                                         NULL,
+	                                         -1,
+	                                         G_MAXLONG,
+	                                         0,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOGOUT_COMMAND,
+	                                 g_param_spec_string ("logout-command",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_CYCLE_TIMEOUT,
+	                                 g_param_spec_long ("cycle-timeout",
+	                                         NULL,
+	                                         NULL,
+	                                         10000,
+	                                         G_MAXLONG,
+	                                         300000,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_THROTTLED,
+	                                 g_param_spec_boolean ("throttled",
+	                                         NULL,
+	                                         NULL,
+	                                         TRUE,
+	                                         G_PARAM_READWRITE));
+
+	g_type_class_add_private (klass, sizeof (GSManagerPrivate));
+}
+
+static void
+on_bg_changed (MateBG   *bg,
+               GSManager *manager)
+{
+	gs_debug ("background changed");
+}
+
+static void
+mateconf_changed_callback (MateConfClient *client,
+                           guint        cnxn_id,
+                           MateConfEntry  *entry,
+                           GSManager   *manager)
+{
+	mate_bg_load_from_preferences (manager->priv->bg,
+	                               manager->priv->client);
+}
+
+static void
+watch_bg_preferences (GSManager *manager)
+{
+	g_assert (manager->priv->bg_notify_id == 0);
+
+	mateconf_client_add_dir (manager->priv->client,
+	                         MATE_BG_KEY_DIR,
+	                         MATECONF_CLIENT_PRELOAD_NONE,
+	                         NULL);
+	manager->priv->bg_notify_id = mateconf_client_notify_add (manager->priv->client,
+	                              MATE_BG_KEY_DIR,
+	                              (MateConfClientNotifyFunc)mateconf_changed_callback,
+	                              manager,
+	                              NULL,
+	                              NULL);
+}
+
+static MateConfClient *
+get_mateconf_client (void)
+{
+	MateConfClient        *client;
+	GSList             *addresses;
+	GError             *error;
+	MateConfEngine        *engine;
+
+	client = NULL;
+	addresses = NULL;
+
+	addresses = g_slist_prepend (addresses, "xml:merged:" SYSCONFDIR "/mateconf/mateconf.xml.mandatory");
+	addresses = g_slist_prepend (addresses, "xml:merged:" SYSCONFDIR "/mateconf/mateconf.xml.system");
+	addresses = g_slist_prepend (addresses, "xml:merged:" SYSCONFDIR "/mateconf/mateconf.xml.defaults");
+	addresses = g_slist_reverse (addresses);
+
+	error = NULL;
+	engine = mateconf_engine_get_for_addresses (addresses, &error);
+	if (engine == NULL)
+	{
+		gs_debug ("Unable to get mateconf engine for addresses: %s", error->message);
+		g_error_free (error);
+	}
+	else
+	{
+		client = mateconf_client_get_for_engine (engine);
+	}
+
+	g_slist_free (addresses);
+
+	return client;
+}
+
+static void
+gs_manager_init (GSManager *manager)
+{
+	manager->priv = GS_MANAGER_GET_PRIVATE (manager);
+
+	manager->priv->fade = gs_fade_new ();
+	manager->priv->grab = gs_grab_new ();
+	manager->priv->theme_manager = gs_theme_manager_new ();
+
+	manager->priv->client = get_mateconf_client ();
+	if (manager->priv->client != NULL)
+	{
+		manager->priv->bg = mate_bg_new ();
+
+		g_signal_connect (manager->priv->bg,
+		                  "changed",
+		                  G_CALLBACK (on_bg_changed),
+		                  manager);
+		watch_bg_preferences (manager);
+
+		mate_bg_load_from_preferences (manager->priv->bg, manager->priv->client);
+	}
+}
+
+static void
+remove_timers (GSManager *manager)
+{
+	remove_lock_timer (manager);
+	remove_cycle_timer (manager);
+}
+
+static void
+remove_unfade_idle (GSManager *manager)
+{
+	if (manager->priv->unfade_idle_id > 0)
+	{
+		g_source_remove (manager->priv->unfade_idle_id);
+		manager->priv->unfade_idle_id = 0;
+	}
+}
+
+
+static gboolean
+window_deactivated_idle (GSManager *manager)
+{
+	g_return_val_if_fail (manager != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+	/* don't deactivate directly but only emit a signal
+	   so that we let the parent deactivate */
+	g_signal_emit (manager, signals [DEACTIVATED], 0);
+
+	return FALSE;
+}
+
+static void
+window_deactivated_cb (GSWindow  *window,
+                       GSManager *manager)
+{
+	g_return_if_fail (manager != NULL);
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	g_idle_add ((GSourceFunc)window_deactivated_idle, manager);
+}
+
+static GSWindow *
+find_window_at_pointer (GSManager *manager)
+{
+	GdkDisplay *display;
+	GdkScreen  *screen;
+	int         monitor;
+	int         x, y;
+	GSWindow   *window;
+	int         screen_num;
+	GSList     *l;
+
+	display = gdk_display_get_default ();
+	gdk_display_get_pointer (display, &screen, &x, &y, NULL);
+	monitor = gdk_screen_get_monitor_at_point (screen, x, y);
+	screen_num = gdk_screen_get_number (screen);
+
+	/* Find the gs-window that is on that screen */
+	window = NULL;
+	for (l = manager->priv->windows; l; l = l->next)
+	{
+		GSWindow *win = GS_WINDOW (l->data);
+		if (gs_window_get_screen (win) == screen
+		        && gs_window_get_monitor (win) == monitor)
+		{
+			window = win;
+		}
+	}
+
+	if (window == NULL)
+	{
+		gs_debug ("WARNING: Could not find the GSWindow for screen %d", screen_num);
+		/* take the first one */
+		window = manager->priv->windows->data;
+	}
+	else
+	{
+		gs_debug ("Requesting unlock for screen %d", screen_num);
+	}
+
+	return window;
+}
+
+void
+gs_manager_show_message (GSManager  *manager,
+                         const char *summary,
+                         const char *body,
+                         const char *icon)
+{
+	GSWindow *window;
+
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	/* Find the GSWindow that contains the pointer */
+	window = find_window_at_pointer (manager);
+	gs_window_show_message (window, summary, body, icon);
+
+	gs_manager_request_unlock (manager);
+}
+
+static gboolean
+manager_maybe_grab_window (GSManager *manager,
+                           GSWindow  *window)
+{
+	GdkDisplay *display;
+	GdkScreen  *screen;
+	int         monitor;
+	int         x, y;
+	gboolean    grabbed;
+
+	display = gdk_display_get_default ();
+	gdk_display_get_pointer (display, &screen, &x, &y, NULL);
+	monitor = gdk_screen_get_monitor_at_point (screen, x, y);
+
+	gdk_flush ();
+	grabbed = FALSE;
+	if (gs_window_get_screen (window) == screen
+	        && gs_window_get_monitor (window) == monitor)
+	{
+		gs_debug ("Moving grab to %p", window);
+		gs_grab_move_to_window (manager->priv->grab,
+		                        gs_window_get_gdk_window (window),
+		                        gs_window_get_screen (window),
+		                        FALSE);
+		grabbed = TRUE;
+	}
+
+	return grabbed;
+}
+
+static void
+window_grab_broken_cb (GSWindow           *window,
+                       GdkEventGrabBroken *event,
+                       GSManager          *manager)
+{
+	gs_debug ("GRAB BROKEN!");
+	if (event->keyboard)
+	{
+		gs_grab_keyboard_reset (manager->priv->grab);
+	}
+	else
+	{
+		gs_grab_mouse_reset (manager->priv->grab);
+	}
+}
+
+static gboolean
+unfade_idle (GSManager *manager)
+{
+	gs_debug ("resetting fade");
+	gs_fade_reset (manager->priv->fade);
+	manager->priv->unfade_idle_id = 0;
+	return FALSE;
+}
+
+
+static void
+add_unfade_idle (GSManager *manager)
+{
+	remove_unfade_idle (manager);
+	manager->priv->unfade_idle_id = g_timeout_add (500, (GSourceFunc)unfade_idle, manager);
+}
+
+static gboolean
+window_map_event_cb (GSWindow  *window,
+                     GdkEvent  *event,
+                     GSManager *manager)
+{
+	gs_debug ("Handling window map_event event");
+
+	manager_maybe_grab_window (manager, window);
+
+	manager_maybe_start_job_for_window (manager, window);
+
+	return FALSE;
+}
+
+static void
+window_map_cb (GSWindow  *window,
+               GSManager *manager)
+{
+	gs_debug ("Handling window map event");
+}
+
+static void
+window_unmap_cb (GSWindow  *window,
+                 GSManager *manager)
+{
+	gs_debug ("window unmapped!");
+}
+
+static void
+apply_background_to_window (GSManager *manager,
+                            GSWindow  *window)
+{
+	GdkPixmap       *pixmap;
+	GdkScreen       *screen;
+	int              width;
+	int              height;
+
+	if (manager->priv->bg == NULL)
+	{
+		gs_debug ("No background available");
+		gs_window_set_background_pixmap (window, NULL);
+	}
+
+	screen = gs_window_get_screen (window);
+	width = gdk_screen_get_width (screen);
+	height = gdk_screen_get_height (screen);
+	gs_debug ("Creating pixmap background w:%d h:%d", width, height);
+	pixmap = mate_bg_create_pixmap (manager->priv->bg,
+	                                gs_window_get_gdk_window (window),
+	                                width,
+	                                height,
+	                                FALSE);
+	gs_window_set_background_pixmap (window, pixmap);
+	g_object_unref (pixmap);
+}
+
+static void
+manager_show_window (GSManager *manager,
+                     GSWindow  *window)
+{
+	GSJob *job;
+
+	apply_background_to_window (manager, window);
+
+	job = gs_job_new_for_widget (gs_window_get_drawing_area (window));
+
+	manager_select_theme_for_job (manager, job);
+	manager_add_job_for_window (manager, window, job);
+
+	manager->priv->activate_time = time (NULL);
+
+	if (manager->priv->lock_timeout >= 0)
+	{
+		remove_lock_timer (manager);
+		add_lock_timer (manager, manager->priv->lock_timeout);
+	}
+
+	if (manager->priv->cycle_timeout >= 10000)
+	{
+		remove_cycle_timer (manager);
+		add_cycle_timer (manager, manager->priv->cycle_timeout);
+	}
+
+	add_unfade_idle (manager);
+
+	/* FIXME: only emit signal once */
+	g_signal_emit (manager, signals [ACTIVATED], 0);
+}
+
+static void
+window_show_cb (GSWindow  *window,
+                GSManager *manager)
+{
+
+	g_return_if_fail (manager != NULL);
+	g_return_if_fail (GS_IS_MANAGER (manager));
+	g_return_if_fail (window != NULL);
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	gs_debug ("Handling window show");
+	manager_show_window (manager, window);
+}
+
+static void
+maybe_set_window_throttle (GSManager *manager,
+                           GSWindow  *window,
+                           gboolean   throttled)
+{
+	if (throttled)
+	{
+		manager_maybe_stop_job_for_window (manager, window);
+	}
+	else
+	{
+		manager_maybe_start_job_for_window (manager, window);
+	}
+}
+
+static void
+window_obscured_cb (GSWindow   *window,
+                    GParamSpec *pspec,
+                    GSManager  *manager)
+{
+	gboolean obscured;
+
+	obscured = gs_window_is_obscured (window);
+	gs_debug ("Handling window obscured: %s", obscured ? "obscured" : "unobscured");
+
+	maybe_set_window_throttle (manager, window, obscured);
+
+	if (! obscured)
+	{
+		gs_manager_request_unlock (manager);
+	}
+}
+
+static void
+handle_window_dialog_up (GSManager *manager,
+                         GSWindow  *window)
+{
+	GSList *l;
+
+	g_return_if_fail (manager != NULL);
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	gs_debug ("Handling dialog up");
+
+	g_signal_emit (manager, signals [AUTH_REQUEST_BEGIN], 0);
+
+	manager->priv->dialog_up = TRUE;
+	/* Make all other windows insensitive so we don't get events */
+	for (l = manager->priv->windows; l; l = l->next)
+	{
+		if (l->data != window)
+		{
+			gtk_widget_set_sensitive (GTK_WIDGET (l->data), FALSE);
+		}
+	}
+
+	/* Move keyboard and mouse grabs so dialog can be used */
+	gs_grab_move_to_window (manager->priv->grab,
+	                        gs_window_get_gdk_window (window),
+	                        gs_window_get_screen (window),
+	                        FALSE);
+
+	/* Release the pointer grab while dialog is up so that
+	   the dialog can be used.  We'll regrab it when the dialog goes down. */
+	gs_grab_release_mouse (manager->priv->grab);
+
+	if (! manager->priv->throttled)
+	{
+		gs_debug ("Suspending jobs");
+
+		manager_suspend_jobs (manager);
+	}
+}
+
+static void
+handle_window_dialog_down (GSManager *manager,
+                           GSWindow  *window)
+{
+	GSList *l;
+
+	g_return_if_fail (manager != NULL);
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	gs_debug ("Handling dialog down");
+
+	/* Regrab the mouse */
+	gs_grab_move_to_window (manager->priv->grab,
+	                        gs_window_get_gdk_window (window),
+	                        gs_window_get_screen (window),
+	                        FALSE);
+
+	/* Make all windows sensitive so we get events */
+	for (l = manager->priv->windows; l; l = l->next)
+	{
+		gtk_widget_set_sensitive (GTK_WIDGET (l->data), TRUE);
+	}
+
+	manager->priv->dialog_up = FALSE;
+
+	if (! manager->priv->throttled)
+	{
+		manager_resume_jobs (manager);
+	}
+
+	g_signal_emit (manager, signals [AUTH_REQUEST_END], 0);
+}
+
+static void
+window_dialog_up_changed_cb (GSWindow   *window,
+                             GParamSpec *pspec,
+                             GSManager  *manager)
+{
+	gboolean up;
+
+	up = gs_window_is_dialog_up (window);
+	gs_debug ("Handling window dialog up changed: %s", up ? "up" : "down");
+	if (up)
+	{
+		handle_window_dialog_up (manager, window);
+	}
+	else
+	{
+		handle_window_dialog_down (manager, window);
+	}
+}
+
+static gboolean
+window_activity_cb (GSWindow  *window,
+                    GSManager *manager)
+{
+	gboolean handled;
+
+	handled = gs_manager_request_unlock (manager);
+
+	return handled;
+}
+
+static void
+disconnect_window_signals (GSManager *manager,
+                           GSWindow  *window)
+{
+	g_signal_handlers_disconnect_by_func (window, window_deactivated_cb, manager);
+	g_signal_handlers_disconnect_by_func (window, window_activity_cb, manager);
+	g_signal_handlers_disconnect_by_func (window, window_show_cb, manager);
+	g_signal_handlers_disconnect_by_func (window, window_map_cb, manager);
+	g_signal_handlers_disconnect_by_func (window, window_map_event_cb, manager);
+	g_signal_handlers_disconnect_by_func (window, window_obscured_cb, manager);
+	g_signal_handlers_disconnect_by_func (window, window_dialog_up_changed_cb, manager);
+	g_signal_handlers_disconnect_by_func (window, window_unmap_cb, manager);
+	g_signal_handlers_disconnect_by_func (window, window_grab_broken_cb, manager);
+}
+
+static void
+window_destroyed_cb (GtkWindow *window,
+                     GSManager *manager)
+{
+	disconnect_window_signals (manager, GS_WINDOW (window));
+}
+
+static void
+connect_window_signals (GSManager *manager,
+                        GSWindow  *window)
+{
+	g_signal_connect_object (window, "destroy",
+	                         G_CALLBACK (window_destroyed_cb), manager, 0);
+	g_signal_connect_object (window, "activity",
+	                         G_CALLBACK (window_activity_cb), manager, 0);
+	g_signal_connect_object (window, "deactivated",
+	                         G_CALLBACK (window_deactivated_cb), manager, 0);
+	g_signal_connect_object (window, "show",
+	                         G_CALLBACK (window_show_cb), manager, G_CONNECT_AFTER);
+	g_signal_connect_object (window, "map",
+	                         G_CALLBACK (window_map_cb), manager, G_CONNECT_AFTER);
+	g_signal_connect_object (window, "map_event",
+	                         G_CALLBACK (window_map_event_cb), manager, G_CONNECT_AFTER);
+	g_signal_connect_object (window, "notify::obscured",
+	                         G_CALLBACK (window_obscured_cb), manager, G_CONNECT_AFTER);
+	g_signal_connect_object (window, "notify::dialog-up",
+	                         G_CALLBACK (window_dialog_up_changed_cb), manager, 0);
+	g_signal_connect_object (window, "unmap",
+	                         G_CALLBACK (window_unmap_cb), manager, G_CONNECT_AFTER);
+	g_signal_connect_object (window, "grab_broken_event",
+	                         G_CALLBACK (window_grab_broken_cb), manager, G_CONNECT_AFTER);
+}
+
+static void
+gs_manager_create_window_for_monitor (GSManager *manager,
+                                      GdkScreen *screen,
+                                      int        monitor)
+{
+	GSWindow    *window;
+	GdkRectangle rect;
+
+	gdk_screen_get_monitor_geometry (screen, monitor, &rect);
+
+	gs_debug ("Creating window for monitor %d [%d,%d] (%dx%d)",
+	          monitor, rect.x, rect.y, rect.width, rect.height);
+
+	window = gs_window_new (screen, monitor, manager->priv->lock_active);
+
+	gs_window_set_user_switch_enabled (window, manager->priv->user_switch_enabled);
+	gs_window_set_logout_enabled (window, manager->priv->logout_enabled);
+	gs_window_set_logout_timeout (window, manager->priv->logout_timeout);
+	gs_window_set_logout_command (window, manager->priv->logout_command);
+	gs_window_set_keyboard_enabled (window, manager->priv->keyboard_enabled);
+	gs_window_set_keyboard_command (window, manager->priv->keyboard_command);
+	gs_window_set_status_message (window, manager->priv->status_message);
+
+	connect_window_signals (manager, window);
+
+	manager->priv->windows = g_slist_append (manager->priv->windows, window);
+
+	if (manager->priv->active && !manager->priv->fading)
+	{
+		gtk_widget_show (GTK_WIDGET (window));
+	}
+}
+
+static void
+on_screen_monitors_changed (GdkScreen *screen,
+                            GSManager *manager)
+{
+	GSList *l;
+	int     n_monitors;
+	int     n_windows;
+	int     i;
+
+	n_monitors = gdk_screen_get_n_monitors (screen);
+	n_windows = g_slist_length (manager->priv->windows);
+
+	gs_debug ("Monitors changed for screen %d: num=%d",
+	          gdk_screen_get_number (screen),
+	          n_monitors);
+
+	if (n_monitors > n_windows)
+	{
+
+		/* Tear down unlock dialog in case we want to move it
+		 * to a new monitor
+		 */
+		l = manager->priv->windows;
+		while (l != NULL)
+		{
+			gs_window_cancel_unlock_request (GS_WINDOW (l->data));
+			l = l->next;
+		}
+
+		/* add more windows */
+		for (i = n_windows; i < n_monitors; i++)
+		{
+			gs_manager_create_window_for_monitor (manager, screen, i);
+		}
+
+		/* And put unlock dialog up where ever it's supposed to be
+		 */
+		gs_manager_request_unlock (manager);
+	}
+	else
+	{
+
+		gdk_x11_grab_server ();
+
+		/* remove the extra windows */
+		l = manager->priv->windows;
+		while (l != NULL)
+		{
+			GdkScreen *this_screen;
+			int        this_monitor;
+			GSList    *next = l->next;
+
+			this_screen = gs_window_get_screen (GS_WINDOW (l->data));
+			this_monitor = gs_window_get_monitor (GS_WINDOW (l->data));
+			if (this_screen == screen && this_monitor >= n_monitors)
+			{
+				manager_maybe_stop_job_for_window (manager, GS_WINDOW (l->data));
+				g_hash_table_remove (manager->priv->jobs, l->data);
+				gs_window_destroy (GS_WINDOW (l->data));
+				manager->priv->windows = g_slist_delete_link (manager->priv->windows, l);
+			}
+			l = next;
+		}
+
+		/* make sure there is a lock dialog on a connected monitor,
+		 * and that the keyboard is still properly grabbed after all
+		 * the windows above got destroyed*/
+		if (n_windows > n_monitors)
+		{
+			gs_manager_request_unlock (manager);
+		}
+
+		gdk_flush ();
+		gdk_x11_ungrab_server ();
+	}
+}
+
+static void
+gs_manager_destroy_windows (GSManager *manager)
+{
+	GdkDisplay  *display;
+	GSList      *l;
+	int          n_screens;
+	int          i;
+
+	g_return_if_fail (manager != NULL);
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	if (manager->priv->windows == NULL)
+	{
+		return;
+	}
+
+	display = gdk_display_get_default ();
+
+	n_screens = gdk_display_get_n_screens (display);
+
+	for (i = 0; i < n_screens; i++)
+	{
+		g_signal_handlers_disconnect_by_func (gdk_display_get_screen (display, i),
+		                                      on_screen_monitors_changed,
+		                                      manager);
+	}
+
+	for (l = manager->priv->windows; l; l = l->next)
+	{
+		gs_window_destroy (l->data);
+	}
+	g_slist_free (manager->priv->windows);
+	manager->priv->windows = NULL;
+}
+
+static void
+gs_manager_finalize (GObject *object)
+{
+	GSManager *manager;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_MANAGER (object));
+
+	manager = GS_MANAGER (object);
+
+	g_return_if_fail (manager->priv != NULL);
+
+	if (manager->priv->bg_notify_id != 0)
+	{
+		mateconf_client_remove_dir (manager->priv->client,
+		                            MATE_BG_KEY_DIR,
+		                            NULL);
+		mateconf_client_notify_remove (manager->priv->client,
+		                               manager->priv->bg_notify_id);
+		manager->priv->bg_notify_id = 0;
+	}
+	if (manager->priv->bg != NULL)
+	{
+		g_object_unref (manager->priv->bg);
+	}
+	if (manager->priv->client != NULL)
+	{
+		g_object_unref (manager->priv->client);
+	}
+
+	free_themes (manager);
+	g_free (manager->priv->logout_command);
+	g_free (manager->priv->keyboard_command);
+	g_free (manager->priv->status_message);
+
+	remove_unfade_idle (manager);
+	remove_timers (manager);
+
+	gs_grab_release (manager->priv->grab);
+
+	manager_stop_jobs (manager);
+
+	gs_manager_destroy_windows (manager);
+
+	manager->priv->active = FALSE;
+	manager->priv->activate_time = 0;
+	manager->priv->lock_enabled = FALSE;
+
+	g_object_unref (manager->priv->fade);
+	g_object_unref (manager->priv->grab);
+	g_object_unref (manager->priv->theme_manager);
+
+	G_OBJECT_CLASS (gs_manager_parent_class)->finalize (object);
+}
+
+static void
+gs_manager_create_windows_for_screen (GSManager *manager,
+                                      GdkScreen *screen)
+{
+	int       n_monitors;
+	int       i;
+
+	g_return_if_fail (manager != NULL);
+	g_return_if_fail (GS_IS_MANAGER (manager));
+	g_return_if_fail (GDK_IS_SCREEN (screen));
+
+	g_object_ref (manager);
+	g_object_ref (screen);
+
+	n_monitors = gdk_screen_get_n_monitors (screen);
+
+	gs_debug ("Creating %d windows for screen %d", n_monitors, gdk_screen_get_number (screen));
+
+	for (i = 0; i < n_monitors; i++)
+	{
+		gs_manager_create_window_for_monitor (manager, screen, i);
+	}
+
+	g_object_unref (screen);
+	g_object_unref (manager);
+}
+
+static void
+gs_manager_create_windows (GSManager *manager)
+{
+	GdkDisplay  *display;
+	int          n_screens;
+	int          i;
+
+	g_return_if_fail (manager != NULL);
+	g_return_if_fail (GS_IS_MANAGER (manager));
+
+	g_assert (manager->priv->windows == NULL);
+
+	display = gdk_display_get_default ();
+	n_screens = gdk_display_get_n_screens (display);
+
+	for (i = 0; i < n_screens; i++)
+	{
+		g_signal_connect (gdk_display_get_screen (display, i),
+		                  "monitors-changed",
+		                  G_CALLBACK (on_screen_monitors_changed),
+		                  manager);
+
+		gs_manager_create_windows_for_screen (manager, gdk_display_get_screen (display, i));
+	}
+}
+
+GSManager *
+gs_manager_new (void)
+{
+	GObject *manager;
+
+	manager = g_object_new (GS_TYPE_MANAGER, NULL);
+
+	return GS_MANAGER (manager);
+}
+
+static void
+show_windows (GSList *windows)
+{
+	GSList *l;
+
+	for (l = windows; l; l = l->next)
+	{
+		gtk_widget_show (GTK_WIDGET (l->data));
+	}
+}
+
+static void
+remove_job (GSJob *job)
+{
+	if (job == NULL)
+	{
+		return;
+	}
+
+	gs_job_stop (job);
+	g_object_unref (job);
+}
+
+static void
+fade_done_cb (GSFade    *fade,
+              GSManager *manager)
+{
+	gs_debug ("fade completed, showing windows");
+	show_windows (manager->priv->windows);
+	manager->priv->fading = FALSE;
+}
+
+static gboolean
+gs_manager_activate (GSManager *manager)
+{
+	gboolean    do_fade;
+	gboolean    res;
+
+	g_return_val_if_fail (manager != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+	if (manager->priv->active)
+	{
+		gs_debug ("Trying to activate manager when already active");
+		return FALSE;
+	}
+
+	res = gs_grab_grab_root (manager->priv->grab, FALSE);
+	if (! res)
+	{
+		return FALSE;
+	}
+
+	if (manager->priv->windows == NULL)
+	{
+		gs_manager_create_windows (GS_MANAGER (manager));
+	}
+
+	manager->priv->jobs = g_hash_table_new_full (g_direct_hash,
+	                      g_direct_equal,
+	                      NULL,
+	                      (GDestroyNotify)remove_job);
+
+	manager->priv->active = TRUE;
+
+	/* fade to black and show windows */
+	do_fade = TRUE;
+	if (do_fade)
+	{
+		manager->priv->fading = TRUE;
+		gs_debug ("fading out");
+		gs_fade_async (manager->priv->fade,
+		               FADE_TIMEOUT,
+		               (GSFadeDoneFunc)fade_done_cb,
+		               manager);
+
+		while (manager->priv->fading)
+		{
+			gtk_main_iteration ();
+		}
+	}
+	else
+	{
+		show_windows (manager->priv->windows);
+	}
+
+	return TRUE;
+}
+
+static gboolean
+gs_manager_deactivate (GSManager *manager)
+{
+	g_return_val_if_fail (manager != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+	if (! manager->priv->active)
+	{
+		gs_debug ("Trying to deactivate a screensaver that is not active");
+		return FALSE;
+	}
+
+	remove_unfade_idle (manager);
+	gs_fade_reset (manager->priv->fade);
+	remove_timers (manager);
+
+	gs_grab_release (manager->priv->grab);
+
+	manager_stop_jobs (manager);
+
+	gs_manager_destroy_windows (manager);
+
+	/* reset state */
+	manager->priv->active = FALSE;
+	manager->priv->activate_time = 0;
+	manager->priv->lock_active = FALSE;
+	manager->priv->dialog_up = FALSE;
+	manager->priv->fading = FALSE;
+
+	return TRUE;
+}
+
+gboolean
+gs_manager_set_active (GSManager *manager,
+                       gboolean   active)
+{
+	gboolean res;
+
+	if (active)
+	{
+		res = gs_manager_activate (manager);
+	}
+	else
+	{
+		res = gs_manager_deactivate (manager);
+	}
+
+	return res;
+}
+
+gboolean
+gs_manager_get_active (GSManager *manager)
+{
+	g_return_val_if_fail (manager != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+	return manager->priv->active;
+}
+
+gboolean
+gs_manager_request_unlock (GSManager *manager)
+{
+	GSWindow *window;
+
+	g_return_val_if_fail (manager != NULL, FALSE);
+	g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+	if (! manager->priv->active)
+	{
+		gs_debug ("Request unlock but manager is not active");
+		return FALSE;
+	}
+
+	if (manager->priv->dialog_up)
+	{
+		gs_debug ("Request unlock but dialog is already up");
+		return FALSE;
+	}
+
+	if (manager->priv->fading)
+	{
+		gs_debug ("Request unlock so finishing fade");
+		gs_fade_finish (manager->priv->fade);
+	}
+
+	if (manager->priv->windows == NULL)
+	{
+		gs_debug ("We don't have any windows!");
+		return FALSE;
+	}
+
+	/* Find the GSWindow that contains the pointer */
+	window = find_window_at_pointer (manager);
+	gs_window_request_unlock (window);
+
+	return TRUE;
+}
+
+void
+gs_manager_cancel_unlock_request (GSManager *manager)
+{
+	GSList *l;
+	for (l = manager->priv->windows; l; l = l->next)
+	{
+		gs_window_cancel_unlock_request (l->data);
+	}
+}
diff --git a/src/gs-manager.c.orig b/src/gs-manager.c.orig
new file mode 100644
index 0000000..47c5005
--- /dev/null
+++ b/src/gs-manager.c.orig
@@ -0,0 +1,2030 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2008 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <time.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include <mateconf/mateconf-engine.h>
+#include <mateconf/mateconf-client.h>
+
+#define MATE_DESKTOP_USE_UNSTABLE_API
+#include <libmateui/mate-bg.h>
+
+#include "gs-prefs.h"        /* for GSSaverMode */
+
+#include "gs-manager.h"
+#include "gs-window.h"
+#include "gs-theme-manager.h"
+#include "gs-job.h"
+#include "gs-grab.h"
+#include "gs-fade.h"
+#include "gs-debug.h"
+
+static void gs_manager_class_init (GSManagerClass *klass);
+static void gs_manager_init       (GSManager      *manager);
+static void gs_manager_finalize   (GObject        *object);
+
+#define GS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_MANAGER, GSManagerPrivate))
+
+struct GSManagerPrivate
+{
+    GSList      *windows;
+    GHashTable  *jobs;
+
+    GSThemeManager *theme_manager;
+    MateConfClient    *client;
+    MateBG        *bg;
+    guint           bg_notify_id;
+
+    /* Policy */
+    glong        lock_timeout;
+    glong        cycle_timeout;
+    glong        logout_timeout;
+
+    guint        lock_enabled : 1;
+    guint        logout_enabled : 1;
+    guint        keyboard_enabled : 1;
+    guint        user_switch_enabled : 1;
+    guint        throttled : 1;
+
+    char        *logout_command;
+    char        *keyboard_command;
+
+    char        *status_message;
+
+    /* State */
+    guint        active : 1;
+    guint        lock_active : 1;
+
+    guint        fading : 1;
+    guint        dialog_up : 1;
+
+    time_t       activate_time;
+
+    guint        lock_timeout_id;
+    guint        cycle_timeout_id;
+
+    GSList      *themes;
+    GSSaverMode  saver_mode;
+    GSGrab      *grab;
+    GSFade      *fade;
+    guint        unfade_idle_id;
+};
+
+enum
+{
+    ACTIVATED,
+    DEACTIVATED,
+    AUTH_REQUEST_BEGIN,
+    AUTH_REQUEST_END,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0,
+    PROP_LOCK_ENABLED,
+    PROP_LOGOUT_ENABLED,
+    PROP_USER_SWITCH_ENABLED,
+    PROP_KEYBOARD_ENABLED,
+    PROP_LOCK_TIMEOUT,
+    PROP_CYCLE_TIMEOUT,
+    PROP_LOGOUT_TIMEOUT,
+    PROP_LOGOUT_COMMAND,
+    PROP_KEYBOARD_COMMAND,
+    PROP_STATUS_MESSAGE,
+    PROP_ACTIVE,
+    PROP_THROTTLED,
+};
+
+#define FADE_TIMEOUT 1000
+
+static guint         signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSManager, gs_manager, G_TYPE_OBJECT)
+
+static void
+manager_add_job_for_window (GSManager *manager,
+                            GSWindow  *window,
+                            GSJob     *job)
+{
+    if (manager->priv->jobs == NULL)
+    {
+        return;
+    }
+
+    g_hash_table_insert (manager->priv->jobs, window, job);
+}
+
+static const char *
+select_theme (GSManager *manager)
+{
+    const char *theme = NULL;
+
+    g_return_val_if_fail (manager != NULL, NULL);
+    g_return_val_if_fail (GS_IS_MANAGER (manager), NULL);
+
+    if (manager->priv->saver_mode == GS_MODE_BLANK_ONLY)
+    {
+        return NULL;
+    }
+
+    if (manager->priv->themes)
+    {
+        int number = 0;
+
+        if (manager->priv->saver_mode == GS_MODE_RANDOM)
+        {
+            g_random_set_seed (time (NULL));
+            number = g_random_int_range (0, g_slist_length (manager->priv->themes));
+        }
+        theme = g_slist_nth_data (manager->priv->themes, number);
+    }
+
+    return theme;
+}
+
+static GSJob *
+lookup_job_for_window (GSManager *manager,
+                       GSWindow  *window)
+{
+    GSJob *job;
+
+    if (manager->priv->jobs == NULL)
+    {
+        return NULL;
+    }
+
+    job = g_hash_table_lookup (manager->priv->jobs, window);
+
+    return job;
+}
+
+static void
+manager_maybe_stop_job_for_window (GSManager *manager,
+                                   GSWindow  *window)
+{
+    GSJob *job;
+
+    job = lookup_job_for_window (manager, window);
+
+    if (job == NULL)
+    {
+        gs_debug ("Job not found for window");
+        return;
+    }
+
+    gs_job_stop (job);
+}
+
+static void
+manager_maybe_start_job_for_window (GSManager *manager,
+                                    GSWindow  *window)
+{
+    GSJob *job;
+
+    job = lookup_job_for_window (manager, window);
+
+    if (job == NULL)
+    {
+        gs_debug ("Job not found for window");
+        return;
+    }
+
+    if (! manager->priv->dialog_up)
+    {
+        if (! manager->priv->throttled)
+        {
+            if (! gs_job_is_running (job))
+            {
+                if (! gs_window_is_obscured (window))
+                {
+                    gs_debug ("Starting job for window");
+                    gs_job_start (job);
+                }
+                else
+                {
+                    gs_debug ("Window is obscured deferring start of job");
+                }
+            }
+            else
+            {
+                gs_debug ("Not starting job because job is running");
+            }
+        }
+        else
+        {
+            gs_debug ("Not starting job because throttled");
+        }
+    }
+    else
+    {
+        gs_debug ("Not starting job because dialog is up");
+    }
+}
+
+static void
+manager_select_theme_for_job (GSManager *manager,
+                              GSJob     *job)
+{
+    const char *theme;
+
+    theme = select_theme (manager);
+
+    if (theme != NULL)
+    {
+        GSThemeInfo    *info;
+        const char     *command;
+
+        command = NULL;
+
+        info = gs_theme_manager_lookup_theme_info (manager->priv->theme_manager, theme);
+        if (info != NULL)
+        {
+            command = gs_theme_info_get_exec (info);
+        }
+        else
+        {
+            gs_debug ("Could not find information for theme: %s",
+                      theme);
+        }
+
+        gs_job_set_command (job, command);
+
+
+        if (info != NULL)
+        {
+            gs_theme_info_unref (info);
+        }
+    }
+    else
+    {
+        gs_job_set_command (job, NULL);
+    }
+}
+
+static void
+cycle_job (GSWindow  *window,
+           GSJob     *job,
+           GSManager *manager)
+{
+    gs_job_stop (job);
+    manager_select_theme_for_job (manager, job);
+    manager_maybe_start_job_for_window (manager, window);
+}
+
+static void
+manager_cycle_jobs (GSManager *manager)
+{
+    if (manager->priv->jobs != NULL)
+    {
+        g_hash_table_foreach (manager->priv->jobs, (GHFunc) cycle_job, manager);
+    }
+}
+
+static void
+throttle_job (GSWindow  *window,
+              GSJob     *job,
+              GSManager *manager)
+{
+    if (manager->priv->throttled)
+    {
+        gs_job_stop (job);
+    }
+    else
+    {
+        manager_maybe_start_job_for_window (manager, window);
+    }
+}
+
+static void
+manager_throttle_jobs (GSManager *manager)
+{
+    if (manager->priv->jobs != NULL)
+    {
+        g_hash_table_foreach (manager->priv->jobs, (GHFunc) throttle_job, manager);
+    }
+}
+
+static void
+resume_job (GSWindow  *window,
+            GSJob     *job,
+            GSManager *manager)
+{
+    if (gs_job_is_running (job))
+    {
+        gs_job_suspend (job, FALSE);
+    }
+    else
+    {
+        manager_maybe_start_job_for_window (manager, window);
+    }
+}
+
+static void
+manager_resume_jobs (GSManager *manager)
+{
+    if (manager->priv->jobs != NULL)
+    {
+        g_hash_table_foreach (manager->priv->jobs, (GHFunc) resume_job, manager);
+    }
+}
+
+static void
+suspend_job (GSWindow  *window,
+             GSJob     *job,
+             GSManager *manager)
+{
+    gs_job_suspend (job, TRUE);
+}
+
+static void
+manager_suspend_jobs (GSManager *manager)
+{
+    if (manager->priv->jobs != NULL)
+    {
+        g_hash_table_foreach (manager->priv->jobs, (GHFunc) suspend_job, manager);
+    }
+}
+
+static void
+manager_stop_jobs (GSManager *manager)
+{
+    if (manager->priv->jobs != NULL)
+    {
+        g_hash_table_destroy (manager->priv->jobs);
+
+    }
+    manager->priv->jobs = NULL;
+}
+
+void
+gs_manager_set_mode (GSManager  *manager,
+                     GSSaverMode mode)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    manager->priv->saver_mode = mode;
+}
+
+static void
+free_themes (GSManager *manager)
+{
+    if (manager->priv->themes)
+    {
+        g_slist_foreach (manager->priv->themes, (GFunc)g_free, NULL);
+        g_slist_free (manager->priv->themes);
+    }
+}
+
+void
+gs_manager_set_themes (GSManager *manager,
+                       GSList    *themes)
+{
+    GSList *l;
+
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    free_themes (manager);
+    manager->priv->themes = NULL;
+
+    for (l = themes; l; l = l->next)
+    {
+        manager->priv->themes = g_slist_append (manager->priv->themes, g_strdup (l->data));
+    }
+}
+
+void
+gs_manager_set_throttled (GSManager *manager,
+                          gboolean   throttled)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->throttled != throttled)
+    {
+        GSList *l;
+
+        manager->priv->throttled = throttled;
+
+        if (! manager->priv->dialog_up)
+        {
+
+            manager_throttle_jobs (manager);
+
+            for (l = manager->priv->windows; l; l = l->next)
+            {
+                gs_window_clear (l->data);
+            }
+        }
+    }
+}
+
+void
+gs_manager_get_lock_active (GSManager *manager,
+                            gboolean  *lock_active)
+{
+    if (lock_active != NULL)
+    {
+        *lock_active = FALSE;
+    }
+
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    *lock_active = manager->priv->lock_active;
+}
+
+void
+gs_manager_set_lock_active (GSManager *manager,
+                            gboolean   lock_active)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    gs_debug ("Setting lock active: %d", lock_active);
+
+    if (manager->priv->lock_active != lock_active)
+    {
+        GSList *l;
+
+        manager->priv->lock_active = lock_active;
+        for (l = manager->priv->windows; l; l = l->next)
+        {
+            gs_window_set_lock_enabled (l->data, lock_active);
+        }
+    }
+}
+
+void
+gs_manager_get_lock_enabled (GSManager *manager,
+                             gboolean  *lock_enabled)
+{
+    if (lock_enabled != NULL)
+    {
+        *lock_enabled = FALSE;
+    }
+
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    *lock_enabled = manager->priv->lock_enabled;
+}
+
+void
+gs_manager_set_lock_enabled (GSManager *manager,
+                             gboolean   lock_enabled)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->lock_enabled != lock_enabled)
+    {
+        manager->priv->lock_enabled = lock_enabled;
+    }
+}
+
+void
+gs_manager_set_logout_enabled (GSManager *manager,
+                               gboolean   logout_enabled)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->logout_enabled != logout_enabled)
+    {
+        GSList *l;
+
+        manager->priv->logout_enabled = logout_enabled;
+        for (l = manager->priv->windows; l; l = l->next)
+        {
+            gs_window_set_logout_enabled (l->data, logout_enabled);
+        }
+    }
+}
+
+void
+gs_manager_set_keyboard_enabled (GSManager *manager,
+                                 gboolean   enabled)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->keyboard_enabled != enabled)
+    {
+        GSList *l;
+
+        manager->priv->keyboard_enabled = enabled;
+        for (l = manager->priv->windows; l; l = l->next)
+        {
+            gs_window_set_keyboard_enabled (l->data, enabled);
+        }
+    }
+}
+
+void
+gs_manager_set_user_switch_enabled (GSManager *manager,
+                                    gboolean   user_switch_enabled)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->user_switch_enabled != user_switch_enabled)
+    {
+        GSList *l;
+
+        manager->priv->user_switch_enabled = user_switch_enabled;
+        for (l = manager->priv->windows; l; l = l->next)
+        {
+            gs_window_set_user_switch_enabled (l->data, user_switch_enabled);
+        }
+    }
+}
+
+static gboolean
+activate_lock_timeout (GSManager *manager)
+{
+    if (manager->priv->lock_enabled)
+    {
+        gs_manager_set_lock_active (manager, TRUE);
+    }
+
+    manager->priv->lock_timeout_id = 0;
+
+    return FALSE;
+}
+
+static void
+remove_lock_timer (GSManager *manager)
+{
+    if (manager->priv->lock_timeout_id != 0)
+    {
+        g_source_remove (manager->priv->lock_timeout_id);
+        manager->priv->lock_timeout_id = 0;
+    }
+}
+
+static void
+add_lock_timer (GSManager *manager,
+                glong      timeout)
+{
+    manager->priv->lock_timeout_id = g_timeout_add (timeout,
+                                     (GSourceFunc)activate_lock_timeout,
+                                     manager);
+}
+
+void
+gs_manager_set_lock_timeout (GSManager *manager,
+                             glong      lock_timeout)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->lock_timeout != lock_timeout)
+    {
+
+        manager->priv->lock_timeout = lock_timeout;
+
+        if (manager->priv->active
+                && ! manager->priv->lock_active
+                && (lock_timeout >= 0))
+        {
+
+            glong elapsed = (time (NULL) - manager->priv->activate_time) * 1000;
+
+            remove_lock_timer (manager);
+
+            if (elapsed >= lock_timeout)
+            {
+                activate_lock_timeout (manager);
+            }
+            else
+            {
+                add_lock_timer (manager, lock_timeout - elapsed);
+            }
+        }
+    }
+}
+
+void
+gs_manager_set_logout_timeout (GSManager *manager,
+                               glong      logout_timeout)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->logout_timeout != logout_timeout)
+    {
+        GSList *l;
+
+        manager->priv->logout_timeout = logout_timeout;
+        for (l = manager->priv->windows; l; l = l->next)
+        {
+            gs_window_set_logout_timeout (l->data, logout_timeout);
+        }
+    }
+}
+
+void
+gs_manager_set_logout_command (GSManager  *manager,
+                               const char *command)
+{
+    GSList *l;
+
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    g_free (manager->priv->logout_command);
+
+    if (command)
+    {
+        manager->priv->logout_command = g_strdup (command);
+    }
+    else
+    {
+        manager->priv->logout_command = NULL;
+    }
+
+    for (l = manager->priv->windows; l; l = l->next)
+    {
+        gs_window_set_logout_command (l->data, manager->priv->logout_command);
+    }
+}
+
+void
+gs_manager_set_keyboard_command (GSManager  *manager,
+                                 const char *command)
+{
+    GSList *l;
+
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    g_free (manager->priv->keyboard_command);
+
+    if (command)
+    {
+        manager->priv->keyboard_command = g_strdup (command);
+    }
+    else
+    {
+        manager->priv->keyboard_command = NULL;
+    }
+
+    for (l = manager->priv->windows; l; l = l->next)
+    {
+        gs_window_set_keyboard_command (l->data, manager->priv->keyboard_command);
+    }
+}
+
+void
+gs_manager_set_status_message (GSManager  *manager,
+                               const char *status_message)
+{
+    GSList *l;
+
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    g_free (manager->priv->status_message);
+
+    manager->priv->status_message = g_strdup (status_message);
+
+    for (l = manager->priv->windows; l; l = l->next)
+    {
+        gs_window_set_status_message (l->data, manager->priv->status_message);
+    }
+}
+
+gboolean
+gs_manager_cycle (GSManager *manager)
+{
+    g_return_val_if_fail (manager != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+    gs_debug ("cycling jobs");
+
+    if (! manager->priv->active)
+    {
+        return FALSE;
+    }
+
+    if (manager->priv->dialog_up)
+    {
+        return FALSE;
+    }
+
+    if (manager->priv->throttled)
+    {
+        return FALSE;
+    }
+
+    manager_cycle_jobs (manager);
+
+    return TRUE;
+}
+
+static gboolean
+cycle_timeout (GSManager *manager)
+{
+    g_return_val_if_fail (manager != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+    if (! manager->priv->dialog_up)
+    {
+        gs_manager_cycle (manager);
+    }
+
+    return TRUE;
+}
+
+static void
+remove_cycle_timer (GSManager *manager)
+{
+    if (manager->priv->cycle_timeout_id != 0)
+    {
+        g_source_remove (manager->priv->cycle_timeout_id);
+        manager->priv->cycle_timeout_id = 0;
+    }
+}
+
+static void
+add_cycle_timer (GSManager *manager,
+                 glong      timeout)
+{
+    manager->priv->cycle_timeout_id = g_timeout_add (timeout,
+                                      (GSourceFunc)cycle_timeout,
+                                      manager);
+}
+
+void
+gs_manager_set_cycle_timeout (GSManager *manager,
+                              glong      cycle_timeout)
+{
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->cycle_timeout != cycle_timeout)
+    {
+
+        manager->priv->cycle_timeout = cycle_timeout;
+
+        if (manager->priv->active && (cycle_timeout >= 0))
+        {
+            glong timeout;
+            glong elapsed = (time (NULL) - manager->priv->activate_time) * 1000;
+
+            remove_cycle_timer (manager);
+
+            if (elapsed >= cycle_timeout)
+            {
+                timeout = 0;
+            }
+            else
+            {
+                timeout = cycle_timeout - elapsed;
+            }
+
+            add_cycle_timer (manager, timeout);
+
+        }
+    }
+}
+
+static void
+gs_manager_set_property (GObject            *object,
+                         guint               prop_id,
+                         const GValue       *value,
+                         GParamSpec         *pspec)
+{
+    GSManager *self;
+
+    self = GS_MANAGER (object);
+
+    switch (prop_id)
+    {
+    case PROP_THROTTLED:
+        gs_manager_set_throttled (self, g_value_get_boolean (value));
+        break;
+    case PROP_LOCK_ENABLED:
+        gs_manager_set_lock_enabled (self, g_value_get_boolean (value));
+        break;
+    case PROP_LOCK_TIMEOUT:
+        gs_manager_set_lock_timeout (self, g_value_get_long (value));
+        break;
+    case PROP_LOGOUT_ENABLED:
+        gs_manager_set_logout_enabled (self, g_value_get_boolean (value));
+        break;
+    case PROP_KEYBOARD_ENABLED:
+        gs_manager_set_keyboard_enabled (self, g_value_get_boolean (value));
+        break;
+    case PROP_USER_SWITCH_ENABLED:
+        gs_manager_set_user_switch_enabled (self, g_value_get_boolean (value));
+        break;
+    case PROP_LOGOUT_TIMEOUT:
+        gs_manager_set_logout_timeout (self, g_value_get_long (value));
+        break;
+    case PROP_LOGOUT_COMMAND:
+        gs_manager_set_logout_command (self, g_value_get_string (value));
+        break;
+    case PROP_KEYBOARD_COMMAND:
+        gs_manager_set_keyboard_command (self, g_value_get_string (value));
+        break;
+    case PROP_STATUS_MESSAGE:
+        gs_manager_set_status_message (self, g_value_get_string (value));
+        break;
+    case PROP_CYCLE_TIMEOUT:
+        gs_manager_set_cycle_timeout (self, g_value_get_long (value));
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_manager_get_property (GObject            *object,
+                         guint               prop_id,
+                         GValue             *value,
+                         GParamSpec         *pspec)
+{
+    GSManager *self;
+
+    self = GS_MANAGER (object);
+
+    switch (prop_id)
+    {
+    case PROP_THROTTLED:
+        g_value_set_boolean (value, self->priv->throttled);
+        break;
+    case PROP_LOCK_ENABLED:
+        g_value_set_boolean (value, self->priv->lock_enabled);
+        break;
+    case PROP_LOCK_TIMEOUT:
+        g_value_set_long (value, self->priv->lock_timeout);
+        break;
+    case PROP_LOGOUT_ENABLED:
+        g_value_set_boolean (value, self->priv->logout_enabled);
+        break;
+    case PROP_KEYBOARD_ENABLED:
+        g_value_set_boolean (value, self->priv->keyboard_enabled);
+        break;
+    case PROP_USER_SWITCH_ENABLED:
+        g_value_set_boolean (value, self->priv->user_switch_enabled);
+        break;
+    case PROP_LOGOUT_TIMEOUT:
+        g_value_set_long (value, self->priv->logout_timeout);
+        break;
+    case PROP_LOGOUT_COMMAND:
+        g_value_set_string (value, self->priv->logout_command);
+        break;
+    case PROP_KEYBOARD_COMMAND:
+        g_value_set_string (value, self->priv->keyboard_command);
+        break;
+    case PROP_STATUS_MESSAGE:
+        g_value_set_string (value, self->priv->status_message);
+        break;
+    case PROP_CYCLE_TIMEOUT:
+        g_value_set_long (value, self->priv->cycle_timeout);
+        break;
+    case PROP_ACTIVE:
+        g_value_set_boolean (value, self->priv->active);
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_manager_class_init (GSManagerClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize     = gs_manager_finalize;
+    object_class->get_property = gs_manager_get_property;
+    object_class->set_property = gs_manager_set_property;
+
+    signals [ACTIVATED] =
+        g_signal_new ("activated",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSManagerClass, activated),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+    signals [DEACTIVATED] =
+        g_signal_new ("deactivated",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSManagerClass, deactivated),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+    signals [AUTH_REQUEST_BEGIN] =
+        g_signal_new ("auth-request-begin",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSManagerClass, auth_request_begin),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+    signals [AUTH_REQUEST_END] =
+        g_signal_new ("auth-request-end",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSManagerClass, auth_request_end),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+
+    g_object_class_install_property (object_class,
+                                     PROP_ACTIVE,
+                                     g_param_spec_boolean ("active",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOCK_ENABLED,
+                                     g_param_spec_boolean ("lock-enabled",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOCK_TIMEOUT,
+                                     g_param_spec_long ("lock-timeout",
+                                             NULL,
+                                             NULL,
+                                             -1,
+                                             G_MAXLONG,
+                                             0,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOGOUT_ENABLED,
+                                     g_param_spec_boolean ("logout-enabled",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_USER_SWITCH_ENABLED,
+                                     g_param_spec_boolean ("user-switch-enabled",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+
+    g_object_class_install_property (object_class,
+                                     PROP_LOGOUT_TIMEOUT,
+                                     g_param_spec_long ("logout-timeout",
+                                             NULL,
+                                             NULL,
+                                             -1,
+                                             G_MAXLONG,
+                                             0,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOGOUT_COMMAND,
+                                     g_param_spec_string ("logout-command",
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_CYCLE_TIMEOUT,
+                                     g_param_spec_long ("cycle-timeout",
+                                             NULL,
+                                             NULL,
+                                             10000,
+                                             G_MAXLONG,
+                                             300000,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_THROTTLED,
+                                     g_param_spec_boolean ("throttled",
+                                             NULL,
+                                             NULL,
+                                             TRUE,
+                                             G_PARAM_READWRITE));
+
+    g_type_class_add_private (klass, sizeof (GSManagerPrivate));
+}
+
+static void
+on_bg_changed (MateBG   *bg,
+               GSManager *manager)
+{
+    gs_debug ("background changed");
+}
+
+static void
+mateconf_changed_callback (MateConfClient *client,
+                           guint        cnxn_id,
+                           MateConfEntry  *entry,
+                           GSManager   *manager)
+{
+    mate_bg_load_from_preferences (manager->priv->bg,
+                                   manager->priv->client);
+}
+
+static void
+watch_bg_preferences (GSManager *manager)
+{
+    g_assert (manager->priv->bg_notify_id == 0);
+
+    mateconf_client_add_dir (manager->priv->client,
+                             MATE_BG_KEY_DIR,
+                             MATECONF_CLIENT_PRELOAD_NONE,
+                             NULL);
+    manager->priv->bg_notify_id = mateconf_client_notify_add (manager->priv->client,
+                                  MATE_BG_KEY_DIR,
+                                  (MateConfClientNotifyFunc)mateconf_changed_callback,
+                                  manager,
+                                  NULL,
+                                  NULL);
+}
+
+static MateConfClient *
+get_mateconf_client (void)
+{
+    MateConfClient        *client;
+    GSList             *addresses;
+    GError             *error;
+    MateConfEngine        *engine;
+
+    client = NULL;
+    addresses = NULL;
+
+    addresses = g_slist_prepend (addresses, "xml:merged:" SYSCONFDIR "/mateconf/mateconf.xml.mandatory");
+    addresses = g_slist_prepend (addresses, "xml:merged:" SYSCONFDIR "/mateconf/mateconf.xml.system");
+    addresses = g_slist_prepend (addresses, "xml:merged:" SYSCONFDIR "/mateconf/mateconf.xml.defaults");
+    addresses = g_slist_reverse (addresses);
+
+    error = NULL;
+    engine = mateconf_engine_get_for_addresses (addresses, &error);
+    if (engine == NULL)
+    {
+        gs_debug ("Unable to get mateconf engine for addresses: %s", error->message);
+        g_error_free (error);
+    }
+    else
+    {
+        client = mateconf_client_get_for_engine (engine);
+    }
+
+    g_slist_free (addresses);
+
+    return client;
+}
+
+static void
+gs_manager_init (GSManager *manager)
+{
+    manager->priv = GS_MANAGER_GET_PRIVATE (manager);
+
+    manager->priv->fade = gs_fade_new ();
+    manager->priv->grab = gs_grab_new ();
+    manager->priv->theme_manager = gs_theme_manager_new ();
+
+    manager->priv->client = get_mateconf_client ();
+    if (manager->priv->client != NULL)
+    {
+        manager->priv->bg = mate_bg_new ();
+
+        g_signal_connect (manager->priv->bg,
+                          "changed",
+                          G_CALLBACK (on_bg_changed),
+                          manager);
+        watch_bg_preferences (manager);
+
+        mate_bg_load_from_preferences (manager->priv->bg, manager->priv->client);
+    }
+}
+
+static void
+remove_timers (GSManager *manager)
+{
+    remove_lock_timer (manager);
+    remove_cycle_timer (manager);
+}
+
+static void
+remove_unfade_idle (GSManager *manager)
+{
+    if (manager->priv->unfade_idle_id > 0)
+    {
+        g_source_remove (manager->priv->unfade_idle_id);
+        manager->priv->unfade_idle_id = 0;
+    }
+}
+
+
+static gboolean
+window_deactivated_idle (GSManager *manager)
+{
+    g_return_val_if_fail (manager != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+    /* don't deactivate directly but only emit a signal
+       so that we let the parent deactivate */
+    g_signal_emit (manager, signals [DEACTIVATED], 0);
+
+    return FALSE;
+}
+
+static void
+window_deactivated_cb (GSWindow  *window,
+                       GSManager *manager)
+{
+    g_return_if_fail (manager != NULL);
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    g_idle_add ((GSourceFunc)window_deactivated_idle, manager);
+}
+
+static GSWindow *
+find_window_at_pointer (GSManager *manager)
+{
+    GdkDisplay *display;
+    GdkScreen  *screen;
+    int         monitor;
+    int         x, y;
+    GSWindow   *window;
+    int         screen_num;
+    GSList     *l;
+
+    display = gdk_display_get_default ();
+    gdk_display_get_pointer (display, &screen, &x, &y, NULL);
+    monitor = gdk_screen_get_monitor_at_point (screen, x, y);
+    screen_num = gdk_screen_get_number (screen);
+
+    /* Find the gs-window that is on that screen */
+    window = NULL;
+    for (l = manager->priv->windows; l; l = l->next)
+    {
+        GSWindow *win = GS_WINDOW (l->data);
+        if (gs_window_get_screen (win) == screen
+                && gs_window_get_monitor (win) == monitor)
+        {
+            window = win;
+        }
+    }
+
+    if (window == NULL)
+    {
+        gs_debug ("WARNING: Could not find the GSWindow for screen %d", screen_num);
+        /* take the first one */
+        window = manager->priv->windows->data;
+    }
+    else
+    {
+        gs_debug ("Requesting unlock for screen %d", screen_num);
+    }
+
+    return window;
+}
+
+void
+gs_manager_show_message (GSManager  *manager,
+                         const char *summary,
+                         const char *body,
+                         const char *icon)
+{
+    GSWindow *window;
+
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    /* Find the GSWindow that contains the pointer */
+    window = find_window_at_pointer (manager);
+    gs_window_show_message (window, summary, body, icon);
+
+    gs_manager_request_unlock (manager);
+}
+
+static gboolean
+manager_maybe_grab_window (GSManager *manager,
+                           GSWindow  *window)
+{
+    GdkDisplay *display;
+    GdkScreen  *screen;
+    int         monitor;
+    int         x, y;
+    gboolean    grabbed;
+
+    display = gdk_display_get_default ();
+    gdk_display_get_pointer (display, &screen, &x, &y, NULL);
+    monitor = gdk_screen_get_monitor_at_point (screen, x, y);
+
+    gdk_flush ();
+    grabbed = FALSE;
+    if (gs_window_get_screen (window) == screen
+            && gs_window_get_monitor (window) == monitor)
+    {
+        gs_debug ("Moving grab to %p", window);
+        gs_grab_move_to_window (manager->priv->grab,
+                                gs_window_get_gdk_window (window),
+                                gs_window_get_screen (window),
+                                FALSE);
+        grabbed = TRUE;
+    }
+
+    return grabbed;
+}
+
+static void
+window_grab_broken_cb (GSWindow           *window,
+                       GdkEventGrabBroken *event,
+                       GSManager          *manager)
+{
+    gs_debug ("GRAB BROKEN!");
+    if (event->keyboard)
+    {
+        gs_grab_keyboard_reset (manager->priv->grab);
+    }
+    else
+    {
+        gs_grab_mouse_reset (manager->priv->grab);
+    }
+}
+
+static gboolean
+unfade_idle (GSManager *manager)
+{
+    gs_debug ("resetting fade");
+    gs_fade_reset (manager->priv->fade);
+    manager->priv->unfade_idle_id = 0;
+    return FALSE;
+}
+
+
+static void
+add_unfade_idle (GSManager *manager)
+{
+    remove_unfade_idle (manager);
+    manager->priv->unfade_idle_id = g_timeout_add (500, (GSourceFunc)unfade_idle, manager);
+}
+
+static gboolean
+window_map_event_cb (GSWindow  *window,
+                     GdkEvent  *event,
+                     GSManager *manager)
+{
+    gs_debug ("Handling window map_event event");
+
+    manager_maybe_grab_window (manager, window);
+
+    manager_maybe_start_job_for_window (manager, window);
+
+    return FALSE;
+}
+
+static void
+window_map_cb (GSWindow  *window,
+               GSManager *manager)
+{
+    gs_debug ("Handling window map event");
+}
+
+static void
+window_unmap_cb (GSWindow  *window,
+                 GSManager *manager)
+{
+    gs_debug ("window unmapped!");
+}
+
+static void
+apply_background_to_window (GSManager *manager,
+                            GSWindow  *window)
+{
+    GdkPixmap       *pixmap;
+    GdkScreen       *screen;
+    int              width;
+    int              height;
+
+    if (manager->priv->bg == NULL)
+    {
+        gs_debug ("No background available");
+        gs_window_set_background_pixmap (window, NULL);
+    }
+
+    screen = gs_window_get_screen (window);
+    width = gdk_screen_get_width (screen);
+    height = gdk_screen_get_height (screen);
+    gs_debug ("Creating pixmap background w:%d h:%d", width, height);
+    pixmap = mate_bg_create_pixmap (manager->priv->bg,
+                                    gs_window_get_gdk_window (window),
+                                    width,
+                                    height,
+                                    FALSE);
+    gs_window_set_background_pixmap (window, pixmap);
+    g_object_unref (pixmap);
+}
+
+static void
+manager_show_window (GSManager *manager,
+                     GSWindow  *window)
+{
+    GSJob *job;
+
+    apply_background_to_window (manager, window);
+
+    job = gs_job_new_for_widget (gs_window_get_drawing_area (window));
+
+    manager_select_theme_for_job (manager, job);
+    manager_add_job_for_window (manager, window, job);
+
+    manager->priv->activate_time = time (NULL);
+
+    if (manager->priv->lock_timeout >= 0)
+    {
+        remove_lock_timer (manager);
+        add_lock_timer (manager, manager->priv->lock_timeout);
+    }
+
+    if (manager->priv->cycle_timeout >= 10000)
+    {
+        remove_cycle_timer (manager);
+        add_cycle_timer (manager, manager->priv->cycle_timeout);
+    }
+
+    add_unfade_idle (manager);
+
+    /* FIXME: only emit signal once */
+    g_signal_emit (manager, signals [ACTIVATED], 0);
+}
+
+static void
+window_show_cb (GSWindow  *window,
+                GSManager *manager)
+{
+
+    g_return_if_fail (manager != NULL);
+    g_return_if_fail (GS_IS_MANAGER (manager));
+    g_return_if_fail (window != NULL);
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    gs_debug ("Handling window show");
+    manager_show_window (manager, window);
+}
+
+static void
+maybe_set_window_throttle (GSManager *manager,
+                           GSWindow  *window,
+                           gboolean   throttled)
+{
+    if (throttled)
+    {
+        manager_maybe_stop_job_for_window (manager, window);
+    }
+    else
+    {
+        manager_maybe_start_job_for_window (manager, window);
+    }
+}
+
+static void
+window_obscured_cb (GSWindow   *window,
+                    GParamSpec *pspec,
+                    GSManager  *manager)
+{
+    gboolean obscured;
+
+    obscured = gs_window_is_obscured (window);
+    gs_debug ("Handling window obscured: %s", obscured ? "obscured" : "unobscured");
+
+    maybe_set_window_throttle (manager, window, obscured);
+
+    if (! obscured)
+    {
+        gs_manager_request_unlock (manager);
+    }
+}
+
+static void
+handle_window_dialog_up (GSManager *manager,
+                         GSWindow  *window)
+{
+    GSList *l;
+
+    g_return_if_fail (manager != NULL);
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    gs_debug ("Handling dialog up");
+
+    g_signal_emit (manager, signals [AUTH_REQUEST_BEGIN], 0);
+
+    manager->priv->dialog_up = TRUE;
+    /* Make all other windows insensitive so we don't get events */
+    for (l = manager->priv->windows; l; l = l->next)
+    {
+        if (l->data != window)
+        {
+            gtk_widget_set_sensitive (GTK_WIDGET (l->data), FALSE);
+        }
+    }
+
+    /* Move keyboard and mouse grabs so dialog can be used */
+    gs_grab_move_to_window (manager->priv->grab,
+                            gs_window_get_gdk_window (window),
+                            gs_window_get_screen (window),
+                            FALSE);
+
+    /* Release the pointer grab while dialog is up so that
+       the dialog can be used.  We'll regrab it when the dialog goes down. */
+    gs_grab_release_mouse (manager->priv->grab);
+
+    if (! manager->priv->throttled)
+    {
+        gs_debug ("Suspending jobs");
+
+        manager_suspend_jobs (manager);
+    }
+}
+
+static void
+handle_window_dialog_down (GSManager *manager,
+                           GSWindow  *window)
+{
+    GSList *l;
+
+    g_return_if_fail (manager != NULL);
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    gs_debug ("Handling dialog down");
+
+    /* Regrab the mouse */
+    gs_grab_move_to_window (manager->priv->grab,
+                            gs_window_get_gdk_window (window),
+                            gs_window_get_screen (window),
+                            FALSE);
+
+    /* Make all windows sensitive so we get events */
+    for (l = manager->priv->windows; l; l = l->next)
+    {
+        gtk_widget_set_sensitive (GTK_WIDGET (l->data), TRUE);
+    }
+
+    manager->priv->dialog_up = FALSE;
+
+    if (! manager->priv->throttled)
+    {
+        manager_resume_jobs (manager);
+    }
+
+    g_signal_emit (manager, signals [AUTH_REQUEST_END], 0);
+}
+
+static void
+window_dialog_up_changed_cb (GSWindow   *window,
+                             GParamSpec *pspec,
+                             GSManager  *manager)
+{
+    gboolean up;
+
+    up = gs_window_is_dialog_up (window);
+    gs_debug ("Handling window dialog up changed: %s", up ? "up" : "down");
+    if (up)
+    {
+        handle_window_dialog_up (manager, window);
+    }
+    else
+    {
+        handle_window_dialog_down (manager, window);
+    }
+}
+
+static gboolean
+window_activity_cb (GSWindow  *window,
+                    GSManager *manager)
+{
+    gboolean handled;
+
+    handled = gs_manager_request_unlock (manager);
+
+    return handled;
+}
+
+static void
+disconnect_window_signals (GSManager *manager,
+                           GSWindow  *window)
+{
+    g_signal_handlers_disconnect_by_func (window, window_deactivated_cb, manager);
+    g_signal_handlers_disconnect_by_func (window, window_activity_cb, manager);
+    g_signal_handlers_disconnect_by_func (window, window_show_cb, manager);
+    g_signal_handlers_disconnect_by_func (window, window_map_cb, manager);
+    g_signal_handlers_disconnect_by_func (window, window_map_event_cb, manager);
+    g_signal_handlers_disconnect_by_func (window, window_obscured_cb, manager);
+    g_signal_handlers_disconnect_by_func (window, window_dialog_up_changed_cb, manager);
+    g_signal_handlers_disconnect_by_func (window, window_unmap_cb, manager);
+    g_signal_handlers_disconnect_by_func (window, window_grab_broken_cb, manager);
+}
+
+static void
+window_destroyed_cb (GtkWindow *window,
+                     GSManager *manager)
+{
+    disconnect_window_signals (manager, GS_WINDOW (window));
+}
+
+static void
+connect_window_signals (GSManager *manager,
+                        GSWindow  *window)
+{
+    g_signal_connect_object (window, "destroy",
+                             G_CALLBACK (window_destroyed_cb), manager, 0);
+    g_signal_connect_object (window, "activity",
+                             G_CALLBACK (window_activity_cb), manager, 0);
+    g_signal_connect_object (window, "deactivated",
+                             G_CALLBACK (window_deactivated_cb), manager, 0);
+    g_signal_connect_object (window, "show",
+                             G_CALLBACK (window_show_cb), manager, G_CONNECT_AFTER);
+    g_signal_connect_object (window, "map",
+                             G_CALLBACK (window_map_cb), manager, G_CONNECT_AFTER);
+    g_signal_connect_object (window, "map_event",
+                             G_CALLBACK (window_map_event_cb), manager, G_CONNECT_AFTER);
+    g_signal_connect_object (window, "notify::obscured",
+                             G_CALLBACK (window_obscured_cb), manager, G_CONNECT_AFTER);
+    g_signal_connect_object (window, "notify::dialog-up",
+                             G_CALLBACK (window_dialog_up_changed_cb), manager, 0);
+    g_signal_connect_object (window, "unmap",
+                             G_CALLBACK (window_unmap_cb), manager, G_CONNECT_AFTER);
+    g_signal_connect_object (window, "grab_broken_event",
+                             G_CALLBACK (window_grab_broken_cb), manager, G_CONNECT_AFTER);
+}
+
+static void
+gs_manager_create_window_for_monitor (GSManager *manager,
+                                      GdkScreen *screen,
+                                      int        monitor)
+{
+    GSWindow    *window;
+    GdkRectangle rect;
+
+    gdk_screen_get_monitor_geometry (screen, monitor, &rect);
+
+    gs_debug ("Creating window for monitor %d [%d,%d] (%dx%d)",
+              monitor, rect.x, rect.y, rect.width, rect.height);
+
+    window = gs_window_new (screen, monitor, manager->priv->lock_active);
+
+    gs_window_set_user_switch_enabled (window, manager->priv->user_switch_enabled);
+    gs_window_set_logout_enabled (window, manager->priv->logout_enabled);
+    gs_window_set_logout_timeout (window, manager->priv->logout_timeout);
+    gs_window_set_logout_command (window, manager->priv->logout_command);
+    gs_window_set_keyboard_enabled (window, manager->priv->keyboard_enabled);
+    gs_window_set_keyboard_command (window, manager->priv->keyboard_command);
+    gs_window_set_status_message (window, manager->priv->status_message);
+
+    connect_window_signals (manager, window);
+
+    manager->priv->windows = g_slist_append (manager->priv->windows, window);
+
+    if (manager->priv->active && !manager->priv->fading)
+    {
+        gtk_widget_show (GTK_WIDGET (window));
+    }
+}
+
+static void
+on_screen_monitors_changed (GdkScreen *screen,
+                            GSManager *manager)
+{
+    GSList *l;
+    int     n_monitors;
+    int     n_windows;
+    int     i;
+
+    n_monitors = gdk_screen_get_n_monitors (screen);
+    n_windows = g_slist_length (manager->priv->windows);
+
+    gs_debug ("Monitors changed for screen %d: num=%d",
+              gdk_screen_get_number (screen),
+              n_monitors);
+
+    if (n_monitors > n_windows)
+    {
+
+        /* Tear down unlock dialog in case we want to move it
+         * to a new monitor
+         */
+        l = manager->priv->windows;
+        while (l != NULL)
+        {
+            gs_window_cancel_unlock_request (GS_WINDOW (l->data));
+            l = l->next;
+        }
+
+        /* add more windows */
+        for (i = n_windows; i < n_monitors; i++)
+        {
+            gs_manager_create_window_for_monitor (manager, screen, i);
+        }
+
+        /* And put unlock dialog up where ever it's supposed to be
+         */
+        gs_manager_request_unlock (manager);
+    }
+    else
+    {
+
+        gdk_x11_grab_server ();
+
+        /* remove the extra windows */
+        l = manager->priv->windows;
+        while (l != NULL)
+        {
+            GdkScreen *this_screen;
+            int        this_monitor;
+            GSList    *next = l->next;
+
+            this_screen = gs_window_get_screen (GS_WINDOW (l->data));
+            this_monitor = gs_window_get_monitor (GS_WINDOW (l->data));
+            if (this_screen == screen && this_monitor >= n_monitors)
+            {
+                manager_maybe_stop_job_for_window (manager, GS_WINDOW (l->data));
+                g_hash_table_remove (manager->priv->jobs, l->data);
+                gs_window_destroy (GS_WINDOW (l->data));
+                manager->priv->windows = g_slist_delete_link (manager->priv->windows, l);
+            }
+            l = next;
+        }
+
+        /* make sure there is a lock dialog on a connected monitor,
+         * and that the keyboard is still properly grabbed after all
+         * the windows above got destroyed*/
+        if (n_windows > n_monitors)
+        {
+            gs_manager_request_unlock (manager);
+        }
+
+        gdk_flush ();
+        gdk_x11_ungrab_server ();
+    }
+}
+
+static void
+gs_manager_destroy_windows (GSManager *manager)
+{
+    GdkDisplay  *display;
+    GSList      *l;
+    int          n_screens;
+    int          i;
+
+    g_return_if_fail (manager != NULL);
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    if (manager->priv->windows == NULL)
+    {
+        return;
+    }
+
+    display = gdk_display_get_default ();
+
+    n_screens = gdk_display_get_n_screens (display);
+
+    for (i = 0; i < n_screens; i++)
+    {
+        g_signal_handlers_disconnect_by_func (gdk_display_get_screen (display, i),
+                                              on_screen_monitors_changed,
+                                              manager);
+    }
+
+    for (l = manager->priv->windows; l; l = l->next)
+    {
+        gs_window_destroy (l->data);
+    }
+    g_slist_free (manager->priv->windows);
+    manager->priv->windows = NULL;
+}
+
+static void
+gs_manager_finalize (GObject *object)
+{
+    GSManager *manager;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_MANAGER (object));
+
+    manager = GS_MANAGER (object);
+
+    g_return_if_fail (manager->priv != NULL);
+
+    if (manager->priv->bg_notify_id != 0)
+    {
+        mateconf_client_remove_dir (manager->priv->client,
+                                    MATE_BG_KEY_DIR,
+                                    NULL);
+        mateconf_client_notify_remove (manager->priv->client,
+                                       manager->priv->bg_notify_id);
+        manager->priv->bg_notify_id = 0;
+    }
+    if (manager->priv->bg != NULL)
+    {
+        g_object_unref (manager->priv->bg);
+    }
+    if (manager->priv->client != NULL)
+    {
+        g_object_unref (manager->priv->client);
+    }
+
+    free_themes (manager);
+    g_free (manager->priv->logout_command);
+    g_free (manager->priv->keyboard_command);
+    g_free (manager->priv->status_message);
+
+    remove_unfade_idle (manager);
+    remove_timers (manager);
+
+    gs_grab_release (manager->priv->grab);
+
+    manager_stop_jobs (manager);
+
+    gs_manager_destroy_windows (manager);
+
+    manager->priv->active = FALSE;
+    manager->priv->activate_time = 0;
+    manager->priv->lock_enabled = FALSE;
+
+    g_object_unref (manager->priv->fade);
+    g_object_unref (manager->priv->grab);
+    g_object_unref (manager->priv->theme_manager);
+
+    G_OBJECT_CLASS (gs_manager_parent_class)->finalize (object);
+}
+
+static void
+gs_manager_create_windows_for_screen (GSManager *manager,
+                                      GdkScreen *screen)
+{
+    int       n_monitors;
+    int       i;
+
+    g_return_if_fail (manager != NULL);
+    g_return_if_fail (GS_IS_MANAGER (manager));
+    g_return_if_fail (GDK_IS_SCREEN (screen));
+
+    g_object_ref (manager);
+    g_object_ref (screen);
+
+    n_monitors = gdk_screen_get_n_monitors (screen);
+
+    gs_debug ("Creating %d windows for screen %d", n_monitors, gdk_screen_get_number (screen));
+
+    for (i = 0; i < n_monitors; i++)
+    {
+        gs_manager_create_window_for_monitor (manager, screen, i);
+    }
+
+    g_object_unref (screen);
+    g_object_unref (manager);
+}
+
+static void
+gs_manager_create_windows (GSManager *manager)
+{
+    GdkDisplay  *display;
+    int          n_screens;
+    int          i;
+
+    g_return_if_fail (manager != NULL);
+    g_return_if_fail (GS_IS_MANAGER (manager));
+
+    g_assert (manager->priv->windows == NULL);
+
+    display = gdk_display_get_default ();
+    n_screens = gdk_display_get_n_screens (display);
+
+    for (i = 0; i < n_screens; i++)
+    {
+        g_signal_connect (gdk_display_get_screen (display, i),
+                          "monitors-changed",
+                          G_CALLBACK (on_screen_monitors_changed),
+                          manager);
+
+        gs_manager_create_windows_for_screen (manager, gdk_display_get_screen (display, i));
+    }
+}
+
+GSManager *
+gs_manager_new (void)
+{
+    GObject *manager;
+
+    manager = g_object_new (GS_TYPE_MANAGER, NULL);
+
+    return GS_MANAGER (manager);
+}
+
+static void
+show_windows (GSList *windows)
+{
+    GSList *l;
+
+    for (l = windows; l; l = l->next)
+    {
+        gtk_widget_show (GTK_WIDGET (l->data));
+    }
+}
+
+static void
+remove_job (GSJob *job)
+{
+    if (job == NULL)
+    {
+        return;
+    }
+
+    gs_job_stop (job);
+    g_object_unref (job);
+}
+
+static void
+fade_done_cb (GSFade    *fade,
+              GSManager *manager)
+{
+    gs_debug ("fade completed, showing windows");
+    show_windows (manager->priv->windows);
+    manager->priv->fading = FALSE;
+}
+
+static gboolean
+gs_manager_activate (GSManager *manager)
+{
+    gboolean    do_fade;
+    gboolean    res;
+
+    g_return_val_if_fail (manager != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+    if (manager->priv->active)
+    {
+        gs_debug ("Trying to activate manager when already active");
+        return FALSE;
+    }
+
+    res = gs_grab_grab_root (manager->priv->grab, FALSE);
+    if (! res)
+    {
+        return FALSE;
+    }
+
+    if (manager->priv->windows == NULL)
+    {
+        gs_manager_create_windows (GS_MANAGER (manager));
+    }
+
+    manager->priv->jobs = g_hash_table_new_full (g_direct_hash,
+                          g_direct_equal,
+                          NULL,
+                          (GDestroyNotify)remove_job);
+
+    manager->priv->active = TRUE;
+
+    /* fade to black and show windows */
+    do_fade = TRUE;
+    if (do_fade)
+    {
+        manager->priv->fading = TRUE;
+        gs_debug ("fading out");
+        gs_fade_async (manager->priv->fade,
+                       FADE_TIMEOUT,
+                       (GSFadeDoneFunc)fade_done_cb,
+                       manager);
+
+        while (manager->priv->fading)
+        {
+            gtk_main_iteration ();
+        }
+    }
+    else
+    {
+        show_windows (manager->priv->windows);
+    }
+
+    return TRUE;
+}
+
+static gboolean
+gs_manager_deactivate (GSManager *manager)
+{
+    g_return_val_if_fail (manager != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+    if (! manager->priv->active)
+    {
+        gs_debug ("Trying to deactivate a screensaver that is not active");
+        return FALSE;
+    }
+
+    remove_unfade_idle (manager);
+    gs_fade_reset (manager->priv->fade);
+    remove_timers (manager);
+
+    gs_grab_release (manager->priv->grab);
+
+    manager_stop_jobs (manager);
+
+    gs_manager_destroy_windows (manager);
+
+    /* reset state */
+    manager->priv->active = FALSE;
+    manager->priv->activate_time = 0;
+    manager->priv->lock_active = FALSE;
+    manager->priv->dialog_up = FALSE;
+    manager->priv->fading = FALSE;
+
+    return TRUE;
+}
+
+gboolean
+gs_manager_set_active (GSManager *manager,
+                       gboolean   active)
+{
+    gboolean res;
+
+    if (active)
+    {
+        res = gs_manager_activate (manager);
+    }
+    else
+    {
+        res = gs_manager_deactivate (manager);
+    }
+
+    return res;
+}
+
+gboolean
+gs_manager_get_active (GSManager *manager)
+{
+    g_return_val_if_fail (manager != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+    return manager->priv->active;
+}
+
+gboolean
+gs_manager_request_unlock (GSManager *manager)
+{
+    GSWindow *window;
+
+    g_return_val_if_fail (manager != NULL, FALSE);
+    g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
+
+    if (! manager->priv->active)
+    {
+        gs_debug ("Request unlock but manager is not active");
+        return FALSE;
+    }
+
+    if (manager->priv->dialog_up)
+    {
+        gs_debug ("Request unlock but dialog is already up");
+        return FALSE;
+    }
+
+    if (manager->priv->fading)
+    {
+        gs_debug ("Request unlock so finishing fade");
+        gs_fade_finish (manager->priv->fade);
+    }
+
+    if (manager->priv->windows == NULL)
+    {
+        gs_debug ("We don't have any windows!");
+        return FALSE;
+    }
+
+    /* Find the GSWindow that contains the pointer */
+    window = find_window_at_pointer (manager);
+    gs_window_request_unlock (window);
+
+    return TRUE;
+}
+
+void
+gs_manager_cancel_unlock_request (GSManager *manager)
+{
+    GSList *l;
+    for (l = manager->priv->windows; l; l = l->next)
+    {
+        gs_window_cancel_unlock_request (l->data);
+    }
+}
diff --git a/src/gs-manager.h b/src/gs-manager.h
new file mode 100644
index 0000000..61e64b6
--- /dev/null
+++ b/src/gs-manager.h
@@ -0,0 +1,107 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_MANAGER_H
+#define __GS_MANAGER_H
+
+#include "gs-prefs.h"
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_MANAGER         (gs_manager_get_type ())
+#define GS_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_MANAGER, GSManager))
+#define GS_MANAGER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_MANAGER, GSManagerClass))
+#define GS_IS_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_MANAGER))
+#define GS_IS_MANAGER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_MANAGER))
+#define GS_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_MANAGER, GSManagerClass))
+
+typedef struct GSManagerPrivate GSManagerPrivate;
+
+typedef struct
+{
+	GObject          parent;
+	GSManagerPrivate *priv;
+} GSManager;
+
+typedef struct
+{
+	GObjectClass     parent_class;
+
+	void            (* activated)          (GSManager *manager);
+	void            (* deactivated)        (GSManager *manager);
+	void            (* auth_request_begin) (GSManager *manager);
+	void            (* auth_request_end)   (GSManager *manager);
+
+} GSManagerClass;
+
+GType       gs_manager_get_type             (void);
+
+GSManager * gs_manager_new                  (void);
+
+gboolean    gs_manager_set_active           (GSManager  *manager,
+        gboolean    active);
+gboolean    gs_manager_get_active           (GSManager  *manager);
+
+gboolean    gs_manager_cycle                (GSManager  *manager);
+
+void        gs_manager_get_lock_active      (GSManager  *manager,
+        gboolean   *lock_active);
+void        gs_manager_set_lock_active      (GSManager  *manager,
+        gboolean    lock_active);
+void        gs_manager_set_keyboard_enabled (GSManager  *manager,
+        gboolean    enabled);
+void        gs_manager_set_keyboard_command (GSManager  *manager,
+        const char *command);
+void        gs_manager_set_status_message   (GSManager  *manager,
+        const char *message);
+void        gs_manager_get_lock_enabled     (GSManager  *manager,
+        gboolean   *lock_enabled);
+void        gs_manager_set_lock_enabled     (GSManager  *manager,
+        gboolean    lock_enabled);
+void        gs_manager_set_lock_timeout     (GSManager  *manager,
+        glong       lock_timeout);
+void        gs_manager_set_logout_enabled   (GSManager  *manager,
+        gboolean    logout_enabled);
+void        gs_manager_set_user_switch_enabled (GSManager  *manager,
+        gboolean    user_switch_enabled);
+void        gs_manager_set_logout_timeout   (GSManager  *manager,
+        glong       logout_timeout);
+void        gs_manager_set_logout_command   (GSManager  *manager,
+        const char *command);
+void        gs_manager_set_throttled        (GSManager  *manager,
+        gboolean    lock_enabled);
+void        gs_manager_set_cycle_timeout    (GSManager  *manager,
+        glong       cycle_timeout);
+void        gs_manager_set_themes           (GSManager  *manager,
+        GSList     *themes);
+void        gs_manager_set_mode             (GSManager  *manager,
+        GSSaverMode mode);
+void        gs_manager_show_message         (GSManager  *manager,
+        const char *summary,
+        const char *body,
+        const char *icon);
+gboolean    gs_manager_request_unlock       (GSManager  *manager);
+void        gs_manager_cancel_unlock_request (GSManager *manager);
+
+G_END_DECLS
+
+#endif /* __GS_MANAGER_H */
diff --git a/src/gs-manager.h.orig b/src/gs-manager.h.orig
new file mode 100644
index 0000000..6ef8db2
--- /dev/null
+++ b/src/gs-manager.h.orig
@@ -0,0 +1,107 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_MANAGER_H
+#define __GS_MANAGER_H
+
+#include "gs-prefs.h"
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_MANAGER         (gs_manager_get_type ())
+#define GS_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_MANAGER, GSManager))
+#define GS_MANAGER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_MANAGER, GSManagerClass))
+#define GS_IS_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_MANAGER))
+#define GS_IS_MANAGER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_MANAGER))
+#define GS_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_MANAGER, GSManagerClass))
+
+typedef struct GSManagerPrivate GSManagerPrivate;
+
+typedef struct
+{
+    GObject          parent;
+    GSManagerPrivate *priv;
+} GSManager;
+
+typedef struct
+{
+    GObjectClass     parent_class;
+
+    void            (* activated)          (GSManager *manager);
+    void            (* deactivated)        (GSManager *manager);
+    void            (* auth_request_begin) (GSManager *manager);
+    void            (* auth_request_end)   (GSManager *manager);
+
+} GSManagerClass;
+
+GType       gs_manager_get_type             (void);
+
+GSManager * gs_manager_new                  (void);
+
+gboolean    gs_manager_set_active           (GSManager  *manager,
+        gboolean    active);
+gboolean    gs_manager_get_active           (GSManager  *manager);
+
+gboolean    gs_manager_cycle                (GSManager  *manager);
+
+void        gs_manager_get_lock_active      (GSManager  *manager,
+        gboolean   *lock_active);
+void        gs_manager_set_lock_active      (GSManager  *manager,
+        gboolean    lock_active);
+void        gs_manager_set_keyboard_enabled (GSManager  *manager,
+        gboolean    enabled);
+void        gs_manager_set_keyboard_command (GSManager  *manager,
+        const char *command);
+void        gs_manager_set_status_message   (GSManager  *manager,
+        const char *message);
+void        gs_manager_get_lock_enabled     (GSManager  *manager,
+        gboolean   *lock_enabled);
+void        gs_manager_set_lock_enabled     (GSManager  *manager,
+        gboolean    lock_enabled);
+void        gs_manager_set_lock_timeout     (GSManager  *manager,
+        glong       lock_timeout);
+void        gs_manager_set_logout_enabled   (GSManager  *manager,
+        gboolean    logout_enabled);
+void        gs_manager_set_user_switch_enabled (GSManager  *manager,
+        gboolean    user_switch_enabled);
+void        gs_manager_set_logout_timeout   (GSManager  *manager,
+        glong       logout_timeout);
+void        gs_manager_set_logout_command   (GSManager  *manager,
+        const char *command);
+void        gs_manager_set_throttled        (GSManager  *manager,
+        gboolean    lock_enabled);
+void        gs_manager_set_cycle_timeout    (GSManager  *manager,
+        glong       cycle_timeout);
+void        gs_manager_set_themes           (GSManager  *manager,
+        GSList     *themes);
+void        gs_manager_set_mode             (GSManager  *manager,
+        GSSaverMode mode);
+void        gs_manager_show_message         (GSManager  *manager,
+        const char *summary,
+        const char *body,
+        const char *icon);
+gboolean    gs_manager_request_unlock       (GSManager  *manager);
+void        gs_manager_cancel_unlock_request (GSManager *manager);
+
+G_END_DECLS
+
+#endif /* __GS_MANAGER_H */
diff --git a/src/gs-marshal.list b/src/gs-marshal.list
new file mode 100644
index 0000000..9a4d620
--- /dev/null
+++ b/src/gs-marshal.list
@@ -0,0 +1,4 @@
+BOOLEAN:VOID
+BOOLEAN:INT
+BOOLEAN:BOOLEAN
+VOID:STRING,STRING,STRING
diff --git a/src/gs-monitor.c b/src/gs-monitor.c
new file mode 100644
index 0000000..2703ba3
--- /dev/null
+++ b/src/gs-monitor.c
@@ -0,0 +1,528 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include "mate-screensaver.h"
+
+#include "gs-manager.h"
+#include "gs-watcher.h"
+#include "gs-fade.h"
+#include "gs-grab.h"
+
+#include "gs-listener-dbus.h"
+#include "gs-monitor.h"
+#include "gs-prefs.h"
+#include "gs-debug.h"
+
+static void     gs_monitor_class_init (GSMonitorClass *klass);
+static void     gs_monitor_init       (GSMonitor      *monitor);
+static void     gs_monitor_finalize   (GObject        *object);
+
+#define GS_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_MONITOR, GSMonitorPrivate))
+
+struct GSMonitorPrivate
+{
+	GSWatcher      *watcher;
+	GSListener     *listener;
+	GSManager      *manager;
+	GSPrefs        *prefs;
+	GSFade         *fade;
+	GSGrab         *grab;
+	guint           release_grab_id;
+};
+
+#define FADE_TIMEOUT 10000
+
+G_DEFINE_TYPE (GSMonitor, gs_monitor, G_TYPE_OBJECT)
+
+static void
+gs_monitor_class_init (GSMonitorClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize = gs_monitor_finalize;
+
+	g_type_class_add_private (klass, sizeof (GSMonitorPrivate));
+}
+
+static void
+manager_activated_cb (GSManager *manager,
+                      GSMonitor *monitor)
+{
+}
+
+static void
+manager_deactivated_cb (GSManager *manager,
+                        GSMonitor *monitor)
+{
+	gs_listener_set_active (monitor->priv->listener, FALSE);
+}
+
+static gboolean
+watcher_idle_cb (GSWatcher *watcher,
+                 gboolean   is_idle,
+                 GSMonitor *monitor)
+{
+	gboolean res;
+
+	gs_debug ("Idle signal detected: %d", is_idle);
+
+	res = gs_listener_set_session_idle (monitor->priv->listener, is_idle);
+
+	return res;
+}
+
+static gboolean
+release_grab_timeout (GSMonitor *monitor)
+{
+	gboolean manager_active;
+
+	manager_active = gs_manager_get_active (monitor->priv->manager);
+	if (! manager_active)
+	{
+		gs_grab_release (monitor->priv->grab);
+	}
+
+	monitor->priv->release_grab_id = 0;
+	return FALSE;
+}
+
+static gboolean
+watcher_idle_notice_cb (GSWatcher *watcher,
+                        gboolean   in_effect,
+                        GSMonitor *monitor)
+{
+	gboolean activation_enabled;
+	gboolean inhibited;
+	gboolean handled;
+
+	gs_debug ("Idle notice signal detected: %d", in_effect);
+
+	/* only fade if screensaver can activate */
+	activation_enabled = gs_listener_get_activation_enabled (monitor->priv->listener);
+	inhibited = gs_listener_is_inhibited (monitor->priv->listener);
+
+	handled = FALSE;
+	if (in_effect)
+	{
+		if (activation_enabled && ! inhibited)
+		{
+			/* start slow fade */
+			if (gs_grab_grab_offscreen (monitor->priv->grab, FALSE))
+			{
+				gs_fade_async (monitor->priv->fade, FADE_TIMEOUT, NULL, NULL);
+			}
+			else
+			{
+				gs_debug ("Could not grab the keyboard so not performing idle warning fade-out");
+			}
+
+			handled = TRUE;
+		}
+	}
+	else
+	{
+		gboolean manager_active;
+
+		manager_active = gs_manager_get_active (monitor->priv->manager);
+		/* cancel the fade unless manager was activated */
+		if (! manager_active)
+		{
+			gs_debug ("manager not active, performing fade cancellation");
+			gs_fade_reset (monitor->priv->fade);
+
+			/* don't release the grab immediately to prevent typing passwords into windows */
+			if (monitor->priv->release_grab_id != 0)
+			{
+				g_source_remove (monitor->priv->release_grab_id);
+			}
+			monitor->priv->release_grab_id = g_timeout_add (1000, (GSourceFunc)release_grab_timeout, monitor);
+		}
+		else
+		{
+			gs_debug ("manager active, skipping fade cancellation");
+		}
+
+		handled = TRUE;
+	}
+
+	return handled;
+}
+
+static void
+gs_monitor_lock_screen (GSMonitor *monitor)
+{
+	gboolean res;
+	gboolean locked;
+
+	/* set lock flag before trying to activate screensaver
+	   in case something tries to react to the ActiveChanged signal */
+
+	gs_manager_get_lock_active (monitor->priv->manager, &locked);
+	gs_manager_set_lock_active (monitor->priv->manager, TRUE);
+	res = gs_listener_set_active (monitor->priv->listener, TRUE);
+	if (! res)
+	{
+		/* If we've failed then restore lock status */
+		gs_manager_set_lock_active (monitor->priv->manager, locked);
+		gs_debug ("Unable to lock the screen");
+	}
+}
+
+static void
+gs_monitor_simulate_user_activity (GSMonitor *monitor)
+{
+	/* FIXME: reset the xsync timer? */
+
+	/* request that the manager unlock -
+	   will pop up a dialog if necessary */
+	gs_manager_request_unlock (monitor->priv->manager);
+}
+
+static void
+listener_lock_cb (GSListener *listener,
+                  GSMonitor  *monitor)
+{
+	if (! monitor->priv->prefs->lock_disabled)
+	{
+		gs_monitor_lock_screen (monitor);
+	}
+	else
+	{
+		gs_debug ("Locking disabled by the administrator");
+	}
+
+}
+
+static void
+listener_quit_cb (GSListener *listener,
+                  GSMonitor  *monitor)
+{
+	gs_listener_set_active (monitor->priv->listener, FALSE);
+	mate_screensaver_quit ();
+}
+
+static void
+listener_cycle_cb (GSListener *listener,
+                   GSMonitor  *monitor)
+{
+	gs_manager_cycle (monitor->priv->manager);
+}
+
+static void
+listener_show_message_cb (GSListener *listener,
+                          const char *summary,
+                          const char *body,
+                          const char *icon,
+                          GSMonitor  *monitor)
+{
+	gs_manager_show_message (monitor->priv->manager,
+	                         summary,
+	                         body,
+	                         icon);
+}
+
+static gboolean
+listener_active_changed_cb (GSListener *listener,
+                            gboolean    active,
+                            GSMonitor  *monitor)
+{
+	gboolean res;
+	gboolean ret;
+	gboolean idle_watch_enabled;
+
+	res = gs_manager_set_active (monitor->priv->manager, active);
+	if (! res)
+	{
+		gs_debug ("Unable to set manager active: %d", active);
+		ret = FALSE;
+		goto done;
+	}
+
+	ret = TRUE;
+
+done:
+
+	idle_watch_enabled = gs_watcher_get_enabled (monitor->priv->watcher);
+	if (ret && idle_watch_enabled)
+	{
+		res = gs_watcher_set_active (monitor->priv->watcher, !active);
+		if (! res)
+		{
+			gs_debug ("Unable to set the idle watcher active: %d", !active);
+		}
+	}
+
+	return ret;
+}
+
+static void
+listener_throttle_changed_cb (GSListener *listener,
+                              gboolean    throttled,
+                              GSMonitor  *monitor)
+{
+	gs_manager_set_throttled (monitor->priv->manager, throttled);
+}
+
+static void
+listener_simulate_user_activity_cb (GSListener *listener,
+                                    GSMonitor  *monitor)
+{
+	gs_monitor_simulate_user_activity (monitor);
+}
+
+static void
+_gs_monitor_update_from_prefs (GSMonitor *monitor,
+                               GSPrefs   *prefs)
+{
+	gboolean idle_detection_enabled;
+	gboolean idle_detection_active;
+	gboolean activate_watch;
+	gboolean manager_active;
+	gboolean lock_enabled;
+	gboolean user_switch_enabled;
+
+	lock_enabled = (monitor->priv->prefs->lock_enabled && !monitor->priv->prefs->lock_disabled);
+	user_switch_enabled = (monitor->priv->prefs->user_switch_enabled && !monitor->priv->prefs->user_switch_disabled);
+
+	gs_manager_set_lock_enabled (monitor->priv->manager, lock_enabled);
+	gs_manager_set_lock_timeout (monitor->priv->manager, monitor->priv->prefs->lock_timeout);
+	gs_manager_set_logout_enabled (monitor->priv->manager, monitor->priv->prefs->logout_enabled);
+	gs_manager_set_user_switch_enabled (monitor->priv->manager, user_switch_enabled);
+	gs_manager_set_keyboard_enabled (monitor->priv->manager, monitor->priv->prefs->keyboard_enabled);
+	gs_manager_set_logout_timeout (monitor->priv->manager, monitor->priv->prefs->logout_timeout);
+	gs_manager_set_logout_command (monitor->priv->manager, monitor->priv->prefs->logout_command);
+	gs_manager_set_keyboard_command (monitor->priv->manager, monitor->priv->prefs->keyboard_command);
+	gs_manager_set_cycle_timeout (monitor->priv->manager, monitor->priv->prefs->cycle);
+	gs_manager_set_mode (monitor->priv->manager, monitor->priv->prefs->mode);
+	gs_manager_set_themes (monitor->priv->manager, monitor->priv->prefs->themes);
+
+	/* enable activation when allowed */
+	gs_listener_set_activation_enabled (monitor->priv->listener,
+	                                    monitor->priv->prefs->idle_activation_enabled);
+
+	/* idle detection always enabled */
+	idle_detection_enabled = TRUE;
+
+	gs_watcher_set_enabled (monitor->priv->watcher, idle_detection_enabled);
+
+	/* in the case where idle detection is reenabled we may need to
+	   activate the watcher too */
+
+	manager_active = gs_manager_get_active (monitor->priv->manager);
+	idle_detection_active = gs_watcher_get_active (monitor->priv->watcher);
+	activate_watch = (! manager_active
+	                  && ! idle_detection_active
+	                  && idle_detection_enabled);
+	if (activate_watch)
+	{
+		gs_watcher_set_active (monitor->priv->watcher, TRUE);
+	}
+
+	if (monitor->priv->prefs->status_message_enabled)
+	{
+		char *text;
+		g_object_get (monitor->priv->watcher,
+		              "status-message", &text,
+		              NULL);
+		gs_manager_set_status_message (monitor->priv->manager, text);
+		g_free (text);
+	}
+	else
+	{
+		gs_manager_set_status_message (monitor->priv->manager, NULL);
+	}
+}
+
+static void
+disconnect_listener_signals (GSMonitor *monitor)
+{
+	g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_lock_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_quit_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_cycle_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_active_changed_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_throttle_changed_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_simulate_user_activity_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_show_message_cb, monitor);
+}
+
+static void
+connect_listener_signals (GSMonitor *monitor)
+{
+	g_signal_connect (monitor->priv->listener, "lock",
+	                  G_CALLBACK (listener_lock_cb), monitor);
+	g_signal_connect (monitor->priv->listener, "quit",
+	                  G_CALLBACK (listener_quit_cb), monitor);
+	g_signal_connect (monitor->priv->listener, "cycle",
+	                  G_CALLBACK (listener_cycle_cb), monitor);
+	g_signal_connect (monitor->priv->listener, "active-changed",
+	                  G_CALLBACK (listener_active_changed_cb), monitor);
+	g_signal_connect (monitor->priv->listener, "throttle-changed",
+	                  G_CALLBACK (listener_throttle_changed_cb), monitor);
+	g_signal_connect (monitor->priv->listener, "simulate-user-activity",
+	                  G_CALLBACK (listener_simulate_user_activity_cb), monitor);
+	g_signal_connect (monitor->priv->listener, "show-message",
+	                  G_CALLBACK (listener_show_message_cb), monitor);
+}
+
+static void
+on_watcher_status_message_changed (GSWatcher  *watcher,
+                                   GParamSpec *pspec,
+                                   GSMonitor  *monitor)
+{
+	char *text;
+	g_object_get (watcher, "status-message", &text, NULL);
+	gs_manager_set_status_message (monitor->priv->manager, text);
+	g_free (text);
+}
+
+static void
+disconnect_watcher_signals (GSMonitor *monitor)
+{
+	g_signal_handlers_disconnect_by_func (monitor->priv->watcher, watcher_idle_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->watcher, watcher_idle_notice_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->watcher, on_watcher_status_message_changed, monitor);
+}
+
+static void
+connect_watcher_signals (GSMonitor *monitor)
+{
+	g_signal_connect (monitor->priv->watcher, "idle-changed",
+	                  G_CALLBACK (watcher_idle_cb), monitor);
+	g_signal_connect (monitor->priv->watcher, "idle-notice-changed",
+	                  G_CALLBACK (watcher_idle_notice_cb), monitor);
+	g_signal_connect (monitor->priv->watcher, "notify::status-message",
+	                  G_CALLBACK (on_watcher_status_message_changed), monitor);
+
+}
+
+static void
+disconnect_manager_signals (GSMonitor *monitor)
+{
+	g_signal_handlers_disconnect_by_func (monitor->priv->manager, manager_activated_cb, monitor);
+	g_signal_handlers_disconnect_by_func (monitor->priv->manager, manager_deactivated_cb, monitor);
+}
+
+static void
+connect_manager_signals (GSMonitor *monitor)
+{
+	g_signal_connect (monitor->priv->manager, "activated",
+	                  G_CALLBACK (manager_activated_cb), monitor);
+	g_signal_connect (monitor->priv->manager, "deactivated",
+	                  G_CALLBACK (manager_deactivated_cb), monitor);
+}
+
+static void
+disconnect_prefs_signals (GSMonitor *monitor)
+{
+	g_signal_handlers_disconnect_by_func (monitor->priv->prefs, _gs_monitor_update_from_prefs, monitor);
+}
+
+static void
+connect_prefs_signals (GSMonitor *monitor)
+{
+	g_signal_connect_swapped (monitor->priv->prefs, "changed",
+	                          G_CALLBACK (_gs_monitor_update_from_prefs), monitor);
+}
+
+static void
+gs_monitor_init (GSMonitor *monitor)
+{
+
+	monitor->priv = GS_MONITOR_GET_PRIVATE (monitor);
+
+	monitor->priv->prefs = gs_prefs_new ();
+	connect_prefs_signals (monitor);
+
+	monitor->priv->listener = gs_listener_new ();
+	connect_listener_signals (monitor);
+
+	monitor->priv->fade = gs_fade_new ();
+	monitor->priv->grab = gs_grab_new ();
+
+	monitor->priv->watcher = gs_watcher_new ();
+	connect_watcher_signals (monitor);
+
+	monitor->priv->manager = gs_manager_new ();
+	connect_manager_signals (monitor);
+
+	_gs_monitor_update_from_prefs (monitor, monitor->priv->prefs);
+}
+
+static void
+gs_monitor_finalize (GObject *object)
+{
+	GSMonitor *monitor;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_MONITOR (object));
+
+	monitor = GS_MONITOR (object);
+
+	g_return_if_fail (monitor->priv != NULL);
+
+	disconnect_watcher_signals (monitor);
+	disconnect_listener_signals (monitor);
+	disconnect_manager_signals (monitor);
+	disconnect_prefs_signals (monitor);
+
+	g_object_unref (monitor->priv->fade);
+	g_object_unref (monitor->priv->grab);
+	g_object_unref (monitor->priv->watcher);
+	g_object_unref (monitor->priv->listener);
+	g_object_unref (monitor->priv->manager);
+	g_object_unref (monitor->priv->prefs);
+
+	G_OBJECT_CLASS (gs_monitor_parent_class)->finalize (object);
+}
+
+GSMonitor *
+gs_monitor_new (void)
+{
+	GSMonitor *monitor;
+
+	monitor = g_object_new (GS_TYPE_MONITOR, NULL);
+
+	return GS_MONITOR (monitor);
+}
+
+gboolean
+gs_monitor_start (GSMonitor *monitor,
+                  GError   **error)
+{
+	g_return_val_if_fail (GS_IS_MONITOR (monitor), FALSE);
+
+	if (! gs_listener_acquire (monitor->priv->listener, error))
+	{
+		return FALSE;
+	}
+
+	return TRUE;
+}
diff --git a/src/gs-monitor.c.orig b/src/gs-monitor.c.orig
new file mode 100644
index 0000000..c8478a4
--- /dev/null
+++ b/src/gs-monitor.c.orig
@@ -0,0 +1,528 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include "mate-screensaver.h"
+
+#include "gs-manager.h"
+#include "gs-watcher.h"
+#include "gs-fade.h"
+#include "gs-grab.h"
+
+#include "gs-listener-dbus.h"
+#include "gs-monitor.h"
+#include "gs-prefs.h"
+#include "gs-debug.h"
+
+static void     gs_monitor_class_init (GSMonitorClass *klass);
+static void     gs_monitor_init       (GSMonitor      *monitor);
+static void     gs_monitor_finalize   (GObject        *object);
+
+#define GS_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_MONITOR, GSMonitorPrivate))
+
+struct GSMonitorPrivate
+{
+    GSWatcher      *watcher;
+    GSListener     *listener;
+    GSManager      *manager;
+    GSPrefs        *prefs;
+    GSFade         *fade;
+    GSGrab         *grab;
+    guint           release_grab_id;
+};
+
+#define FADE_TIMEOUT 10000
+
+G_DEFINE_TYPE (GSMonitor, gs_monitor, G_TYPE_OBJECT)
+
+static void
+gs_monitor_class_init (GSMonitorClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize = gs_monitor_finalize;
+
+    g_type_class_add_private (klass, sizeof (GSMonitorPrivate));
+}
+
+static void
+manager_activated_cb (GSManager *manager,
+                      GSMonitor *monitor)
+{
+}
+
+static void
+manager_deactivated_cb (GSManager *manager,
+                        GSMonitor *monitor)
+{
+    gs_listener_set_active (monitor->priv->listener, FALSE);
+}
+
+static gboolean
+watcher_idle_cb (GSWatcher *watcher,
+                 gboolean   is_idle,
+                 GSMonitor *monitor)
+{
+    gboolean res;
+
+    gs_debug ("Idle signal detected: %d", is_idle);
+
+    res = gs_listener_set_session_idle (monitor->priv->listener, is_idle);
+
+    return res;
+}
+
+static gboolean
+release_grab_timeout (GSMonitor *monitor)
+{
+    gboolean manager_active;
+
+    manager_active = gs_manager_get_active (monitor->priv->manager);
+    if (! manager_active)
+    {
+        gs_grab_release (monitor->priv->grab);
+    }
+
+    monitor->priv->release_grab_id = 0;
+    return FALSE;
+}
+
+static gboolean
+watcher_idle_notice_cb (GSWatcher *watcher,
+                        gboolean   in_effect,
+                        GSMonitor *monitor)
+{
+    gboolean activation_enabled;
+    gboolean inhibited;
+    gboolean handled;
+
+    gs_debug ("Idle notice signal detected: %d", in_effect);
+
+    /* only fade if screensaver can activate */
+    activation_enabled = gs_listener_get_activation_enabled (monitor->priv->listener);
+    inhibited = gs_listener_is_inhibited (monitor->priv->listener);
+
+    handled = FALSE;
+    if (in_effect)
+    {
+        if (activation_enabled && ! inhibited)
+        {
+            /* start slow fade */
+            if (gs_grab_grab_offscreen (monitor->priv->grab, FALSE))
+            {
+                gs_fade_async (monitor->priv->fade, FADE_TIMEOUT, NULL, NULL);
+            }
+            else
+            {
+                gs_debug ("Could not grab the keyboard so not performing idle warning fade-out");
+            }
+
+            handled = TRUE;
+        }
+    }
+    else
+    {
+        gboolean manager_active;
+
+        manager_active = gs_manager_get_active (monitor->priv->manager);
+        /* cancel the fade unless manager was activated */
+        if (! manager_active)
+        {
+            gs_debug ("manager not active, performing fade cancellation");
+            gs_fade_reset (monitor->priv->fade);
+
+            /* don't release the grab immediately to prevent typing passwords into windows */
+            if (monitor->priv->release_grab_id != 0)
+            {
+                g_source_remove (monitor->priv->release_grab_id);
+            }
+            monitor->priv->release_grab_id = g_timeout_add (1000, (GSourceFunc)release_grab_timeout, monitor);
+        }
+        else
+        {
+            gs_debug ("manager active, skipping fade cancellation");
+        }
+
+        handled = TRUE;
+    }
+
+    return handled;
+}
+
+static void
+gs_monitor_lock_screen (GSMonitor *monitor)
+{
+    gboolean res;
+    gboolean locked;
+
+    /* set lock flag before trying to activate screensaver
+       in case something tries to react to the ActiveChanged signal */
+
+    gs_manager_get_lock_active (monitor->priv->manager, &locked);
+    gs_manager_set_lock_active (monitor->priv->manager, TRUE);
+    res = gs_listener_set_active (monitor->priv->listener, TRUE);
+    if (! res)
+    {
+        /* If we've failed then restore lock status */
+        gs_manager_set_lock_active (monitor->priv->manager, locked);
+        gs_debug ("Unable to lock the screen");
+    }
+}
+
+static void
+gs_monitor_simulate_user_activity (GSMonitor *monitor)
+{
+    /* FIXME: reset the xsync timer? */
+
+    /* request that the manager unlock -
+       will pop up a dialog if necessary */
+    gs_manager_request_unlock (monitor->priv->manager);
+}
+
+static void
+listener_lock_cb (GSListener *listener,
+                  GSMonitor  *monitor)
+{
+    if (! monitor->priv->prefs->lock_disabled)
+    {
+        gs_monitor_lock_screen (monitor);
+    }
+    else
+    {
+        gs_debug ("Locking disabled by the administrator");
+    }
+
+}
+
+static void
+listener_quit_cb (GSListener *listener,
+                  GSMonitor  *monitor)
+{
+    gs_listener_set_active (monitor->priv->listener, FALSE);
+    mate_screensaver_quit ();
+}
+
+static void
+listener_cycle_cb (GSListener *listener,
+                   GSMonitor  *monitor)
+{
+    gs_manager_cycle (monitor->priv->manager);
+}
+
+static void
+listener_show_message_cb (GSListener *listener,
+                          const char *summary,
+                          const char *body,
+                          const char *icon,
+                          GSMonitor  *monitor)
+{
+    gs_manager_show_message (monitor->priv->manager,
+                             summary,
+                             body,
+                             icon);
+}
+
+static gboolean
+listener_active_changed_cb (GSListener *listener,
+                            gboolean    active,
+                            GSMonitor  *monitor)
+{
+    gboolean res;
+    gboolean ret;
+    gboolean idle_watch_enabled;
+
+    res = gs_manager_set_active (monitor->priv->manager, active);
+    if (! res)
+    {
+        gs_debug ("Unable to set manager active: %d", active);
+        ret = FALSE;
+        goto done;
+    }
+
+    ret = TRUE;
+
+done:
+
+    idle_watch_enabled = gs_watcher_get_enabled (monitor->priv->watcher);
+    if (ret && idle_watch_enabled)
+    {
+        res = gs_watcher_set_active (monitor->priv->watcher, !active);
+        if (! res)
+        {
+            gs_debug ("Unable to set the idle watcher active: %d", !active);
+        }
+    }
+
+    return ret;
+}
+
+static void
+listener_throttle_changed_cb (GSListener *listener,
+                              gboolean    throttled,
+                              GSMonitor  *monitor)
+{
+    gs_manager_set_throttled (monitor->priv->manager, throttled);
+}
+
+static void
+listener_simulate_user_activity_cb (GSListener *listener,
+                                    GSMonitor  *monitor)
+{
+    gs_monitor_simulate_user_activity (monitor);
+}
+
+static void
+_gs_monitor_update_from_prefs (GSMonitor *monitor,
+                               GSPrefs   *prefs)
+{
+    gboolean idle_detection_enabled;
+    gboolean idle_detection_active;
+    gboolean activate_watch;
+    gboolean manager_active;
+    gboolean lock_enabled;
+    gboolean user_switch_enabled;
+
+    lock_enabled = (monitor->priv->prefs->lock_enabled && !monitor->priv->prefs->lock_disabled);
+    user_switch_enabled = (monitor->priv->prefs->user_switch_enabled && !monitor->priv->prefs->user_switch_disabled);
+
+    gs_manager_set_lock_enabled (monitor->priv->manager, lock_enabled);
+    gs_manager_set_lock_timeout (monitor->priv->manager, monitor->priv->prefs->lock_timeout);
+    gs_manager_set_logout_enabled (monitor->priv->manager, monitor->priv->prefs->logout_enabled);
+    gs_manager_set_user_switch_enabled (monitor->priv->manager, user_switch_enabled);
+    gs_manager_set_keyboard_enabled (monitor->priv->manager, monitor->priv->prefs->keyboard_enabled);
+    gs_manager_set_logout_timeout (monitor->priv->manager, monitor->priv->prefs->logout_timeout);
+    gs_manager_set_logout_command (monitor->priv->manager, monitor->priv->prefs->logout_command);
+    gs_manager_set_keyboard_command (monitor->priv->manager, monitor->priv->prefs->keyboard_command);
+    gs_manager_set_cycle_timeout (monitor->priv->manager, monitor->priv->prefs->cycle);
+    gs_manager_set_mode (monitor->priv->manager, monitor->priv->prefs->mode);
+    gs_manager_set_themes (monitor->priv->manager, monitor->priv->prefs->themes);
+
+    /* enable activation when allowed */
+    gs_listener_set_activation_enabled (monitor->priv->listener,
+                                        monitor->priv->prefs->idle_activation_enabled);
+
+    /* idle detection always enabled */
+    idle_detection_enabled = TRUE;
+
+    gs_watcher_set_enabled (monitor->priv->watcher, idle_detection_enabled);
+
+    /* in the case where idle detection is reenabled we may need to
+       activate the watcher too */
+
+    manager_active = gs_manager_get_active (monitor->priv->manager);
+    idle_detection_active = gs_watcher_get_active (monitor->priv->watcher);
+    activate_watch = (! manager_active
+                      && ! idle_detection_active
+                      && idle_detection_enabled);
+    if (activate_watch)
+    {
+        gs_watcher_set_active (monitor->priv->watcher, TRUE);
+    }
+
+    if (monitor->priv->prefs->status_message_enabled)
+    {
+        char *text;
+        g_object_get (monitor->priv->watcher,
+                      "status-message", &text,
+                      NULL);
+        gs_manager_set_status_message (monitor->priv->manager, text);
+        g_free (text);
+    }
+    else
+    {
+        gs_manager_set_status_message (monitor->priv->manager, NULL);
+    }
+}
+
+static void
+disconnect_listener_signals (GSMonitor *monitor)
+{
+    g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_lock_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_quit_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_cycle_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_active_changed_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_throttle_changed_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_simulate_user_activity_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->listener, listener_show_message_cb, monitor);
+}
+
+static void
+connect_listener_signals (GSMonitor *monitor)
+{
+    g_signal_connect (monitor->priv->listener, "lock",
+                      G_CALLBACK (listener_lock_cb), monitor);
+    g_signal_connect (monitor->priv->listener, "quit",
+                      G_CALLBACK (listener_quit_cb), monitor);
+    g_signal_connect (monitor->priv->listener, "cycle",
+                      G_CALLBACK (listener_cycle_cb), monitor);
+    g_signal_connect (monitor->priv->listener, "active-changed",
+                      G_CALLBACK (listener_active_changed_cb), monitor);
+    g_signal_connect (monitor->priv->listener, "throttle-changed",
+                      G_CALLBACK (listener_throttle_changed_cb), monitor);
+    g_signal_connect (monitor->priv->listener, "simulate-user-activity",
+                      G_CALLBACK (listener_simulate_user_activity_cb), monitor);
+    g_signal_connect (monitor->priv->listener, "show-message",
+                      G_CALLBACK (listener_show_message_cb), monitor);
+}
+
+static void
+on_watcher_status_message_changed (GSWatcher  *watcher,
+                                   GParamSpec *pspec,
+                                   GSMonitor  *monitor)
+{
+    char *text;
+    g_object_get (watcher, "status-message", &text, NULL);
+    gs_manager_set_status_message (monitor->priv->manager, text);
+    g_free (text);
+}
+
+static void
+disconnect_watcher_signals (GSMonitor *monitor)
+{
+    g_signal_handlers_disconnect_by_func (monitor->priv->watcher, watcher_idle_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->watcher, watcher_idle_notice_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->watcher, on_watcher_status_message_changed, monitor);
+}
+
+static void
+connect_watcher_signals (GSMonitor *monitor)
+{
+    g_signal_connect (monitor->priv->watcher, "idle-changed",
+                      G_CALLBACK (watcher_idle_cb), monitor);
+    g_signal_connect (monitor->priv->watcher, "idle-notice-changed",
+                      G_CALLBACK (watcher_idle_notice_cb), monitor);
+    g_signal_connect (monitor->priv->watcher, "notify::status-message",
+                      G_CALLBACK (on_watcher_status_message_changed), monitor);
+
+}
+
+static void
+disconnect_manager_signals (GSMonitor *monitor)
+{
+    g_signal_handlers_disconnect_by_func (monitor->priv->manager, manager_activated_cb, monitor);
+    g_signal_handlers_disconnect_by_func (monitor->priv->manager, manager_deactivated_cb, monitor);
+}
+
+static void
+connect_manager_signals (GSMonitor *monitor)
+{
+    g_signal_connect (monitor->priv->manager, "activated",
+                      G_CALLBACK (manager_activated_cb), monitor);
+    g_signal_connect (monitor->priv->manager, "deactivated",
+                      G_CALLBACK (manager_deactivated_cb), monitor);
+}
+
+static void
+disconnect_prefs_signals (GSMonitor *monitor)
+{
+    g_signal_handlers_disconnect_by_func (monitor->priv->prefs, _gs_monitor_update_from_prefs, monitor);
+}
+
+static void
+connect_prefs_signals (GSMonitor *monitor)
+{
+    g_signal_connect_swapped (monitor->priv->prefs, "changed",
+                              G_CALLBACK (_gs_monitor_update_from_prefs), monitor);
+}
+
+static void
+gs_monitor_init (GSMonitor *monitor)
+{
+
+    monitor->priv = GS_MONITOR_GET_PRIVATE (monitor);
+
+    monitor->priv->prefs = gs_prefs_new ();
+    connect_prefs_signals (monitor);
+
+    monitor->priv->listener = gs_listener_new ();
+    connect_listener_signals (monitor);
+
+    monitor->priv->fade = gs_fade_new ();
+    monitor->priv->grab = gs_grab_new ();
+
+    monitor->priv->watcher = gs_watcher_new ();
+    connect_watcher_signals (monitor);
+
+    monitor->priv->manager = gs_manager_new ();
+    connect_manager_signals (monitor);
+
+    _gs_monitor_update_from_prefs (monitor, monitor->priv->prefs);
+}
+
+static void
+gs_monitor_finalize (GObject *object)
+{
+    GSMonitor *monitor;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_MONITOR (object));
+
+    monitor = GS_MONITOR (object);
+
+    g_return_if_fail (monitor->priv != NULL);
+
+    disconnect_watcher_signals (monitor);
+    disconnect_listener_signals (monitor);
+    disconnect_manager_signals (monitor);
+    disconnect_prefs_signals (monitor);
+
+    g_object_unref (monitor->priv->fade);
+    g_object_unref (monitor->priv->grab);
+    g_object_unref (monitor->priv->watcher);
+    g_object_unref (monitor->priv->listener);
+    g_object_unref (monitor->priv->manager);
+    g_object_unref (monitor->priv->prefs);
+
+    G_OBJECT_CLASS (gs_monitor_parent_class)->finalize (object);
+}
+
+GSMonitor *
+gs_monitor_new (void)
+{
+    GSMonitor *monitor;
+
+    monitor = g_object_new (GS_TYPE_MONITOR, NULL);
+
+    return GS_MONITOR (monitor);
+}
+
+gboolean
+gs_monitor_start (GSMonitor *monitor,
+                  GError   **error)
+{
+    g_return_val_if_fail (GS_IS_MONITOR (monitor), FALSE);
+
+    if (! gs_listener_acquire (monitor->priv->listener, error))
+    {
+        return FALSE;
+    }
+
+    return TRUE;
+}
diff --git a/src/gs-monitor.h b/src/gs-monitor.h
new file mode 100644
index 0000000..6acc18c
--- /dev/null
+++ b/src/gs-monitor.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_MONITOR_H
+#define __GS_MONITOR_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_MONITOR         (gs_monitor_get_type ())
+#define GS_MONITOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_MONITOR, GSMonitor))
+#define GS_MONITOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_MONITOR, GSMonitorClass))
+#define GS_IS_MONITOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_MONITOR))
+#define GS_IS_MONITOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_MONITOR))
+#define GS_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_MONITOR, GSMonitorClass))
+
+typedef struct GSMonitorPrivate GSMonitorPrivate;
+
+typedef struct
+{
+	GObject          parent;
+	GSMonitorPrivate *priv;
+} GSMonitor;
+
+typedef struct
+{
+	GObjectClass     parent_class;
+} GSMonitorClass;
+
+GType       gs_monitor_get_type (void);
+
+GSMonitor * gs_monitor_new              (void);
+gboolean    gs_monitor_start            (GSMonitor *monitor,
+        GError   **error);
+void        gs_monitor_set_lock_enabled (GSMonitor *monitor,
+        gboolean   lock_enabled);
+G_END_DECLS
+
+#endif /* __GS_MONITOR_H */
diff --git a/src/gs-monitor.h.orig b/src/gs-monitor.h.orig
new file mode 100644
index 0000000..8ab3b0d
--- /dev/null
+++ b/src/gs-monitor.h.orig
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_MONITOR_H
+#define __GS_MONITOR_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_MONITOR         (gs_monitor_get_type ())
+#define GS_MONITOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_MONITOR, GSMonitor))
+#define GS_MONITOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_MONITOR, GSMonitorClass))
+#define GS_IS_MONITOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_MONITOR))
+#define GS_IS_MONITOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_MONITOR))
+#define GS_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_MONITOR, GSMonitorClass))
+
+typedef struct GSMonitorPrivate GSMonitorPrivate;
+
+typedef struct
+{
+    GObject          parent;
+    GSMonitorPrivate *priv;
+} GSMonitor;
+
+typedef struct
+{
+    GObjectClass     parent_class;
+} GSMonitorClass;
+
+GType       gs_monitor_get_type (void);
+
+GSMonitor * gs_monitor_new              (void);
+gboolean    gs_monitor_start            (GSMonitor *monitor,
+        GError   **error);
+void        gs_monitor_set_lock_enabled (GSMonitor *monitor,
+        gboolean   lock_enabled);
+G_END_DECLS
+
+#endif /* __GS_MONITOR_H */
diff --git a/src/gs-prefs.c b/src/gs-prefs.c
new file mode 100644
index 0000000..0f9d14e
--- /dev/null
+++ b/src/gs-prefs.c
@@ -0,0 +1,995 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib.h>
+#include <glib-object.h>
+#include <mateconf/mateconf-client.h>
+
+#include "gs-prefs.h"
+
+static void gs_prefs_class_init (GSPrefsClass *klass);
+static void gs_prefs_init       (GSPrefs      *prefs);
+static void gs_prefs_finalize   (GObject      *object);
+
+#define MATE_LOCKDOWN_DIR "/desktop/mate/lockdown"
+#define KEY_LOCK_DISABLE          MATE_LOCKDOWN_DIR "/disable_lock_screen"
+#define KEY_USER_SWITCH_DISABLE   MATE_LOCKDOWN_DIR "/disable_user_switching"
+
+#define KEY_DIR            "/apps/mate-screensaver"
+#define MATE_SESSION_DIR  "/desktop/mate/session"
+#define KEY_IDLE_ACTIVATION_ENABLED         KEY_DIR "/idle_activation_enabled"
+#define KEY_LOCK_ENABLED   KEY_DIR "/lock_enabled"
+#define KEY_MODE           KEY_DIR "/mode"
+#define KEY_ACTIVATE_DELAY MATE_SESSION_DIR "/idle_delay"
+#define KEY_POWER_DELAY    KEY_DIR "/power_management_delay"
+#define KEY_LOCK_DELAY     KEY_DIR "/lock_delay"
+#define KEY_CYCLE_DELAY    KEY_DIR "/cycle_delay"
+#define KEY_THEMES         KEY_DIR "/themes"
+#define KEY_USER_SWITCH_ENABLED KEY_DIR "/user_switch_enabled"
+#define KEY_LOGOUT_ENABLED KEY_DIR "/logout_enabled"
+#define KEY_LOGOUT_DELAY   KEY_DIR "/logout_delay"
+#define KEY_LOGOUT_COMMAND KEY_DIR "/logout_command"
+#define KEY_KEYBOARD_ENABLED KEY_DIR "/embedded_keyboard_enabled"
+#define KEY_KEYBOARD_COMMAND KEY_DIR "/embedded_keyboard_command"
+#define KEY_STATUS_MESSAGE_ENABLED   KEY_DIR "/status_message_enabled"
+
+#define GS_PREFS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_PREFS, GSPrefsPrivate))
+
+struct GSPrefsPrivate
+{
+	MateConfClient *mateconf_client;
+};
+
+enum
+{
+    CHANGED,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0
+};
+
+static MateConfEnumStringPair mode_enum_map [] =
+{
+	{ GS_MODE_BLANK_ONLY,       "blank-only" },
+	{ GS_MODE_RANDOM,           "random"     },
+	{ GS_MODE_SINGLE,           "single"     },
+	{ 0, NULL }
+};
+
+static guint         signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSPrefs, gs_prefs, G_TYPE_OBJECT)
+
+static void
+gs_prefs_set_property (GObject            *object,
+                       guint               prop_id,
+                       const GValue       *value,
+                       GParamSpec         *pspec)
+{
+	switch (prop_id)
+	{
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_prefs_get_property (GObject            *object,
+                       guint               prop_id,
+                       GValue             *value,
+                       GParamSpec         *pspec)
+{
+	switch (prop_id)
+	{
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_prefs_class_init (GSPrefsClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize     = gs_prefs_finalize;
+	object_class->get_property = gs_prefs_get_property;
+	object_class->set_property = gs_prefs_set_property;
+
+
+	signals [CHANGED] =
+	    g_signal_new ("changed",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSPrefsClass, changed),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+
+	g_type_class_add_private (klass, sizeof (GSPrefsPrivate));
+
+}
+
+static void
+_gs_prefs_set_timeout (GSPrefs *prefs,
+                       int      value)
+{
+	if (value < 1)
+		value = 10;
+
+	/* pick a reasonable large number for the
+	   upper bound */
+	if (value > 480)
+		value = 480;
+
+	prefs->timeout = value * 60000;
+}
+
+static void
+_gs_prefs_set_power_timeout (GSPrefs *prefs,
+                             int      value)
+{
+	if (value < 1)
+		value = 60;
+
+	/* pick a reasonable large number for the
+	   upper bound */
+	if (value > 480)
+		value = 480;
+
+	/* this value is in seconds - others are in minutes */
+	prefs->power_timeout = value * 1000;
+}
+
+static void
+_gs_prefs_set_lock_timeout (GSPrefs *prefs,
+                            int      value)
+{
+	if (value < 0)
+		value = 0;
+
+	/* pick a reasonable large number for the
+	   upper bound */
+	if (value > 480)
+		value = 480;
+
+	prefs->lock_timeout = value * 60000;
+}
+
+static void
+_gs_prefs_set_cycle_timeout (GSPrefs *prefs,
+                             int      value)
+{
+	if (value < 1)
+		value = 1;
+
+	/* pick a reasonable large number for the
+	   upper bound */
+	if (value > 480)
+		value = 480;
+
+	prefs->cycle = value * 60000;
+}
+
+static void
+_gs_prefs_set_mode (GSPrefs    *prefs,
+                    const char *value)
+{
+	int mode;
+
+	if (value && mateconf_string_to_enum (mode_enum_map, value, &mode))
+		prefs->mode = mode;
+	else
+		prefs->mode = GS_MODE_BLANK_ONLY;
+}
+
+static void
+_gs_prefs_set_themes (GSPrefs *prefs,
+                      GSList  *list)
+{
+	if (prefs->themes)
+	{
+		g_slist_foreach (prefs->themes, (GFunc)g_free, NULL);
+		g_slist_free (prefs->themes);
+	}
+
+	/* take ownership of the list */
+	prefs->themes = list;
+}
+
+static void
+_gs_prefs_set_idle_activation_enabled (GSPrefs *prefs,
+                                       gboolean value)
+{
+	prefs->idle_activation_enabled = value;
+}
+
+static void
+_gs_prefs_set_lock_enabled (GSPrefs *prefs,
+                            gboolean value)
+{
+	prefs->lock_enabled = value;
+}
+
+static void
+_gs_prefs_set_lock_disabled (GSPrefs *prefs,
+                             gboolean value)
+{
+	prefs->lock_disabled = value;
+}
+
+static void
+_gs_prefs_set_user_switch_disabled (GSPrefs *prefs,
+                                    gboolean value)
+{
+	prefs->user_switch_disabled = value;
+}
+
+static void
+_gs_prefs_set_keyboard_enabled (GSPrefs *prefs,
+                                gboolean value)
+{
+	prefs->keyboard_enabled = value;
+}
+
+static void
+_gs_prefs_set_keyboard_command (GSPrefs    *prefs,
+                                const char *value)
+{
+	g_free (prefs->keyboard_command);
+	prefs->keyboard_command = NULL;
+
+	if (value)
+	{
+		/* FIXME: check command */
+
+		prefs->keyboard_command = g_strdup (value);
+	}
+}
+
+static void
+_gs_prefs_set_status_message_enabled (GSPrefs  *prefs,
+                                      gboolean  enabled)
+{
+	prefs->status_message_enabled = enabled;
+}
+
+static void
+_gs_prefs_set_logout_enabled (GSPrefs *prefs,
+                              gboolean value)
+{
+	prefs->logout_enabled = value;
+}
+
+static void
+_gs_prefs_set_logout_command (GSPrefs    *prefs,
+                              const char *value)
+{
+	g_free (prefs->logout_command);
+	prefs->logout_command = NULL;
+
+	if (value)
+	{
+		/* FIXME: check command */
+
+		prefs->logout_command = g_strdup (value);
+	}
+}
+
+static void
+_gs_prefs_set_logout_timeout (GSPrefs *prefs,
+                              int      value)
+{
+	if (value < 0)
+		value = 0;
+
+	/* pick a reasonable large number for the
+	   upper bound */
+	if (value > 480)
+		value = 480;
+
+	prefs->logout_timeout = value * 60000;
+}
+
+static void
+_gs_prefs_set_user_switch_enabled (GSPrefs *prefs,
+                                   gboolean value)
+{
+	prefs->user_switch_enabled = value;
+}
+
+static void
+key_error_and_free (const char *key,
+                    GError     *error)
+{
+	g_warning ("Error retrieving configuration key '%s': %s", key, error->message);
+	g_error_free (error);
+	error = NULL;
+}
+
+static void
+gs_prefs_load_from_mateconf (GSPrefs *prefs)
+{
+	glong    value;
+	gboolean bvalue;
+	char    *string;
+	GSList  *list;
+	GError  *error;
+
+	error = NULL;
+	bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_IDLE_ACTIVATION_ENABLED, &error);
+	if (! error)
+	{
+		_gs_prefs_set_idle_activation_enabled (prefs, bvalue);
+	}
+	else
+	{
+		key_error_and_free (KEY_IDLE_ACTIVATION_ENABLED, error);
+	}
+
+	error = NULL;
+	bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_LOCK_ENABLED, &error);
+	if (! error)
+	{
+		_gs_prefs_set_lock_enabled (prefs, bvalue);
+	}
+	else
+	{
+		key_error_and_free (KEY_LOCK_ENABLED, error);
+	}
+
+	error = NULL;
+	bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_LOCK_DISABLE, &error);
+	if (! error)
+	{
+		_gs_prefs_set_lock_disabled (prefs, bvalue);
+	}
+	else
+	{
+		key_error_and_free (KEY_LOCK_DISABLE, error);
+	}
+
+	error = NULL;
+	bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_USER_SWITCH_DISABLE, &error);
+	if (! error)
+	{
+		_gs_prefs_set_user_switch_disabled (prefs, bvalue);
+	}
+	else
+	{
+		key_error_and_free (KEY_USER_SWITCH_DISABLE, error);
+	}
+
+	error = NULL;
+	value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_ACTIVATE_DELAY, &error);
+	if (! error)
+	{
+		_gs_prefs_set_timeout (prefs, value);
+	}
+	else
+	{
+		key_error_and_free (KEY_ACTIVATE_DELAY, error);
+	}
+
+	error = NULL;
+	value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_POWER_DELAY, &error);
+	if (! error)
+	{
+		_gs_prefs_set_power_timeout (prefs, value);
+	}
+	else
+	{
+		key_error_and_free (KEY_POWER_DELAY, error);
+	}
+
+	error = NULL;
+	value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_LOCK_DELAY, &error);
+	if (! error)
+	{
+		_gs_prefs_set_lock_timeout (prefs, value);
+	}
+	else
+	{
+		key_error_and_free (KEY_LOCK_DELAY, error);
+	}
+
+	error = NULL;
+	value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_CYCLE_DELAY, &error);
+	if (! error)
+	{
+		_gs_prefs_set_cycle_timeout (prefs, value);
+	}
+	else
+	{
+		key_error_and_free (KEY_CYCLE_DELAY, error);
+	}
+
+	error = NULL;
+	string = mateconf_client_get_string (prefs->priv->mateconf_client, KEY_MODE, &error);
+	if (! error)
+	{
+		_gs_prefs_set_mode (prefs, string);
+	}
+	else
+	{
+		key_error_and_free (KEY_MODE, error);
+	}
+	g_free (string);
+
+	error = NULL;
+	list = mateconf_client_get_list (prefs->priv->mateconf_client,
+	                                 KEY_THEMES,
+	                                 MATECONF_VALUE_STRING,
+	                                 &error);
+	if (! error)
+	{
+		_gs_prefs_set_themes (prefs, list);
+	}
+	else
+	{
+		key_error_and_free (KEY_THEMES, error);
+	}
+
+	/* Embedded keyboard options */
+
+	error = NULL;
+	bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_KEYBOARD_ENABLED, &error);
+	if (! error)
+	{
+		_gs_prefs_set_keyboard_enabled (prefs, bvalue);
+	}
+	else
+	{
+		key_error_and_free (KEY_KEYBOARD_ENABLED, error);
+	}
+
+	error = NULL;
+	string = mateconf_client_get_string (prefs->priv->mateconf_client, KEY_KEYBOARD_COMMAND, &error);
+	if (! error)
+	{
+		_gs_prefs_set_keyboard_command (prefs, string);
+	}
+	else
+	{
+		key_error_and_free (KEY_KEYBOARD_COMMAND, error);
+	}
+	g_free (string);
+
+	error = NULL;
+	bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_STATUS_MESSAGE_ENABLED, &error);
+	if (! error)
+	{
+		_gs_prefs_set_status_message_enabled (prefs, bvalue);
+	}
+	else
+	{
+		key_error_and_free (KEY_STATUS_MESSAGE_ENABLED, error);
+	}
+
+	/* Logout options */
+
+	error = NULL;
+	bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_LOGOUT_ENABLED, &error);
+	if (! error)
+	{
+		_gs_prefs_set_logout_enabled (prefs, bvalue);
+	}
+	else
+	{
+		key_error_and_free (KEY_LOGOUT_ENABLED, error);
+	}
+
+	error = NULL;
+	string = mateconf_client_get_string (prefs->priv->mateconf_client, KEY_LOGOUT_COMMAND, &error);
+	if (! error)
+	{
+		_gs_prefs_set_logout_command (prefs, string);
+	}
+	else
+	{
+		key_error_and_free (KEY_LOGOUT_COMMAND, error);
+	}
+	g_free (string);
+
+	error = NULL;
+	value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_LOGOUT_DELAY, &error);
+	if (! error)
+	{
+		_gs_prefs_set_logout_timeout (prefs, value);
+	}
+	else
+	{
+		key_error_and_free (KEY_LOGOUT_DELAY, error);
+	}
+
+	/* User switching options */
+
+	error = NULL;
+	bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_USER_SWITCH_ENABLED, &error);
+	if (! error)
+	{
+		_gs_prefs_set_user_switch_enabled (prefs, bvalue);
+	}
+	else
+	{
+		key_error_and_free (KEY_USER_SWITCH_ENABLED, error);
+	}
+}
+
+static void
+invalid_type_warning (const char *type)
+{
+	g_warning ("Error retrieving configuration key '%s': Invalid type",
+	           type);
+}
+
+static void
+key_changed_cb (MateConfClient *client,
+                guint        cnxn_id,
+                MateConfEntry  *entry,
+                GSPrefs     *prefs)
+{
+	gboolean    changed = FALSE;
+	const char *key;
+	MateConfValue *value;
+
+	key = mateconf_entry_get_key (entry);
+
+	if (! g_str_has_prefix (key, KEY_DIR) && ! g_str_has_prefix (key, MATE_LOCKDOWN_DIR))
+		return;
+
+	value = mateconf_entry_get_value (entry);
+
+	if (strcmp (key, KEY_MODE) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_STRING)
+		{
+			const char *str;
+
+			str = mateconf_value_get_string (value);
+			_gs_prefs_set_mode (prefs, str);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_THEMES) == 0)
+	{
+		GSList *list = NULL;
+
+		if (value == NULL
+		        || value->type != MATECONF_VALUE_LIST)
+		{
+			return;
+		}
+
+		list = mateconf_value_get_list (value);
+
+		if (list
+		        && mateconf_value_get_list_type (value) == MATECONF_VALUE_STRING)
+		{
+			GSList *l;
+			GSList *new_list;
+
+			changed = TRUE;
+
+			new_list = NULL;
+			for (l = list; l; l = l->next)
+			{
+				char *s;
+
+				s = mateconf_value_to_string (l->data);
+
+				new_list = g_slist_prepend (new_list, g_strdup (s));
+
+				g_free (s);
+			}
+
+			new_list = g_slist_reverse (new_list);
+
+			_gs_prefs_set_themes (prefs, new_list);
+
+		}
+
+	}
+	else if (strcmp (key, KEY_ACTIVATE_DELAY) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_INT)
+		{
+			int delay;
+
+			delay = mateconf_value_get_int (value);
+			_gs_prefs_set_timeout (prefs, delay);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_POWER_DELAY) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_INT)
+		{
+			int delay;
+
+			delay = mateconf_value_get_int (value);
+			_gs_prefs_set_power_timeout (prefs, delay);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_LOCK_DELAY) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_INT)
+		{
+			int delay;
+
+			delay = mateconf_value_get_int (value);
+			_gs_prefs_set_lock_timeout (prefs, delay);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_IDLE_ACTIVATION_ENABLED) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean enabled;
+
+			enabled = mateconf_value_get_bool (value);
+			_gs_prefs_set_idle_activation_enabled (prefs, enabled);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_LOCK_ENABLED) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean enabled;
+
+			enabled = mateconf_value_get_bool (value);
+			_gs_prefs_set_lock_enabled (prefs, enabled);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_LOCK_DISABLE) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean disabled;
+
+			disabled = mateconf_value_get_bool (value);
+			_gs_prefs_set_lock_disabled (prefs, disabled);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_USER_SWITCH_DISABLE) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean disabled;
+
+			disabled = mateconf_value_get_bool (value);
+			_gs_prefs_set_user_switch_disabled (prefs, disabled);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_CYCLE_DELAY) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_INT)
+		{
+			int delay;
+
+			delay = mateconf_value_get_int (value);
+			_gs_prefs_set_cycle_timeout (prefs, delay);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_KEYBOARD_ENABLED) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean enabled;
+
+			enabled = mateconf_value_get_bool (value);
+			_gs_prefs_set_keyboard_enabled (prefs, enabled);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_KEYBOARD_COMMAND) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_STRING)
+		{
+			const char *command;
+
+			command = mateconf_value_get_string (value);
+			_gs_prefs_set_keyboard_command (prefs, command);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_STATUS_MESSAGE_ENABLED) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean enabled;
+
+			enabled = mateconf_value_get_bool (value);
+			_gs_prefs_set_status_message_enabled (prefs, enabled);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_LOGOUT_ENABLED) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean enabled;
+
+			enabled = mateconf_value_get_bool (value);
+			_gs_prefs_set_logout_enabled (prefs, enabled);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_LOGOUT_DELAY) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_INT)
+		{
+			int delay;
+
+			delay = mateconf_value_get_int (value);
+			_gs_prefs_set_logout_timeout (prefs, delay);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_LOGOUT_COMMAND) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_STRING)
+		{
+			const char *command;
+
+			command = mateconf_value_get_string (value);
+			_gs_prefs_set_logout_command (prefs, command);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else if (strcmp (key, KEY_USER_SWITCH_ENABLED) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean enabled;
+
+			enabled = mateconf_value_get_bool (value);
+			_gs_prefs_set_user_switch_enabled (prefs, enabled);
+
+			changed = TRUE;
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else
+	{
+		g_warning ("Config key not handled: %s", key);
+	}
+
+	if (changed && prefs)
+	{
+		g_signal_emit (prefs, signals [CHANGED], 0);
+	}
+}
+
+static void
+gs_prefs_init (GSPrefs *prefs)
+{
+	prefs->priv = GS_PREFS_GET_PRIVATE (prefs);
+
+	prefs->priv->mateconf_client      = mateconf_client_get_default ();
+
+	prefs->idle_activation_enabled = TRUE;
+	prefs->lock_enabled            = TRUE;
+	prefs->lock_disabled           = FALSE;
+	prefs->logout_enabled          = FALSE;
+	prefs->user_switch_enabled     = FALSE;
+
+	prefs->timeout                 = 600000;
+	prefs->power_timeout           = 60000;
+	prefs->lock_timeout            = 0;
+	prefs->logout_timeout          = 14400000;
+	prefs->cycle                   = 600000;
+
+	prefs->mode                    = GS_MODE_SINGLE;
+
+	/* MateConf setup */
+	mateconf_client_add_dir (prefs->priv->mateconf_client,
+	                         KEY_DIR,
+	                         MATECONF_CLIENT_PRELOAD_NONE, NULL);
+	mateconf_client_add_dir (prefs->priv->mateconf_client,
+	                         MATE_LOCKDOWN_DIR,
+	                         MATECONF_CLIENT_PRELOAD_NONE, NULL);
+	mateconf_client_add_dir (prefs->priv->mateconf_client,
+	                         MATE_SESSION_DIR,
+	                         MATECONF_CLIENT_PRELOAD_NONE, NULL);
+
+
+	mateconf_client_notify_add (prefs->priv->mateconf_client,
+	                            KEY_DIR,
+	                            (MateConfClientNotifyFunc)key_changed_cb,
+	                            prefs,
+	                            NULL, NULL);
+	mateconf_client_notify_add (prefs->priv->mateconf_client,
+	                            MATE_LOCKDOWN_DIR,
+	                            (MateConfClientNotifyFunc)key_changed_cb,
+	                            prefs,
+	                            NULL, NULL);
+
+	gs_prefs_load_from_mateconf (prefs);
+}
+
+static void
+gs_prefs_finalize (GObject *object)
+{
+	GSPrefs *prefs;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_PREFS (object));
+
+	prefs = GS_PREFS (object);
+
+	g_return_if_fail (prefs->priv != NULL);
+
+	if (prefs->priv->mateconf_client)
+	{
+		g_object_unref (prefs->priv->mateconf_client);
+		prefs->priv->mateconf_client = NULL;
+	}
+
+	if (prefs->themes)
+	{
+		g_slist_foreach (prefs->themes, (GFunc)g_free, NULL);
+		g_slist_free (prefs->themes);
+	}
+
+	g_free (prefs->logout_command);
+	g_free (prefs->keyboard_command);
+
+	G_OBJECT_CLASS (gs_prefs_parent_class)->finalize (object);
+}
+
+GSPrefs *
+gs_prefs_new (void)
+{
+	GObject *prefs;
+
+	prefs = g_object_new (GS_TYPE_PREFS, NULL);
+
+	return GS_PREFS (prefs);
+}
diff --git a/src/gs-prefs.c.orig b/src/gs-prefs.c.orig
new file mode 100644
index 0000000..2aaf2d3
--- /dev/null
+++ b/src/gs-prefs.c.orig
@@ -0,0 +1,995 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <string.h>
+
+#include <glib.h>
+#include <glib-object.h>
+#include <mateconf/mateconf-client.h>
+
+#include "gs-prefs.h"
+
+static void gs_prefs_class_init (GSPrefsClass *klass);
+static void gs_prefs_init       (GSPrefs      *prefs);
+static void gs_prefs_finalize   (GObject      *object);
+
+#define MATE_LOCKDOWN_DIR "/desktop/mate/lockdown"
+#define KEY_LOCK_DISABLE          MATE_LOCKDOWN_DIR "/disable_lock_screen"
+#define KEY_USER_SWITCH_DISABLE   MATE_LOCKDOWN_DIR "/disable_user_switching"
+
+#define KEY_DIR            "/apps/mate-screensaver"
+#define MATE_SESSION_DIR  "/desktop/mate/session"
+#define KEY_IDLE_ACTIVATION_ENABLED         KEY_DIR "/idle_activation_enabled"
+#define KEY_LOCK_ENABLED   KEY_DIR "/lock_enabled"
+#define KEY_MODE           KEY_DIR "/mode"
+#define KEY_ACTIVATE_DELAY MATE_SESSION_DIR "/idle_delay"
+#define KEY_POWER_DELAY    KEY_DIR "/power_management_delay"
+#define KEY_LOCK_DELAY     KEY_DIR "/lock_delay"
+#define KEY_CYCLE_DELAY    KEY_DIR "/cycle_delay"
+#define KEY_THEMES         KEY_DIR "/themes"
+#define KEY_USER_SWITCH_ENABLED KEY_DIR "/user_switch_enabled"
+#define KEY_LOGOUT_ENABLED KEY_DIR "/logout_enabled"
+#define KEY_LOGOUT_DELAY   KEY_DIR "/logout_delay"
+#define KEY_LOGOUT_COMMAND KEY_DIR "/logout_command"
+#define KEY_KEYBOARD_ENABLED KEY_DIR "/embedded_keyboard_enabled"
+#define KEY_KEYBOARD_COMMAND KEY_DIR "/embedded_keyboard_command"
+#define KEY_STATUS_MESSAGE_ENABLED   KEY_DIR "/status_message_enabled"
+
+#define GS_PREFS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_PREFS, GSPrefsPrivate))
+
+struct GSPrefsPrivate
+{
+    MateConfClient *mateconf_client;
+};
+
+enum
+{
+    CHANGED,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0
+};
+
+static MateConfEnumStringPair mode_enum_map [] =
+{
+    { GS_MODE_BLANK_ONLY,       "blank-only" },
+    { GS_MODE_RANDOM,           "random"     },
+    { GS_MODE_SINGLE,           "single"     },
+    { 0, NULL }
+};
+
+static guint         signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSPrefs, gs_prefs, G_TYPE_OBJECT)
+
+static void
+gs_prefs_set_property (GObject            *object,
+                       guint               prop_id,
+                       const GValue       *value,
+                       GParamSpec         *pspec)
+{
+    switch (prop_id)
+    {
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_prefs_get_property (GObject            *object,
+                       guint               prop_id,
+                       GValue             *value,
+                       GParamSpec         *pspec)
+{
+    switch (prop_id)
+    {
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_prefs_class_init (GSPrefsClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize     = gs_prefs_finalize;
+    object_class->get_property = gs_prefs_get_property;
+    object_class->set_property = gs_prefs_set_property;
+
+
+    signals [CHANGED] =
+        g_signal_new ("changed",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSPrefsClass, changed),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+
+    g_type_class_add_private (klass, sizeof (GSPrefsPrivate));
+
+}
+
+static void
+_gs_prefs_set_timeout (GSPrefs *prefs,
+                       int      value)
+{
+    if (value < 1)
+        value = 10;
+
+    /* pick a reasonable large number for the
+       upper bound */
+    if (value > 480)
+        value = 480;
+
+    prefs->timeout = value * 60000;
+}
+
+static void
+_gs_prefs_set_power_timeout (GSPrefs *prefs,
+                             int      value)
+{
+    if (value < 1)
+        value = 60;
+
+    /* pick a reasonable large number for the
+       upper bound */
+    if (value > 480)
+        value = 480;
+
+    /* this value is in seconds - others are in minutes */
+    prefs->power_timeout = value * 1000;
+}
+
+static void
+_gs_prefs_set_lock_timeout (GSPrefs *prefs,
+                            int      value)
+{
+    if (value < 0)
+        value = 0;
+
+    /* pick a reasonable large number for the
+       upper bound */
+    if (value > 480)
+        value = 480;
+
+    prefs->lock_timeout = value * 60000;
+}
+
+static void
+_gs_prefs_set_cycle_timeout (GSPrefs *prefs,
+                             int      value)
+{
+    if (value < 1)
+        value = 1;
+
+    /* pick a reasonable large number for the
+       upper bound */
+    if (value > 480)
+        value = 480;
+
+    prefs->cycle = value * 60000;
+}
+
+static void
+_gs_prefs_set_mode (GSPrefs    *prefs,
+                    const char *value)
+{
+    int mode;
+
+    if (value && mateconf_string_to_enum (mode_enum_map, value, &mode))
+        prefs->mode = mode;
+    else
+        prefs->mode = GS_MODE_BLANK_ONLY;
+}
+
+static void
+_gs_prefs_set_themes (GSPrefs *prefs,
+                      GSList  *list)
+{
+    if (prefs->themes)
+    {
+        g_slist_foreach (prefs->themes, (GFunc)g_free, NULL);
+        g_slist_free (prefs->themes);
+    }
+
+    /* take ownership of the list */
+    prefs->themes = list;
+}
+
+static void
+_gs_prefs_set_idle_activation_enabled (GSPrefs *prefs,
+                                       gboolean value)
+{
+    prefs->idle_activation_enabled = value;
+}
+
+static void
+_gs_prefs_set_lock_enabled (GSPrefs *prefs,
+                            gboolean value)
+{
+    prefs->lock_enabled = value;
+}
+
+static void
+_gs_prefs_set_lock_disabled (GSPrefs *prefs,
+                             gboolean value)
+{
+    prefs->lock_disabled = value;
+}
+
+static void
+_gs_prefs_set_user_switch_disabled (GSPrefs *prefs,
+                                    gboolean value)
+{
+    prefs->user_switch_disabled = value;
+}
+
+static void
+_gs_prefs_set_keyboard_enabled (GSPrefs *prefs,
+                                gboolean value)
+{
+    prefs->keyboard_enabled = value;
+}
+
+static void
+_gs_prefs_set_keyboard_command (GSPrefs    *prefs,
+                                const char *value)
+{
+    g_free (prefs->keyboard_command);
+    prefs->keyboard_command = NULL;
+
+    if (value)
+    {
+        /* FIXME: check command */
+
+        prefs->keyboard_command = g_strdup (value);
+    }
+}
+
+static void
+_gs_prefs_set_status_message_enabled (GSPrefs  *prefs,
+                                      gboolean  enabled)
+{
+    prefs->status_message_enabled = enabled;
+}
+
+static void
+_gs_prefs_set_logout_enabled (GSPrefs *prefs,
+                              gboolean value)
+{
+    prefs->logout_enabled = value;
+}
+
+static void
+_gs_prefs_set_logout_command (GSPrefs    *prefs,
+                              const char *value)
+{
+    g_free (prefs->logout_command);
+    prefs->logout_command = NULL;
+
+    if (value)
+    {
+        /* FIXME: check command */
+
+        prefs->logout_command = g_strdup (value);
+    }
+}
+
+static void
+_gs_prefs_set_logout_timeout (GSPrefs *prefs,
+                              int      value)
+{
+    if (value < 0)
+        value = 0;
+
+    /* pick a reasonable large number for the
+       upper bound */
+    if (value > 480)
+        value = 480;
+
+    prefs->logout_timeout = value * 60000;
+}
+
+static void
+_gs_prefs_set_user_switch_enabled (GSPrefs *prefs,
+                                   gboolean value)
+{
+    prefs->user_switch_enabled = value;
+}
+
+static void
+key_error_and_free (const char *key,
+                    GError     *error)
+{
+    g_warning ("Error retrieving configuration key '%s': %s", key, error->message);
+    g_error_free (error);
+    error = NULL;
+}
+
+static void
+gs_prefs_load_from_mateconf (GSPrefs *prefs)
+{
+    glong    value;
+    gboolean bvalue;
+    char    *string;
+    GSList  *list;
+    GError  *error;
+
+    error = NULL;
+    bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_IDLE_ACTIVATION_ENABLED, &error);
+    if (! error)
+    {
+        _gs_prefs_set_idle_activation_enabled (prefs, bvalue);
+    }
+    else
+    {
+        key_error_and_free (KEY_IDLE_ACTIVATION_ENABLED, error);
+    }
+
+    error = NULL;
+    bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_LOCK_ENABLED, &error);
+    if (! error)
+    {
+        _gs_prefs_set_lock_enabled (prefs, bvalue);
+    }
+    else
+    {
+        key_error_and_free (KEY_LOCK_ENABLED, error);
+    }
+
+    error = NULL;
+    bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_LOCK_DISABLE, &error);
+    if (! error)
+    {
+        _gs_prefs_set_lock_disabled (prefs, bvalue);
+    }
+    else
+    {
+        key_error_and_free (KEY_LOCK_DISABLE, error);
+    }
+
+    error = NULL;
+    bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_USER_SWITCH_DISABLE, &error);
+    if (! error)
+    {
+        _gs_prefs_set_user_switch_disabled (prefs, bvalue);
+    }
+    else
+    {
+        key_error_and_free (KEY_USER_SWITCH_DISABLE, error);
+    }
+
+    error = NULL;
+    value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_ACTIVATE_DELAY, &error);
+    if (! error)
+    {
+        _gs_prefs_set_timeout (prefs, value);
+    }
+    else
+    {
+        key_error_and_free (KEY_ACTIVATE_DELAY, error);
+    }
+
+    error = NULL;
+    value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_POWER_DELAY, &error);
+    if (! error)
+    {
+        _gs_prefs_set_power_timeout (prefs, value);
+    }
+    else
+    {
+        key_error_and_free (KEY_POWER_DELAY, error);
+    }
+
+    error = NULL;
+    value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_LOCK_DELAY, &error);
+    if (! error)
+    {
+        _gs_prefs_set_lock_timeout (prefs, value);
+    }
+    else
+    {
+        key_error_and_free (KEY_LOCK_DELAY, error);
+    }
+
+    error = NULL;
+    value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_CYCLE_DELAY, &error);
+    if (! error)
+    {
+        _gs_prefs_set_cycle_timeout (prefs, value);
+    }
+    else
+    {
+        key_error_and_free (KEY_CYCLE_DELAY, error);
+    }
+
+    error = NULL;
+    string = mateconf_client_get_string (prefs->priv->mateconf_client, KEY_MODE, &error);
+    if (! error)
+    {
+        _gs_prefs_set_mode (prefs, string);
+    }
+    else
+    {
+        key_error_and_free (KEY_MODE, error);
+    }
+    g_free (string);
+
+    error = NULL;
+    list = mateconf_client_get_list (prefs->priv->mateconf_client,
+                                     KEY_THEMES,
+                                     MATECONF_VALUE_STRING,
+                                     &error);
+    if (! error)
+    {
+        _gs_prefs_set_themes (prefs, list);
+    }
+    else
+    {
+        key_error_and_free (KEY_THEMES, error);
+    }
+
+    /* Embedded keyboard options */
+
+    error = NULL;
+    bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_KEYBOARD_ENABLED, &error);
+    if (! error)
+    {
+        _gs_prefs_set_keyboard_enabled (prefs, bvalue);
+    }
+    else
+    {
+        key_error_and_free (KEY_KEYBOARD_ENABLED, error);
+    }
+
+    error = NULL;
+    string = mateconf_client_get_string (prefs->priv->mateconf_client, KEY_KEYBOARD_COMMAND, &error);
+    if (! error)
+    {
+        _gs_prefs_set_keyboard_command (prefs, string);
+    }
+    else
+    {
+        key_error_and_free (KEY_KEYBOARD_COMMAND, error);
+    }
+    g_free (string);
+
+    error = NULL;
+    bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_STATUS_MESSAGE_ENABLED, &error);
+    if (! error)
+    {
+        _gs_prefs_set_status_message_enabled (prefs, bvalue);
+    }
+    else
+    {
+        key_error_and_free (KEY_STATUS_MESSAGE_ENABLED, error);
+    }
+
+    /* Logout options */
+
+    error = NULL;
+    bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_LOGOUT_ENABLED, &error);
+    if (! error)
+    {
+        _gs_prefs_set_logout_enabled (prefs, bvalue);
+    }
+    else
+    {
+        key_error_and_free (KEY_LOGOUT_ENABLED, error);
+    }
+
+    error = NULL;
+    string = mateconf_client_get_string (prefs->priv->mateconf_client, KEY_LOGOUT_COMMAND, &error);
+    if (! error)
+    {
+        _gs_prefs_set_logout_command (prefs, string);
+    }
+    else
+    {
+        key_error_and_free (KEY_LOGOUT_COMMAND, error);
+    }
+    g_free (string);
+
+    error = NULL;
+    value = mateconf_client_get_int (prefs->priv->mateconf_client, KEY_LOGOUT_DELAY, &error);
+    if (! error)
+    {
+        _gs_prefs_set_logout_timeout (prefs, value);
+    }
+    else
+    {
+        key_error_and_free (KEY_LOGOUT_DELAY, error);
+    }
+
+    /* User switching options */
+
+    error = NULL;
+    bvalue = mateconf_client_get_bool (prefs->priv->mateconf_client, KEY_USER_SWITCH_ENABLED, &error);
+    if (! error)
+    {
+        _gs_prefs_set_user_switch_enabled (prefs, bvalue);
+    }
+    else
+    {
+        key_error_and_free (KEY_USER_SWITCH_ENABLED, error);
+    }
+}
+
+static void
+invalid_type_warning (const char *type)
+{
+    g_warning ("Error retrieving configuration key '%s': Invalid type",
+               type);
+}
+
+static void
+key_changed_cb (MateConfClient *client,
+                guint        cnxn_id,
+                MateConfEntry  *entry,
+                GSPrefs     *prefs)
+{
+    gboolean    changed = FALSE;
+    const char *key;
+    MateConfValue *value;
+
+    key = mateconf_entry_get_key (entry);
+
+    if (! g_str_has_prefix (key, KEY_DIR) && ! g_str_has_prefix (key, MATE_LOCKDOWN_DIR))
+        return;
+
+    value = mateconf_entry_get_value (entry);
+
+    if (strcmp (key, KEY_MODE) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_STRING)
+        {
+            const char *str;
+
+            str = mateconf_value_get_string (value);
+            _gs_prefs_set_mode (prefs, str);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_THEMES) == 0)
+    {
+        GSList *list = NULL;
+
+        if (value == NULL
+                || value->type != MATECONF_VALUE_LIST)
+        {
+            return;
+        }
+
+        list = mateconf_value_get_list (value);
+
+        if (list
+                && mateconf_value_get_list_type (value) == MATECONF_VALUE_STRING)
+        {
+            GSList *l;
+            GSList *new_list;
+
+            changed = TRUE;
+
+            new_list = NULL;
+            for (l = list; l; l = l->next)
+            {
+                char *s;
+
+                s = mateconf_value_to_string (l->data);
+
+                new_list = g_slist_prepend (new_list, g_strdup (s));
+
+                g_free (s);
+            }
+
+            new_list = g_slist_reverse (new_list);
+
+            _gs_prefs_set_themes (prefs, new_list);
+
+        }
+
+    }
+    else if (strcmp (key, KEY_ACTIVATE_DELAY) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_INT)
+        {
+            int delay;
+
+            delay = mateconf_value_get_int (value);
+            _gs_prefs_set_timeout (prefs, delay);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_POWER_DELAY) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_INT)
+        {
+            int delay;
+
+            delay = mateconf_value_get_int (value);
+            _gs_prefs_set_power_timeout (prefs, delay);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_LOCK_DELAY) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_INT)
+        {
+            int delay;
+
+            delay = mateconf_value_get_int (value);
+            _gs_prefs_set_lock_timeout (prefs, delay);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_IDLE_ACTIVATION_ENABLED) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean enabled;
+
+            enabled = mateconf_value_get_bool (value);
+            _gs_prefs_set_idle_activation_enabled (prefs, enabled);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_LOCK_ENABLED) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean enabled;
+
+            enabled = mateconf_value_get_bool (value);
+            _gs_prefs_set_lock_enabled (prefs, enabled);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_LOCK_DISABLE) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean disabled;
+
+            disabled = mateconf_value_get_bool (value);
+            _gs_prefs_set_lock_disabled (prefs, disabled);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_USER_SWITCH_DISABLE) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean disabled;
+
+            disabled = mateconf_value_get_bool (value);
+            _gs_prefs_set_user_switch_disabled (prefs, disabled);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_CYCLE_DELAY) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_INT)
+        {
+            int delay;
+
+            delay = mateconf_value_get_int (value);
+            _gs_prefs_set_cycle_timeout (prefs, delay);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_KEYBOARD_ENABLED) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean enabled;
+
+            enabled = mateconf_value_get_bool (value);
+            _gs_prefs_set_keyboard_enabled (prefs, enabled);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_KEYBOARD_COMMAND) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_STRING)
+        {
+            const char *command;
+
+            command = mateconf_value_get_string (value);
+            _gs_prefs_set_keyboard_command (prefs, command);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_STATUS_MESSAGE_ENABLED) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean enabled;
+
+            enabled = mateconf_value_get_bool (value);
+            _gs_prefs_set_status_message_enabled (prefs, enabled);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_LOGOUT_ENABLED) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean enabled;
+
+            enabled = mateconf_value_get_bool (value);
+            _gs_prefs_set_logout_enabled (prefs, enabled);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_LOGOUT_DELAY) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_INT)
+        {
+            int delay;
+
+            delay = mateconf_value_get_int (value);
+            _gs_prefs_set_logout_timeout (prefs, delay);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_LOGOUT_COMMAND) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_STRING)
+        {
+            const char *command;
+
+            command = mateconf_value_get_string (value);
+            _gs_prefs_set_logout_command (prefs, command);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else if (strcmp (key, KEY_USER_SWITCH_ENABLED) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean enabled;
+
+            enabled = mateconf_value_get_bool (value);
+            _gs_prefs_set_user_switch_enabled (prefs, enabled);
+
+            changed = TRUE;
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else
+    {
+        g_warning ("Config key not handled: %s", key);
+    }
+
+    if (changed && prefs)
+    {
+        g_signal_emit (prefs, signals [CHANGED], 0);
+    }
+}
+
+static void
+gs_prefs_init (GSPrefs *prefs)
+{
+    prefs->priv = GS_PREFS_GET_PRIVATE (prefs);
+
+    prefs->priv->mateconf_client      = mateconf_client_get_default ();
+
+    prefs->idle_activation_enabled = TRUE;
+    prefs->lock_enabled            = TRUE;
+    prefs->lock_disabled           = FALSE;
+    prefs->logout_enabled          = FALSE;
+    prefs->user_switch_enabled     = FALSE;
+
+    prefs->timeout                 = 600000;
+    prefs->power_timeout           = 60000;
+    prefs->lock_timeout            = 0;
+    prefs->logout_timeout          = 14400000;
+    prefs->cycle                   = 600000;
+
+    prefs->mode                    = GS_MODE_SINGLE;
+
+    /* MateConf setup */
+    mateconf_client_add_dir (prefs->priv->mateconf_client,
+                             KEY_DIR,
+                             MATECONF_CLIENT_PRELOAD_NONE, NULL);
+    mateconf_client_add_dir (prefs->priv->mateconf_client,
+                             MATE_LOCKDOWN_DIR,
+                             MATECONF_CLIENT_PRELOAD_NONE, NULL);
+    mateconf_client_add_dir (prefs->priv->mateconf_client,
+                             MATE_SESSION_DIR,
+                             MATECONF_CLIENT_PRELOAD_NONE, NULL);
+
+
+    mateconf_client_notify_add (prefs->priv->mateconf_client,
+                                KEY_DIR,
+                                (MateConfClientNotifyFunc)key_changed_cb,
+                                prefs,
+                                NULL, NULL);
+    mateconf_client_notify_add (prefs->priv->mateconf_client,
+                                MATE_LOCKDOWN_DIR,
+                                (MateConfClientNotifyFunc)key_changed_cb,
+                                prefs,
+                                NULL, NULL);
+
+    gs_prefs_load_from_mateconf (prefs);
+}
+
+static void
+gs_prefs_finalize (GObject *object)
+{
+    GSPrefs *prefs;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_PREFS (object));
+
+    prefs = GS_PREFS (object);
+
+    g_return_if_fail (prefs->priv != NULL);
+
+    if (prefs->priv->mateconf_client)
+    {
+        g_object_unref (prefs->priv->mateconf_client);
+        prefs->priv->mateconf_client = NULL;
+    }
+
+    if (prefs->themes)
+    {
+        g_slist_foreach (prefs->themes, (GFunc)g_free, NULL);
+        g_slist_free (prefs->themes);
+    }
+
+    g_free (prefs->logout_command);
+    g_free (prefs->keyboard_command);
+
+    G_OBJECT_CLASS (gs_prefs_parent_class)->finalize (object);
+}
+
+GSPrefs *
+gs_prefs_new (void)
+{
+    GObject *prefs;
+
+    prefs = g_object_new (GS_TYPE_PREFS, NULL);
+
+    return GS_PREFS (prefs);
+}
diff --git a/src/gs-prefs.h b/src/gs-prefs.h
new file mode 100644
index 0000000..7a354dd
--- /dev/null
+++ b/src/gs-prefs.h
@@ -0,0 +1,85 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_PREFS_H
+#define __GS_PREFS_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_PREFS         (gs_prefs_get_type ())
+#define GS_PREFS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_PREFS, GSPrefs))
+#define GS_PREFS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_PREFS, GSPrefsClass))
+#define GS_IS_PREFS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_PREFS))
+#define GS_IS_PREFS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_PREFS))
+#define GS_PREFS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_PREFS, GSPrefsClass))
+
+typedef enum
+{
+    GS_MODE_BLANK_ONLY,
+    GS_MODE_RANDOM,
+    GS_MODE_SINGLE
+} GSSaverMode;
+
+typedef struct GSPrefsPrivate GSPrefsPrivate;
+
+typedef struct
+{
+	GObject          parent;
+
+	GSPrefsPrivate  *priv;
+
+	guint            idle_activation_enabled : 1; /* whether to activate when idle */
+	guint            lock_enabled : 1;              /* whether to lock when active */
+	guint            logout_enabled : 1;    /* Whether to offer the logout option */
+	guint            lock_disabled : 1;     /* Whether locking the system is disabled */
+	guint            user_switch_disabled : 1;      /* Whether user switching is disabled */
+	guint            user_switch_enabled : 1;       /* Whether to offer the user switch option */
+	guint            keyboard_enabled : 1;  /* Whether to try to embed a keyboard */
+	guint            status_message_enabled : 1; /* show the status message in the lock */
+
+	guint            power_timeout;         /* how much idle time before power management */
+	guint            timeout;               /* how much idle time before activation */
+	guint            lock_timeout;          /* how long after activation locking starts */
+	guint            logout_timeout;        /* how long until the logout option appears */
+	guint            cycle;                 /* how long each theme should run */
+
+	char            *logout_command;        /* command to use to logout */
+	char            *keyboard_command;      /* command to use to embed a keyboard */
+
+	GSList          *themes;                /* the screensaver themes to run */
+	GSSaverMode      mode;                  /* theme selection mode */
+} GSPrefs;
+
+typedef struct
+{
+	GObjectClass     parent_class;
+
+	void            (* changed)        (GSPrefs *prefs);
+} GSPrefsClass;
+
+GType       gs_prefs_get_type        (void);
+GSPrefs   * gs_prefs_new             (void);
+void        gs_prefs_load            (GSPrefs *prefs);
+
+G_END_DECLS
+
+#endif /* __GS_PREFS_H */
diff --git a/src/gs-prefs.h.orig b/src/gs-prefs.h.orig
new file mode 100644
index 0000000..3545471
--- /dev/null
+++ b/src/gs-prefs.h.orig
@@ -0,0 +1,85 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_PREFS_H
+#define __GS_PREFS_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_PREFS         (gs_prefs_get_type ())
+#define GS_PREFS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_PREFS, GSPrefs))
+#define GS_PREFS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_PREFS, GSPrefsClass))
+#define GS_IS_PREFS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_PREFS))
+#define GS_IS_PREFS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_PREFS))
+#define GS_PREFS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_PREFS, GSPrefsClass))
+
+typedef enum
+{
+    GS_MODE_BLANK_ONLY,
+    GS_MODE_RANDOM,
+    GS_MODE_SINGLE
+} GSSaverMode;
+
+typedef struct GSPrefsPrivate GSPrefsPrivate;
+
+typedef struct
+{
+    GObject          parent;
+
+    GSPrefsPrivate  *priv;
+
+    guint            idle_activation_enabled : 1; /* whether to activate when idle */
+    guint            lock_enabled : 1;              /* whether to lock when active */
+    guint            logout_enabled : 1;    /* Whether to offer the logout option */
+    guint            lock_disabled : 1;     /* Whether locking the system is disabled */
+    guint            user_switch_disabled : 1;      /* Whether user switching is disabled */
+    guint            user_switch_enabled : 1;       /* Whether to offer the user switch option */
+    guint            keyboard_enabled : 1;  /* Whether to try to embed a keyboard */
+    guint            status_message_enabled : 1; /* show the status message in the lock */
+
+    guint            power_timeout;         /* how much idle time before power management */
+    guint            timeout;               /* how much idle time before activation */
+    guint            lock_timeout;          /* how long after activation locking starts */
+    guint            logout_timeout;        /* how long until the logout option appears */
+    guint            cycle;                 /* how long each theme should run */
+
+    char            *logout_command;        /* command to use to logout */
+    char            *keyboard_command;      /* command to use to embed a keyboard */
+
+    GSList          *themes;                /* the screensaver themes to run */
+    GSSaverMode      mode;                  /* theme selection mode */
+} GSPrefs;
+
+typedef struct
+{
+    GObjectClass     parent_class;
+
+    void            (* changed)        (GSPrefs *prefs);
+} GSPrefsClass;
+
+GType       gs_prefs_get_type        (void);
+GSPrefs   * gs_prefs_new             (void);
+void        gs_prefs_load            (GSPrefs *prefs);
+
+G_END_DECLS
+
+#endif /* __GS_PREFS_H */
diff --git a/src/gs-theme-manager.c b/src/gs-theme-manager.c
new file mode 100644
index 0000000..32b086f
--- /dev/null
+++ b/src/gs-theme-manager.c
@@ -0,0 +1,453 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include <glib-object.h>
+#include <matemenu-tree.h>
+
+#include "gs-theme-manager.h"
+#include "gs-debug.h"
+
+static void     gs_theme_manager_class_init (GSThemeManagerClass *klass);
+static void     gs_theme_manager_init       (GSThemeManager      *theme_manager);
+static void     gs_theme_manager_finalize   (GObject             *object);
+
+#define GS_THEME_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_THEME_MANAGER, GSThemeManagerPrivate))
+
+struct _GSThemeInfo
+{
+	char  *name;
+	char  *exec;
+	char  *file_id;
+	guint  refcount;
+};
+
+struct GSThemeManagerPrivate
+{
+	MateMenuTree *menu_tree;
+};
+
+G_DEFINE_TYPE (GSThemeManager, gs_theme_manager, G_TYPE_OBJECT)
+
+static gpointer theme_manager_object = NULL;
+
+static const char *known_engine_locations [] =
+{
+	SAVERDIR,
+#ifdef XSCREENSAVER_HACK_DIR
+	XSCREENSAVER_HACK_DIR,
+#endif
+	LIBEXECDIR "/xscreensaver",
+	"/usr/libexec/xscreensaver",
+	"/usr/lib/xscreensaver",
+	NULL
+};
+
+/* Returns the full path to the queried command */
+static char *
+find_command (const char *command)
+{
+	int i;
+
+	if (g_path_is_absolute (command))
+	{
+		char *dirname;
+
+		dirname = g_path_get_dirname (command);
+		for (i = 0; known_engine_locations [i]; i++)
+		{
+			if (strcmp (dirname, known_engine_locations [i]) == 0)
+			{
+				if (g_file_test (command, G_FILE_TEST_IS_EXECUTABLE)
+				        && ! g_file_test (command, G_FILE_TEST_IS_DIR))
+				{
+					g_free (dirname);
+					return g_strdup (command);
+				}
+			}
+		}
+		g_free (dirname);
+	}
+	else
+	{
+		for (i = 0; known_engine_locations [i]; i++)
+		{
+			char *path;
+
+			path = g_build_filename (known_engine_locations [i], command, NULL);
+
+			if (g_file_test (path, G_FILE_TEST_IS_EXECUTABLE)
+			        && ! g_file_test (path, G_FILE_TEST_IS_DIR))
+			{
+				return path;
+			}
+
+			g_free (path);
+		}
+	}
+
+	return NULL;
+}
+
+static gboolean
+check_command (const char *command)
+{
+	char *path;
+	char **argv;
+
+	g_return_val_if_fail (command != NULL, FALSE);
+
+	g_shell_parse_argv (command, NULL, &argv, NULL);
+	path = find_command (argv [0]);
+	g_strfreev (argv);
+
+	if (path != NULL)
+	{
+		g_free (path);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static void
+add_known_engine_locations_to_path (void)
+{
+	static gboolean already_added;
+	int      i;
+	GString *str;
+
+	/* We only want to add the items to the path once */
+	if (already_added)
+	{
+		return;
+	}
+
+	already_added = TRUE;
+
+	/* TODO: set a default PATH ? */
+
+	str = g_string_new (g_getenv ("PATH"));
+	for (i = 0; known_engine_locations [i]; i++)
+	{
+		/* TODO: check that permissions are safe */
+		if (g_file_test (known_engine_locations [i], G_FILE_TEST_IS_DIR))
+		{
+			g_string_append_printf (str, ":%s", known_engine_locations [i]);
+		}
+	}
+
+	g_setenv ("PATH", str->str, TRUE);
+	g_string_free (str, TRUE);
+}
+
+GSThemeInfo *
+gs_theme_info_ref (GSThemeInfo *info)
+{
+	g_return_val_if_fail (info != NULL, NULL);
+	g_return_val_if_fail (info->refcount > 0, NULL);
+
+	info->refcount++;
+
+	return info;
+}
+
+void
+gs_theme_info_unref (GSThemeInfo *info)
+{
+	g_return_if_fail (info != NULL);
+	g_return_if_fail (info->refcount > 0);
+
+	if (--info->refcount == 0)
+	{
+		g_free (info->name);
+		g_free (info->exec);
+		g_free (info->file_id);
+
+		g_free (info);
+	}
+}
+
+const char *
+gs_theme_info_get_id (GSThemeInfo *info)
+{
+	g_return_val_if_fail (info != NULL, NULL);
+
+	return info->file_id;
+}
+
+const char *
+gs_theme_info_get_name (GSThemeInfo *info)
+{
+	g_return_val_if_fail (info != NULL, NULL);
+
+	return info->name;
+}
+
+const char *
+gs_theme_info_get_exec (GSThemeInfo *info)
+{
+	const char *exec;
+
+	g_return_val_if_fail (info != NULL, NULL);
+
+	if (check_command (info->exec))
+	{
+		exec = info->exec;
+	}
+	else
+	{
+		exec = NULL;
+	}
+
+	return exec;
+}
+
+static GSThemeInfo *
+gs_theme_info_new_from_matemenu_tree_entry (MateMenuTreeEntry *entry)
+{
+	GSThemeInfo *info;
+	const char     *str;
+	char           *pos;
+
+	info = g_new0 (GSThemeInfo, 1);
+
+	info->refcount = 1;
+	info->name     = g_strdup (matemenu_tree_entry_get_name (entry));
+	info->exec     = g_strdup (matemenu_tree_entry_get_exec (entry));
+
+	/* remove the .desktop suffix */
+	str = matemenu_tree_entry_get_desktop_file_id (entry);
+	pos = g_strrstr (str, ".desktop");
+	if (pos)
+	{
+		info->file_id = g_strndup (str, pos - str);
+	}
+	else
+	{
+		info->file_id  = g_strdup (str);
+	}
+
+	return info;
+}
+
+static GSThemeInfo *
+find_info_for_id (MateMenuTree  *tree,
+                  const char *id)
+{
+	GSThemeInfo     *info;
+	MateMenuTreeDirectory *root;
+	GSList             *items;
+	GSList             *l;
+
+	root = matemenu_tree_get_root_directory (tree);
+	if (root == NULL)
+	{
+		return NULL;
+	}
+
+	items = matemenu_tree_directory_get_contents (root);
+
+	info = NULL;
+
+	for (l = items; l; l = l->next)
+	{
+		if (info == NULL
+		        && matemenu_tree_item_get_type (l->data) == MATEMENU_TREE_ITEM_ENTRY)
+		{
+			MateMenuTreeEntry *entry = l->data;
+			const char     *file_id;
+
+			file_id = matemenu_tree_entry_get_desktop_file_id (entry);
+			if (file_id && id && strcmp (file_id, id) == 0)
+			{
+				info = gs_theme_info_new_from_matemenu_tree_entry (entry);
+			}
+		}
+
+		matemenu_tree_item_unref (l->data);
+	}
+
+	g_slist_free (items);
+	matemenu_tree_item_unref (root);
+
+	return info;
+}
+
+GSThemeInfo *
+gs_theme_manager_lookup_theme_info (GSThemeManager *theme_manager,
+                                    const char     *name)
+{
+	GSThemeInfo *info;
+	char        *id;
+
+	g_return_val_if_fail (GS_IS_THEME_MANAGER (theme_manager), NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+
+	id = g_strdup_printf ("%s.desktop", name);
+	info = find_info_for_id (theme_manager->priv->menu_tree, id);
+	g_free (id);
+
+	return info;
+}
+
+static void
+theme_prepend_entry (GSList         **parent_list,
+                     MateMenuTreeEntry  *entry,
+                     const char      *filename)
+{
+	GSThemeInfo *info;
+
+	info = gs_theme_info_new_from_matemenu_tree_entry (entry);
+
+	*parent_list = g_slist_prepend (*parent_list, info);
+}
+
+static void
+make_theme_list (GSList             **parent_list,
+                 MateMenuTreeDirectory  *directory,
+                 const char          *filename)
+{
+	GSList *items;
+	GSList *l;
+
+	items = matemenu_tree_directory_get_contents (directory);
+
+	for (l = items; l; l = l->next)
+	{
+		switch (matemenu_tree_item_get_type (l->data))
+		{
+
+		case MATEMENU_TREE_ITEM_ENTRY:
+			theme_prepend_entry (parent_list, l->data, filename);
+			break;
+
+		case MATEMENU_TREE_ITEM_ALIAS:
+		case MATEMENU_TREE_ITEM_DIRECTORY:
+		default:
+			break;
+		}
+
+		matemenu_tree_item_unref (l->data);
+	}
+
+	g_slist_free (items);
+
+	*parent_list = g_slist_reverse (*parent_list);
+}
+
+GSList *
+gs_theme_manager_get_info_list (GSThemeManager *theme_manager)
+{
+	GSList             *l = NULL;
+	MateMenuTreeDirectory *root;
+
+	g_return_val_if_fail (GS_IS_THEME_MANAGER (theme_manager), NULL);
+
+	root = matemenu_tree_get_root_directory (theme_manager->priv->menu_tree);
+
+	if (root != NULL)
+	{
+		make_theme_list (&l, root, "mate-screensavers.menu");
+		matemenu_tree_item_unref (root);
+	}
+
+	return l;
+}
+
+static void
+gs_theme_manager_class_init (GSThemeManagerClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize = gs_theme_manager_finalize;
+
+	g_type_class_add_private (klass, sizeof (GSThemeManagerPrivate));
+}
+
+static MateMenuTree *
+get_themes_tree (void)
+{
+	MateMenuTree *themes_tree = NULL;
+
+	/* we only need to add the locations to the path once
+	   and since this is only run once we'll do it here */
+	add_known_engine_locations_to_path ();
+
+	themes_tree = matemenu_tree_lookup ("mate-screensavers.menu", MATEMENU_TREE_FLAGS_NONE);
+
+	return themes_tree;
+}
+
+static void
+gs_theme_manager_init (GSThemeManager *theme_manager)
+{
+	theme_manager->priv = GS_THEME_MANAGER_GET_PRIVATE (theme_manager);
+
+	theme_manager->priv->menu_tree = get_themes_tree ();
+}
+
+static void
+gs_theme_manager_finalize (GObject *object)
+{
+	GSThemeManager *theme_manager;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_THEME_MANAGER (object));
+
+	theme_manager = GS_THEME_MANAGER (object);
+
+	g_return_if_fail (theme_manager->priv != NULL);
+
+	if (theme_manager->priv->menu_tree != NULL)
+	{
+		matemenu_tree_unref (theme_manager->priv->menu_tree);
+	}
+
+	G_OBJECT_CLASS (gs_theme_manager_parent_class)->finalize (object);
+}
+
+GSThemeManager *
+gs_theme_manager_new (void)
+{
+	if (theme_manager_object)
+	{
+		g_object_ref (theme_manager_object);
+	}
+	else
+	{
+		theme_manager_object = g_object_new (GS_TYPE_THEME_MANAGER, NULL);
+		g_object_add_weak_pointer (theme_manager_object,
+		                           (gpointer *) &theme_manager_object);
+	}
+
+	return GS_THEME_MANAGER (theme_manager_object);
+}
diff --git a/src/gs-theme-manager.c.orig b/src/gs-theme-manager.c.orig
new file mode 100644
index 0000000..48b3c41
--- /dev/null
+++ b/src/gs-theme-manager.c.orig
@@ -0,0 +1,453 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include <glib-object.h>
+#include <matemenu-tree.h>
+
+#include "gs-theme-manager.h"
+#include "gs-debug.h"
+
+static void     gs_theme_manager_class_init (GSThemeManagerClass *klass);
+static void     gs_theme_manager_init       (GSThemeManager      *theme_manager);
+static void     gs_theme_manager_finalize   (GObject             *object);
+
+#define GS_THEME_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_THEME_MANAGER, GSThemeManagerPrivate))
+
+struct _GSThemeInfo
+{
+    char  *name;
+    char  *exec;
+    char  *file_id;
+    guint  refcount;
+};
+
+struct GSThemeManagerPrivate
+{
+    MateMenuTree *menu_tree;
+};
+
+G_DEFINE_TYPE (GSThemeManager, gs_theme_manager, G_TYPE_OBJECT)
+
+static gpointer theme_manager_object = NULL;
+
+static const char *known_engine_locations [] =
+{
+    SAVERDIR,
+#ifdef XSCREENSAVER_HACK_DIR
+    XSCREENSAVER_HACK_DIR,
+#endif
+    LIBEXECDIR "/xscreensaver",
+    "/usr/libexec/xscreensaver",
+    "/usr/lib/xscreensaver",
+    NULL
+};
+
+/* Returns the full path to the queried command */
+static char *
+find_command (const char *command)
+{
+    int i;
+
+    if (g_path_is_absolute (command))
+    {
+        char *dirname;
+
+        dirname = g_path_get_dirname (command);
+        for (i = 0; known_engine_locations [i]; i++)
+        {
+            if (strcmp (dirname, known_engine_locations [i]) == 0)
+            {
+                if (g_file_test (command, G_FILE_TEST_IS_EXECUTABLE)
+                        && ! g_file_test (command, G_FILE_TEST_IS_DIR))
+                {
+                    g_free (dirname);
+                    return g_strdup (command);
+                }
+            }
+        }
+        g_free (dirname);
+    }
+    else
+    {
+        for (i = 0; known_engine_locations [i]; i++)
+        {
+            char *path;
+
+            path = g_build_filename (known_engine_locations [i], command, NULL);
+
+            if (g_file_test (path, G_FILE_TEST_IS_EXECUTABLE)
+                    && ! g_file_test (path, G_FILE_TEST_IS_DIR))
+            {
+                return path;
+            }
+
+            g_free (path);
+        }
+    }
+
+    return NULL;
+}
+
+static gboolean
+check_command (const char *command)
+{
+    char *path;
+    char **argv;
+
+    g_return_val_if_fail (command != NULL, FALSE);
+
+    g_shell_parse_argv (command, NULL, &argv, NULL);
+    path = find_command (argv [0]);
+    g_strfreev (argv);
+
+    if (path != NULL)
+    {
+        g_free (path);
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+static void
+add_known_engine_locations_to_path (void)
+{
+    static gboolean already_added;
+    int      i;
+    GString *str;
+
+    /* We only want to add the items to the path once */
+    if (already_added)
+    {
+        return;
+    }
+
+    already_added = TRUE;
+
+    /* TODO: set a default PATH ? */
+
+    str = g_string_new (g_getenv ("PATH"));
+    for (i = 0; known_engine_locations [i]; i++)
+    {
+        /* TODO: check that permissions are safe */
+        if (g_file_test (known_engine_locations [i], G_FILE_TEST_IS_DIR))
+        {
+            g_string_append_printf (str, ":%s", known_engine_locations [i]);
+        }
+    }
+
+    g_setenv ("PATH", str->str, TRUE);
+    g_string_free (str, TRUE);
+}
+
+GSThemeInfo *
+gs_theme_info_ref (GSThemeInfo *info)
+{
+    g_return_val_if_fail (info != NULL, NULL);
+    g_return_val_if_fail (info->refcount > 0, NULL);
+
+    info->refcount++;
+
+    return info;
+}
+
+void
+gs_theme_info_unref (GSThemeInfo *info)
+{
+    g_return_if_fail (info != NULL);
+    g_return_if_fail (info->refcount > 0);
+
+    if (--info->refcount == 0)
+    {
+        g_free (info->name);
+        g_free (info->exec);
+        g_free (info->file_id);
+
+        g_free (info);
+    }
+}
+
+const char *
+gs_theme_info_get_id (GSThemeInfo *info)
+{
+    g_return_val_if_fail (info != NULL, NULL);
+
+    return info->file_id;
+}
+
+const char *
+gs_theme_info_get_name (GSThemeInfo *info)
+{
+    g_return_val_if_fail (info != NULL, NULL);
+
+    return info->name;
+}
+
+const char *
+gs_theme_info_get_exec (GSThemeInfo *info)
+{
+    const char *exec;
+
+    g_return_val_if_fail (info != NULL, NULL);
+
+    if (check_command (info->exec))
+    {
+        exec = info->exec;
+    }
+    else
+    {
+        exec = NULL;
+    }
+
+    return exec;
+}
+
+static GSThemeInfo *
+gs_theme_info_new_from_matemenu_tree_entry (MateMenuTreeEntry *entry)
+{
+    GSThemeInfo *info;
+    const char     *str;
+    char           *pos;
+
+    info = g_new0 (GSThemeInfo, 1);
+
+    info->refcount = 1;
+    info->name     = g_strdup (matemenu_tree_entry_get_name (entry));
+    info->exec     = g_strdup (matemenu_tree_entry_get_exec (entry));
+
+    /* remove the .desktop suffix */
+    str = matemenu_tree_entry_get_desktop_file_id (entry);
+    pos = g_strrstr (str, ".desktop");
+    if (pos)
+    {
+        info->file_id = g_strndup (str, pos - str);
+    }
+    else
+    {
+        info->file_id  = g_strdup (str);
+    }
+
+    return info;
+}
+
+static GSThemeInfo *
+find_info_for_id (MateMenuTree  *tree,
+                  const char *id)
+{
+    GSThemeInfo     *info;
+    MateMenuTreeDirectory *root;
+    GSList             *items;
+    GSList             *l;
+
+    root = matemenu_tree_get_root_directory (tree);
+    if (root == NULL)
+    {
+        return NULL;
+    }
+
+    items = matemenu_tree_directory_get_contents (root);
+
+    info = NULL;
+
+    for (l = items; l; l = l->next)
+    {
+        if (info == NULL
+                && matemenu_tree_item_get_type (l->data) == MATEMENU_TREE_ITEM_ENTRY)
+        {
+            MateMenuTreeEntry *entry = l->data;
+            const char     *file_id;
+
+            file_id = matemenu_tree_entry_get_desktop_file_id (entry);
+            if (file_id && id && strcmp (file_id, id) == 0)
+            {
+                info = gs_theme_info_new_from_matemenu_tree_entry (entry);
+            }
+        }
+
+        matemenu_tree_item_unref (l->data);
+    }
+
+    g_slist_free (items);
+    matemenu_tree_item_unref (root);
+
+    return info;
+}
+
+GSThemeInfo *
+gs_theme_manager_lookup_theme_info (GSThemeManager *theme_manager,
+                                    const char     *name)
+{
+    GSThemeInfo *info;
+    char        *id;
+
+    g_return_val_if_fail (GS_IS_THEME_MANAGER (theme_manager), NULL);
+    g_return_val_if_fail (name != NULL, NULL);
+
+    id = g_strdup_printf ("%s.desktop", name);
+    info = find_info_for_id (theme_manager->priv->menu_tree, id);
+    g_free (id);
+
+    return info;
+}
+
+static void
+theme_prepend_entry (GSList         **parent_list,
+                     MateMenuTreeEntry  *entry,
+                     const char      *filename)
+{
+    GSThemeInfo *info;
+
+    info = gs_theme_info_new_from_matemenu_tree_entry (entry);
+
+    *parent_list = g_slist_prepend (*parent_list, info);
+}
+
+static void
+make_theme_list (GSList             **parent_list,
+                 MateMenuTreeDirectory  *directory,
+                 const char          *filename)
+{
+    GSList *items;
+    GSList *l;
+
+    items = matemenu_tree_directory_get_contents (directory);
+
+    for (l = items; l; l = l->next)
+    {
+        switch (matemenu_tree_item_get_type (l->data))
+        {
+
+        case MATEMENU_TREE_ITEM_ENTRY:
+            theme_prepend_entry (parent_list, l->data, filename);
+            break;
+
+        case MATEMENU_TREE_ITEM_ALIAS:
+        case MATEMENU_TREE_ITEM_DIRECTORY:
+        default:
+            break;
+        }
+
+        matemenu_tree_item_unref (l->data);
+    }
+
+    g_slist_free (items);
+
+    *parent_list = g_slist_reverse (*parent_list);
+}
+
+GSList *
+gs_theme_manager_get_info_list (GSThemeManager *theme_manager)
+{
+    GSList             *l = NULL;
+    MateMenuTreeDirectory *root;
+
+    g_return_val_if_fail (GS_IS_THEME_MANAGER (theme_manager), NULL);
+
+    root = matemenu_tree_get_root_directory (theme_manager->priv->menu_tree);
+
+    if (root != NULL)
+    {
+        make_theme_list (&l, root, "mate-screensavers.menu");
+        matemenu_tree_item_unref (root);
+    }
+
+    return l;
+}
+
+static void
+gs_theme_manager_class_init (GSThemeManagerClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize = gs_theme_manager_finalize;
+
+    g_type_class_add_private (klass, sizeof (GSThemeManagerPrivate));
+}
+
+static MateMenuTree *
+get_themes_tree (void)
+{
+    MateMenuTree *themes_tree = NULL;
+
+    /* we only need to add the locations to the path once
+       and since this is only run once we'll do it here */
+    add_known_engine_locations_to_path ();
+
+    themes_tree = matemenu_tree_lookup ("mate-screensavers.menu", MATEMENU_TREE_FLAGS_NONE);
+
+    return themes_tree;
+}
+
+static void
+gs_theme_manager_init (GSThemeManager *theme_manager)
+{
+    theme_manager->priv = GS_THEME_MANAGER_GET_PRIVATE (theme_manager);
+
+    theme_manager->priv->menu_tree = get_themes_tree ();
+}
+
+static void
+gs_theme_manager_finalize (GObject *object)
+{
+    GSThemeManager *theme_manager;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_THEME_MANAGER (object));
+
+    theme_manager = GS_THEME_MANAGER (object);
+
+    g_return_if_fail (theme_manager->priv != NULL);
+
+    if (theme_manager->priv->menu_tree != NULL)
+    {
+        matemenu_tree_unref (theme_manager->priv->menu_tree);
+    }
+
+    G_OBJECT_CLASS (gs_theme_manager_parent_class)->finalize (object);
+}
+
+GSThemeManager *
+gs_theme_manager_new (void)
+{
+    if (theme_manager_object)
+    {
+        g_object_ref (theme_manager_object);
+    }
+    else
+    {
+        theme_manager_object = g_object_new (GS_TYPE_THEME_MANAGER, NULL);
+        g_object_add_weak_pointer (theme_manager_object,
+                                   (gpointer *) &theme_manager_object);
+    }
+
+    return GS_THEME_MANAGER (theme_manager_object);
+}
diff --git a/src/gs-theme-manager.h b/src/gs-theme-manager.h
new file mode 100644
index 0000000..5b79309
--- /dev/null
+++ b/src/gs-theme-manager.h
@@ -0,0 +1,65 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_THEME_MANAGER_H
+#define __GS_THEME_MANAGER_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_THEME_MANAGER         (gs_theme_manager_get_type ())
+#define GS_THEME_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_THEME_MANAGER, GSThemeManager))
+#define GS_THEME_MANAGER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_THEME_MANAGER, GSThemeManagerClass))
+#define GS_IS_THEME_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_THEME_MANAGER))
+#define GS_IS_THEME_MANAGER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_THEME_MANAGER))
+#define GS_THEME_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_THEME_MANAGER, GSThemeManagerClass))
+
+typedef struct GSThemeManagerPrivate GSThemeManagerPrivate;
+
+typedef struct
+{
+	GObject                parent;
+	GSThemeManagerPrivate *priv;
+} GSThemeManager;
+
+typedef struct
+{
+	GObjectClass   parent_class;
+} GSThemeManagerClass;
+
+typedef struct _GSThemeInfo GSThemeInfo;
+
+GType              gs_theme_manager_get_type          (void);
+
+GSThemeManager    *gs_theme_manager_new               (void);
+
+GSList            *gs_theme_manager_get_info_list     (GSThemeManager *manager);
+GSThemeInfo       *gs_theme_manager_lookup_theme_info (GSThemeManager *manager,
+        const char     *theme);
+GSThemeInfo       *gs_theme_info_ref                  (GSThemeInfo    *info);
+void               gs_theme_info_unref                (GSThemeInfo    *info);
+const char        *gs_theme_info_get_id               (GSThemeInfo    *info);
+const char        *gs_theme_info_get_name             (GSThemeInfo    *info);
+const char        *gs_theme_info_get_exec             (GSThemeInfo    *info);
+
+G_END_DECLS
+
+#endif /* __GS_THEME_MANAGER_H */
diff --git a/src/gs-theme-manager.h.orig b/src/gs-theme-manager.h.orig
new file mode 100644
index 0000000..8472961
--- /dev/null
+++ b/src/gs-theme-manager.h.orig
@@ -0,0 +1,65 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_THEME_MANAGER_H
+#define __GS_THEME_MANAGER_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_THEME_MANAGER         (gs_theme_manager_get_type ())
+#define GS_THEME_MANAGER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_THEME_MANAGER, GSThemeManager))
+#define GS_THEME_MANAGER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_THEME_MANAGER, GSThemeManagerClass))
+#define GS_IS_THEME_MANAGER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_THEME_MANAGER))
+#define GS_IS_THEME_MANAGER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_THEME_MANAGER))
+#define GS_THEME_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_THEME_MANAGER, GSThemeManagerClass))
+
+typedef struct GSThemeManagerPrivate GSThemeManagerPrivate;
+
+typedef struct
+{
+    GObject                parent;
+    GSThemeManagerPrivate *priv;
+} GSThemeManager;
+
+typedef struct
+{
+    GObjectClass   parent_class;
+} GSThemeManagerClass;
+
+typedef struct _GSThemeInfo GSThemeInfo;
+
+GType              gs_theme_manager_get_type          (void);
+
+GSThemeManager    *gs_theme_manager_new               (void);
+
+GSList            *gs_theme_manager_get_info_list     (GSThemeManager *manager);
+GSThemeInfo       *gs_theme_manager_lookup_theme_info (GSThemeManager *manager,
+        const char     *theme);
+GSThemeInfo       *gs_theme_info_ref                  (GSThemeInfo    *info);
+void               gs_theme_info_unref                (GSThemeInfo    *info);
+const char        *gs_theme_info_get_id               (GSThemeInfo    *info);
+const char        *gs_theme_info_get_name             (GSThemeInfo    *info);
+const char        *gs_theme_info_get_exec             (GSThemeInfo    *info);
+
+G_END_DECLS
+
+#endif /* __GS_THEME_MANAGER_H */
diff --git a/src/gs-visual-gl.c b/src/gs-visual-gl.c
new file mode 100644
index 0000000..7a71c79
--- /dev/null
+++ b/src/gs-visual-gl.c
@@ -0,0 +1,116 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ * Copyright (C) 1999, 2000, 2003 Jamie Zawinski <jwz at jwz.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#ifdef HAVE_LIBGL
+#include <GL/gl.h>
+#include <GL/glx.h>
+#endif /* HAVE_GL */
+
+#include "gs-visual-gl.h"
+#include "gs-debug.h"
+
+GdkVisual *
+gs_visual_gl_get_best_for_screen (GdkScreen *screen)
+{
+	GdkVisual  *visual;
+#ifdef HAVE_LIBGL
+	GdkDisplay *display;
+	int         screen_num;
+	int         i;
+
+# define R GLX_RED_SIZE
+# define G GLX_GREEN_SIZE
+# define B GLX_BLUE_SIZE
+# define D GLX_DEPTH_SIZE
+# define I GLX_BUFFER_SIZE
+# define DB GLX_DOUBLEBUFFER
+# define ST GLX_STENCIL_SIZE
+
+	static int attrs [][20] =
+	{
+		{ GLX_RGBA, R, 8, G, 8, B, 8, D, 8, DB, ST,1, 0 }, /* rgb double, stencil */
+		{ GLX_RGBA, R, 4, G, 4, B, 4, D, 4, DB, ST,1, 0 },
+		{ GLX_RGBA, R, 2, G, 2, B, 2, D, 2, DB, ST,1, 0 },
+		{ GLX_RGBA, R, 8, G, 8, B, 8, D, 8, DB,       0 }, /* rgb double */
+		{ GLX_RGBA, R, 4, G, 4, B, 4, D, 4, DB,       0 },
+		{ GLX_RGBA, R, 2, G, 2, B, 2, D, 2, DB,       0 },
+		{ GLX_RGBA, R, 8, G, 8, B, 8, D, 8,           0 }, /* rgb single */
+		{ GLX_RGBA, R, 4, G, 4, B, 4, D, 4,           0 },
+		{ GLX_RGBA, R, 2, G, 2, B, 2, D, 2,           0 },
+		{ I, 8,                       D, 8, DB,       0 }, /* cmap double */
+		{ I, 4,                       D, 4, DB,       0 },
+		{ I, 8,                       D, 8,           0 }, /* cmap single */
+		{ I, 4,                       D, 4,           0 },
+		{ GLX_RGBA, R, 1, G, 1, B, 1, D, 1,           0 }  /* monochrome */
+	};
+
+	g_return_val_if_fail (screen != NULL, NULL);
+
+	display = gdk_screen_get_display (screen);
+	screen_num = gdk_screen_get_number (screen);
+
+	gdk_error_trap_push ();
+
+	visual = NULL;
+	for (i = 0; i < G_N_ELEMENTS (attrs); i++)
+	{
+		XVisualInfo *vi;
+
+		vi = glXChooseVisual (GDK_DISPLAY_XDISPLAY (display), screen_num, attrs [i]);
+
+		if (vi != NULL)
+		{
+			VisualID   vid;
+
+			vid = XVisualIDFromVisual (vi->visual);
+
+			visual = gdkx_visual_get (vid);
+
+			XFree (vi);
+
+			if (visual != NULL)
+			{
+				break;
+			}
+		}
+	}
+
+	gdk_display_sync (display);
+	gdk_error_trap_pop ();
+
+#else
+	visual = NULL;
+
+#endif /* HAVE_LIBGL */
+
+	return visual;
+}
diff --git a/src/gs-visual-gl.c.orig b/src/gs-visual-gl.c.orig
new file mode 100644
index 0000000..e253b28
--- /dev/null
+++ b/src/gs-visual-gl.c.orig
@@ -0,0 +1,116 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ * Copyright (C) 1999, 2000, 2003 Jamie Zawinski <jwz at jwz.org>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#ifdef HAVE_LIBGL
+#include <GL/gl.h>
+#include <GL/glx.h>
+#endif /* HAVE_GL */
+
+#include "gs-visual-gl.h"
+#include "gs-debug.h"
+
+GdkVisual *
+gs_visual_gl_get_best_for_screen (GdkScreen *screen)
+{
+    GdkVisual  *visual;
+#ifdef HAVE_LIBGL
+    GdkDisplay *display;
+    int         screen_num;
+    int         i;
+
+# define R GLX_RED_SIZE
+# define G GLX_GREEN_SIZE
+# define B GLX_BLUE_SIZE
+# define D GLX_DEPTH_SIZE
+# define I GLX_BUFFER_SIZE
+# define DB GLX_DOUBLEBUFFER
+# define ST GLX_STENCIL_SIZE
+
+    static int attrs [][20] =
+    {
+        { GLX_RGBA, R, 8, G, 8, B, 8, D, 8, DB, ST,1, 0 }, /* rgb double, stencil */
+        { GLX_RGBA, R, 4, G, 4, B, 4, D, 4, DB, ST,1, 0 },
+        { GLX_RGBA, R, 2, G, 2, B, 2, D, 2, DB, ST,1, 0 },
+        { GLX_RGBA, R, 8, G, 8, B, 8, D, 8, DB,       0 }, /* rgb double */
+        { GLX_RGBA, R, 4, G, 4, B, 4, D, 4, DB,       0 },
+        { GLX_RGBA, R, 2, G, 2, B, 2, D, 2, DB,       0 },
+        { GLX_RGBA, R, 8, G, 8, B, 8, D, 8,           0 }, /* rgb single */
+        { GLX_RGBA, R, 4, G, 4, B, 4, D, 4,           0 },
+        { GLX_RGBA, R, 2, G, 2, B, 2, D, 2,           0 },
+        { I, 8,                       D, 8, DB,       0 }, /* cmap double */
+        { I, 4,                       D, 4, DB,       0 },
+        { I, 8,                       D, 8,           0 }, /* cmap single */
+        { I, 4,                       D, 4,           0 },
+        { GLX_RGBA, R, 1, G, 1, B, 1, D, 1,           0 }  /* monochrome */
+    };
+
+    g_return_val_if_fail (screen != NULL, NULL);
+
+    display = gdk_screen_get_display (screen);
+    screen_num = gdk_screen_get_number (screen);
+
+    gdk_error_trap_push ();
+
+    visual = NULL;
+    for (i = 0; i < G_N_ELEMENTS (attrs); i++)
+    {
+        XVisualInfo *vi;
+
+        vi = glXChooseVisual (GDK_DISPLAY_XDISPLAY (display), screen_num, attrs [i]);
+
+        if (vi != NULL)
+        {
+            VisualID   vid;
+
+            vid = XVisualIDFromVisual (vi->visual);
+
+            visual = gdkx_visual_get (vid);
+
+            XFree (vi);
+
+            if (visual != NULL)
+            {
+                break;
+            }
+        }
+    }
+
+    gdk_display_sync (display);
+    gdk_error_trap_pop ();
+
+#else
+    visual = NULL;
+
+#endif /* HAVE_LIBGL */
+
+    return visual;
+}
diff --git a/src/gs-visual-gl.h b/src/gs-visual-gl.h
new file mode 100644
index 0000000..fca138c
--- /dev/null
+++ b/src/gs-visual-gl.h
@@ -0,0 +1,32 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifndef __GS_VISUAL_GL_H
+#define __GS_VISUAL_GL_H
+
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+
+GdkVisual   *gs_visual_gl_get_best_for_screen      (GdkScreen *screen);
+
+G_END_DECLS
+
+#endif /* __GS_VISUAL_GL_H */
diff --git a/src/gs-watcher-x11.c b/src/gs-watcher-x11.c
new file mode 100644
index 0000000..1e3114e
--- /dev/null
+++ b/src/gs-watcher-x11.c
@@ -0,0 +1,680 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ * Copyright (C) 2008      Red Hat, Inc.
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <errno.h>
+
+#include <string.h>
+#include <gdk/gdkx.h>
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+
+#include "gs-watcher.h"
+#include "gs-marshal.h"
+#include "gs-debug.h"
+
+static void     gs_watcher_class_init (GSWatcherClass *klass);
+static void     gs_watcher_init       (GSWatcher      *watcher);
+static void     gs_watcher_finalize   (GObject        *object);
+
+static gboolean watchdog_timer        (GSWatcher      *watcher);
+
+#define GS_WATCHER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_WATCHER, GSWatcherPrivate))
+
+struct GSWatcherPrivate
+{
+	/* settings */
+	guint           enabled : 1;
+	guint           delta_notice_timeout;
+
+	/* state */
+	guint           active : 1;
+	guint           idle : 1;
+	guint           idle_notice : 1;
+
+	guint           idle_id;
+	char           *status_message;
+
+	DBusGProxy     *presence_proxy;
+	guint           watchdog_timer_id;
+};
+
+enum
+{
+    PROP_0,
+    PROP_STATUS_MESSAGE
+};
+
+enum
+{
+    IDLE_CHANGED,
+    IDLE_NOTICE_CHANGED,
+    LAST_SIGNAL
+};
+
+static guint signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSWatcher, gs_watcher, G_TYPE_OBJECT)
+
+static void
+remove_watchdog_timer (GSWatcher *watcher)
+{
+	if (watcher->priv->watchdog_timer_id != 0)
+	{
+		g_source_remove (watcher->priv->watchdog_timer_id);
+		watcher->priv->watchdog_timer_id = 0;
+	}
+}
+
+static void
+add_watchdog_timer (GSWatcher *watcher,
+                    glong      timeout)
+{
+	watcher->priv->watchdog_timer_id = g_timeout_add (timeout,
+	                                   (GSourceFunc)watchdog_timer,
+	                                   watcher);
+}
+
+static void
+gs_watcher_get_property (GObject    *object,
+                         guint       prop_id,
+                         GValue     *value,
+                         GParamSpec *pspec)
+{
+	GSWatcher *self;
+
+	self = GS_WATCHER (object);
+
+	switch (prop_id)
+	{
+	case PROP_STATUS_MESSAGE:
+		g_value_set_string (value, self->priv->status_message);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+set_status_text (GSWatcher  *watcher,
+                 const char *text)
+{
+	g_free (watcher->priv->status_message);
+
+	watcher->priv->status_message = g_strdup (text);
+	g_object_notify (G_OBJECT (watcher), "status-message");
+}
+
+static void
+gs_watcher_set_property (GObject          *object,
+                         guint             prop_id,
+                         const GValue     *value,
+                         GParamSpec       *pspec)
+{
+	GSWatcher *self;
+
+	self = GS_WATCHER (object);
+
+	switch (prop_id)
+	{
+	case PROP_STATUS_MESSAGE:
+		set_status_text (self, g_value_get_string (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_watcher_class_init (GSWatcherClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->finalize = gs_watcher_finalize;
+	object_class->get_property = gs_watcher_get_property;
+	object_class->set_property = gs_watcher_set_property;
+
+	g_object_class_install_property (object_class,
+	                                 PROP_STATUS_MESSAGE,
+	                                 g_param_spec_string ("status-message",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+
+	signals [IDLE_CHANGED] =
+	    g_signal_new ("idle-changed",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSWatcherClass, idle_changed),
+	                  NULL,
+	                  NULL,
+	                  gs_marshal_BOOLEAN__BOOLEAN,
+	                  G_TYPE_BOOLEAN,
+	                  1, G_TYPE_BOOLEAN);
+	signals [IDLE_NOTICE_CHANGED] =
+	    g_signal_new ("idle-notice-changed",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSWatcherClass, idle_notice_changed),
+	                  NULL,
+	                  NULL,
+	                  gs_marshal_BOOLEAN__BOOLEAN,
+	                  G_TYPE_BOOLEAN,
+	                  1, G_TYPE_BOOLEAN);
+
+	g_type_class_add_private (klass, sizeof (GSWatcherPrivate));
+}
+
+static gboolean
+_gs_watcher_set_session_idle_notice (GSWatcher *watcher,
+                                     gboolean   in_effect)
+{
+	gboolean res;
+
+	res = FALSE;
+
+	if (in_effect != watcher->priv->idle_notice)
+	{
+
+		g_signal_emit (watcher, signals [IDLE_NOTICE_CHANGED], 0, in_effect, &res);
+		if (res)
+		{
+			gs_debug ("Changing idle notice state: %d", in_effect);
+
+			watcher->priv->idle_notice = in_effect;
+		}
+		else
+		{
+			gs_debug ("Idle notice signal not handled: %d", in_effect);
+		}
+	}
+
+	return res;
+}
+
+static gboolean
+_gs_watcher_set_session_idle (GSWatcher *watcher,
+                              gboolean   is_idle)
+{
+	gboolean res;
+
+	res = FALSE;
+
+	if (is_idle != watcher->priv->idle)
+	{
+
+		g_signal_emit (watcher, signals [IDLE_CHANGED], 0, is_idle, &res);
+		if (res)
+		{
+			gs_debug ("Changing idle state: %d", is_idle);
+
+			watcher->priv->idle = is_idle;
+		}
+		else
+		{
+			gs_debug ("Idle changed signal not handled: %d", is_idle);
+		}
+	}
+
+	return res;
+}
+
+gboolean
+gs_watcher_get_active (GSWatcher *watcher)
+{
+	gboolean active;
+
+	g_return_val_if_fail (GS_IS_WATCHER (watcher), FALSE);
+
+	active = watcher->priv->active;
+
+	return active;
+}
+
+static void
+_gs_watcher_reset_state (GSWatcher *watcher)
+{
+	watcher->priv->idle = FALSE;
+	watcher->priv->idle_notice = FALSE;
+}
+
+static gboolean
+_gs_watcher_set_active_internal (GSWatcher *watcher,
+                                 gboolean   active)
+{
+	if (active != watcher->priv->active)
+	{
+		/* reset state */
+		_gs_watcher_reset_state (watcher);
+
+		watcher->priv->active = active;
+	}
+
+	return TRUE;
+}
+
+gboolean
+gs_watcher_set_active (GSWatcher *watcher,
+                       gboolean   active)
+{
+	g_return_val_if_fail (GS_IS_WATCHER (watcher), FALSE);
+
+	gs_debug ("turning watcher: %s", active ? "ON" : "OFF");
+
+	if (watcher->priv->active == active)
+	{
+		gs_debug ("Idle detection is already %s",
+		          active ? "active" : "inactive");
+		return FALSE;
+	}
+
+	if (! watcher->priv->enabled)
+	{
+		gs_debug ("Idle detection is disabled, cannot activate");
+		return FALSE;
+	}
+
+	return _gs_watcher_set_active_internal (watcher, active);
+}
+
+gboolean
+gs_watcher_set_enabled (GSWatcher *watcher,
+                        gboolean   enabled)
+{
+	g_return_val_if_fail (GS_IS_WATCHER (watcher), FALSE);
+
+	if (watcher->priv->enabled != enabled)
+	{
+		gboolean is_active = gs_watcher_get_active (watcher);
+
+		watcher->priv->enabled = enabled;
+
+		/* if we are disabling the watcher and we are
+		   active shut it down */
+		if (! enabled && is_active)
+		{
+			_gs_watcher_set_active_internal (watcher, FALSE);
+		}
+	}
+
+	return TRUE;
+}
+
+gboolean
+gs_watcher_get_enabled (GSWatcher *watcher)
+{
+	gboolean enabled;
+
+	g_return_val_if_fail (GS_IS_WATCHER (watcher), FALSE);
+
+	enabled = watcher->priv->enabled;
+
+	return enabled;
+}
+
+static gboolean
+on_idle_timeout (GSWatcher *watcher)
+{
+	gboolean res;
+
+	res = _gs_watcher_set_session_idle (watcher, TRUE);
+
+	_gs_watcher_set_session_idle_notice (watcher, FALSE);
+
+	/* try again if we failed i guess */
+	return !res;
+}
+
+static void
+set_status (GSWatcher *watcher,
+            guint      status)
+{
+	gboolean res;
+	gboolean is_idle;
+
+	if (! watcher->priv->active)
+	{
+		gs_debug ("GSWatcher: not active, ignoring status changes");
+		return;
+	}
+
+	is_idle = (status == 3);
+
+	if (!is_idle && !watcher->priv->idle_notice)
+	{
+		/* no change in idleness */
+		return;
+	}
+
+	if (is_idle)
+	{
+		res = _gs_watcher_set_session_idle_notice (watcher, is_idle);
+		/* queue an activation */
+		if (watcher->priv->idle_id > 0)
+		{
+			g_source_remove (watcher->priv->idle_id);
+		}
+		watcher->priv->idle_id = g_timeout_add (watcher->priv->delta_notice_timeout,
+		                                        (GSourceFunc)on_idle_timeout,
+		                                        watcher);
+	}
+	else
+	{
+		/* cancel notice too */
+		if (watcher->priv->idle_id > 0)
+		{
+			g_source_remove (watcher->priv->idle_id);
+		}
+		res = _gs_watcher_set_session_idle (watcher, FALSE);
+		res = _gs_watcher_set_session_idle_notice (watcher, FALSE);
+	}
+}
+
+static void
+on_presence_status_changed (DBusGProxy    *presence_proxy,
+                            guint          status,
+                            GSWatcher     *watcher)
+{
+	set_status (watcher, status);
+}
+
+static void
+on_presence_status_text_changed (DBusGProxy    *presence_proxy,
+                                 const char    *status_text,
+                                 GSWatcher     *watcher)
+{
+	set_status_text (watcher, status_text);
+}
+
+static gboolean
+connect_presence_watcher (GSWatcher *watcher)
+{
+	DBusGConnection   *bus;
+	GError            *error;
+	gboolean           ret;
+
+	ret = FALSE;
+
+	error = NULL;
+	bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+	if (bus == NULL)
+	{
+		g_warning ("Unable to get session bus: %s", error->message);
+		g_error_free (error);
+		goto done;
+	}
+
+	error = NULL;
+	watcher->priv->presence_proxy = dbus_g_proxy_new_for_name_owner (bus,
+	                                "org.mate.SessionManager",
+	                                "/org/mate/SessionManager/Presence",
+	                                "org.mate.SessionManager.Presence",
+	                                &error);
+	if (watcher->priv->presence_proxy != NULL)
+	{
+		DBusGProxy *proxy;
+
+		dbus_g_proxy_add_signal (watcher->priv->presence_proxy,
+		                         "StatusChanged",
+		                         G_TYPE_UINT,
+		                         G_TYPE_INVALID);
+		dbus_g_proxy_connect_signal (watcher->priv->presence_proxy,
+		                             "StatusChanged",
+		                             G_CALLBACK (on_presence_status_changed),
+		                             watcher,
+		                             NULL);
+		dbus_g_proxy_add_signal (watcher->priv->presence_proxy,
+		                         "StatusTextChanged",
+		                         G_TYPE_STRING,
+		                         G_TYPE_INVALID);
+		dbus_g_proxy_connect_signal (watcher->priv->presence_proxy,
+		                             "StatusTextChanged",
+		                             G_CALLBACK (on_presence_status_text_changed),
+		                             watcher,
+		                             NULL);
+
+		proxy = dbus_g_proxy_new_from_proxy (watcher->priv->presence_proxy,
+		                                     "org.freedesktop.DBus.Properties",
+		                                     "/org/mate/SessionManager/Presence");
+		if (proxy != NULL)
+		{
+			guint       status;
+			const char *status_text;
+			GValue      value = { 0, };
+
+			status = 0;
+			status_text = NULL;
+
+			error = NULL;
+			dbus_g_proxy_call (proxy,
+			                   "Get",
+			                   &error,
+			                   G_TYPE_STRING, "org.mate.SessionManager.Presence",
+			                   G_TYPE_STRING, "status",
+			                   G_TYPE_INVALID,
+			                   G_TYPE_VALUE, &value,
+			                   G_TYPE_INVALID);
+
+			if (error != NULL)
+			{
+				g_warning ("Couldn't get presence status: %s", error->message);
+				g_error_free (error);
+				goto done;
+			}
+			else
+			{
+				status = g_value_get_uint (&value);
+			}
+
+			g_value_unset (&value);
+
+			error = NULL;
+			dbus_g_proxy_call (proxy,
+			                   "Get",
+			                   &error,
+			                   G_TYPE_STRING, "org.mate.SessionManager.Presence",
+			                   G_TYPE_STRING, "status-text",
+			                   G_TYPE_INVALID,
+			                   G_TYPE_VALUE, &value,
+			                   G_TYPE_INVALID);
+
+			if (error != NULL)
+			{
+				g_warning ("Couldn't get presence status text: %s", error->message);
+				g_error_free (error);
+			}
+			else
+			{
+				status_text = g_value_get_string (&value);
+			}
+
+			set_status (watcher, status);
+			set_status_text (watcher, status_text);
+		}
+	}
+	else
+	{
+		g_warning ("Failed to get session presence proxy: %s", error->message);
+		g_error_free (error);
+		goto done;
+	}
+
+	ret = TRUE;
+
+done:
+	return ret;
+}
+
+static void
+gs_watcher_init (GSWatcher *watcher)
+{
+	watcher->priv = GS_WATCHER_GET_PRIVATE (watcher);
+
+	watcher->priv->enabled = TRUE;
+	watcher->priv->active = FALSE;
+
+	connect_presence_watcher (watcher);
+
+	/* time before idle signal to send notice signal */
+	watcher->priv->delta_notice_timeout = 10000;
+
+	add_watchdog_timer (watcher, 600000);
+}
+
+static void
+gs_watcher_finalize (GObject *object)
+{
+	GSWatcher *watcher;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_WATCHER (object));
+
+	watcher = GS_WATCHER (object);
+
+	g_return_if_fail (watcher->priv != NULL);
+
+	remove_watchdog_timer (watcher);
+
+	if (watcher->priv->idle_id > 0)
+	{
+		g_source_remove (watcher->priv->idle_id);
+	}
+
+	watcher->priv->active = FALSE;
+
+	if (watcher->priv->presence_proxy != NULL)
+	{
+		g_object_unref (watcher->priv->presence_proxy);
+	}
+
+	g_free (watcher->priv->status_message);
+
+	G_OBJECT_CLASS (gs_watcher_parent_class)->finalize (object);
+}
+
+/* Figuring out what the appropriate XSetScreenSaver() parameters are
+   (one wouldn't expect this to be rocket science.)
+*/
+static void
+disable_builtin_screensaver (GSWatcher *watcher,
+                             gboolean   unblank_screen)
+{
+	int current_server_timeout, current_server_interval;
+	int current_prefer_blank,   current_allow_exp;
+	int desired_server_timeout, desired_server_interval;
+	int desired_prefer_blank,   desired_allow_exp;
+
+	XGetScreenSaver (GDK_DISPLAY (),
+	                 &current_server_timeout,
+	                 &current_server_interval,
+	                 &current_prefer_blank,
+	                 &current_allow_exp);
+
+	desired_server_timeout  = current_server_timeout;
+	desired_server_interval = current_server_interval;
+	desired_prefer_blank    = current_prefer_blank;
+	desired_allow_exp       = current_allow_exp;
+
+	desired_server_interval = 0;
+
+	/* I suspect (but am not sure) that DontAllowExposures might have
+	   something to do with powering off the monitor as well, at least
+	   on some systems that don't support XDPMS?  Who know... */
+	desired_allow_exp = AllowExposures;
+
+	/* When we're not using an extension, set the server-side timeout to 0,
+	   so that the server never gets involved with screen blanking, and we
+	   do it all ourselves.  (However, when we *are* using an extension,
+	   we tell the server when to notify us, and rather than blanking the
+	   screen, the server will send us an X event telling us to blank.)
+	*/
+	desired_server_timeout = 0;
+
+	if (desired_server_timeout     != current_server_timeout
+	        || desired_server_interval != current_server_interval
+	        || desired_prefer_blank    != current_prefer_blank
+	        || desired_allow_exp       != current_allow_exp)
+	{
+
+		gs_debug ("disabling server builtin screensaver:"
+		          " (xset s %d %d; xset s %s; xset s %s)",
+		          desired_server_timeout,
+		          desired_server_interval,
+		          (desired_prefer_blank ? "blank" : "noblank"),
+		          (desired_allow_exp ? "expose" : "noexpose"));
+
+		XSetScreenSaver (GDK_DISPLAY (),
+		                 desired_server_timeout,
+		                 desired_server_interval,
+		                 desired_prefer_blank,
+		                 desired_allow_exp);
+
+		XSync (GDK_DISPLAY (), FALSE);
+	}
+
+	if (unblank_screen)
+	{
+		/* Turn off the server builtin saver if it is now running. */
+		XForceScreenSaver (GDK_DISPLAY (), ScreenSaverReset);
+	}
+}
+
+
+/* This timer goes off every few minutes, whether the user is idle or not,
+   to try and clean up anything that has gone wrong.
+
+   It calls disable_builtin_screensaver() so that if xset has been used,
+   or some other program (like xlock) has messed with the XSetScreenSaver()
+   settings, they will be set back to sensible values (if a server extension
+   is in use, messing with xlock can cause the screensaver to never get a wakeup
+   event, and could cause monitor power-saving to occur, and all manner of
+   heinousness.)
+
+ */
+
+static gboolean
+watchdog_timer (GSWatcher *watcher)
+{
+
+	disable_builtin_screensaver (watcher, FALSE);
+
+	return TRUE;
+}
+
+GSWatcher *
+gs_watcher_new (void)
+{
+	GSWatcher *watcher;
+
+	watcher = g_object_new (GS_TYPE_WATCHER,
+	                        NULL);
+
+	return GS_WATCHER (watcher);
+}
diff --git a/src/gs-watcher-x11.c.orig b/src/gs-watcher-x11.c.orig
new file mode 100644
index 0000000..a9c90e8
--- /dev/null
+++ b/src/gs-watcher-x11.c.orig
@@ -0,0 +1,680 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ * Copyright (C) 2008      Red Hat, Inc.
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <errno.h>
+
+#include <string.h>
+#include <gdk/gdkx.h>
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+
+#include "gs-watcher.h"
+#include "gs-marshal.h"
+#include "gs-debug.h"
+
+static void     gs_watcher_class_init (GSWatcherClass *klass);
+static void     gs_watcher_init       (GSWatcher      *watcher);
+static void     gs_watcher_finalize   (GObject        *object);
+
+static gboolean watchdog_timer        (GSWatcher      *watcher);
+
+#define GS_WATCHER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_WATCHER, GSWatcherPrivate))
+
+struct GSWatcherPrivate
+{
+    /* settings */
+    guint           enabled : 1;
+    guint           delta_notice_timeout;
+
+    /* state */
+    guint           active : 1;
+    guint           idle : 1;
+    guint           idle_notice : 1;
+
+    guint           idle_id;
+    char           *status_message;
+
+    DBusGProxy     *presence_proxy;
+    guint           watchdog_timer_id;
+};
+
+enum
+{
+    PROP_0,
+    PROP_STATUS_MESSAGE
+};
+
+enum
+{
+    IDLE_CHANGED,
+    IDLE_NOTICE_CHANGED,
+    LAST_SIGNAL
+};
+
+static guint signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSWatcher, gs_watcher, G_TYPE_OBJECT)
+
+static void
+remove_watchdog_timer (GSWatcher *watcher)
+{
+    if (watcher->priv->watchdog_timer_id != 0)
+    {
+        g_source_remove (watcher->priv->watchdog_timer_id);
+        watcher->priv->watchdog_timer_id = 0;
+    }
+}
+
+static void
+add_watchdog_timer (GSWatcher *watcher,
+                    glong      timeout)
+{
+    watcher->priv->watchdog_timer_id = g_timeout_add (timeout,
+                                       (GSourceFunc)watchdog_timer,
+                                       watcher);
+}
+
+static void
+gs_watcher_get_property (GObject    *object,
+                         guint       prop_id,
+                         GValue     *value,
+                         GParamSpec *pspec)
+{
+    GSWatcher *self;
+
+    self = GS_WATCHER (object);
+
+    switch (prop_id)
+    {
+    case PROP_STATUS_MESSAGE:
+        g_value_set_string (value, self->priv->status_message);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+set_status_text (GSWatcher  *watcher,
+                 const char *text)
+{
+    g_free (watcher->priv->status_message);
+
+    watcher->priv->status_message = g_strdup (text);
+    g_object_notify (G_OBJECT (watcher), "status-message");
+}
+
+static void
+gs_watcher_set_property (GObject          *object,
+                         guint             prop_id,
+                         const GValue     *value,
+                         GParamSpec       *pspec)
+{
+    GSWatcher *self;
+
+    self = GS_WATCHER (object);
+
+    switch (prop_id)
+    {
+    case PROP_STATUS_MESSAGE:
+        set_status_text (self, g_value_get_string (value));
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_watcher_class_init (GSWatcherClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+    object_class->finalize = gs_watcher_finalize;
+    object_class->get_property = gs_watcher_get_property;
+    object_class->set_property = gs_watcher_set_property;
+
+    g_object_class_install_property (object_class,
+                                     PROP_STATUS_MESSAGE,
+                                     g_param_spec_string ("status-message",
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             G_PARAM_READWRITE));
+
+    signals [IDLE_CHANGED] =
+        g_signal_new ("idle-changed",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSWatcherClass, idle_changed),
+                      NULL,
+                      NULL,
+                      gs_marshal_BOOLEAN__BOOLEAN,
+                      G_TYPE_BOOLEAN,
+                      1, G_TYPE_BOOLEAN);
+    signals [IDLE_NOTICE_CHANGED] =
+        g_signal_new ("idle-notice-changed",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSWatcherClass, idle_notice_changed),
+                      NULL,
+                      NULL,
+                      gs_marshal_BOOLEAN__BOOLEAN,
+                      G_TYPE_BOOLEAN,
+                      1, G_TYPE_BOOLEAN);
+
+    g_type_class_add_private (klass, sizeof (GSWatcherPrivate));
+}
+
+static gboolean
+_gs_watcher_set_session_idle_notice (GSWatcher *watcher,
+                                     gboolean   in_effect)
+{
+    gboolean res;
+
+    res = FALSE;
+
+    if (in_effect != watcher->priv->idle_notice)
+    {
+
+        g_signal_emit (watcher, signals [IDLE_NOTICE_CHANGED], 0, in_effect, &res);
+        if (res)
+        {
+            gs_debug ("Changing idle notice state: %d", in_effect);
+
+            watcher->priv->idle_notice = in_effect;
+        }
+        else
+        {
+            gs_debug ("Idle notice signal not handled: %d", in_effect);
+        }
+    }
+
+    return res;
+}
+
+static gboolean
+_gs_watcher_set_session_idle (GSWatcher *watcher,
+                              gboolean   is_idle)
+{
+    gboolean res;
+
+    res = FALSE;
+
+    if (is_idle != watcher->priv->idle)
+    {
+
+        g_signal_emit (watcher, signals [IDLE_CHANGED], 0, is_idle, &res);
+        if (res)
+        {
+            gs_debug ("Changing idle state: %d", is_idle);
+
+            watcher->priv->idle = is_idle;
+        }
+        else
+        {
+            gs_debug ("Idle changed signal not handled: %d", is_idle);
+        }
+    }
+
+    return res;
+}
+
+gboolean
+gs_watcher_get_active (GSWatcher *watcher)
+{
+    gboolean active;
+
+    g_return_val_if_fail (GS_IS_WATCHER (watcher), FALSE);
+
+    active = watcher->priv->active;
+
+    return active;
+}
+
+static void
+_gs_watcher_reset_state (GSWatcher *watcher)
+{
+    watcher->priv->idle = FALSE;
+    watcher->priv->idle_notice = FALSE;
+}
+
+static gboolean
+_gs_watcher_set_active_internal (GSWatcher *watcher,
+                                 gboolean   active)
+{
+    if (active != watcher->priv->active)
+    {
+        /* reset state */
+        _gs_watcher_reset_state (watcher);
+
+        watcher->priv->active = active;
+    }
+
+    return TRUE;
+}
+
+gboolean
+gs_watcher_set_active (GSWatcher *watcher,
+                       gboolean   active)
+{
+    g_return_val_if_fail (GS_IS_WATCHER (watcher), FALSE);
+
+    gs_debug ("turning watcher: %s", active ? "ON" : "OFF");
+
+    if (watcher->priv->active == active)
+    {
+        gs_debug ("Idle detection is already %s",
+                  active ? "active" : "inactive");
+        return FALSE;
+    }
+
+    if (! watcher->priv->enabled)
+    {
+        gs_debug ("Idle detection is disabled, cannot activate");
+        return FALSE;
+    }
+
+    return _gs_watcher_set_active_internal (watcher, active);
+}
+
+gboolean
+gs_watcher_set_enabled (GSWatcher *watcher,
+                        gboolean   enabled)
+{
+    g_return_val_if_fail (GS_IS_WATCHER (watcher), FALSE);
+
+    if (watcher->priv->enabled != enabled)
+    {
+        gboolean is_active = gs_watcher_get_active (watcher);
+
+        watcher->priv->enabled = enabled;
+
+        /* if we are disabling the watcher and we are
+           active shut it down */
+        if (! enabled && is_active)
+        {
+            _gs_watcher_set_active_internal (watcher, FALSE);
+        }
+    }
+
+    return TRUE;
+}
+
+gboolean
+gs_watcher_get_enabled (GSWatcher *watcher)
+{
+    gboolean enabled;
+
+    g_return_val_if_fail (GS_IS_WATCHER (watcher), FALSE);
+
+    enabled = watcher->priv->enabled;
+
+    return enabled;
+}
+
+static gboolean
+on_idle_timeout (GSWatcher *watcher)
+{
+    gboolean res;
+
+    res = _gs_watcher_set_session_idle (watcher, TRUE);
+
+    _gs_watcher_set_session_idle_notice (watcher, FALSE);
+
+    /* try again if we failed i guess */
+    return !res;
+}
+
+static void
+set_status (GSWatcher *watcher,
+            guint      status)
+{
+    gboolean res;
+    gboolean is_idle;
+
+    if (! watcher->priv->active)
+    {
+        gs_debug ("GSWatcher: not active, ignoring status changes");
+        return;
+    }
+
+    is_idle = (status == 3);
+
+    if (!is_idle && !watcher->priv->idle_notice)
+    {
+        /* no change in idleness */
+        return;
+    }
+
+    if (is_idle)
+    {
+        res = _gs_watcher_set_session_idle_notice (watcher, is_idle);
+        /* queue an activation */
+        if (watcher->priv->idle_id > 0)
+        {
+            g_source_remove (watcher->priv->idle_id);
+        }
+        watcher->priv->idle_id = g_timeout_add (watcher->priv->delta_notice_timeout,
+                                                (GSourceFunc)on_idle_timeout,
+                                                watcher);
+    }
+    else
+    {
+        /* cancel notice too */
+        if (watcher->priv->idle_id > 0)
+        {
+            g_source_remove (watcher->priv->idle_id);
+        }
+        res = _gs_watcher_set_session_idle (watcher, FALSE);
+        res = _gs_watcher_set_session_idle_notice (watcher, FALSE);
+    }
+}
+
+static void
+on_presence_status_changed (DBusGProxy    *presence_proxy,
+                            guint          status,
+                            GSWatcher     *watcher)
+{
+    set_status (watcher, status);
+}
+
+static void
+on_presence_status_text_changed (DBusGProxy    *presence_proxy,
+                                 const char    *status_text,
+                                 GSWatcher     *watcher)
+{
+    set_status_text (watcher, status_text);
+}
+
+static gboolean
+connect_presence_watcher (GSWatcher *watcher)
+{
+    DBusGConnection   *bus;
+    GError            *error;
+    gboolean           ret;
+
+    ret = FALSE;
+
+    error = NULL;
+    bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+    if (bus == NULL)
+    {
+        g_warning ("Unable to get session bus: %s", error->message);
+        g_error_free (error);
+        goto done;
+    }
+
+    error = NULL;
+    watcher->priv->presence_proxy = dbus_g_proxy_new_for_name_owner (bus,
+                                    "org.mate.SessionManager",
+                                    "/org/mate/SessionManager/Presence",
+                                    "org.mate.SessionManager.Presence",
+                                    &error);
+    if (watcher->priv->presence_proxy != NULL)
+    {
+        DBusGProxy *proxy;
+
+        dbus_g_proxy_add_signal (watcher->priv->presence_proxy,
+                                 "StatusChanged",
+                                 G_TYPE_UINT,
+                                 G_TYPE_INVALID);
+        dbus_g_proxy_connect_signal (watcher->priv->presence_proxy,
+                                     "StatusChanged",
+                                     G_CALLBACK (on_presence_status_changed),
+                                     watcher,
+                                     NULL);
+        dbus_g_proxy_add_signal (watcher->priv->presence_proxy,
+                                 "StatusTextChanged",
+                                 G_TYPE_STRING,
+                                 G_TYPE_INVALID);
+        dbus_g_proxy_connect_signal (watcher->priv->presence_proxy,
+                                     "StatusTextChanged",
+                                     G_CALLBACK (on_presence_status_text_changed),
+                                     watcher,
+                                     NULL);
+
+        proxy = dbus_g_proxy_new_from_proxy (watcher->priv->presence_proxy,
+                                             "org.freedesktop.DBus.Properties",
+                                             "/org/mate/SessionManager/Presence");
+        if (proxy != NULL)
+        {
+            guint       status;
+            const char *status_text;
+            GValue      value = { 0, };
+
+            status = 0;
+            status_text = NULL;
+
+            error = NULL;
+            dbus_g_proxy_call (proxy,
+                               "Get",
+                               &error,
+                               G_TYPE_STRING, "org.mate.SessionManager.Presence",
+                               G_TYPE_STRING, "status",
+                               G_TYPE_INVALID,
+                               G_TYPE_VALUE, &value,
+                               G_TYPE_INVALID);
+
+            if (error != NULL)
+            {
+                g_warning ("Couldn't get presence status: %s", error->message);
+                g_error_free (error);
+                goto done;
+            }
+            else
+            {
+                status = g_value_get_uint (&value);
+            }
+
+            g_value_unset (&value);
+
+            error = NULL;
+            dbus_g_proxy_call (proxy,
+                               "Get",
+                               &error,
+                               G_TYPE_STRING, "org.mate.SessionManager.Presence",
+                               G_TYPE_STRING, "status-text",
+                               G_TYPE_INVALID,
+                               G_TYPE_VALUE, &value,
+                               G_TYPE_INVALID);
+
+            if (error != NULL)
+            {
+                g_warning ("Couldn't get presence status text: %s", error->message);
+                g_error_free (error);
+            }
+            else
+            {
+                status_text = g_value_get_string (&value);
+            }
+
+            set_status (watcher, status);
+            set_status_text (watcher, status_text);
+        }
+    }
+    else
+    {
+        g_warning ("Failed to get session presence proxy: %s", error->message);
+        g_error_free (error);
+        goto done;
+    }
+
+    ret = TRUE;
+
+done:
+    return ret;
+}
+
+static void
+gs_watcher_init (GSWatcher *watcher)
+{
+    watcher->priv = GS_WATCHER_GET_PRIVATE (watcher);
+
+    watcher->priv->enabled = TRUE;
+    watcher->priv->active = FALSE;
+
+    connect_presence_watcher (watcher);
+
+    /* time before idle signal to send notice signal */
+    watcher->priv->delta_notice_timeout = 10000;
+
+    add_watchdog_timer (watcher, 600000);
+}
+
+static void
+gs_watcher_finalize (GObject *object)
+{
+    GSWatcher *watcher;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_WATCHER (object));
+
+    watcher = GS_WATCHER (object);
+
+    g_return_if_fail (watcher->priv != NULL);
+
+    remove_watchdog_timer (watcher);
+
+    if (watcher->priv->idle_id > 0)
+    {
+        g_source_remove (watcher->priv->idle_id);
+    }
+
+    watcher->priv->active = FALSE;
+
+    if (watcher->priv->presence_proxy != NULL)
+    {
+        g_object_unref (watcher->priv->presence_proxy);
+    }
+
+    g_free (watcher->priv->status_message);
+
+    G_OBJECT_CLASS (gs_watcher_parent_class)->finalize (object);
+}
+
+/* Figuring out what the appropriate XSetScreenSaver() parameters are
+   (one wouldn't expect this to be rocket science.)
+*/
+static void
+disable_builtin_screensaver (GSWatcher *watcher,
+                             gboolean   unblank_screen)
+{
+    int current_server_timeout, current_server_interval;
+    int current_prefer_blank,   current_allow_exp;
+    int desired_server_timeout, desired_server_interval;
+    int desired_prefer_blank,   desired_allow_exp;
+
+    XGetScreenSaver (GDK_DISPLAY (),
+                     &current_server_timeout,
+                     &current_server_interval,
+                     &current_prefer_blank,
+                     &current_allow_exp);
+
+    desired_server_timeout  = current_server_timeout;
+    desired_server_interval = current_server_interval;
+    desired_prefer_blank    = current_prefer_blank;
+    desired_allow_exp       = current_allow_exp;
+
+    desired_server_interval = 0;
+
+    /* I suspect (but am not sure) that DontAllowExposures might have
+       something to do with powering off the monitor as well, at least
+       on some systems that don't support XDPMS?  Who know... */
+    desired_allow_exp = AllowExposures;
+
+    /* When we're not using an extension, set the server-side timeout to 0,
+       so that the server never gets involved with screen blanking, and we
+       do it all ourselves.  (However, when we *are* using an extension,
+       we tell the server when to notify us, and rather than blanking the
+       screen, the server will send us an X event telling us to blank.)
+    */
+    desired_server_timeout = 0;
+
+    if (desired_server_timeout     != current_server_timeout
+            || desired_server_interval != current_server_interval
+            || desired_prefer_blank    != current_prefer_blank
+            || desired_allow_exp       != current_allow_exp)
+    {
+
+        gs_debug ("disabling server builtin screensaver:"
+                  " (xset s %d %d; xset s %s; xset s %s)",
+                  desired_server_timeout,
+                  desired_server_interval,
+                  (desired_prefer_blank ? "blank" : "noblank"),
+                  (desired_allow_exp ? "expose" : "noexpose"));
+
+        XSetScreenSaver (GDK_DISPLAY (),
+                         desired_server_timeout,
+                         desired_server_interval,
+                         desired_prefer_blank,
+                         desired_allow_exp);
+
+        XSync (GDK_DISPLAY (), FALSE);
+    }
+
+    if (unblank_screen)
+    {
+        /* Turn off the server builtin saver if it is now running. */
+        XForceScreenSaver (GDK_DISPLAY (), ScreenSaverReset);
+    }
+}
+
+
+/* This timer goes off every few minutes, whether the user is idle or not,
+   to try and clean up anything that has gone wrong.
+
+   It calls disable_builtin_screensaver() so that if xset has been used,
+   or some other program (like xlock) has messed with the XSetScreenSaver()
+   settings, they will be set back to sensible values (if a server extension
+   is in use, messing with xlock can cause the screensaver to never get a wakeup
+   event, and could cause monitor power-saving to occur, and all manner of
+   heinousness.)
+
+ */
+
+static gboolean
+watchdog_timer (GSWatcher *watcher)
+{
+
+    disable_builtin_screensaver (watcher, FALSE);
+
+    return TRUE;
+}
+
+GSWatcher *
+gs_watcher_new (void)
+{
+    GSWatcher *watcher;
+
+    watcher = g_object_new (GS_TYPE_WATCHER,
+                            NULL);
+
+    return GS_WATCHER (watcher);
+}
diff --git a/src/gs-watcher.h b/src/gs-watcher.h
new file mode 100644
index 0000000..be06bc7
--- /dev/null
+++ b/src/gs-watcher.h
@@ -0,0 +1,65 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_WATCHER_H
+#define __GS_WATCHER_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_WATCHER         (gs_watcher_get_type ())
+#define GS_WATCHER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_WATCHER, GSWatcher))
+#define GS_WATCHER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_WATCHER, GSWatcherClass))
+#define GS_IS_WATCHER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_WATCHER))
+#define GS_IS_WATCHER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_WATCHER))
+#define GS_WATCHER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_WATCHER, GSWatcherClass))
+
+typedef struct GSWatcherPrivate GSWatcherPrivate;
+
+typedef struct
+{
+	GObject           parent;
+	GSWatcherPrivate *priv;
+} GSWatcher;
+
+typedef struct
+{
+	GObjectClass      parent_class;
+
+	gboolean          (* idle_changed)        (GSWatcher *watcher,
+	        gboolean   is_idle);
+	gboolean          (* idle_notice_changed) (GSWatcher *watcher,
+	        gboolean   in_effect);
+} GSWatcherClass;
+
+GType       gs_watcher_get_type         (void);
+
+GSWatcher * gs_watcher_new              (void);
+gboolean    gs_watcher_set_enabled      (GSWatcher *watcher,
+        gboolean   enabled);
+gboolean    gs_watcher_get_enabled      (GSWatcher *watcher);
+gboolean    gs_watcher_set_active       (GSWatcher *watcher,
+        gboolean   active);
+gboolean    gs_watcher_get_active       (GSWatcher *watcher);
+
+G_END_DECLS
+
+#endif /* __GS_WATCHER_H */
diff --git a/src/gs-watcher.h.orig b/src/gs-watcher.h.orig
new file mode 100644
index 0000000..cc42dea
--- /dev/null
+++ b/src/gs-watcher.h.orig
@@ -0,0 +1,65 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_WATCHER_H
+#define __GS_WATCHER_H
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_WATCHER         (gs_watcher_get_type ())
+#define GS_WATCHER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_WATCHER, GSWatcher))
+#define GS_WATCHER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_WATCHER, GSWatcherClass))
+#define GS_IS_WATCHER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_WATCHER))
+#define GS_IS_WATCHER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_WATCHER))
+#define GS_WATCHER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_WATCHER, GSWatcherClass))
+
+typedef struct GSWatcherPrivate GSWatcherPrivate;
+
+typedef struct
+{
+    GObject           parent;
+    GSWatcherPrivate *priv;
+} GSWatcher;
+
+typedef struct
+{
+    GObjectClass      parent_class;
+
+    gboolean          (* idle_changed)        (GSWatcher *watcher,
+            gboolean   is_idle);
+    gboolean          (* idle_notice_changed) (GSWatcher *watcher,
+            gboolean   in_effect);
+} GSWatcherClass;
+
+GType       gs_watcher_get_type         (void);
+
+GSWatcher * gs_watcher_new              (void);
+gboolean    gs_watcher_set_enabled      (GSWatcher *watcher,
+        gboolean   enabled);
+gboolean    gs_watcher_get_enabled      (GSWatcher *watcher);
+gboolean    gs_watcher_set_active       (GSWatcher *watcher,
+        gboolean   active);
+gboolean    gs_watcher_get_active       (GSWatcher *watcher);
+
+G_END_DECLS
+
+#endif /* __GS_WATCHER_H */
diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c
new file mode 100644
index 0000000..2e6f0f7
--- /dev/null
+++ b/src/gs-window-x11.c
@@ -0,0 +1,2647 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2008 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <sys/types.h>
+#include <errno.h>
+#include <sys/wait.h>
+#include <string.h>
+
+#include <gdk/gdkx.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+
+#include "gs-window.h"
+#include "gs-marshal.h"
+#include "subprocs.h"
+#include "gs-debug.h"
+
+#ifdef HAVE_SHAPE_EXT
+#include <X11/extensions/shape.h>
+#endif
+
+static void gs_window_class_init (GSWindowClass *klass);
+static void gs_window_init       (GSWindow      *window);
+static void gs_window_finalize   (GObject       *object);
+
+static gboolean popup_dialog_idle (GSWindow *window);
+static void gs_window_dialog_finish (GSWindow *window);
+static void remove_command_watches (GSWindow *window);
+
+enum
+{
+    DIALOG_RESPONSE_CANCEL,
+    DIALOG_RESPONSE_OK
+};
+
+#define MAX_QUEUED_EVENTS 16
+#define INFO_BAR_SECONDS 30
+
+#define GS_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_WINDOW, GSWindowPrivate))
+
+struct GSWindowPrivate
+{
+	int        monitor;
+
+	GdkRectangle geometry;
+	guint      obscured : 1;
+	guint      dialog_up : 1;
+
+	guint      lock_enabled : 1;
+	guint      user_switch_enabled : 1;
+	guint      logout_enabled : 1;
+	guint      keyboard_enabled : 1;
+
+	guint64    logout_timeout;
+	char      *logout_command;
+	char      *keyboard_command;
+	char      *status_message;
+
+	GtkWidget *vbox;
+	GtkWidget *drawing_area;
+	GtkWidget *lock_box;
+	GtkWidget *lock_socket;
+	GtkWidget *keyboard_socket;
+	GtkWidget *info_bar;
+	GtkWidget *info_content;
+
+	GdkPixmap *background_pixmap;
+
+	guint      popup_dialog_idle_id;
+
+	guint      dialog_map_signal_id;
+	guint      dialog_unmap_signal_id;
+	guint      dialog_response_signal_id;
+
+	guint      watchdog_timer_id;
+	guint      info_bar_timer_id;
+
+	gint       lock_pid;
+	gint       lock_watch_id;
+	gint       dialog_response;
+	gboolean   dialog_quit_requested;
+	gboolean   dialog_shake_in_progress;
+
+	gint       keyboard_pid;
+	gint       keyboard_watch_id;
+
+	GList     *key_events;
+
+	gdouble    last_x;
+	gdouble    last_y;
+
+	GTimer    *timer;
+
+#ifdef HAVE_SHAPE_EXT
+	int        shape_event_base;
+#endif
+};
+
+enum
+{
+    ACTIVITY,
+    DEACTIVATED,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0,
+    PROP_OBSCURED,
+    PROP_DIALOG_UP,
+    PROP_LOCK_ENABLED,
+    PROP_LOGOUT_ENABLED,
+    PROP_KEYBOARD_ENABLED,
+    PROP_KEYBOARD_COMMAND,
+    PROP_LOGOUT_COMMAND,
+    PROP_LOGOUT_TIMEOUT,
+    PROP_MONITOR,
+    PROP_STATUS_MESSAGE
+};
+
+static guint           signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSWindow, gs_window, GTK_TYPE_WINDOW)
+
+static void
+set_invisible_cursor (GdkWindow *window,
+                      gboolean   invisible)
+{
+	GdkBitmap *empty_bitmap;
+	GdkCursor *cursor = NULL;
+	GdkColor   useless;
+	char       invisible_cursor_bits [] = { 0x0 };
+
+	if (invisible)
+	{
+		useless.red = useless.green = useless.blue = 0;
+		useless.pixel = 0;
+
+		empty_bitmap = gdk_bitmap_create_from_data (window,
+		               invisible_cursor_bits,
+		               1, 1);
+
+		cursor = gdk_cursor_new_from_pixmap (empty_bitmap,
+		                                     empty_bitmap,
+		                                     &useless,
+		                                     &useless, 0, 0);
+
+		g_object_unref (empty_bitmap);
+	}
+
+	gdk_window_set_cursor (window, cursor);
+
+	if (cursor)
+	{
+		gdk_cursor_unref (cursor);
+	}
+}
+
+/* derived from tomboy */
+static void
+gs_window_override_user_time (GSWindow *window)
+{
+	guint32 ev_time = gtk_get_current_event_time ();
+
+	if (ev_time == 0)
+	{
+		gint ev_mask = gtk_widget_get_events (GTK_WIDGET (window));
+		if (!(ev_mask & GDK_PROPERTY_CHANGE_MASK))
+		{
+			gtk_widget_add_events (GTK_WIDGET (window),
+			                       GDK_PROPERTY_CHANGE_MASK);
+		}
+
+		/*
+		 * NOTE: Last resort for D-BUS or other non-interactive
+		 *       openings.  Causes roundtrip to server.  Lame.
+		 */
+		ev_time = gdk_x11_get_server_time (GTK_WIDGET (window)->window);
+	}
+
+	gdk_x11_window_set_user_time (GTK_WIDGET (window)->window, ev_time);
+}
+
+static void
+force_no_pixmap_background (GtkWidget *widget)
+{
+	static gboolean first_time = TRUE;
+
+	if (first_time)
+	{
+		gtk_rc_parse_string ("\n"
+		                     "   style \"gs-theme-engine-style\"\n"
+		                     "   {\n"
+		                     "      bg_pixmap[NORMAL] = \"<none>\"\n"
+		                     "      bg_pixmap[INSENSITIVE] = \"<none>\"\n"
+		                     "      bg_pixmap[ACTIVE] = \"<none>\"\n"
+		                     "      bg_pixmap[PRELIGHT] = \"<none>\"\n"
+		                     "      bg[NORMAL] = { 0.0, 0.0, 0.0 }\n"
+		                     "      bg[INSENSITIVE] = { 0.0, 0.0, 0.0 }\n"
+		                     "      bg[ACTIVE] = { 0.0, 0.0, 0.0 }\n"
+		                     "      bg[PRELIGHT] = { 0.0, 0.0, 0.0 }\n"
+		                     "   }\n"
+		                     "   widget \"gs-window-drawing-area*\" style : highest \"gs-theme-engine-style\"\n"
+		                     "\n");
+		first_time = FALSE;
+	}
+
+	gtk_widget_set_name (widget, "gs-window-drawing-area");
+}
+
+static void
+clear_children (Window window)
+{
+	Window            root;
+	Window            parent;
+	Window           *children;
+	unsigned int      n_children;
+	int               status;
+
+	children = NULL;
+	status = XQueryTree (GDK_DISPLAY (), window, &root, &parent, &children, &n_children);
+
+	if (status == 0)
+	{
+		if (children)
+		{
+			XFree (children);
+		}
+		return;
+	}
+
+	if (children)
+	{
+		while (n_children)
+		{
+			Window child;
+
+			child = children [--n_children];
+
+			XClearWindow (GDK_DISPLAY (), child);
+			clear_children (child);
+		}
+
+		XFree (children);
+	}
+}
+
+static void
+widget_clear_all_children (GtkWidget *widget)
+{
+	GdkWindow *w;
+
+	gs_debug ("Clearing all child windows");
+
+	gdk_error_trap_push ();
+
+	w = widget->window;
+
+	clear_children (GDK_WINDOW_XID (w));
+
+	gdk_display_sync (gtk_widget_get_display (widget));
+	gdk_error_trap_pop ();
+}
+
+void
+gs_window_set_background_pixmap (GSWindow  *window,
+                                 GdkPixmap *pixmap)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	if (window->priv->background_pixmap != NULL)
+	{
+		g_object_unref (window->priv->background_pixmap);
+	}
+
+	if (pixmap != NULL)
+	{
+		window->priv->background_pixmap = g_object_ref (pixmap);
+		gdk_window_set_back_pixmap (GTK_WIDGET (window)->window,
+		                            pixmap,
+		                            FALSE);
+	}
+}
+
+static void
+gs_window_clear_to_background_pixmap (GSWindow *window)
+{
+	GtkStateType state;
+	GtkStyle    *style;
+
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	if (! GTK_WIDGET_VISIBLE (GTK_WIDGET (window)))
+	{
+		return;
+	}
+
+	if (window->priv->background_pixmap == NULL)
+	{
+		/* don't allow null pixmaps */
+		return;
+	}
+
+	gs_debug ("Clearing window to background pixmap");
+
+	style = gtk_style_copy (GTK_WIDGET (window)->style);
+
+	state = (GtkStateType) 0;
+	while (state < (GtkStateType) G_N_ELEMENTS (GTK_WIDGET (window)->style->bg_pixmap))
+	{
+
+		if (style->bg_pixmap[state] != NULL)
+		{
+			g_object_unref (style->bg_pixmap[state]);
+		}
+
+		style->bg_pixmap[state] = g_object_ref (window->priv->background_pixmap);
+		state++;
+	}
+
+	gtk_widget_set_style (GTK_WIDGET (window), style);
+	g_object_unref (style);
+
+	if (window->priv->background_pixmap != NULL)
+	{
+		gdk_window_set_back_pixmap (GTK_WIDGET (window)->window,
+		                            window->priv->background_pixmap,
+		                            FALSE);
+	}
+
+	gdk_window_clear (GTK_WIDGET (window)->window);
+
+	gdk_flush ();
+}
+
+static void
+clear_widget (GtkWidget *widget)
+{
+	GdkColor     color = { 0, 0x0000, 0x0000, 0x0000 };
+	GdkColormap *colormap;
+	GtkStateType state;
+	GtkStyle    *style;
+
+	if (! GTK_WIDGET_VISIBLE (widget))
+	{
+		return;
+	}
+
+	gs_debug ("Clearing widget");
+
+	state = (GtkStateType) 0;
+	while (state < (GtkStateType) G_N_ELEMENTS (widget->style->bg))
+	{
+		gtk_widget_modify_bg (widget, state, &color);
+		state++;
+	}
+
+	style = gtk_style_copy (widget->style);
+
+	state = (GtkStateType) 0;
+	while (state < (GtkStateType) G_N_ELEMENTS (widget->style->bg_pixmap))
+	{
+
+		if (style->bg_pixmap[state] != NULL)
+		{
+			g_object_unref (style->bg_pixmap[state]);
+		}
+
+		style->bg_pixmap[state] = NULL;
+		state++;
+	}
+
+	colormap = gdk_drawable_get_colormap (widget->window);
+	gdk_colormap_alloc_color (colormap, &color, FALSE, TRUE);
+	gdk_window_set_background (widget->window, &color);
+
+	gtk_widget_set_style (widget, style);
+	g_object_unref (style);
+
+	gdk_window_clear (widget->window);
+
+	/* If a screensaver theme adds child windows we need to clear them too */
+	widget_clear_all_children (widget);
+
+	gdk_flush ();
+}
+
+void
+gs_window_clear (GSWindow *window)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	clear_widget (GTK_WIDGET (window));
+	clear_widget (window->priv->drawing_area);
+}
+
+static GdkRegion *
+get_outside_region (GSWindow *window)
+{
+	int        i;
+	GdkRegion *region;
+
+	region = gdk_region_new ();
+	for (i = 0; i < window->priv->monitor; i++)
+	{
+		GdkRectangle geometry;
+
+		gdk_screen_get_monitor_geometry (GTK_WINDOW (window)->screen,
+		                                 i, &geometry);
+		gdk_region_union_with_rect (region, &geometry);
+	}
+
+	return region;
+}
+
+static void
+update_geometry (GSWindow *window)
+{
+	GdkRectangle geometry;
+	GdkRegion   *outside_region;
+	GdkRegion   *monitor_region;
+
+	outside_region = get_outside_region (window);
+
+	gdk_screen_get_monitor_geometry (GTK_WINDOW (window)->screen,
+	                                 window->priv->monitor,
+	                                 &geometry);
+	gs_debug ("got geometry for monitor %d: x=%d y=%d w=%d h=%d",
+	          window->priv->monitor,
+	          geometry.x,
+	          geometry.y,
+	          geometry.width,
+	          geometry.height);
+	monitor_region = gdk_region_rectangle (&geometry);
+	gdk_region_subtract (monitor_region, outside_region);
+	gdk_region_destroy (outside_region);
+
+	gdk_region_get_clipbox (monitor_region, &geometry);
+	gdk_region_destroy (monitor_region);
+
+	gs_debug ("using geometry for monitor %d: x=%d y=%d w=%d h=%d",
+	          window->priv->monitor,
+	          geometry.x,
+	          geometry.y,
+	          geometry.width,
+	          geometry.height);
+
+	window->priv->geometry.x = geometry.x;
+	window->priv->geometry.y = geometry.y;
+	window->priv->geometry.width = geometry.width;
+	window->priv->geometry.height = geometry.height;
+}
+
+static void
+screen_size_changed (GdkScreen *screen,
+                     GSWindow  *window)
+{
+	gs_debug ("Got screen size changed signal");
+	gtk_widget_queue_resize (GTK_WIDGET (window));
+}
+
+/* copied from panel-toplevel.c */
+static void
+gs_window_move_resize_window (GSWindow *window,
+                              gboolean  move,
+                              gboolean  resize)
+{
+	GtkWidget *widget;
+
+	widget = GTK_WIDGET (window);
+
+	g_assert (GTK_WIDGET_REALIZED (widget));
+
+	gs_debug ("Move and/or resize window on monitor %d: x=%d y=%d w=%d h=%d",
+	          window->priv->monitor,
+	          window->priv->geometry.x,
+	          window->priv->geometry.y,
+	          window->priv->geometry.width,
+	          window->priv->geometry.height);
+
+	if (move && resize)
+	{
+		gdk_window_move_resize (widget->window,
+		                        window->priv->geometry.x,
+		                        window->priv->geometry.y,
+		                        window->priv->geometry.width,
+		                        window->priv->geometry.height);
+	}
+	else if (move)
+	{
+		gdk_window_move (widget->window,
+		                 window->priv->geometry.x,
+		                 window->priv->geometry.y);
+	}
+	else if (resize)
+	{
+		gdk_window_resize (widget->window,
+		                   window->priv->geometry.width,
+		                   window->priv->geometry.height);
+	}
+}
+
+static void
+gs_window_real_unrealize (GtkWidget *widget)
+{
+	g_signal_handlers_disconnect_by_func (gtk_window_get_screen (GTK_WINDOW (widget)),
+	                                      screen_size_changed,
+	                                      widget);
+
+	if (GTK_WIDGET_CLASS (gs_window_parent_class)->unrealize)
+	{
+		GTK_WIDGET_CLASS (gs_window_parent_class)->unrealize (widget);
+	}
+}
+
+/* copied from gdk */
+extern char **environ;
+
+static gchar **
+spawn_make_environment_for_screen (GdkScreen  *screen,
+                                   gchar     **envp)
+{
+	gchar **retval = NULL;
+	gchar  *display_name;
+	gint    display_index = -1;
+	gint    i, env_len;
+
+	g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+	if (envp == NULL)
+		envp = environ;
+
+	for (env_len = 0; envp[env_len]; env_len++)
+		if (strncmp (envp[env_len], "DISPLAY", strlen ("DISPLAY")) == 0)
+			display_index = env_len;
+
+	retval = g_new (char *, env_len + 1);
+	retval[env_len] = NULL;
+
+	display_name = gdk_screen_make_display_name (screen);
+
+	for (i = 0; i < env_len; i++)
+		if (i == display_index)
+			retval[i] = g_strconcat ("DISPLAY=", display_name, NULL);
+		else
+			retval[i] = g_strdup (envp[i]);
+
+	g_assert (i == env_len);
+
+	g_free (display_name);
+
+	return retval;
+}
+
+static gboolean
+spawn_command_line_on_screen_sync (GdkScreen    *screen,
+                                   const gchar  *command_line,
+                                   char        **standard_output,
+                                   char        **standard_error,
+                                   int          *exit_status,
+                                   GError      **error)
+{
+	char     **argv = NULL;
+	char     **envp = NULL;
+	gboolean   retval;
+
+	g_return_val_if_fail (command_line != NULL, FALSE);
+
+	if (! g_shell_parse_argv (command_line, NULL, &argv, error))
+	{
+		return FALSE;
+	}
+
+	envp = spawn_make_environment_for_screen (screen, NULL);
+
+	retval = g_spawn_sync (NULL,
+	                       argv,
+	                       envp,
+	                       G_SPAWN_SEARCH_PATH,
+	                       NULL,
+	                       NULL,
+	                       standard_output,
+	                       standard_error,
+	                       exit_status,
+	                       error);
+
+	g_strfreev (argv);
+	g_strfreev (envp);
+
+	return retval;
+}
+
+static GdkVisual *
+get_best_visual_for_screen (GdkScreen *screen)
+{
+	char         *command;
+	char         *std_output;
+	int           exit_status;
+	GError       *error;
+	unsigned long v;
+	char          c;
+	GdkVisual    *visual;
+	gboolean      res;
+
+	visual = NULL;
+
+	command = g_build_filename (LIBEXECDIR, "mate-screensaver-gl-helper", NULL);
+
+	error = NULL;
+	std_output = NULL;
+	res = spawn_command_line_on_screen_sync (screen,
+	        command,
+	        &std_output,
+	        NULL,
+	        &exit_status,
+	        &error);
+	if (! res)
+	{
+		gs_debug ("Could not run command '%s': %s", command, error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	if (1 == sscanf (std_output, "0x%lx %c", &v, &c))
+	{
+		if (v != 0)
+		{
+			VisualID      visual_id;
+
+			visual_id = (VisualID) v;
+			visual = gdkx_visual_get (visual_id);
+
+			gs_debug ("Found best GL visual for screen %d: 0x%x",
+			          gdk_screen_get_number (screen),
+			          (unsigned int) visual_id);
+		}
+	}
+out:
+	g_free (std_output);
+	g_free (command);
+
+	return visual;
+}
+
+static GdkColormap *
+get_best_colormap_for_screen (GdkScreen *screen)
+{
+	GdkColormap *colormap;
+	GdkVisual   *visual;
+
+	g_return_val_if_fail (screen != NULL, NULL);
+
+	visual = get_best_visual_for_screen (screen);
+
+	colormap = NULL;
+	if (visual != NULL)
+	{
+		colormap = gdk_colormap_new (visual, FALSE);
+	}
+
+	return colormap;
+}
+
+static void
+widget_set_best_colormap (GtkWidget *widget)
+{
+	GdkColormap *colormap;
+
+	g_return_if_fail (widget != NULL);
+
+	colormap = get_best_colormap_for_screen (gtk_widget_get_screen (widget));
+	if (colormap != NULL)
+	{
+		gtk_widget_set_colormap (widget, colormap);
+		g_object_unref (colormap);
+	}
+}
+
+static void
+gs_window_real_realize (GtkWidget *widget)
+{
+	widget_set_best_colormap (widget);
+
+	if (GTK_WIDGET_CLASS (gs_window_parent_class)->realize)
+	{
+		GTK_WIDGET_CLASS (gs_window_parent_class)->realize (widget);
+	}
+
+	gs_window_override_user_time (GS_WINDOW (widget));
+
+	gs_window_move_resize_window (GS_WINDOW (widget), TRUE, TRUE);
+
+	g_signal_connect (gtk_window_get_screen (GTK_WINDOW (widget)),
+	                  "size_changed",
+	                  G_CALLBACK (screen_size_changed),
+	                  widget);
+}
+
+/* every so often we should raise the window in case
+   another window has somehow gotten on top */
+static gboolean
+watchdog_timer (GSWindow *window)
+{
+	GtkWidget *widget = GTK_WIDGET (window);
+
+	gdk_window_focus (widget->window, GDK_CURRENT_TIME);
+
+	return TRUE;
+}
+
+static void
+remove_watchdog_timer (GSWindow *window)
+{
+	if (window->priv->watchdog_timer_id != 0)
+	{
+		g_source_remove (window->priv->watchdog_timer_id);
+		window->priv->watchdog_timer_id = 0;
+	}
+}
+
+static void
+add_watchdog_timer (GSWindow *window,
+                    glong     timeout)
+{
+	window->priv->watchdog_timer_id = g_timeout_add (timeout,
+	                                  (GSourceFunc)watchdog_timer,
+	                                  window);
+}
+
+static void
+remove_popup_dialog_idle (GSWindow *window)
+{
+	if (window->priv->popup_dialog_idle_id != 0)
+	{
+		g_source_remove (window->priv->popup_dialog_idle_id);
+		window->priv->popup_dialog_idle_id = 0;
+	}
+}
+
+static void
+add_popup_dialog_idle (GSWindow *window)
+{
+	window->priv->popup_dialog_idle_id = g_idle_add ((GSourceFunc)popup_dialog_idle, window);
+}
+
+static gboolean
+emit_deactivated_idle (GSWindow *window)
+{
+	g_signal_emit (window, signals [DEACTIVATED], 0);
+
+	return FALSE;
+}
+
+static void
+add_emit_deactivated_idle (GSWindow *window)
+{
+	g_idle_add ((GSourceFunc)emit_deactivated_idle, window);
+}
+
+static void
+gs_window_raise (GSWindow *window)
+{
+	GdkWindow *win;
+
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	gs_debug ("Raising screensaver window");
+
+	win = GTK_WIDGET (window)->window;
+
+	gdk_window_raise (win);
+}
+
+static gboolean
+x11_window_is_ours (Window window)
+{
+	GdkWindow *gwindow;
+	gboolean   ret;
+
+	ret = FALSE;
+
+	gwindow = gdk_window_lookup (window);
+	if (gwindow && (window != GDK_ROOT_WINDOW ()))
+	{
+		ret = TRUE;
+	}
+
+	return ret;
+}
+
+#ifdef HAVE_SHAPE_EXT
+static void
+unshape_window (GSWindow *window)
+{
+	gdk_window_shape_combine_region (GTK_WIDGET (window)->window,
+	                                 NULL,
+	                                 0,
+	                                 0);
+}
+#endif
+
+static void
+gs_window_xevent (GSWindow  *window,
+                  GdkXEvent *xevent)
+{
+	XEvent *ev;
+
+	ev = xevent;
+
+	/* MapNotify is used to tell us when new windows are mapped.
+	   ConfigureNofify is used to tell us when windows are raised. */
+	switch (ev->xany.type)
+	{
+	case MapNotify:
+	{
+		XMapEvent *xme = &ev->xmap;
+
+		if (! x11_window_is_ours (xme->window))
+		{
+			gs_window_raise (window);
+		}
+		else
+		{
+			gs_debug ("not raising our windows");
+		}
+
+		break;
+	}
+	case ConfigureNotify:
+	{
+		XConfigureEvent *xce = &ev->xconfigure;
+
+		if (! x11_window_is_ours (xce->window))
+		{
+			gs_window_raise (window);
+		}
+		else
+		{
+			gs_debug ("not raising our windows");
+		}
+
+		break;
+	}
+	default:
+		/* extension events */
+#ifdef HAVE_SHAPE_EXT
+		if (ev->xany.type == (window->priv->shape_event_base + ShapeNotify))
+		{
+			/*XShapeEvent *xse = (XShapeEvent *) ev;*/
+			unshape_window (window);
+			gs_debug ("Window was reshaped!");
+		}
+#endif
+
+		break;
+	}
+
+}
+
+static GdkFilterReturn
+xevent_filter (GdkXEvent *xevent,
+               GdkEvent  *event,
+               GSWindow  *window)
+{
+	gs_window_xevent (window, xevent);
+
+	return GDK_FILTER_CONTINUE;
+}
+
+static void
+select_popup_events (void)
+{
+	XWindowAttributes attr;
+	unsigned long     events;
+
+	gdk_error_trap_push ();
+
+	memset (&attr, 0, sizeof (attr));
+	XGetWindowAttributes (GDK_DISPLAY (), GDK_ROOT_WINDOW (), &attr);
+
+	events = SubstructureNotifyMask | attr.your_event_mask;
+	XSelectInput (GDK_DISPLAY (), GDK_ROOT_WINDOW (), events);
+
+	gdk_display_sync (gdk_display_get_default ());
+	gdk_error_trap_pop ();
+}
+
+static void
+window_select_shape_events (GSWindow *window)
+{
+#ifdef HAVE_SHAPE_EXT
+	unsigned long events;
+	int           shape_error_base;
+
+	gdk_error_trap_push ();
+
+	if (XShapeQueryExtension (GDK_DISPLAY (), &window->priv->shape_event_base, &shape_error_base))
+	{
+		events = ShapeNotifyMask;
+		XShapeSelectInput (GDK_DISPLAY (), GDK_WINDOW_XID (GTK_WIDGET (window)->window), events);
+	}
+
+	gdk_display_sync (gdk_display_get_default ());
+	gdk_error_trap_pop ();
+#endif
+}
+
+static void
+gs_window_real_show (GtkWidget *widget)
+{
+	GSWindow *window;
+
+	if (GTK_WIDGET_CLASS (gs_window_parent_class)->show)
+	{
+		GTK_WIDGET_CLASS (gs_window_parent_class)->show (widget);
+	}
+
+	gs_window_clear (GS_WINDOW (widget));
+
+	set_invisible_cursor (widget->window, TRUE);
+
+	window = GS_WINDOW (widget);
+	if (window->priv->timer)
+	{
+		g_timer_destroy (window->priv->timer);
+	}
+	window->priv->timer = g_timer_new ();
+
+	remove_watchdog_timer (window);
+	add_watchdog_timer (window, 30000);
+
+	select_popup_events ();
+	window_select_shape_events (window);
+	gdk_window_add_filter (NULL, (GdkFilterFunc)xevent_filter, window);
+}
+
+static void
+set_info_text_and_icon (GSWindow   *window,
+                        const char *icon_stock_id,
+                        const char *primary_text,
+                        const char *secondary_text)
+{
+	GtkWidget *content_area;
+	GtkWidget *hbox_content;
+	GtkWidget *image;
+	GtkWidget *vbox;
+	gchar *primary_markup;
+	gchar *secondary_markup;
+	GtkWidget *primary_label;
+	GtkWidget *secondary_label;
+
+	hbox_content = gtk_hbox_new (FALSE, 8);
+	gtk_widget_show (hbox_content);
+
+	image = gtk_image_new_from_stock (icon_stock_id, GTK_ICON_SIZE_DIALOG);
+	gtk_widget_show (image);
+	gtk_box_pack_start (GTK_BOX (hbox_content), image, FALSE, FALSE, 0);
+	gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0);
+
+	vbox = gtk_vbox_new (FALSE, 6);
+	gtk_widget_show (vbox);
+	gtk_box_pack_start (GTK_BOX (hbox_content), vbox, FALSE, FALSE, 0);
+
+	primary_markup = g_strdup_printf ("<b>%s</b>", primary_text);
+	primary_label = gtk_label_new (primary_markup);
+	g_free (primary_markup);
+	gtk_widget_show (primary_label);
+	gtk_box_pack_start (GTK_BOX (vbox), primary_label, TRUE, TRUE, 0);
+	gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE);
+	gtk_label_set_line_wrap (GTK_LABEL (primary_label), TRUE);
+	gtk_misc_set_alignment (GTK_MISC (primary_label), 0, 0.5);
+
+	if (secondary_text != NULL)
+	{
+		secondary_markup = g_strdup_printf ("<small>%s</small>",
+		                                    secondary_text);
+		secondary_label = gtk_label_new (secondary_markup);
+		g_free (secondary_markup);
+		gtk_widget_show (secondary_label);
+		gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0);
+		gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE);
+		gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE);
+		gtk_misc_set_alignment (GTK_MISC (secondary_label), 0, 0.5);
+	}
+
+	/* remove old content */
+	content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (window->priv->info_bar));
+	if (window->priv->info_content != NULL)
+	{
+		gtk_container_remove (GTK_CONTAINER (content_area), window->priv->info_content);
+	}
+	gtk_box_pack_start (GTK_BOX (content_area),
+	                    hbox_content,
+	                    TRUE, FALSE, 0);
+	window->priv->info_content = hbox_content;
+}
+
+static gboolean
+info_bar_timeout (GSWindow *window)
+{
+	window->priv->info_bar_timer_id = 0;
+	gtk_widget_hide (window->priv->info_bar);
+	return FALSE;
+}
+
+void
+gs_window_show_message (GSWindow   *window,
+                        const char *summary,
+                        const char *body,
+                        const char *icon)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	set_info_text_and_icon (window,
+	                        icon,
+	                        summary,
+	                        body);
+	gtk_widget_show (window->priv->info_bar);
+
+	if (window->priv->info_bar_timer_id > 0)
+	{
+		g_source_remove (window->priv->info_bar_timer_id);
+	}
+
+	window->priv->info_bar_timer_id = g_timeout_add_seconds (INFO_BAR_SECONDS,
+	                                  (GSourceFunc)info_bar_timeout,
+	                                  window);
+}
+
+void
+gs_window_show (GSWindow *window)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	gtk_widget_show (GTK_WIDGET (window));
+}
+
+static void
+gs_window_real_hide (GtkWidget *widget)
+{
+	GSWindow *window;
+
+	window = GS_WINDOW (widget);
+
+	gdk_window_remove_filter (NULL, (GdkFilterFunc)xevent_filter, window);
+
+	remove_watchdog_timer (window);
+
+	if (GTK_WIDGET_CLASS (gs_window_parent_class)->hide)
+	{
+		GTK_WIDGET_CLASS (gs_window_parent_class)->hide (widget);
+	}
+}
+
+void
+gs_window_destroy (GSWindow *window)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	gs_window_cancel_unlock_request (window);
+
+	gtk_widget_destroy (GTK_WIDGET (window));
+}
+
+GdkWindow *
+gs_window_get_gdk_window (GSWindow *window)
+{
+	g_return_val_if_fail (GS_IS_WINDOW (window), NULL);
+
+	return GTK_WIDGET (window)->window;
+}
+
+GtkWidget *
+gs_window_get_drawing_area (GSWindow *window)
+{
+	g_return_val_if_fail (GS_IS_WINDOW (window), NULL);
+
+	return window->priv->drawing_area;
+}
+
+/* just for debugging */
+static gboolean
+error_watch (GIOChannel   *source,
+             GIOCondition  condition,
+             gpointer      data)
+{
+	gboolean finished = FALSE;
+
+	if (condition & G_IO_IN)
+	{
+		GIOStatus status;
+		GError   *error = NULL;
+		char     *line;
+
+		line = NULL;
+		status = g_io_channel_read_line (source, &line, NULL, NULL, &error);
+
+		switch (status)
+		{
+		case G_IO_STATUS_NORMAL:
+			gs_debug ("command error output: %s", line);
+			break;
+		case G_IO_STATUS_EOF:
+			finished = TRUE;
+			break;
+		case G_IO_STATUS_ERROR:
+			finished = TRUE;
+			gs_debug ("Error reading from child: %s\n", error->message);
+			g_error_free (error);
+			return FALSE;
+		case G_IO_STATUS_AGAIN:
+		default:
+			break;
+		}
+		g_free (line);
+	}
+	else if (condition & G_IO_HUP)
+	{
+		finished = TRUE;
+	}
+
+	if (finished)
+	{
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+spawn_on_window (GSWindow *window,
+                 char     *command,
+                 int      *pid,
+                 GIOFunc   watch_func,
+                 gpointer  user_data,
+                 gint     *watch_id)
+{
+	int         argc;
+	char      **argv;
+	GError     *error;
+	gboolean    result;
+	GIOChannel *channel;
+	int         standard_output;
+	int         standard_error;
+	int         child_pid;
+	int         id;
+
+	error = NULL;
+	if (! g_shell_parse_argv (command, &argc, &argv, &error))
+	{
+		gs_debug ("Could not parse command: %s", error->message);
+		g_error_free (error);
+		return FALSE;
+	}
+
+	error = NULL;
+	result = gdk_spawn_on_screen_with_pipes (GTK_WINDOW (window)->screen,
+	         NULL,
+	         argv,
+	         NULL,
+	         G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH,
+	         NULL,
+	         NULL,
+	         &child_pid,
+	         NULL,
+	         &standard_output,
+	         &standard_error,
+	         &error);
+
+	if (! result)
+	{
+		gs_debug ("Could not start command '%s': %s", command, error->message);
+		g_error_free (error);
+		g_strfreev (argv);
+		return FALSE;
+	}
+
+	if (pid != NULL)
+	{
+		*pid = child_pid;
+	}
+	else
+	{
+		g_spawn_close_pid (child_pid);
+	}
+
+	/* output channel */
+	channel = g_io_channel_unix_new (standard_output);
+	g_io_channel_set_close_on_unref (channel, TRUE);
+	g_io_channel_set_flags (channel,
+	                        g_io_channel_get_flags (channel) | G_IO_FLAG_NONBLOCK,
+	                        NULL);
+	id = g_io_add_watch (channel,
+	                     G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+	                     watch_func,
+	                     user_data);
+	if (watch_id != NULL)
+	{
+		*watch_id = id;
+	}
+	g_io_channel_unref (channel);
+
+	/* error channel */
+	channel = g_io_channel_unix_new (standard_error);
+	g_io_channel_set_close_on_unref (channel, TRUE);
+	g_io_channel_set_flags (channel,
+	                        g_io_channel_get_flags (channel) | G_IO_FLAG_NONBLOCK,
+	                        NULL);
+	id = g_io_add_watch (channel,
+	                     G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+	                     error_watch,
+	                     NULL);
+	g_io_channel_unref (channel);
+
+	g_strfreev (argv);
+
+	return result;
+}
+
+static void
+lock_plug_added (GtkWidget *widget,
+                 GSWindow  *window)
+{
+	gtk_widget_show (widget);
+}
+
+static gboolean
+lock_plug_removed (GtkWidget *widget,
+                   GSWindow  *window)
+{
+	gtk_widget_hide (widget);
+	gtk_container_remove (GTK_CONTAINER (window->priv->vbox), GTK_WIDGET (window->priv->lock_box));
+	window->priv->lock_box = NULL;
+
+	return TRUE;
+}
+
+static void
+keyboard_plug_added (GtkWidget *widget,
+                     GSWindow  *window)
+{
+	gtk_widget_show (widget);
+}
+
+static gboolean
+keyboard_plug_removed (GtkWidget *widget,
+                       GSWindow  *window)
+{
+	gtk_widget_hide (widget);
+	gtk_container_remove (GTK_CONTAINER (window->priv->vbox), GTK_WIDGET (window->priv->keyboard_socket));
+
+	return TRUE;
+}
+
+static void
+keyboard_socket_destroyed (GtkWidget *widget,
+                           GSWindow  *window)
+{
+	g_signal_handlers_disconnect_by_func (widget, keyboard_socket_destroyed, window);
+	g_signal_handlers_disconnect_by_func (widget, keyboard_plug_added, window);
+	g_signal_handlers_disconnect_by_func (widget, keyboard_plug_removed, window);
+
+	window->priv->keyboard_socket = NULL;
+}
+
+static void
+forward_key_events (GSWindow *window)
+{
+	window->priv->key_events = g_list_reverse (window->priv->key_events);
+
+	while (window->priv->key_events != NULL)
+	{
+		GdkEventKey *event = window->priv->key_events->data;
+
+		gtk_window_propagate_key_event (GTK_WINDOW (window), event);
+
+		gdk_event_free ((GdkEvent *)event);
+		window->priv->key_events = g_list_delete_link (window->priv->key_events,
+		                           window->priv->key_events);
+	}
+}
+
+static void
+remove_key_events (GSWindow *window)
+{
+	window->priv->key_events = g_list_reverse (window->priv->key_events);
+
+	while (window->priv->key_events)
+	{
+		GdkEventKey *event = window->priv->key_events->data;
+
+		gdk_event_free ((GdkEvent *)event);
+		window->priv->key_events = g_list_delete_link (window->priv->key_events,
+		                           window->priv->key_events);
+	}
+}
+
+static void
+lock_socket_show (GtkWidget *widget,
+                  GSWindow  *window)
+{
+	gtk_widget_child_focus (window->priv->lock_socket, GTK_DIR_TAB_FORWARD);
+
+	/* send queued events to the dialog */
+	forward_key_events (window);
+}
+
+static void
+lock_socket_destroyed (GtkWidget *widget,
+                       GSWindow  *window)
+{
+	g_signal_handlers_disconnect_by_func (widget, lock_socket_show, window);
+	g_signal_handlers_disconnect_by_func (widget, lock_socket_destroyed, window);
+	g_signal_handlers_disconnect_by_func (widget, lock_plug_added, window);
+	g_signal_handlers_disconnect_by_func (widget, lock_plug_removed, window);
+
+	window->priv->lock_socket = NULL;
+}
+
+static void
+create_keyboard_socket (GSWindow *window,
+                        guint32   id)
+{
+	int height;
+
+	height = (gdk_screen_get_height (gtk_widget_get_screen (GTK_WIDGET (window)))) / 4;
+
+	window->priv->keyboard_socket = gtk_socket_new ();
+	gtk_widget_set_size_request (window->priv->keyboard_socket, -1, height);
+
+	g_signal_connect (window->priv->keyboard_socket, "destroy",
+	                  G_CALLBACK (keyboard_socket_destroyed), window);
+	g_signal_connect (window->priv->keyboard_socket, "plug_added",
+	                  G_CALLBACK (keyboard_plug_added), window);
+	g_signal_connect (window->priv->keyboard_socket, "plug_removed",
+	                  G_CALLBACK (keyboard_plug_removed), window);
+	gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->keyboard_socket, FALSE, FALSE, 0);
+	gtk_socket_add_id (GTK_SOCKET (window->priv->keyboard_socket), id);
+}
+
+/* adapted from gspawn.c */
+static int
+wait_on_child (int pid)
+{
+	int status;
+
+wait_again:
+	if (waitpid (pid, &status, 0) < 0)
+	{
+		if (errno == EINTR)
+		{
+			goto wait_again;
+		}
+		else if (errno == ECHILD)
+		{
+			; /* do nothing, child already reaped */
+		}
+		else
+		{
+			gs_debug ("waitpid () should not fail in 'GSWindow'");
+		}
+	}
+
+	return status;
+}
+
+static void
+kill_keyboard_command (GSWindow *window)
+{
+	if (window->priv->keyboard_pid > 0)
+	{
+		signal_pid (window->priv->keyboard_pid, SIGTERM);
+	}
+}
+
+static void
+kill_dialog_command (GSWindow *window)
+{
+	/* If a dialog is up we need to signal it
+	   and wait on it */
+	if (window->priv->lock_pid > 0)
+	{
+		signal_pid (window->priv->lock_pid, SIGTERM);
+	}
+}
+
+static void
+keyboard_command_finish (GSWindow *window)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	/* send a signal just in case */
+	kill_keyboard_command (window);
+
+	gs_debug ("Keyboard finished");
+
+	if (window->priv->keyboard_pid > 0)
+	{
+		int exit_status;
+
+		exit_status = wait_on_child (window->priv->keyboard_pid);
+
+		g_spawn_close_pid (window->priv->keyboard_pid);
+		window->priv->keyboard_pid = 0;
+	}
+}
+
+static gboolean
+keyboard_command_watch (GIOChannel   *source,
+                        GIOCondition  condition,
+                        GSWindow     *window)
+{
+	gboolean finished = FALSE;
+
+	g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
+
+	if (condition & G_IO_IN)
+	{
+		GIOStatus status;
+		GError   *error = NULL;
+		char     *line;
+
+		line = NULL;
+		status = g_io_channel_read_line (source, &line, NULL, NULL, &error);
+
+		switch (status)
+		{
+		case G_IO_STATUS_NORMAL:
+		{
+			guint32 id;
+			char    c;
+			gs_debug ("keyboard command output: %s", line);
+			if (1 == sscanf (line, " %" G_GUINT32_FORMAT " %c", &id, &c))
+			{
+				create_keyboard_socket (window, id);
+			}
+		}
+		break;
+		case G_IO_STATUS_EOF:
+			finished = TRUE;
+			break;
+		case G_IO_STATUS_ERROR:
+			finished = TRUE;
+			gs_debug ("Error reading from child: %s\n", error->message);
+			g_error_free (error);
+			return FALSE;
+		case G_IO_STATUS_AGAIN:
+		default:
+			break;
+		}
+
+		g_free (line);
+	}
+	else if (condition & G_IO_HUP)
+	{
+		finished = TRUE;
+	}
+
+	if (finished)
+	{
+		window->priv->keyboard_watch_id = 0;
+		keyboard_command_finish (window);
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static void
+embed_keyboard (GSWindow *window)
+{
+	gboolean res;
+
+	if (! window->priv->keyboard_enabled
+	        || window->priv->keyboard_command == NULL)
+		return;
+
+	gs_debug ("Adding embedded keyboard widget");
+
+	/* FIXME: verify command is safe */
+
+	gs_debug ("Running command: %s", window->priv->keyboard_command);
+
+	res = spawn_on_window (window,
+	                       window->priv->keyboard_command,
+	                       &window->priv->keyboard_pid,
+	                       (GIOFunc)keyboard_command_watch,
+	                       window,
+	                       &window->priv->keyboard_watch_id);
+	if (! res)
+	{
+		gs_debug ("Could not start command: %s", window->priv->keyboard_command);
+	}
+}
+
+static void
+create_lock_socket (GSWindow *window,
+                    guint32   id)
+{
+	window->priv->lock_socket = gtk_socket_new ();
+	window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);
+	gtk_widget_show (window->priv->lock_box);
+	gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->lock_box, TRUE, TRUE, 0);
+
+	gtk_container_add (GTK_CONTAINER (window->priv->lock_box), window->priv->lock_socket);
+
+	g_signal_connect (window->priv->lock_socket, "show",
+	                  G_CALLBACK (lock_socket_show), window);
+	g_signal_connect (window->priv->lock_socket, "destroy",
+	                  G_CALLBACK (lock_socket_destroyed), window);
+	g_signal_connect (window->priv->lock_socket, "plug_added",
+	                  G_CALLBACK (lock_plug_added), window);
+	g_signal_connect (window->priv->lock_socket, "plug_removed",
+	                  G_CALLBACK (lock_plug_removed), window);
+
+	gtk_socket_add_id (GTK_SOCKET (window->priv->lock_socket), id);
+
+	if (window->priv->keyboard_enabled)
+	{
+		embed_keyboard (window);
+	}
+}
+
+static void
+gs_window_dialog_finish (GSWindow *window)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	gs_debug ("Dialog finished");
+
+	/* make sure we finish the keyboard thing too */
+	keyboard_command_finish (window);
+
+	/* send a signal just in case */
+	kill_dialog_command (window);
+
+	if (window->priv->lock_pid > 0)
+	{
+		int exit_status;
+
+		exit_status = wait_on_child (window->priv->lock_pid);
+
+		g_spawn_close_pid (window->priv->lock_pid);
+		window->priv->lock_pid = 0;
+	}
+
+	/* remove events for the case were we failed to show socket */
+	remove_key_events (window);
+}
+
+static void
+maybe_kill_dialog (GSWindow *window)
+{
+	if (!window->priv->dialog_shake_in_progress
+	        && window->priv->dialog_quit_requested
+	        && window->priv->lock_pid > 0)
+	{
+		kill (window->priv->lock_pid, SIGTERM);
+	}
+}
+
+/* very rudimentary animation for indicating an auth failure */
+static void
+shake_dialog (GSWindow *window)
+{
+	int   i;
+	guint left;
+	guint right;
+
+	window->priv->dialog_shake_in_progress = TRUE;
+
+	for (i = 0; i < 9; i++)
+	{
+		if (i % 2 == 0)
+		{
+			left = 30;
+			right = 0;
+		}
+		else
+		{
+			left = 0;
+			right = 30;
+		}
+
+		if (! window->priv->lock_box)
+		{
+			break;
+		}
+
+		gtk_alignment_set_padding (GTK_ALIGNMENT (window->priv->lock_box),
+		                           0, 0,
+		                           left,
+		                           right);
+
+		while (gtk_events_pending ())
+		{
+			gtk_main_iteration ();
+		}
+
+		g_usleep (10000);
+	}
+
+	window->priv->dialog_shake_in_progress = FALSE;
+	maybe_kill_dialog (window);
+}
+
+static void
+window_set_dialog_up (GSWindow *window,
+                      gboolean  dialog_up)
+{
+	if (window->priv->dialog_up == dialog_up)
+	{
+		return;
+	}
+
+	window->priv->dialog_up = dialog_up;
+	g_object_notify (G_OBJECT (window), "dialog-up");
+}
+
+static void
+popdown_dialog (GSWindow *window)
+{
+	gs_window_dialog_finish (window);
+
+	gtk_widget_show (window->priv->drawing_area);
+
+	gs_window_clear (window);
+	set_invisible_cursor (GTK_WIDGET (window)->window, TRUE);
+
+	window_set_dialog_up (window, FALSE);
+
+	/* reset the pointer positions */
+	window->priv->last_x = -1;
+	window->priv->last_y = -1;
+
+	if (window->priv->lock_box != NULL)
+	{
+		gtk_container_remove (GTK_CONTAINER (window->priv->vbox), GTK_WIDGET (window->priv->lock_box));
+		window->priv->lock_box = NULL;
+	}
+
+	remove_popup_dialog_idle (window);
+	remove_command_watches (window);
+}
+
+static gboolean
+lock_command_watch (GIOChannel   *source,
+                    GIOCondition  condition,
+                    GSWindow     *window)
+{
+	gboolean finished = FALSE;
+
+	g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
+
+	if (condition & G_IO_IN)
+	{
+		GIOStatus status;
+		GError   *error = NULL;
+		char     *line;
+
+		line = NULL;
+		status = g_io_channel_read_line (source, &line, NULL, NULL, &error);
+
+		switch (status)
+		{
+		case G_IO_STATUS_NORMAL:
+			gs_debug ("command output: %s", line);
+
+			if (strstr (line, "WINDOW ID=") != NULL)
+			{
+				guint32 id;
+				char    c;
+				if (1 == sscanf (line, " WINDOW ID= %" G_GUINT32_FORMAT " %c", &id, &c))
+				{
+					create_lock_socket (window, id);
+				}
+			}
+			else if (strstr (line, "NOTICE=") != NULL)
+			{
+				if (strstr (line, "NOTICE=AUTH FAILED") != NULL)
+				{
+					shake_dialog (window);
+				}
+			}
+			else if (strstr (line, "RESPONSE=") != NULL)
+			{
+				if (strstr (line, "RESPONSE=OK") != NULL)
+				{
+					gs_debug ("Got OK response");
+					window->priv->dialog_response = DIALOG_RESPONSE_OK;
+				}
+				else
+				{
+					gs_debug ("Got CANCEL response");
+					window->priv->dialog_response = DIALOG_RESPONSE_CANCEL;
+				}
+				finished = TRUE;
+			}
+			else if (strstr (line, "REQUEST QUIT") != NULL)
+			{
+				gs_debug ("Got request for quit");
+				window->priv->dialog_quit_requested = TRUE;
+				maybe_kill_dialog (window);
+			}
+			break;
+		case G_IO_STATUS_EOF:
+			finished = TRUE;
+			break;
+		case G_IO_STATUS_ERROR:
+			finished = TRUE;
+			gs_debug ("Error reading from child: %s\n", error->message);
+			g_error_free (error);
+			return FALSE;
+		case G_IO_STATUS_AGAIN:
+		default:
+			break;
+		}
+
+		g_free (line);
+	}
+	else if (condition & G_IO_HUP)
+	{
+		finished = TRUE;
+	}
+
+	if (finished)
+	{
+		popdown_dialog (window);
+
+		if (window->priv->dialog_response == DIALOG_RESPONSE_OK)
+		{
+			add_emit_deactivated_idle (window);
+		}
+
+		window->priv->lock_watch_id = 0;
+
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+is_logout_enabled (GSWindow *window)
+{
+	double elapsed;
+
+	if (! window->priv->logout_enabled)
+	{
+		return FALSE;
+	}
+
+	if (! window->priv->logout_command)
+	{
+		return FALSE;
+	}
+
+	elapsed = g_timer_elapsed (window->priv->timer, NULL);
+
+	if (window->priv->logout_timeout < (elapsed * 1000))
+	{
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static gboolean
+is_user_switch_enabled (GSWindow *window)
+{
+	return window->priv->user_switch_enabled;
+}
+
+static void
+popup_dialog (GSWindow *window)
+{
+	gboolean  result;
+	char     *tmp;
+	GString  *command;
+
+	gs_debug ("Popping up dialog");
+
+	tmp = g_build_filename (LIBEXECDIR, "mate-screensaver-dialog", NULL);
+	command = g_string_new (tmp);
+	g_free (tmp);
+
+	if (is_logout_enabled (window))
+	{
+		command = g_string_append (command, " --enable-logout");
+		g_string_append_printf (command, " --logout-command='%s'", window->priv->logout_command);
+	}
+
+	if (window->priv->status_message)
+	{
+		char *quoted;
+
+		quoted = g_shell_quote (window->priv->status_message);
+		g_string_append_printf (command, " --status-message=%s", quoted);
+		g_free (quoted);
+	}
+
+	if (is_user_switch_enabled (window))
+	{
+		command = g_string_append (command, " --enable-switch");
+	}
+
+	if (gs_debug_enabled ())
+	{
+		command = g_string_append (command, " --verbose");
+	}
+
+	gtk_widget_hide (window->priv->drawing_area);
+
+	gs_window_clear_to_background_pixmap (window);
+
+	set_invisible_cursor (GTK_WIDGET (window)->window, FALSE);
+
+	window->priv->dialog_quit_requested = FALSE;
+	window->priv->dialog_shake_in_progress = FALSE;
+
+	result = spawn_on_window (window,
+	                          command->str,
+	                          &window->priv->lock_pid,
+	                          (GIOFunc)lock_command_watch,
+	                          window,
+	                          &window->priv->lock_watch_id);
+	if (! result)
+	{
+		gs_debug ("Could not start command: %s", command->str);
+	}
+
+	g_string_free (command, TRUE);
+}
+
+static gboolean
+popup_dialog_idle (GSWindow *window)
+{
+	popup_dialog (window);
+
+	window->priv->popup_dialog_idle_id = 0;
+
+	return FALSE;
+}
+
+void
+gs_window_request_unlock (GSWindow *window)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	gs_debug ("Requesting unlock");
+
+	if (! GTK_WIDGET_VISIBLE (GTK_WIDGET (window)))
+	{
+		gs_debug ("Request unlock but window is not visible!");
+		return;
+	}
+
+	if (window->priv->lock_watch_id > 0)
+	{
+		return;
+	}
+
+	if (! window->priv->lock_enabled)
+	{
+		add_emit_deactivated_idle (window);
+
+		return;
+	}
+
+	if (window->priv->popup_dialog_idle_id == 0)
+	{
+		add_popup_dialog_idle (window);
+	}
+
+	window_set_dialog_up (window, TRUE);
+}
+
+void
+gs_window_cancel_unlock_request (GSWindow  *window)
+{
+	/* FIXME: This is a bit of a hammer approach...
+	* Maybe we should send a delete-event to
+	 * the plug?
+	 */
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	popdown_dialog (window);
+}
+
+void
+gs_window_set_lock_enabled (GSWindow *window,
+                            gboolean  lock_enabled)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	if (window->priv->lock_enabled == lock_enabled)
+	{
+		return;
+	}
+
+	window->priv->lock_enabled = lock_enabled;
+	g_object_notify (G_OBJECT (window), "lock-enabled");
+}
+
+void
+gs_window_set_screen (GSWindow  *window,
+                      GdkScreen *screen)
+{
+
+	g_return_if_fail (GS_IS_WINDOW (window));
+	g_return_if_fail (GDK_IS_SCREEN (screen));
+
+	gtk_window_set_screen (GTK_WINDOW (window), screen);
+}
+
+GdkScreen *
+gs_window_get_screen (GSWindow  *window)
+{
+	g_return_val_if_fail (GS_IS_WINDOW (window), NULL);
+
+	return GTK_WINDOW (window)->screen;
+}
+
+void
+gs_window_set_keyboard_enabled (GSWindow *window,
+                                gboolean  enabled)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	window->priv->keyboard_enabled = enabled;
+}
+
+void
+gs_window_set_keyboard_command (GSWindow   *window,
+                                const char *command)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	g_free (window->priv->keyboard_command);
+
+	if (command != NULL)
+	{
+		window->priv->keyboard_command = g_strdup (command);
+	}
+	else
+	{
+		window->priv->keyboard_command = NULL;
+	}
+}
+
+void
+gs_window_set_logout_enabled (GSWindow *window,
+                              gboolean  logout_enabled)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	window->priv->logout_enabled = logout_enabled;
+}
+
+void
+gs_window_set_user_switch_enabled (GSWindow *window,
+                                   gboolean  user_switch_enabled)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	window->priv->user_switch_enabled = user_switch_enabled;
+}
+
+void
+gs_window_set_logout_timeout (GSWindow *window,
+                              glong     logout_timeout)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	if (logout_timeout < 0)
+	{
+		window->priv->logout_timeout = 0;
+	}
+	else
+	{
+		window->priv->logout_timeout = logout_timeout;
+	}
+}
+
+void
+gs_window_set_logout_command (GSWindow   *window,
+                              const char *command)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	g_free (window->priv->logout_command);
+
+	if (command)
+	{
+		window->priv->logout_command = g_strdup (command);
+	}
+	else
+	{
+		window->priv->logout_command = NULL;
+	}
+}
+
+void
+gs_window_set_status_message (GSWindow   *window,
+                              const char *status_message)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	g_free (window->priv->status_message);
+	window->priv->status_message = g_strdup (status_message);
+}
+
+void
+gs_window_set_monitor (GSWindow *window,
+                       int       monitor)
+{
+	g_return_if_fail (GS_IS_WINDOW (window));
+
+	if (window->priv->monitor == monitor)
+	{
+		return;
+	}
+
+	window->priv->monitor = monitor;
+
+	gtk_widget_queue_resize (GTK_WIDGET (window));
+
+	g_object_notify (G_OBJECT (window), "monitor");
+}
+
+int
+gs_window_get_monitor (GSWindow *window)
+{
+	g_return_val_if_fail (GS_IS_WINDOW (window), -1);
+
+	return window->priv->monitor;
+}
+
+static void
+gs_window_set_property (GObject            *object,
+                        guint               prop_id,
+                        const GValue       *value,
+                        GParamSpec         *pspec)
+{
+	GSWindow *self;
+
+	self = GS_WINDOW (object);
+
+	switch (prop_id)
+	{
+	case PROP_LOCK_ENABLED:
+		gs_window_set_lock_enabled (self, g_value_get_boolean (value));
+		break;
+	case PROP_KEYBOARD_ENABLED:
+		gs_window_set_keyboard_enabled (self, g_value_get_boolean (value));
+		break;
+	case PROP_KEYBOARD_COMMAND:
+		gs_window_set_keyboard_command (self, g_value_get_string (value));
+		break;
+	case PROP_LOGOUT_ENABLED:
+		gs_window_set_logout_enabled (self, g_value_get_boolean (value));
+		break;
+	case PROP_LOGOUT_COMMAND:
+		gs_window_set_logout_command (self, g_value_get_string (value));
+		break;
+	case PROP_STATUS_MESSAGE:
+		gs_window_set_status_message (self, g_value_get_string (value));
+		break;
+	case PROP_LOGOUT_TIMEOUT:
+		gs_window_set_logout_timeout (self, g_value_get_long (value));
+		break;
+	case PROP_MONITOR:
+		gs_window_set_monitor (self, g_value_get_int (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+gs_window_get_property (GObject    *object,
+                        guint       prop_id,
+                        GValue     *value,
+                        GParamSpec *pspec)
+{
+	GSWindow *self;
+
+	self = GS_WINDOW (object);
+
+	switch (prop_id)
+	{
+	case PROP_LOCK_ENABLED:
+		g_value_set_boolean (value, self->priv->lock_enabled);
+		break;
+	case PROP_KEYBOARD_ENABLED:
+		g_value_set_boolean (value, self->priv->keyboard_enabled);
+		break;
+	case PROP_KEYBOARD_COMMAND:
+		g_value_set_string (value, self->priv->keyboard_command);
+		break;
+	case PROP_LOGOUT_ENABLED:
+		g_value_set_boolean (value, self->priv->logout_enabled);
+		break;
+	case PROP_LOGOUT_COMMAND:
+		g_value_set_string (value, self->priv->logout_command);
+		break;
+	case PROP_STATUS_MESSAGE:
+		g_value_set_string (value, self->priv->status_message);
+		break;
+	case PROP_LOGOUT_TIMEOUT:
+		g_value_set_long (value, self->priv->logout_timeout);
+		break;
+	case PROP_MONITOR:
+		g_value_set_int (value, self->priv->monitor);
+		break;
+	case PROP_OBSCURED:
+		g_value_set_boolean (value, self->priv->obscured);
+		break;
+	case PROP_DIALOG_UP:
+		g_value_set_boolean (value, self->priv->dialog_up);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+queue_key_event (GSWindow    *window,
+                 GdkEventKey *event)
+{
+	/* Eat the first return, enter, escape, or space */
+	if (window->priv->key_events == NULL
+	        && (event->keyval == GDK_Return
+	            || event->keyval == GDK_KP_Enter
+	            || event->keyval == GDK_Escape
+	            || event->keyval == GDK_space))
+	{
+		return;
+	}
+
+	/* Only cache MAX_QUEUED_EVENTS key events.  If there are any more than this then
+	   something is wrong */
+	/* Don't queue keys that may cause focus navigation in the dialog */
+	if (g_list_length (window->priv->key_events) < MAX_QUEUED_EVENTS
+	        && event->keyval != GDK_Tab
+	        && event->keyval != GDK_Up
+	        && event->keyval != GDK_Down)
+	{
+		window->priv->key_events = g_list_prepend (window->priv->key_events,
+		                           gdk_event_copy ((GdkEvent *)event));
+	}
+}
+
+static gboolean
+maybe_handle_activity (GSWindow *window)
+{
+	gboolean handled;
+
+	handled = FALSE;
+
+	/* if we already have a socket then don't bother */
+	if (! window->priv->lock_socket
+	        && GTK_WIDGET_IS_SENSITIVE (GTK_WIDGET (window)))
+	{
+		g_signal_emit (window, signals [ACTIVITY], 0, &handled);
+	}
+
+	return handled;
+}
+
+static gboolean
+gs_window_real_key_press_event (GtkWidget   *widget,
+                                GdkEventKey *event)
+{
+	/*g_message ("KEY PRESS state: %u keyval %u", event->state, event->keyval);*/
+
+	/* Ignore brightness keys */
+	if (event->hardware_keycode == 101 || event->hardware_keycode == 212)
+	{
+		gs_debug ("Ignoring brightness keys");
+		return TRUE;
+	}
+
+	maybe_handle_activity (GS_WINDOW (widget));
+
+	queue_key_event (GS_WINDOW (widget), event);
+
+	if (GTK_WIDGET_CLASS (gs_window_parent_class)->key_press_event)
+	{
+		GTK_WIDGET_CLASS (gs_window_parent_class)->key_press_event (widget, event);
+	}
+
+	return TRUE;
+}
+
+static gboolean
+gs_window_real_motion_notify_event (GtkWidget      *widget,
+                                    GdkEventMotion *event)
+{
+	GSWindow  *window;
+	gdouble    distance;
+	gdouble    min_distance;
+	gdouble    min_percentage = 0.1;
+	GdkScreen *screen;
+
+	window = GS_WINDOW (widget);
+
+	screen = gs_window_get_screen (window);
+	min_distance = gdk_screen_get_width (screen) * min_percentage;
+
+	/* if the last position was not set then don't detect motion */
+	if (window->priv->last_x < 0 || window->priv->last_y < 0)
+	{
+		window->priv->last_x = event->x;
+		window->priv->last_y = event->y;
+
+		return FALSE;
+	}
+
+	/* just an approximate distance */
+	distance = MAX (ABS (window->priv->last_x - event->x),
+	                ABS (window->priv->last_y - event->y));
+
+	if (distance > min_distance)
+	{
+		maybe_handle_activity (window);
+
+		window->priv->last_x = -1;
+		window->priv->last_y = -1;
+	}
+
+	return FALSE;
+}
+
+static gboolean
+gs_window_real_button_press_event (GtkWidget      *widget,
+                                   GdkEventButton *event)
+{
+	GSWindow *window;
+
+	window = GS_WINDOW (widget);
+	maybe_handle_activity (window);
+
+	return FALSE;
+}
+
+static gboolean
+gs_window_real_scroll_event (GtkWidget      *widget,
+                             GdkEventScroll *event)
+{
+	GSWindow *window;
+
+	window = GS_WINDOW (widget);
+	maybe_handle_activity (window);
+
+	return FALSE;
+}
+
+static void
+gs_window_real_size_request (GtkWidget      *widget,
+                             GtkRequisition *requisition)
+{
+	GSWindow      *window;
+	GtkBin        *bin;
+	GdkRectangle   old_geometry;
+	int            position_changed = FALSE;
+	int            size_changed = FALSE;
+
+	window = GS_WINDOW (widget);
+	bin = GTK_BIN (widget);
+
+	if (bin->child && GTK_WIDGET_VISIBLE (bin->child))
+	{
+		gtk_widget_size_request (bin->child, requisition);
+	}
+
+	old_geometry = window->priv->geometry;
+
+	update_geometry (window);
+
+	requisition->width  = window->priv->geometry.width;
+	requisition->height = window->priv->geometry.height;
+
+	if (! GTK_WIDGET_REALIZED (widget))
+	{
+		return;
+	}
+
+	if (old_geometry.width  != window->priv->geometry.width ||
+	        old_geometry.height != window->priv->geometry.height)
+	{
+		size_changed = TRUE;
+	}
+
+	if (old_geometry.x != window->priv->geometry.x ||
+	        old_geometry.y != window->priv->geometry.y)
+	{
+		position_changed = TRUE;
+	}
+
+	gs_window_move_resize_window (window, position_changed, size_changed);
+}
+
+static gboolean
+gs_window_real_grab_broken (GtkWidget          *widget,
+                            GdkEventGrabBroken *event)
+{
+	if (event->grab_window != NULL)
+	{
+		gs_debug ("Grab broken on window %X %s, new grab on window %X",
+		          (guint32) GDK_WINDOW_XID (event->window),
+		          event->keyboard ? "keyboard" : "pointer",
+		          (guint32) GDK_WINDOW_XID (event->grab_window));
+	}
+	else
+	{
+		gs_debug ("Grab broken on window %X %s, new grab is outside application",
+		          (guint32) GDK_WINDOW_XID (event->window),
+		          event->keyboard ? "keyboard" : "pointer");
+	}
+
+	return FALSE;
+}
+
+gboolean
+gs_window_is_obscured (GSWindow *window)
+{
+	g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
+
+	return window->priv->obscured;
+}
+
+gboolean
+gs_window_is_dialog_up (GSWindow *window)
+{
+	g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
+
+	return window->priv->dialog_up;
+}
+
+static void
+window_set_obscured (GSWindow *window,
+                     gboolean  obscured)
+{
+	if (window->priv->obscured == obscured)
+	{
+		return;
+	}
+
+	window->priv->obscured = obscured;
+	g_object_notify (G_OBJECT (window), "obscured");
+}
+
+static gboolean
+gs_window_real_visibility_notify_event (GtkWidget          *widget,
+                                        GdkEventVisibility *event)
+{
+	switch (event->state)
+	{
+	case GDK_VISIBILITY_FULLY_OBSCURED:
+		window_set_obscured (GS_WINDOW (widget), TRUE);
+		break;
+	case GDK_VISIBILITY_PARTIAL:
+		break;
+	case GDK_VISIBILITY_UNOBSCURED:
+		window_set_obscured (GS_WINDOW (widget), FALSE);
+		break;
+	default:
+		break;
+	}
+
+	return FALSE;
+}
+
+static void
+gs_window_class_init (GSWindowClass *klass)
+{
+	GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+	object_class->finalize     = gs_window_finalize;
+	object_class->get_property = gs_window_get_property;
+	object_class->set_property = gs_window_set_property;
+
+	widget_class->show                = gs_window_real_show;
+	widget_class->hide                = gs_window_real_hide;
+	widget_class->realize             = gs_window_real_realize;
+	widget_class->unrealize           = gs_window_real_unrealize;
+	widget_class->key_press_event     = gs_window_real_key_press_event;
+	widget_class->motion_notify_event = gs_window_real_motion_notify_event;
+	widget_class->button_press_event  = gs_window_real_button_press_event;
+	widget_class->scroll_event        = gs_window_real_scroll_event;
+	widget_class->size_request        = gs_window_real_size_request;
+	widget_class->grab_broken_event   = gs_window_real_grab_broken;
+	widget_class->visibility_notify_event = gs_window_real_visibility_notify_event;
+
+	g_type_class_add_private (klass, sizeof (GSWindowPrivate));
+
+	signals [ACTIVITY] =
+	    g_signal_new ("activity",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSWindowClass, activity),
+	                  NULL,
+	                  NULL,
+	                  gs_marshal_BOOLEAN__VOID,
+	                  G_TYPE_BOOLEAN,
+	                  0);
+	signals [DEACTIVATED] =
+	    g_signal_new ("deactivated",
+	                  G_TYPE_FROM_CLASS (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  G_STRUCT_OFFSET (GSWindowClass, deactivated),
+	                  NULL,
+	                  NULL,
+	                  g_cclosure_marshal_VOID__VOID,
+	                  G_TYPE_NONE,
+	                  0);
+
+	g_object_class_install_property (object_class,
+	                                 PROP_OBSCURED,
+	                                 g_param_spec_boolean ("obscured",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READABLE));
+	g_object_class_install_property (object_class,
+	                                 PROP_DIALOG_UP,
+	                                 g_param_spec_boolean ("dialog-up",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READABLE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOCK_ENABLED,
+	                                 g_param_spec_boolean ("lock-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOGOUT_ENABLED,
+	                                 g_param_spec_boolean ("logout-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOGOUT_TIMEOUT,
+	                                 g_param_spec_long ("logout-timeout",
+	                                         NULL,
+	                                         NULL,
+	                                         -1,
+	                                         G_MAXLONG,
+	                                         0,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_LOGOUT_COMMAND,
+	                                 g_param_spec_string ("logout-command",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_STATUS_MESSAGE,
+	                                 g_param_spec_string ("status-message",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_KEYBOARD_ENABLED,
+	                                 g_param_spec_boolean ("keyboard-enabled",
+	                                         NULL,
+	                                         NULL,
+	                                         FALSE,
+	                                         G_PARAM_READWRITE));
+	g_object_class_install_property (object_class,
+	                                 PROP_KEYBOARD_COMMAND,
+	                                 g_param_spec_string ("keyboard-command",
+	                                         NULL,
+	                                         NULL,
+	                                         NULL,
+	                                         G_PARAM_READWRITE));
+
+	g_object_class_install_property (object_class,
+	                                 PROP_MONITOR,
+	                                 g_param_spec_int ("monitor",
+	                                         "Xinerama monitor",
+	                                         "The monitor (in terms of Xinerama) which the window is on",
+	                                         0,
+	                                         G_MAXINT,
+	                                         0,
+	                                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+}
+
+static void
+create_info_bar (GSWindow *window)
+{
+	window->priv->info_bar = gtk_info_bar_new ();
+	gtk_widget_set_no_show_all (window->priv->info_bar, TRUE);
+	gtk_box_pack_end (GTK_BOX (window->priv->vbox), window->priv->info_bar, FALSE, FALSE, 0);
+}
+
+static void
+gs_window_init (GSWindow *window)
+{
+	window->priv = GS_WINDOW_GET_PRIVATE (window);
+
+	window->priv->geometry.x      = -1;
+	window->priv->geometry.y      = -1;
+	window->priv->geometry.width  = -1;
+	window->priv->geometry.height = -1;
+
+	window->priv->last_x = -1;
+	window->priv->last_y = -1;
+
+	gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
+
+	gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE);
+	gtk_window_set_skip_pager_hint (GTK_WINDOW (window), TRUE);
+
+	gtk_window_set_keep_above (GTK_WINDOW (window), TRUE);
+
+	gtk_window_fullscreen (GTK_WINDOW (window));
+
+	gtk_widget_set_events (GTK_WIDGET (window),
+	                       gtk_widget_get_events (GTK_WIDGET (window))
+	                       | GDK_POINTER_MOTION_MASK
+	                       | GDK_BUTTON_PRESS_MASK
+	                       | GDK_BUTTON_RELEASE_MASK
+	                       | GDK_KEY_PRESS_MASK
+	                       | GDK_KEY_RELEASE_MASK
+	                       | GDK_EXPOSURE_MASK
+	                       | GDK_VISIBILITY_NOTIFY_MASK
+	                       | GDK_ENTER_NOTIFY_MASK
+	                       | GDK_LEAVE_NOTIFY_MASK);
+
+	window->priv->vbox = gtk_vbox_new (FALSE, 12);
+	gtk_widget_show (window->priv->vbox);
+	gtk_container_add (GTK_CONTAINER (window), window->priv->vbox);
+
+	window->priv->drawing_area = gtk_drawing_area_new ();
+	gtk_widget_show (window->priv->drawing_area);
+	gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->drawing_area, TRUE, TRUE, 0);
+	create_info_bar (window);
+
+	force_no_pixmap_background (window->priv->drawing_area);
+}
+
+static void
+remove_command_watches (GSWindow *window)
+{
+	if (window->priv->lock_watch_id != 0)
+	{
+		g_source_remove (window->priv->lock_watch_id);
+		window->priv->lock_watch_id = 0;
+	}
+	if (window->priv->keyboard_watch_id != 0)
+	{
+		g_source_remove (window->priv->keyboard_watch_id);
+		window->priv->keyboard_watch_id = 0;
+	}
+}
+
+static void
+gs_window_finalize (GObject *object)
+{
+	GSWindow *window;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (GS_IS_WINDOW (object));
+
+	window = GS_WINDOW (object);
+
+	g_return_if_fail (window->priv != NULL);
+
+	g_free (window->priv->logout_command);
+	g_free (window->priv->keyboard_command);
+
+	if (window->priv->info_bar_timer_id > 0)
+	{
+		g_source_remove (window->priv->info_bar_timer_id);
+	}
+
+	remove_watchdog_timer (window);
+	remove_popup_dialog_idle (window);
+
+	if (window->priv->timer)
+	{
+		g_timer_destroy (window->priv->timer);
+	}
+
+	remove_key_events (window);
+
+	remove_command_watches (window);
+
+	gs_window_dialog_finish (window);
+
+	if (window->priv->background_pixmap)
+	{
+		g_object_unref (window->priv->background_pixmap);
+	}
+
+	G_OBJECT_CLASS (gs_window_parent_class)->finalize (object);
+}
+
+GSWindow *
+gs_window_new (GdkScreen *screen,
+               int        monitor,
+               gboolean   lock_enabled)
+{
+	GObject     *result;
+
+	result = g_object_new (GS_TYPE_WINDOW,
+	                       "type", GTK_WINDOW_POPUP,
+	                       "screen", screen,
+	                       "monitor", monitor,
+	                       "lock-enabled", lock_enabled,
+	                       NULL);
+
+	return GS_WINDOW (result);
+}
diff --git a/src/gs-window-x11.c.orig b/src/gs-window-x11.c.orig
new file mode 100644
index 0000000..f7c3c70
--- /dev/null
+++ b/src/gs-window-x11.c.orig
@@ -0,0 +1,2647 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2008 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <sys/types.h>
+#include <errno.h>
+#include <sys/wait.h>
+#include <string.h>
+
+#include <gdk/gdkx.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+
+#include "gs-window.h"
+#include "gs-marshal.h"
+#include "subprocs.h"
+#include "gs-debug.h"
+
+#ifdef HAVE_SHAPE_EXT
+#include <X11/extensions/shape.h>
+#endif
+
+static void gs_window_class_init (GSWindowClass *klass);
+static void gs_window_init       (GSWindow      *window);
+static void gs_window_finalize   (GObject       *object);
+
+static gboolean popup_dialog_idle (GSWindow *window);
+static void gs_window_dialog_finish (GSWindow *window);
+static void remove_command_watches (GSWindow *window);
+
+enum
+{
+    DIALOG_RESPONSE_CANCEL,
+    DIALOG_RESPONSE_OK
+};
+
+#define MAX_QUEUED_EVENTS 16
+#define INFO_BAR_SECONDS 30
+
+#define GS_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_WINDOW, GSWindowPrivate))
+
+struct GSWindowPrivate
+{
+    int        monitor;
+
+    GdkRectangle geometry;
+    guint      obscured : 1;
+    guint      dialog_up : 1;
+
+    guint      lock_enabled : 1;
+    guint      user_switch_enabled : 1;
+    guint      logout_enabled : 1;
+    guint      keyboard_enabled : 1;
+
+    guint64    logout_timeout;
+    char      *logout_command;
+    char      *keyboard_command;
+    char      *status_message;
+
+    GtkWidget *vbox;
+    GtkWidget *drawing_area;
+    GtkWidget *lock_box;
+    GtkWidget *lock_socket;
+    GtkWidget *keyboard_socket;
+    GtkWidget *info_bar;
+    GtkWidget *info_content;
+
+    GdkPixmap *background_pixmap;
+
+    guint      popup_dialog_idle_id;
+
+    guint      dialog_map_signal_id;
+    guint      dialog_unmap_signal_id;
+    guint      dialog_response_signal_id;
+
+    guint      watchdog_timer_id;
+    guint      info_bar_timer_id;
+
+    gint       lock_pid;
+    gint       lock_watch_id;
+    gint       dialog_response;
+    gboolean   dialog_quit_requested;
+    gboolean   dialog_shake_in_progress;
+
+    gint       keyboard_pid;
+    gint       keyboard_watch_id;
+
+    GList     *key_events;
+
+    gdouble    last_x;
+    gdouble    last_y;
+
+    GTimer    *timer;
+
+#ifdef HAVE_SHAPE_EXT
+    int        shape_event_base;
+#endif
+};
+
+enum
+{
+    ACTIVITY,
+    DEACTIVATED,
+    LAST_SIGNAL
+};
+
+enum
+{
+    PROP_0,
+    PROP_OBSCURED,
+    PROP_DIALOG_UP,
+    PROP_LOCK_ENABLED,
+    PROP_LOGOUT_ENABLED,
+    PROP_KEYBOARD_ENABLED,
+    PROP_KEYBOARD_COMMAND,
+    PROP_LOGOUT_COMMAND,
+    PROP_LOGOUT_TIMEOUT,
+    PROP_MONITOR,
+    PROP_STATUS_MESSAGE
+};
+
+static guint           signals [LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE (GSWindow, gs_window, GTK_TYPE_WINDOW)
+
+static void
+set_invisible_cursor (GdkWindow *window,
+                      gboolean   invisible)
+{
+    GdkBitmap *empty_bitmap;
+    GdkCursor *cursor = NULL;
+    GdkColor   useless;
+    char       invisible_cursor_bits [] = { 0x0 };
+
+    if (invisible)
+    {
+        useless.red = useless.green = useless.blue = 0;
+        useless.pixel = 0;
+
+        empty_bitmap = gdk_bitmap_create_from_data (window,
+                       invisible_cursor_bits,
+                       1, 1);
+
+        cursor = gdk_cursor_new_from_pixmap (empty_bitmap,
+                                             empty_bitmap,
+                                             &useless,
+                                             &useless, 0, 0);
+
+        g_object_unref (empty_bitmap);
+    }
+
+    gdk_window_set_cursor (window, cursor);
+
+    if (cursor)
+    {
+        gdk_cursor_unref (cursor);
+    }
+}
+
+/* derived from tomboy */
+static void
+gs_window_override_user_time (GSWindow *window)
+{
+    guint32 ev_time = gtk_get_current_event_time ();
+
+    if (ev_time == 0)
+    {
+        gint ev_mask = gtk_widget_get_events (GTK_WIDGET (window));
+        if (!(ev_mask & GDK_PROPERTY_CHANGE_MASK))
+        {
+            gtk_widget_add_events (GTK_WIDGET (window),
+                                   GDK_PROPERTY_CHANGE_MASK);
+        }
+
+        /*
+         * NOTE: Last resort for D-BUS or other non-interactive
+         *       openings.  Causes roundtrip to server.  Lame.
+         */
+        ev_time = gdk_x11_get_server_time (GTK_WIDGET (window)->window);
+    }
+
+    gdk_x11_window_set_user_time (GTK_WIDGET (window)->window, ev_time);
+}
+
+static void
+force_no_pixmap_background (GtkWidget *widget)
+{
+    static gboolean first_time = TRUE;
+
+    if (first_time)
+    {
+        gtk_rc_parse_string ("\n"
+                             "   style \"gs-theme-engine-style\"\n"
+                             "   {\n"
+                             "      bg_pixmap[NORMAL] = \"<none>\"\n"
+                             "      bg_pixmap[INSENSITIVE] = \"<none>\"\n"
+                             "      bg_pixmap[ACTIVE] = \"<none>\"\n"
+                             "      bg_pixmap[PRELIGHT] = \"<none>\"\n"
+                             "      bg[NORMAL] = { 0.0, 0.0, 0.0 }\n"
+                             "      bg[INSENSITIVE] = { 0.0, 0.0, 0.0 }\n"
+                             "      bg[ACTIVE] = { 0.0, 0.0, 0.0 }\n"
+                             "      bg[PRELIGHT] = { 0.0, 0.0, 0.0 }\n"
+                             "   }\n"
+                             "   widget \"gs-window-drawing-area*\" style : highest \"gs-theme-engine-style\"\n"
+                             "\n");
+        first_time = FALSE;
+    }
+
+    gtk_widget_set_name (widget, "gs-window-drawing-area");
+}
+
+static void
+clear_children (Window window)
+{
+    Window            root;
+    Window            parent;
+    Window           *children;
+    unsigned int      n_children;
+    int               status;
+
+    children = NULL;
+    status = XQueryTree (GDK_DISPLAY (), window, &root, &parent, &children, &n_children);
+
+    if (status == 0)
+    {
+        if (children)
+        {
+            XFree (children);
+        }
+        return;
+    }
+
+    if (children)
+    {
+        while (n_children)
+        {
+            Window child;
+
+            child = children [--n_children];
+
+            XClearWindow (GDK_DISPLAY (), child);
+            clear_children (child);
+        }
+
+        XFree (children);
+    }
+}
+
+static void
+widget_clear_all_children (GtkWidget *widget)
+{
+    GdkWindow *w;
+
+    gs_debug ("Clearing all child windows");
+
+    gdk_error_trap_push ();
+
+    w = widget->window;
+
+    clear_children (GDK_WINDOW_XID (w));
+
+    gdk_display_sync (gtk_widget_get_display (widget));
+    gdk_error_trap_pop ();
+}
+
+void
+gs_window_set_background_pixmap (GSWindow  *window,
+                                 GdkPixmap *pixmap)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    if (window->priv->background_pixmap != NULL)
+    {
+        g_object_unref (window->priv->background_pixmap);
+    }
+
+    if (pixmap != NULL)
+    {
+        window->priv->background_pixmap = g_object_ref (pixmap);
+        gdk_window_set_back_pixmap (GTK_WIDGET (window)->window,
+                                    pixmap,
+                                    FALSE);
+    }
+}
+
+static void
+gs_window_clear_to_background_pixmap (GSWindow *window)
+{
+    GtkStateType state;
+    GtkStyle    *style;
+
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    if (! GTK_WIDGET_VISIBLE (GTK_WIDGET (window)))
+    {
+        return;
+    }
+
+    if (window->priv->background_pixmap == NULL)
+    {
+        /* don't allow null pixmaps */
+        return;
+    }
+
+    gs_debug ("Clearing window to background pixmap");
+
+    style = gtk_style_copy (GTK_WIDGET (window)->style);
+
+    state = (GtkStateType) 0;
+    while (state < (GtkStateType) G_N_ELEMENTS (GTK_WIDGET (window)->style->bg_pixmap))
+    {
+
+        if (style->bg_pixmap[state] != NULL)
+        {
+            g_object_unref (style->bg_pixmap[state]);
+        }
+
+        style->bg_pixmap[state] = g_object_ref (window->priv->background_pixmap);
+        state++;
+    }
+
+    gtk_widget_set_style (GTK_WIDGET (window), style);
+    g_object_unref (style);
+
+    if (window->priv->background_pixmap != NULL)
+    {
+        gdk_window_set_back_pixmap (GTK_WIDGET (window)->window,
+                                    window->priv->background_pixmap,
+                                    FALSE);
+    }
+
+    gdk_window_clear (GTK_WIDGET (window)->window);
+
+    gdk_flush ();
+}
+
+static void
+clear_widget (GtkWidget *widget)
+{
+    GdkColor     color = { 0, 0x0000, 0x0000, 0x0000 };
+    GdkColormap *colormap;
+    GtkStateType state;
+    GtkStyle    *style;
+
+    if (! GTK_WIDGET_VISIBLE (widget))
+    {
+        return;
+    }
+
+    gs_debug ("Clearing widget");
+
+    state = (GtkStateType) 0;
+    while (state < (GtkStateType) G_N_ELEMENTS (widget->style->bg))
+    {
+        gtk_widget_modify_bg (widget, state, &color);
+        state++;
+    }
+
+    style = gtk_style_copy (widget->style);
+
+    state = (GtkStateType) 0;
+    while (state < (GtkStateType) G_N_ELEMENTS (widget->style->bg_pixmap))
+    {
+
+        if (style->bg_pixmap[state] != NULL)
+        {
+            g_object_unref (style->bg_pixmap[state]);
+        }
+
+        style->bg_pixmap[state] = NULL;
+        state++;
+    }
+
+    colormap = gdk_drawable_get_colormap (widget->window);
+    gdk_colormap_alloc_color (colormap, &color, FALSE, TRUE);
+    gdk_window_set_background (widget->window, &color);
+
+    gtk_widget_set_style (widget, style);
+    g_object_unref (style);
+
+    gdk_window_clear (widget->window);
+
+    /* If a screensaver theme adds child windows we need to clear them too */
+    widget_clear_all_children (widget);
+
+    gdk_flush ();
+}
+
+void
+gs_window_clear (GSWindow *window)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    clear_widget (GTK_WIDGET (window));
+    clear_widget (window->priv->drawing_area);
+}
+
+static GdkRegion *
+get_outside_region (GSWindow *window)
+{
+    int        i;
+    GdkRegion *region;
+
+    region = gdk_region_new ();
+    for (i = 0; i < window->priv->monitor; i++)
+    {
+        GdkRectangle geometry;
+
+        gdk_screen_get_monitor_geometry (GTK_WINDOW (window)->screen,
+                                         i, &geometry);
+        gdk_region_union_with_rect (region, &geometry);
+    }
+
+    return region;
+}
+
+static void
+update_geometry (GSWindow *window)
+{
+    GdkRectangle geometry;
+    GdkRegion   *outside_region;
+    GdkRegion   *monitor_region;
+
+    outside_region = get_outside_region (window);
+
+    gdk_screen_get_monitor_geometry (GTK_WINDOW (window)->screen,
+                                     window->priv->monitor,
+                                     &geometry);
+    gs_debug ("got geometry for monitor %d: x=%d y=%d w=%d h=%d",
+              window->priv->monitor,
+              geometry.x,
+              geometry.y,
+              geometry.width,
+              geometry.height);
+    monitor_region = gdk_region_rectangle (&geometry);
+    gdk_region_subtract (monitor_region, outside_region);
+    gdk_region_destroy (outside_region);
+
+    gdk_region_get_clipbox (monitor_region, &geometry);
+    gdk_region_destroy (monitor_region);
+
+    gs_debug ("using geometry for monitor %d: x=%d y=%d w=%d h=%d",
+              window->priv->monitor,
+              geometry.x,
+              geometry.y,
+              geometry.width,
+              geometry.height);
+
+    window->priv->geometry.x = geometry.x;
+    window->priv->geometry.y = geometry.y;
+    window->priv->geometry.width = geometry.width;
+    window->priv->geometry.height = geometry.height;
+}
+
+static void
+screen_size_changed (GdkScreen *screen,
+                     GSWindow  *window)
+{
+    gs_debug ("Got screen size changed signal");
+    gtk_widget_queue_resize (GTK_WIDGET (window));
+}
+
+/* copied from panel-toplevel.c */
+static void
+gs_window_move_resize_window (GSWindow *window,
+                              gboolean  move,
+                              gboolean  resize)
+{
+    GtkWidget *widget;
+
+    widget = GTK_WIDGET (window);
+
+    g_assert (GTK_WIDGET_REALIZED (widget));
+
+    gs_debug ("Move and/or resize window on monitor %d: x=%d y=%d w=%d h=%d",
+              window->priv->monitor,
+              window->priv->geometry.x,
+              window->priv->geometry.y,
+              window->priv->geometry.width,
+              window->priv->geometry.height);
+
+    if (move && resize)
+    {
+        gdk_window_move_resize (widget->window,
+                                window->priv->geometry.x,
+                                window->priv->geometry.y,
+                                window->priv->geometry.width,
+                                window->priv->geometry.height);
+    }
+    else if (move)
+    {
+        gdk_window_move (widget->window,
+                         window->priv->geometry.x,
+                         window->priv->geometry.y);
+    }
+    else if (resize)
+    {
+        gdk_window_resize (widget->window,
+                           window->priv->geometry.width,
+                           window->priv->geometry.height);
+    }
+}
+
+static void
+gs_window_real_unrealize (GtkWidget *widget)
+{
+    g_signal_handlers_disconnect_by_func (gtk_window_get_screen (GTK_WINDOW (widget)),
+                                          screen_size_changed,
+                                          widget);
+
+    if (GTK_WIDGET_CLASS (gs_window_parent_class)->unrealize)
+    {
+        GTK_WIDGET_CLASS (gs_window_parent_class)->unrealize (widget);
+    }
+}
+
+/* copied from gdk */
+extern char **environ;
+
+static gchar **
+spawn_make_environment_for_screen (GdkScreen  *screen,
+                                   gchar     **envp)
+{
+    gchar **retval = NULL;
+    gchar  *display_name;
+    gint    display_index = -1;
+    gint    i, env_len;
+
+    g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+    if (envp == NULL)
+        envp = environ;
+
+    for (env_len = 0; envp[env_len]; env_len++)
+        if (strncmp (envp[env_len], "DISPLAY", strlen ("DISPLAY")) == 0)
+            display_index = env_len;
+
+    retval = g_new (char *, env_len + 1);
+    retval[env_len] = NULL;
+
+    display_name = gdk_screen_make_display_name (screen);
+
+    for (i = 0; i < env_len; i++)
+        if (i == display_index)
+            retval[i] = g_strconcat ("DISPLAY=", display_name, NULL);
+        else
+            retval[i] = g_strdup (envp[i]);
+
+    g_assert (i == env_len);
+
+    g_free (display_name);
+
+    return retval;
+}
+
+static gboolean
+spawn_command_line_on_screen_sync (GdkScreen    *screen,
+                                   const gchar  *command_line,
+                                   char        **standard_output,
+                                   char        **standard_error,
+                                   int          *exit_status,
+                                   GError      **error)
+{
+    char     **argv = NULL;
+    char     **envp = NULL;
+    gboolean   retval;
+
+    g_return_val_if_fail (command_line != NULL, FALSE);
+
+    if (! g_shell_parse_argv (command_line, NULL, &argv, error))
+    {
+        return FALSE;
+    }
+
+    envp = spawn_make_environment_for_screen (screen, NULL);
+
+    retval = g_spawn_sync (NULL,
+                           argv,
+                           envp,
+                           G_SPAWN_SEARCH_PATH,
+                           NULL,
+                           NULL,
+                           standard_output,
+                           standard_error,
+                           exit_status,
+                           error);
+
+    g_strfreev (argv);
+    g_strfreev (envp);
+
+    return retval;
+}
+
+static GdkVisual *
+get_best_visual_for_screen (GdkScreen *screen)
+{
+    char         *command;
+    char         *std_output;
+    int           exit_status;
+    GError       *error;
+    unsigned long v;
+    char          c;
+    GdkVisual    *visual;
+    gboolean      res;
+
+    visual = NULL;
+
+    command = g_build_filename (LIBEXECDIR, "mate-screensaver-gl-helper", NULL);
+
+    error = NULL;
+    std_output = NULL;
+    res = spawn_command_line_on_screen_sync (screen,
+            command,
+            &std_output,
+            NULL,
+            &exit_status,
+            &error);
+    if (! res)
+    {
+        gs_debug ("Could not run command '%s': %s", command, error->message);
+        g_error_free (error);
+        goto out;
+    }
+
+    if (1 == sscanf (std_output, "0x%lx %c", &v, &c))
+    {
+        if (v != 0)
+        {
+            VisualID      visual_id;
+
+            visual_id = (VisualID) v;
+            visual = gdkx_visual_get (visual_id);
+
+            gs_debug ("Found best GL visual for screen %d: 0x%x",
+                      gdk_screen_get_number (screen),
+                      (unsigned int) visual_id);
+        }
+    }
+out:
+    g_free (std_output);
+    g_free (command);
+
+    return visual;
+}
+
+static GdkColormap *
+get_best_colormap_for_screen (GdkScreen *screen)
+{
+    GdkColormap *colormap;
+    GdkVisual   *visual;
+
+    g_return_val_if_fail (screen != NULL, NULL);
+
+    visual = get_best_visual_for_screen (screen);
+
+    colormap = NULL;
+    if (visual != NULL)
+    {
+        colormap = gdk_colormap_new (visual, FALSE);
+    }
+
+    return colormap;
+}
+
+static void
+widget_set_best_colormap (GtkWidget *widget)
+{
+    GdkColormap *colormap;
+
+    g_return_if_fail (widget != NULL);
+
+    colormap = get_best_colormap_for_screen (gtk_widget_get_screen (widget));
+    if (colormap != NULL)
+    {
+        gtk_widget_set_colormap (widget, colormap);
+        g_object_unref (colormap);
+    }
+}
+
+static void
+gs_window_real_realize (GtkWidget *widget)
+{
+    widget_set_best_colormap (widget);
+
+    if (GTK_WIDGET_CLASS (gs_window_parent_class)->realize)
+    {
+        GTK_WIDGET_CLASS (gs_window_parent_class)->realize (widget);
+    }
+
+    gs_window_override_user_time (GS_WINDOW (widget));
+
+    gs_window_move_resize_window (GS_WINDOW (widget), TRUE, TRUE);
+
+    g_signal_connect (gtk_window_get_screen (GTK_WINDOW (widget)),
+                      "size_changed",
+                      G_CALLBACK (screen_size_changed),
+                      widget);
+}
+
+/* every so often we should raise the window in case
+   another window has somehow gotten on top */
+static gboolean
+watchdog_timer (GSWindow *window)
+{
+    GtkWidget *widget = GTK_WIDGET (window);
+
+    gdk_window_focus (widget->window, GDK_CURRENT_TIME);
+
+    return TRUE;
+}
+
+static void
+remove_watchdog_timer (GSWindow *window)
+{
+    if (window->priv->watchdog_timer_id != 0)
+    {
+        g_source_remove (window->priv->watchdog_timer_id);
+        window->priv->watchdog_timer_id = 0;
+    }
+}
+
+static void
+add_watchdog_timer (GSWindow *window,
+                    glong     timeout)
+{
+    window->priv->watchdog_timer_id = g_timeout_add (timeout,
+                                      (GSourceFunc)watchdog_timer,
+                                      window);
+}
+
+static void
+remove_popup_dialog_idle (GSWindow *window)
+{
+    if (window->priv->popup_dialog_idle_id != 0)
+    {
+        g_source_remove (window->priv->popup_dialog_idle_id);
+        window->priv->popup_dialog_idle_id = 0;
+    }
+}
+
+static void
+add_popup_dialog_idle (GSWindow *window)
+{
+    window->priv->popup_dialog_idle_id = g_idle_add ((GSourceFunc)popup_dialog_idle, window);
+}
+
+static gboolean
+emit_deactivated_idle (GSWindow *window)
+{
+    g_signal_emit (window, signals [DEACTIVATED], 0);
+
+    return FALSE;
+}
+
+static void
+add_emit_deactivated_idle (GSWindow *window)
+{
+    g_idle_add ((GSourceFunc)emit_deactivated_idle, window);
+}
+
+static void
+gs_window_raise (GSWindow *window)
+{
+    GdkWindow *win;
+
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    gs_debug ("Raising screensaver window");
+
+    win = GTK_WIDGET (window)->window;
+
+    gdk_window_raise (win);
+}
+
+static gboolean
+x11_window_is_ours (Window window)
+{
+    GdkWindow *gwindow;
+    gboolean   ret;
+
+    ret = FALSE;
+
+    gwindow = gdk_window_lookup (window);
+    if (gwindow && (window != GDK_ROOT_WINDOW ()))
+    {
+        ret = TRUE;
+    }
+
+    return ret;
+}
+
+#ifdef HAVE_SHAPE_EXT
+static void
+unshape_window (GSWindow *window)
+{
+    gdk_window_shape_combine_region (GTK_WIDGET (window)->window,
+                                     NULL,
+                                     0,
+                                     0);
+}
+#endif
+
+static void
+gs_window_xevent (GSWindow  *window,
+                  GdkXEvent *xevent)
+{
+    XEvent *ev;
+
+    ev = xevent;
+
+    /* MapNotify is used to tell us when new windows are mapped.
+       ConfigureNofify is used to tell us when windows are raised. */
+    switch (ev->xany.type)
+    {
+    case MapNotify:
+    {
+        XMapEvent *xme = &ev->xmap;
+
+        if (! x11_window_is_ours (xme->window))
+        {
+            gs_window_raise (window);
+        }
+        else
+        {
+            gs_debug ("not raising our windows");
+        }
+
+        break;
+    }
+    case ConfigureNotify:
+    {
+        XConfigureEvent *xce = &ev->xconfigure;
+
+        if (! x11_window_is_ours (xce->window))
+        {
+            gs_window_raise (window);
+        }
+        else
+        {
+            gs_debug ("not raising our windows");
+        }
+
+        break;
+    }
+    default:
+        /* extension events */
+#ifdef HAVE_SHAPE_EXT
+        if (ev->xany.type == (window->priv->shape_event_base + ShapeNotify))
+        {
+            /*XShapeEvent *xse = (XShapeEvent *) ev;*/
+            unshape_window (window);
+            gs_debug ("Window was reshaped!");
+        }
+#endif
+
+        break;
+    }
+
+}
+
+static GdkFilterReturn
+xevent_filter (GdkXEvent *xevent,
+               GdkEvent  *event,
+               GSWindow  *window)
+{
+    gs_window_xevent (window, xevent);
+
+    return GDK_FILTER_CONTINUE;
+}
+
+static void
+select_popup_events (void)
+{
+    XWindowAttributes attr;
+    unsigned long     events;
+
+    gdk_error_trap_push ();
+
+    memset (&attr, 0, sizeof (attr));
+    XGetWindowAttributes (GDK_DISPLAY (), GDK_ROOT_WINDOW (), &attr);
+
+    events = SubstructureNotifyMask | attr.your_event_mask;
+    XSelectInput (GDK_DISPLAY (), GDK_ROOT_WINDOW (), events);
+
+    gdk_display_sync (gdk_display_get_default ());
+    gdk_error_trap_pop ();
+}
+
+static void
+window_select_shape_events (GSWindow *window)
+{
+#ifdef HAVE_SHAPE_EXT
+    unsigned long events;
+    int           shape_error_base;
+
+    gdk_error_trap_push ();
+
+    if (XShapeQueryExtension (GDK_DISPLAY (), &window->priv->shape_event_base, &shape_error_base))
+    {
+        events = ShapeNotifyMask;
+        XShapeSelectInput (GDK_DISPLAY (), GDK_WINDOW_XID (GTK_WIDGET (window)->window), events);
+    }
+
+    gdk_display_sync (gdk_display_get_default ());
+    gdk_error_trap_pop ();
+#endif
+}
+
+static void
+gs_window_real_show (GtkWidget *widget)
+{
+    GSWindow *window;
+
+    if (GTK_WIDGET_CLASS (gs_window_parent_class)->show)
+    {
+        GTK_WIDGET_CLASS (gs_window_parent_class)->show (widget);
+    }
+
+    gs_window_clear (GS_WINDOW (widget));
+
+    set_invisible_cursor (widget->window, TRUE);
+
+    window = GS_WINDOW (widget);
+    if (window->priv->timer)
+    {
+        g_timer_destroy (window->priv->timer);
+    }
+    window->priv->timer = g_timer_new ();
+
+    remove_watchdog_timer (window);
+    add_watchdog_timer (window, 30000);
+
+    select_popup_events ();
+    window_select_shape_events (window);
+    gdk_window_add_filter (NULL, (GdkFilterFunc)xevent_filter, window);
+}
+
+static void
+set_info_text_and_icon (GSWindow   *window,
+                        const char *icon_stock_id,
+                        const char *primary_text,
+                        const char *secondary_text)
+{
+    GtkWidget *content_area;
+    GtkWidget *hbox_content;
+    GtkWidget *image;
+    GtkWidget *vbox;
+    gchar *primary_markup;
+    gchar *secondary_markup;
+    GtkWidget *primary_label;
+    GtkWidget *secondary_label;
+
+    hbox_content = gtk_hbox_new (FALSE, 8);
+    gtk_widget_show (hbox_content);
+
+    image = gtk_image_new_from_stock (icon_stock_id, GTK_ICON_SIZE_DIALOG);
+    gtk_widget_show (image);
+    gtk_box_pack_start (GTK_BOX (hbox_content), image, FALSE, FALSE, 0);
+    gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0);
+
+    vbox = gtk_vbox_new (FALSE, 6);
+    gtk_widget_show (vbox);
+    gtk_box_pack_start (GTK_BOX (hbox_content), vbox, FALSE, FALSE, 0);
+
+    primary_markup = g_strdup_printf ("<b>%s</b>", primary_text);
+    primary_label = gtk_label_new (primary_markup);
+    g_free (primary_markup);
+    gtk_widget_show (primary_label);
+    gtk_box_pack_start (GTK_BOX (vbox), primary_label, TRUE, TRUE, 0);
+    gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE);
+    gtk_label_set_line_wrap (GTK_LABEL (primary_label), TRUE);
+    gtk_misc_set_alignment (GTK_MISC (primary_label), 0, 0.5);
+
+    if (secondary_text != NULL)
+    {
+        secondary_markup = g_strdup_printf ("<small>%s</small>",
+                                            secondary_text);
+        secondary_label = gtk_label_new (secondary_markup);
+        g_free (secondary_markup);
+        gtk_widget_show (secondary_label);
+        gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0);
+        gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE);
+        gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE);
+        gtk_misc_set_alignment (GTK_MISC (secondary_label), 0, 0.5);
+    }
+
+    /* remove old content */
+    content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (window->priv->info_bar));
+    if (window->priv->info_content != NULL)
+    {
+        gtk_container_remove (GTK_CONTAINER (content_area), window->priv->info_content);
+    }
+    gtk_box_pack_start (GTK_BOX (content_area),
+                        hbox_content,
+                        TRUE, FALSE, 0);
+    window->priv->info_content = hbox_content;
+}
+
+static gboolean
+info_bar_timeout (GSWindow *window)
+{
+    window->priv->info_bar_timer_id = 0;
+    gtk_widget_hide (window->priv->info_bar);
+    return FALSE;
+}
+
+void
+gs_window_show_message (GSWindow   *window,
+                        const char *summary,
+                        const char *body,
+                        const char *icon)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    set_info_text_and_icon (window,
+                            icon,
+                            summary,
+                            body);
+    gtk_widget_show (window->priv->info_bar);
+
+    if (window->priv->info_bar_timer_id > 0)
+    {
+        g_source_remove (window->priv->info_bar_timer_id);
+    }
+
+    window->priv->info_bar_timer_id = g_timeout_add_seconds (INFO_BAR_SECONDS,
+                                      (GSourceFunc)info_bar_timeout,
+                                      window);
+}
+
+void
+gs_window_show (GSWindow *window)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    gtk_widget_show (GTK_WIDGET (window));
+}
+
+static void
+gs_window_real_hide (GtkWidget *widget)
+{
+    GSWindow *window;
+
+    window = GS_WINDOW (widget);
+
+    gdk_window_remove_filter (NULL, (GdkFilterFunc)xevent_filter, window);
+
+    remove_watchdog_timer (window);
+
+    if (GTK_WIDGET_CLASS (gs_window_parent_class)->hide)
+    {
+        GTK_WIDGET_CLASS (gs_window_parent_class)->hide (widget);
+    }
+}
+
+void
+gs_window_destroy (GSWindow *window)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    gs_window_cancel_unlock_request (window);
+
+    gtk_widget_destroy (GTK_WIDGET (window));
+}
+
+GdkWindow *
+gs_window_get_gdk_window (GSWindow *window)
+{
+    g_return_val_if_fail (GS_IS_WINDOW (window), NULL);
+
+    return GTK_WIDGET (window)->window;
+}
+
+GtkWidget *
+gs_window_get_drawing_area (GSWindow *window)
+{
+    g_return_val_if_fail (GS_IS_WINDOW (window), NULL);
+
+    return window->priv->drawing_area;
+}
+
+/* just for debugging */
+static gboolean
+error_watch (GIOChannel   *source,
+             GIOCondition  condition,
+             gpointer      data)
+{
+    gboolean finished = FALSE;
+
+    if (condition & G_IO_IN)
+    {
+        GIOStatus status;
+        GError   *error = NULL;
+        char     *line;
+
+        line = NULL;
+        status = g_io_channel_read_line (source, &line, NULL, NULL, &error);
+
+        switch (status)
+        {
+        case G_IO_STATUS_NORMAL:
+            gs_debug ("command error output: %s", line);
+            break;
+        case G_IO_STATUS_EOF:
+            finished = TRUE;
+            break;
+        case G_IO_STATUS_ERROR:
+            finished = TRUE;
+            gs_debug ("Error reading from child: %s\n", error->message);
+            g_error_free (error);
+            return FALSE;
+        case G_IO_STATUS_AGAIN:
+        default:
+            break;
+        }
+        g_free (line);
+    }
+    else if (condition & G_IO_HUP)
+    {
+        finished = TRUE;
+    }
+
+    if (finished)
+    {
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+static gboolean
+spawn_on_window (GSWindow *window,
+                 char     *command,
+                 int      *pid,
+                 GIOFunc   watch_func,
+                 gpointer  user_data,
+                 gint     *watch_id)
+{
+    int         argc;
+    char      **argv;
+    GError     *error;
+    gboolean    result;
+    GIOChannel *channel;
+    int         standard_output;
+    int         standard_error;
+    int         child_pid;
+    int         id;
+
+    error = NULL;
+    if (! g_shell_parse_argv (command, &argc, &argv, &error))
+    {
+        gs_debug ("Could not parse command: %s", error->message);
+        g_error_free (error);
+        return FALSE;
+    }
+
+    error = NULL;
+    result = gdk_spawn_on_screen_with_pipes (GTK_WINDOW (window)->screen,
+             NULL,
+             argv,
+             NULL,
+             G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH,
+             NULL,
+             NULL,
+             &child_pid,
+             NULL,
+             &standard_output,
+             &standard_error,
+             &error);
+
+    if (! result)
+    {
+        gs_debug ("Could not start command '%s': %s", command, error->message);
+        g_error_free (error);
+        g_strfreev (argv);
+        return FALSE;
+    }
+
+    if (pid != NULL)
+    {
+        *pid = child_pid;
+    }
+    else
+    {
+        g_spawn_close_pid (child_pid);
+    }
+
+    /* output channel */
+    channel = g_io_channel_unix_new (standard_output);
+    g_io_channel_set_close_on_unref (channel, TRUE);
+    g_io_channel_set_flags (channel,
+                            g_io_channel_get_flags (channel) | G_IO_FLAG_NONBLOCK,
+                            NULL);
+    id = g_io_add_watch (channel,
+                         G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+                         watch_func,
+                         user_data);
+    if (watch_id != NULL)
+    {
+        *watch_id = id;
+    }
+    g_io_channel_unref (channel);
+
+    /* error channel */
+    channel = g_io_channel_unix_new (standard_error);
+    g_io_channel_set_close_on_unref (channel, TRUE);
+    g_io_channel_set_flags (channel,
+                            g_io_channel_get_flags (channel) | G_IO_FLAG_NONBLOCK,
+                            NULL);
+    id = g_io_add_watch (channel,
+                         G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+                         error_watch,
+                         NULL);
+    g_io_channel_unref (channel);
+
+    g_strfreev (argv);
+
+    return result;
+}
+
+static void
+lock_plug_added (GtkWidget *widget,
+                 GSWindow  *window)
+{
+    gtk_widget_show (widget);
+}
+
+static gboolean
+lock_plug_removed (GtkWidget *widget,
+                   GSWindow  *window)
+{
+    gtk_widget_hide (widget);
+    gtk_container_remove (GTK_CONTAINER (window->priv->vbox), GTK_WIDGET (window->priv->lock_box));
+    window->priv->lock_box = NULL;
+
+    return TRUE;
+}
+
+static void
+keyboard_plug_added (GtkWidget *widget,
+                     GSWindow  *window)
+{
+    gtk_widget_show (widget);
+}
+
+static gboolean
+keyboard_plug_removed (GtkWidget *widget,
+                       GSWindow  *window)
+{
+    gtk_widget_hide (widget);
+    gtk_container_remove (GTK_CONTAINER (window->priv->vbox), GTK_WIDGET (window->priv->keyboard_socket));
+
+    return TRUE;
+}
+
+static void
+keyboard_socket_destroyed (GtkWidget *widget,
+                           GSWindow  *window)
+{
+    g_signal_handlers_disconnect_by_func (widget, keyboard_socket_destroyed, window);
+    g_signal_handlers_disconnect_by_func (widget, keyboard_plug_added, window);
+    g_signal_handlers_disconnect_by_func (widget, keyboard_plug_removed, window);
+
+    window->priv->keyboard_socket = NULL;
+}
+
+static void
+forward_key_events (GSWindow *window)
+{
+    window->priv->key_events = g_list_reverse (window->priv->key_events);
+
+    while (window->priv->key_events != NULL)
+    {
+        GdkEventKey *event = window->priv->key_events->data;
+
+        gtk_window_propagate_key_event (GTK_WINDOW (window), event);
+
+        gdk_event_free ((GdkEvent *)event);
+        window->priv->key_events = g_list_delete_link (window->priv->key_events,
+                                   window->priv->key_events);
+    }
+}
+
+static void
+remove_key_events (GSWindow *window)
+{
+    window->priv->key_events = g_list_reverse (window->priv->key_events);
+
+    while (window->priv->key_events)
+    {
+        GdkEventKey *event = window->priv->key_events->data;
+
+        gdk_event_free ((GdkEvent *)event);
+        window->priv->key_events = g_list_delete_link (window->priv->key_events,
+                                   window->priv->key_events);
+    }
+}
+
+static void
+lock_socket_show (GtkWidget *widget,
+                  GSWindow  *window)
+{
+    gtk_widget_child_focus (window->priv->lock_socket, GTK_DIR_TAB_FORWARD);
+
+    /* send queued events to the dialog */
+    forward_key_events (window);
+}
+
+static void
+lock_socket_destroyed (GtkWidget *widget,
+                       GSWindow  *window)
+{
+    g_signal_handlers_disconnect_by_func (widget, lock_socket_show, window);
+    g_signal_handlers_disconnect_by_func (widget, lock_socket_destroyed, window);
+    g_signal_handlers_disconnect_by_func (widget, lock_plug_added, window);
+    g_signal_handlers_disconnect_by_func (widget, lock_plug_removed, window);
+
+    window->priv->lock_socket = NULL;
+}
+
+static void
+create_keyboard_socket (GSWindow *window,
+                        guint32   id)
+{
+    int height;
+
+    height = (gdk_screen_get_height (gtk_widget_get_screen (GTK_WIDGET (window)))) / 4;
+
+    window->priv->keyboard_socket = gtk_socket_new ();
+    gtk_widget_set_size_request (window->priv->keyboard_socket, -1, height);
+
+    g_signal_connect (window->priv->keyboard_socket, "destroy",
+                      G_CALLBACK (keyboard_socket_destroyed), window);
+    g_signal_connect (window->priv->keyboard_socket, "plug_added",
+                      G_CALLBACK (keyboard_plug_added), window);
+    g_signal_connect (window->priv->keyboard_socket, "plug_removed",
+                      G_CALLBACK (keyboard_plug_removed), window);
+    gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->keyboard_socket, FALSE, FALSE, 0);
+    gtk_socket_add_id (GTK_SOCKET (window->priv->keyboard_socket), id);
+}
+
+/* adapted from gspawn.c */
+static int
+wait_on_child (int pid)
+{
+    int status;
+
+wait_again:
+    if (waitpid (pid, &status, 0) < 0)
+    {
+        if (errno == EINTR)
+        {
+            goto wait_again;
+        }
+        else if (errno == ECHILD)
+        {
+            ; /* do nothing, child already reaped */
+        }
+        else
+        {
+            gs_debug ("waitpid () should not fail in 'GSWindow'");
+        }
+    }
+
+    return status;
+}
+
+static void
+kill_keyboard_command (GSWindow *window)
+{
+    if (window->priv->keyboard_pid > 0)
+    {
+        signal_pid (window->priv->keyboard_pid, SIGTERM);
+    }
+}
+
+static void
+kill_dialog_command (GSWindow *window)
+{
+    /* If a dialog is up we need to signal it
+       and wait on it */
+    if (window->priv->lock_pid > 0)
+    {
+        signal_pid (window->priv->lock_pid, SIGTERM);
+    }
+}
+
+static void
+keyboard_command_finish (GSWindow *window)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    /* send a signal just in case */
+    kill_keyboard_command (window);
+
+    gs_debug ("Keyboard finished");
+
+    if (window->priv->keyboard_pid > 0)
+    {
+        int exit_status;
+
+        exit_status = wait_on_child (window->priv->keyboard_pid);
+
+        g_spawn_close_pid (window->priv->keyboard_pid);
+        window->priv->keyboard_pid = 0;
+    }
+}
+
+static gboolean
+keyboard_command_watch (GIOChannel   *source,
+                        GIOCondition  condition,
+                        GSWindow     *window)
+{
+    gboolean finished = FALSE;
+
+    g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
+
+    if (condition & G_IO_IN)
+    {
+        GIOStatus status;
+        GError   *error = NULL;
+        char     *line;
+
+        line = NULL;
+        status = g_io_channel_read_line (source, &line, NULL, NULL, &error);
+
+        switch (status)
+        {
+        case G_IO_STATUS_NORMAL:
+        {
+            guint32 id;
+            char    c;
+            gs_debug ("keyboard command output: %s", line);
+            if (1 == sscanf (line, " %" G_GUINT32_FORMAT " %c", &id, &c))
+            {
+                create_keyboard_socket (window, id);
+            }
+        }
+        break;
+        case G_IO_STATUS_EOF:
+            finished = TRUE;
+            break;
+        case G_IO_STATUS_ERROR:
+            finished = TRUE;
+            gs_debug ("Error reading from child: %s\n", error->message);
+            g_error_free (error);
+            return FALSE;
+        case G_IO_STATUS_AGAIN:
+        default:
+            break;
+        }
+
+        g_free (line);
+    }
+    else if (condition & G_IO_HUP)
+    {
+        finished = TRUE;
+    }
+
+    if (finished)
+    {
+        window->priv->keyboard_watch_id = 0;
+        keyboard_command_finish (window);
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+static void
+embed_keyboard (GSWindow *window)
+{
+    gboolean res;
+
+    if (! window->priv->keyboard_enabled
+            || window->priv->keyboard_command == NULL)
+        return;
+
+    gs_debug ("Adding embedded keyboard widget");
+
+    /* FIXME: verify command is safe */
+
+    gs_debug ("Running command: %s", window->priv->keyboard_command);
+
+    res = spawn_on_window (window,
+                           window->priv->keyboard_command,
+                           &window->priv->keyboard_pid,
+                           (GIOFunc)keyboard_command_watch,
+                           window,
+                           &window->priv->keyboard_watch_id);
+    if (! res)
+    {
+        gs_debug ("Could not start command: %s", window->priv->keyboard_command);
+    }
+}
+
+static void
+create_lock_socket (GSWindow *window,
+                    guint32   id)
+{
+    window->priv->lock_socket = gtk_socket_new ();
+    window->priv->lock_box = gtk_alignment_new (0.5, 0.5, 0, 0);
+    gtk_widget_show (window->priv->lock_box);
+    gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->lock_box, TRUE, TRUE, 0);
+
+    gtk_container_add (GTK_CONTAINER (window->priv->lock_box), window->priv->lock_socket);
+
+    g_signal_connect (window->priv->lock_socket, "show",
+                      G_CALLBACK (lock_socket_show), window);
+    g_signal_connect (window->priv->lock_socket, "destroy",
+                      G_CALLBACK (lock_socket_destroyed), window);
+    g_signal_connect (window->priv->lock_socket, "plug_added",
+                      G_CALLBACK (lock_plug_added), window);
+    g_signal_connect (window->priv->lock_socket, "plug_removed",
+                      G_CALLBACK (lock_plug_removed), window);
+
+    gtk_socket_add_id (GTK_SOCKET (window->priv->lock_socket), id);
+
+    if (window->priv->keyboard_enabled)
+    {
+        embed_keyboard (window);
+    }
+}
+
+static void
+gs_window_dialog_finish (GSWindow *window)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    gs_debug ("Dialog finished");
+
+    /* make sure we finish the keyboard thing too */
+    keyboard_command_finish (window);
+
+    /* send a signal just in case */
+    kill_dialog_command (window);
+
+    if (window->priv->lock_pid > 0)
+    {
+        int exit_status;
+
+        exit_status = wait_on_child (window->priv->lock_pid);
+
+        g_spawn_close_pid (window->priv->lock_pid);
+        window->priv->lock_pid = 0;
+    }
+
+    /* remove events for the case were we failed to show socket */
+    remove_key_events (window);
+}
+
+static void
+maybe_kill_dialog (GSWindow *window)
+{
+    if (!window->priv->dialog_shake_in_progress
+            && window->priv->dialog_quit_requested
+            && window->priv->lock_pid > 0)
+    {
+        kill (window->priv->lock_pid, SIGTERM);
+    }
+}
+
+/* very rudimentary animation for indicating an auth failure */
+static void
+shake_dialog (GSWindow *window)
+{
+    int   i;
+    guint left;
+    guint right;
+
+    window->priv->dialog_shake_in_progress = TRUE;
+
+    for (i = 0; i < 9; i++)
+    {
+        if (i % 2 == 0)
+        {
+            left = 30;
+            right = 0;
+        }
+        else
+        {
+            left = 0;
+            right = 30;
+        }
+
+        if (! window->priv->lock_box)
+        {
+            break;
+        }
+
+        gtk_alignment_set_padding (GTK_ALIGNMENT (window->priv->lock_box),
+                                   0, 0,
+                                   left,
+                                   right);
+
+        while (gtk_events_pending ())
+        {
+            gtk_main_iteration ();
+        }
+
+        g_usleep (10000);
+    }
+
+    window->priv->dialog_shake_in_progress = FALSE;
+    maybe_kill_dialog (window);
+}
+
+static void
+window_set_dialog_up (GSWindow *window,
+                      gboolean  dialog_up)
+{
+    if (window->priv->dialog_up == dialog_up)
+    {
+        return;
+    }
+
+    window->priv->dialog_up = dialog_up;
+    g_object_notify (G_OBJECT (window), "dialog-up");
+}
+
+static void
+popdown_dialog (GSWindow *window)
+{
+    gs_window_dialog_finish (window);
+
+    gtk_widget_show (window->priv->drawing_area);
+
+    gs_window_clear (window);
+    set_invisible_cursor (GTK_WIDGET (window)->window, TRUE);
+
+    window_set_dialog_up (window, FALSE);
+
+    /* reset the pointer positions */
+    window->priv->last_x = -1;
+    window->priv->last_y = -1;
+
+    if (window->priv->lock_box != NULL)
+    {
+        gtk_container_remove (GTK_CONTAINER (window->priv->vbox), GTK_WIDGET (window->priv->lock_box));
+        window->priv->lock_box = NULL;
+    }
+
+    remove_popup_dialog_idle (window);
+    remove_command_watches (window);
+}
+
+static gboolean
+lock_command_watch (GIOChannel   *source,
+                    GIOCondition  condition,
+                    GSWindow     *window)
+{
+    gboolean finished = FALSE;
+
+    g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
+
+    if (condition & G_IO_IN)
+    {
+        GIOStatus status;
+        GError   *error = NULL;
+        char     *line;
+
+        line = NULL;
+        status = g_io_channel_read_line (source, &line, NULL, NULL, &error);
+
+        switch (status)
+        {
+        case G_IO_STATUS_NORMAL:
+            gs_debug ("command output: %s", line);
+
+            if (strstr (line, "WINDOW ID=") != NULL)
+            {
+                guint32 id;
+                char    c;
+                if (1 == sscanf (line, " WINDOW ID= %" G_GUINT32_FORMAT " %c", &id, &c))
+                {
+                    create_lock_socket (window, id);
+                }
+            }
+            else if (strstr (line, "NOTICE=") != NULL)
+            {
+                if (strstr (line, "NOTICE=AUTH FAILED") != NULL)
+                {
+                    shake_dialog (window);
+                }
+            }
+            else if (strstr (line, "RESPONSE=") != NULL)
+            {
+                if (strstr (line, "RESPONSE=OK") != NULL)
+                {
+                    gs_debug ("Got OK response");
+                    window->priv->dialog_response = DIALOG_RESPONSE_OK;
+                }
+                else
+                {
+                    gs_debug ("Got CANCEL response");
+                    window->priv->dialog_response = DIALOG_RESPONSE_CANCEL;
+                }
+                finished = TRUE;
+            }
+            else if (strstr (line, "REQUEST QUIT") != NULL)
+            {
+                gs_debug ("Got request for quit");
+                window->priv->dialog_quit_requested = TRUE;
+                maybe_kill_dialog (window);
+            }
+            break;
+        case G_IO_STATUS_EOF:
+            finished = TRUE;
+            break;
+        case G_IO_STATUS_ERROR:
+            finished = TRUE;
+            gs_debug ("Error reading from child: %s\n", error->message);
+            g_error_free (error);
+            return FALSE;
+        case G_IO_STATUS_AGAIN:
+        default:
+            break;
+        }
+
+        g_free (line);
+    }
+    else if (condition & G_IO_HUP)
+    {
+        finished = TRUE;
+    }
+
+    if (finished)
+    {
+        popdown_dialog (window);
+
+        if (window->priv->dialog_response == DIALOG_RESPONSE_OK)
+        {
+            add_emit_deactivated_idle (window);
+        }
+
+        window->priv->lock_watch_id = 0;
+
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+static gboolean
+is_logout_enabled (GSWindow *window)
+{
+    double elapsed;
+
+    if (! window->priv->logout_enabled)
+    {
+        return FALSE;
+    }
+
+    if (! window->priv->logout_command)
+    {
+        return FALSE;
+    }
+
+    elapsed = g_timer_elapsed (window->priv->timer, NULL);
+
+    if (window->priv->logout_timeout < (elapsed * 1000))
+    {
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+static gboolean
+is_user_switch_enabled (GSWindow *window)
+{
+    return window->priv->user_switch_enabled;
+}
+
+static void
+popup_dialog (GSWindow *window)
+{
+    gboolean  result;
+    char     *tmp;
+    GString  *command;
+
+    gs_debug ("Popping up dialog");
+
+    tmp = g_build_filename (LIBEXECDIR, "mate-screensaver-dialog", NULL);
+    command = g_string_new (tmp);
+    g_free (tmp);
+
+    if (is_logout_enabled (window))
+    {
+        command = g_string_append (command, " --enable-logout");
+        g_string_append_printf (command, " --logout-command='%s'", window->priv->logout_command);
+    }
+
+    if (window->priv->status_message)
+    {
+        char *quoted;
+
+        quoted = g_shell_quote (window->priv->status_message);
+        g_string_append_printf (command, " --status-message=%s", quoted);
+        g_free (quoted);
+    }
+
+    if (is_user_switch_enabled (window))
+    {
+        command = g_string_append (command, " --enable-switch");
+    }
+
+    if (gs_debug_enabled ())
+    {
+        command = g_string_append (command, " --verbose");
+    }
+
+    gtk_widget_hide (window->priv->drawing_area);
+
+    gs_window_clear_to_background_pixmap (window);
+
+    set_invisible_cursor (GTK_WIDGET (window)->window, FALSE);
+
+    window->priv->dialog_quit_requested = FALSE;
+    window->priv->dialog_shake_in_progress = FALSE;
+
+    result = spawn_on_window (window,
+                              command->str,
+                              &window->priv->lock_pid,
+                              (GIOFunc)lock_command_watch,
+                              window,
+                              &window->priv->lock_watch_id);
+    if (! result)
+    {
+        gs_debug ("Could not start command: %s", command->str);
+    }
+
+    g_string_free (command, TRUE);
+}
+
+static gboolean
+popup_dialog_idle (GSWindow *window)
+{
+    popup_dialog (window);
+
+    window->priv->popup_dialog_idle_id = 0;
+
+    return FALSE;
+}
+
+void
+gs_window_request_unlock (GSWindow *window)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    gs_debug ("Requesting unlock");
+
+    if (! GTK_WIDGET_VISIBLE (GTK_WIDGET (window)))
+    {
+        gs_debug ("Request unlock but window is not visible!");
+        return;
+    }
+
+    if (window->priv->lock_watch_id > 0)
+    {
+        return;
+    }
+
+    if (! window->priv->lock_enabled)
+    {
+        add_emit_deactivated_idle (window);
+
+        return;
+    }
+
+    if (window->priv->popup_dialog_idle_id == 0)
+    {
+        add_popup_dialog_idle (window);
+    }
+
+    window_set_dialog_up (window, TRUE);
+}
+
+void
+gs_window_cancel_unlock_request (GSWindow  *window)
+{
+    /* FIXME: This is a bit of a hammer approach...
+    * Maybe we should send a delete-event to
+     * the plug?
+     */
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    popdown_dialog (window);
+}
+
+void
+gs_window_set_lock_enabled (GSWindow *window,
+                            gboolean  lock_enabled)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    if (window->priv->lock_enabled == lock_enabled)
+    {
+        return;
+    }
+
+    window->priv->lock_enabled = lock_enabled;
+    g_object_notify (G_OBJECT (window), "lock-enabled");
+}
+
+void
+gs_window_set_screen (GSWindow  *window,
+                      GdkScreen *screen)
+{
+
+    g_return_if_fail (GS_IS_WINDOW (window));
+    g_return_if_fail (GDK_IS_SCREEN (screen));
+
+    gtk_window_set_screen (GTK_WINDOW (window), screen);
+}
+
+GdkScreen *
+gs_window_get_screen (GSWindow  *window)
+{
+    g_return_val_if_fail (GS_IS_WINDOW (window), NULL);
+
+    return GTK_WINDOW (window)->screen;
+}
+
+void
+gs_window_set_keyboard_enabled (GSWindow *window,
+                                gboolean  enabled)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    window->priv->keyboard_enabled = enabled;
+}
+
+void
+gs_window_set_keyboard_command (GSWindow   *window,
+                                const char *command)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    g_free (window->priv->keyboard_command);
+
+    if (command != NULL)
+    {
+        window->priv->keyboard_command = g_strdup (command);
+    }
+    else
+    {
+        window->priv->keyboard_command = NULL;
+    }
+}
+
+void
+gs_window_set_logout_enabled (GSWindow *window,
+                              gboolean  logout_enabled)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    window->priv->logout_enabled = logout_enabled;
+}
+
+void
+gs_window_set_user_switch_enabled (GSWindow *window,
+                                   gboolean  user_switch_enabled)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    window->priv->user_switch_enabled = user_switch_enabled;
+}
+
+void
+gs_window_set_logout_timeout (GSWindow *window,
+                              glong     logout_timeout)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    if (logout_timeout < 0)
+    {
+        window->priv->logout_timeout = 0;
+    }
+    else
+    {
+        window->priv->logout_timeout = logout_timeout;
+    }
+}
+
+void
+gs_window_set_logout_command (GSWindow   *window,
+                              const char *command)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    g_free (window->priv->logout_command);
+
+    if (command)
+    {
+        window->priv->logout_command = g_strdup (command);
+    }
+    else
+    {
+        window->priv->logout_command = NULL;
+    }
+}
+
+void
+gs_window_set_status_message (GSWindow   *window,
+                              const char *status_message)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    g_free (window->priv->status_message);
+    window->priv->status_message = g_strdup (status_message);
+}
+
+void
+gs_window_set_monitor (GSWindow *window,
+                       int       monitor)
+{
+    g_return_if_fail (GS_IS_WINDOW (window));
+
+    if (window->priv->monitor == monitor)
+    {
+        return;
+    }
+
+    window->priv->monitor = monitor;
+
+    gtk_widget_queue_resize (GTK_WIDGET (window));
+
+    g_object_notify (G_OBJECT (window), "monitor");
+}
+
+int
+gs_window_get_monitor (GSWindow *window)
+{
+    g_return_val_if_fail (GS_IS_WINDOW (window), -1);
+
+    return window->priv->monitor;
+}
+
+static void
+gs_window_set_property (GObject            *object,
+                        guint               prop_id,
+                        const GValue       *value,
+                        GParamSpec         *pspec)
+{
+    GSWindow *self;
+
+    self = GS_WINDOW (object);
+
+    switch (prop_id)
+    {
+    case PROP_LOCK_ENABLED:
+        gs_window_set_lock_enabled (self, g_value_get_boolean (value));
+        break;
+    case PROP_KEYBOARD_ENABLED:
+        gs_window_set_keyboard_enabled (self, g_value_get_boolean (value));
+        break;
+    case PROP_KEYBOARD_COMMAND:
+        gs_window_set_keyboard_command (self, g_value_get_string (value));
+        break;
+    case PROP_LOGOUT_ENABLED:
+        gs_window_set_logout_enabled (self, g_value_get_boolean (value));
+        break;
+    case PROP_LOGOUT_COMMAND:
+        gs_window_set_logout_command (self, g_value_get_string (value));
+        break;
+    case PROP_STATUS_MESSAGE:
+        gs_window_set_status_message (self, g_value_get_string (value));
+        break;
+    case PROP_LOGOUT_TIMEOUT:
+        gs_window_set_logout_timeout (self, g_value_get_long (value));
+        break;
+    case PROP_MONITOR:
+        gs_window_set_monitor (self, g_value_get_int (value));
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+gs_window_get_property (GObject    *object,
+                        guint       prop_id,
+                        GValue     *value,
+                        GParamSpec *pspec)
+{
+    GSWindow *self;
+
+    self = GS_WINDOW (object);
+
+    switch (prop_id)
+    {
+    case PROP_LOCK_ENABLED:
+        g_value_set_boolean (value, self->priv->lock_enabled);
+        break;
+    case PROP_KEYBOARD_ENABLED:
+        g_value_set_boolean (value, self->priv->keyboard_enabled);
+        break;
+    case PROP_KEYBOARD_COMMAND:
+        g_value_set_string (value, self->priv->keyboard_command);
+        break;
+    case PROP_LOGOUT_ENABLED:
+        g_value_set_boolean (value, self->priv->logout_enabled);
+        break;
+    case PROP_LOGOUT_COMMAND:
+        g_value_set_string (value, self->priv->logout_command);
+        break;
+    case PROP_STATUS_MESSAGE:
+        g_value_set_string (value, self->priv->status_message);
+        break;
+    case PROP_LOGOUT_TIMEOUT:
+        g_value_set_long (value, self->priv->logout_timeout);
+        break;
+    case PROP_MONITOR:
+        g_value_set_int (value, self->priv->monitor);
+        break;
+    case PROP_OBSCURED:
+        g_value_set_boolean (value, self->priv->obscured);
+        break;
+    case PROP_DIALOG_UP:
+        g_value_set_boolean (value, self->priv->dialog_up);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+queue_key_event (GSWindow    *window,
+                 GdkEventKey *event)
+{
+    /* Eat the first return, enter, escape, or space */
+    if (window->priv->key_events == NULL
+            && (event->keyval == GDK_Return
+                || event->keyval == GDK_KP_Enter
+                || event->keyval == GDK_Escape
+                || event->keyval == GDK_space))
+    {
+        return;
+    }
+
+    /* Only cache MAX_QUEUED_EVENTS key events.  If there are any more than this then
+       something is wrong */
+    /* Don't queue keys that may cause focus navigation in the dialog */
+    if (g_list_length (window->priv->key_events) < MAX_QUEUED_EVENTS
+            && event->keyval != GDK_Tab
+            && event->keyval != GDK_Up
+            && event->keyval != GDK_Down)
+    {
+        window->priv->key_events = g_list_prepend (window->priv->key_events,
+                                   gdk_event_copy ((GdkEvent *)event));
+    }
+}
+
+static gboolean
+maybe_handle_activity (GSWindow *window)
+{
+    gboolean handled;
+
+    handled = FALSE;
+
+    /* if we already have a socket then don't bother */
+    if (! window->priv->lock_socket
+            && GTK_WIDGET_IS_SENSITIVE (GTK_WIDGET (window)))
+    {
+        g_signal_emit (window, signals [ACTIVITY], 0, &handled);
+    }
+
+    return handled;
+}
+
+static gboolean
+gs_window_real_key_press_event (GtkWidget   *widget,
+                                GdkEventKey *event)
+{
+    /*g_message ("KEY PRESS state: %u keyval %u", event->state, event->keyval);*/
+
+    /* Ignore brightness keys */
+    if (event->hardware_keycode == 101 || event->hardware_keycode == 212)
+    {
+        gs_debug ("Ignoring brightness keys");
+        return TRUE;
+    }
+
+    maybe_handle_activity (GS_WINDOW (widget));
+
+    queue_key_event (GS_WINDOW (widget), event);
+
+    if (GTK_WIDGET_CLASS (gs_window_parent_class)->key_press_event)
+    {
+        GTK_WIDGET_CLASS (gs_window_parent_class)->key_press_event (widget, event);
+    }
+
+    return TRUE;
+}
+
+static gboolean
+gs_window_real_motion_notify_event (GtkWidget      *widget,
+                                    GdkEventMotion *event)
+{
+    GSWindow  *window;
+    gdouble    distance;
+    gdouble    min_distance;
+    gdouble    min_percentage = 0.1;
+    GdkScreen *screen;
+
+    window = GS_WINDOW (widget);
+
+    screen = gs_window_get_screen (window);
+    min_distance = gdk_screen_get_width (screen) * min_percentage;
+
+    /* if the last position was not set then don't detect motion */
+    if (window->priv->last_x < 0 || window->priv->last_y < 0)
+    {
+        window->priv->last_x = event->x;
+        window->priv->last_y = event->y;
+
+        return FALSE;
+    }
+
+    /* just an approximate distance */
+    distance = MAX (ABS (window->priv->last_x - event->x),
+                    ABS (window->priv->last_y - event->y));
+
+    if (distance > min_distance)
+    {
+        maybe_handle_activity (window);
+
+        window->priv->last_x = -1;
+        window->priv->last_y = -1;
+    }
+
+    return FALSE;
+}
+
+static gboolean
+gs_window_real_button_press_event (GtkWidget      *widget,
+                                   GdkEventButton *event)
+{
+    GSWindow *window;
+
+    window = GS_WINDOW (widget);
+    maybe_handle_activity (window);
+
+    return FALSE;
+}
+
+static gboolean
+gs_window_real_scroll_event (GtkWidget      *widget,
+                             GdkEventScroll *event)
+{
+    GSWindow *window;
+
+    window = GS_WINDOW (widget);
+    maybe_handle_activity (window);
+
+    return FALSE;
+}
+
+static void
+gs_window_real_size_request (GtkWidget      *widget,
+                             GtkRequisition *requisition)
+{
+    GSWindow      *window;
+    GtkBin        *bin;
+    GdkRectangle   old_geometry;
+    int            position_changed = FALSE;
+    int            size_changed = FALSE;
+
+    window = GS_WINDOW (widget);
+    bin = GTK_BIN (widget);
+
+    if (bin->child && GTK_WIDGET_VISIBLE (bin->child))
+    {
+        gtk_widget_size_request (bin->child, requisition);
+    }
+
+    old_geometry = window->priv->geometry;
+
+    update_geometry (window);
+
+    requisition->width  = window->priv->geometry.width;
+    requisition->height = window->priv->geometry.height;
+
+    if (! GTK_WIDGET_REALIZED (widget))
+    {
+        return;
+    }
+
+    if (old_geometry.width  != window->priv->geometry.width ||
+            old_geometry.height != window->priv->geometry.height)
+    {
+        size_changed = TRUE;
+    }
+
+    if (old_geometry.x != window->priv->geometry.x ||
+            old_geometry.y != window->priv->geometry.y)
+    {
+        position_changed = TRUE;
+    }
+
+    gs_window_move_resize_window (window, position_changed, size_changed);
+}
+
+static gboolean
+gs_window_real_grab_broken (GtkWidget          *widget,
+                            GdkEventGrabBroken *event)
+{
+    if (event->grab_window != NULL)
+    {
+        gs_debug ("Grab broken on window %X %s, new grab on window %X",
+                  (guint32) GDK_WINDOW_XID (event->window),
+                  event->keyboard ? "keyboard" : "pointer",
+                  (guint32) GDK_WINDOW_XID (event->grab_window));
+    }
+    else
+    {
+        gs_debug ("Grab broken on window %X %s, new grab is outside application",
+                  (guint32) GDK_WINDOW_XID (event->window),
+                  event->keyboard ? "keyboard" : "pointer");
+    }
+
+    return FALSE;
+}
+
+gboolean
+gs_window_is_obscured (GSWindow *window)
+{
+    g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
+
+    return window->priv->obscured;
+}
+
+gboolean
+gs_window_is_dialog_up (GSWindow *window)
+{
+    g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
+
+    return window->priv->dialog_up;
+}
+
+static void
+window_set_obscured (GSWindow *window,
+                     gboolean  obscured)
+{
+    if (window->priv->obscured == obscured)
+    {
+        return;
+    }
+
+    window->priv->obscured = obscured;
+    g_object_notify (G_OBJECT (window), "obscured");
+}
+
+static gboolean
+gs_window_real_visibility_notify_event (GtkWidget          *widget,
+                                        GdkEventVisibility *event)
+{
+    switch (event->state)
+    {
+    case GDK_VISIBILITY_FULLY_OBSCURED:
+        window_set_obscured (GS_WINDOW (widget), TRUE);
+        break;
+    case GDK_VISIBILITY_PARTIAL:
+        break;
+    case GDK_VISIBILITY_UNOBSCURED:
+        window_set_obscured (GS_WINDOW (widget), FALSE);
+        break;
+    default:
+        break;
+    }
+
+    return FALSE;
+}
+
+static void
+gs_window_class_init (GSWindowClass *klass)
+{
+    GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+    GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+    object_class->finalize     = gs_window_finalize;
+    object_class->get_property = gs_window_get_property;
+    object_class->set_property = gs_window_set_property;
+
+    widget_class->show                = gs_window_real_show;
+    widget_class->hide                = gs_window_real_hide;
+    widget_class->realize             = gs_window_real_realize;
+    widget_class->unrealize           = gs_window_real_unrealize;
+    widget_class->key_press_event     = gs_window_real_key_press_event;
+    widget_class->motion_notify_event = gs_window_real_motion_notify_event;
+    widget_class->button_press_event  = gs_window_real_button_press_event;
+    widget_class->scroll_event        = gs_window_real_scroll_event;
+    widget_class->size_request        = gs_window_real_size_request;
+    widget_class->grab_broken_event   = gs_window_real_grab_broken;
+    widget_class->visibility_notify_event = gs_window_real_visibility_notify_event;
+
+    g_type_class_add_private (klass, sizeof (GSWindowPrivate));
+
+    signals [ACTIVITY] =
+        g_signal_new ("activity",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSWindowClass, activity),
+                      NULL,
+                      NULL,
+                      gs_marshal_BOOLEAN__VOID,
+                      G_TYPE_BOOLEAN,
+                      0);
+    signals [DEACTIVATED] =
+        g_signal_new ("deactivated",
+                      G_TYPE_FROM_CLASS (object_class),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (GSWindowClass, deactivated),
+                      NULL,
+                      NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE,
+                      0);
+
+    g_object_class_install_property (object_class,
+                                     PROP_OBSCURED,
+                                     g_param_spec_boolean ("obscured",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_DIALOG_UP,
+                                     g_param_spec_boolean ("dialog-up",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READABLE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOCK_ENABLED,
+                                     g_param_spec_boolean ("lock-enabled",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOGOUT_ENABLED,
+                                     g_param_spec_boolean ("logout-enabled",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOGOUT_TIMEOUT,
+                                     g_param_spec_long ("logout-timeout",
+                                             NULL,
+                                             NULL,
+                                             -1,
+                                             G_MAXLONG,
+                                             0,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_LOGOUT_COMMAND,
+                                     g_param_spec_string ("logout-command",
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_STATUS_MESSAGE,
+                                     g_param_spec_string ("status-message",
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_KEYBOARD_ENABLED,
+                                     g_param_spec_boolean ("keyboard-enabled",
+                                             NULL,
+                                             NULL,
+                                             FALSE,
+                                             G_PARAM_READWRITE));
+    g_object_class_install_property (object_class,
+                                     PROP_KEYBOARD_COMMAND,
+                                     g_param_spec_string ("keyboard-command",
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             G_PARAM_READWRITE));
+
+    g_object_class_install_property (object_class,
+                                     PROP_MONITOR,
+                                     g_param_spec_int ("monitor",
+                                             "Xinerama monitor",
+                                             "The monitor (in terms of Xinerama) which the window is on",
+                                             0,
+                                             G_MAXINT,
+                                             0,
+                                             G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+}
+
+static void
+create_info_bar (GSWindow *window)
+{
+    window->priv->info_bar = gtk_info_bar_new ();
+    gtk_widget_set_no_show_all (window->priv->info_bar, TRUE);
+    gtk_box_pack_end (GTK_BOX (window->priv->vbox), window->priv->info_bar, FALSE, FALSE, 0);
+}
+
+static void
+gs_window_init (GSWindow *window)
+{
+    window->priv = GS_WINDOW_GET_PRIVATE (window);
+
+    window->priv->geometry.x      = -1;
+    window->priv->geometry.y      = -1;
+    window->priv->geometry.width  = -1;
+    window->priv->geometry.height = -1;
+
+    window->priv->last_x = -1;
+    window->priv->last_y = -1;
+
+    gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
+
+    gtk_window_set_skip_taskbar_hint (GTK_WINDOW (window), TRUE);
+    gtk_window_set_skip_pager_hint (GTK_WINDOW (window), TRUE);
+
+    gtk_window_set_keep_above (GTK_WINDOW (window), TRUE);
+
+    gtk_window_fullscreen (GTK_WINDOW (window));
+
+    gtk_widget_set_events (GTK_WIDGET (window),
+                           gtk_widget_get_events (GTK_WIDGET (window))
+                           | GDK_POINTER_MOTION_MASK
+                           | GDK_BUTTON_PRESS_MASK
+                           | GDK_BUTTON_RELEASE_MASK
+                           | GDK_KEY_PRESS_MASK
+                           | GDK_KEY_RELEASE_MASK
+                           | GDK_EXPOSURE_MASK
+                           | GDK_VISIBILITY_NOTIFY_MASK
+                           | GDK_ENTER_NOTIFY_MASK
+                           | GDK_LEAVE_NOTIFY_MASK);
+
+    window->priv->vbox = gtk_vbox_new (FALSE, 12);
+    gtk_widget_show (window->priv->vbox);
+    gtk_container_add (GTK_CONTAINER (window), window->priv->vbox);
+
+    window->priv->drawing_area = gtk_drawing_area_new ();
+    gtk_widget_show (window->priv->drawing_area);
+    gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->drawing_area, TRUE, TRUE, 0);
+    create_info_bar (window);
+
+    force_no_pixmap_background (window->priv->drawing_area);
+}
+
+static void
+remove_command_watches (GSWindow *window)
+{
+    if (window->priv->lock_watch_id != 0)
+    {
+        g_source_remove (window->priv->lock_watch_id);
+        window->priv->lock_watch_id = 0;
+    }
+    if (window->priv->keyboard_watch_id != 0)
+    {
+        g_source_remove (window->priv->keyboard_watch_id);
+        window->priv->keyboard_watch_id = 0;
+    }
+}
+
+static void
+gs_window_finalize (GObject *object)
+{
+    GSWindow *window;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GS_IS_WINDOW (object));
+
+    window = GS_WINDOW (object);
+
+    g_return_if_fail (window->priv != NULL);
+
+    g_free (window->priv->logout_command);
+    g_free (window->priv->keyboard_command);
+
+    if (window->priv->info_bar_timer_id > 0)
+    {
+        g_source_remove (window->priv->info_bar_timer_id);
+    }
+
+    remove_watchdog_timer (window);
+    remove_popup_dialog_idle (window);
+
+    if (window->priv->timer)
+    {
+        g_timer_destroy (window->priv->timer);
+    }
+
+    remove_key_events (window);
+
+    remove_command_watches (window);
+
+    gs_window_dialog_finish (window);
+
+    if (window->priv->background_pixmap)
+    {
+        g_object_unref (window->priv->background_pixmap);
+    }
+
+    G_OBJECT_CLASS (gs_window_parent_class)->finalize (object);
+}
+
+GSWindow *
+gs_window_new (GdkScreen *screen,
+               int        monitor,
+               gboolean   lock_enabled)
+{
+    GObject     *result;
+
+    result = g_object_new (GS_TYPE_WINDOW,
+                           "type", GTK_WINDOW_POPUP,
+                           "screen", screen,
+                           "monitor", monitor,
+                           "lock-enabled", lock_enabled,
+                           NULL);
+
+    return GS_WINDOW (result);
+}
diff --git a/src/gs-window.h b/src/gs-window.h
new file mode 100644
index 0000000..9c8aee3
--- /dev/null
+++ b/src/gs-window.h
@@ -0,0 +1,106 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_WINDOW_H
+#define __GS_WINDOW_H
+
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_WINDOW         (gs_window_get_type ())
+#define GS_WINDOW(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_WINDOW, GSWindow))
+#define GS_WINDOW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_WINDOW, GSWindowClass))
+#define GS_IS_WINDOW(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_WINDOW))
+#define GS_IS_WINDOW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_WINDOW))
+#define GS_WINDOW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_WINDOW, GSWindowClass))
+
+typedef struct GSWindowPrivate GSWindowPrivate;
+
+typedef struct
+{
+	GtkWindow        window;
+
+	GSWindowPrivate *priv;
+} GSWindow;
+
+typedef struct
+{
+	GtkWindowClass   parent_class;
+
+	gboolean        (* activity)            (GSWindow *window);
+	void            (* deactivated)         (GSWindow *window);
+	void            (* dialog_up)           (GSWindow *window);
+	void            (* dialog_down)         (GSWindow *window);
+} GSWindowClass;
+
+GType       gs_window_get_type           (void);
+
+gboolean    gs_window_is_obscured        (GSWindow  *window);
+gboolean    gs_window_is_dialog_up       (GSWindow  *window);
+
+void        gs_window_set_screen         (GSWindow  *window,
+        GdkScreen *screen);
+GdkScreen * gs_window_get_screen         (GSWindow  *window);
+void        gs_window_set_monitor        (GSWindow  *window,
+        int        monitor);
+int         gs_window_get_monitor        (GSWindow  *window);
+
+void        gs_window_set_background_pixmap (GSWindow  *window,
+        GdkPixmap *pixmap);
+void        gs_window_set_lock_enabled   (GSWindow  *window,
+        gboolean   lock_enabled);
+void        gs_window_set_logout_enabled (GSWindow  *window,
+        gboolean   logout_enabled);
+void        gs_window_set_keyboard_enabled (GSWindow  *window,
+        gboolean   enabled);
+void        gs_window_set_keyboard_command (GSWindow   *window,
+        const char *command);
+void        gs_window_set_user_switch_enabled (GSWindow  *window,
+        gboolean   user_switch_enabled);
+void        gs_window_set_logout_timeout (GSWindow  *window,
+        glong      timeout);
+void        gs_window_set_logout_command (GSWindow   *window,
+        const char *command);
+void        gs_window_set_status_message   (GSWindow   *window,
+        const char *status_message);
+void        gs_window_show_message         (GSWindow   *window,
+        const char *summary,
+        const char *body,
+        const char *icon);
+
+void        gs_window_request_unlock     (GSWindow  *window);
+void        gs_window_cancel_unlock_request (GSWindow  *window);
+
+GSWindow  * gs_window_new                (GdkScreen *screen,
+        int        monitor,
+        gboolean   lock_enabled);
+void        gs_window_show               (GSWindow  *window);
+void        gs_window_destroy            (GSWindow  *window);
+GdkWindow * gs_window_get_gdk_window     (GSWindow  *window);
+GtkWidget * gs_window_get_drawing_area   (GSWindow  *window);
+void        gs_window_clear              (GSWindow  *window);
+
+G_END_DECLS
+
+#endif /* __GS_WINDOW_H */
diff --git a/src/gs-window.h.orig b/src/gs-window.h.orig
new file mode 100644
index 0000000..39537fe
--- /dev/null
+++ b/src/gs-window.h.orig
@@ -0,0 +1,106 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __GS_WINDOW_H
+#define __GS_WINDOW_H
+
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GS_TYPE_WINDOW         (gs_window_get_type ())
+#define GS_WINDOW(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_WINDOW, GSWindow))
+#define GS_WINDOW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_WINDOW, GSWindowClass))
+#define GS_IS_WINDOW(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_WINDOW))
+#define GS_IS_WINDOW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_WINDOW))
+#define GS_WINDOW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_WINDOW, GSWindowClass))
+
+typedef struct GSWindowPrivate GSWindowPrivate;
+
+typedef struct
+{
+    GtkWindow        window;
+
+    GSWindowPrivate *priv;
+} GSWindow;
+
+typedef struct
+{
+    GtkWindowClass   parent_class;
+
+    gboolean        (* activity)            (GSWindow *window);
+    void            (* deactivated)         (GSWindow *window);
+    void            (* dialog_up)           (GSWindow *window);
+    void            (* dialog_down)         (GSWindow *window);
+} GSWindowClass;
+
+GType       gs_window_get_type           (void);
+
+gboolean    gs_window_is_obscured        (GSWindow  *window);
+gboolean    gs_window_is_dialog_up       (GSWindow  *window);
+
+void        gs_window_set_screen         (GSWindow  *window,
+        GdkScreen *screen);
+GdkScreen * gs_window_get_screen         (GSWindow  *window);
+void        gs_window_set_monitor        (GSWindow  *window,
+        int        monitor);
+int         gs_window_get_monitor        (GSWindow  *window);
+
+void        gs_window_set_background_pixmap (GSWindow  *window,
+        GdkPixmap *pixmap);
+void        gs_window_set_lock_enabled   (GSWindow  *window,
+        gboolean   lock_enabled);
+void        gs_window_set_logout_enabled (GSWindow  *window,
+        gboolean   logout_enabled);
+void        gs_window_set_keyboard_enabled (GSWindow  *window,
+        gboolean   enabled);
+void        gs_window_set_keyboard_command (GSWindow   *window,
+        const char *command);
+void        gs_window_set_user_switch_enabled (GSWindow  *window,
+        gboolean   user_switch_enabled);
+void        gs_window_set_logout_timeout (GSWindow  *window,
+        glong      timeout);
+void        gs_window_set_logout_command (GSWindow   *window,
+        const char *command);
+void        gs_window_set_status_message   (GSWindow   *window,
+        const char *status_message);
+void        gs_window_show_message         (GSWindow   *window,
+        const char *summary,
+        const char *body,
+        const char *icon);
+
+void        gs_window_request_unlock     (GSWindow  *window);
+void        gs_window_cancel_unlock_request (GSWindow  *window);
+
+GSWindow  * gs_window_new                (GdkScreen *screen,
+        int        monitor,
+        gboolean   lock_enabled);
+void        gs_window_show               (GSWindow  *window);
+void        gs_window_destroy            (GSWindow  *window);
+GdkWindow * gs_window_get_gdk_window     (GSWindow  *window);
+GtkWidget * gs_window_get_drawing_area   (GSWindow  *window);
+void        gs_window_clear              (GSWindow  *window);
+
+G_END_DECLS
+
+#endif /* __GS_WINDOW_H */
diff --git a/src/mate-screensaver-command.c b/src/mate-screensaver-command.c
new file mode 100644
index 0000000..d6f0459
--- /dev/null
+++ b/src/mate-screensaver-command.c
@@ -0,0 +1,551 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <locale.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#define DBUS_API_SUBJECT_TO_CHANGE
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#define GS_SERVICE   "org.mate.ScreenSaver"
+#define GS_PATH      "/org/mate/ScreenSaver"
+#define GS_INTERFACE "org.mate.ScreenSaver"
+
+/* this is for dbus < 0.3 */
+#if ((DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR < 30))
+#define dbus_bus_name_has_owner(connection, name, err) dbus_bus_service_exists(connection, name, err)
+#endif
+
+static gboolean do_quit       = FALSE;
+static gboolean do_lock       = FALSE;
+static gboolean do_cycle      = FALSE;
+static gboolean do_activate   = FALSE;
+static gboolean do_deactivate = FALSE;
+static gboolean do_version    = FALSE;
+static gboolean do_poke       = FALSE;
+static gboolean do_inhibit    = FALSE;
+
+static gboolean do_query      = FALSE;
+static gboolean do_time       = FALSE;
+
+static char    *inhibit_reason      = NULL;
+static char    *inhibit_application = NULL;
+
+static GOptionEntry entries [] =
+{
+	{
+		"exit", 0, 0, G_OPTION_ARG_NONE, &do_quit,
+		N_("Causes the screensaver to exit gracefully"), NULL
+	},
+	{
+		"query", 'q', 0, G_OPTION_ARG_NONE, &do_query,
+		N_("Query the state of the screensaver"), NULL
+	},
+	{
+		"time", 't', 0, G_OPTION_ARG_NONE, &do_time,
+		N_("Query the length of time the screensaver has been active"), NULL
+	},
+	{
+		"lock", 'l', 0, G_OPTION_ARG_NONE, &do_lock,
+		N_("Tells the running screensaver process to lock the screen immediately"), NULL
+	},
+	{
+		"cycle", 'c', 0, G_OPTION_ARG_NONE, &do_cycle,
+		N_("If the screensaver is active then switch to another graphics demo"), NULL
+	},
+	{
+		"activate", 'a', 0, G_OPTION_ARG_NONE, &do_activate,
+		N_("Turn the screensaver on (blank the screen)"), NULL
+	},
+	{
+		"deactivate", 'd', 0, G_OPTION_ARG_NONE, &do_deactivate,
+		N_("If the screensaver is active then deactivate it (un-blank the screen)"), NULL
+	},
+	{
+		"poke", 'p', 0, G_OPTION_ARG_NONE, &do_poke,
+		N_("Poke the running screensaver to simulate user activity"), NULL
+	},
+	{
+		"inhibit", 'i', 0, G_OPTION_ARG_NONE, &do_inhibit,
+		N_("Inhibit the screensaver from activating.  Command blocks while inhibit is active."), NULL
+	},
+	{
+		"application-name", 'n', 0, G_OPTION_ARG_STRING, &inhibit_application,
+		N_("The calling application that is inhibiting the screensaver"), NULL
+	},
+	{
+		"reason", 'r', 0, G_OPTION_ARG_STRING, &inhibit_reason,
+		N_("The reason for inhibiting the screensaver"), NULL
+	},
+	{
+		"version", 'V', 0, G_OPTION_ARG_NONE, &do_version,
+		N_("Version of this application"), NULL
+	},
+	{ NULL }
+};
+
+static GMainLoop *loop = NULL;
+
+static gboolean
+screensaver_is_running (DBusConnection *connection)
+{
+	DBusError               error;
+	gboolean                exists;
+
+	g_return_val_if_fail (connection != NULL, FALSE);
+
+	dbus_error_init (&error);
+	exists = dbus_bus_name_has_owner (connection, GS_SERVICE, &error);
+	if (dbus_error_is_set (&error))
+		dbus_error_free (&error);
+
+	return exists;
+}
+
+static DBusMessage *
+screensaver_send_message_inhibit (DBusConnection *connection,
+                                  const char     *application,
+                                  const char     *reason)
+{
+	DBusMessage    *message;
+	DBusMessage    *reply;
+	DBusError       error;
+	DBusMessageIter iter;
+
+	g_return_val_if_fail (connection != NULL, NULL);
+
+	dbus_error_init (&error);
+
+	message = dbus_message_new_method_call (GS_SERVICE, GS_PATH, GS_INTERFACE, "Inhibit");
+	if (message == NULL)
+	{
+		g_warning ("Couldn't allocate the dbus message");
+		return NULL;
+	}
+
+	dbus_message_iter_init_append (message, &iter);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &application);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &reason);
+
+	reply = dbus_connection_send_with_reply_and_block (connection,
+	        message,
+	        -1, &error);
+	if (dbus_error_is_set (&error))
+	{
+		g_warning ("%s raised:\n %s\n\n", error.name, error.message);
+		reply = NULL;
+	}
+
+	dbus_connection_flush (connection);
+
+	dbus_message_unref (message);
+	dbus_error_free (&error);
+
+	return reply;
+}
+
+static DBusMessage *
+screensaver_send_message_bool (DBusConnection *connection,
+                               const char     *name,
+                               gboolean        value)
+{
+	DBusMessage    *message;
+	DBusMessage    *reply;
+	DBusError       error;
+	DBusMessageIter iter;
+
+	g_return_val_if_fail (connection != NULL, NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+
+	dbus_error_init (&error);
+
+	message = dbus_message_new_method_call (GS_SERVICE, GS_PATH, GS_INTERFACE, name);
+	if (message == NULL)
+	{
+		g_warning ("Couldn't allocate the dbus message");
+		return NULL;
+	}
+
+	dbus_message_iter_init_append (message, &iter);
+	dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &value);
+
+	reply = dbus_connection_send_with_reply_and_block (connection,
+	        message,
+	        -1, &error);
+	if (dbus_error_is_set (&error))
+	{
+		g_warning ("%s raised:\n %s\n\n", error.name, error.message);
+		reply = NULL;
+	}
+
+	dbus_connection_flush (connection);
+
+	dbus_message_unref (message);
+	dbus_error_free (&error);
+
+	return reply;
+}
+
+static DBusMessage *
+screensaver_send_message_void (DBusConnection *connection,
+                               const char     *name,
+                               gboolean        expect_reply)
+{
+	DBusMessage *message;
+	DBusMessage *reply;
+	DBusError    error;
+
+	g_return_val_if_fail (connection != NULL, NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+
+	dbus_error_init (&error);
+
+	message = dbus_message_new_method_call (GS_SERVICE, GS_PATH, GS_INTERFACE, name);
+	if (message == NULL)
+	{
+		g_warning ("Couldn't allocate the dbus message");
+		return NULL;
+	}
+
+	if (! expect_reply)
+	{
+		if (!dbus_connection_send (connection, message, NULL))
+			g_warning ("could not send message");
+		reply = NULL;
+	}
+	else
+	{
+		reply = dbus_connection_send_with_reply_and_block (connection,
+		        message,
+		        -1, &error);
+		if (dbus_error_is_set (&error))
+		{
+			g_warning ("%s raised:\n %s\n\n", error.name, error.message);
+			reply = NULL;
+		}
+	}
+	dbus_connection_flush (connection);
+
+	dbus_message_unref (message);
+	dbus_error_free (&error);
+
+	return reply;
+}
+
+static char **
+get_string_from_iter (DBusMessageIter *iter,
+                      int             *num_elements)
+{
+	int    count;
+	char **buffer;
+
+	if (num_elements != NULL)
+	{
+		*num_elements = 0;
+	}
+
+	count = 0;
+	buffer = (char **)malloc (sizeof (char *) * 8);
+
+	if (buffer == NULL)
+	{
+		goto oom;
+	}
+
+	buffer[0] = NULL;
+	while (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_STRING)
+	{
+		const char *value;
+		char       *str;
+
+		if ((count % 8) == 0 && count != 0)
+		{
+			buffer = realloc (buffer, sizeof (char *) * (count + 8));
+			if (buffer == NULL)
+			{
+				goto oom;
+			}
+		}
+
+		dbus_message_iter_get_basic (iter, &value);
+		str = strdup (value);
+		if (str == NULL)
+		{
+			goto oom;
+		}
+
+		buffer[count] = str;
+
+		dbus_message_iter_next (iter);
+		count++;
+	}
+
+	if ((count % 8) == 0)
+	{
+		buffer = realloc (buffer, sizeof (char *) * (count + 1));
+		if (buffer == NULL)
+		{
+			goto oom;
+		}
+	}
+
+	buffer[count] = NULL;
+	if (num_elements != NULL)
+	{
+		*num_elements = count;
+	}
+	return buffer;
+
+oom:
+	g_debug ("%s %d : error allocating memory\n", __FILE__, __LINE__);
+	return NULL;
+
+}
+
+static gboolean
+do_command (DBusConnection *connection)
+{
+	DBusMessage *reply;
+
+	if (do_quit)
+	{
+		reply = screensaver_send_message_void (connection, "Quit", FALSE);
+		goto done;
+	}
+
+	if (do_query)
+	{
+		DBusMessageIter iter;
+		DBusMessageIter array;
+		dbus_bool_t     v;
+
+		reply = screensaver_send_message_void (connection, "GetActive", TRUE);
+		if (! reply)
+		{
+			g_message ("Did not receive a reply from the screensaver.");
+			goto done;
+		}
+
+		dbus_message_iter_init (reply, &iter);
+		dbus_message_iter_get_basic (&iter, &v);
+		g_print (_("The screensaver is %s\n"), v ? _("active") : _("inactive"));
+
+		dbus_message_unref (reply);
+
+		reply = screensaver_send_message_void (connection, "GetInhibitors", TRUE);
+		if (! reply)
+		{
+			g_message ("Did not receive a reply from screensaver.");
+			goto done;
+		}
+
+		dbus_message_iter_init (reply, &iter);
+		dbus_message_iter_recurse (&iter, &array);
+
+		if (dbus_message_iter_get_arg_type (&array) == DBUS_TYPE_INVALID)
+		{
+			g_print (_("The screensaver is not inhibited\n"));
+		}
+		else
+		{
+			char **inhibitors;
+			int    i;
+			int    num;
+
+			g_print (_("The screensaver is being inhibited by:\n"));
+			inhibitors = get_string_from_iter (&array, &num);
+			for (i = 0; i < num; i++)
+			{
+				g_print ("\t%s\n", inhibitors[i]);
+			}
+			g_strfreev (inhibitors);
+		}
+
+		dbus_message_unref (reply);
+	}
+
+	if (do_time)
+	{
+		DBusMessageIter iter;
+		dbus_bool_t     v;
+		dbus_int32_t    t;
+
+		reply = screensaver_send_message_void (connection, "GetActive", TRUE);
+		if (! reply)
+		{
+			g_message ("Did not receive a reply from the screensaver.");
+			goto done;
+		}
+
+		dbus_message_iter_init (reply, &iter);
+		dbus_message_iter_get_basic (&iter, &v);
+		dbus_message_unref (reply);
+
+		if (v)
+		{
+
+			reply = screensaver_send_message_void (connection, "GetActiveTime", TRUE);
+			dbus_message_iter_init (reply, &iter);
+			dbus_message_iter_get_basic (&iter, &t);
+			g_print (_("The screensaver has been active for %d seconds.\n"), t);
+
+			dbus_message_unref (reply);
+		}
+		else
+		{
+			g_print (_("The screensaver is not currently active.\n"));
+		}
+	}
+
+	if (do_lock)
+	{
+		reply = screensaver_send_message_void (connection, "Lock", FALSE);
+	}
+
+	if (do_cycle)
+	{
+		reply = screensaver_send_message_void (connection, "Cycle", FALSE);
+	}
+
+	if (do_poke)
+	{
+		reply = screensaver_send_message_void (connection, "SimulateUserActivity", FALSE);
+	}
+
+	if (do_activate)
+	{
+		reply = screensaver_send_message_bool (connection, "SetActive", TRUE);
+		if (! reply)
+		{
+			g_message ("Did not receive a reply from the screensaver.");
+			goto done;
+		}
+		dbus_message_unref (reply);
+	}
+
+	if (do_deactivate)
+	{
+		reply = screensaver_send_message_bool (connection, "SetActive", FALSE);
+		if (! reply)
+		{
+			g_message ("Did not receive a reply from the screensaver.");
+			goto done;
+		}
+		dbus_message_unref (reply);
+	}
+
+	if (do_inhibit)
+	{
+		reply = screensaver_send_message_inhibit (connection,
+		        inhibit_application ? inhibit_application : "Unknown",
+		        inhibit_reason ? inhibit_reason : "Unknown");
+		if (! reply)
+		{
+			g_message ("Did not receive a reply from the screensaver.");
+			goto done;
+		}
+		dbus_message_unref (reply);
+
+		return FALSE;
+	}
+
+done:
+	g_main_loop_quit (loop);
+
+	return FALSE;
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+	DBusConnection *connection;
+	DBusError       dbus_error;
+	GOptionContext *context;
+	gboolean        retval;
+	GError         *error = NULL;
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	g_type_init ();
+
+	g_set_prgname (argv[0]);
+
+	if (setlocale (LC_ALL, "") == NULL)
+		g_warning ("Locale not understood by C library, internationalization will not work\n");
+
+	context = g_option_context_new (NULL);
+	g_option_context_add_main_entries (context, entries, NULL);
+	retval = g_option_context_parse (context, &argc, &argv, &error);
+
+	g_option_context_free (context);
+
+	if (! retval)
+	{
+		g_warning ("%s", error->message);
+		g_error_free (error);
+		exit (1);
+	}
+
+	if (do_version)
+	{
+		g_print ("%s %s\n", argv [0], VERSION);
+		exit (1);
+	}
+
+	dbus_error_init (&dbus_error);
+	connection = dbus_bus_get (DBUS_BUS_SESSION, &dbus_error);
+	if (! connection)
+	{
+		g_message ("Failed to connect to the D-BUS daemon: %s", dbus_error.message);
+		dbus_error_free (&dbus_error);
+		exit (1);
+	}
+
+	dbus_connection_setup_with_g_main (connection, NULL);
+
+	if (! screensaver_is_running (connection))
+	{
+		g_message ("Screensaver is not running!");
+		exit (1);
+	}
+
+	g_idle_add ((GSourceFunc)do_command, connection);
+
+	loop = g_main_loop_new (NULL, FALSE);
+	g_main_loop_run (loop);
+
+	return 0;
+}
diff --git a/src/mate-screensaver-command.c.orig b/src/mate-screensaver-command.c.orig
new file mode 100644
index 0000000..441f81e
--- /dev/null
+++ b/src/mate-screensaver-command.c.orig
@@ -0,0 +1,551 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <locale.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#define DBUS_API_SUBJECT_TO_CHANGE
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+#define GS_SERVICE   "org.mate.ScreenSaver"
+#define GS_PATH      "/org/mate/ScreenSaver"
+#define GS_INTERFACE "org.mate.ScreenSaver"
+
+/* this is for dbus < 0.3 */
+#if ((DBUS_VERSION_MAJOR == 0) && (DBUS_VERSION_MINOR < 30))
+#define dbus_bus_name_has_owner(connection, name, err) dbus_bus_service_exists(connection, name, err)
+#endif
+
+static gboolean do_quit       = FALSE;
+static gboolean do_lock       = FALSE;
+static gboolean do_cycle      = FALSE;
+static gboolean do_activate   = FALSE;
+static gboolean do_deactivate = FALSE;
+static gboolean do_version    = FALSE;
+static gboolean do_poke       = FALSE;
+static gboolean do_inhibit    = FALSE;
+
+static gboolean do_query      = FALSE;
+static gboolean do_time       = FALSE;
+
+static char    *inhibit_reason      = NULL;
+static char    *inhibit_application = NULL;
+
+static GOptionEntry entries [] =
+{
+    {
+        "exit", 0, 0, G_OPTION_ARG_NONE, &do_quit,
+        N_("Causes the screensaver to exit gracefully"), NULL
+    },
+    {
+        "query", 'q', 0, G_OPTION_ARG_NONE, &do_query,
+        N_("Query the state of the screensaver"), NULL
+    },
+    {
+        "time", 't', 0, G_OPTION_ARG_NONE, &do_time,
+        N_("Query the length of time the screensaver has been active"), NULL
+    },
+    {
+        "lock", 'l', 0, G_OPTION_ARG_NONE, &do_lock,
+        N_("Tells the running screensaver process to lock the screen immediately"), NULL
+    },
+    {
+        "cycle", 'c', 0, G_OPTION_ARG_NONE, &do_cycle,
+        N_("If the screensaver is active then switch to another graphics demo"), NULL
+    },
+    {
+        "activate", 'a', 0, G_OPTION_ARG_NONE, &do_activate,
+        N_("Turn the screensaver on (blank the screen)"), NULL
+    },
+    {
+        "deactivate", 'd', 0, G_OPTION_ARG_NONE, &do_deactivate,
+        N_("If the screensaver is active then deactivate it (un-blank the screen)"), NULL
+    },
+    {
+        "poke", 'p', 0, G_OPTION_ARG_NONE, &do_poke,
+        N_("Poke the running screensaver to simulate user activity"), NULL
+    },
+    {
+        "inhibit", 'i', 0, G_OPTION_ARG_NONE, &do_inhibit,
+        N_("Inhibit the screensaver from activating.  Command blocks while inhibit is active."), NULL
+    },
+    {
+        "application-name", 'n', 0, G_OPTION_ARG_STRING, &inhibit_application,
+        N_("The calling application that is inhibiting the screensaver"), NULL
+    },
+    {
+        "reason", 'r', 0, G_OPTION_ARG_STRING, &inhibit_reason,
+        N_("The reason for inhibiting the screensaver"), NULL
+    },
+    {
+        "version", 'V', 0, G_OPTION_ARG_NONE, &do_version,
+        N_("Version of this application"), NULL
+    },
+    { NULL }
+};
+
+static GMainLoop *loop = NULL;
+
+static gboolean
+screensaver_is_running (DBusConnection *connection)
+{
+    DBusError               error;
+    gboolean                exists;
+
+    g_return_val_if_fail (connection != NULL, FALSE);
+
+    dbus_error_init (&error);
+    exists = dbus_bus_name_has_owner (connection, GS_SERVICE, &error);
+    if (dbus_error_is_set (&error))
+        dbus_error_free (&error);
+
+    return exists;
+}
+
+static DBusMessage *
+screensaver_send_message_inhibit (DBusConnection *connection,
+                                  const char     *application,
+                                  const char     *reason)
+{
+    DBusMessage    *message;
+    DBusMessage    *reply;
+    DBusError       error;
+    DBusMessageIter iter;
+
+    g_return_val_if_fail (connection != NULL, NULL);
+
+    dbus_error_init (&error);
+
+    message = dbus_message_new_method_call (GS_SERVICE, GS_PATH, GS_INTERFACE, "Inhibit");
+    if (message == NULL)
+    {
+        g_warning ("Couldn't allocate the dbus message");
+        return NULL;
+    }
+
+    dbus_message_iter_init_append (message, &iter);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &application);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &reason);
+
+    reply = dbus_connection_send_with_reply_and_block (connection,
+            message,
+            -1, &error);
+    if (dbus_error_is_set (&error))
+    {
+        g_warning ("%s raised:\n %s\n\n", error.name, error.message);
+        reply = NULL;
+    }
+
+    dbus_connection_flush (connection);
+
+    dbus_message_unref (message);
+    dbus_error_free (&error);
+
+    return reply;
+}
+
+static DBusMessage *
+screensaver_send_message_bool (DBusConnection *connection,
+                               const char     *name,
+                               gboolean        value)
+{
+    DBusMessage    *message;
+    DBusMessage    *reply;
+    DBusError       error;
+    DBusMessageIter iter;
+
+    g_return_val_if_fail (connection != NULL, NULL);
+    g_return_val_if_fail (name != NULL, NULL);
+
+    dbus_error_init (&error);
+
+    message = dbus_message_new_method_call (GS_SERVICE, GS_PATH, GS_INTERFACE, name);
+    if (message == NULL)
+    {
+        g_warning ("Couldn't allocate the dbus message");
+        return NULL;
+    }
+
+    dbus_message_iter_init_append (message, &iter);
+    dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &value);
+
+    reply = dbus_connection_send_with_reply_and_block (connection,
+            message,
+            -1, &error);
+    if (dbus_error_is_set (&error))
+    {
+        g_warning ("%s raised:\n %s\n\n", error.name, error.message);
+        reply = NULL;
+    }
+
+    dbus_connection_flush (connection);
+
+    dbus_message_unref (message);
+    dbus_error_free (&error);
+
+    return reply;
+}
+
+static DBusMessage *
+screensaver_send_message_void (DBusConnection *connection,
+                               const char     *name,
+                               gboolean        expect_reply)
+{
+    DBusMessage *message;
+    DBusMessage *reply;
+    DBusError    error;
+
+    g_return_val_if_fail (connection != NULL, NULL);
+    g_return_val_if_fail (name != NULL, NULL);
+
+    dbus_error_init (&error);
+
+    message = dbus_message_new_method_call (GS_SERVICE, GS_PATH, GS_INTERFACE, name);
+    if (message == NULL)
+    {
+        g_warning ("Couldn't allocate the dbus message");
+        return NULL;
+    }
+
+    if (! expect_reply)
+    {
+        if (!dbus_connection_send (connection, message, NULL))
+            g_warning ("could not send message");
+        reply = NULL;
+    }
+    else
+    {
+        reply = dbus_connection_send_with_reply_and_block (connection,
+                message,
+                -1, &error);
+        if (dbus_error_is_set (&error))
+        {
+            g_warning ("%s raised:\n %s\n\n", error.name, error.message);
+            reply = NULL;
+        }
+    }
+    dbus_connection_flush (connection);
+
+    dbus_message_unref (message);
+    dbus_error_free (&error);
+
+    return reply;
+}
+
+static char **
+get_string_from_iter (DBusMessageIter *iter,
+                      int             *num_elements)
+{
+    int    count;
+    char **buffer;
+
+    if (num_elements != NULL)
+    {
+        *num_elements = 0;
+    }
+
+    count = 0;
+    buffer = (char **)malloc (sizeof (char *) * 8);
+
+    if (buffer == NULL)
+    {
+        goto oom;
+    }
+
+    buffer[0] = NULL;
+    while (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_STRING)
+    {
+        const char *value;
+        char       *str;
+
+        if ((count % 8) == 0 && count != 0)
+        {
+            buffer = realloc (buffer, sizeof (char *) * (count + 8));
+            if (buffer == NULL)
+            {
+                goto oom;
+            }
+        }
+
+        dbus_message_iter_get_basic (iter, &value);
+        str = strdup (value);
+        if (str == NULL)
+        {
+            goto oom;
+        }
+
+        buffer[count] = str;
+
+        dbus_message_iter_next (iter);
+        count++;
+    }
+
+    if ((count % 8) == 0)
+    {
+        buffer = realloc (buffer, sizeof (char *) * (count + 1));
+        if (buffer == NULL)
+        {
+            goto oom;
+        }
+    }
+
+    buffer[count] = NULL;
+    if (num_elements != NULL)
+    {
+        *num_elements = count;
+    }
+    return buffer;
+
+oom:
+    g_debug ("%s %d : error allocating memory\n", __FILE__, __LINE__);
+    return NULL;
+
+}
+
+static gboolean
+do_command (DBusConnection *connection)
+{
+    DBusMessage *reply;
+
+    if (do_quit)
+    {
+        reply = screensaver_send_message_void (connection, "Quit", FALSE);
+        goto done;
+    }
+
+    if (do_query)
+    {
+        DBusMessageIter iter;
+        DBusMessageIter array;
+        dbus_bool_t     v;
+
+        reply = screensaver_send_message_void (connection, "GetActive", TRUE);
+        if (! reply)
+        {
+            g_message ("Did not receive a reply from the screensaver.");
+            goto done;
+        }
+
+        dbus_message_iter_init (reply, &iter);
+        dbus_message_iter_get_basic (&iter, &v);
+        g_print (_("The screensaver is %s\n"), v ? _("active") : _("inactive"));
+
+        dbus_message_unref (reply);
+
+        reply = screensaver_send_message_void (connection, "GetInhibitors", TRUE);
+        if (! reply)
+        {
+            g_message ("Did not receive a reply from screensaver.");
+            goto done;
+        }
+
+        dbus_message_iter_init (reply, &iter);
+        dbus_message_iter_recurse (&iter, &array);
+
+        if (dbus_message_iter_get_arg_type (&array) == DBUS_TYPE_INVALID)
+        {
+            g_print (_("The screensaver is not inhibited\n"));
+        }
+        else
+        {
+            char **inhibitors;
+            int    i;
+            int    num;
+
+            g_print (_("The screensaver is being inhibited by:\n"));
+            inhibitors = get_string_from_iter (&array, &num);
+            for (i = 0; i < num; i++)
+            {
+                g_print ("\t%s\n", inhibitors[i]);
+            }
+            g_strfreev (inhibitors);
+        }
+
+        dbus_message_unref (reply);
+    }
+
+    if (do_time)
+    {
+        DBusMessageIter iter;
+        dbus_bool_t     v;
+        dbus_int32_t    t;
+
+        reply = screensaver_send_message_void (connection, "GetActive", TRUE);
+        if (! reply)
+        {
+            g_message ("Did not receive a reply from the screensaver.");
+            goto done;
+        }
+
+        dbus_message_iter_init (reply, &iter);
+        dbus_message_iter_get_basic (&iter, &v);
+        dbus_message_unref (reply);
+
+        if (v)
+        {
+
+            reply = screensaver_send_message_void (connection, "GetActiveTime", TRUE);
+            dbus_message_iter_init (reply, &iter);
+            dbus_message_iter_get_basic (&iter, &t);
+            g_print (_("The screensaver has been active for %d seconds.\n"), t);
+
+            dbus_message_unref (reply);
+        }
+        else
+        {
+            g_print (_("The screensaver is not currently active.\n"));
+        }
+    }
+
+    if (do_lock)
+    {
+        reply = screensaver_send_message_void (connection, "Lock", FALSE);
+    }
+
+    if (do_cycle)
+    {
+        reply = screensaver_send_message_void (connection, "Cycle", FALSE);
+    }
+
+    if (do_poke)
+    {
+        reply = screensaver_send_message_void (connection, "SimulateUserActivity", FALSE);
+    }
+
+    if (do_activate)
+    {
+        reply = screensaver_send_message_bool (connection, "SetActive", TRUE);
+        if (! reply)
+        {
+            g_message ("Did not receive a reply from the screensaver.");
+            goto done;
+        }
+        dbus_message_unref (reply);
+    }
+
+    if (do_deactivate)
+    {
+        reply = screensaver_send_message_bool (connection, "SetActive", FALSE);
+        if (! reply)
+        {
+            g_message ("Did not receive a reply from the screensaver.");
+            goto done;
+        }
+        dbus_message_unref (reply);
+    }
+
+    if (do_inhibit)
+    {
+        reply = screensaver_send_message_inhibit (connection,
+                inhibit_application ? inhibit_application : "Unknown",
+                inhibit_reason ? inhibit_reason : "Unknown");
+        if (! reply)
+        {
+            g_message ("Did not receive a reply from the screensaver.");
+            goto done;
+        }
+        dbus_message_unref (reply);
+
+        return FALSE;
+    }
+
+done:
+    g_main_loop_quit (loop);
+
+    return FALSE;
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+    DBusConnection *connection;
+    DBusError       dbus_error;
+    GOptionContext *context;
+    gboolean        retval;
+    GError         *error = NULL;
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    g_type_init ();
+
+    g_set_prgname (argv[0]);
+
+    if (setlocale (LC_ALL, "") == NULL)
+        g_warning ("Locale not understood by C library, internationalization will not work\n");
+
+    context = g_option_context_new (NULL);
+    g_option_context_add_main_entries (context, entries, NULL);
+    retval = g_option_context_parse (context, &argc, &argv, &error);
+
+    g_option_context_free (context);
+
+    if (! retval)
+    {
+        g_warning ("%s", error->message);
+        g_error_free (error);
+        exit (1);
+    }
+
+    if (do_version)
+    {
+        g_print ("%s %s\n", argv [0], VERSION);
+        exit (1);
+    }
+
+    dbus_error_init (&dbus_error);
+    connection = dbus_bus_get (DBUS_BUS_SESSION, &dbus_error);
+    if (! connection)
+    {
+        g_message ("Failed to connect to the D-BUS daemon: %s", dbus_error.message);
+        dbus_error_free (&dbus_error);
+        exit (1);
+    }
+
+    dbus_connection_setup_with_g_main (connection, NULL);
+
+    if (! screensaver_is_running (connection))
+    {
+        g_message ("Screensaver is not running!");
+        exit (1);
+    }
+
+    g_idle_add ((GSourceFunc)do_command, connection);
+
+    loop = g_main_loop_new (NULL, FALSE);
+    g_main_loop_run (loop);
+
+    return 0;
+}
diff --git a/src/mate-screensaver-dialog.c b/src/mate-screensaver-dialog.c
new file mode 100644
index 0000000..d698159
--- /dev/null
+++ b/src/mate-screensaver-dialog.c
@@ -0,0 +1,665 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <signal.h>
+
+#include <glib/gi18n.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "gs-lock-plug.h"
+
+#include "gs-auth.h"
+#include "setuid.h"
+
+#include "gs-debug.h"
+
+#define MAX_FAILURES 5
+
+static gboolean verbose        = FALSE;
+static gboolean show_version   = FALSE;
+static gboolean enable_logout  = FALSE;
+static gboolean enable_switch  = FALSE;
+static char    *logout_command = NULL;
+static char    *status_message   = NULL;
+static char    *away_message     = NULL;
+
+static GOptionEntry entries [] =
+{
+	{
+		"verbose", 0, 0, G_OPTION_ARG_NONE, &verbose,
+		N_("Show debugging output"), NULL
+	},
+	{
+		"version", 0, 0, G_OPTION_ARG_NONE, &show_version,
+		N_("Version of this application"), NULL
+	},
+	{
+		"enable-logout", 0, 0, G_OPTION_ARG_NONE, &enable_logout,
+		N_("Show the logout button"), NULL
+	},
+	{
+		"logout-command", 0, 0, G_OPTION_ARG_STRING, &logout_command,
+		N_("Command to invoke from the logout button"), NULL
+	},
+	{
+		"enable-switch", 0, 0, G_OPTION_ARG_NONE, &enable_switch,
+		N_("Show the switch user button"), NULL
+	},
+	{
+		"status-message", 0, 0, G_OPTION_ARG_STRING, &status_message,
+		N_("Message to show in the dialog"), N_("MESSAGE")
+	},
+	{
+		"away-message", 0, 0, G_OPTION_ARG_STRING, &away_message,
+		N_("Not used"), N_("MESSAGE")
+	},
+	{ NULL }
+};
+
+static char *
+get_id_string (GtkWidget *widget)
+{
+	char *id = NULL;
+
+	g_return_val_if_fail (widget != NULL, NULL);
+	g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+
+	id = g_strdup_printf ("%" G_GUINT32_FORMAT,
+	                      (guint32) GDK_WINDOW_XID (widget->window));
+	return id;
+}
+
+static gboolean
+print_id (GtkWidget *widget)
+{
+	char *id;
+
+	gs_profile_start (NULL);
+
+	id = get_id_string (widget);
+	printf ("WINDOW ID=%s\n", id);
+	fflush (stdout);
+
+	gs_profile_end (NULL);
+
+	g_free (id);
+
+	return FALSE;
+}
+
+static void
+response_cancel (void)
+{
+	printf ("RESPONSE=CANCEL\n");
+	fflush (stdout);
+}
+
+static void
+response_ok (void)
+{
+	printf ("RESPONSE=OK\n");
+	fflush (stdout);
+}
+
+static gboolean
+quit_response_ok (void)
+{
+	response_ok ();
+	gtk_main_quit ();
+	return FALSE;
+}
+
+static gboolean
+quit_response_cancel (void)
+{
+	response_cancel ();
+	gtk_main_quit ();
+	return FALSE;
+}
+
+static void
+response_lock_init_failed (void)
+{
+	/* if we fail to lock then we should drop the dialog */
+	response_ok ();
+}
+
+static char *
+request_response (GSLockPlug *plug,
+                  const char *prompt,
+                  gboolean    visible)
+{
+	int   response;
+	char *text;
+
+	gs_lock_plug_set_sensitive (plug, TRUE);
+	gs_lock_plug_enable_prompt (plug, prompt, visible);
+	response = gs_lock_plug_run (plug);
+
+	gs_debug ("got response: %d", response);
+
+	text = NULL;
+	if (response == GS_LOCK_PLUG_RESPONSE_OK)
+	{
+		gs_lock_plug_get_text (plug, &text);
+	}
+	gs_lock_plug_disable_prompt (plug);
+
+	return text;
+}
+
+/* Adapted from MDM2 daemon/verify-pam.c on 2006-06-13 */
+static const char *
+maybe_translate_message (const char *msg)
+{
+	char              *s;
+	const char        *ret;
+	static GHashTable *hash = NULL;
+
+	if (hash == NULL)
+	{
+		/* Here we come with some fairly standard messages so that
+		   we have as much as possible translated.  Should really be
+		   translated in pam I suppose.  This way we can "change"
+		   some of these messages to be more sane. */
+		hash = g_hash_table_new (g_str_hash, g_str_equal);
+		/* login: is whacked always translate to Username: */
+		g_hash_table_insert (hash, "login:", _("Username:"));
+		g_hash_table_insert (hash, "Username:", _("Username:"));
+		g_hash_table_insert (hash, "username:", _("Username:"));
+		g_hash_table_insert (hash, "Password:", _("Password:"));
+		g_hash_table_insert (hash, "password:", _("Password:"));
+		g_hash_table_insert (hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
+		g_hash_table_insert (hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
+		g_hash_table_insert (hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
+		g_hash_table_insert (hash, "No password supplied", _("No password supplied"));
+		g_hash_table_insert (hash, "Password unchanged", _("Password unchanged"));
+		g_hash_table_insert (hash, "Can not get username", _("Can not get username"));
+		g_hash_table_insert (hash, "Retype new UNIX password:", _("Retype new UNIX password:"));
+		g_hash_table_insert (hash, "Enter new UNIX password:", _("Enter new UNIX password:"));
+		g_hash_table_insert (hash, "(current) UNIX password:", _("(current) UNIX password:"));
+		g_hash_table_insert (hash, "Error while changing NIS password.", _("Error while changing NIS password."));
+		g_hash_table_insert (hash, "You must choose a longer password", _("You must choose a longer password"));
+		g_hash_table_insert (hash, "Password has been already used. Choose another.", _("Password has been already used. Choose another."));
+		g_hash_table_insert (hash, "You must wait longer to change your password", _("You must wait longer to change your password"));
+		g_hash_table_insert (hash, "Sorry, passwords do not match", _("Sorry, passwords do not match"));
+		/* FIXME: what about messages which have some variables in them, perhaps try to do those as well */
+	}
+
+	s = g_strstrip (g_strdup (msg));
+	ret = g_hash_table_lookup (hash, s);
+	g_free (s);
+
+	if (ret != NULL)
+	{
+		return ret;
+	}
+	else
+	{
+		return msg;
+	}
+}
+
+static gboolean
+auth_message_handler (GSAuthMessageStyle style,
+                      const char        *msg,
+                      char             **response,
+                      gpointer           data)
+{
+	gboolean    ret;
+	GSLockPlug *plug;
+	const char *message;
+
+	plug = GS_LOCK_PLUG (data);
+
+	gs_profile_start (NULL);
+	gs_debug ("Got message style %d: '%s'", style, msg);
+
+	gtk_widget_show (GTK_WIDGET (plug));
+	gs_lock_plug_set_ready (plug);
+
+	ret = TRUE;
+	*response = NULL;
+	message = maybe_translate_message (msg);
+
+	switch (style)
+	{
+	case GS_AUTH_MESSAGE_PROMPT_ECHO_ON:
+		if (msg != NULL)
+		{
+			char *resp;
+			resp = request_response (plug, message, TRUE);
+			*response = resp;
+		}
+		break;
+	case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF:
+		if (msg != NULL)
+		{
+			char *resp;
+			resp = request_response (plug, message, FALSE);
+			*response = resp;
+		}
+		break;
+	case GS_AUTH_MESSAGE_ERROR_MSG:
+		gs_lock_plug_show_message (plug, message);
+		break;
+	case GS_AUTH_MESSAGE_TEXT_INFO:
+		gs_lock_plug_show_message (plug, message);
+		break;
+	default:
+		g_assert_not_reached ();
+	}
+
+	if (*response == NULL)
+	{
+		gs_debug ("Got no response");
+		ret = FALSE;
+	}
+	else
+	{
+		gs_lock_plug_show_message (plug, _("Checking..."));
+		gs_lock_plug_set_sensitive (plug, FALSE);
+	}
+
+	/* we may have pending events that should be processed before continuing back into PAM */
+	while (gtk_events_pending ())
+	{
+		gtk_main_iteration ();
+	}
+
+	gs_lock_plug_set_busy (plug);
+	gs_profile_end (NULL);
+
+	return ret;
+}
+
+static gboolean
+reset_idle_cb (GSLockPlug *plug)
+{
+	gs_lock_plug_set_sensitive (plug, TRUE);
+	gs_lock_plug_show_message (plug, NULL);
+
+	return FALSE;
+}
+
+static gboolean
+do_auth_check (GSLockPlug *plug)
+{
+	GError *error;
+	gboolean res;
+
+	error = NULL;
+
+	gs_lock_plug_disable_prompt (plug);
+	gs_lock_plug_set_busy (plug);
+	res = gs_auth_verify_user (g_get_user_name (), g_getenv ("DISPLAY"), auth_message_handler, plug, &error);
+
+	gs_debug ("Verify user returned: %s", res ? "TRUE" : "FALSE");
+	if (! res)
+	{
+		if (error != NULL)
+		{
+			gs_debug ("Verify user returned error: %s", error->message);
+			gs_lock_plug_show_message (plug, error->message);
+		}
+		else
+		{
+			gs_lock_plug_show_message (plug, _("Authentication failed."));
+		}
+
+		printf ("NOTICE=AUTH FAILED\n");
+		fflush (stdout);
+
+		if (error != NULL)
+		{
+			g_error_free (error);
+		}
+	}
+
+	return res;
+}
+
+static void
+response_cb (GSLockPlug *plug,
+             gint        response_id)
+{
+	if ((response_id == GS_LOCK_PLUG_RESPONSE_CANCEL) ||
+	        (response_id == GTK_RESPONSE_DELETE_EVENT))
+	{
+		quit_response_cancel ();
+	}
+}
+
+static gboolean
+response_request_quit (void)
+{
+	printf ("REQUEST QUIT\n");
+	fflush (stdout);
+	return FALSE;
+}
+
+static gboolean
+quit_timeout_cb (gpointer data)
+{
+	gtk_main_quit ();
+	return FALSE;
+}
+
+static gboolean
+auth_check_idle (GSLockPlug *plug)
+{
+	gboolean     res;
+	gboolean     again;
+	static guint loop_counter = 0;
+
+	again = TRUE;
+	res = do_auth_check (plug);
+
+	if (res)
+	{
+		again = FALSE;
+		g_idle_add ((GSourceFunc)quit_response_ok, NULL);
+	}
+	else
+	{
+		loop_counter++;
+
+		if (loop_counter < MAX_FAILURES)
+		{
+			gs_debug ("Authentication failed, retrying (%u)", loop_counter);
+			g_timeout_add (3000, (GSourceFunc)reset_idle_cb, plug);
+		}
+		else
+		{
+			gs_debug ("Authentication failed, quitting (max failures)");
+			again = FALSE;
+			/* Don't quit immediately, but rather request that mate-screensaver
+			 * terminates us after it has finished the dialog shake. Time out
+			 * after 5 seconds and quit anyway if this doesn't happen though */
+			g_idle_add ((GSourceFunc)response_request_quit, NULL);
+			g_timeout_add (5000, (GSourceFunc)quit_timeout_cb, NULL);
+		}
+	}
+
+	return again;
+}
+
+static void
+show_cb (GtkWidget *widget,
+         gpointer   data)
+{
+	print_id (widget);
+}
+
+static gboolean
+popup_dialog_idle (void)
+{
+	GtkWidget *widget;
+
+	gs_profile_start (NULL);
+
+	widget = gs_lock_plug_new ();
+
+	if (enable_logout)
+	{
+		g_object_set (widget, "logout-enabled", TRUE, NULL);
+	}
+
+	if (logout_command)
+	{
+		g_object_set (widget, "logout-command", logout_command, NULL);
+	}
+
+	if (enable_switch)
+	{
+		g_object_set (widget, "switch-enabled", TRUE, NULL);
+	}
+
+	if (status_message)
+	{
+		g_object_set (widget, "status-message", status_message, NULL);
+	}
+
+	g_signal_connect (GS_LOCK_PLUG (widget), "response", G_CALLBACK (response_cb), NULL);
+	g_signal_connect (widget, "show", G_CALLBACK (show_cb), NULL);
+
+	gtk_widget_realize (widget);
+
+	g_idle_add ((GSourceFunc)auth_check_idle, widget);
+
+	gs_profile_end (NULL);
+
+	return FALSE;
+}
+
+
+/*
+ * Copyright (c) 1991-2004 Jamie Zawinski <jwz at jwz.org>
+ * Copyright (c) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * Initializations that potentially take place as a priveleged user:
+   If the executable is setuid root, then these initializations
+   are run as root, before discarding privileges.
+*/
+static gboolean
+privileged_initialization (int     *argc,
+                           char   **argv,
+                           gboolean verbose)
+{
+	gboolean ret;
+	char    *nolock_reason;
+	char    *orig_uid;
+	char    *uid_message;
+
+	gs_profile_start (NULL);
+
+#ifndef NO_LOCKING
+	/* before hack_uid () for proper permissions */
+	gs_auth_priv_init ();
+#endif /* NO_LOCKING */
+
+	ret = hack_uid (&nolock_reason,
+	                &orig_uid,
+	                &uid_message);
+
+	if (nolock_reason)
+	{
+		g_debug ("Locking disabled: %s", nolock_reason);
+	}
+
+	if (uid_message && verbose)
+	{
+		g_print ("Modified UID: %s", uid_message);
+	}
+
+	g_free (nolock_reason);
+	g_free (orig_uid);
+	g_free (uid_message);
+
+	gs_profile_end (NULL);
+
+	return ret;
+}
+
+
+/*
+ * Copyright (c) 1991-2004 Jamie Zawinski <jwz at jwz.org>
+ * Copyright (c) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * Figure out what locking mechanisms are supported.
+ */
+static gboolean
+lock_initialization (int     *argc,
+                     char   **argv,
+                     char   **nolock_reason,
+                     gboolean verbose)
+{
+	if (nolock_reason != NULL)
+	{
+		*nolock_reason = NULL;
+	}
+
+#ifdef NO_LOCKING
+	if (nolock_reason != NULL)
+	{
+		*nolock_reason = g_strdup ("not compiled with locking support");
+	}
+
+	return FALSE;
+#else /* !NO_LOCKING */
+
+	/* Finish initializing locking, now that we're out of privileged code. */
+	if (! gs_auth_init ())
+	{
+		if (nolock_reason != NULL)
+		{
+			*nolock_reason = g_strdup ("error getting password");
+		}
+
+		return FALSE;
+	}
+
+	/* If locking is currently enabled, but the environment indicates that
+	   we have been launched as MDM's "Background" program, then disable
+	   locking just in case.
+	*/
+	if (getenv ("RUNNING_UNDER_MDM"))
+	{
+		if (nolock_reason != NULL)
+		{
+			*nolock_reason = g_strdup ("running under MDM");
+		}
+
+		return FALSE;
+	}
+
+	/* If the server is XDarwin (MacOS X) then disable locking.
+	   (X grabs only affect X programs, so you can use Command-Tab
+	   to bring any other Mac program to the front, e.g., Terminal.)
+	*/
+	{
+		gboolean macos = FALSE;
+
+#ifdef __APPLE__
+		/* Disable locking if *running* on Apple hardware, since we have no
+		   reliable way to determine whether the server is running on MacOS.
+		   Hopefully __APPLE__ means "MacOS" and not "Linux on Mac hardware"
+		   but I'm not really sure about that.
+		*/
+		macos = TRUE;
+#endif
+
+		if (macos)
+		{
+			if (nolock_reason != NULL)
+			{
+				*nolock_reason = g_strdup ("Cannot lock securely on MacOS X");
+			}
+
+			return FALSE;
+		}
+	}
+
+#endif /* NO_LOCKING */
+
+	return TRUE;
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+	GError *error = NULL;
+	char   *nolock_reason = NULL;
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	if (! g_thread_supported ())
+	{
+		g_thread_init (NULL);
+	}
+
+	g_type_init ();
+
+	gs_profile_start (NULL);
+
+	if (! privileged_initialization (&argc, argv, verbose))
+	{
+		response_lock_init_failed ();
+		exit (1);
+	}
+
+	error = NULL;
+	if (! gtk_init_with_args (&argc, &argv, NULL, entries, NULL, &error))
+	{
+		if (error != NULL)
+		{
+			fprintf (stderr, "%s", error->message);
+			g_error_free (error);
+		}
+		exit (1);
+	}
+
+	if (show_version)
+	{
+		g_print ("%s %s\n", argv [0], VERSION);
+		exit (1);
+	}
+
+	if (! lock_initialization (&argc, argv, &nolock_reason, verbose))
+	{
+		if (nolock_reason != NULL)
+		{
+			g_debug ("Screen locking disabled: %s", nolock_reason);
+			g_free (nolock_reason);
+		}
+		response_lock_init_failed ();
+		exit (1);
+	}
+
+	gs_debug_init (verbose, FALSE);
+
+	g_idle_add ((GSourceFunc)popup_dialog_idle, NULL);
+
+	gtk_main ();
+
+	gs_profile_end (NULL);
+	gs_debug_shutdown ();
+
+	return 0;
+}
diff --git a/src/mate-screensaver-dialog.c.orig b/src/mate-screensaver-dialog.c.orig
new file mode 100644
index 0000000..9c7f143
--- /dev/null
+++ b/src/mate-screensaver-dialog.c.orig
@@ -0,0 +1,665 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <signal.h>
+
+#include <glib/gi18n.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "gs-lock-plug.h"
+
+#include "gs-auth.h"
+#include "setuid.h"
+
+#include "gs-debug.h"
+
+#define MAX_FAILURES 5
+
+static gboolean verbose        = FALSE;
+static gboolean show_version   = FALSE;
+static gboolean enable_logout  = FALSE;
+static gboolean enable_switch  = FALSE;
+static char    *logout_command = NULL;
+static char    *status_message   = NULL;
+static char    *away_message     = NULL;
+
+static GOptionEntry entries [] =
+{
+    {
+        "verbose", 0, 0, G_OPTION_ARG_NONE, &verbose,
+        N_("Show debugging output"), NULL
+    },
+    {
+        "version", 0, 0, G_OPTION_ARG_NONE, &show_version,
+        N_("Version of this application"), NULL
+    },
+    {
+        "enable-logout", 0, 0, G_OPTION_ARG_NONE, &enable_logout,
+        N_("Show the logout button"), NULL
+    },
+    {
+        "logout-command", 0, 0, G_OPTION_ARG_STRING, &logout_command,
+        N_("Command to invoke from the logout button"), NULL
+    },
+    {
+        "enable-switch", 0, 0, G_OPTION_ARG_NONE, &enable_switch,
+        N_("Show the switch user button"), NULL
+    },
+    {
+        "status-message", 0, 0, G_OPTION_ARG_STRING, &status_message,
+        N_("Message to show in the dialog"), N_("MESSAGE")
+    },
+    {
+        "away-message", 0, 0, G_OPTION_ARG_STRING, &away_message,
+        N_("Not used"), N_("MESSAGE")
+    },
+    { NULL }
+};
+
+static char *
+get_id_string (GtkWidget *widget)
+{
+    char *id = NULL;
+
+    g_return_val_if_fail (widget != NULL, NULL);
+    g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+
+    id = g_strdup_printf ("%" G_GUINT32_FORMAT,
+                          (guint32) GDK_WINDOW_XID (widget->window));
+    return id;
+}
+
+static gboolean
+print_id (GtkWidget *widget)
+{
+    char *id;
+
+    gs_profile_start (NULL);
+
+    id = get_id_string (widget);
+    printf ("WINDOW ID=%s\n", id);
+    fflush (stdout);
+
+    gs_profile_end (NULL);
+
+    g_free (id);
+
+    return FALSE;
+}
+
+static void
+response_cancel (void)
+{
+    printf ("RESPONSE=CANCEL\n");
+    fflush (stdout);
+}
+
+static void
+response_ok (void)
+{
+    printf ("RESPONSE=OK\n");
+    fflush (stdout);
+}
+
+static gboolean
+quit_response_ok (void)
+{
+    response_ok ();
+    gtk_main_quit ();
+    return FALSE;
+}
+
+static gboolean
+quit_response_cancel (void)
+{
+    response_cancel ();
+    gtk_main_quit ();
+    return FALSE;
+}
+
+static void
+response_lock_init_failed (void)
+{
+    /* if we fail to lock then we should drop the dialog */
+    response_ok ();
+}
+
+static char *
+request_response (GSLockPlug *plug,
+                  const char *prompt,
+                  gboolean    visible)
+{
+    int   response;
+    char *text;
+
+    gs_lock_plug_set_sensitive (plug, TRUE);
+    gs_lock_plug_enable_prompt (plug, prompt, visible);
+    response = gs_lock_plug_run (plug);
+
+    gs_debug ("got response: %d", response);
+
+    text = NULL;
+    if (response == GS_LOCK_PLUG_RESPONSE_OK)
+    {
+        gs_lock_plug_get_text (plug, &text);
+    }
+    gs_lock_plug_disable_prompt (plug);
+
+    return text;
+}
+
+/* Adapted from MDM2 daemon/verify-pam.c on 2006-06-13 */
+static const char *
+maybe_translate_message (const char *msg)
+{
+    char              *s;
+    const char        *ret;
+    static GHashTable *hash = NULL;
+
+    if (hash == NULL)
+    {
+        /* Here we come with some fairly standard messages so that
+           we have as much as possible translated.  Should really be
+           translated in pam I suppose.  This way we can "change"
+           some of these messages to be more sane. */
+        hash = g_hash_table_new (g_str_hash, g_str_equal);
+        /* login: is whacked always translate to Username: */
+        g_hash_table_insert (hash, "login:", _("Username:"));
+        g_hash_table_insert (hash, "Username:", _("Username:"));
+        g_hash_table_insert (hash, "username:", _("Username:"));
+        g_hash_table_insert (hash, "Password:", _("Password:"));
+        g_hash_table_insert (hash, "password:", _("Password:"));
+        g_hash_table_insert (hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
+        g_hash_table_insert (hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
+        g_hash_table_insert (hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
+        g_hash_table_insert (hash, "No password supplied", _("No password supplied"));
+        g_hash_table_insert (hash, "Password unchanged", _("Password unchanged"));
+        g_hash_table_insert (hash, "Can not get username", _("Can not get username"));
+        g_hash_table_insert (hash, "Retype new UNIX password:", _("Retype new UNIX password:"));
+        g_hash_table_insert (hash, "Enter new UNIX password:", _("Enter new UNIX password:"));
+        g_hash_table_insert (hash, "(current) UNIX password:", _("(current) UNIX password:"));
+        g_hash_table_insert (hash, "Error while changing NIS password.", _("Error while changing NIS password."));
+        g_hash_table_insert (hash, "You must choose a longer password", _("You must choose a longer password"));
+        g_hash_table_insert (hash, "Password has been already used. Choose another.", _("Password has been already used. Choose another."));
+        g_hash_table_insert (hash, "You must wait longer to change your password", _("You must wait longer to change your password"));
+        g_hash_table_insert (hash, "Sorry, passwords do not match", _("Sorry, passwords do not match"));
+        /* FIXME: what about messages which have some variables in them, perhaps try to do those as well */
+    }
+
+    s = g_strstrip (g_strdup (msg));
+    ret = g_hash_table_lookup (hash, s);
+    g_free (s);
+
+    if (ret != NULL)
+    {
+        return ret;
+    }
+    else
+    {
+        return msg;
+    }
+}
+
+static gboolean
+auth_message_handler (GSAuthMessageStyle style,
+                      const char        *msg,
+                      char             **response,
+                      gpointer           data)
+{
+    gboolean    ret;
+    GSLockPlug *plug;
+    const char *message;
+
+    plug = GS_LOCK_PLUG (data);
+
+    gs_profile_start (NULL);
+    gs_debug ("Got message style %d: '%s'", style, msg);
+
+    gtk_widget_show (GTK_WIDGET (plug));
+    gs_lock_plug_set_ready (plug);
+
+    ret = TRUE;
+    *response = NULL;
+    message = maybe_translate_message (msg);
+
+    switch (style)
+    {
+    case GS_AUTH_MESSAGE_PROMPT_ECHO_ON:
+        if (msg != NULL)
+        {
+            char *resp;
+            resp = request_response (plug, message, TRUE);
+            *response = resp;
+        }
+        break;
+    case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF:
+        if (msg != NULL)
+        {
+            char *resp;
+            resp = request_response (plug, message, FALSE);
+            *response = resp;
+        }
+        break;
+    case GS_AUTH_MESSAGE_ERROR_MSG:
+        gs_lock_plug_show_message (plug, message);
+        break;
+    case GS_AUTH_MESSAGE_TEXT_INFO:
+        gs_lock_plug_show_message (plug, message);
+        break;
+    default:
+        g_assert_not_reached ();
+    }
+
+    if (*response == NULL)
+    {
+        gs_debug ("Got no response");
+        ret = FALSE;
+    }
+    else
+    {
+        gs_lock_plug_show_message (plug, _("Checking..."));
+        gs_lock_plug_set_sensitive (plug, FALSE);
+    }
+
+    /* we may have pending events that should be processed before continuing back into PAM */
+    while (gtk_events_pending ())
+    {
+        gtk_main_iteration ();
+    }
+
+    gs_lock_plug_set_busy (plug);
+    gs_profile_end (NULL);
+
+    return ret;
+}
+
+static gboolean
+reset_idle_cb (GSLockPlug *plug)
+{
+    gs_lock_plug_set_sensitive (plug, TRUE);
+    gs_lock_plug_show_message (plug, NULL);
+
+    return FALSE;
+}
+
+static gboolean
+do_auth_check (GSLockPlug *plug)
+{
+    GError *error;
+    gboolean res;
+
+    error = NULL;
+
+    gs_lock_plug_disable_prompt (plug);
+    gs_lock_plug_set_busy (plug);
+    res = gs_auth_verify_user (g_get_user_name (), g_getenv ("DISPLAY"), auth_message_handler, plug, &error);
+
+    gs_debug ("Verify user returned: %s", res ? "TRUE" : "FALSE");
+    if (! res)
+    {
+        if (error != NULL)
+        {
+            gs_debug ("Verify user returned error: %s", error->message);
+            gs_lock_plug_show_message (plug, error->message);
+        }
+        else
+        {
+            gs_lock_plug_show_message (plug, _("Authentication failed."));
+        }
+
+        printf ("NOTICE=AUTH FAILED\n");
+        fflush (stdout);
+
+        if (error != NULL)
+        {
+            g_error_free (error);
+        }
+    }
+
+    return res;
+}
+
+static void
+response_cb (GSLockPlug *plug,
+             gint        response_id)
+{
+    if ((response_id == GS_LOCK_PLUG_RESPONSE_CANCEL) ||
+            (response_id == GTK_RESPONSE_DELETE_EVENT))
+    {
+        quit_response_cancel ();
+    }
+}
+
+static gboolean
+response_request_quit (void)
+{
+    printf ("REQUEST QUIT\n");
+    fflush (stdout);
+    return FALSE;
+}
+
+static gboolean
+quit_timeout_cb (gpointer data)
+{
+    gtk_main_quit ();
+    return FALSE;
+}
+
+static gboolean
+auth_check_idle (GSLockPlug *plug)
+{
+    gboolean     res;
+    gboolean     again;
+    static guint loop_counter = 0;
+
+    again = TRUE;
+    res = do_auth_check (plug);
+
+    if (res)
+    {
+        again = FALSE;
+        g_idle_add ((GSourceFunc)quit_response_ok, NULL);
+    }
+    else
+    {
+        loop_counter++;
+
+        if (loop_counter < MAX_FAILURES)
+        {
+            gs_debug ("Authentication failed, retrying (%u)", loop_counter);
+            g_timeout_add (3000, (GSourceFunc)reset_idle_cb, plug);
+        }
+        else
+        {
+            gs_debug ("Authentication failed, quitting (max failures)");
+            again = FALSE;
+            /* Don't quit immediately, but rather request that mate-screensaver
+             * terminates us after it has finished the dialog shake. Time out
+             * after 5 seconds and quit anyway if this doesn't happen though */
+            g_idle_add ((GSourceFunc)response_request_quit, NULL);
+            g_timeout_add (5000, (GSourceFunc)quit_timeout_cb, NULL);
+        }
+    }
+
+    return again;
+}
+
+static void
+show_cb (GtkWidget *widget,
+         gpointer   data)
+{
+    print_id (widget);
+}
+
+static gboolean
+popup_dialog_idle (void)
+{
+    GtkWidget *widget;
+
+    gs_profile_start (NULL);
+
+    widget = gs_lock_plug_new ();
+
+    if (enable_logout)
+    {
+        g_object_set (widget, "logout-enabled", TRUE, NULL);
+    }
+
+    if (logout_command)
+    {
+        g_object_set (widget, "logout-command", logout_command, NULL);
+    }
+
+    if (enable_switch)
+    {
+        g_object_set (widget, "switch-enabled", TRUE, NULL);
+    }
+
+    if (status_message)
+    {
+        g_object_set (widget, "status-message", status_message, NULL);
+    }
+
+    g_signal_connect (GS_LOCK_PLUG (widget), "response", G_CALLBACK (response_cb), NULL);
+    g_signal_connect (widget, "show", G_CALLBACK (show_cb), NULL);
+
+    gtk_widget_realize (widget);
+
+    g_idle_add ((GSourceFunc)auth_check_idle, widget);
+
+    gs_profile_end (NULL);
+
+    return FALSE;
+}
+
+
+/*
+ * Copyright (c) 1991-2004 Jamie Zawinski <jwz at jwz.org>
+ * Copyright (c) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * Initializations that potentially take place as a priveleged user:
+   If the executable is setuid root, then these initializations
+   are run as root, before discarding privileges.
+*/
+static gboolean
+privileged_initialization (int     *argc,
+                           char   **argv,
+                           gboolean verbose)
+{
+    gboolean ret;
+    char    *nolock_reason;
+    char    *orig_uid;
+    char    *uid_message;
+
+    gs_profile_start (NULL);
+
+#ifndef NO_LOCKING
+    /* before hack_uid () for proper permissions */
+    gs_auth_priv_init ();
+#endif /* NO_LOCKING */
+
+    ret = hack_uid (&nolock_reason,
+                    &orig_uid,
+                    &uid_message);
+
+    if (nolock_reason)
+    {
+        g_debug ("Locking disabled: %s", nolock_reason);
+    }
+
+    if (uid_message && verbose)
+    {
+        g_print ("Modified UID: %s", uid_message);
+    }
+
+    g_free (nolock_reason);
+    g_free (orig_uid);
+    g_free (uid_message);
+
+    gs_profile_end (NULL);
+
+    return ret;
+}
+
+
+/*
+ * Copyright (c) 1991-2004 Jamie Zawinski <jwz at jwz.org>
+ * Copyright (c) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * Figure out what locking mechanisms are supported.
+ */
+static gboolean
+lock_initialization (int     *argc,
+                     char   **argv,
+                     char   **nolock_reason,
+                     gboolean verbose)
+{
+    if (nolock_reason != NULL)
+    {
+        *nolock_reason = NULL;
+    }
+
+#ifdef NO_LOCKING
+    if (nolock_reason != NULL)
+    {
+        *nolock_reason = g_strdup ("not compiled with locking support");
+    }
+
+    return FALSE;
+#else /* !NO_LOCKING */
+
+    /* Finish initializing locking, now that we're out of privileged code. */
+    if (! gs_auth_init ())
+    {
+        if (nolock_reason != NULL)
+        {
+            *nolock_reason = g_strdup ("error getting password");
+        }
+
+        return FALSE;
+    }
+
+    /* If locking is currently enabled, but the environment indicates that
+       we have been launched as MDM's "Background" program, then disable
+       locking just in case.
+    */
+    if (getenv ("RUNNING_UNDER_MDM"))
+    {
+        if (nolock_reason != NULL)
+        {
+            *nolock_reason = g_strdup ("running under MDM");
+        }
+
+        return FALSE;
+    }
+
+    /* If the server is XDarwin (MacOS X) then disable locking.
+       (X grabs only affect X programs, so you can use Command-Tab
+       to bring any other Mac program to the front, e.g., Terminal.)
+    */
+    {
+        gboolean macos = FALSE;
+
+#ifdef __APPLE__
+        /* Disable locking if *running* on Apple hardware, since we have no
+           reliable way to determine whether the server is running on MacOS.
+           Hopefully __APPLE__ means "MacOS" and not "Linux on Mac hardware"
+           but I'm not really sure about that.
+        */
+        macos = TRUE;
+#endif
+
+        if (macos)
+        {
+            if (nolock_reason != NULL)
+            {
+                *nolock_reason = g_strdup ("Cannot lock securely on MacOS X");
+            }
+
+            return FALSE;
+        }
+    }
+
+#endif /* NO_LOCKING */
+
+    return TRUE;
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+    GError *error = NULL;
+    char   *nolock_reason = NULL;
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    if (! g_thread_supported ())
+    {
+        g_thread_init (NULL);
+    }
+
+    g_type_init ();
+
+    gs_profile_start (NULL);
+
+    if (! privileged_initialization (&argc, argv, verbose))
+    {
+        response_lock_init_failed ();
+        exit (1);
+    }
+
+    error = NULL;
+    if (! gtk_init_with_args (&argc, &argv, NULL, entries, NULL, &error))
+    {
+        if (error != NULL)
+        {
+            fprintf (stderr, "%s", error->message);
+            g_error_free (error);
+        }
+        exit (1);
+    }
+
+    if (show_version)
+    {
+        g_print ("%s %s\n", argv [0], VERSION);
+        exit (1);
+    }
+
+    if (! lock_initialization (&argc, argv, &nolock_reason, verbose))
+    {
+        if (nolock_reason != NULL)
+        {
+            g_debug ("Screen locking disabled: %s", nolock_reason);
+            g_free (nolock_reason);
+        }
+        response_lock_init_failed ();
+        exit (1);
+    }
+
+    gs_debug_init (verbose, FALSE);
+
+    g_idle_add ((GSourceFunc)popup_dialog_idle, NULL);
+
+    gtk_main ();
+
+    gs_profile_end (NULL);
+    gs_debug_shutdown ();
+
+    return 0;
+}
diff --git a/src/mate-screensaver-gl-helper.c b/src/mate-screensaver-gl-helper.c
new file mode 100644
index 0000000..fd128f5
--- /dev/null
+++ b/src/mate-screensaver-gl-helper.c
@@ -0,0 +1,83 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdkx.h>
+
+#include "gs-visual-gl.h"
+
+int
+main (int    argc,
+      char **argv)
+{
+	GdkDisplay     *display;
+	GdkScreen      *screen;
+	GdkVisual      *visual;
+	Visual         *xvisual;
+	GError         *error = NULL;
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	g_type_init ();
+
+	g_set_prgname (argv[0]);
+	if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+	{
+		if (error != NULL)
+		{
+			g_warning ("%s", error->message);
+			g_error_free (error);
+		}
+		else
+		{
+			g_warning ("Unable to initialize GTK+");
+		}
+		exit (1);
+	}
+
+	display = gdk_display_get_default ();
+	screen = gdk_display_get_default_screen (display);
+	visual = gs_visual_gl_get_best_for_screen (screen);
+
+	if (visual != NULL)
+	{
+		xvisual = gdk_x11_visual_get_xvisual (visual);
+		printf ("0x%x\n", (unsigned int) XVisualIDFromVisual (xvisual));
+	}
+	else
+	{
+		printf ("none\n");
+	}
+
+	return 0;
+}
diff --git a/src/mate-screensaver-gl-helper.c.orig b/src/mate-screensaver-gl-helper.c.orig
new file mode 100644
index 0000000..70b56e4
--- /dev/null
+++ b/src/mate-screensaver-gl-helper.c.orig
@@ -0,0 +1,83 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdkx.h>
+
+#include "gs-visual-gl.h"
+
+int
+main (int    argc,
+      char **argv)
+{
+    GdkDisplay     *display;
+    GdkScreen      *screen;
+    GdkVisual      *visual;
+    Visual         *xvisual;
+    GError         *error = NULL;
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    g_type_init ();
+
+    g_set_prgname (argv[0]);
+    if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+    {
+        if (error != NULL)
+        {
+            g_warning ("%s", error->message);
+            g_error_free (error);
+        }
+        else
+        {
+            g_warning ("Unable to initialize GTK+");
+        }
+        exit (1);
+    }
+
+    display = gdk_display_get_default ();
+    screen = gdk_display_get_default_screen (display);
+    visual = gs_visual_gl_get_best_for_screen (screen);
+
+    if (visual != NULL)
+    {
+        xvisual = gdk_x11_visual_get_xvisual (visual);
+        printf ("0x%x\n", (unsigned int) XVisualIDFromVisual (xvisual));
+    }
+    else
+    {
+        printf ("none\n");
+    }
+
+    return 0;
+}
diff --git a/src/mate-screensaver-preferences.c b/src/mate-screensaver-preferences.c
new file mode 100644
index 0000000..5bcf5e5
--- /dev/null
+++ b/src/mate-screensaver-preferences.c
@@ -0,0 +1,1781 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *          Rodrigo Moya <rodrigo at novell.com>
+ *
+ */
+
+#include "config.h"
+
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>          /* For uid_t, gid_t */
+
+#include <glib/gi18n.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+#include <mateconf/mateconf-client.h>
+
+#include <gio/gio.h>
+
+#include "copy-theme-dialog.h"
+
+#include "gs-theme-manager.h"
+#include "gs-job.h"
+#include "gs-prefs.h" /* for GS_MODE enum */
+
+#define GTK_BUILDER_FILE "mate-screensaver-preferences.ui"
+
+#define MATE_LOCKDOWN_DIR  "/desktop/mate/lockdown"
+#define KEY_LOCK_DISABLE    MATE_LOCKDOWN_DIR "/disable_lock_screen"
+
+#define KEY_DIR             "/apps/mate-screensaver"
+#define MATE_SESSION_DIR   "/desktop/mate/session"
+#define KEY_LOCK            KEY_DIR "/lock_enabled"
+#define KEY_IDLE_ACTIVATION_ENABLED         KEY_DIR "/idle_activation_enabled"
+#define KEY_MODE            KEY_DIR "/mode"
+#define KEY_ACTIVATE_DELAY  MATE_SESSION_DIR "/idle_delay"
+#define KEY_LOCK_DELAY      KEY_DIR "/lock_delay"
+#define KEY_CYCLE_DELAY     KEY_DIR "/cycle_delay"
+#define KEY_THEMES          KEY_DIR "/themes"
+
+#define GPM_COMMAND "mate-power-preferences"
+
+enum
+{
+    NAME_COLUMN = 0,
+    ID_COLUMN,
+    N_COLUMNS
+};
+
+static MateConfEnumStringPair mode_enum_map [] =
+{
+	{ GS_MODE_BLANK_ONLY,       "blank-only" },
+	{ GS_MODE_RANDOM,           "random"     },
+	{ GS_MODE_SINGLE,           "single"     },
+	{ 0, NULL }
+};
+
+/* Drag and drop info */
+enum
+{
+    TARGET_URI_LIST,
+    TARGET_NS_URL
+};
+
+static GtkTargetEntry drop_types [] =
+{
+	{ "text/uri-list", 0, TARGET_URI_LIST },
+	{ "_NETSCAPE_URL", 0, TARGET_NS_URL }
+};
+
+static GtkBuilder       *builder = NULL;
+static GSThemeManager *theme_manager = NULL;
+static GSJob          *job = NULL;
+
+static gint32
+config_get_activate_delay (gboolean *is_writable)
+{
+	MateConfClient *client;
+	gint32       delay;
+
+	client = mateconf_client_get_default ();
+
+	if (is_writable)
+	{
+		*is_writable = mateconf_client_key_is_writable (client,
+		               KEY_ACTIVATE_DELAY,
+		               NULL);
+	}
+
+	delay = mateconf_client_get_int (client, KEY_ACTIVATE_DELAY, NULL);
+
+	if (delay < 1)
+	{
+		delay = 1;
+	}
+
+	g_object_unref (client);
+
+	return delay;
+}
+
+static void
+config_set_activate_delay (gint32 timeout)
+{
+	MateConfClient *client;
+
+	client = mateconf_client_get_default ();
+
+	mateconf_client_set_int (client, KEY_ACTIVATE_DELAY, timeout, NULL);
+
+	g_object_unref (client);
+}
+
+static int
+config_get_mode (gboolean *is_writable)
+{
+	MateConfClient *client;
+	int          mode;
+	char        *string;
+
+	client = mateconf_client_get_default ();
+
+	if (is_writable)
+	{
+		*is_writable = mateconf_client_key_is_writable (client,
+		               KEY_MODE,
+		               NULL);
+	}
+
+	string = mateconf_client_get_string (client, KEY_MODE, NULL);
+	if (string)
+	{
+		mateconf_string_to_enum (mode_enum_map, string, &mode);
+		g_free (string);
+	}
+	else
+	{
+		mode = GS_MODE_BLANK_ONLY;
+	}
+
+	g_object_unref (client);
+
+	return mode;
+}
+
+static void
+config_set_mode (int mode)
+{
+	MateConfClient *client;
+	const char  *mode_string;
+
+	client = mateconf_client_get_default ();
+
+	mode_string = mateconf_enum_to_string (mode_enum_map, mode);
+	mateconf_client_set_string (client, KEY_MODE, mode_string, NULL);
+
+	g_object_unref (client);
+}
+
+static char *
+config_get_theme (gboolean *is_writable)
+{
+	MateConfClient *client;
+	char        *name;
+	int          mode;
+
+	client = mateconf_client_get_default ();
+
+	if (is_writable)
+	{
+		gboolean can_write_theme;
+		gboolean can_write_mode;
+
+		can_write_theme = mateconf_client_key_is_writable (client,
+		                  KEY_THEMES,
+		                  NULL);
+		can_write_mode = mateconf_client_key_is_writable (client,
+		                 KEY_MODE,
+		                 NULL);
+		*is_writable = can_write_theme && can_write_mode;
+	}
+
+	mode = config_get_mode (NULL);
+
+	name = NULL;
+	if (mode == GS_MODE_BLANK_ONLY)
+	{
+		name = g_strdup ("__blank-only");
+	}
+	else if (mode == GS_MODE_RANDOM)
+	{
+		name = g_strdup ("__random");
+	}
+	else
+	{
+		GSList *list;
+		list = mateconf_client_get_list (client,
+		                                 KEY_THEMES,
+		                                 MATECONF_VALUE_STRING,
+		                                 NULL);
+		if (list != NULL)
+		{
+			name = g_strdup (list->data);
+		}
+		else
+		{
+			/* TODO: handle error */
+			/* default to blank */
+			name = g_strdup ("__blank-only");
+		}
+
+		g_slist_foreach (list, (GFunc)g_free, NULL);
+		g_slist_free (list);
+	}
+
+	g_object_unref (client);
+
+	return name;
+}
+
+static GSList *
+get_all_theme_ids (GSThemeManager *theme_manager)
+{
+	GSList *ids = NULL;
+	GSList *entries;
+	GSList *l;
+
+	entries = gs_theme_manager_get_info_list (theme_manager);
+	for (l = entries; l; l = l->next)
+	{
+		GSThemeInfo *info = l->data;
+
+		ids = g_slist_prepend (ids, g_strdup (gs_theme_info_get_id (info)));
+		gs_theme_info_unref (info);
+	}
+	g_slist_free (entries);
+
+	return ids;
+}
+
+static void
+config_set_theme (const char *theme_id)
+{
+	MateConfClient *client;
+	GSList      *list = NULL;
+	int          mode;
+
+	client = mateconf_client_get_default ();
+
+	if (theme_id && strcmp (theme_id, "__blank-only") == 0)
+	{
+		mode = GS_MODE_BLANK_ONLY;
+	}
+	else if (theme_id && strcmp (theme_id, "__random") == 0)
+	{
+		mode = GS_MODE_RANDOM;
+
+		/* set the themes key to contain all available screensavers */
+		list = get_all_theme_ids (theme_manager);
+	}
+	else
+	{
+		mode = GS_MODE_SINGLE;
+		list = g_slist_append (list, g_strdup (theme_id));
+	}
+
+	config_set_mode (mode);
+
+	mateconf_client_set_list (client,
+	                          KEY_THEMES,
+	                          MATECONF_VALUE_STRING,
+	                          list,
+	                          NULL);
+
+	g_slist_foreach (list, (GFunc) g_free, NULL);
+	g_slist_free (list);
+
+	g_object_unref (client);
+}
+
+static gboolean
+config_get_enabled (gboolean *is_writable)
+{
+	int          enabled;
+	MateConfClient *client;
+
+	client = mateconf_client_get_default ();
+
+	if (is_writable)
+	{
+		*is_writable = mateconf_client_key_is_writable (client,
+		               KEY_LOCK,
+		               NULL);
+	}
+
+	enabled = mateconf_client_get_bool (client, KEY_IDLE_ACTIVATION_ENABLED, NULL);
+
+	g_object_unref (client);
+
+	return enabled;
+}
+
+static void
+config_set_enabled (gboolean enabled)
+{
+	MateConfClient *client;
+
+	client = mateconf_client_get_default ();
+
+	mateconf_client_set_bool (client, KEY_IDLE_ACTIVATION_ENABLED, enabled, NULL);
+
+	g_object_unref (client);
+}
+
+static gboolean
+config_get_lock (gboolean *is_writable)
+{
+	MateConfClient *client;
+	gboolean     lock;
+
+	client = mateconf_client_get_default ();
+
+	if (is_writable)
+	{
+		*is_writable = mateconf_client_key_is_writable (client,
+		               KEY_LOCK,
+		               NULL);
+	}
+
+	lock = mateconf_client_get_bool (client, KEY_LOCK, NULL);
+
+	g_object_unref (client);
+
+	return lock;
+}
+
+static gboolean
+config_get_lock_disabled ()
+{
+	MateConfClient *client;
+	gboolean     lock;
+
+	client = mateconf_client_get_default ();
+
+	lock = mateconf_client_get_bool (client, KEY_LOCK_DISABLE, NULL);
+
+	g_object_unref (client);
+	return lock;
+}
+
+static void
+config_set_lock (gboolean lock)
+{
+	MateConfClient *client;
+
+	client = mateconf_client_get_default ();
+
+	mateconf_client_set_bool (client, KEY_LOCK, lock, NULL);
+
+	g_object_unref (client);
+}
+
+static void
+preview_clear (GtkWidget *widget)
+{
+	GdkColor color = { 0, 0, 0 };
+
+	gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &color);
+	gdk_window_clear (widget->window);
+}
+
+static void
+job_set_theme (GSJob      *job,
+               const char *theme)
+{
+	GSThemeInfo *info;
+	const char  *command;
+
+	command = NULL;
+
+	info = gs_theme_manager_lookup_theme_info (theme_manager, theme);
+	if (info != NULL)
+	{
+		command = gs_theme_info_get_exec (info);
+	}
+
+	gs_job_set_command (job, command);
+
+	if (info != NULL)
+	{
+		gs_theme_info_unref (info);
+	}
+}
+
+static void
+preview_set_theme (GtkWidget  *widget,
+                   const char *theme,
+                   const char *name)
+{
+	GtkWidget *label;
+	char      *markup;
+
+	if (job != NULL)
+	{
+		gs_job_stop (job);
+	}
+
+	preview_clear (widget);
+
+	label = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_theme_label"));
+	markup = g_markup_printf_escaped ("<i>%s</i>", name);
+	gtk_label_set_markup (GTK_LABEL (label), markup);
+	g_free (markup);
+
+	if ((theme && strcmp (theme, "__blank-only") == 0))
+	{
+
+	}
+	else if (theme && strcmp (theme, "__random") == 0)
+	{
+		GSList *themes;
+
+		themes = get_all_theme_ids (theme_manager);
+		if (themes != NULL)
+		{
+			GSList *l;
+			gint32  i;
+
+			i = g_random_int_range (0, g_slist_length (themes));
+			l = g_slist_nth (themes, i);
+
+			job_set_theme (job, (const char *) l->data);
+			g_slist_foreach (themes, (GFunc) g_free, NULL);
+			g_slist_free (themes);
+
+			gs_job_start (job);
+		}
+	}
+	else
+	{
+		job_set_theme (job, theme);
+		gs_job_start (job);
+	}
+}
+
+static void
+help_display (void)
+{
+	GError     *error = NULL;
+	char       *command;
+	const char *lang;
+	char       *uri = NULL;
+	GdkScreen  *gscreen;
+	int         i;
+
+	const char * const * langs = g_get_language_names ();
+
+	for (i = 0; langs[i] != NULL; i++)
+	{
+		lang = langs[i];
+		if (strchr (lang, '.'))
+		{
+			continue;
+		}
+
+		uri = g_build_filename (DATADIR,
+		                        "/mate/help/user-guide/",
+		                        lang,
+		                        "/user-guide.xml",
+		                        NULL);
+
+		if (g_file_test (uri, G_FILE_TEST_EXISTS))
+		{
+			break;
+		}
+	}
+
+	command = g_strconcat ("mate-open ghelp://",
+	                       uri,
+	                       "?prefs-screensaver",
+	                       NULL);
+	gscreen = gdk_screen_get_default ();
+	gdk_spawn_command_line_on_screen (gscreen, command, &error);
+
+	if (error != NULL)
+	{
+		GtkWidget *d;
+
+		d = gtk_message_dialog_new (NULL,
+		                            GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+		                            GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+		                            "%s", error->message);
+		gtk_dialog_run (GTK_DIALOG (d));
+		gtk_widget_destroy (d);
+		g_error_free (error);
+	}
+
+	g_free (command);
+	g_free (uri);
+}
+
+static void
+response_cb (GtkWidget *widget,
+             int        response_id)
+{
+
+	if (response_id == GTK_RESPONSE_HELP)
+	{
+		help_display ();
+	}
+	else if (response_id == GTK_RESPONSE_REJECT)
+	{
+		GError  *error;
+		gboolean res;
+
+		error = NULL;
+
+		res = gdk_spawn_command_line_on_screen (gdk_screen_get_default (),
+		                                        GPM_COMMAND,
+		                                        &error);
+		if (! res)
+		{
+			g_warning ("Unable to start power management preferences: %s", error->message);
+			g_error_free (error);
+		}
+	}
+	else
+	{
+		gtk_widget_destroy (widget);
+		gtk_main_quit ();
+	}
+}
+
+static GSList *
+get_theme_info_list (void)
+{
+	return gs_theme_manager_get_info_list (theme_manager);
+}
+
+static void
+populate_model (GtkTreeStore *store)
+{
+	GtkTreeIter iter;
+	GSList     *themes        = NULL;
+	GSList     *l;
+
+	gtk_tree_store_append (store, &iter, NULL);
+	gtk_tree_store_set (store, &iter,
+	                    NAME_COLUMN, _("Blank screen"),
+	                    ID_COLUMN, "__blank-only",
+	                    -1);
+
+	gtk_tree_store_append (store, &iter, NULL);
+	gtk_tree_store_set (store, &iter,
+	                    NAME_COLUMN, _("Random"),
+	                    ID_COLUMN, "__random",
+	                    -1);
+
+	gtk_tree_store_append (store, &iter, NULL);
+	gtk_tree_store_set (store, &iter,
+	                    NAME_COLUMN, NULL,
+	                    ID_COLUMN, "__separator",
+	                    -1);
+
+	themes = get_theme_info_list ();
+
+	if (themes == NULL)
+	{
+		return;
+	}
+
+	for (l = themes; l; l = l->next)
+	{
+		const char  *name;
+		const char  *id;
+		GSThemeInfo *info = l->data;
+
+		if (info == NULL)
+		{
+			continue;
+		}
+
+		name = gs_theme_info_get_name (info);
+		id = gs_theme_info_get_id (info);
+
+		gtk_tree_store_append (store, &iter, NULL);
+		gtk_tree_store_set (store, &iter,
+		                    NAME_COLUMN, name,
+		                    ID_COLUMN, id,
+		                    -1);
+
+		gs_theme_info_unref (info);
+	}
+
+	g_slist_free (themes);
+}
+
+static void
+tree_selection_previous (GtkTreeSelection *selection)
+{
+	GtkTreeIter   iter;
+	GtkTreeModel *model;
+	GtkTreePath  *path;
+
+	if (! gtk_tree_selection_get_selected (selection, &model, &iter))
+	{
+		return;
+	}
+
+	path = gtk_tree_model_get_path (model, &iter);
+	if (gtk_tree_path_prev (path))
+	{
+		gtk_tree_selection_select_path (selection, path);
+	}
+}
+
+static void
+tree_selection_next (GtkTreeSelection *selection)
+{
+	GtkTreeIter   iter;
+	GtkTreeModel *model;
+	GtkTreePath  *path;
+
+	if (! gtk_tree_selection_get_selected (selection, &model, &iter))
+	{
+		return;
+	}
+
+	path = gtk_tree_model_get_path (model, &iter);
+	gtk_tree_path_next (path);
+	gtk_tree_selection_select_path (selection, path);
+}
+
+static void
+tree_selection_changed_cb (GtkTreeSelection *selection,
+                           GtkWidget        *preview)
+{
+	GtkTreeIter   iter;
+	GtkTreeModel *model;
+	char         *theme;
+	char         *name;
+
+	if (! gtk_tree_selection_get_selected (selection, &model, &iter))
+	{
+		return;
+	}
+
+	gtk_tree_model_get (model, &iter, ID_COLUMN, &theme, NAME_COLUMN, &name, -1);
+
+	if (theme == NULL)
+	{
+		g_free (name);
+		return;
+	}
+
+	preview_set_theme (preview, theme, name);
+	config_set_theme (theme);
+
+	g_free (theme);
+	g_free (name);
+}
+
+static void
+activate_delay_value_changed_cb (GtkRange *range,
+                                 gpointer  user_data)
+{
+	gdouble value;
+
+	value = gtk_range_get_value (range);
+	config_set_activate_delay ((gint32)value);
+}
+
+static int
+compare_theme_names (char *name_a,
+                     char *name_b,
+                     char *id_a,
+                     char *id_b)
+{
+
+	if (id_a == NULL)
+	{
+		return 1;
+	}
+	else if (id_b == NULL)
+	{
+		return -1;
+	}
+
+	if (strcmp (id_a, "__blank-only") == 0)
+	{
+		return -1;
+	}
+	else if (strcmp (id_b, "__blank-only") == 0)
+	{
+		return 1;
+	}
+	else if (strcmp (id_a, "__random") == 0)
+	{
+		return -1;
+	}
+	else if (strcmp (id_b, "__random") == 0)
+	{
+		return 1;
+	}
+	else if (strcmp (id_a, "__separator") == 0)
+	{
+		return -1;
+	}
+	else if (strcmp (id_b, "__separator") == 0)
+	{
+		return 1;
+	}
+
+	if (name_a == NULL)
+	{
+		return 1;
+	}
+	else if (name_b == NULL)
+	{
+		return -1;
+	}
+
+	return g_utf8_collate (name_a, name_b);
+}
+
+static int
+compare_theme  (GtkTreeModel *model,
+                GtkTreeIter  *a,
+                GtkTreeIter  *b,
+                gpointer      user_data)
+{
+	char *name_a;
+	char *name_b;
+	char *id_a;
+	char *id_b;
+	int   result;
+
+	gtk_tree_model_get (model, a, NAME_COLUMN, &name_a, -1);
+	gtk_tree_model_get (model, b, NAME_COLUMN, &name_b, -1);
+	gtk_tree_model_get (model, a, ID_COLUMN, &id_a, -1);
+	gtk_tree_model_get (model, b, ID_COLUMN, &id_b, -1);
+
+	result = compare_theme_names (name_a, name_b, id_a, id_b);
+
+	g_free (name_a);
+	g_free (name_b);
+	g_free (id_a);
+	g_free (id_b);
+
+	return result;
+}
+
+static gboolean
+separator_func (GtkTreeModel *model,
+                GtkTreeIter  *iter,
+                gpointer      data)
+{
+	int   column = GPOINTER_TO_INT (data);
+	char *text;
+
+	gtk_tree_model_get (model, iter, column, &text, -1);
+
+	if (text != NULL && strcmp (text, "__separator") == 0)
+	{
+		return TRUE;
+	}
+
+	g_free (text);
+
+	return FALSE;
+}
+
+static void
+setup_treeview (GtkWidget *tree,
+                GtkWidget *preview)
+{
+	GtkTreeStore      *store;
+	GtkTreeViewColumn *column;
+	GtkCellRenderer   *renderer;
+	GtkTreeSelection  *select;
+
+	store = gtk_tree_store_new (N_COLUMNS,
+	                            G_TYPE_STRING,
+	                            G_TYPE_STRING);
+	populate_model (store);
+
+	gtk_tree_view_set_model (GTK_TREE_VIEW (tree),
+	                         GTK_TREE_MODEL (store));
+
+	g_object_unref (store);
+
+#if GTK_CHECK_VERSION(2,10,0)
+	g_object_set (tree, "show-expanders", FALSE, NULL);
+#endif
+
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes ("Name", renderer,
+	         "text", NAME_COLUMN,
+	         NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
+
+	gtk_tree_view_column_set_sort_column_id (column, NAME_COLUMN);
+	gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
+	                                 NAME_COLUMN,
+	                                 compare_theme,
+	                                 NULL, NULL);
+	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+	                                      NAME_COLUMN,
+	                                      GTK_SORT_ASCENDING);
+
+	gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (tree),
+	                                      separator_func,
+	                                      GINT_TO_POINTER (ID_COLUMN),
+	                                      NULL);
+
+	select = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree));
+	gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
+	g_signal_connect (G_OBJECT (select), "changed",
+	                  G_CALLBACK (tree_selection_changed_cb),
+	                  preview);
+
+}
+
+static void
+setup_treeview_selection (GtkWidget *tree)
+{
+	char         *theme;
+	GtkTreeModel *model;
+	GtkTreeIter   iter;
+	GtkTreePath  *path = NULL;
+	gboolean      is_writable;
+
+	theme = config_get_theme (&is_writable);
+
+	if (! is_writable)
+	{
+		gtk_widget_set_sensitive (tree, FALSE);
+	}
+
+	model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree));
+
+	if (theme && gtk_tree_model_get_iter_first (model, &iter))
+	{
+
+		do
+		{
+			char *id;
+			gboolean found;
+
+			gtk_tree_model_get (model, &iter,
+			                    ID_COLUMN, &id, -1);
+			found = (id && strcmp (id, theme) == 0);
+			g_free (id);
+
+			if (found)
+			{
+				path = gtk_tree_model_get_path (model, &iter);
+				break;
+			}
+
+		}
+		while (gtk_tree_model_iter_next (model, &iter));
+	}
+
+	if (path)
+	{
+		gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree),
+		                          path,
+		                          NULL,
+		                          FALSE);
+
+		gtk_tree_path_free (path);
+	}
+
+	g_free (theme);
+}
+
+static void
+reload_themes (void)
+{
+	GtkWidget    *treeview;
+	GtkTreeModel *model;
+
+	treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+	model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+	gtk_tree_store_clear (GTK_TREE_STORE (model));
+	populate_model (GTK_TREE_STORE (model));
+
+	gtk_tree_view_set_model (GTK_TREE_VIEW (treeview),
+	                         GTK_TREE_MODEL (model));
+}
+
+static void
+theme_copy_complete_cb (GtkWidget *dialog, gpointer user_data)
+{
+	reload_themes ();
+	gtk_widget_destroy (dialog);
+}
+
+static void
+theme_installer_run (GtkWidget *prefs_dialog, GList *files)
+{
+	GtkWidget *copy_dialog;
+
+	copy_dialog = copy_theme_dialog_new (files);
+	g_list_foreach (files, (GFunc) (g_object_unref), NULL);
+	g_list_free (files);
+
+	gtk_window_set_transient_for (GTK_WINDOW (copy_dialog),
+	                              GTK_WINDOW (prefs_dialog));
+	gtk_window_set_icon_name (GTK_WINDOW (copy_dialog),
+	                          "preferences-desktop-screensaver");
+
+	g_signal_connect (copy_dialog, "complete",
+	                  G_CALLBACK (theme_copy_complete_cb), NULL);
+
+	copy_theme_dialog_begin (COPY_THEME_DIALOG (copy_dialog));
+}
+
+/* Callback issued during drag movements */
+static gboolean
+drag_motion_cb (GtkWidget      *widget,
+                GdkDragContext *context,
+                int             x,
+                int             y,
+                guint           time,
+                gpointer        data)
+{
+	return FALSE;
+}
+
+/* Callback issued during drag leaves */
+static void
+drag_leave_cb (GtkWidget      *widget,
+               GdkDragContext *context,
+               guint           time,
+               gpointer        data)
+{
+	gtk_widget_queue_draw (widget);
+}
+
+/* GIO has no version of mate_vfs_uri_list_parse(), so copy from MateVFS
+ * and re-work to create GFiles.
+**/
+static GList *
+uri_list_parse (const gchar *uri_list)
+{
+	const gchar *p, *q;
+	gchar *retval;
+	GFile *file;
+	GList *result = NULL;
+
+	g_return_val_if_fail (uri_list != NULL, NULL);
+
+	p = uri_list;
+
+	/* We don't actually try to validate the URI according to RFC
+	 * 2396, or even check for allowed characters - we just ignore
+	 * comments and trim whitespace off the ends.  We also
+	 * allow LF delimination as well as the specified CRLF.
+	 */
+	while (p != NULL)
+	{
+		if (*p != '#')
+		{
+			while (g_ascii_isspace (*p))
+				p++;
+
+			q = p;
+			while ((*q != '\0')
+			        && (*q != '\n')
+			        && (*q != '\r'))
+				q++;
+
+			if (q > p)
+			{
+				q--;
+				while (q > p
+				        && g_ascii_isspace (*q))
+					q--;
+
+				retval = g_malloc (q - p + 2);
+				strncpy (retval, p, q - p + 1);
+				retval[q - p + 1] = '\0';
+
+				file = g_file_new_for_uri (retval);
+
+				g_free (retval);
+
+				if (file != NULL)
+					result = g_list_prepend (result, file);
+			}
+		}
+		p = strchr (p, '\n');
+		if (p != NULL)
+			p++;
+	}
+
+	return g_list_reverse (result);
+}
+
+/* Callback issued on actual drops. Attempts to load the file dropped. */
+static void
+drag_data_received_cb (GtkWidget        *widget,
+                       GdkDragContext   *context,
+                       int               x,
+                       int               y,
+                       GtkSelectionData *selection_data,
+                       guint             info,
+                       guint             time,
+                       gpointer          data)
+{
+	GList     *files;
+
+	if (!(info == TARGET_URI_LIST || info == TARGET_NS_URL))
+		return;
+
+	files = uri_list_parse ((char *) selection_data->data);
+	if (files != NULL)
+	{
+		GtkWidget *prefs_dialog;
+
+		prefs_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "prefs_dialog"));
+		theme_installer_run (prefs_dialog, files);
+	}
+}
+
+/* Adapted from totem_time_to_string_text */
+static char *
+time_to_string_text (long time)
+{
+	char *secs, *mins, *hours, *string;
+	int   sec, min, hour;
+
+	sec = time % 60;
+	time = time - sec;
+	min = (time % (60 * 60)) / 60;
+	time = time - (min * 60);
+	hour = time / (60 * 60);
+
+	hours = g_strdup_printf (ngettext ("%d hour",
+	                                   "%d hours", hour), hour);
+
+	mins = g_strdup_printf (ngettext ("%d minute",
+	                                  "%d minutes", min), min);
+
+	secs = g_strdup_printf (ngettext ("%d second",
+	                                  "%d seconds", sec), sec);
+
+	if (hour > 0)
+	{
+		if (sec > 0)
+		{
+			/* hour:minutes:seconds */
+			string = g_strdup_printf (_("%s %s %s"), hours, mins, secs);
+		}
+		else if (min > 0)
+		{
+			/* hour:minutes */
+			string = g_strdup_printf (_("%s %s"), hours, mins);
+		}
+		else
+		{
+			/* hour */
+			string = g_strdup_printf (_("%s"), hours);
+		}
+	}
+	else if (min > 0)
+	{
+		if (sec > 0)
+		{
+			/* minutes:seconds */
+			string = g_strdup_printf (_("%s %s"), mins, secs);
+		}
+		else
+		{
+			/* minutes */
+			string = g_strdup_printf (_("%s"), mins);
+		}
+	}
+	else
+	{
+		/* seconds */
+		string = g_strdup_printf (_("%s"), secs);
+	}
+
+	g_free (hours);
+	g_free (mins);
+	g_free (secs);
+
+	return string;
+}
+
+static char *
+format_value_callback_time (GtkScale *scale,
+                            gdouble   value)
+{
+	if (value == 0)
+		return g_strdup_printf (_("Never"));
+
+	return time_to_string_text (value * 60.0);
+}
+
+static void
+lock_checkbox_toggled (GtkToggleButton *button, gpointer user_data)
+{
+	config_set_lock (gtk_toggle_button_get_active (button));
+}
+
+static void
+enabled_checkbox_toggled (GtkToggleButton *button, gpointer user_data)
+{
+	config_set_enabled (gtk_toggle_button_get_active (button));
+}
+
+static void
+invalid_type_warning (const char *type)
+{
+	g_warning ("Error retrieving configuration key '%s': Invalid type",
+	           type);
+}
+
+static void
+ui_disable_lock (gboolean disable)
+{
+	GtkWidget *widget;
+
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+	gtk_widget_set_sensitive (widget, !disable);
+	if (disable)
+	{
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
+	}
+}
+
+static void
+ui_set_lock (gboolean enabled)
+{
+	GtkWidget *widget;
+	gboolean   active;
+	gboolean   lock_disabled;
+
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+
+	active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+	if (active != enabled)
+	{
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), enabled);
+	}
+	lock_disabled = config_get_lock_disabled ();
+	ui_disable_lock (lock_disabled);
+}
+
+static void
+ui_set_enabled (gboolean enabled)
+{
+	GtkWidget *widget;
+	gboolean   active;
+	gboolean   is_writable;
+	gboolean   lock_disabled;
+
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "enable_checkbox"));
+	active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+	if (active != enabled)
+	{
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), enabled);
+	}
+
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+	config_get_lock (&is_writable);
+	if (is_writable)
+	{
+		gtk_widget_set_sensitive (widget, enabled);
+	}
+	lock_disabled = config_get_lock_disabled ();
+	ui_disable_lock(lock_disabled);
+}
+
+static void
+ui_set_delay (int delay)
+{
+	GtkWidget *widget;
+
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "activate_delay_hscale"));
+	gtk_range_set_value (GTK_RANGE (widget), delay);
+}
+
+static void
+key_changed_cb (MateConfClient *client,
+                guint        cnxn_id,
+                MateConfEntry  *entry,
+                gpointer     data)
+{
+	const char *key;
+	MateConfValue *value;
+
+	key = mateconf_entry_get_key (entry);
+
+	if (! g_str_has_prefix (key, KEY_DIR) && ! g_str_has_prefix (key, MATE_LOCKDOWN_DIR))
+	{
+		return;
+	}
+
+	value = mateconf_entry_get_value (entry);
+
+	if (strcmp (key, KEY_IDLE_ACTIVATION_ENABLED) == 0)
+	{
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean enabled;
+
+			enabled = mateconf_value_get_bool (value);
+
+			ui_set_enabled (enabled);
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+	}
+	else if (strcmp (key, KEY_LOCK) == 0)
+	{
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean enabled;
+
+			enabled = mateconf_value_get_bool (value);
+
+			ui_set_lock (enabled);
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+	}
+	else if (strcmp (key, KEY_LOCK_DISABLE) == 0)
+	{
+		if (value->type == MATECONF_VALUE_BOOL)
+		{
+			gboolean disabled;
+
+			disabled = mateconf_value_get_bool (value);
+
+			ui_disable_lock (disabled);
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+	}
+	else if (strcmp (key, KEY_THEMES) == 0)
+	{
+		if (value->type == MATECONF_VALUE_LIST)
+		{
+			GtkWidget *treeview;
+
+			treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+			setup_treeview_selection (treeview);
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+	}
+	else if (strcmp (key, KEY_ACTIVATE_DELAY) == 0)
+	{
+
+		if (value->type == MATECONF_VALUE_INT)
+		{
+			int delay;
+
+			delay = mateconf_value_get_int (value);
+			ui_set_delay (delay);
+		}
+		else
+		{
+			invalid_type_warning (key);
+		}
+
+	}
+	else
+	{
+		/*g_warning ("Config key not handled: %s", key);*/
+	}
+}
+
+static void
+fullscreen_preview_previous_cb (GtkWidget *fullscreen_preview_window,
+                                gpointer   user_data)
+{
+	GtkWidget        *treeview;
+	GtkTreeSelection *selection;
+
+	treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+	tree_selection_previous (selection);
+}
+
+static void
+fullscreen_preview_next_cb (GtkWidget *fullscreen_preview_window,
+                            gpointer   user_data)
+{
+	GtkWidget        *treeview;
+	GtkTreeSelection *selection;
+
+	treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+	tree_selection_next (selection);
+}
+
+static void
+fullscreen_preview_cancelled_cb (GtkWidget *button,
+                                 gpointer   user_data)
+{
+
+	GtkWidget *fullscreen_preview_area;
+	GtkWidget *fullscreen_preview_window;
+	GtkWidget *preview_area;
+	GtkWidget *dialog;
+
+	preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "preview_area"));
+	gs_job_set_widget (job, preview_area);
+
+	fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area"));
+	preview_clear (fullscreen_preview_area);
+
+	fullscreen_preview_window = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_window"));
+	gtk_widget_hide (fullscreen_preview_window);
+
+	dialog = GTK_WIDGET (gtk_builder_get_object (builder, "prefs_dialog"));
+	gtk_widget_show (dialog);
+	gtk_window_present (GTK_WINDOW (dialog));
+}
+
+static void
+fullscreen_preview_start_cb (GtkWidget *widget,
+                             gpointer   user_data)
+{
+	GtkWidget *fullscreen_preview_area;
+	GtkWidget *fullscreen_preview_window;
+	GtkWidget *dialog;
+
+	dialog = GTK_WIDGET (gtk_builder_get_object (builder, "prefs_dialog"));
+	gtk_widget_hide (dialog);
+
+	fullscreen_preview_window = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_window"));
+
+	gtk_window_fullscreen (GTK_WINDOW (fullscreen_preview_window));
+	gtk_window_set_keep_above (GTK_WINDOW (fullscreen_preview_window), TRUE);
+
+	gtk_widget_show (fullscreen_preview_window);
+	gtk_widget_grab_focus (fullscreen_preview_window);
+
+	fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area"));
+	preview_clear (fullscreen_preview_area);
+	gs_job_set_widget (job, fullscreen_preview_area);
+}
+
+static void
+constrain_list_size (GtkWidget      *widget,
+                     GtkRequisition *requisition,
+                     GtkWidget      *to_size)
+{
+	GtkRequisition req;
+	int            max_height;
+
+	/* constrain height to be the tree height up to a max */
+	max_height = (gdk_screen_get_height (gtk_widget_get_screen (widget))) / 4;
+
+	gtk_widget_size_request (to_size, &req);
+
+	requisition->height = MIN (req.height, max_height);
+}
+
+static void
+setup_list_size_constraint (GtkWidget *widget,
+                            GtkWidget *to_size)
+{
+	g_signal_connect (widget, "size-request",
+	                  G_CALLBACK (constrain_list_size), to_size);
+}
+
+static gboolean
+check_is_root_user (void)
+{
+#ifndef G_OS_WIN32
+	uid_t ruid, euid, suid; /* Real, effective and saved user ID's */
+	gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */
+
+#ifdef HAVE_GETRESUID
+	if (getresuid (&ruid, &euid, &suid) != 0 ||
+	        getresgid (&rgid, &egid, &sgid) != 0)
+#endif /* HAVE_GETRESUID */
+	{
+		suid = ruid = getuid ();
+		sgid = rgid = getgid ();
+		euid = geteuid ();
+		egid = getegid ();
+	}
+
+	if (ruid == 0)
+	{
+		return TRUE;
+	}
+
+#endif
+	return FALSE;
+}
+
+static void
+setup_for_root_user (void)
+{
+	GtkWidget *lock_checkbox;
+	GtkWidget *label;
+
+	lock_checkbox = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+	label = GTK_WIDGET (gtk_builder_get_object (builder, "root_warning_label"));
+
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lock_checkbox), FALSE);
+	gtk_widget_set_sensitive (lock_checkbox, FALSE);
+
+	gtk_widget_show (label);
+}
+
+static GdkVisual *
+get_best_visual (void)
+{
+	char         *command;
+	char         *std_output;
+	int           exit_status;
+	GError       *error;
+	unsigned long v;
+	char          c;
+	GdkVisual    *visual;
+	gboolean      res;
+
+	visual = NULL;
+
+	command = g_build_filename (LIBEXECDIR, "mate-screensaver-gl-helper", NULL);
+
+	error = NULL;
+	res = g_spawn_command_line_sync (command,
+	                                 &std_output,
+	                                 NULL,
+	                                 &exit_status,
+	                                 &error);
+
+	if (! res)
+	{
+		g_debug ("Could not run command '%s': %s", command, error->message);
+		g_error_free (error);
+		goto out;
+	}
+
+	if (1 == sscanf (std_output, "0x%lx %c", &v, &c))
+	{
+		if (v != 0)
+		{
+			VisualID      visual_id;
+
+			visual_id = (VisualID) v;
+			visual = gdkx_visual_get (visual_id);
+
+			g_debug ("Found best visual for GL: 0x%x",
+			         (unsigned int) visual_id);
+		}
+	}
+
+out:
+	g_free (std_output);
+	g_free (command);
+
+	return visual;
+}
+
+static GdkColormap *
+get_best_colormap_for_screen (GdkScreen *screen)
+{
+	GdkColormap *colormap;
+	GdkVisual   *visual;
+
+	g_return_val_if_fail (screen != NULL, NULL);
+
+	visual = get_best_visual ();
+
+	colormap = NULL;
+	if (visual != NULL)
+	{
+		colormap = gdk_colormap_new (visual, FALSE);
+	}
+
+	return colormap;
+}
+
+static void
+widget_set_best_colormap (GtkWidget *widget)
+{
+	GdkColormap *colormap;
+
+	g_return_if_fail (widget != NULL);
+
+	colormap = get_best_colormap_for_screen (gtk_widget_get_screen (widget));
+	if (colormap != NULL)
+	{
+		gtk_widget_set_colormap (widget, colormap);
+		g_object_unref (colormap);
+	}
+}
+
+static gboolean
+setup_treeview_idle (gpointer data)
+{
+	GtkWidget *preview;
+	GtkWidget *treeview;
+
+	preview  = GTK_WIDGET (gtk_builder_get_object (builder, "preview_area"));
+	treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+
+	setup_treeview (treeview, preview);
+	setup_treeview_selection (treeview);
+
+	return FALSE;
+}
+
+static gboolean
+is_program_in_path (const char *program)
+{
+	char *tmp = g_find_program_in_path (program);
+	if (tmp != NULL)
+	{
+		g_free (tmp);
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+static void
+init_capplet (void)
+{
+	GtkWidget *dialog;
+	GtkWidget *preview;
+	GtkWidget *treeview;
+	GtkWidget *list_scroller;
+	GtkWidget *activate_delay_hscale;
+	GtkWidget *activate_delay_hbox;
+	GtkWidget *label;
+	GtkWidget *enabled_checkbox;
+	GtkWidget *lock_checkbox;
+	GtkWidget *root_warning_label;
+	GtkWidget *preview_button;
+	GtkWidget *gpm_button;
+	GtkWidget *fullscreen_preview_window;
+	GtkWidget *fullscreen_preview_previous;
+	GtkWidget *fullscreen_preview_next;
+	GtkWidget *fullscreen_preview_area;
+	GtkWidget *fullscreen_preview_close;
+	char      *gtk_builder_file;
+	char      *string;
+	gdouble    activate_delay;
+	gboolean   enabled;
+	gboolean   is_writable;
+	MateConfClient *client;
+	GError    *error=NULL;
+
+	gtk_builder_file = g_build_filename (GTKBUILDERDIR, GTK_BUILDER_FILE, NULL);
+	builder = gtk_builder_new();
+	if (!gtk_builder_add_from_file(builder, gtk_builder_file, &error))
+	{
+		g_warning("Couldn't load builder file: %s", error->message);
+		g_error_free(error);
+	}
+	g_free (gtk_builder_file);
+
+	if (builder == NULL)
+	{
+
+		dialog = gtk_message_dialog_new (NULL,
+		                                 0, GTK_MESSAGE_ERROR,
+		                                 GTK_BUTTONS_OK,
+		                                 _("Could not load the main interface"));
+		gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+		        _("Please make sure that the screensaver is properly installed"));
+
+		gtk_dialog_set_default_response (GTK_DIALOG (dialog),
+		                                 GTK_RESPONSE_OK);
+		gtk_dialog_run (GTK_DIALOG (dialog));
+		gtk_widget_destroy (dialog);
+		exit (1);
+	}
+
+	preview            = GTK_WIDGET (gtk_builder_get_object (builder, "preview_area"));
+	dialog             = GTK_WIDGET (gtk_builder_get_object (builder, "prefs_dialog"));
+	treeview           = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+	list_scroller      = GTK_WIDGET (gtk_builder_get_object (builder, "themes_scrolled_window"));
+	activate_delay_hscale = GTK_WIDGET (gtk_builder_get_object (builder, "activate_delay_hscale"));
+	activate_delay_hbox   = GTK_WIDGET (gtk_builder_get_object (builder, "activate_delay_hbox"));
+	enabled_checkbox   = GTK_WIDGET (gtk_builder_get_object (builder, "enable_checkbox"));
+	lock_checkbox      = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+	root_warning_label = GTK_WIDGET (gtk_builder_get_object (builder, "root_warning_label"));
+	preview_button     = GTK_WIDGET (gtk_builder_get_object (builder, "preview_button"));
+	gpm_button         = GTK_WIDGET (gtk_builder_get_object (builder, "gpm_button"));
+	fullscreen_preview_window = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_window"));
+	fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area"));
+	fullscreen_preview_close = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_close"));
+	fullscreen_preview_previous = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_previous_button"));
+	fullscreen_preview_next = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_next_button"));
+
+	label              = GTK_WIDGET (gtk_builder_get_object (builder, "activate_delay_label"));
+	gtk_label_set_mnemonic_widget (GTK_LABEL (label), activate_delay_hscale);
+	label              = GTK_WIDGET (gtk_builder_get_object (builder, "savers_label"));
+	gtk_label_set_mnemonic_widget (GTK_LABEL (label), treeview);
+
+	gtk_widget_set_no_show_all (root_warning_label, TRUE);
+	widget_set_best_colormap (preview);
+
+	if (! is_program_in_path (GPM_COMMAND))
+	{
+		gtk_widget_set_no_show_all (gpm_button, TRUE);
+		gtk_widget_hide (gpm_button);
+	}
+
+	activate_delay = config_get_activate_delay (&is_writable);
+	ui_set_delay (activate_delay);
+	if (! is_writable)
+	{
+		gtk_widget_set_sensitive (activate_delay_hbox, FALSE);
+	}
+	g_signal_connect (activate_delay_hscale, "format-value",
+	                  G_CALLBACK (format_value_callback_time), NULL);
+
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lock_checkbox), config_get_lock (&is_writable));
+	if (! is_writable)
+	{
+		gtk_widget_set_sensitive (lock_checkbox, FALSE);
+	}
+	g_signal_connect (lock_checkbox, "toggled",
+	                  G_CALLBACK (lock_checkbox_toggled), NULL);
+
+	enabled = config_get_enabled (&is_writable);
+	ui_set_enabled (enabled);
+	if (! is_writable)
+	{
+		gtk_widget_set_sensitive (enabled_checkbox, FALSE);
+	}
+	g_signal_connect (enabled_checkbox, "toggled",
+	                  G_CALLBACK (enabled_checkbox_toggled), NULL);
+
+	setup_list_size_constraint (list_scroller, treeview);
+	gtk_widget_set_size_request (preview, 480, 300);
+	gtk_window_set_icon_name (GTK_WINDOW (dialog), "preferences-desktop-screensaver");
+	gtk_window_set_icon_name (GTK_WINDOW (fullscreen_preview_window), "screensaver");
+
+	gtk_drag_dest_set (dialog, GTK_DEST_DEFAULT_ALL,
+	                   drop_types, G_N_ELEMENTS (drop_types),
+	                   GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE);
+
+	g_signal_connect (dialog, "drag-motion",
+	                  G_CALLBACK (drag_motion_cb), NULL);
+	g_signal_connect (dialog, "drag-leave",
+	                  G_CALLBACK (drag_leave_cb), NULL);
+	g_signal_connect (dialog, "drag-data-received",
+	                  G_CALLBACK (drag_data_received_cb), NULL);
+
+	gtk_widget_show_all (dialog);
+
+	/* Update list of themes if using random screensaver */
+	client = mateconf_client_get_default ();
+	string = mateconf_client_get_string (client, KEY_MODE, NULL);
+	if (string != NULL)
+	{
+		int mode;
+		GSList *list;
+
+		mateconf_string_to_enum (mode_enum_map, string, &mode);
+		g_free (string);
+
+		if (mode == GS_MODE_RANDOM)
+		{
+			list = get_all_theme_ids (theme_manager);
+			mateconf_client_set_list (client, KEY_THEMES, MATECONF_VALUE_STRING, list, NULL);
+
+			g_slist_foreach (list, (GFunc) g_free, NULL);
+			g_slist_free (list);
+		}
+	}
+
+	mateconf_client_add_dir (client, KEY_DIR,
+	                         MATECONF_CLIENT_PRELOAD_ONELEVEL,
+	                         NULL);
+	mateconf_client_notify_add (client,
+	                            KEY_DIR,
+	                            key_changed_cb,
+	                            NULL, NULL, NULL);
+	mateconf_client_add_dir (client, MATE_LOCKDOWN_DIR,
+	                         MATECONF_CLIENT_PRELOAD_ONELEVEL,
+	                         NULL);
+	mateconf_client_notify_add (client,
+	                            MATE_LOCKDOWN_DIR,
+	                            key_changed_cb,
+	                            NULL, NULL, NULL);
+
+	g_object_unref (client);
+
+	preview_clear (preview);
+	gs_job_set_widget (job, preview);
+
+	if (check_is_root_user ())
+	{
+		setup_for_root_user ();
+	}
+
+	g_signal_connect (activate_delay_hscale, "value-changed",
+	                  G_CALLBACK (activate_delay_value_changed_cb), NULL);
+
+	g_signal_connect (dialog, "response",
+	                  G_CALLBACK (response_cb), NULL);
+
+	g_signal_connect (preview_button, "clicked",
+	                  G_CALLBACK (fullscreen_preview_start_cb),
+	                  treeview);
+
+	g_signal_connect (fullscreen_preview_close, "clicked",
+	                  G_CALLBACK (fullscreen_preview_cancelled_cb), NULL);
+	g_signal_connect (fullscreen_preview_previous, "clicked",
+	                  G_CALLBACK (fullscreen_preview_previous_cb), NULL);
+	g_signal_connect (fullscreen_preview_next, "clicked",
+	                  G_CALLBACK (fullscreen_preview_next_cb), NULL);
+
+	g_idle_add ((GSourceFunc)setup_treeview_idle, NULL);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	gtk_init (&argc, &argv);
+
+	job = gs_job_new ();
+	theme_manager = gs_theme_manager_new ();
+
+	init_capplet ();
+
+	gtk_main ();
+
+	g_object_unref (theme_manager);
+	g_object_unref (job);
+
+	return 0;
+}
diff --git a/src/mate-screensaver-preferences.c.orig b/src/mate-screensaver-preferences.c.orig
new file mode 100644
index 0000000..cedce78
--- /dev/null
+++ b/src/mate-screensaver-preferences.c.orig
@@ -0,0 +1,1781 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *          Rodrigo Moya <rodrigo at novell.com>
+ *
+ */
+
+#include "config.h"
+
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>          /* For uid_t, gid_t */
+
+#include <glib/gi18n.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+#include <mateconf/mateconf-client.h>
+
+#include <gio/gio.h>
+
+#include "copy-theme-dialog.h"
+
+#include "gs-theme-manager.h"
+#include "gs-job.h"
+#include "gs-prefs.h" /* for GS_MODE enum */
+
+#define GTK_BUILDER_FILE "mate-screensaver-preferences.ui"
+
+#define MATE_LOCKDOWN_DIR  "/desktop/mate/lockdown"
+#define KEY_LOCK_DISABLE    MATE_LOCKDOWN_DIR "/disable_lock_screen"
+
+#define KEY_DIR             "/apps/mate-screensaver"
+#define MATE_SESSION_DIR   "/desktop/mate/session"
+#define KEY_LOCK            KEY_DIR "/lock_enabled"
+#define KEY_IDLE_ACTIVATION_ENABLED         KEY_DIR "/idle_activation_enabled"
+#define KEY_MODE            KEY_DIR "/mode"
+#define KEY_ACTIVATE_DELAY  MATE_SESSION_DIR "/idle_delay"
+#define KEY_LOCK_DELAY      KEY_DIR "/lock_delay"
+#define KEY_CYCLE_DELAY     KEY_DIR "/cycle_delay"
+#define KEY_THEMES          KEY_DIR "/themes"
+
+#define GPM_COMMAND "mate-power-preferences"
+
+enum
+{
+    NAME_COLUMN = 0,
+    ID_COLUMN,
+    N_COLUMNS
+};
+
+static MateConfEnumStringPair mode_enum_map [] =
+{
+    { GS_MODE_BLANK_ONLY,       "blank-only" },
+    { GS_MODE_RANDOM,           "random"     },
+    { GS_MODE_SINGLE,           "single"     },
+    { 0, NULL }
+};
+
+/* Drag and drop info */
+enum
+{
+    TARGET_URI_LIST,
+    TARGET_NS_URL
+};
+
+static GtkTargetEntry drop_types [] =
+{
+    { "text/uri-list", 0, TARGET_URI_LIST },
+    { "_NETSCAPE_URL", 0, TARGET_NS_URL }
+};
+
+static GtkBuilder       *builder = NULL;
+static GSThemeManager *theme_manager = NULL;
+static GSJob          *job = NULL;
+
+static gint32
+config_get_activate_delay (gboolean *is_writable)
+{
+    MateConfClient *client;
+    gint32       delay;
+
+    client = mateconf_client_get_default ();
+
+    if (is_writable)
+    {
+        *is_writable = mateconf_client_key_is_writable (client,
+                       KEY_ACTIVATE_DELAY,
+                       NULL);
+    }
+
+    delay = mateconf_client_get_int (client, KEY_ACTIVATE_DELAY, NULL);
+
+    if (delay < 1)
+    {
+        delay = 1;
+    }
+
+    g_object_unref (client);
+
+    return delay;
+}
+
+static void
+config_set_activate_delay (gint32 timeout)
+{
+    MateConfClient *client;
+
+    client = mateconf_client_get_default ();
+
+    mateconf_client_set_int (client, KEY_ACTIVATE_DELAY, timeout, NULL);
+
+    g_object_unref (client);
+}
+
+static int
+config_get_mode (gboolean *is_writable)
+{
+    MateConfClient *client;
+    int          mode;
+    char        *string;
+
+    client = mateconf_client_get_default ();
+
+    if (is_writable)
+    {
+        *is_writable = mateconf_client_key_is_writable (client,
+                       KEY_MODE,
+                       NULL);
+    }
+
+    string = mateconf_client_get_string (client, KEY_MODE, NULL);
+    if (string)
+    {
+        mateconf_string_to_enum (mode_enum_map, string, &mode);
+        g_free (string);
+    }
+    else
+    {
+        mode = GS_MODE_BLANK_ONLY;
+    }
+
+    g_object_unref (client);
+
+    return mode;
+}
+
+static void
+config_set_mode (int mode)
+{
+    MateConfClient *client;
+    const char  *mode_string;
+
+    client = mateconf_client_get_default ();
+
+    mode_string = mateconf_enum_to_string (mode_enum_map, mode);
+    mateconf_client_set_string (client, KEY_MODE, mode_string, NULL);
+
+    g_object_unref (client);
+}
+
+static char *
+config_get_theme (gboolean *is_writable)
+{
+    MateConfClient *client;
+    char        *name;
+    int          mode;
+
+    client = mateconf_client_get_default ();
+
+    if (is_writable)
+    {
+        gboolean can_write_theme;
+        gboolean can_write_mode;
+
+        can_write_theme = mateconf_client_key_is_writable (client,
+                          KEY_THEMES,
+                          NULL);
+        can_write_mode = mateconf_client_key_is_writable (client,
+                         KEY_MODE,
+                         NULL);
+        *is_writable = can_write_theme && can_write_mode;
+    }
+
+    mode = config_get_mode (NULL);
+
+    name = NULL;
+    if (mode == GS_MODE_BLANK_ONLY)
+    {
+        name = g_strdup ("__blank-only");
+    }
+    else if (mode == GS_MODE_RANDOM)
+    {
+        name = g_strdup ("__random");
+    }
+    else
+    {
+        GSList *list;
+        list = mateconf_client_get_list (client,
+                                         KEY_THEMES,
+                                         MATECONF_VALUE_STRING,
+                                         NULL);
+        if (list != NULL)
+        {
+            name = g_strdup (list->data);
+        }
+        else
+        {
+            /* TODO: handle error */
+            /* default to blank */
+            name = g_strdup ("__blank-only");
+        }
+
+        g_slist_foreach (list, (GFunc)g_free, NULL);
+        g_slist_free (list);
+    }
+
+    g_object_unref (client);
+
+    return name;
+}
+
+static GSList *
+get_all_theme_ids (GSThemeManager *theme_manager)
+{
+    GSList *ids = NULL;
+    GSList *entries;
+    GSList *l;
+
+    entries = gs_theme_manager_get_info_list (theme_manager);
+    for (l = entries; l; l = l->next)
+    {
+        GSThemeInfo *info = l->data;
+
+        ids = g_slist_prepend (ids, g_strdup (gs_theme_info_get_id (info)));
+        gs_theme_info_unref (info);
+    }
+    g_slist_free (entries);
+
+    return ids;
+}
+
+static void
+config_set_theme (const char *theme_id)
+{
+    MateConfClient *client;
+    GSList      *list = NULL;
+    int          mode;
+
+    client = mateconf_client_get_default ();
+
+    if (theme_id && strcmp (theme_id, "__blank-only") == 0)
+    {
+        mode = GS_MODE_BLANK_ONLY;
+    }
+    else if (theme_id && strcmp (theme_id, "__random") == 0)
+    {
+        mode = GS_MODE_RANDOM;
+
+        /* set the themes key to contain all available screensavers */
+        list = get_all_theme_ids (theme_manager);
+    }
+    else
+    {
+        mode = GS_MODE_SINGLE;
+        list = g_slist_append (list, g_strdup (theme_id));
+    }
+
+    config_set_mode (mode);
+
+    mateconf_client_set_list (client,
+                              KEY_THEMES,
+                              MATECONF_VALUE_STRING,
+                              list,
+                              NULL);
+
+    g_slist_foreach (list, (GFunc) g_free, NULL);
+    g_slist_free (list);
+
+    g_object_unref (client);
+}
+
+static gboolean
+config_get_enabled (gboolean *is_writable)
+{
+    int          enabled;
+    MateConfClient *client;
+
+    client = mateconf_client_get_default ();
+
+    if (is_writable)
+    {
+        *is_writable = mateconf_client_key_is_writable (client,
+                       KEY_LOCK,
+                       NULL);
+    }
+
+    enabled = mateconf_client_get_bool (client, KEY_IDLE_ACTIVATION_ENABLED, NULL);
+
+    g_object_unref (client);
+
+    return enabled;
+}
+
+static void
+config_set_enabled (gboolean enabled)
+{
+    MateConfClient *client;
+
+    client = mateconf_client_get_default ();
+
+    mateconf_client_set_bool (client, KEY_IDLE_ACTIVATION_ENABLED, enabled, NULL);
+
+    g_object_unref (client);
+}
+
+static gboolean
+config_get_lock (gboolean *is_writable)
+{
+    MateConfClient *client;
+    gboolean     lock;
+
+    client = mateconf_client_get_default ();
+
+    if (is_writable)
+    {
+        *is_writable = mateconf_client_key_is_writable (client,
+                       KEY_LOCK,
+                       NULL);
+    }
+
+    lock = mateconf_client_get_bool (client, KEY_LOCK, NULL);
+
+    g_object_unref (client);
+
+    return lock;
+}
+
+static gboolean
+config_get_lock_disabled ()
+{
+    MateConfClient *client;
+    gboolean     lock;
+
+    client = mateconf_client_get_default ();
+
+    lock = mateconf_client_get_bool (client, KEY_LOCK_DISABLE, NULL);
+
+    g_object_unref (client);
+    return lock;
+}
+
+static void
+config_set_lock (gboolean lock)
+{
+    MateConfClient *client;
+
+    client = mateconf_client_get_default ();
+
+    mateconf_client_set_bool (client, KEY_LOCK, lock, NULL);
+
+    g_object_unref (client);
+}
+
+static void
+preview_clear (GtkWidget *widget)
+{
+    GdkColor color = { 0, 0, 0 };
+
+    gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &color);
+    gdk_window_clear (widget->window);
+}
+
+static void
+job_set_theme (GSJob      *job,
+               const char *theme)
+{
+    GSThemeInfo *info;
+    const char  *command;
+
+    command = NULL;
+
+    info = gs_theme_manager_lookup_theme_info (theme_manager, theme);
+    if (info != NULL)
+    {
+        command = gs_theme_info_get_exec (info);
+    }
+
+    gs_job_set_command (job, command);
+
+    if (info != NULL)
+    {
+        gs_theme_info_unref (info);
+    }
+}
+
+static void
+preview_set_theme (GtkWidget  *widget,
+                   const char *theme,
+                   const char *name)
+{
+    GtkWidget *label;
+    char      *markup;
+
+    if (job != NULL)
+    {
+        gs_job_stop (job);
+    }
+
+    preview_clear (widget);
+
+    label = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_theme_label"));
+    markup = g_markup_printf_escaped ("<i>%s</i>", name);
+    gtk_label_set_markup (GTK_LABEL (label), markup);
+    g_free (markup);
+
+    if ((theme && strcmp (theme, "__blank-only") == 0))
+    {
+
+    }
+    else if (theme && strcmp (theme, "__random") == 0)
+    {
+        GSList *themes;
+
+        themes = get_all_theme_ids (theme_manager);
+        if (themes != NULL)
+        {
+            GSList *l;
+            gint32  i;
+
+            i = g_random_int_range (0, g_slist_length (themes));
+            l = g_slist_nth (themes, i);
+
+            job_set_theme (job, (const char *) l->data);
+            g_slist_foreach (themes, (GFunc) g_free, NULL);
+            g_slist_free (themes);
+
+            gs_job_start (job);
+        }
+    }
+    else
+    {
+        job_set_theme (job, theme);
+        gs_job_start (job);
+    }
+}
+
+static void
+help_display (void)
+{
+    GError     *error = NULL;
+    char       *command;
+    const char *lang;
+    char       *uri = NULL;
+    GdkScreen  *gscreen;
+    int         i;
+
+    const char * const * langs = g_get_language_names ();
+
+    for (i = 0; langs[i] != NULL; i++)
+    {
+        lang = langs[i];
+        if (strchr (lang, '.'))
+        {
+            continue;
+        }
+
+        uri = g_build_filename (DATADIR,
+                                "/mate/help/user-guide/",
+                                lang,
+                                "/user-guide.xml",
+                                NULL);
+
+        if (g_file_test (uri, G_FILE_TEST_EXISTS))
+        {
+            break;
+        }
+    }
+
+    command = g_strconcat ("mate-open ghelp://",
+                           uri,
+                           "?prefs-screensaver",
+                           NULL);
+    gscreen = gdk_screen_get_default ();
+    gdk_spawn_command_line_on_screen (gscreen, command, &error);
+
+    if (error != NULL)
+    {
+        GtkWidget *d;
+
+        d = gtk_message_dialog_new (NULL,
+                                    GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+                                    GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+                                    "%s", error->message);
+        gtk_dialog_run (GTK_DIALOG (d));
+        gtk_widget_destroy (d);
+        g_error_free (error);
+    }
+
+    g_free (command);
+    g_free (uri);
+}
+
+static void
+response_cb (GtkWidget *widget,
+             int        response_id)
+{
+
+    if (response_id == GTK_RESPONSE_HELP)
+    {
+        help_display ();
+    }
+    else if (response_id == GTK_RESPONSE_REJECT)
+    {
+        GError  *error;
+        gboolean res;
+
+        error = NULL;
+
+        res = gdk_spawn_command_line_on_screen (gdk_screen_get_default (),
+                                                GPM_COMMAND,
+                                                &error);
+        if (! res)
+        {
+            g_warning ("Unable to start power management preferences: %s", error->message);
+            g_error_free (error);
+        }
+    }
+    else
+    {
+        gtk_widget_destroy (widget);
+        gtk_main_quit ();
+    }
+}
+
+static GSList *
+get_theme_info_list (void)
+{
+    return gs_theme_manager_get_info_list (theme_manager);
+}
+
+static void
+populate_model (GtkTreeStore *store)
+{
+    GtkTreeIter iter;
+    GSList     *themes        = NULL;
+    GSList     *l;
+
+    gtk_tree_store_append (store, &iter, NULL);
+    gtk_tree_store_set (store, &iter,
+                        NAME_COLUMN, _("Blank screen"),
+                        ID_COLUMN, "__blank-only",
+                        -1);
+
+    gtk_tree_store_append (store, &iter, NULL);
+    gtk_tree_store_set (store, &iter,
+                        NAME_COLUMN, _("Random"),
+                        ID_COLUMN, "__random",
+                        -1);
+
+    gtk_tree_store_append (store, &iter, NULL);
+    gtk_tree_store_set (store, &iter,
+                        NAME_COLUMN, NULL,
+                        ID_COLUMN, "__separator",
+                        -1);
+
+    themes = get_theme_info_list ();
+
+    if (themes == NULL)
+    {
+        return;
+    }
+
+    for (l = themes; l; l = l->next)
+    {
+        const char  *name;
+        const char  *id;
+        GSThemeInfo *info = l->data;
+
+        if (info == NULL)
+        {
+            continue;
+        }
+
+        name = gs_theme_info_get_name (info);
+        id = gs_theme_info_get_id (info);
+
+        gtk_tree_store_append (store, &iter, NULL);
+        gtk_tree_store_set (store, &iter,
+                            NAME_COLUMN, name,
+                            ID_COLUMN, id,
+                            -1);
+
+        gs_theme_info_unref (info);
+    }
+
+    g_slist_free (themes);
+}
+
+static void
+tree_selection_previous (GtkTreeSelection *selection)
+{
+    GtkTreeIter   iter;
+    GtkTreeModel *model;
+    GtkTreePath  *path;
+
+    if (! gtk_tree_selection_get_selected (selection, &model, &iter))
+    {
+        return;
+    }
+
+    path = gtk_tree_model_get_path (model, &iter);
+    if (gtk_tree_path_prev (path))
+    {
+        gtk_tree_selection_select_path (selection, path);
+    }
+}
+
+static void
+tree_selection_next (GtkTreeSelection *selection)
+{
+    GtkTreeIter   iter;
+    GtkTreeModel *model;
+    GtkTreePath  *path;
+
+    if (! gtk_tree_selection_get_selected (selection, &model, &iter))
+    {
+        return;
+    }
+
+    path = gtk_tree_model_get_path (model, &iter);
+    gtk_tree_path_next (path);
+    gtk_tree_selection_select_path (selection, path);
+}
+
+static void
+tree_selection_changed_cb (GtkTreeSelection *selection,
+                           GtkWidget        *preview)
+{
+    GtkTreeIter   iter;
+    GtkTreeModel *model;
+    char         *theme;
+    char         *name;
+
+    if (! gtk_tree_selection_get_selected (selection, &model, &iter))
+    {
+        return;
+    }
+
+    gtk_tree_model_get (model, &iter, ID_COLUMN, &theme, NAME_COLUMN, &name, -1);
+
+    if (theme == NULL)
+    {
+        g_free (name);
+        return;
+    }
+
+    preview_set_theme (preview, theme, name);
+    config_set_theme (theme);
+
+    g_free (theme);
+    g_free (name);
+}
+
+static void
+activate_delay_value_changed_cb (GtkRange *range,
+                                 gpointer  user_data)
+{
+    gdouble value;
+
+    value = gtk_range_get_value (range);
+    config_set_activate_delay ((gint32)value);
+}
+
+static int
+compare_theme_names (char *name_a,
+                     char *name_b,
+                     char *id_a,
+                     char *id_b)
+{
+
+    if (id_a == NULL)
+    {
+        return 1;
+    }
+    else if (id_b == NULL)
+    {
+        return -1;
+    }
+
+    if (strcmp (id_a, "__blank-only") == 0)
+    {
+        return -1;
+    }
+    else if (strcmp (id_b, "__blank-only") == 0)
+    {
+        return 1;
+    }
+    else if (strcmp (id_a, "__random") == 0)
+    {
+        return -1;
+    }
+    else if (strcmp (id_b, "__random") == 0)
+    {
+        return 1;
+    }
+    else if (strcmp (id_a, "__separator") == 0)
+    {
+        return -1;
+    }
+    else if (strcmp (id_b, "__separator") == 0)
+    {
+        return 1;
+    }
+
+    if (name_a == NULL)
+    {
+        return 1;
+    }
+    else if (name_b == NULL)
+    {
+        return -1;
+    }
+
+    return g_utf8_collate (name_a, name_b);
+}
+
+static int
+compare_theme  (GtkTreeModel *model,
+                GtkTreeIter  *a,
+                GtkTreeIter  *b,
+                gpointer      user_data)
+{
+    char *name_a;
+    char *name_b;
+    char *id_a;
+    char *id_b;
+    int   result;
+
+    gtk_tree_model_get (model, a, NAME_COLUMN, &name_a, -1);
+    gtk_tree_model_get (model, b, NAME_COLUMN, &name_b, -1);
+    gtk_tree_model_get (model, a, ID_COLUMN, &id_a, -1);
+    gtk_tree_model_get (model, b, ID_COLUMN, &id_b, -1);
+
+    result = compare_theme_names (name_a, name_b, id_a, id_b);
+
+    g_free (name_a);
+    g_free (name_b);
+    g_free (id_a);
+    g_free (id_b);
+
+    return result;
+}
+
+static gboolean
+separator_func (GtkTreeModel *model,
+                GtkTreeIter  *iter,
+                gpointer      data)
+{
+    int   column = GPOINTER_TO_INT (data);
+    char *text;
+
+    gtk_tree_model_get (model, iter, column, &text, -1);
+
+    if (text != NULL && strcmp (text, "__separator") == 0)
+    {
+        return TRUE;
+    }
+
+    g_free (text);
+
+    return FALSE;
+}
+
+static void
+setup_treeview (GtkWidget *tree,
+                GtkWidget *preview)
+{
+    GtkTreeStore      *store;
+    GtkTreeViewColumn *column;
+    GtkCellRenderer   *renderer;
+    GtkTreeSelection  *select;
+
+    store = gtk_tree_store_new (N_COLUMNS,
+                                G_TYPE_STRING,
+                                G_TYPE_STRING);
+    populate_model (store);
+
+    gtk_tree_view_set_model (GTK_TREE_VIEW (tree),
+                             GTK_TREE_MODEL (store));
+
+    g_object_unref (store);
+
+#if GTK_CHECK_VERSION(2,10,0)
+    g_object_set (tree, "show-expanders", FALSE, NULL);
+#endif
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes ("Name", renderer,
+             "text", NAME_COLUMN,
+             NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
+
+    gtk_tree_view_column_set_sort_column_id (column, NAME_COLUMN);
+    gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store),
+                                     NAME_COLUMN,
+                                     compare_theme,
+                                     NULL, NULL);
+    gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
+                                          NAME_COLUMN,
+                                          GTK_SORT_ASCENDING);
+
+    gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (tree),
+                                          separator_func,
+                                          GINT_TO_POINTER (ID_COLUMN),
+                                          NULL);
+
+    select = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree));
+    gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE);
+    g_signal_connect (G_OBJECT (select), "changed",
+                      G_CALLBACK (tree_selection_changed_cb),
+                      preview);
+
+}
+
+static void
+setup_treeview_selection (GtkWidget *tree)
+{
+    char         *theme;
+    GtkTreeModel *model;
+    GtkTreeIter   iter;
+    GtkTreePath  *path = NULL;
+    gboolean      is_writable;
+
+    theme = config_get_theme (&is_writable);
+
+    if (! is_writable)
+    {
+        gtk_widget_set_sensitive (tree, FALSE);
+    }
+
+    model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree));
+
+    if (theme && gtk_tree_model_get_iter_first (model, &iter))
+    {
+
+        do
+        {
+            char *id;
+            gboolean found;
+
+            gtk_tree_model_get (model, &iter,
+                                ID_COLUMN, &id, -1);
+            found = (id && strcmp (id, theme) == 0);
+            g_free (id);
+
+            if (found)
+            {
+                path = gtk_tree_model_get_path (model, &iter);
+                break;
+            }
+
+        }
+        while (gtk_tree_model_iter_next (model, &iter));
+    }
+
+    if (path)
+    {
+        gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree),
+                                  path,
+                                  NULL,
+                                  FALSE);
+
+        gtk_tree_path_free (path);
+    }
+
+    g_free (theme);
+}
+
+static void
+reload_themes (void)
+{
+    GtkWidget    *treeview;
+    GtkTreeModel *model;
+
+    treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+    model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+    gtk_tree_store_clear (GTK_TREE_STORE (model));
+    populate_model (GTK_TREE_STORE (model));
+
+    gtk_tree_view_set_model (GTK_TREE_VIEW (treeview),
+                             GTK_TREE_MODEL (model));
+}
+
+static void
+theme_copy_complete_cb (GtkWidget *dialog, gpointer user_data)
+{
+    reload_themes ();
+    gtk_widget_destroy (dialog);
+}
+
+static void
+theme_installer_run (GtkWidget *prefs_dialog, GList *files)
+{
+    GtkWidget *copy_dialog;
+
+    copy_dialog = copy_theme_dialog_new (files);
+    g_list_foreach (files, (GFunc) (g_object_unref), NULL);
+    g_list_free (files);
+
+    gtk_window_set_transient_for (GTK_WINDOW (copy_dialog),
+                                  GTK_WINDOW (prefs_dialog));
+    gtk_window_set_icon_name (GTK_WINDOW (copy_dialog),
+                              "preferences-desktop-screensaver");
+
+    g_signal_connect (copy_dialog, "complete",
+                      G_CALLBACK (theme_copy_complete_cb), NULL);
+
+    copy_theme_dialog_begin (COPY_THEME_DIALOG (copy_dialog));
+}
+
+/* Callback issued during drag movements */
+static gboolean
+drag_motion_cb (GtkWidget      *widget,
+                GdkDragContext *context,
+                int             x,
+                int             y,
+                guint           time,
+                gpointer        data)
+{
+    return FALSE;
+}
+
+/* Callback issued during drag leaves */
+static void
+drag_leave_cb (GtkWidget      *widget,
+               GdkDragContext *context,
+               guint           time,
+               gpointer        data)
+{
+    gtk_widget_queue_draw (widget);
+}
+
+/* GIO has no version of mate_vfs_uri_list_parse(), so copy from MateVFS
+ * and re-work to create GFiles.
+**/
+static GList *
+uri_list_parse (const gchar *uri_list)
+{
+    const gchar *p, *q;
+    gchar *retval;
+    GFile *file;
+    GList *result = NULL;
+
+    g_return_val_if_fail (uri_list != NULL, NULL);
+
+    p = uri_list;
+
+    /* We don't actually try to validate the URI according to RFC
+     * 2396, or even check for allowed characters - we just ignore
+     * comments and trim whitespace off the ends.  We also
+     * allow LF delimination as well as the specified CRLF.
+     */
+    while (p != NULL)
+    {
+        if (*p != '#')
+        {
+            while (g_ascii_isspace (*p))
+                p++;
+
+            q = p;
+            while ((*q != '\0')
+                    && (*q != '\n')
+                    && (*q != '\r'))
+                q++;
+
+            if (q > p)
+            {
+                q--;
+                while (q > p
+                        && g_ascii_isspace (*q))
+                    q--;
+
+                retval = g_malloc (q - p + 2);
+                strncpy (retval, p, q - p + 1);
+                retval[q - p + 1] = '\0';
+
+                file = g_file_new_for_uri (retval);
+
+                g_free (retval);
+
+                if (file != NULL)
+                    result = g_list_prepend (result, file);
+            }
+        }
+        p = strchr (p, '\n');
+        if (p != NULL)
+            p++;
+    }
+
+    return g_list_reverse (result);
+}
+
+/* Callback issued on actual drops. Attempts to load the file dropped. */
+static void
+drag_data_received_cb (GtkWidget        *widget,
+                       GdkDragContext   *context,
+                       int               x,
+                       int               y,
+                       GtkSelectionData *selection_data,
+                       guint             info,
+                       guint             time,
+                       gpointer          data)
+{
+    GList     *files;
+
+    if (!(info == TARGET_URI_LIST || info == TARGET_NS_URL))
+        return;
+
+    files = uri_list_parse ((char *) selection_data->data);
+    if (files != NULL)
+    {
+        GtkWidget *prefs_dialog;
+
+        prefs_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "prefs_dialog"));
+        theme_installer_run (prefs_dialog, files);
+    }
+}
+
+/* Adapted from totem_time_to_string_text */
+static char *
+time_to_string_text (long time)
+{
+    char *secs, *mins, *hours, *string;
+    int   sec, min, hour;
+
+    sec = time % 60;
+    time = time - sec;
+    min = (time % (60 * 60)) / 60;
+    time = time - (min * 60);
+    hour = time / (60 * 60);
+
+    hours = g_strdup_printf (ngettext ("%d hour",
+                                       "%d hours", hour), hour);
+
+    mins = g_strdup_printf (ngettext ("%d minute",
+                                      "%d minutes", min), min);
+
+    secs = g_strdup_printf (ngettext ("%d second",
+                                      "%d seconds", sec), sec);
+
+    if (hour > 0)
+    {
+        if (sec > 0)
+        {
+            /* hour:minutes:seconds */
+            string = g_strdup_printf (_("%s %s %s"), hours, mins, secs);
+        }
+        else if (min > 0)
+        {
+            /* hour:minutes */
+            string = g_strdup_printf (_("%s %s"), hours, mins);
+        }
+        else
+        {
+            /* hour */
+            string = g_strdup_printf (_("%s"), hours);
+        }
+    }
+    else if (min > 0)
+    {
+        if (sec > 0)
+        {
+            /* minutes:seconds */
+            string = g_strdup_printf (_("%s %s"), mins, secs);
+        }
+        else
+        {
+            /* minutes */
+            string = g_strdup_printf (_("%s"), mins);
+        }
+    }
+    else
+    {
+        /* seconds */
+        string = g_strdup_printf (_("%s"), secs);
+    }
+
+    g_free (hours);
+    g_free (mins);
+    g_free (secs);
+
+    return string;
+}
+
+static char *
+format_value_callback_time (GtkScale *scale,
+                            gdouble   value)
+{
+    if (value == 0)
+        return g_strdup_printf (_("Never"));
+
+    return time_to_string_text (value * 60.0);
+}
+
+static void
+lock_checkbox_toggled (GtkToggleButton *button, gpointer user_data)
+{
+    config_set_lock (gtk_toggle_button_get_active (button));
+}
+
+static void
+enabled_checkbox_toggled (GtkToggleButton *button, gpointer user_data)
+{
+    config_set_enabled (gtk_toggle_button_get_active (button));
+}
+
+static void
+invalid_type_warning (const char *type)
+{
+    g_warning ("Error retrieving configuration key '%s': Invalid type",
+               type);
+}
+
+static void
+ui_disable_lock (gboolean disable)
+{
+    GtkWidget *widget;
+
+    widget = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+    gtk_widget_set_sensitive (widget, !disable);
+    if (disable)
+    {
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
+    }
+}
+
+static void
+ui_set_lock (gboolean enabled)
+{
+    GtkWidget *widget;
+    gboolean   active;
+    gboolean   lock_disabled;
+
+    widget = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+
+    active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+    if (active != enabled)
+    {
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), enabled);
+    }
+    lock_disabled = config_get_lock_disabled ();
+    ui_disable_lock (lock_disabled);
+}
+
+static void
+ui_set_enabled (gboolean enabled)
+{
+    GtkWidget *widget;
+    gboolean   active;
+    gboolean   is_writable;
+    gboolean   lock_disabled;
+
+    widget = GTK_WIDGET (gtk_builder_get_object (builder, "enable_checkbox"));
+    active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+    if (active != enabled)
+    {
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), enabled);
+    }
+
+    widget = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+    config_get_lock (&is_writable);
+    if (is_writable)
+    {
+        gtk_widget_set_sensitive (widget, enabled);
+    }
+    lock_disabled = config_get_lock_disabled ();
+    ui_disable_lock(lock_disabled);
+}
+
+static void
+ui_set_delay (int delay)
+{
+    GtkWidget *widget;
+
+    widget = GTK_WIDGET (gtk_builder_get_object (builder, "activate_delay_hscale"));
+    gtk_range_set_value (GTK_RANGE (widget), delay);
+}
+
+static void
+key_changed_cb (MateConfClient *client,
+                guint        cnxn_id,
+                MateConfEntry  *entry,
+                gpointer     data)
+{
+    const char *key;
+    MateConfValue *value;
+
+    key = mateconf_entry_get_key (entry);
+
+    if (! g_str_has_prefix (key, KEY_DIR) && ! g_str_has_prefix (key, MATE_LOCKDOWN_DIR))
+    {
+        return;
+    }
+
+    value = mateconf_entry_get_value (entry);
+
+    if (strcmp (key, KEY_IDLE_ACTIVATION_ENABLED) == 0)
+    {
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean enabled;
+
+            enabled = mateconf_value_get_bool (value);
+
+            ui_set_enabled (enabled);
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+    }
+    else if (strcmp (key, KEY_LOCK) == 0)
+    {
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean enabled;
+
+            enabled = mateconf_value_get_bool (value);
+
+            ui_set_lock (enabled);
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+    }
+    else if (strcmp (key, KEY_LOCK_DISABLE) == 0)
+    {
+        if (value->type == MATECONF_VALUE_BOOL)
+        {
+            gboolean disabled;
+
+            disabled = mateconf_value_get_bool (value);
+
+            ui_disable_lock (disabled);
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+    }
+    else if (strcmp (key, KEY_THEMES) == 0)
+    {
+        if (value->type == MATECONF_VALUE_LIST)
+        {
+            GtkWidget *treeview;
+
+            treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+            setup_treeview_selection (treeview);
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+    }
+    else if (strcmp (key, KEY_ACTIVATE_DELAY) == 0)
+    {
+
+        if (value->type == MATECONF_VALUE_INT)
+        {
+            int delay;
+
+            delay = mateconf_value_get_int (value);
+            ui_set_delay (delay);
+        }
+        else
+        {
+            invalid_type_warning (key);
+        }
+
+    }
+    else
+    {
+        /*g_warning ("Config key not handled: %s", key);*/
+    }
+}
+
+static void
+fullscreen_preview_previous_cb (GtkWidget *fullscreen_preview_window,
+                                gpointer   user_data)
+{
+    GtkWidget        *treeview;
+    GtkTreeSelection *selection;
+
+    treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+    tree_selection_previous (selection);
+}
+
+static void
+fullscreen_preview_next_cb (GtkWidget *fullscreen_preview_window,
+                            gpointer   user_data)
+{
+    GtkWidget        *treeview;
+    GtkTreeSelection *selection;
+
+    treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+    tree_selection_next (selection);
+}
+
+static void
+fullscreen_preview_cancelled_cb (GtkWidget *button,
+                                 gpointer   user_data)
+{
+
+    GtkWidget *fullscreen_preview_area;
+    GtkWidget *fullscreen_preview_window;
+    GtkWidget *preview_area;
+    GtkWidget *dialog;
+
+    preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "preview_area"));
+    gs_job_set_widget (job, preview_area);
+
+    fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area"));
+    preview_clear (fullscreen_preview_area);
+
+    fullscreen_preview_window = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_window"));
+    gtk_widget_hide (fullscreen_preview_window);
+
+    dialog = GTK_WIDGET (gtk_builder_get_object (builder, "prefs_dialog"));
+    gtk_widget_show (dialog);
+    gtk_window_present (GTK_WINDOW (dialog));
+}
+
+static void
+fullscreen_preview_start_cb (GtkWidget *widget,
+                             gpointer   user_data)
+{
+    GtkWidget *fullscreen_preview_area;
+    GtkWidget *fullscreen_preview_window;
+    GtkWidget *dialog;
+
+    dialog = GTK_WIDGET (gtk_builder_get_object (builder, "prefs_dialog"));
+    gtk_widget_hide (dialog);
+
+    fullscreen_preview_window = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_window"));
+
+    gtk_window_fullscreen (GTK_WINDOW (fullscreen_preview_window));
+    gtk_window_set_keep_above (GTK_WINDOW (fullscreen_preview_window), TRUE);
+
+    gtk_widget_show (fullscreen_preview_window);
+    gtk_widget_grab_focus (fullscreen_preview_window);
+
+    fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area"));
+    preview_clear (fullscreen_preview_area);
+    gs_job_set_widget (job, fullscreen_preview_area);
+}
+
+static void
+constrain_list_size (GtkWidget      *widget,
+                     GtkRequisition *requisition,
+                     GtkWidget      *to_size)
+{
+    GtkRequisition req;
+    int            max_height;
+
+    /* constrain height to be the tree height up to a max */
+    max_height = (gdk_screen_get_height (gtk_widget_get_screen (widget))) / 4;
+
+    gtk_widget_size_request (to_size, &req);
+
+    requisition->height = MIN (req.height, max_height);
+}
+
+static void
+setup_list_size_constraint (GtkWidget *widget,
+                            GtkWidget *to_size)
+{
+    g_signal_connect (widget, "size-request",
+                      G_CALLBACK (constrain_list_size), to_size);
+}
+
+static gboolean
+check_is_root_user (void)
+{
+#ifndef G_OS_WIN32
+    uid_t ruid, euid, suid; /* Real, effective and saved user ID's */
+    gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */
+
+#ifdef HAVE_GETRESUID
+    if (getresuid (&ruid, &euid, &suid) != 0 ||
+            getresgid (&rgid, &egid, &sgid) != 0)
+#endif /* HAVE_GETRESUID */
+    {
+        suid = ruid = getuid ();
+        sgid = rgid = getgid ();
+        euid = geteuid ();
+        egid = getegid ();
+    }
+
+    if (ruid == 0)
+    {
+        return TRUE;
+    }
+
+#endif
+    return FALSE;
+}
+
+static void
+setup_for_root_user (void)
+{
+    GtkWidget *lock_checkbox;
+    GtkWidget *label;
+
+    lock_checkbox = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+    label = GTK_WIDGET (gtk_builder_get_object (builder, "root_warning_label"));
+
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lock_checkbox), FALSE);
+    gtk_widget_set_sensitive (lock_checkbox, FALSE);
+
+    gtk_widget_show (label);
+}
+
+static GdkVisual *
+get_best_visual (void)
+{
+    char         *command;
+    char         *std_output;
+    int           exit_status;
+    GError       *error;
+    unsigned long v;
+    char          c;
+    GdkVisual    *visual;
+    gboolean      res;
+
+    visual = NULL;
+
+    command = g_build_filename (LIBEXECDIR, "mate-screensaver-gl-helper", NULL);
+
+    error = NULL;
+    res = g_spawn_command_line_sync (command,
+                                     &std_output,
+                                     NULL,
+                                     &exit_status,
+                                     &error);
+
+    if (! res)
+    {
+        g_debug ("Could not run command '%s': %s", command, error->message);
+        g_error_free (error);
+        goto out;
+    }
+
+    if (1 == sscanf (std_output, "0x%lx %c", &v, &c))
+    {
+        if (v != 0)
+        {
+            VisualID      visual_id;
+
+            visual_id = (VisualID) v;
+            visual = gdkx_visual_get (visual_id);
+
+            g_debug ("Found best visual for GL: 0x%x",
+                     (unsigned int) visual_id);
+        }
+    }
+
+out:
+    g_free (std_output);
+    g_free (command);
+
+    return visual;
+}
+
+static GdkColormap *
+get_best_colormap_for_screen (GdkScreen *screen)
+{
+    GdkColormap *colormap;
+    GdkVisual   *visual;
+
+    g_return_val_if_fail (screen != NULL, NULL);
+
+    visual = get_best_visual ();
+
+    colormap = NULL;
+    if (visual != NULL)
+    {
+        colormap = gdk_colormap_new (visual, FALSE);
+    }
+
+    return colormap;
+}
+
+static void
+widget_set_best_colormap (GtkWidget *widget)
+{
+    GdkColormap *colormap;
+
+    g_return_if_fail (widget != NULL);
+
+    colormap = get_best_colormap_for_screen (gtk_widget_get_screen (widget));
+    if (colormap != NULL)
+    {
+        gtk_widget_set_colormap (widget, colormap);
+        g_object_unref (colormap);
+    }
+}
+
+static gboolean
+setup_treeview_idle (gpointer data)
+{
+    GtkWidget *preview;
+    GtkWidget *treeview;
+
+    preview  = GTK_WIDGET (gtk_builder_get_object (builder, "preview_area"));
+    treeview = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+
+    setup_treeview (treeview, preview);
+    setup_treeview_selection (treeview);
+
+    return FALSE;
+}
+
+static gboolean
+is_program_in_path (const char *program)
+{
+    char *tmp = g_find_program_in_path (program);
+    if (tmp != NULL)
+    {
+        g_free (tmp);
+        return TRUE;
+    }
+    else
+    {
+        return FALSE;
+    }
+}
+
+static void
+init_capplet (void)
+{
+    GtkWidget *dialog;
+    GtkWidget *preview;
+    GtkWidget *treeview;
+    GtkWidget *list_scroller;
+    GtkWidget *activate_delay_hscale;
+    GtkWidget *activate_delay_hbox;
+    GtkWidget *label;
+    GtkWidget *enabled_checkbox;
+    GtkWidget *lock_checkbox;
+    GtkWidget *root_warning_label;
+    GtkWidget *preview_button;
+    GtkWidget *gpm_button;
+    GtkWidget *fullscreen_preview_window;
+    GtkWidget *fullscreen_preview_previous;
+    GtkWidget *fullscreen_preview_next;
+    GtkWidget *fullscreen_preview_area;
+    GtkWidget *fullscreen_preview_close;
+    char      *gtk_builder_file;
+    char      *string;
+    gdouble    activate_delay;
+    gboolean   enabled;
+    gboolean   is_writable;
+    MateConfClient *client;
+    GError    *error=NULL;
+
+    gtk_builder_file = g_build_filename (GTKBUILDERDIR, GTK_BUILDER_FILE, NULL);
+    builder = gtk_builder_new();
+    if (!gtk_builder_add_from_file(builder, gtk_builder_file, &error))
+    {
+        g_warning("Couldn't load builder file: %s", error->message);
+        g_error_free(error);
+    }
+    g_free (gtk_builder_file);
+
+    if (builder == NULL)
+    {
+
+        dialog = gtk_message_dialog_new (NULL,
+                                         0, GTK_MESSAGE_ERROR,
+                                         GTK_BUTTONS_OK,
+                                         _("Could not load the main interface"));
+        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+                _("Please make sure that the screensaver is properly installed"));
+
+        gtk_dialog_set_default_response (GTK_DIALOG (dialog),
+                                         GTK_RESPONSE_OK);
+        gtk_dialog_run (GTK_DIALOG (dialog));
+        gtk_widget_destroy (dialog);
+        exit (1);
+    }
+
+    preview            = GTK_WIDGET (gtk_builder_get_object (builder, "preview_area"));
+    dialog             = GTK_WIDGET (gtk_builder_get_object (builder, "prefs_dialog"));
+    treeview           = GTK_WIDGET (gtk_builder_get_object (builder, "savers_treeview"));
+    list_scroller      = GTK_WIDGET (gtk_builder_get_object (builder, "themes_scrolled_window"));
+    activate_delay_hscale = GTK_WIDGET (gtk_builder_get_object (builder, "activate_delay_hscale"));
+    activate_delay_hbox   = GTK_WIDGET (gtk_builder_get_object (builder, "activate_delay_hbox"));
+    enabled_checkbox   = GTK_WIDGET (gtk_builder_get_object (builder, "enable_checkbox"));
+    lock_checkbox      = GTK_WIDGET (gtk_builder_get_object (builder, "lock_checkbox"));
+    root_warning_label = GTK_WIDGET (gtk_builder_get_object (builder, "root_warning_label"));
+    preview_button     = GTK_WIDGET (gtk_builder_get_object (builder, "preview_button"));
+    gpm_button         = GTK_WIDGET (gtk_builder_get_object (builder, "gpm_button"));
+    fullscreen_preview_window = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_window"));
+    fullscreen_preview_area = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_area"));
+    fullscreen_preview_close = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_close"));
+    fullscreen_preview_previous = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_previous_button"));
+    fullscreen_preview_next = GTK_WIDGET (gtk_builder_get_object (builder, "fullscreen_preview_next_button"));
+
+    label              = GTK_WIDGET (gtk_builder_get_object (builder, "activate_delay_label"));
+    gtk_label_set_mnemonic_widget (GTK_LABEL (label), activate_delay_hscale);
+    label              = GTK_WIDGET (gtk_builder_get_object (builder, "savers_label"));
+    gtk_label_set_mnemonic_widget (GTK_LABEL (label), treeview);
+
+    gtk_widget_set_no_show_all (root_warning_label, TRUE);
+    widget_set_best_colormap (preview);
+
+    if (! is_program_in_path (GPM_COMMAND))
+    {
+        gtk_widget_set_no_show_all (gpm_button, TRUE);
+        gtk_widget_hide (gpm_button);
+    }
+
+    activate_delay = config_get_activate_delay (&is_writable);
+    ui_set_delay (activate_delay);
+    if (! is_writable)
+    {
+        gtk_widget_set_sensitive (activate_delay_hbox, FALSE);
+    }
+    g_signal_connect (activate_delay_hscale, "format-value",
+                      G_CALLBACK (format_value_callback_time), NULL);
+
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lock_checkbox), config_get_lock (&is_writable));
+    if (! is_writable)
+    {
+        gtk_widget_set_sensitive (lock_checkbox, FALSE);
+    }
+    g_signal_connect (lock_checkbox, "toggled",
+                      G_CALLBACK (lock_checkbox_toggled), NULL);
+
+    enabled = config_get_enabled (&is_writable);
+    ui_set_enabled (enabled);
+    if (! is_writable)
+    {
+        gtk_widget_set_sensitive (enabled_checkbox, FALSE);
+    }
+    g_signal_connect (enabled_checkbox, "toggled",
+                      G_CALLBACK (enabled_checkbox_toggled), NULL);
+
+    setup_list_size_constraint (list_scroller, treeview);
+    gtk_widget_set_size_request (preview, 480, 300);
+    gtk_window_set_icon_name (GTK_WINDOW (dialog), "preferences-desktop-screensaver");
+    gtk_window_set_icon_name (GTK_WINDOW (fullscreen_preview_window), "screensaver");
+
+    gtk_drag_dest_set (dialog, GTK_DEST_DEFAULT_ALL,
+                       drop_types, G_N_ELEMENTS (drop_types),
+                       GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE);
+
+    g_signal_connect (dialog, "drag-motion",
+                      G_CALLBACK (drag_motion_cb), NULL);
+    g_signal_connect (dialog, "drag-leave",
+                      G_CALLBACK (drag_leave_cb), NULL);
+    g_signal_connect (dialog, "drag-data-received",
+                      G_CALLBACK (drag_data_received_cb), NULL);
+
+    gtk_widget_show_all (dialog);
+
+    /* Update list of themes if using random screensaver */
+    client = mateconf_client_get_default ();
+    string = mateconf_client_get_string (client, KEY_MODE, NULL);
+    if (string != NULL)
+    {
+        int mode;
+        GSList *list;
+
+        mateconf_string_to_enum (mode_enum_map, string, &mode);
+        g_free (string);
+
+        if (mode == GS_MODE_RANDOM)
+        {
+            list = get_all_theme_ids (theme_manager);
+            mateconf_client_set_list (client, KEY_THEMES, MATECONF_VALUE_STRING, list, NULL);
+
+            g_slist_foreach (list, (GFunc) g_free, NULL);
+            g_slist_free (list);
+        }
+    }
+
+    mateconf_client_add_dir (client, KEY_DIR,
+                             MATECONF_CLIENT_PRELOAD_ONELEVEL,
+                             NULL);
+    mateconf_client_notify_add (client,
+                                KEY_DIR,
+                                key_changed_cb,
+                                NULL, NULL, NULL);
+    mateconf_client_add_dir (client, MATE_LOCKDOWN_DIR,
+                             MATECONF_CLIENT_PRELOAD_ONELEVEL,
+                             NULL);
+    mateconf_client_notify_add (client,
+                                MATE_LOCKDOWN_DIR,
+                                key_changed_cb,
+                                NULL, NULL, NULL);
+
+    g_object_unref (client);
+
+    preview_clear (preview);
+    gs_job_set_widget (job, preview);
+
+    if (check_is_root_user ())
+    {
+        setup_for_root_user ();
+    }
+
+    g_signal_connect (activate_delay_hscale, "value-changed",
+                      G_CALLBACK (activate_delay_value_changed_cb), NULL);
+
+    g_signal_connect (dialog, "response",
+                      G_CALLBACK (response_cb), NULL);
+
+    g_signal_connect (preview_button, "clicked",
+                      G_CALLBACK (fullscreen_preview_start_cb),
+                      treeview);
+
+    g_signal_connect (fullscreen_preview_close, "clicked",
+                      G_CALLBACK (fullscreen_preview_cancelled_cb), NULL);
+    g_signal_connect (fullscreen_preview_previous, "clicked",
+                      G_CALLBACK (fullscreen_preview_previous_cb), NULL);
+    g_signal_connect (fullscreen_preview_next, "clicked",
+                      G_CALLBACK (fullscreen_preview_next_cb), NULL);
+
+    g_idle_add ((GSourceFunc)setup_treeview_idle, NULL);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    gtk_init (&argc, &argv);
+
+    job = gs_job_new ();
+    theme_manager = gs_theme_manager_new ();
+
+    init_capplet ();
+
+    gtk_main ();
+
+    g_object_unref (theme_manager);
+    g_object_unref (job);
+
+    return 0;
+}
diff --git a/src/mate-screensaver.c b/src/mate-screensaver.c
new file mode 100644
index 0000000..1e76fe6
--- /dev/null
+++ b/src/mate-screensaver.c
@@ -0,0 +1,132 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "mate-screensaver.h"
+#include "gs-monitor.h"
+#include "gs-debug.h"
+
+void
+mate_screensaver_quit (void)
+{
+	gtk_main_quit ();
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+	GSMonitor          *monitor;
+	GError             *error = NULL;
+	static gboolean     show_version = FALSE;
+	static gboolean     no_daemon    = FALSE;
+	static gboolean     debug        = FALSE;
+	static GOptionEntry entries []   =
+	{
+		{ "version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL },
+		{ "no-daemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Don't become a daemon"), NULL },
+		{ "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL },
+		{ NULL }
+	};
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	if (! gtk_init_with_args (&argc, &argv, NULL, entries, NULL, &error))
+	{
+		if (error)
+		{
+			g_warning ("%s", error->message);
+			g_error_free (error);
+		}
+		else
+		{
+			g_warning ("Unable to initialize GTK+");
+		}
+		exit (1);
+	}
+
+	if (show_version)
+	{
+		g_print ("%s %s\n", argv [0], VERSION);
+		exit (1);
+	}
+
+	/* debug to a file if in deamon mode */
+	gs_debug_init (debug, ! no_daemon);
+	gs_debug ("initializing mate-screensaver %s", VERSION);
+
+	monitor = gs_monitor_new ();
+
+	if (monitor == NULL)
+	{
+		exit (1);
+	}
+
+	error = NULL;
+	if (! gs_monitor_start (monitor, &error))
+	{
+		if (error)
+		{
+			g_warning ("%s", error->message);
+			g_error_free (error);
+		}
+		else
+		{
+			g_warning ("Unable to start screensaver");
+		}
+		exit (1);
+	}
+
+	/* Don't close stdout and stderr for now */
+	if (! no_daemon && daemon (0, 1))
+	{
+		g_error ("Could not daemonize: %s", g_strerror (errno));
+	}
+
+	gtk_main ();
+
+	g_object_unref (monitor);
+
+	gs_debug ("mate-screensaver finished");
+
+	gs_debug_shutdown ();
+
+	return 0;
+}
diff --git a/src/mate-screensaver.c.orig b/src/mate-screensaver.c.orig
new file mode 100644
index 0000000..456d377
--- /dev/null
+++ b/src/mate-screensaver.c.orig
@@ -0,0 +1,132 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*-
+ *
+ * Copyright (C) 2004-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "mate-screensaver.h"
+#include "gs-monitor.h"
+#include "gs-debug.h"
+
+void
+mate_screensaver_quit (void)
+{
+    gtk_main_quit ();
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+    GSMonitor          *monitor;
+    GError             *error = NULL;
+    static gboolean     show_version = FALSE;
+    static gboolean     no_daemon    = FALSE;
+    static gboolean     debug        = FALSE;
+    static GOptionEntry entries []   =
+    {
+        { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL },
+        { "no-daemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Don't become a daemon"), NULL },
+        { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL },
+        { NULL }
+    };
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    if (! gtk_init_with_args (&argc, &argv, NULL, entries, NULL, &error))
+    {
+        if (error)
+        {
+            g_warning ("%s", error->message);
+            g_error_free (error);
+        }
+        else
+        {
+            g_warning ("Unable to initialize GTK+");
+        }
+        exit (1);
+    }
+
+    if (show_version)
+    {
+        g_print ("%s %s\n", argv [0], VERSION);
+        exit (1);
+    }
+
+    /* debug to a file if in deamon mode */
+    gs_debug_init (debug, ! no_daemon);
+    gs_debug ("initializing mate-screensaver %s", VERSION);
+
+    monitor = gs_monitor_new ();
+
+    if (monitor == NULL)
+    {
+        exit (1);
+    }
+
+    error = NULL;
+    if (! gs_monitor_start (monitor, &error))
+    {
+        if (error)
+        {
+            g_warning ("%s", error->message);
+            g_error_free (error);
+        }
+        else
+        {
+            g_warning ("Unable to start screensaver");
+        }
+        exit (1);
+    }
+
+    /* Don't close stdout and stderr for now */
+    if (! no_daemon && daemon (0, 1))
+    {
+        g_error ("Could not daemonize: %s", g_strerror (errno));
+    }
+
+    gtk_main ();
+
+    g_object_unref (monitor);
+
+    gs_debug ("mate-screensaver finished");
+
+    gs_debug_shutdown ();
+
+    return 0;
+}
diff --git a/src/mate-screensaver.desktop.in.in b/src/mate-screensaver.desktop.in.in
new file mode 100644
index 0000000..8aaeb18
--- /dev/null
+++ b/src/mate-screensaver.desktop.in.in
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Type=Application
+_Name=Screensaver
+_Comment=Launch screen saver and locker program
+Icon=preferences-desktop-screensaver
+Exec=mate-screensaver
+OnlyShowIn=MATE;
+NoDisplay=true
+X-MATE-Autostart-Phase=Application
+X-MATE-Autostart-Notify=true
+X-MATE-Bugzilla-Bugzilla=MATE
+X-MATE-Bugzilla-Product=mate-screensaver
+X-MATE-Bugzilla-Component=general
+X-MATE-Bugzilla-Version=@VERSION@
diff --git a/src/mate-screensaver.h b/src/mate-screensaver.h
new file mode 100644
index 0000000..34b3a7c
--- /dev/null
+++ b/src/mate-screensaver.h
@@ -0,0 +1,32 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2004-2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#ifndef __MATE_SCREENSAVER_H
+#define __MATE_SCREENSAVER_H
+
+G_BEGIN_DECLS
+
+void mate_screensaver_quit (void);
+
+G_END_DECLS
+
+#endif
diff --git a/src/setuid.c b/src/setuid.c
new file mode 100644
index 0000000..80e4659
--- /dev/null
+++ b/src/setuid.c
@@ -0,0 +1,247 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * setuid.c --- management of runtime privileges.
+ *
+ * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <jwz at jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#include "config.h"
+
+#ifndef EPERM
+#include <errno.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <pwd.h>		/* for getpwnam() and struct passwd */
+#include <grp.h>		/* for getgrgid() and struct group */
+#include <glib.h>
+
+#include "setuid.h"
+
+static char *
+uid_gid_string (uid_t uid,
+                gid_t gid)
+{
+	static char   *buf;
+	struct passwd *p = NULL;
+	struct group  *g = NULL;
+
+	p = getpwuid (uid);
+	g = getgrgid (gid);
+
+	buf = g_strdup_printf ("%s/%s (%ld/%ld)",
+	                       (p && p->pw_name ? p->pw_name : "???"),
+	                       (g && g->gr_name ? g->gr_name : "???"),
+	                       (long) uid, (long) gid);
+
+	return buf;
+}
+
+static gboolean
+set_ids_by_number (uid_t  uid,
+                   gid_t  gid,
+                   char **message_ret)
+{
+	int uid_errno = 0;
+	int gid_errno = 0;
+	int sgs_errno = 0;
+	struct passwd *p = getpwuid (uid);
+	struct group  *g = getgrgid (gid);
+
+	if (message_ret)
+		*message_ret = NULL;
+
+	/* Rumor has it that some implementations of of setuid() do nothing
+	   when called with -1; therefore, if the "nobody" user has a uid of
+	   -1, then that would be Really Bad.  Rumor further has it that such
+	   systems really ought to be using -2 for "nobody", since that works.
+	   So, if we get a uid (or gid, for good measure) of -1, switch to -2
+	   instead.  Note that this must be done after we've looked up the
+	   user/group names with getpwuid(-1) and/or getgrgid(-1).
+	*/
+	if (gid == (gid_t) -1) gid = (gid_t) -2;
+	if (uid == (uid_t) -1) uid = (uid_t) -2;
+
+	errno = 0;
+	if (setgroups (1, &gid) < 0)
+		sgs_errno = errno ? errno : -1;
+
+	errno = 0;
+	if (setgid (gid) != 0)
+		gid_errno = errno ? errno : -1;
+
+	errno = 0;
+	if (setuid (uid) != 0)
+		uid_errno = errno ? errno : -1;
+
+	if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0)
+	{
+		static char *reason;
+		reason = g_strdup_printf ("changed uid/gid to %s/%s (%ld/%ld).",
+		                          (p && p->pw_name ? p->pw_name : "???"),
+		                          (g && g->gr_name ? g->gr_name : "???"),
+		                          (long) uid, (long) gid);
+		if (message_ret)
+			*message_ret = g_strdup (reason);
+
+		g_free (reason);
+
+		return TRUE;
+	}
+	else
+	{
+		char *reason = NULL;
+
+		if (sgs_errno)
+		{
+			reason = g_strdup_printf ("couldn't setgroups to %s (%ld)",
+			                          (g && g->gr_name ? g->gr_name : "???"),
+			                          (long) gid);
+			if (sgs_errno == -1)
+				fprintf (stderr, "%s: unknown error\n", reason);
+			else
+			{
+				errno = sgs_errno;
+				perror (reason);
+			}
+			g_free (reason);
+			reason = NULL;
+		}
+
+		if (gid_errno)
+		{
+			reason = g_strdup_printf ("couldn't set gid to %s (%ld)",
+			                          (g && g->gr_name ? g->gr_name : "???"),
+			                          (long) gid);
+			if (gid_errno == -1)
+				fprintf (stderr, "%s: unknown error\n", reason);
+			else
+			{
+				errno = gid_errno;
+				perror (reason);
+			}
+			g_free (reason);
+			reason = NULL;
+		}
+
+		if (uid_errno)
+		{
+			reason = g_strdup_printf ("couldn't set uid to %s (%ld)",
+			                          (p && p->pw_name ? p->pw_name : "???"),
+			                          (long) uid);
+			if (uid_errno == -1)
+				fprintf (stderr, "%s: unknown error\n", reason);
+			else
+			{
+				errno = uid_errno;
+				perror (reason);
+			}
+			g_free (reason);
+			reason = NULL;
+		}
+		return FALSE;
+	}
+	return FALSE;
+}
+
+
+/* If we've been run as setuid or setgid to someone else (most likely root)
+   turn off the extra permissions so that random user-specified programs
+   don't get special privileges.  (On some systems it is necessary to install
+   this program as setuid root in order to read the passwd file to implement
+   lock-mode.)
+
+   *** WARNING: DO NOT DISABLE ANY OF THE FOLLOWING CODE!
+   If you do so, you will open a security hole.  See the sections
+   of the xscreensaver manual titled "LOCKING AND ROOT LOGINS",
+   and "USING XDM".
+*/
+
+/* Returns TRUE if OK to lock, FALSE otherwise */
+gboolean
+hack_uid (char **nolock_reason,
+          char **orig_uid,
+          char **uid_message)
+{
+	char    *reason;
+	gboolean ret;
+
+	ret = TRUE;
+	reason = NULL;
+
+	if (nolock_reason != NULL)
+	{
+		*nolock_reason = NULL;
+	}
+	if (orig_uid != NULL)
+	{
+		*orig_uid = NULL;
+	}
+	if (uid_message != NULL)
+	{
+		*uid_message = NULL;
+	}
+
+	/* Discard privileges, and set the effective user/group ids to the
+	   real user/group ids.  That is, give up our "chmod +s" rights.
+	*/
+	{
+		uid_t euid = geteuid ();
+		gid_t egid = getegid ();
+		uid_t uid  = getuid ();
+		gid_t gid  = getgid ();
+
+		if (orig_uid != NULL)
+		{
+			*orig_uid = uid_gid_string (euid, egid);
+		}
+
+		if (uid != euid || gid != egid)
+		{
+			if (! set_ids_by_number (uid, gid, uid_message))
+			{
+				reason = g_strdup ("unable to discard privileges.");
+
+				ret = FALSE;
+				goto out;
+			}
+		}
+	}
+
+
+	/* Locking can't work when running as root, because we have no way of
+	   knowing what the user id of the logged in user is (so we don't know
+	   whose password to prompt for.)
+
+	   *** WARNING: DO NOT DISABLE THIS CODE!
+	   If you do so, you will open a security hole.  See the sections
+	   of the xscreensaver manual titled "LOCKING AND ROOT LOGINS",
+	   and "USING XDM".
+	*/
+	if (getuid () == (uid_t) 0)
+	{
+		reason = g_strdup ("running as root");
+		ret = FALSE;
+		goto out;
+	}
+
+out:
+	if (nolock_reason != NULL)
+	{
+		*nolock_reason = g_strdup (reason);
+	}
+	g_free (reason);
+
+	return ret;
+}
diff --git a/src/setuid.c.orig b/src/setuid.c.orig
new file mode 100644
index 0000000..2c55c2e
--- /dev/null
+++ b/src/setuid.c.orig
@@ -0,0 +1,247 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * setuid.c --- management of runtime privileges.
+ *
+ * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <jwz at jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#include "config.h"
+
+#ifndef EPERM
+#include <errno.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <pwd.h>		/* for getpwnam() and struct passwd */
+#include <grp.h>		/* for getgrgid() and struct group */
+#include <glib.h>
+
+#include "setuid.h"
+
+static char *
+uid_gid_string (uid_t uid,
+                gid_t gid)
+{
+    static char   *buf;
+    struct passwd *p = NULL;
+    struct group  *g = NULL;
+
+    p = getpwuid (uid);
+    g = getgrgid (gid);
+
+    buf = g_strdup_printf ("%s/%s (%ld/%ld)",
+                           (p && p->pw_name ? p->pw_name : "???"),
+                           (g && g->gr_name ? g->gr_name : "???"),
+                           (long) uid, (long) gid);
+
+    return buf;
+}
+
+static gboolean
+set_ids_by_number (uid_t  uid,
+                   gid_t  gid,
+                   char **message_ret)
+{
+    int uid_errno = 0;
+    int gid_errno = 0;
+    int sgs_errno = 0;
+    struct passwd *p = getpwuid (uid);
+    struct group  *g = getgrgid (gid);
+
+    if (message_ret)
+        *message_ret = NULL;
+
+    /* Rumor has it that some implementations of of setuid() do nothing
+       when called with -1; therefore, if the "nobody" user has a uid of
+       -1, then that would be Really Bad.  Rumor further has it that such
+       systems really ought to be using -2 for "nobody", since that works.
+       So, if we get a uid (or gid, for good measure) of -1, switch to -2
+       instead.  Note that this must be done after we've looked up the
+       user/group names with getpwuid(-1) and/or getgrgid(-1).
+    */
+    if (gid == (gid_t) -1) gid = (gid_t) -2;
+    if (uid == (uid_t) -1) uid = (uid_t) -2;
+
+    errno = 0;
+    if (setgroups (1, &gid) < 0)
+        sgs_errno = errno ? errno : -1;
+
+    errno = 0;
+    if (setgid (gid) != 0)
+        gid_errno = errno ? errno : -1;
+
+    errno = 0;
+    if (setuid (uid) != 0)
+        uid_errno = errno ? errno : -1;
+
+    if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0)
+    {
+        static char *reason;
+        reason = g_strdup_printf ("changed uid/gid to %s/%s (%ld/%ld).",
+                                  (p && p->pw_name ? p->pw_name : "???"),
+                                  (g && g->gr_name ? g->gr_name : "???"),
+                                  (long) uid, (long) gid);
+        if (message_ret)
+            *message_ret = g_strdup (reason);
+
+        g_free (reason);
+
+        return TRUE;
+    }
+    else
+    {
+        char *reason = NULL;
+
+        if (sgs_errno)
+        {
+            reason = g_strdup_printf ("couldn't setgroups to %s (%ld)",
+                                      (g && g->gr_name ? g->gr_name : "???"),
+                                      (long) gid);
+            if (sgs_errno == -1)
+                fprintf (stderr, "%s: unknown error\n", reason);
+            else
+            {
+                errno = sgs_errno;
+                perror (reason);
+            }
+            g_free (reason);
+            reason = NULL;
+        }
+
+        if (gid_errno)
+        {
+            reason = g_strdup_printf ("couldn't set gid to %s (%ld)",
+                                      (g && g->gr_name ? g->gr_name : "???"),
+                                      (long) gid);
+            if (gid_errno == -1)
+                fprintf (stderr, "%s: unknown error\n", reason);
+            else
+            {
+                errno = gid_errno;
+                perror (reason);
+            }
+            g_free (reason);
+            reason = NULL;
+        }
+
+        if (uid_errno)
+        {
+            reason = g_strdup_printf ("couldn't set uid to %s (%ld)",
+                                      (p && p->pw_name ? p->pw_name : "???"),
+                                      (long) uid);
+            if (uid_errno == -1)
+                fprintf (stderr, "%s: unknown error\n", reason);
+            else
+            {
+                errno = uid_errno;
+                perror (reason);
+            }
+            g_free (reason);
+            reason = NULL;
+        }
+        return FALSE;
+    }
+    return FALSE;
+}
+
+
+/* If we've been run as setuid or setgid to someone else (most likely root)
+   turn off the extra permissions so that random user-specified programs
+   don't get special privileges.  (On some systems it is necessary to install
+   this program as setuid root in order to read the passwd file to implement
+   lock-mode.)
+
+   *** WARNING: DO NOT DISABLE ANY OF THE FOLLOWING CODE!
+   If you do so, you will open a security hole.  See the sections
+   of the xscreensaver manual titled "LOCKING AND ROOT LOGINS",
+   and "USING XDM".
+*/
+
+/* Returns TRUE if OK to lock, FALSE otherwise */
+gboolean
+hack_uid (char **nolock_reason,
+          char **orig_uid,
+          char **uid_message)
+{
+    char    *reason;
+    gboolean ret;
+
+    ret = TRUE;
+    reason = NULL;
+
+    if (nolock_reason != NULL)
+    {
+        *nolock_reason = NULL;
+    }
+    if (orig_uid != NULL)
+    {
+        *orig_uid = NULL;
+    }
+    if (uid_message != NULL)
+    {
+        *uid_message = NULL;
+    }
+
+    /* Discard privileges, and set the effective user/group ids to the
+       real user/group ids.  That is, give up our "chmod +s" rights.
+    */
+    {
+        uid_t euid = geteuid ();
+        gid_t egid = getegid ();
+        uid_t uid  = getuid ();
+        gid_t gid  = getgid ();
+
+        if (orig_uid != NULL)
+        {
+            *orig_uid = uid_gid_string (euid, egid);
+        }
+
+        if (uid != euid || gid != egid)
+        {
+            if (! set_ids_by_number (uid, gid, uid_message))
+            {
+                reason = g_strdup ("unable to discard privileges.");
+
+                ret = FALSE;
+                goto out;
+            }
+        }
+    }
+
+
+    /* Locking can't work when running as root, because we have no way of
+       knowing what the user id of the logged in user is (so we don't know
+       whose password to prompt for.)
+
+       *** WARNING: DO NOT DISABLE THIS CODE!
+       If you do so, you will open a security hole.  See the sections
+       of the xscreensaver manual titled "LOCKING AND ROOT LOGINS",
+       and "USING XDM".
+    */
+    if (getuid () == (uid_t) 0)
+    {
+        reason = g_strdup ("running as root");
+        ret = FALSE;
+        goto out;
+    }
+
+out:
+    if (nolock_reason != NULL)
+    {
+        *nolock_reason = g_strdup (reason);
+    }
+    g_free (reason);
+
+    return ret;
+}
diff --git a/src/setuid.h b/src/setuid.h
new file mode 100644
index 0000000..ffb490d
--- /dev/null
+++ b/src/setuid.h
@@ -0,0 +1,25 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * xscreensaver, Copyright (c) 1993-2004 Jamie Zawinski <jwz at jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifndef __GS_SETUID_H
+#define __GS_SETUID_H
+
+G_BEGIN_DECLS
+
+gboolean hack_uid (char **nolock_reason,
+                   char **orig_uid,
+                   char **uid_message);
+
+G_END_DECLS
+
+#endif /* __GS_SETUID_H */
diff --git a/src/setuid.h.orig b/src/setuid.h.orig
new file mode 100644
index 0000000..8cb8808
--- /dev/null
+++ b/src/setuid.h.orig
@@ -0,0 +1,25 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * xscreensaver, Copyright (c) 1993-2004 Jamie Zawinski <jwz at jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ */
+
+#ifndef __GS_SETUID_H
+#define __GS_SETUID_H
+
+G_BEGIN_DECLS
+
+gboolean hack_uid (char **nolock_reason,
+                   char **orig_uid,
+                   char **uid_message);
+
+G_END_DECLS
+
+#endif /* __GS_SETUID_H */
diff --git a/src/subprocs.c b/src/subprocs.c
new file mode 100644
index 0000000..757daf8
--- /dev/null
+++ b/src/subprocs.c
@@ -0,0 +1,166 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * subprocs.c --- choosing, spawning, and killing screenhacks.
+ *
+ * xscreensaver, Copyright (c) 1991-2003 Jamie Zawinski <jwz at jwz.org>
+ * Modified:     Copyright (c) 2004 William Jon McCann <mccann at jhu.edu>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+
+#ifndef ESRCH
+# include <errno.h>
+#endif
+
+#include <sys/time.h>		/* sys/resource.h needs this for timeval */
+# include <sys/wait.h>		/* for waitpid() and associated macros */
+
+#ifdef VMS
+# include <processes.h>
+# include <unixio.h>		/* for close */
+# include <unixlib.h>		/* for getpid */
+# define pid_t int
+# define fork  vfork
+#endif /* VMS */
+
+#include <signal.h>		/* for the signal names */
+
+#include <glib.h>
+#include "subprocs.h"
+
+#if !defined(SIGCHLD) && defined(SIGCLD)
+# define SIGCHLD SIGCLD
+#endif
+
+/* Semaphore to temporarily turn the SIGCHLD handler into a no-op.
+   Don't alter this directly -- use block_sigchld() / unblock_sigchld().
+*/
+static int block_sigchld_handler = 0;
+
+
+#ifdef HAVE_SIGACTION
+sigset_t
+#else  /* !HAVE_SIGACTION */
+int
+#endif /* !HAVE_SIGACTION */
+block_sigchld (void)
+{
+#ifdef HAVE_SIGACTION
+	sigset_t child_set;
+	sigemptyset (&child_set);
+	sigaddset (&child_set, SIGCHLD);
+	sigaddset (&child_set, SIGPIPE);
+	sigprocmask (SIG_BLOCK, &child_set, 0);
+#endif /* HAVE_SIGACTION */
+
+	block_sigchld_handler++;
+
+#ifdef HAVE_SIGACTION
+	return child_set;
+#else  /* !HAVE_SIGACTION */
+	return 0;
+#endif /* !HAVE_SIGACTION */
+}
+
+void
+unblock_sigchld (void)
+{
+#ifdef HAVE_SIGACTION
+	sigset_t child_set;
+	sigemptyset (&child_set);
+	sigaddset (&child_set, SIGCHLD);
+	sigaddset (&child_set, SIGPIPE);
+	sigprocmask (SIG_UNBLOCK, &child_set, 0);
+#endif /* HAVE_SIGACTION */
+
+	block_sigchld_handler--;
+}
+
+int
+signal_pid (int    pid,
+            int    signal)
+{
+	int status = -1;
+	gboolean verbose = TRUE;
+
+	if (block_sigchld_handler)
+		/* This function should not be called from the signal handler. */
+		abort();
+
+	block_sigchld ();                      /* we control the horizontal... */
+
+	status = kill (pid, signal);
+
+	if (verbose && status < 0)
+	{
+		if (errno == ESRCH)
+			g_message ("Child process %lu was already dead.",
+			           (unsigned long) pid);
+		else
+		{
+			char buf [1024];
+			snprintf (buf, sizeof (buf), "Couldn't kill child process %lu",
+			          (unsigned long) pid);
+			perror (buf);
+		}
+	}
+
+	unblock_sigchld ();
+
+	if (block_sigchld_handler < 0)
+		abort ();
+
+	return status;
+}
+
+#ifndef VMS
+
+void
+await_dying_children (int      pid,
+                      gboolean debug)
+{
+	while (1)
+	{
+		int wait_status = 0;
+		pid_t kid;
+
+		errno = 0;
+		kid = waitpid (-1, &wait_status, WNOHANG|WUNTRACED);
+
+		if (debug)
+		{
+			if (kid < 0 && errno)
+				g_message ("waitpid(%d) ==> %ld (%d)", pid, (long) kid, errno);
+			else if (kid != 0)
+				g_message ("waitpid(%d) ==> %ld", pid, (long) kid);
+		}
+
+		/* 0 means no more children to reap.
+		   -1 means error -- except "interrupted system call" isn't a "real"
+		   error, so if we get that, we should just try again. */
+		if (kid < 0 && errno != EINTR)
+			break;
+	}
+}
+
+
+#else  /* VMS */
+static void await_dying_children (saver_info *si)
+{
+	return;
+}
+#endif /* VMS */
+
diff --git a/src/subprocs.c.orig b/src/subprocs.c.orig
new file mode 100644
index 0000000..3c18e08
--- /dev/null
+++ b/src/subprocs.c.orig
@@ -0,0 +1,166 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * subprocs.c --- choosing, spawning, and killing screenhacks.
+ *
+ * xscreensaver, Copyright (c) 1991-2003 Jamie Zawinski <jwz at jwz.org>
+ * Modified:     Copyright (c) 2004 William Jon McCann <mccann at jhu.edu>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+
+#ifndef ESRCH
+# include <errno.h>
+#endif
+
+#include <sys/time.h>		/* sys/resource.h needs this for timeval */
+# include <sys/wait.h>		/* for waitpid() and associated macros */
+
+#ifdef VMS
+# include <processes.h>
+# include <unixio.h>		/* for close */
+# include <unixlib.h>		/* for getpid */
+# define pid_t int
+# define fork  vfork
+#endif /* VMS */
+
+#include <signal.h>		/* for the signal names */
+
+#include <glib.h>
+#include "subprocs.h"
+
+#if !defined(SIGCHLD) && defined(SIGCLD)
+# define SIGCHLD SIGCLD
+#endif
+
+/* Semaphore to temporarily turn the SIGCHLD handler into a no-op.
+   Don't alter this directly -- use block_sigchld() / unblock_sigchld().
+*/
+static int block_sigchld_handler = 0;
+
+
+#ifdef HAVE_SIGACTION
+sigset_t
+#else  /* !HAVE_SIGACTION */
+int
+#endif /* !HAVE_SIGACTION */
+block_sigchld (void)
+{
+#ifdef HAVE_SIGACTION
+    sigset_t child_set;
+    sigemptyset (&child_set);
+    sigaddset (&child_set, SIGCHLD);
+    sigaddset (&child_set, SIGPIPE);
+    sigprocmask (SIG_BLOCK, &child_set, 0);
+#endif /* HAVE_SIGACTION */
+
+    block_sigchld_handler++;
+
+#ifdef HAVE_SIGACTION
+    return child_set;
+#else  /* !HAVE_SIGACTION */
+    return 0;
+#endif /* !HAVE_SIGACTION */
+}
+
+void
+unblock_sigchld (void)
+{
+#ifdef HAVE_SIGACTION
+    sigset_t child_set;
+    sigemptyset (&child_set);
+    sigaddset (&child_set, SIGCHLD);
+    sigaddset (&child_set, SIGPIPE);
+    sigprocmask (SIG_UNBLOCK, &child_set, 0);
+#endif /* HAVE_SIGACTION */
+
+    block_sigchld_handler--;
+}
+
+int
+signal_pid (int    pid,
+            int    signal)
+{
+    int status = -1;
+    gboolean verbose = TRUE;
+
+    if (block_sigchld_handler)
+        /* This function should not be called from the signal handler. */
+        abort();
+
+    block_sigchld ();                      /* we control the horizontal... */
+
+    status = kill (pid, signal);
+
+    if (verbose && status < 0)
+    {
+        if (errno == ESRCH)
+            g_message ("Child process %lu was already dead.",
+                       (unsigned long) pid);
+        else
+        {
+            char buf [1024];
+            snprintf (buf, sizeof (buf), "Couldn't kill child process %lu",
+                      (unsigned long) pid);
+            perror (buf);
+        }
+    }
+
+    unblock_sigchld ();
+
+    if (block_sigchld_handler < 0)
+        abort ();
+
+    return status;
+}
+
+#ifndef VMS
+
+void
+await_dying_children (int      pid,
+                      gboolean debug)
+{
+    while (1)
+    {
+        int wait_status = 0;
+        pid_t kid;
+
+        errno = 0;
+        kid = waitpid (-1, &wait_status, WNOHANG|WUNTRACED);
+
+        if (debug)
+        {
+            if (kid < 0 && errno)
+                g_message ("waitpid(%d) ==> %ld (%d)", pid, (long) kid, errno);
+            else if (kid != 0)
+                g_message ("waitpid(%d) ==> %ld", pid, (long) kid);
+        }
+
+        /* 0 means no more children to reap.
+           -1 means error -- except "interrupted system call" isn't a "real"
+           error, so if we get that, we should just try again. */
+        if (kid < 0 && errno != EINTR)
+            break;
+    }
+}
+
+
+#else  /* VMS */
+static void await_dying_children (saver_info *si)
+{
+    return;
+}
+#endif /* VMS */
+
diff --git a/src/subprocs.h b/src/subprocs.h
new file mode 100644
index 0000000..95744cd
--- /dev/null
+++ b/src/subprocs.h
@@ -0,0 +1,39 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * subprocs.c --- choosing, spawning, and killing screenhacks.
+ *
+ * xscreensaver, Copyright (c) 1991-2003 Jamie Zawinski <jwz at jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#ifndef __GS_SUBPROCS_H
+#define __GS_SUBPROCS_H
+
+#include <signal.h>
+
+G_BEGIN_DECLS
+
+void unblock_sigchld (void);
+
+#ifdef HAVE_SIGACTION
+sigset_t
+#else  /* !HAVE_SIGACTION */
+int
+#endif /* !HAVE_SIGACTION */
+block_sigchld (void);
+
+int  signal_pid           (int    pid,
+                           int    signal);
+void await_dying_children (int      pid,
+                           gboolean debug);
+
+G_END_DECLS
+
+#endif /* __GS_SUBPROCS_H */
diff --git a/src/subprocs.h.orig b/src/subprocs.h.orig
new file mode 100644
index 0000000..30fec7b
--- /dev/null
+++ b/src/subprocs.h.orig
@@ -0,0 +1,39 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * subprocs.c --- choosing, spawning, and killing screenhacks.
+ *
+ * xscreensaver, Copyright (c) 1991-2003 Jamie Zawinski <jwz at jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ */
+
+#ifndef __GS_SUBPROCS_H
+#define __GS_SUBPROCS_H
+
+#include <signal.h>
+
+G_BEGIN_DECLS
+
+void unblock_sigchld (void);
+
+#ifdef HAVE_SIGACTION
+sigset_t
+#else  /* !HAVE_SIGACTION */
+int
+#endif /* !HAVE_SIGACTION */
+block_sigchld (void);
+
+int  signal_pid           (int    pid,
+                           int    signal);
+void await_dying_children (int      pid,
+                           gboolean debug);
+
+G_END_DECLS
+
+#endif /* __GS_SUBPROCS_H */
diff --git a/src/test-fade.c b/src/test-fade.c
new file mode 100644
index 0000000..2bc6c92
--- /dev/null
+++ b/src/test-fade.c
@@ -0,0 +1,134 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <termios.h>
+#include <unistd.h>
+
+#include <glib/gi18n.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "gs-fade.h"
+#include "gs-debug.h"
+
+#ifdef HAVE_XF86VMODE_GAMMA
+# include <X11/extensions/xf86vmode.h>
+#endif
+
+#define XF86_VIDMODE_NAME "XFree86-VidModeExtension"
+
+static void
+test_fade (void)
+{
+	GSFade *fade;
+	int     reps = 2;
+	int     delay = 2;
+
+	fade = gs_fade_new ();
+
+	while (reps-- > 0)
+	{
+
+		g_print ("fading out...");
+		gs_fade_sync (fade, 1000);
+		g_print ("done.\n");
+
+		g_print ("fading in...");
+		gs_fade_reset (fade);
+		g_print ("done.\n");
+
+		if (delay)
+		{
+			sleep (delay);
+		}
+	}
+
+	g_object_unref (fade);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+	GError *error = NULL;
+	int     op, event, err;
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	if (error)
+	{
+		fprintf (stderr, "%s\n", error->message);
+		exit (1);
+	}
+
+	if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+	{
+		fprintf (stderr, "%s", error->message);
+		g_error_free (error);
+		exit (1);
+	}
+
+	if (! XQueryExtension (GDK_DISPLAY (), XF86_VIDMODE_NAME, &op, &event, &err))
+	{
+		g_message ("no " XF86_VIDMODE_NAME " extension");
+	}
+	else
+	{
+# ifdef HAVE_XF86VMODE_GAMMA
+		int major;
+		int minor;
+
+		if (! XF86VidModeQueryVersion (GDK_DISPLAY (), &major, &minor))
+		{
+			g_message ("unable to get " XF86_VIDMODE_NAME " version");
+		}
+		else
+		{
+			g_message (XF86_VIDMODE_NAME " version %d.%d", major, minor);
+		}
+# else /* !HAVE_XF86VMODE_GAMMA */
+		g_message ("no support for display's " XF86_VIDMODE_NAME " extension");
+# endif /* !HAVE_XF86VMODE_GAMMA */
+	}
+
+	gs_debug_init (TRUE, FALSE);
+
+	test_fade ();
+
+	gs_debug_shutdown ();
+
+	return 0;
+}
diff --git a/src/test-fade.c.orig b/src/test-fade.c.orig
new file mode 100644
index 0000000..894085c
--- /dev/null
+++ b/src/test-fade.c.orig
@@ -0,0 +1,134 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <termios.h>
+#include <unistd.h>
+
+#include <glib/gi18n.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+
+#include "gs-fade.h"
+#include "gs-debug.h"
+
+#ifdef HAVE_XF86VMODE_GAMMA
+# include <X11/extensions/xf86vmode.h>
+#endif
+
+#define XF86_VIDMODE_NAME "XFree86-VidModeExtension"
+
+static void
+test_fade (void)
+{
+    GSFade *fade;
+    int     reps = 2;
+    int     delay = 2;
+
+    fade = gs_fade_new ();
+
+    while (reps-- > 0)
+    {
+
+        g_print ("fading out...");
+        gs_fade_sync (fade, 1000);
+        g_print ("done.\n");
+
+        g_print ("fading in...");
+        gs_fade_reset (fade);
+        g_print ("done.\n");
+
+        if (delay)
+        {
+            sleep (delay);
+        }
+    }
+
+    g_object_unref (fade);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+    GError *error = NULL;
+    int     op, event, err;
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    if (error)
+    {
+        fprintf (stderr, "%s\n", error->message);
+        exit (1);
+    }
+
+    if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+    {
+        fprintf (stderr, "%s", error->message);
+        g_error_free (error);
+        exit (1);
+    }
+
+    if (! XQueryExtension (GDK_DISPLAY (), XF86_VIDMODE_NAME, &op, &event, &err))
+    {
+        g_message ("no " XF86_VIDMODE_NAME " extension");
+    }
+    else
+    {
+# ifdef HAVE_XF86VMODE_GAMMA
+        int major;
+        int minor;
+
+        if (! XF86VidModeQueryVersion (GDK_DISPLAY (), &major, &minor))
+        {
+            g_message ("unable to get " XF86_VIDMODE_NAME " version");
+        }
+        else
+        {
+            g_message (XF86_VIDMODE_NAME " version %d.%d", major, minor);
+        }
+# else /* !HAVE_XF86VMODE_GAMMA */
+        g_message ("no support for display's " XF86_VIDMODE_NAME " extension");
+# endif /* !HAVE_XF86VMODE_GAMMA */
+    }
+
+    gs_debug_init (TRUE, FALSE);
+
+    test_fade ();
+
+    gs_debug_shutdown ();
+
+    return 0;
+}
diff --git a/src/test-passwd.c b/src/test-passwd.c
new file mode 100644
index 0000000..3f7a849
--- /dev/null
+++ b/src/test-passwd.c
@@ -0,0 +1,288 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <termios.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "gs-auth.h"
+#include "setuid.h"
+
+/* Initializations that potentially take place as a priveleged user:
+   If the executable is setuid root, then these initializations
+   are run as root, before discarding privileges.
+*/
+static gboolean
+privileged_initialization (void)
+{
+	gboolean ret;
+	char    *nolock_reason;
+	char    *orig_uid;
+	char    *uid_message;
+
+#ifndef NO_LOCKING
+	/* before hack_uid () for proper permissions */
+	gs_auth_priv_init ();
+#endif /* NO_LOCKING */
+
+	ret = hack_uid (&nolock_reason,
+	                &orig_uid,
+	                &uid_message);
+	if (nolock_reason)
+	{
+		g_warning ("Locking disabled: %s", nolock_reason);
+	}
+	if (uid_message && gs_auth_get_verbose ())
+	{
+		g_print ("Modified UID: %s", uid_message);
+	}
+
+	g_free (nolock_reason);
+	g_free (orig_uid);
+	g_free (uid_message);
+
+	return ret;
+}
+
+
+/* Figure out what locking mechanisms are supported.
+ */
+static gboolean
+lock_initialization (char **nolock_reason)
+{
+	if (nolock_reason)
+	{
+		*nolock_reason = NULL;
+	}
+
+#ifdef NO_LOCKING
+	if (nolock_reason)
+	{
+		*nolock_reason = g_strdup ("not compiled with locking support");
+	}
+	return FALSE;
+#else /* !NO_LOCKING */
+
+	/* Finish initializing locking, now that we're out of privileged code. */
+	if (! gs_auth_init ())
+	{
+		if (nolock_reason)
+		{
+			*nolock_reason = g_strdup ("error getting password");
+		}
+		return FALSE;
+	}
+
+	/* If locking is currently enabled, but the environment indicates that
+	   we have been launched as MDM's "Background" program, then disable
+	   locking just in case.
+	*/
+	if (getenv ("RUNNING_UNDER_MDM"))
+	{
+		if (nolock_reason)
+		{
+			*nolock_reason = g_strdup ("running under MDM");
+		}
+		return FALSE;
+	}
+
+	/* If the server is XDarwin (MacOS X) then disable locking.
+	   (X grabs only affect X programs, so you can use Command-Tab
+	   to bring any other Mac program to the front, e.g., Terminal.)
+	*/
+	{
+		gboolean macos = FALSE;
+
+#ifdef __APPLE__
+		/* Disable locking if *running* on Apple hardware, since we have no
+		   reliable way to determine whether the server is running on MacOS.
+		   Hopefully __APPLE__ means "MacOS" and not "Linux on Mac hardware"
+		   but I'm not really sure about that.
+		*/
+		macos = TRUE;
+#endif
+
+		if (macos)
+		{
+			if (nolock_reason)
+			{
+				*nolock_reason = g_strdup ("Cannot lock securely on MacOS X");
+			}
+			return FALSE;
+		}
+	}
+
+#endif /* NO_LOCKING */
+
+	return TRUE;
+}
+
+static char *
+request_password (const char *prompt)
+{
+	char           buf [255];
+	char          *pass;
+	char          *password;
+	struct termios ts0;
+	struct termios ts1;
+
+	tcgetattr (fileno (stdin), &ts0);
+	ts1 = ts0;
+	ts1.c_lflag &= ~ECHO;
+
+	printf ("%s", prompt);
+
+	if (tcsetattr (fileno (stdin), TCSAFLUSH, &ts1) != 0)
+	{
+		fprintf (stderr, "Could not set terminal attributes\n");
+		exit (1);
+	}
+
+	pass = fgets (buf, sizeof (buf) - 1, stdin);
+
+	tcsetattr (fileno (stdin), TCSANOW, &ts0);
+
+	if (!pass || !*pass)
+	{
+		exit (0);
+	}
+
+	if (pass [strlen (pass) - 1] == '\n')
+	{
+		pass [strlen (pass) - 1] = 0;
+	}
+
+	password = g_strdup (pass);
+
+	memset (pass, '\b', strlen (pass));
+
+	return password;
+}
+
+static gboolean
+auth_message_handler (GSAuthMessageStyle style,
+                      const char        *msg,
+                      char             **response,
+                      gpointer           data)
+{
+	gboolean ret;
+
+	g_message ("Got message style %d: '%s'", style, msg);
+
+	ret = TRUE;
+
+	switch (style)
+	{
+	case GS_AUTH_MESSAGE_PROMPT_ECHO_ON:
+		break;
+	case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF:
+	{
+		char *password;
+		password = request_password (msg);
+		*response = password;
+	}
+	break;
+	case GS_AUTH_MESSAGE_ERROR_MSG:
+		break;
+	case GS_AUTH_MESSAGE_TEXT_INFO:
+		break;
+	default:
+		g_assert_not_reached ();
+	}
+
+	return ret;
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+	GError         *error         = NULL;
+	gboolean        verbose       = TRUE;
+	char           *nolock_reason = NULL;
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	if (! g_thread_supported ())
+	{
+		g_thread_init (NULL);
+	}
+
+	gs_auth_set_verbose (verbose);
+	if (! privileged_initialization ())
+	{
+		exit (1);
+	}
+
+	if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+	{
+		fprintf (stderr, "%s", error->message);
+		g_error_free (error);
+		exit (1);
+	}
+
+	if (! lock_initialization (&nolock_reason))
+	{
+		if (nolock_reason)
+		{
+			g_warning ("Screen locking disabled: %s", nolock_reason);
+			g_free (nolock_reason);
+		}
+
+		exit (1);
+	}
+
+again:
+	error = NULL;
+
+	if (gs_auth_verify_user (g_get_user_name (), g_getenv ("DISPLAY"), auth_message_handler, NULL, &error))
+	{
+		printf ("Correct!\n");
+	}
+	else
+	{
+		if (error != NULL)
+		{
+			fprintf (stderr, "ERROR: %s\n", error->message);
+			g_error_free (error);
+		}
+		printf ("Incorrect\n");
+		goto again;
+	}
+
+	return 0;
+}
diff --git a/src/test-passwd.c.orig b/src/test-passwd.c.orig
new file mode 100644
index 0000000..70bccce
--- /dev/null
+++ b/src/test-passwd.c.orig
@@ -0,0 +1,288 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005-2006 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <termios.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "gs-auth.h"
+#include "setuid.h"
+
+/* Initializations that potentially take place as a priveleged user:
+   If the executable is setuid root, then these initializations
+   are run as root, before discarding privileges.
+*/
+static gboolean
+privileged_initialization (void)
+{
+    gboolean ret;
+    char    *nolock_reason;
+    char    *orig_uid;
+    char    *uid_message;
+
+#ifndef NO_LOCKING
+    /* before hack_uid () for proper permissions */
+    gs_auth_priv_init ();
+#endif /* NO_LOCKING */
+
+    ret = hack_uid (&nolock_reason,
+                    &orig_uid,
+                    &uid_message);
+    if (nolock_reason)
+    {
+        g_warning ("Locking disabled: %s", nolock_reason);
+    }
+    if (uid_message && gs_auth_get_verbose ())
+    {
+        g_print ("Modified UID: %s", uid_message);
+    }
+
+    g_free (nolock_reason);
+    g_free (orig_uid);
+    g_free (uid_message);
+
+    return ret;
+}
+
+
+/* Figure out what locking mechanisms are supported.
+ */
+static gboolean
+lock_initialization (char **nolock_reason)
+{
+    if (nolock_reason)
+    {
+        *nolock_reason = NULL;
+    }
+
+#ifdef NO_LOCKING
+    if (nolock_reason)
+    {
+        *nolock_reason = g_strdup ("not compiled with locking support");
+    }
+    return FALSE;
+#else /* !NO_LOCKING */
+
+    /* Finish initializing locking, now that we're out of privileged code. */
+    if (! gs_auth_init ())
+    {
+        if (nolock_reason)
+        {
+            *nolock_reason = g_strdup ("error getting password");
+        }
+        return FALSE;
+    }
+
+    /* If locking is currently enabled, but the environment indicates that
+       we have been launched as MDM's "Background" program, then disable
+       locking just in case.
+    */
+    if (getenv ("RUNNING_UNDER_MDM"))
+    {
+        if (nolock_reason)
+        {
+            *nolock_reason = g_strdup ("running under MDM");
+        }
+        return FALSE;
+    }
+
+    /* If the server is XDarwin (MacOS X) then disable locking.
+       (X grabs only affect X programs, so you can use Command-Tab
+       to bring any other Mac program to the front, e.g., Terminal.)
+    */
+    {
+        gboolean macos = FALSE;
+
+#ifdef __APPLE__
+        /* Disable locking if *running* on Apple hardware, since we have no
+           reliable way to determine whether the server is running on MacOS.
+           Hopefully __APPLE__ means "MacOS" and not "Linux on Mac hardware"
+           but I'm not really sure about that.
+        */
+        macos = TRUE;
+#endif
+
+        if (macos)
+        {
+            if (nolock_reason)
+            {
+                *nolock_reason = g_strdup ("Cannot lock securely on MacOS X");
+            }
+            return FALSE;
+        }
+    }
+
+#endif /* NO_LOCKING */
+
+    return TRUE;
+}
+
+static char *
+request_password (const char *prompt)
+{
+    char           buf [255];
+    char          *pass;
+    char          *password;
+    struct termios ts0;
+    struct termios ts1;
+
+    tcgetattr (fileno (stdin), &ts0);
+    ts1 = ts0;
+    ts1.c_lflag &= ~ECHO;
+
+    printf ("%s", prompt);
+
+    if (tcsetattr (fileno (stdin), TCSAFLUSH, &ts1) != 0)
+    {
+        fprintf (stderr, "Could not set terminal attributes\n");
+        exit (1);
+    }
+
+    pass = fgets (buf, sizeof (buf) - 1, stdin);
+
+    tcsetattr (fileno (stdin), TCSANOW, &ts0);
+
+    if (!pass || !*pass)
+    {
+        exit (0);
+    }
+
+    if (pass [strlen (pass) - 1] == '\n')
+    {
+        pass [strlen (pass) - 1] = 0;
+    }
+
+    password = g_strdup (pass);
+
+    memset (pass, '\b', strlen (pass));
+
+    return password;
+}
+
+static gboolean
+auth_message_handler (GSAuthMessageStyle style,
+                      const char        *msg,
+                      char             **response,
+                      gpointer           data)
+{
+    gboolean ret;
+
+    g_message ("Got message style %d: '%s'", style, msg);
+
+    ret = TRUE;
+
+    switch (style)
+    {
+    case GS_AUTH_MESSAGE_PROMPT_ECHO_ON:
+        break;
+    case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF:
+    {
+        char *password;
+        password = request_password (msg);
+        *response = password;
+    }
+    break;
+    case GS_AUTH_MESSAGE_ERROR_MSG:
+        break;
+    case GS_AUTH_MESSAGE_TEXT_INFO:
+        break;
+    default:
+        g_assert_not_reached ();
+    }
+
+    return ret;
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+    GError         *error         = NULL;
+    gboolean        verbose       = TRUE;
+    char           *nolock_reason = NULL;
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    if (! g_thread_supported ())
+    {
+        g_thread_init (NULL);
+    }
+
+    gs_auth_set_verbose (verbose);
+    if (! privileged_initialization ())
+    {
+        exit (1);
+    }
+
+    if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+    {
+        fprintf (stderr, "%s", error->message);
+        g_error_free (error);
+        exit (1);
+    }
+
+    if (! lock_initialization (&nolock_reason))
+    {
+        if (nolock_reason)
+        {
+            g_warning ("Screen locking disabled: %s", nolock_reason);
+            g_free (nolock_reason);
+        }
+
+        exit (1);
+    }
+
+again:
+    error = NULL;
+
+    if (gs_auth_verify_user (g_get_user_name (), g_getenv ("DISPLAY"), auth_message_handler, NULL, &error))
+    {
+        printf ("Correct!\n");
+    }
+    else
+    {
+        if (error != NULL)
+        {
+            fprintf (stderr, "ERROR: %s\n", error->message);
+            g_error_free (error);
+        }
+        printf ("Incorrect\n");
+        goto again;
+    }
+
+    return 0;
+}
diff --git a/src/test-watcher.c b/src/test-watcher.c
new file mode 100644
index 0000000..5e8ca08
--- /dev/null
+++ b/src/test-watcher.c
@@ -0,0 +1,106 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "gs-watcher.h"
+#include "gs-debug.h"
+
+static gboolean
+watcher_idle_cb (GSWatcher *watcher,
+                 gboolean   is_idle,
+                 gpointer   data)
+{
+	g_message ("Idle status changed: %s", is_idle ? "idle" : "not idle");
+
+	/* return FALSE so that the idle watcher continues */
+	return FALSE;
+}
+
+static gboolean
+watcher_idle_notice_cb (GSWatcher *watcher,
+                        gboolean   is_idle,
+                        gpointer   data)
+{
+	g_message ("Idle notice status changed: %s", is_idle ? "idle" : "not idle");
+
+	return TRUE;
+}
+
+static void
+connect_watcher_signals (GSWatcher *watcher)
+{
+	g_signal_connect (watcher, "idle-changed",
+	                  G_CALLBACK (watcher_idle_cb), NULL);
+	g_signal_connect (watcher, "idle-notice-changed",
+	                  G_CALLBACK (watcher_idle_notice_cb), NULL);
+}
+
+static void
+test_watcher (void)
+{
+	GSWatcher *watcher;
+
+	watcher = gs_watcher_new ();
+	gs_watcher_set_enabled (watcher, TRUE);
+	gs_watcher_set_active (watcher, TRUE);
+
+	connect_watcher_signals (watcher);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+	GError *error = NULL;
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+	{
+		fprintf (stderr, "%s", error->message);
+		g_error_free (error);
+		exit (1);
+	}
+
+	gs_debug_init (TRUE, FALSE);
+
+	test_watcher ();
+
+	gtk_main ();
+
+	gs_debug_shutdown ();
+
+	return 0;
+}
diff --git a/src/test-watcher.c.orig b/src/test-watcher.c.orig
new file mode 100644
index 0000000..28c7678
--- /dev/null
+++ b/src/test-watcher.c.orig
@@ -0,0 +1,106 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "gs-watcher.h"
+#include "gs-debug.h"
+
+static gboolean
+watcher_idle_cb (GSWatcher *watcher,
+                 gboolean   is_idle,
+                 gpointer   data)
+{
+    g_message ("Idle status changed: %s", is_idle ? "idle" : "not idle");
+
+    /* return FALSE so that the idle watcher continues */
+    return FALSE;
+}
+
+static gboolean
+watcher_idle_notice_cb (GSWatcher *watcher,
+                        gboolean   is_idle,
+                        gpointer   data)
+{
+    g_message ("Idle notice status changed: %s", is_idle ? "idle" : "not idle");
+
+    return TRUE;
+}
+
+static void
+connect_watcher_signals (GSWatcher *watcher)
+{
+    g_signal_connect (watcher, "idle-changed",
+                      G_CALLBACK (watcher_idle_cb), NULL);
+    g_signal_connect (watcher, "idle-notice-changed",
+                      G_CALLBACK (watcher_idle_notice_cb), NULL);
+}
+
+static void
+test_watcher (void)
+{
+    GSWatcher *watcher;
+
+    watcher = gs_watcher_new ();
+    gs_watcher_set_enabled (watcher, TRUE);
+    gs_watcher_set_active (watcher, TRUE);
+
+    connect_watcher_signals (watcher);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+    GError *error = NULL;
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+    {
+        fprintf (stderr, "%s", error->message);
+        g_error_free (error);
+        exit (1);
+    }
+
+    gs_debug_init (TRUE, FALSE);
+
+    test_watcher ();
+
+    gtk_main ();
+
+    gs_debug_shutdown ();
+
+    return 0;
+}
diff --git a/src/test-window.c b/src/test-window.c
new file mode 100644
index 0000000..6600411
--- /dev/null
+++ b/src/test-window.c
@@ -0,0 +1,180 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "gs-window.h"
+#include "gs-grab.h"
+#include "gs-debug.h"
+
+static GSGrab *grab = NULL;
+
+static void
+window_deactivated_cb (GSWindow  *window,
+                       gpointer   data)
+{
+	gs_window_destroy (window);
+}
+
+static void
+window_dialog_up_cb (GSWindow  *window,
+                     gpointer   data)
+{
+}
+
+static void
+window_dialog_down_cb (GSWindow  *window,
+                       gpointer   data)
+{
+}
+
+static void
+window_show_cb (GSWindow  *window,
+                gpointer   data)
+{
+	/* Grab keyboard so dialog can be used */
+	gs_grab_move_to_window (grab,
+	                        gs_window_get_gdk_window (window),
+	                        gs_window_get_screen (window),
+	                        FALSE);
+
+}
+
+static gboolean
+window_activity_cb (GSWindow  *window,
+                    gpointer   data)
+{
+	gs_window_request_unlock (window);
+
+	return TRUE;
+}
+
+static void
+disconnect_window_signals (GSWindow *window)
+{
+	gpointer data;
+
+	data = NULL;
+	g_signal_handlers_disconnect_by_func (window, window_activity_cb, data);
+	g_signal_handlers_disconnect_by_func (window, window_deactivated_cb, data);
+	g_signal_handlers_disconnect_by_func (window, window_dialog_up_cb, data);
+	g_signal_handlers_disconnect_by_func (window, window_dialog_down_cb, data);
+	g_signal_handlers_disconnect_by_func (window, window_show_cb, data);
+}
+
+static void
+window_destroyed_cb (GtkWindow *window,
+                     gpointer   data)
+{
+	disconnect_window_signals (GS_WINDOW (window));
+	gs_grab_release (grab);
+	gtk_main_quit ();
+}
+
+static void
+connect_window_signals (GSWindow *window)
+{
+	gpointer data;
+
+	data = NULL;
+
+	g_signal_connect_object (window, "activity",
+	                         G_CALLBACK (window_activity_cb), data, 0);
+	g_signal_connect_object (window, "destroy",
+	                         G_CALLBACK (window_destroyed_cb), data, 0);
+	g_signal_connect_object (window, "deactivated",
+	                         G_CALLBACK (window_deactivated_cb), data, 0);
+	g_signal_connect_object (window, "dialog-up",
+	                         G_CALLBACK (window_dialog_up_cb), data, 0);
+	g_signal_connect_object (window, "dialog-down",
+	                         G_CALLBACK (window_dialog_down_cb), data, 0);
+	g_signal_connect_object (window, "show",
+	                         G_CALLBACK (window_show_cb), data, 0);
+}
+
+static void
+test_window (void)
+{
+	GSWindow  *window;
+	gboolean   lock_active;
+	gboolean   user_switch_enabled;
+	GdkScreen *screen;
+	int        monitor;
+
+	lock_active = TRUE;
+	user_switch_enabled = TRUE;
+	screen = gdk_screen_get_default ();
+	monitor = 0;
+
+	window = gs_window_new (screen, monitor, lock_active);
+
+	gs_window_set_user_switch_enabled (window, user_switch_enabled);
+
+	connect_window_signals (window);
+
+	gs_window_show (window);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+	GError *error = NULL;
+
+#ifdef ENABLE_NLS
+	bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+	textdomain (GETTEXT_PACKAGE);
+#endif
+
+	if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+	{
+		fprintf (stderr, "%s", error->message);
+		g_error_free (error);
+		exit (1);
+	}
+
+	gs_debug_init (TRUE, FALSE);
+
+	grab = gs_grab_new ();
+
+	test_window ();
+
+	/* safety valve in case we can't authenticate */
+	g_timeout_add (30000, (GSourceFunc)gtk_main_quit, NULL);
+
+	gtk_main ();
+
+	g_object_unref (grab);
+
+	gs_debug_shutdown ();
+
+	return 0;
+}
diff --git a/src/test-window.c.orig b/src/test-window.c.orig
new file mode 100644
index 0000000..bc4d37b
--- /dev/null
+++ b/src/test-window.c.orig
@@ -0,0 +1,180 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2005 William Jon McCann <mccann at jhu.edu>
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors: William Jon McCann <mccann at jhu.edu>
+ *
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "gs-window.h"
+#include "gs-grab.h"
+#include "gs-debug.h"
+
+static GSGrab *grab = NULL;
+
+static void
+window_deactivated_cb (GSWindow  *window,
+                       gpointer   data)
+{
+    gs_window_destroy (window);
+}
+
+static void
+window_dialog_up_cb (GSWindow  *window,
+                     gpointer   data)
+{
+}
+
+static void
+window_dialog_down_cb (GSWindow  *window,
+                       gpointer   data)
+{
+}
+
+static void
+window_show_cb (GSWindow  *window,
+                gpointer   data)
+{
+    /* Grab keyboard so dialog can be used */
+    gs_grab_move_to_window (grab,
+                            gs_window_get_gdk_window (window),
+                            gs_window_get_screen (window),
+                            FALSE);
+
+}
+
+static gboolean
+window_activity_cb (GSWindow  *window,
+                    gpointer   data)
+{
+    gs_window_request_unlock (window);
+
+    return TRUE;
+}
+
+static void
+disconnect_window_signals (GSWindow *window)
+{
+    gpointer data;
+
+    data = NULL;
+    g_signal_handlers_disconnect_by_func (window, window_activity_cb, data);
+    g_signal_handlers_disconnect_by_func (window, window_deactivated_cb, data);
+    g_signal_handlers_disconnect_by_func (window, window_dialog_up_cb, data);
+    g_signal_handlers_disconnect_by_func (window, window_dialog_down_cb, data);
+    g_signal_handlers_disconnect_by_func (window, window_show_cb, data);
+}
+
+static void
+window_destroyed_cb (GtkWindow *window,
+                     gpointer   data)
+{
+    disconnect_window_signals (GS_WINDOW (window));
+    gs_grab_release (grab);
+    gtk_main_quit ();
+}
+
+static void
+connect_window_signals (GSWindow *window)
+{
+    gpointer data;
+
+    data = NULL;
+
+    g_signal_connect_object (window, "activity",
+                             G_CALLBACK (window_activity_cb), data, 0);
+    g_signal_connect_object (window, "destroy",
+                             G_CALLBACK (window_destroyed_cb), data, 0);
+    g_signal_connect_object (window, "deactivated",
+                             G_CALLBACK (window_deactivated_cb), data, 0);
+    g_signal_connect_object (window, "dialog-up",
+                             G_CALLBACK (window_dialog_up_cb), data, 0);
+    g_signal_connect_object (window, "dialog-down",
+                             G_CALLBACK (window_dialog_down_cb), data, 0);
+    g_signal_connect_object (window, "show",
+                             G_CALLBACK (window_show_cb), data, 0);
+}
+
+static void
+test_window (void)
+{
+    GSWindow  *window;
+    gboolean   lock_active;
+    gboolean   user_switch_enabled;
+    GdkScreen *screen;
+    int        monitor;
+
+    lock_active = TRUE;
+    user_switch_enabled = TRUE;
+    screen = gdk_screen_get_default ();
+    monitor = 0;
+
+    window = gs_window_new (screen, monitor, lock_active);
+
+    gs_window_set_user_switch_enabled (window, user_switch_enabled);
+
+    connect_window_signals (window);
+
+    gs_window_show (window);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+    GError *error = NULL;
+
+#ifdef ENABLE_NLS
+    bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+# endif
+    textdomain (GETTEXT_PACKAGE);
+#endif
+
+    if (! gtk_init_with_args (&argc, &argv, NULL, NULL, NULL, &error))
+    {
+        fprintf (stderr, "%s", error->message);
+        g_error_free (error);
+        exit (1);
+    }
+
+    gs_debug_init (TRUE, FALSE);
+
+    grab = gs_grab_new ();
+
+    test_window ();
+
+    /* safety valve in case we can't authenticate */
+    g_timeout_add (30000, (GSourceFunc)gtk_main_quit, NULL);
+
+    gtk_main ();
+
+    g_object_unref (grab);
+
+    gs_debug_shutdown ();
+
+    return 0;
+}

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list