Compare commits
	
		
			55 Commits
		
	
	
		
			3.17.92
			...
			wip/cb2eb3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 7623b97399 | ||
|   | 8d8e0cb055 | ||
|   | 1620131434 | ||
|   | 873da3405c | ||
|   | 8a062b39ab | ||
|   | 3ab3c8423e | ||
|   | 11e1f687f9 | ||
|   | 25815473e6 | ||
|   | 5053997021 | ||
|   | b6468a7fa5 | ||
|   | e2e0ead870 | ||
|   | f80a5d892f | ||
|   | 5823c5e0f5 | ||
|   | ecac8c9d09 | ||
|   | 2666303045 | ||
|   | 0a9bc8995a | ||
|   | 143436c37c | ||
|   | 7c11e0b0eb | ||
|   | beccdd64f5 | ||
|   | dd0a6d7e08 | ||
|   | 02bb550bd6 | ||
|   | 8f789a8fad | ||
|   | 865b9df9a9 | ||
|   | 1e9268045d | ||
|   | 20acb73024 | ||
|   | b97ad209c2 | ||
|   | f2d8e3266b | ||
|   | 11be2fa36a | ||
|   | 302302a116 | ||
|   | fd13dad0c4 | ||
|   | 2da1ed1ae0 | ||
|   | 58f04c7284 | ||
|   | a6737ef129 | ||
|   | 52fee4df1c | ||
|   | 8da12ac0e0 | ||
|   | e43f8db6e8 | ||
|   | a7cbc9ad9a | ||
|   | 0be3f81841 | ||
|   | f53e26bc39 | ||
|   | cc3be6da4d | ||
|   | fef2a061a8 | ||
|   | bdb995d758 | ||
|   | 2a729f89aa | ||
|   | af242b27b2 | ||
|   | a198ff415a | ||
|   | 981c1c2ab5 | ||
|   | fb35f9fa49 | ||
|   | 9194a04faa | ||
|   | a0ed41d8ce | ||
|   | e3e87727b6 | ||
|   | 2d878f29eb | ||
|   | 307e4c7d0e | ||
|   | 43e7687d89 | ||
|   | 2e4f67f3f9 | ||
|   | 69c11b59c4 | 
							
								
								
									
										35
									
								
								.cvsignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								.cvsignore
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| Makefile | ||||
| Makefile.in | ||||
| aclocal.m4 | ||||
| confdefs.h | ||||
| config.cache | ||||
| config.guess | ||||
| config.h | ||||
| config.log | ||||
| config.status | ||||
| config.sub | ||||
| configure | ||||
| configure.scan | ||||
| libtool | ||||
| ltconfig | ||||
| ltmain.sh | ||||
| stamp-h | ||||
| stamp-h.in | ||||
| stamp-h1 | ||||
| stamp.h | ||||
| version.h | ||||
| config.h.in | ||||
| install-sh | ||||
| missing | ||||
| mkinstalldirs | ||||
| INSTALL | ||||
| intl | ||||
| ABOUT-NLS | ||||
| COPYING | ||||
| intltool-* | ||||
| metacity.spec | ||||
| autom4te.cache | ||||
| compile | ||||
| depcomp | ||||
| omf.make | ||||
| xmldocs.make | ||||
							
								
								
									
										81
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										81
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -3,7 +3,6 @@ Makefile.in | ||||
| Makefile.in.in | ||||
| aclocal.m4 | ||||
| autom4te.cache | ||||
| build-aux | ||||
| compile | ||||
| config.guess | ||||
| config.h | ||||
| @@ -20,11 +19,9 @@ libtool | ||||
| ltmain.sh | ||||
| missing | ||||
| .deps | ||||
| 50-mutter-navigation.xml | ||||
| 50-mutter-system.xml | ||||
| 50-mutter-windows.xml | ||||
| mutter.desktop | ||||
| mutter-wayland.desktop | ||||
| src/50-mutter-windows.xml | ||||
| src/mutter-wm.desktop | ||||
| src/mutter.desktop | ||||
| *.o | ||||
| *.a | ||||
| *.lo | ||||
| @@ -33,6 +30,10 @@ mutter-wayland.desktop | ||||
| *.swp | ||||
| *.gir | ||||
| *.typelib | ||||
| tidy-enum-types.[ch] | ||||
| tidy-marshal.[ch] | ||||
| stamp-tidy-enum-types.h | ||||
| stamp-tidy-marshal.h | ||||
| stamp-h1 | ||||
| *.gmo | ||||
| *.make | ||||
| @@ -41,58 +42,34 @@ stamp-it | ||||
| .intltool-merge-cache | ||||
| POTFILES | ||||
| po/*.pot | ||||
| 50-metacity-desktop-key.xml | ||||
| 50-metacity-key.xml | ||||
| inlinepixbufs.h | ||||
| libmutter.pc | ||||
| mutter | ||||
| mutter-restart-helper | ||||
| mutter-test-client | ||||
| mutter-test-runner | ||||
| mutter-all.test | ||||
| mutter-theme-viewer | ||||
| mutter.desktop | ||||
| org.gnome.mutter.gschema.valid | ||||
| org.gnome.mutter.gschema.xml | ||||
| org.gnome.mutter.wayland.gschema.valid | ||||
| org.gnome.mutter.wayland.gschema.xml | ||||
| testasyncgetprop | ||||
| testboxes | ||||
| testgradient | ||||
| m4/* | ||||
| mutter-grayscale | ||||
| mutter-mag | ||||
| mutter-message | ||||
| mutter-window-demo | ||||
| focus-window | ||||
| test-attached | ||||
| test-gravity | ||||
| test-resizing | ||||
| test-size-hints | ||||
| # We can't say just "wm-tester" here or it will ignore the directory | ||||
| # rather than the binary | ||||
| src/wm-tester/wm-tester | ||||
| INSTALL | ||||
| mkinstalldirs | ||||
| meta-enum-types.[ch] | ||||
| src/stamp-meta-enum-types.h | ||||
| src/meta-dbus-display-config.[ch] | ||||
| src/meta-dbus-idle-monitor.[ch] | ||||
| src/meta-dbus-login1.[ch] | ||||
| src/gtk-shell-protocol.c | ||||
| src/gtk-shell-server-protocol.h | ||||
| src/xdg-shell-protocol.c | ||||
| src/xdg-shell-server-protocol.h | ||||
| src/pointer-gestures-protocol.c | ||||
| src/pointer-gestures-server-protocol.h | ||||
| src/xserver-protocol.c | ||||
| src/xserver-server-protocol.h | ||||
| src/meta/meta-version.h | ||||
| doc/reference/*.args | ||||
| doc/reference/*.bak | ||||
| doc/reference/*.hierarchy | ||||
| doc/reference/*.interfaces | ||||
| doc/reference/*.prerequisites | ||||
| doc/reference/*.signals | ||||
| doc/reference/*.stamp | ||||
| doc/reference/html/ | ||||
| doc/reference/xml/ | ||||
| doc/reference/meta-decl-list.txt | ||||
| doc/reference/meta-decl.txt | ||||
| doc/reference/meta-overrides.txt | ||||
| doc/reference/meta-undeclared.txt | ||||
| doc/reference/meta-undocumented.txt | ||||
| doc/reference/meta-unused.txt | ||||
| doc/reference/meta-docs.sgml | ||||
| doc/reference/meta.types | ||||
| gtk-doc.m4 | ||||
| intltool.m4 | ||||
| libtool.m4 | ||||
| ltoptions.m4 | ||||
| ltsugar.m4 | ||||
| ltversion.m4 | ||||
| lt~obsolete.m4 | ||||
| .dirstamp | ||||
| src/mutter-enum-types.[ch] | ||||
| src/stamp-mutter-enum-types.h | ||||
| src/mutter-marshal.[ch] | ||||
| src/stamp-mutter-marshal.h | ||||
| src/mutter-plugins.pc | ||||
|   | ||||
							
								
								
									
										159
									
								
								COMPLIANCE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								COMPLIANCE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,159 @@ | ||||
| Metacity Standards Compliance | ||||
| ============================= | ||||
| $Id$ | ||||
|  | ||||
| 1) Introduction | ||||
| 2) EWMH Compliance | ||||
|   a. Root Window Properties | ||||
|   b. Root Window Messages | ||||
|   c. Application Window Properties | ||||
|   d. Window Manager Protocols | ||||
| 3) ICCCM Compliance | ||||
|  | ||||
| 1) Introduction | ||||
| --------------- | ||||
|  | ||||
| This document details metacity compliance with the relevent standards. | ||||
| The format of this document is as follows: | ||||
|  | ||||
| [-/+?] Hint Name/Feature Name (Version number) | ||||
|        Errata/Comments | ||||
|  | ||||
| The first character indicates the level of compliance as follows: | ||||
|     -   none | ||||
|     /   partial | ||||
|     +   complete | ||||
|     ?   unknown | ||||
|  | ||||
| The title indicates a feature or a hint in the specification, and the | ||||
| version number indicates the minimum version of the specification | ||||
| supported by metacity.  Later versions may be supported if no | ||||
| incompatible changes have been made in the specification. | ||||
|  | ||||
| 2) EWMH Compliance | ||||
| ------------------ | ||||
|  | ||||
| The EWMH, or Extended Window Manager Hints is a freedesktop.org- | ||||
| developed standard to support a number of conventions for | ||||
| communication between the window manager and clients.  It builds on | ||||
| and extends the ICCCM (See Section 3).  A copy of the current EWMH | ||||
| standard is available at http://freedesktop.org/Standards/wm-spec/ | ||||
|  | ||||
|   a. Root Window Properties | ||||
|   ------------------------- | ||||
|  | ||||
| + _NET_SUPPORTED (1.3) | ||||
|  | ||||
| + _NET_CLIENT_LIST (1.3) | ||||
|  | ||||
| + _NET_NUMBER_OF_DESKTOPS (1.3) | ||||
|  | ||||
| + _NET_DESKTOP_GEOMETRY (1.3) | ||||
|   Metacity does not implement large desktops, so this is kept set to | ||||
|   the screen size. | ||||
|  | ||||
| + _NET_DESKTOP_VIEWPORT (1.3) | ||||
|   Metacity does not implement viewports, so this is a constant (0,0). | ||||
|  | ||||
| + _NET_CURRENT_DESKTOP (1.3) | ||||
|  | ||||
| + _NET_DESKTOP_NAMES (1.3) | ||||
|  | ||||
| + _NET_ACTIVE_WINDOW (1.3) | ||||
|  | ||||
| + _NET_WORKAREA (1.3) | ||||
|  | ||||
| + _NET_SUPPORTING_WM_CHECK (1.3) | ||||
|  | ||||
| + _NET_VIRTUAL_ROOTS (1.3) | ||||
|   Metacity does not read or set this property, but it does not use | ||||
|   virtual roots to implement virtual desktops, so it complies with the | ||||
|   specification. | ||||
|  | ||||
| + _NET_DESKTOP_LAYOUT (1.3) | ||||
|  | ||||
| + _NET_SHOWING_DESKTOP (1.3) | ||||
|  | ||||
|   b. Root Window Messages | ||||
|   ----------------------- | ||||
|  | ||||
| + _NET_CLOSE_WINDOW (1.3) | ||||
|  | ||||
| - _NET_MOVERESIZE_WINDOW (1.3) | ||||
|   Metacity supports this message, but the specification is unclear on | ||||
|   the layout of the detail value, and as such it is #if 0'd in the code | ||||
|  | ||||
| + _NET_WM_MOVERESIZE (1.3) | ||||
|  | ||||
| - _NET_RESTACK_WINDOW (1.3) | ||||
|   Metacity will raise or lower windows in response to this message, | ||||
|   but the sibling restack modes are not supported, and it is currently | ||||
|   #if 0'd in the code. | ||||
|  | ||||
| + _NET_REQUEST_FRAME_EXTENTS (1.3)   | ||||
|  | ||||
|   c. Application Window Properties | ||||
|   -------------------------------- | ||||
|  | ||||
| + _NET_WM_NAME (1.3) | ||||
|  | ||||
| + _NET_WM_VISIBLE_NAME (1.3) | ||||
|   Metacity does not set this property, but metacity will never display | ||||
|   a name different from _NET_WM_NAME | ||||
|  | ||||
| + _NET_WM_ICON_NAME (1.3) | ||||
|  | ||||
| + _NET_WM_VISIBLE_ICON_NAME (1.3) | ||||
|   Metacity does not set this property, but metacity will never display | ||||
|   a name different from _NET_WM_NAME | ||||
|  | ||||
| + _NET_WM_DESKTOP (1.3) | ||||
|  | ||||
| + _NET_WM_WINDOW_TYPE (1.3) | ||||
|  | ||||
| / _NET_WM_STATE (1.3) | ||||
|   This property is read and updated according to the specification, | ||||
|   but see caveat below. | ||||
|   Metacity does not recognize separate vertical and horizontal | ||||
|   maximization states.  Currently metacity will do a two-dimensional | ||||
|   maximization if either property is set. | ||||
|   See: http://bugzilla.gnome.org/show_bug.cgi?id=113601 | ||||
|   Metacity doesn't implement viewports so _NET_WM_STATE_STICKY is | ||||
|   unimplemented. | ||||
|  | ||||
| + _NET_WM_ALLOWED_ACTIONS (1.3) | ||||
|   Metacity keeps this hint up to date.  The code is somewhat crufty | ||||
|   and should be rewritten, though it is functional. | ||||
|   See: http://bugzilla.gnome.org/show_bug.cgi?id=90420 | ||||
|  | ||||
| + _NET_WM_STRUT (1.3) | ||||
|  | ||||
| + _NET_WM_STRUT_PARTIAL (1.3) | ||||
|  | ||||
| + _NET_WM_ICON_GEOMETRY (1.3) | ||||
|   Metacity uses this property to draw minimize/restore animations | ||||
|  | ||||
| + _NET_WM_ICON (1.3) | ||||
|  | ||||
| + _NET_WM_PID (1.3) | ||||
|  | ||||
| + _NET_WM_HANDLED_ICONS (1.3) | ||||
|   Metacity does not read or set this property.  However, metacity | ||||
|   never manages iconified windows, and so has no need to do so. | ||||
|  | ||||
| + _NET_WM_USER_TIME (1.3) | ||||
|   Metacity uses this property to prevent applications from stealing | ||||
|   focus if supported by the toolkit. | ||||
|  | ||||
| + _NET_FRAME_EXTENTS (1.3) | ||||
|   If set in response to a _NET_REQUEST_FRAME_EXTENTS message received | ||||
|   prior to the window being mapped, this may be an estimate.  This is, | ||||
|   however, expressly allowed by the specification. | ||||
|  | ||||
|   d. Window Manager Protocols | ||||
|   --------------------------- | ||||
| + _NET_WM_PING (1.3) | ||||
|  | ||||
| 3) ICCCM Compliance | ||||
| ------------------- | ||||
| TODO | ||||
							
								
								
									
										41
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								COPYING
									
									
									
									
									
								
							| @@ -1,12 +1,12 @@ | ||||
|                     GNU GENERAL PUBLIC LICENSE | ||||
|                        Version 2, June 1991 | ||||
| 		    GNU GENERAL PUBLIC LICENSE | ||||
| 		       Version 2, June 1991 | ||||
|  | ||||
|  Copyright (C) 1989, 1991 Free Software Foundation, Inc., | ||||
|  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
|  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 | ||||
| 			    Preamble | ||||
|  | ||||
|   The licenses for most software are designed to take away your | ||||
| freedom to share and change it.  By contrast, the GNU General Public | ||||
| @@ -15,7 +15,7 @@ software--to make sure the software is free for all its users.  This | ||||
| General Public License applies to most of the Free Software | ||||
| Foundation's software and to any other program whose authors commit to | ||||
| using it.  (Some other Free Software Foundation software is covered by | ||||
| the GNU Lesser General Public License instead.)  You can apply it to | ||||
| 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 | ||||
| @@ -55,8 +55,8 @@ 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 | ||||
|  | ||||
| 		    GNU GENERAL PUBLIC LICENSE | ||||
|    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||||
|  | ||||
|   0. This License applies to any program or other work which contains | ||||
| @@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions: | ||||
|     License.  (Exception: if the Program itself is interactive but | ||||
|     does not normally print such an announcement, your work based on | ||||
|     the Program is not required to print an announcement.) | ||||
|  | ||||
|  | ||||
| These requirements apply to the modified work as a whole.  If | ||||
| identifiable sections of that work are not derived from the Program, | ||||
| and can be reasonably considered independent and separate works in | ||||
| @@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent | ||||
| access to copy the source code from the same place counts as | ||||
| distribution of the source code, even though third parties are not | ||||
| compelled to copy the source along with the object code. | ||||
|  | ||||
|  | ||||
|   4. You may not copy, modify, sublicense, or distribute the Program | ||||
| except as expressly provided under this License.  Any attempt | ||||
| otherwise to copy, modify, sublicense or distribute the Program is | ||||
| @@ -225,7 +225,7 @@ impose that choice. | ||||
|  | ||||
| This section is intended to make thoroughly clear what is believed to | ||||
| be a consequence of the rest of this License. | ||||
|  | ||||
|  | ||||
|   8. If the distribution and/or use of the Program is restricted in | ||||
| certain countries either by patents or by copyrighted interfaces, the | ||||
| original copyright holder who places the Program under this License | ||||
| @@ -255,7 +255,7 @@ 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 | ||||
| 			    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 | ||||
| @@ -277,9 +277,9 @@ 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 | ||||
| 		     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 | ||||
| @@ -303,16 +303,17 @@ the "copyright" line and a pointer to where the full notice is found. | ||||
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|     GNU General Public License for more details. | ||||
|  | ||||
|     You should have received a copy of the GNU General Public License along | ||||
|     with this program; if not, write to the Free Software Foundation, Inc., | ||||
|     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||
|     You should have received a copy of the GNU General Public License | ||||
|     along with this program; if not, write to the Free Software | ||||
|     Foundation, Inc., 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 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. | ||||
| @@ -335,5 +336,5 @@ necessary.  Here is a sample; alter the names: | ||||
| This General Public License does not permit incorporating your program into | ||||
| proprietary programs.  If your program is a subroutine library, you may | ||||
| consider it more useful to permit linking proprietary applications with the | ||||
| library.  If this is what you want to do, use the GNU Lesser General | ||||
| library.  If this is what you want to do, use the GNU Library General | ||||
| Public License instead of this License. | ||||
|   | ||||
							
								
								
									
										298
									
								
								HACKING
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										298
									
								
								HACKING
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,298 @@ | ||||
| Intro... | ||||
|  | ||||
| Window managers have a few ways in which they are significantly different | ||||
| from other applications.  This file, combined with the code overview in | ||||
| doc/code-overview.txt, should hopefully provide a series of relatively | ||||
| quick pointers (hopefully only a few minutes each) to some of the places | ||||
| one can look to orient themselves and get started.  Some of this will be | ||||
| general to window managers on X, much will be specific to Metacity, and | ||||
| there's probably some information that's common to programs in general but | ||||
| is nonetheless useful. | ||||
|  | ||||
| Overview | ||||
|   Administrative issues | ||||
|   Minimal Building/Testing Environment | ||||
|   Relevant standards and X properties | ||||
|   Debugging and testing | ||||
|     Debugging logs | ||||
|     Adding information to the log | ||||
|     Valgrind | ||||
|     Testing Utilities | ||||
|   Technical gotchas to keep in mind | ||||
|   Other important reading | ||||
|     Extra reading | ||||
|     Ideas for tasks to work on | ||||
|  | ||||
|  | ||||
| Administrative issues | ||||
|   Don't commit substantive code in here without asking hp@redhat.com. | ||||
|   Adding translations, no-brainer typo fixes, etc. is fine. | ||||
|  | ||||
|   The code could use cleanup in a lot of places, feel free to do so. | ||||
|  | ||||
|   See http://developer.gnome.org/dotplan/for_maintainers.html for | ||||
|   information on how to make a release.  The only difference from those | ||||
|   instructions is that the minor version number of a Metacity release | ||||
|   should always be a number from the Fibonacci sequence. | ||||
|  | ||||
| Minimal Building/Testing Environment | ||||
|   You do not need to _install_ a development version of Metacity to | ||||
|   build, run and test it; you can run it from some temporary | ||||
|   directory.  Also, you do not need to build all of Gnome in order to | ||||
|   build a development version of Metacity -- odds are, you may be able | ||||
|   to build metacity from CVS without building any other modules. | ||||
|  | ||||
|   As long as you have gtk+ >= 3.0 and GIO >= 2.25.10 with your distro | ||||
|   (gtk+ >= 2.6 if you manually revert the change from bug 348633), you | ||||
|   should be able to install your distro's development packages | ||||
|   (e.g. gtk2-devel, glib-devel, startup-notification-devel on | ||||
|   Fedora; also, remember to install the gnome-common package which is | ||||
|   needed for building cvs versions of Gnome modules like Metacity) as | ||||
|   well as the standard development tools (gcc, autoconf, automake, | ||||
|   pkg-config, intltool, and libtool) and be ready to build and test | ||||
|   Metacity.  Steps to do so: | ||||
|  | ||||
|   $ svn checkout http://svn.gnome.org/svn/metacity/trunk metacity | ||||
|   $ cd metacity | ||||
|   $ ./autogen.sh --prefix /usr | ||||
|   $ make | ||||
|   $ ./src/metacity --replace | ||||
|  | ||||
|   Again, note that you do not need to run 'make install'. | ||||
|  | ||||
| Relevant standards and X properties | ||||
|   There are two documents that describe some basics about how window | ||||
|   managers should behave: the ICCCM (Inter-Client Communication Conventions | ||||
|   Manual) and EWMH (Extended Window Manager Hints).  You can find these at | ||||
|   the following locations: | ||||
|     ICCCM - http://tronche.com/gui/x/icccm/ | ||||
|     EWMH  - :pserver:anoncvs@pdx.freedesktop.org:/cvs | ||||
|   The ICCCM is usually available in RPM or DEB format as well.  There is | ||||
|   actually an online version of the EWMH, but it is almost always woefully | ||||
|   out of date.  Just get it from cvs with these commands (the backslash | ||||
|   means include the stuff from the next line): | ||||
|     cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/icccm-extensions login | ||||
|     cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/icccm-extensions \ | ||||
|       checkout wm-spec | ||||
|  | ||||
|   DO NOT GO AND READ THOSE THINGS.  THEY ARE REALLY, REALLY BORING. | ||||
|  | ||||
|   If you do, you'll probably end up catching up on your sleep instead of | ||||
|   hacking on Metacity. ;-)  Instead, just look at the table of contents and | ||||
|   glance at a page or two to get an idea of what's in there.  Then only | ||||
|   refer to it if you see something weird in the code and you don't know | ||||
|   what it is but has some funny looking name like you see in one of those | ||||
|   two documents. | ||||
|  | ||||
|   You can refer to the COMPLIANCE file for additional information on these | ||||
|   specifications and Metacity's compliance therewith. | ||||
|  | ||||
|   One of the major things those documents cover that are useful to learn | ||||
|   about immediately are X properties.  The right way to learn about those, | ||||
|   though, is through hand on experimentation with the xprop command (and | ||||
|   then look up things you find from xprop in those two manuals if you're | ||||
|   curious enough).  First, try running | ||||
|     xprop | ||||
|   in a terminal and click on one of the windows on your screen.  That gives | ||||
|   you the x properties for that window.  Look through them and get a basic | ||||
|   idea of what's there for kicks.  Note that you can get rid of some of the | ||||
|   verboseness by grepping out the _NET_WM_ICON stuff, i.e. | ||||
|     xprop | grep -v _NET_WM_ICON | ||||
|   Next, try running | ||||
|     xprop -root | ||||
|   in a terminal.  There's all the properties of the root window (which you | ||||
|   can think of as the "main" Xserver window).  You can also manually | ||||
|   specify individual windows that you want the properties of with | ||||
|     xprop -id <id> | ||||
|   if you know the id of the window in question.  You can get the id of a | ||||
|   given window by either running xwininfo, e.g. | ||||
|     xwininfo | grep "Window id" | cut -f 4 -d ' ' | ||||
|   or by looking at the _NET_CLIENT_STACKING property of the root | ||||
|   window.  Finally, it can also be useful to add "-spy" (without the | ||||
|   quotes) to the xprop command to get it to continually monitor that | ||||
|   window and report any changes to you. | ||||
|  | ||||
| Debugging information | ||||
|   Trying to run a window manager under a typical debugger, such as gdb, | ||||
|   unfortunately just doesn't work very well.  So, we have to resort to | ||||
|   other methods. | ||||
|  | ||||
|   Debugging logs | ||||
|  | ||||
|   First, note that you can start a new version of metacity to replace the | ||||
|   existing one by running | ||||
|     metacity --replace | ||||
|   (which also comes in handy in the form "./src/metacity --replace" when | ||||
|   trying to quickly test a small change while hacking on metacity without | ||||
|   doing a full "make install", though I'm going off topic...)  This will | ||||
|   allow you to see any warnings printed at the terminal.  Sometimes it's | ||||
|   useful to have these directed to a logfile instead, which you can do by | ||||
|   running | ||||
|     METACITY_USE_LOGFILE=1 metacity --replace | ||||
|   The logfile it uses will be printed in the terminal.  Sometimes, it's | ||||
|   useful to get more information than just warnings.  You can set | ||||
|   METACITY_VERBOSE to do that, like so: | ||||
|     METACITY_VERBOSE=1 METACITY_USE_LOGFILE=1 metacity --replace | ||||
|   (note that METACITY_VERBOSE=1 can be problematic without | ||||
|   METACITY_USE_LOGFILE=1; avoid it unless running in from something that | ||||
|   won't be managed by the new Metacity--see bug 305091 for more details). | ||||
|   There are also other flags, such as METACITY_DEBUG, most of which I | ||||
|   haven't tried and don't know what they do.  Go to the source code | ||||
|   directory and run | ||||
|     grep "METACITY_" * | grep getenv | ||||
|   to find out what the other ones are. | ||||
|  | ||||
|   Adding information to the log | ||||
|  | ||||
|   Since we can't single step with a debugger, we often have to fall back to | ||||
|   the primitive method of getting information we want to know: adding | ||||
|   "print" statements.  Metacity has a fairly structured way to do this, | ||||
|   using the functions meta_warning, meta_topic, and meta_verbose.  All | ||||
|   three have the same basic format as printf, except that meta_topic also | ||||
|   takes a leading enumeration parameter to specify the type of message | ||||
|   being shown (makes it easier for grepping in a verbose log).  You'll find | ||||
|   tons of examples in the source code if you need them; just do a quick | ||||
|   grep or look in most any file.  Note that meta_topic and meta_verbose | ||||
|   messages only appear if verbosity is turned on.  I tend to frequently add | ||||
|   temporary meta_warning statements (or switch meta_topic or meta_verbose | ||||
|   ones to meta_warning ones) and then undo the changes once I've learned | ||||
|   the info that I needed. | ||||
|  | ||||
|   There is also a meta_print_backtrace (which again is only active if | ||||
|   verbosity is turned on) that can also be useful if you want to learn how | ||||
|   a particular line of code gets called.  And, of course, there's always | ||||
|   g_assert if you want to make sure some section isn't executed (or isn't | ||||
|   executed under certain conditions). | ||||
|  | ||||
|   Valgrind | ||||
|  | ||||
|   Valgrind is awesome for finding memory leaks or corruption and | ||||
|   uninitialized variables.  But I also tend to use it in a non-traditional | ||||
|   way as a partial substitute for a normal debugger: it can provide me with | ||||
|   a stack trace of where metacity is crashing if I made a change that | ||||
|   caused it to do so, which is one of the major uses of debuggers.  (And, | ||||
|   what makes it cooler than a debugger is that there will also often be | ||||
|   warnings pinpointing the cause of the crash from either some kind of | ||||
|   simple memory corruption or an uninitialized variable).  Sometimes, when | ||||
|   I merely want to know what is calling a particular function I'll just | ||||
|   throw in an "int i; printf("%d\n", i);" just because valgrind will give | ||||
|   me a full stacktrace whenever it sees that uninitialized variable being | ||||
|   used (yes, I could use meta_print_backtrace, but that means I have to | ||||
|   turn verbosity on). | ||||
|  | ||||
|   To run metacity under valgrind, use options typical for any Gnome | ||||
|   program, such as | ||||
|     valgrind --log-file=metacity.log --tool=memcheck --num-callers=48 \ | ||||
|     --leak-check=yes --leak-resolution=high --show-reachable=yes     \ | ||||
|     ./src/metacity --replace | ||||
|   where, again, the backslashes mean to join all the stuff on the following | ||||
|   line with the previous one. | ||||
|  | ||||
|   However, there is a downside.  Things run a little bit slowly, and it | ||||
|   appears that you'll need about 1.5GB of ram, which unfortunately prevents | ||||
|   most people from trying this. | ||||
|  | ||||
|   Testing Utilities | ||||
|  | ||||
|   src/run-metacity.sh | ||||
|     The script src/run-metacity.sh is useful to hack on the window manager.  | ||||
|     It runs metacity in an Xnest. e.g.: | ||||
|       CLIENTS=3 ./run-metacity.sh | ||||
|     or  | ||||
|       DEBUG=memprof ./run-metacity.sh | ||||
|     or | ||||
|       DEBUG_TEST=1 ./run-metacity-sh | ||||
|     or whatever. | ||||
|  | ||||
|   metacity-message | ||||
|     The tool metacity-message can be used as follows: | ||||
|       metacity-message reload-theme | ||||
|       metacity-message restart | ||||
|       metacity-message enable-keybindings | ||||
|       metacity-message disable-keybindings | ||||
|     The first of these is useful for testing themes, the second is just | ||||
|     another way (besides the --restart flag to metacity itself) of | ||||
|     restarting metacity, and the third is useful for testing Metacity when | ||||
|     running it under an Xnest (typically, the Metacity under the Xnest | ||||
|     wouldn't get keybinding notifications--making keyboard navigation not | ||||
|     work--but if you disable the keybindings for the global Metacity then | ||||
|     the Metacity under the Xnest can then get those keybinding notifications). | ||||
|  | ||||
|   metacity-window-demo | ||||
|     metacity-window-demo is good for trying behavior of various kinds | ||||
|     of window without launching a full desktop. | ||||
|  | ||||
| Technical gotchas to keep in mind | ||||
|   Files that include gdk.h or gtk.h are not supposed to include | ||||
|   display.h or window.h or other core files.  Files in the core | ||||
|   (display.[hc], window.[hc]) are not supposed to include gdk.h or | ||||
|   gtk.h.  Reasons: | ||||
|  | ||||
|     "Basically you don't want GDK most of the time. It adds | ||||
|     abstractions that cause problems, because they aren't designed to | ||||
|     be used in a WM where we do weird stuff (display grabs, and just | ||||
|     being the WM). At best GDK adds inefficiency, at worst it breaks | ||||
|     things in weird ways where you have to be a GDK guru to figure | ||||
|     them out. Owen also told me that they didn't want to start adding | ||||
|     a lot of hacks to GDK to let a WM use it; we both agreed back in | ||||
|     the mists of time that metacity would only use it for the "UI" | ||||
|     bits as it does. | ||||
|  | ||||
|     Having the split in the source code contains and makes very clear | ||||
|     the interface between the WM and GDK/GTK. This keeps people from | ||||
|     introducing extra GDK/GTK usage when it isn't needed or | ||||
|     appropriate. Also, it speeds up the compilation a bit, though this | ||||
|     was perhaps more relevant 5 years ago than it is now. | ||||
|  | ||||
|     There was also a very old worry that the GDK stuff might have to | ||||
|     be in a separate process to work right; that turned out to be | ||||
|     untrue. Though who knows what issues the CM will introduce." | ||||
|  | ||||
|   Remember that strings stored in X properties are not in UTF-8, and they | ||||
|   have to end up in UTF-8 before we try putting them through Pango. | ||||
|  | ||||
|   If you make any X request involving a client window, you have to | ||||
|   meta_error_trap_push() around the call; this is not necessary for X | ||||
|   requests on the frame windows. | ||||
|  | ||||
|   Remember that not all windows have frames, and window->frame can be NULL. | ||||
|  | ||||
| Other important reading & where to get started | ||||
|   Extra reading | ||||
|  | ||||
|   There are some other important things to read to get oriented as well. | ||||
|   These are: | ||||
|     http://pobox.com/~hp/features.html | ||||
|     rationales.txt | ||||
|     doc/code-overview.txt | ||||
|  | ||||
|   It pays to read http://pobox.com/~hp/features.html in order | ||||
|   to understand the philosophy of Metacity. | ||||
|  | ||||
|   The rationales.txt file has two things: (1) a list of design choices with | ||||
|   links in the form of bugzilla bugs that discuss the issue, and (2) a list | ||||
|   outstanding bug categories, each of which is tracked by a particular | ||||
|   tracker bug in bugzilla from which you can find several closely related | ||||
|   bug reports. | ||||
|  | ||||
|   doc/code-overview.txt provides a fairly good overview of the code, | ||||
|   including coverage of the function of the various files, the main | ||||
|   structures and their relationships, and places to start looking in the | ||||
|   code tailored to general categories of tasks. | ||||
|  | ||||
|   Ideas for tasks to work on | ||||
|  | ||||
|   There are a variety of things you could work on in the code.  You may | ||||
|   have ideas of your own, but in case you don't, let me provide a list of | ||||
|   ideas you could choose from: | ||||
|  | ||||
|   If you're ambitious, there's a list of things Havoc made that he'd really | ||||
|   like to see tackled, which you can find at | ||||
|   http://log.ometer.com/2004-05.html.  Be sure to double check with someone | ||||
|   to make sure the item is still relevant if you're interested in one of | ||||
|   these.  Another place to look for ideas, of course, is bugzilla.  One can | ||||
|   just do queries and look for things that look fixable. | ||||
|  | ||||
|   However, perhaps the best way of getting ideas of related tasks to work | ||||
|   on, is to look at the second half of the rationales.txt file, which tries | ||||
|   to group bugs by type. | ||||
							
								
								
									
										8
									
								
								MAINTAINERS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								MAINTAINERS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| Tomas Frydrych | ||||
| Email: tf linux intel com | ||||
| Userid: tomasf | ||||
|  | ||||
| Owen Taylor | ||||
| Email: otaylor redhat com | ||||
| Userid: otaylor | ||||
|  | ||||
							
								
								
									
										43
									
								
								METACITY_MAINTAINERS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								METACITY_MAINTAINERS
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| Currently active maintainers | ||||
| -------------------------------- | ||||
|  | ||||
| Elijah Newren | ||||
| Email: newren gmail com | ||||
| Userid: newren | ||||
|  | ||||
|   - Usually won't touch the theme bugs (isn't interested) or the | ||||
|     compositor (until open source nvidia drivers are up to snuff). | ||||
|     Tends to be most interested in libwnck/gtk interactions, focus | ||||
|     issues, constraints problems, and raising/stacking, but works on | ||||
|     just about anything other than themes and the compositor. | ||||
|  | ||||
| Thomas Thurman | ||||
| Email: thomas thurman org uk | ||||
| Userid: tthurman | ||||
|  | ||||
|   - Responsible for all theme bugs and the compositor (thank goodness | ||||
|     Thomas got involved, eh?).  I'm sure he'll replace this sentence | ||||
|     with his interests when he reads it.  ;-) | ||||
|  | ||||
|  | ||||
| Semi-active maintainers | ||||
| -------------------------------- | ||||
|  | ||||
| Havoc Pennington | ||||
| Email: hp  redhat com | ||||
| Userid: hp | ||||
|   - Original author.  Doesn't patch metacity anymore, but is active in | ||||
|     answering questions, responding to bugs, providing very helpful | ||||
|     suggestions and insight, and even assisting with debugging. | ||||
|  | ||||
|  | ||||
| Important historical figureheads | ||||
| -------------------------------- | ||||
|  | ||||
| Rob Adams (readams  readams net) | ||||
|   - Was the main maintainer of metacity for a while; particular areas | ||||
|     of focus included xinerama, placement, and an older version of the | ||||
|     constraints code.  Still responds to bugs every once in a while. | ||||
|  | ||||
| Søren Sandmann (sandmann  redhat com) | ||||
|   - Wrote most of the current compositing manager code + libcm | ||||
							
								
								
									
										11
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								Makefile.am
									
									
									
									
									
								
							| @@ -1,11 +1,6 @@ | ||||
|  | ||||
| SUBDIRS = data src po doc | ||||
| SUBDIRS=src po doc | ||||
|  | ||||
| ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} | ||||
| EXTRA_DIST = HACKING MAINTAINERS rationales.txt | ||||
|  | ||||
| DISTCLEANFILES = \ | ||||
| 	intltool-extract \ | ||||
| 	intltool-merge \ | ||||
| 	intltool-update \ | ||||
| 	po/stamp-it \ | ||||
| 	po/.intltool-merge-cache | ||||
| DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache | ||||
|   | ||||
							
								
								
									
										422
									
								
								README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										422
									
								
								README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,422 @@ | ||||
| Metacity is not a meta-City as in an urban center, but rather | ||||
| Meta-ness as in the state of being meta. i.e. metacity : meta as | ||||
| opacity : opaque. Also it may have something to do with the Meta key | ||||
| on UNIX keyboards. | ||||
|  | ||||
| The first release of Metacity was version 2.3. Metacity has no need for | ||||
| your petty hangups about version numbers. | ||||
|  | ||||
| The stable releases so far are 2.4.x, 2.6.x, 2.8.[01], 2.8.1.x, 2.8.5-, | ||||
| 2.10.x, 2.12.x, 2.14.x, 2.16.x. | ||||
|  | ||||
| Unstable branches are 2.3.x, 2.5.x, 2.8.2-4, 2.9.x, 2.11.x, 2.13.x, | ||||
| 2.15.x, 2.17.x. | ||||
|  | ||||
| COMPILING MUTTER | ||||
| === | ||||
|  | ||||
| You need GTK+ 2.2.  For startup notification to work you need | ||||
| libstartup-notification at | ||||
| http://www.freedesktop.org/software/startup-notification/ or on the | ||||
| GNOME ftp site. | ||||
| You need Clutter 1.0. You need gobject-introspection 0.6.3. | ||||
|  | ||||
| REPORTING BUGS AND SUBMITTING PATCHES | ||||
| === | ||||
|  | ||||
| Report new bugs on http://bugzilla.gnome.org. Please check for | ||||
| duplicates, *especially* if you are reporting a feature request.  | ||||
|  | ||||
| Please do *not* add "me too!" or "yes I really want this!" comments to | ||||
| feature requests in bugzilla. Please read | ||||
| http://pobox.com/~hp/features.html prior to adding any kind of flame | ||||
| about missing features or misfeatures. | ||||
|  | ||||
| Feel free to send patches too; Metacity is relatively small and | ||||
| simple, so if you find a bug or want to add a feature it should be | ||||
| pretty easy.  Send me mail, or put the patch in bugzilla. | ||||
|  | ||||
| See the HACKING file for some notes on hacking Mutter. | ||||
|  | ||||
| MUTTER FEATURES | ||||
| === | ||||
|  | ||||
|  - Uses GTK+ 2.0 for drawing window frames. This means colors, fonts,  | ||||
|    etc. come from GTK+ theme. | ||||
|  | ||||
|  - Does not expose the concept of "window manager" to the user.  Some | ||||
|    of the features in the GNOME control panel and other parts of the | ||||
|    desktop happen to be implemented in metacity, such as changing your | ||||
|    window border theme, or changing your window navigation shortcuts, | ||||
|    but the user doesn't need to know this. | ||||
|  | ||||
|  - Includes only the window manager; does not try to be a desktop | ||||
|    environment. The pager, configuration, etc. are all separate and | ||||
|    modular. The "libwnck" library (which I also wrote) is available | ||||
|    for writing metacity extensions, pagers, and so on. (But libwnck | ||||
|    isn't metacity specific, or GNOME-dependent; it requires only GTK, | ||||
|    and should work with KWin, fvwm2, and other EWMH-compliant WMs.) | ||||
|  | ||||
|  - Has a simple theme system and a couple of extra themes come with it. | ||||
|    Change themes via gsettings: | ||||
|      gsettings set org.gnome.desktop.wm.preferences theme Crux | ||||
|      gsettings set org.gnome.desktop.wm.preferences theme Gorilla | ||||
|      gsettings set org.gnome.desktop.wm.preferences theme Atlanta | ||||
|      gsettings set org.gnome.desktop.wm.preferences theme Bright | ||||
|  | ||||
|    See theme-format.txt for docs on the theme format. Use  | ||||
|    metacity-theme-viewer to preview themes. | ||||
|  | ||||
|  - Change number of workspaces via gsettings: | ||||
|      gsettings set org.gnome.desktop.wm.preferences num-workspaces 5 | ||||
|  | ||||
|    Can also change workspaces from GNOME 2 pager. | ||||
|  | ||||
|  - Change focus mode: | ||||
|      gsettings set org.gnome.desktop.wm.preferences focus-mode mouse | ||||
|      gsettings set org.gnome.desktop.wm.preferences focus-mode sloppy | ||||
|      gsettings set org.gnome.desktop.wm.preferences focus-mode click | ||||
|  | ||||
|  - Global keybinding defaults include:    | ||||
|  | ||||
|     Alt-Tab                forward cycle window focus | ||||
|     Alt-Shift-Tab          backward cycle focus | ||||
|     Alt-Ctrl-Tab           forward cycle focus among panels | ||||
|     Alt-Ctrl-Shift-Tab     backward cycle focus among panels | ||||
|     Alt-Escape             cycle window focus without a popup thingy | ||||
|     Ctrl-Alt-Left Arrow    previous workspace | ||||
|     Ctrl-Alt-Right Arrow   next workspace | ||||
|     Ctrl-Alt-D             minimize/unminimize all, to show desktop | ||||
|  | ||||
|    Change keybindings for example: | ||||
|  | ||||
|      gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-1 '[<Alt>F1]' | ||||
|     | ||||
|    Also try the GNOME keyboard shortcuts control panel. | ||||
|  | ||||
|  - Window keybindings: | ||||
|  | ||||
|     Alt-space         window menu | ||||
|  | ||||
|     Mnemonics work in the menu. That is, Alt-space then underlined | ||||
|     letter in the menu item works. | ||||
|  | ||||
|     Choose Move from menu, and arrow keys to move the window. | ||||
|  | ||||
|     While moving, hold down Control to move slower, and  | ||||
|       Shift to snap to edges. | ||||
|  | ||||
|     Choose Resize from menu, and nothing happens yet, but  | ||||
|       eventually I might implement something. | ||||
|  | ||||
|     Keybindings for things like maximize window, vertical maximize, | ||||
|     etc. can be bound, but may not all exist by default. See | ||||
|     metacity.schemas. | ||||
|  | ||||
|  - Window mouse bindings: | ||||
|  | ||||
|     Clicking anywhere on frame with button 1 will raise/focus window | ||||
|      | ||||
|     If you click a window control, such as the close button, then the  | ||||
|      control will activate on button release if you are still over it | ||||
|      on release (as with most GUI toolkits) | ||||
|  | ||||
|     If you click and drag borders with button 1 it resizes the window | ||||
|      | ||||
|     If you click and drag the titlebar with button 1 it moves the  | ||||
|      window. | ||||
|  | ||||
|     If you click anywhere on the frame with button 2 it lowers the  | ||||
|      window. | ||||
|  | ||||
|     If you click anywhere on the frame with button 3 it shows the  | ||||
|      window menu. | ||||
|  | ||||
|     If you hold down Super (windows key) and click inside a window, it | ||||
|      will move the window (buttons 1 and 2) or show menu (button 3). | ||||
|      Or you can configure a different modifier for this. | ||||
|  | ||||
|     If you pick up a window with button 1 and then switch workspaces | ||||
|      the window will come with you to the new workspace, this is  | ||||
|      a feature copied from Enlightenment. | ||||
|  | ||||
|     If you hold down Shift while moving a window, the window snaps | ||||
|      to edges of other windows and the screen. | ||||
|  | ||||
|  - Session management: | ||||
|  | ||||
|     Mutter connects to the session manager and will set itself up to | ||||
|      be respawned. It theoretically restores sizes/positions/workspace | ||||
|      for session-aware applications. | ||||
|  | ||||
|  - Mutter implements much of the EWMH window manager specification | ||||
|    from freedesktop.org, as well as the older ICCCM.  Please refer to | ||||
|    the COMPLIANCE file for information on mutter compliance with | ||||
|    these standards. | ||||
|  | ||||
|  - Uses Pango to render text, so has cool i18n capabilities.  | ||||
|    Supports UTF-8 window titles and such. | ||||
|  | ||||
|  - There are simple animations for actions such as minimization,  | ||||
|    to help users see what is happening. Should probably  | ||||
|    have a few more of these and make them nicer. | ||||
|  | ||||
|  - if you have the proper X setup, set the GDK_USE_XFT=1  | ||||
|    environment variable to get antialiased window titles. | ||||
|  | ||||
|  - considers the panel when placing windows and maximizing | ||||
|    them. | ||||
|  | ||||
|  - handles the window manager selection from the ICCCM. Will exit if | ||||
|    another WM claims it, and can claim it from another WM if you pass | ||||
|    the --replace argument. So if you're running another | ||||
|    ICCCM-compliant WM, you can run "mutter --replace" to replace it | ||||
|    with Metacity. | ||||
|  | ||||
|  - does basic colormap handling | ||||
|  | ||||
|  - and much more! well, maybe not a lot more. | ||||
|  | ||||
| HOW TO ADD EXTERNAL FEATURES | ||||
| === | ||||
|  | ||||
| You can write a mutter "plugin" such as a pager, window list, icon | ||||
| box, task menu, or even things like "window matching" using the | ||||
| Extended Window Manager Hints. See http://www.freedesktop.org for the | ||||
| EWMH specification. An easy-to-use library called "libwnck" is | ||||
| available that uses the EWMH and is specifically designed for writing | ||||
| WM accessories. | ||||
|  | ||||
| You might be interested in existing accessories such as "Devil's Pie" | ||||
| by Ross Burton, which add features to Mutter (or other | ||||
| EWMH-compliant WMs). | ||||
|  | ||||
| MUTTER BUGS, NON-FEATURES, AND CAVEATS | ||||
| === | ||||
|  | ||||
| See bugzilla: http://bugzilla.gnome.org/query.cgi | ||||
|  | ||||
| FAQ | ||||
| === | ||||
|  | ||||
| Q: Will you add my feature? | ||||
|  | ||||
| A: If it makes sense to turn on unconditionally, or is genuinely a | ||||
|    harmless preference that I would not be embarrassed to put in a | ||||
|    simple, uncluttered, user-friendly configuration dialog. | ||||
|  | ||||
|    If the only rationale for your feature is that other window | ||||
|    managers have it, or that you are personally used to it, or | ||||
|    something like that, then I will not be impressed. Metacity is | ||||
|    firmly in the "choose good defaults" camp rather than the "offer 6 | ||||
|    equally broken ways to do it, and let the user pick one" camp. | ||||
|  | ||||
|    This is part of a "no crackrock" policy, despite some exceptions | ||||
|    I'm mildly embarrassed about. For example, multiple workspaces | ||||
|    probably constitute crackrock, they confuse most users and really | ||||
|    are not that useful if you have a decent tasklist and so on. But I | ||||
|    am too used to them to turn them off.  Or alternatively | ||||
|    iconification/tasklist is crack, and workspaces/pager are good. But | ||||
|    having both is certainly a bit wrong.  Sloppy focus is probably | ||||
|    crackrock too. | ||||
|  | ||||
|    But don't think unlimited crack is OK just because I slipped up a | ||||
|    little. No slippery slope here. | ||||
|  | ||||
|    Don't let this discourage patches and fixes - I love those. ;-) | ||||
|    Just be prepared to hear the above objections if your patch adds | ||||
|    some crack-ridden configuration option. | ||||
|  | ||||
|    http://pobox.com/~hp/free-software-ui.html | ||||
|    http://pobox.com/~hp/features.html    | ||||
|  | ||||
| Q: Will Mutter be part of GNOME? | ||||
|  | ||||
| A: It is not officially part of GNOME as of GNOME 2.27. We are | ||||
|    hoping to have mutter officially included as of GNOME 2.28.  | ||||
|  | ||||
| Q: Why does Mutter remember the workspace/position of some apps  | ||||
|    but not others across logout/login? | ||||
|  | ||||
| A: Mutter only stores sizes/positions for apps that are session | ||||
|    managed. As far as I can determine, there is no way to attempt to | ||||
|    remember workspace/position for non-session-aware apps without | ||||
|    causing a lot of weird effects. | ||||
|  | ||||
|    The reason is that you don't know which non-SM-aware apps were | ||||
|    launched by the session. When you initially log in, Metacity sees a | ||||
|    bunch of new windows appear. But it can't distinguish between | ||||
|    windows that were stored in your session, or windows you just | ||||
|    launched after logging in. If Metacity tried to guess that a window | ||||
|    was from the session, it could e.g. end up maximizing a dialog, or | ||||
|    put a window you just launched on another desktop or in a weird | ||||
|    place. And in fact I see a lot of bugs like this in window managers | ||||
|    that try to handle non-session-aware apps. | ||||
|  | ||||
|    However, for session-aware apps, Mutter can tell that the | ||||
|    application instance is from the session and thus restore it | ||||
|    reliably, assuming the app properly restores the windows it had  | ||||
|    open on session save. | ||||
|     | ||||
|    So the correct way to fix the situation is to make apps | ||||
|    session-aware. libSM has come with X for years, it's very | ||||
|    standardized, it's shared by GNOME and KDE - even twm is | ||||
|    session-aware. So anyone who won't take a patch to add SM is more | ||||
|    archaic than twm - and you should flame them. ;-) | ||||
|  | ||||
|    Docs on session management: | ||||
|     http://www.fifi.org/doc/xspecs/xsmp.txt.gz | ||||
|     http://www.fifi.org/doc/xspecs/SMlib.txt.gz | ||||
|  | ||||
|    See also the ICCCM section on SM. For GNOME apps, use the | ||||
|    GnomeClient object. For a simple example of using libSM directly, | ||||
|    twm/session.c in the twm source code is pretty easy to understand. | ||||
|  | ||||
| Q: How about adding viewports in addition to workspaces? | ||||
|  | ||||
| A: I could conceivably be convinced to use viewports _instead_ of | ||||
|    workspaces, though currently I'm not thinking that. But I don't | ||||
|    think it makes any sense to have both; it's just confusing. They | ||||
|    are functionally equivalent. | ||||
|  | ||||
|    You may think this means that you won't have certain keybindings,  | ||||
|    or something like that. This is a misconception. The only  | ||||
|    _fundamental_ difference between viewports and workspaces is that  | ||||
|    with viewports, windows can "overlap" and appear partially on  | ||||
|    one and partially on another. All other differences that | ||||
|    traditionally exist in other window managers are accidental -  | ||||
|    the features commonly associated with viewports can be implemented | ||||
|    for workspaces, and vice versa. | ||||
|  | ||||
|    So I don't want to have two kinds of | ||||
|    workspace/desktop/viewport/whatever, but I'm willing to add | ||||
|    features traditionally associated with either kind if those | ||||
|    features make sense. | ||||
|  | ||||
| Q: Why is the panel always on top? | ||||
|  | ||||
| A: Because it's a better user interface, and until we made this not | ||||
|    configurable a bunch of apps were not getting fixed (the app | ||||
|    authors were just saying "put your panel on the bottom" instead of | ||||
|    properly supporting fullscreen mode, and such). | ||||
|  | ||||
|    rationales.txt has the bugzilla URL for some flamefesting on this, | ||||
|    if you want to go back and relive the glory. | ||||
|    Read these and the bugzilla stuff before asking/commenting: | ||||
|      http://pobox.com/~hp/free-software-ui.html | ||||
|      http://pobox.com/~hp/features.html    | ||||
|  | ||||
| Q: Why is there no edge flipping? | ||||
|  | ||||
| A: This one is also in rationales.txt. Because "ouija board" UI, where | ||||
|    you just move the mouse around and the computer guesses what you | ||||
|    mean, has a lot of issues. This includes mouse focus, shade-hover | ||||
|    mode, edge flipping, autoraise, etc. Metacity has mouse focus and | ||||
|    autoraise as a compromise, but these features are all confusing for | ||||
|    many users, and cause problems with accessibility, fitt's law, and | ||||
|    so on. | ||||
|  | ||||
|    Read these and the bugzilla stuff before asking/commenting: | ||||
|      http://pobox.com/~hp/free-software-ui.html | ||||
|      http://pobox.com/~hp/features.html    | ||||
|  | ||||
| Q: Why does wireframe move/resize suck? | ||||
|  | ||||
| A: You can turn it on with the reduced_resources setting. | ||||
|  | ||||
|    But: it has low usability, and is a pain | ||||
|    to implement, and there's no reason opaque move/resize should be a | ||||
|    problem on any setup that can run a modern desktop worth a darn to | ||||
|    begin with. | ||||
|  | ||||
|    Read these and the bugzilla stuff before asking/commenting: | ||||
|      http://pobox.com/~hp/free-software-ui.html | ||||
|      http://pobox.com/~hp/features.html    | ||||
|  | ||||
|    The reason we had to add wireframe anyway was broken  | ||||
|    proprietary apps that can't handle lots of resize events. | ||||
|  | ||||
| Q: Why no XYZ? | ||||
|  | ||||
| A: You are probably getting the idea by now - check rationales.txt, | ||||
|    query/search bugzilla, and read http://pobox.com/~hp/features.html | ||||
|    and http://pobox.com/~hp/free-software-ui.html | ||||
|  | ||||
|    Then sit down and answer the question for yourself.  Is the feature | ||||
|    good? What's the rationale for it? Answer "why" not just "why not." | ||||
|    Justify in terms of users as a whole, not just users like | ||||
|    yourself. How else can you solve the same problem? etc. If that | ||||
|    leads you to a strong opinion, then please, post the rationale for | ||||
|    discussion to an appropriate bugzilla bug, or to | ||||
|    usability@gnome.org. | ||||
|  | ||||
|    Please don't just "me too!" on bugzilla bugs, please don't think | ||||
|    flames will get you anywhere, and please don't repeat rationale | ||||
|    that's already been offered. | ||||
|  | ||||
| Q: Your dumb web pages you made me read talk about solving problems in | ||||
|    fundamental ways instead of adding preferences or workarounds. | ||||
|    What are some examples where metacity has done this? | ||||
|  | ||||
| A: There are quite a few, though many opportunities remain.  Sometimes | ||||
|    the real fix involves application changes. The metacity approach is | ||||
|    that it's OK to require apps to change, though there are also | ||||
|    plenty of workarounds in metacity for battles considered too hard | ||||
|    to fight. | ||||
|  | ||||
|    Here are some examples: | ||||
|  | ||||
|    - fullscreen mode was introduced to allow position constraints, | ||||
|      panel-on-top, and other such things to apply to normal windows | ||||
|      while still allowing video players etc. to "just work" | ||||
|  | ||||
|    - "whether to include minimized windows in Alt+Tab" was solved  | ||||
|      by putting minimized windows at the *end* of the tab order.  | ||||
|  | ||||
|    - Whether to pop up a feedback display during Alt+Tab was solved by | ||||
|      having both Alt+Tab and Alt+Esc | ||||
|  | ||||
|    - Whether to have a "kill" feature was solved by automatically | ||||
|      detecting and offering to kill stuck apps. Better, metacity | ||||
|      actually does "kill -9" on the process, it doesn't just | ||||
|      disconnect the process from the X server. You'll appreciate this | ||||
|      if you ever did a "kill" on Netscape 4, and watched it keep | ||||
|      eating 100% CPU even though the X server had booted it. | ||||
|  | ||||
|    - The workspaces vs. viewports mess was avoided by adding | ||||
|      directional navigation and such to workspaces, see discussion | ||||
|      earlier in this file. | ||||
|  | ||||
|    - Instead of configurable placement algorithms, there's just one  | ||||
|      that works fairly well most of the time. | ||||
|  | ||||
|    - To avoid excess CPU use during opaque move/resize, we rate limit | ||||
|      the updates to the application window's size. | ||||
|  | ||||
|    - Instead of configurable "show size of window while resizing," | ||||
|      it's only shown for windows where it matters, such as terminals. | ||||
|      (Only use-case given for all windows is for web designers | ||||
|      choosing their web browser size, but there are web sites and | ||||
|      desktop backgrounds that do this for you.) | ||||
|  | ||||
|    - Using startup notification, applications open on the workspace | ||||
|      where you launched them, not the active workspace when their | ||||
|      window is opened. | ||||
|  | ||||
|    - and much more. | ||||
|  | ||||
| Q: I think mutter sucks. | ||||
|  | ||||
| A: Feel free to use any WM you like. The reason metacity follows the | ||||
|    ICCCM and EWMH specifications is that it makes metacity a modular, | ||||
|    interchangeable part in the desktop. libwnck-based apps such as the | ||||
|    GNOME window list will work just fine with any EWMH-compliant WM. | ||||
|  | ||||
| Q: Did you spend a lot of time on this? | ||||
|  | ||||
| A: Originally the answer was no. Sadly the answer is now yes. | ||||
|  | ||||
| Q: How can you claim that you are anti-crack, while still  | ||||
|    writing a window manager? | ||||
|  | ||||
| A: I have no comment on that. | ||||
| @@ -1,12 +1,13 @@ | ||||
| #!/bin/sh | ||||
| #!/bin/bash | ||||
| # Run this to generate all the initial makefiles, etc. | ||||
|  | ||||
| srcdir=`dirname $0` | ||||
| test -z "$srcdir" && srcdir=. | ||||
|  | ||||
| REQUIRED_AUTOMAKE_VERSION=1.11 | ||||
| PKG_NAME="mutter" | ||||
| REQUIRED_AUTOMAKE_VERSION=1.10 | ||||
|  | ||||
| (test -f $srcdir/configure.ac \ | ||||
| (test -f $srcdir/configure.in \ | ||||
|   && test -d $srcdir/src) || { | ||||
|     echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" | ||||
|     echo " top-level metacity directory" | ||||
| @@ -18,4 +19,4 @@ which gnome-autogen.sh || { | ||||
|     echo "your distribution's package manager)." | ||||
|     exit 1 | ||||
| } | ||||
| . gnome-autogen.sh | ||||
| USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| AC_PREREQ(2.62) | ||||
| AC_PREREQ(2.50) | ||||
| 
 | ||||
| m4_define([mutter_major_version], [3]) | ||||
| m4_define([mutter_minor_version], [17]) | ||||
| m4_define([mutter_micro_version], [92]) | ||||
| m4_define([mutter_minor_version], [4]) | ||||
| m4_define([mutter_micro_version], [1]) | ||||
| 
 | ||||
| m4_define([mutter_version], | ||||
|           [mutter_major_version.mutter_minor_version.mutter_micro_version]) | ||||
| @@ -12,12 +12,10 @@ m4_define([mutter_plugin_api_version], [3]) | ||||
| AC_INIT([mutter], [mutter_version], | ||||
|         [http://bugzilla.gnome.org/enter_bug.cgi?product=mutter]) | ||||
| 
 | ||||
| AC_CONFIG_MACRO_DIR([m4]) | ||||
| AC_CONFIG_AUX_DIR([build-aux]) | ||||
| AC_CONFIG_SRCDIR(src/core/display.c) | ||||
| AC_CONFIG_HEADERS(config.h) | ||||
| 
 | ||||
| AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz tar-ustar subdir-objects]) | ||||
| AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar]) | ||||
| m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],) | ||||
| AM_MAINTAINER_MODE([enable]) | ||||
| 
 | ||||
| @@ -40,46 +38,43 @@ GETTEXT_PACKAGE=mutter | ||||
| AC_SUBST(GETTEXT_PACKAGE) | ||||
| AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain]) | ||||
| 
 | ||||
| LT_PREREQ([2.2.6]) | ||||
| LT_INIT([disable-static]) | ||||
| IT_PROG_INTLTOOL([0.41]) | ||||
| IT_PROG_INTLTOOL([0.34.90]) | ||||
| AC_PROG_CC | ||||
| AC_PROG_CC_C_O | ||||
| AC_PROG_INSTALL | ||||
| AC_ISC_POSIX | ||||
| AC_HEADER_STDC | ||||
| PKG_PROG_PKG_CONFIG([0.21]) | ||||
| AC_LIBTOOL_WIN32_DLL | ||||
| AM_PROG_LIBTOOL | ||||
| 
 | ||||
| # Sets GLIB_GENMARSHAL and GLIB_MKENUMS | ||||
| AM_PATH_GLIB_2_0() | ||||
| 
 | ||||
| #### Integer sizes | ||||
| 
 | ||||
| AC_CHECK_SIZEOF(char) | ||||
| AC_CHECK_SIZEOF(short) | ||||
| AC_CHECK_SIZEOF(long) | ||||
| AC_CHECK_SIZEOF(int) | ||||
| AC_CHECK_SIZEOF(void *) | ||||
| AC_CHECK_SIZEOF(long long) | ||||
| AC_CHECK_SIZEOF(__int64) | ||||
| 
 | ||||
| ## byte order | ||||
| AC_C_BIGENDIAN | ||||
| 
 | ||||
| CANBERRA_GTK=libcanberra-gtk3 | ||||
| CANBERRA_GTK_VERSION=0.26 | ||||
| 
 | ||||
| CLUTTER_PACKAGE=clutter-1.0 | ||||
| 
 | ||||
| MUTTER_PC_MODULES=" | ||||
|    gtk+-3.0 >= 3.9.11 | ||||
|    gio-unix-2.0 >= 2.35.1 | ||||
|    gtk+-3.0 >= 3.3.7 | ||||
|    gio-2.0 >= 2.25.10 | ||||
|    pango >= 1.2.0 | ||||
|    cairo >= 1.10.0 | ||||
|    gsettings-desktop-schemas >= 3.15.92 | ||||
|    $CLUTTER_PACKAGE >= 1.23.4 | ||||
|    cogl-1.0 >= 1.17.1 | ||||
|    upower-glib >= 0.99.0 | ||||
|    gnome-desktop-3.0 | ||||
|    xcomposite >= 0.2 | ||||
|    xcursor | ||||
|    xdamage | ||||
|    xext | ||||
|    xfixes | ||||
|    xi >= 1.6.0 | ||||
|    xkbfile | ||||
|    xkeyboard-config | ||||
|    xkbcommon >= 0.4.3 | ||||
|    xkbcommon-x11 | ||||
|    xrender | ||||
|    x11-xcb | ||||
|    xcb-randr | ||||
|    gsettings-desktop-schemas >= 3.3.0 | ||||
|    xcomposite >= 0.2 xfixes xrender xdamage | ||||
|    $CLUTTER_PACKAGE >= 1.9.10 | ||||
|    cogl-1.0 >= 1.9.6 | ||||
| " | ||||
| 
 | ||||
| GLIB_GSETTINGS | ||||
| @@ -108,18 +103,27 @@ AC_ARG_WITH(libcanberra, | ||||
|                  [disable the use of libcanberra for playing sounds]),, | ||||
|   with_libcanberra=auto) | ||||
| 
 | ||||
| AC_ARG_WITH([xwayland-path], | ||||
|             [AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])], | ||||
|             [XWAYLAND_PATH="$withval"], | ||||
|             [XWAYLAND_PATH="$bindir/Xwayland"]) | ||||
| AC_ARG_ENABLE(xsync, | ||||
|   AC_HELP_STRING([--disable-xsync], | ||||
|                  [disable mutter's use of the XSync extension]),, | ||||
|   enable_xsync=auto) | ||||
| 
 | ||||
| AC_ARG_ENABLE(installed_tests, | ||||
|               AS_HELP_STRING([--enable-installed-tests], | ||||
|                              [Install test programs (default: no)]),, | ||||
|               [enable_installed_tests=no]) | ||||
| AM_CONDITIONAL(BUILDOPT_INSTALL_TESTS, test x$enable_installed_tests = xyes) | ||||
| AC_ARG_ENABLE(shape, | ||||
|   AC_HELP_STRING([--disable-shape], | ||||
|                  [disable mutter's use of the shaped window extension]),, | ||||
|   enable_shape=auto) | ||||
| 
 | ||||
| ## try definining HAVE_BACKTRACE | ||||
| AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)]) | ||||
| 
 | ||||
| AM_GLIB_GNU_GETTEXT | ||||
| 
 | ||||
| ## here we get the flags we'll actually use | ||||
| # GRegex requires Glib-2.14.0 | ||||
| PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0) | ||||
| # gtk_window_set_icon_name requires gtk2+-2.6.0 | ||||
| PKG_CHECK_MODULES(MUTTER_MESSAGE, gtk+-3.0) | ||||
| PKG_CHECK_MODULES(MUTTER_WINDOW_DEMO, gtk+-3.0) | ||||
| 
 | ||||
| # Unconditionally use this dir to avoid a circular dep with gnomecc | ||||
| GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings" | ||||
| @@ -184,47 +188,22 @@ if test x$found_introspection != xno; then | ||||
|   AC_SUBST(META_GIR) | ||||
| fi | ||||
| 
 | ||||
| AC_SUBST(XWAYLAND_PATH) | ||||
| AC_MSG_CHECKING([Xcursor]) | ||||
| if $PKG_CONFIG xcursor; then | ||||
|      have_xcursor=yes | ||||
|   else | ||||
|      have_xcursor=no | ||||
|   fi | ||||
|   AC_MSG_RESULT($have_xcursor) | ||||
| 
 | ||||
| if test x$have_xcursor = xyes; then | ||||
|   echo "Building with Xcursor" | ||||
|   MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor" | ||||
|   AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support]) | ||||
| fi | ||||
| 
 | ||||
| PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES) | ||||
| 
 | ||||
| MUTTER_NATIVE_BACKEND_MODULES="clutter-egl-1.0 libdrm libsystemd libinput gudev-1.0 gbm >= 10.3" | ||||
| 
 | ||||
| AC_ARG_ENABLE(native-backend, | ||||
|   AS_HELP_STRING([--disable-native-backend], [disable mutter native (KMS) backend]),, | ||||
|   enable_native_backend=auto | ||||
| ) | ||||
| AS_IF([test "$enable_native_backend" = "yes"], [have_native_backend=yes], | ||||
|       [test "$enable_native_backend" = "auto"], PKG_CHECK_EXISTS([$MUTTER_NATIVE_BACKEND_MODULES], [have_native_backend=yes])) | ||||
| 
 | ||||
| AS_IF([test "$have_native_backend" = "yes"], [ | ||||
|   PKG_CHECK_MODULES([MUTTER_NATIVE_BACKEND], [$MUTTER_NATIVE_BACKEND_MODULES]) | ||||
|   AC_DEFINE([HAVE_NATIVE_BACKEND],[1], [Define if you want to enable the native (KMS) backend based on systemd]) | ||||
| ]) | ||||
| AM_CONDITIONAL([HAVE_NATIVE_BACKEND],[test "$have_native_backend" = "yes"]) | ||||
| 
 | ||||
| MUTTER_WAYLAND_MODULES="clutter-wayland-1.0 clutter-wayland-compositor-1.0 wayland-server >= 1.6.90" | ||||
| 
 | ||||
| AC_ARG_ENABLE(wayland, | ||||
|   AS_HELP_STRING([--disable-wayland], [disable mutter on wayland support]),, | ||||
|   enable_wayland=auto | ||||
| ) | ||||
| AS_IF([test "$enable_wayland" = "yes"], [have_wayland=yes], | ||||
|       [test "$enable_wayland" = "auto"], PKG_CHECK_EXISTS([$MUTTER_WAYLAND_MODULES], [have_wayland=yes])) | ||||
| 
 | ||||
| AS_IF([test "$have_wayland" = "yes"], [ | ||||
|   PKG_CHECK_MODULES([MUTTER_WAYLAND], [$MUTTER_WAYLAND_MODULES]) | ||||
|   AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no]) | ||||
|   AS_IF([test $WAYLAND_SCANNER = "no"], | ||||
|     [AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols])]) | ||||
|   AC_SUBST([WAYLAND_SCANNER]) | ||||
|   AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support]) | ||||
| ]) | ||||
| AM_CONDITIONAL([HAVE_WAYLAND],[test "$have_wayland" = "yes"]) | ||||
| 
 | ||||
| PKG_CHECK_EXISTS([xi >= 1.6.99.1], | ||||
|                  AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater])) | ||||
| 
 | ||||
| # This is used for plugins | ||||
| AC_SUBST(CLUTTER_PACKAGE) | ||||
| PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE) | ||||
| @@ -258,8 +237,38 @@ if test x$have_xinerama = xno; then | ||||
|    AC_MSG_ERROR([Xinerama extension was not found]) | ||||
| fi | ||||
| 
 | ||||
| AC_DEFINE_UNQUOTED([XKB_BASE], ["`$PKG_CONFIG --variable xkb_base xkeyboard-config`"], | ||||
|                                [XKB base dir]) | ||||
| SHAPE_LIBS= | ||||
| found_shape=no | ||||
| AC_CHECK_LIB(Xext, XShapeQueryExtension, | ||||
|                [AC_CHECK_HEADER(X11/extensions/shape.h, | ||||
|                                 SHAPE_LIBS=-lXext found_shape=yes)], | ||||
|                , $ALL_X_LIBS) | ||||
| 
 | ||||
| if test x$enable_shape = xno; then | ||||
|    found_shape=no | ||||
| fi | ||||
| 
 | ||||
| if test x$enable_shape = xyes; then | ||||
|    if test "$found_shape" = "no"; then | ||||
|       AC_MSG_ERROR([--enable-shape forced and Shape not found]) | ||||
|       exit 1 | ||||
|    fi | ||||
| fi | ||||
| 
 | ||||
| if test "x$found_shape" = "xyes"; then | ||||
|    AC_DEFINE(HAVE_SHAPE, , [Have the shape extension library]) | ||||
| fi | ||||
| 
 | ||||
| found_xkb=no | ||||
| AC_CHECK_LIB(X11, XkbQueryExtension, | ||||
|                [AC_CHECK_HEADER(X11/XKBlib.h, | ||||
|                                 found_xkb=yes)], | ||||
| 	, $ALL_X_LIBS) | ||||
| 
 | ||||
| if test "x$found_xkb" = "xyes"; then | ||||
|    AC_DEFINE(HAVE_XKB, , [Have keyboard extension library]) | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| RANDR_LIBS= | ||||
| found_randr=no | ||||
| @@ -267,15 +276,40 @@ AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration, | ||||
|                [AC_CHECK_HEADER(X11/extensions/Xrandr.h, | ||||
|                                 RANDR_LIBS=-lXrandr found_randr=yes,, | ||||
| 				[#include <X11/Xlib.h>])], | ||||
|                , -lXext $ALL_X_LIBS) | ||||
|                , -lXrender -lXext $ALL_X_LIBS) | ||||
| 
 | ||||
| if test "x$found_randr" = "xyes"; then | ||||
|    AC_DEFINE(HAVE_RANDR, , [Have the Xrandr extension library]) | ||||
|    PKG_CHECK_EXISTS([xrandr >= 1.5.0], | ||||
|                  AC_DEFINE([HAVE_XRANDR15],[1],[Define if you have support for XRandR 1.5 or greater])) | ||||
| fi | ||||
| 
 | ||||
| MUTTER_LIBS="$MUTTER_LIBS $RANDR_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" | ||||
| XSYNC_LIBS= | ||||
| found_xsync=no | ||||
| AC_CHECK_LIB(Xext, XSyncQueryExtension, | ||||
|                [AC_CHECK_HEADER(X11/extensions/sync.h, | ||||
|                                 found_xsync=yes,, | ||||
| 				[#include <X11/Xlib.h>])], | ||||
|                , $ALL_X_LIBS) | ||||
| 
 | ||||
| if test x$enable_xsync = xno; then | ||||
|    found_xsync=no | ||||
| fi | ||||
| 
 | ||||
| if test x$enable_xsync = xyes; then | ||||
|    if test "$found_xsync" = "no"; then | ||||
|       AC_MSG_ERROR([--enable-xsync forced and XSync not found]) | ||||
|       exit 1 | ||||
|    fi | ||||
| fi | ||||
| 
 | ||||
| if test "x$found_xsync" = "xyes"; then | ||||
|    XSYNC_LIBS=-lXext | ||||
|    AC_DEFINE(HAVE_XSYNC, , [Have the Xsync extension library]) | ||||
| fi | ||||
| 
 | ||||
| MUTTER_LIBS="$MUTTER_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" | ||||
| MUTTER_MESSAGE_LIBS="$MUTTER_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" | ||||
| MUTTER_WINDOW_DEMO_LIBS="$MUTTER_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" | ||||
| MUTTER_PROPS_LIBS="$MUTTER_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" | ||||
| 
 | ||||
| found_sm=no | ||||
| case "$MUTTER_LIBS" in | ||||
| @@ -307,6 +341,17 @@ fi | ||||
| 
 | ||||
| AM_CONDITIONAL(HAVE_SM, test "$found_sm" = "yes") | ||||
| 
 | ||||
| HOST_ALIAS=$host_alias | ||||
| AC_SUBST(HOST_ALIAS) | ||||
| 
 | ||||
| AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no) | ||||
| 
 | ||||
| if test x"$GDK_PIXBUF_CSOURCE" = xno; then | ||||
|   AC_MSG_ERROR([gdk-pixbuf-csource executable not found in your path - should be installed with GTK]) | ||||
| fi | ||||
| 
 | ||||
| AC_SUBST(GDK_PIXBUF_CSOURCE) | ||||
| 
 | ||||
| AC_PATH_PROG(ZENITY, zenity, no) | ||||
| if test x"$ZENITY" = xno; then | ||||
|   AC_MSG_ERROR([zenity not found in your path - needed for dialogs]) | ||||
| @@ -319,10 +364,11 @@ if test "x$enable_debug" = "xyes"; then | ||||
| 	CFLAGS="$CFLAGS -g -O" | ||||
| fi | ||||
| 
 | ||||
| AC_CHECK_DECL([GL_EXT_x11_sync_object], | ||||
|               [], | ||||
|               [AC_MSG_ERROR([GL_EXT_x11_sync_object definition not found, please update your GL headers])], | ||||
|               [#include <GL/glx.h>]) | ||||
| # For fix-meta-rectangle.py | ||||
| AM_PATH_PYTHON([2.5]) | ||||
| 
 | ||||
| # Use gnome-doc-utils: | ||||
| GNOME_DOC_INIT([0.8.0]) | ||||
| 
 | ||||
| #### Warnings (last since -Werror can disturb other tests) | ||||
| 
 | ||||
| @@ -392,13 +438,14 @@ changequote([,])dnl | ||||
| 
 | ||||
| AC_CONFIG_FILES([ | ||||
| Makefile | ||||
| data/Makefile | ||||
| doc/Makefile | ||||
| doc/man/Makefile | ||||
| src/Makefile | ||||
| src/wm-tester/Makefile | ||||
| src/libmutter.pc | ||||
| src/mutter-plugins.pc | ||||
| src/tools/Makefile | ||||
| src/compositor/plugins/Makefile | ||||
| src/meta/meta-version.h | ||||
| po/Makefile.in | ||||
| ]) | ||||
| 
 | ||||
| @@ -424,8 +471,9 @@ mutter-$VERSION | ||||
| 	libcanberra:              ${have_libcanberra} | ||||
| 	Introspection:            ${found_introspection} | ||||
| 	Session management:       ${found_sm} | ||||
| 	Wayland:                  ${have_wayland} | ||||
| 	Native (KMS) backend:     ${have_native_backend} | ||||
| 	Shape extension:          ${found_shape} | ||||
| 	Xsync:                    ${found_xsync} | ||||
| 	Xcursor:                  ${have_xcursor} | ||||
| " | ||||
| 
 | ||||
| 
 | ||||
| @@ -1,140 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <KeyListEntries schema="org.gnome.desktop.wm.keybindings" | ||||
|                 group="system" | ||||
|                 _name="Navigation" | ||||
|                 wm_name="Mutter" | ||||
|                 package="mutter"> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-1" | ||||
| 	              _description="Move window to workspace 1" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-2" | ||||
| 	              _description="Move window to workspace 2" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-3" | ||||
| 	              _description="Move window to workspace 3" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-4" | ||||
| 	              _description="Move window to workspace 4" /> | ||||
|  | ||||
|         <KeyListEntry name="move-to-workspace-last" | ||||
|                       _description="Move window to last workspace" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-left" | ||||
| 	              _description="Move window one workspace to the left" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-right" | ||||
| 	              _description="Move window one workspace to the right" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-up" | ||||
| 	              _description="Move window one workspace up" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-workspace-down" | ||||
| 	              _description="Move window one workspace down" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-monitor-left" | ||||
| 	              _description="Move window one monitor to the left" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-monitor-right" | ||||
| 	              _description="Move window one monitor to the right" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-monitor-up" | ||||
| 	              _description="Move window one monitor up" /> | ||||
|  | ||||
| 	<KeyListEntry name="move-to-monitor-down" | ||||
| 	              _description="Move window one monitor down" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-applications" | ||||
| 	              reverse-entry="switch-applications-backward" | ||||
| 	              _description="Switch applications"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-applications-backward" | ||||
| 	              reverse-entry="switch-applications" | ||||
| 	              hidden="true" | ||||
| 	              _description="Switch to previous application"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-windows" | ||||
| 	              reverse-entry="switch-windows-backward" | ||||
| 	              _description="Switch windows"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-windows-backward" | ||||
| 	              reverse-entry="switch-windows" | ||||
| 	              hidden="true" | ||||
| 	              _description="Switch to previous window"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-group" | ||||
| 	              reverse-entry="switch-group-backward" | ||||
| 	              _description="Switch windows of an application"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-group-backward" | ||||
| 	              reverse-entry="switch-group" | ||||
| 	              hidden="true" | ||||
| 	              _description="Switch to previous window of an application"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-panels" | ||||
| 	              reverse-entry="switch-panels-backward" | ||||
| 	              _description="Switch system controls"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-panels-backward" | ||||
| 	              reverse-entry="switch-panels" | ||||
| 	              hidden="true" | ||||
| 	              _description="Switch to previous system control"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-windows" | ||||
| 	              reverse-entry="cycle-windows-backward" | ||||
| 	              _description="Switch windows directly"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-windows-backward" | ||||
| 	              reverse-entry="cycle-windows" | ||||
| 	              hidden="true" | ||||
| 	              _description="Switch directly to previous window"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-group" | ||||
| 	              reverse-entry="cycle-group-backward" | ||||
| 	              _description="Switch windows of an app directly"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-group-backward" | ||||
| 	              reverse-entry="cycle-group" | ||||
| 	              hidden="true" | ||||
| 	              _description="Switch directly to previous window of an app"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-panels" | ||||
| 	              reverse-entry="cycle-panels-backward" | ||||
| 	              _description="Switch system controls directly"/> | ||||
|  | ||||
| 	<KeyListEntry name="cycle-panels-backward" | ||||
| 	              reverse-entry="cycle-panels" | ||||
| 	              hidden="true" | ||||
| 	              _description="Switch directly to previous system control"/> | ||||
|  | ||||
| 	<KeyListEntry name="show-desktop" | ||||
| 	              _description="Hide all normal windows"/> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-1" | ||||
| 	              _description="Switch to workspace 1" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-2" | ||||
| 	              _description="Switch to workspace 2" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-3" | ||||
| 	              _description="Switch to workspace 3" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-4" | ||||
| 	              _description="Switch to workspace 4" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-last" | ||||
| 	              _description="Switch to last workspace" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-left" | ||||
| 	              _description="Move to workspace left" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-right" | ||||
| 	              _description="Move to workspace right" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-up" | ||||
| 	              _description="Move to workspace above" /> | ||||
|  | ||||
| 	<KeyListEntry name="switch-to-workspace-down" | ||||
| 	              _description="Move to workspace below" /> | ||||
|  | ||||
| </KeyListEntries> | ||||
| @@ -1,13 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <KeyListEntries schema="org.gnome.desktop.wm.keybindings" | ||||
|                 group="system" | ||||
|                 _name="System" | ||||
|                 wm_name="Mutter" | ||||
|                 package="mutter"> | ||||
|  | ||||
| 	<KeyListEntry name="panel-run-dialog" _description="Show the run command prompt"/> | ||||
|  | ||||
| 	<KeyListEntry name="panel-main-menu" _description="Show the activities overview"/> | ||||
|  | ||||
| </KeyListEntries> | ||||
|  | ||||
| @@ -1,50 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <KeyListEntries schema="org.gnome.desktop.wm.keybindings" | ||||
|                 group="system" | ||||
|                 _name="Windows" | ||||
|                 wm_name="Mutter" | ||||
|                 package="mutter"> | ||||
|  | ||||
| 	<KeyListEntry name="activate-window-menu" _description="Activate the window menu"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-fullscreen" _description="Toggle fullscreen mode"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-maximized" _description="Toggle maximization state"/> | ||||
|  | ||||
| 	<KeyListEntry name="maximize" _description="Maximize window"/> | ||||
|  | ||||
| 	<KeyListEntry name="unmaximize" _description="Restore window"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-shaded" _description="Toggle shaded state"/> | ||||
|  | ||||
| 	<KeyListEntry name="close" _description="Close window"/> | ||||
|  | ||||
| 	<KeyListEntry name="minimize" _description="Hide window"/> | ||||
|  | ||||
| 	<KeyListEntry name="begin-move" _description="Move window"/> | ||||
|  | ||||
| 	<KeyListEntry name="begin-resize" _description="Resize window"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-on-all-workspaces" | ||||
| 	              _description="Toggle window on all workspaces or one"/> | ||||
|  | ||||
| 	<KeyListEntry name="raise-or-lower" _description="Raise window if covered, otherwise lower it"/> | ||||
|  | ||||
| 	<KeyListEntry name="raise" _description="Raise window above other windows"/> | ||||
|  | ||||
| 	<KeyListEntry name="lower" _description="Lower window below other windows"/> | ||||
|  | ||||
| 	<KeyListEntry name="maximize-vertically" _description="Maximize window vertically"/> | ||||
|  | ||||
| 	<KeyListEntry name="maximize-horizontally" _description="Maximize window horizontally"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-tiled-left" | ||||
|                       schema="org.gnome.mutter.keybindings" | ||||
|                       _description="View split on left"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-tiled-right" | ||||
|                       schema="org.gnome.mutter.keybindings" | ||||
|                       _description="View split on right"/> | ||||
|  | ||||
| </KeyListEntries> | ||||
|  | ||||
| @@ -1,36 +0,0 @@ | ||||
| desktopfiles_in_files = \ | ||||
| 	mutter.desktop.in \ | ||||
| 	mutter-wayland.desktop.in | ||||
| desktopfilesdir = $(datadir)/applications | ||||
| desktopfiles_DATA = $(desktopfiles_in_files:.desktop.in=.desktop) | ||||
|  | ||||
| @INTLTOOL_DESKTOP_RULE@ | ||||
|  | ||||
| xml_in_files = \ | ||||
|         50-mutter-navigation.xml.in \ | ||||
|         50-mutter-system.xml.in \ | ||||
|         50-mutter-windows.xml.in | ||||
| xmldir = $(GNOME_KEYBINDINGS_KEYSDIR) | ||||
| xml_DATA = $(xml_in_files:.xml.in=.xml) | ||||
|  | ||||
| gschema_in_files = \ | ||||
| 	org.gnome.mutter.gschema.xml.in	\ | ||||
| 	org.gnome.mutter.wayland.gschema.xml.in | ||||
| gsettings_SCHEMAS = $(gschema_in_files:.xml.in=.xml) | ||||
|  | ||||
| @INTLTOOL_XML_NOMERGE_RULE@ | ||||
| @GSETTINGS_RULES@ | ||||
|  | ||||
| convertdir = $(datadir)/GConf/gsettings | ||||
| convert_DATA = mutter-schemas.convert | ||||
|  | ||||
| CLEANFILES = \ | ||||
| 	$(desktopfiles_DATA) \ | ||||
| 	$(gsettings_SCHEMAS) \ | ||||
| 	$(xml_DATA) | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	$(convert_DATA) \ | ||||
| 	$(desktopfiles_in_files) \ | ||||
| 	$(gschema_in_files) \ | ||||
| 	$(xml_in_files) | ||||
| @@ -1,53 +0,0 @@ | ||||
| <schemalist> | ||||
|   <schema id="org.gnome.mutter.wayland.keybindings" path="/org/gnome/mutter/wayland/keybindings/" | ||||
| 	  gettext-domain="@GETTEXT_DOMAIN@"> | ||||
|     <key name="switch-to-session-1" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F1']]]></default> | ||||
|       <_summary>Switch to VT 1</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-2" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F2']]]></default> | ||||
|       <_summary>Switch to VT 2</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-3" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F3']]]></default> | ||||
|       <_summary>Switch to VT 3</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-4" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F4']]]></default> | ||||
|       <_summary>Switch to VT 4</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-5" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F5']]]></default> | ||||
|       <_summary>Switch to VT 5</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-6" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F6']]]></default> | ||||
|       <_summary>Switch to VT 6</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-7" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F7']]]></default> | ||||
|       <_summary>Switch to VT 7</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-8" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F8']]]></default> | ||||
|       <_summary>Switch to VT 8</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-9" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F9']]]></default> | ||||
|       <_summary>Switch to VT 9</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-10" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F10']]]></default> | ||||
|       <_summary>Switch to VT 10</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-11" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F11']]]></default> | ||||
|       <_summary>Switch to VT 11</_summary> | ||||
|     </key> | ||||
|     <key name="switch-to-session-12" type="as"> | ||||
|       <default><![CDATA[['<Primary><Alt>F12']]]></default> | ||||
|       <_summary>Switch to VT 12</_summary> | ||||
|     </key> | ||||
|   </schema> | ||||
| </schemalist> | ||||
| @@ -1,4 +1,4 @@ | ||||
| SUBDIRS = man | ||||
|  | ||||
| EXTRA_DIST = dialogs.txt code-overview.txt \ | ||||
| 	how-to-get-focus-right.txt rationales.txt | ||||
| EXTRA_DIST=theme-format.txt dialogs.txt code-overview.txt \ | ||||
| 	how-to-get-focus-right.txt | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| man_MANS = mutter.1 | ||||
| man_MANS = mutter.1 mutter-theme-viewer.1 \ | ||||
| 	   mutter-window-demo.1 mutter-message.1 | ||||
|  | ||||
| EXTRA_DIST = $(man_MANS) | ||||
|   | ||||
							
								
								
									
										60
									
								
								doc/man/mutter-message.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								doc/man/mutter-message.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| .\"                                      Hey, EMACS: -*- nroff -*- | ||||
| .\" First parameter, NAME, should be all caps | ||||
| .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection | ||||
| .\" other parameters are allowed: see man(7), man(1) | ||||
| .\" ----- | ||||
| .\" This file was confirmed to be licenced under the GPL | ||||
| .\" by its author and copyright holder, Akira TAGOH, on June 1st 2008: | ||||
| .\" | ||||
| .\" > I'm comfortable with DFSG-free. that sounds great if you think it's | ||||
| .\" > useful and worth containing it in upstream. | ||||
| .\" ... | ||||
| .\" > Right I know. any licenses that is DFSG-free, I'm ok with whatever, | ||||
| .\" > since I have contributed that for Debian. so GPL is no problem for me. | ||||
| .\" ----- | ||||
| .TH MUTTER\-MESSAGE 1 "28 August 2002" | ||||
| .\" Please adjust this date whenever revising the manpage. | ||||
| .\" | ||||
| .\" Some roff macros, for reference: | ||||
| .\" .nh        disable hyphenation | ||||
| .\" .hy        enable hyphenation | ||||
| .\" .ad l      left justify | ||||
| .\" .ad b      justify to both left and right margins | ||||
| .\" .nf        disable filling | ||||
| .\" .fi        enable filling | ||||
| .\" .br        insert line break | ||||
| .\" .sp <n>    insert n+1 empty lines | ||||
| .\" for manpage-specific macros, see man(7) | ||||
| .SH NAME | ||||
| MUTTER\-MESSAGE \- a command to send a message to Mutter | ||||
| .SH SYNOPSIS | ||||
| .B MUTTER\-MESSAGE | ||||
| [restart|reload\-theme|enable\-keybindings|disable\-keybindings] | ||||
| .SH DESCRIPTION | ||||
| This manual page documents briefly the | ||||
| .B mutter\-message\fP. | ||||
| This manual page was written for the Debian distribution | ||||
| because the original program does not have a manual page. | ||||
| .PP | ||||
| .\" TeX users may be more comfortable with the \fB<whatever>\fP and | ||||
| .\" \fI<whatever>\fP escape sequences to invode bold face and italics,  | ||||
| .\" respectively. | ||||
| \fBmutter\-message\fP send a specified message to \fBmutter\fP(1). | ||||
| .SH OPTIONS | ||||
| .TP | ||||
| .B restart | ||||
| Restart \fBmutter\fP(1) which is running. | ||||
| .TP | ||||
| .B reload-theme | ||||
| Reload a theme which is specified on gsettings database. | ||||
| .TP | ||||
| .B enable-keybindings | ||||
| Enable all of keybindings which is specified on gsettings database. | ||||
| .TP | ||||
| .B disable-keybindings | ||||
| Disable all of keybindings which is specified on gsettings database. | ||||
| .SH SEE ALSO | ||||
| .BR mutter (1) | ||||
| .SH AUTHOR | ||||
| This manual page was written by Akira TAGOH <tagoh@debian.org>, | ||||
| for the Debian GNU/Linux system (but may be used by others). | ||||
							
								
								
									
										43
									
								
								doc/man/mutter-theme-viewer.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								doc/man/mutter-theme-viewer.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| .\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection | ||||
| .\" other parms are allowed: see man(7), man(1) | ||||
| .\" | ||||
| .\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>. | ||||
| .\"  | ||||
| .TH MUTTER-THEME-VIEWER 1 "1 June 2004"  | ||||
| .SH NAME | ||||
| mutter-theme-viewer \- view mutter themes | ||||
| .SH SYNOPSIS | ||||
| .B mutter-theme-viewer | ||||
| [ | ||||
| .I THEMENAME | ||||
| ] | ||||
| .SH DESCRIPTION | ||||
| .\" Putting a newline after each sentence can generate better output. | ||||
| .B mutter-theme-viewer | ||||
| allows you to preview any installed Mutter theme. | ||||
| .PP | ||||
| When designing a new Mutter theme, you can use | ||||
| .B mutter-theme-viewer | ||||
| to measure the performance of a window frame option, and to preview | ||||
| the option. | ||||
| .SH OPTIONS | ||||
| .TP | ||||
| .I THEMENAME | ||||
| Name of the theme to be shown (\fIAtlanta\fR by default). | ||||
| It is case-sensitive. | ||||
| .SH FILES | ||||
| .br | ||||
| .nf | ||||
| .TP | ||||
| .I /usr/share/themes | ||||
| system themes directory | ||||
| .TP | ||||
| .I /usr/share/themes/*/mutter-1/mutter-theme-1.xml | ||||
| theme specification file | ||||
| .SH AUTHOR | ||||
| This manual page was written by Jose M. Moya <josem@die.upm.es>, for | ||||
| the Debian  GNU/Linux system (but may be used by others). | ||||
| .SH "SEE ALSO" | ||||
| .\" Always quote multiple words for .SH | ||||
| .BR mutter (1), | ||||
| .BR mutter-window-demo (1). | ||||
							
								
								
									
										25
									
								
								doc/man/mutter-window-demo.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								doc/man/mutter-window-demo.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| .\" In .TH, FOO should be all caps, SECTION should be 1-8, maybe w/ subsection | ||||
| .\" other parms are allowed: see man(7), man(1) | ||||
| .\" | ||||
| .\" Based on template provided by Tom Christiansen <tchrist@jhereg.perl.com>. | ||||
| .\"  | ||||
| .TH MUTTER-WINDOW-DEMO 1 "1 June 2004"  | ||||
| .SH NAME | ||||
| mutter-window-demo \- demo of window features | ||||
| .SH SYNOPSIS | ||||
| .B mutter-window-demo | ||||
| .SH DESCRIPTION | ||||
| .\" Putting a newline after each sentence can generate better output. | ||||
| This program demonstrates various kinds of windows that window | ||||
| managers and window manager themes should handle. | ||||
| .PP | ||||
| Be sure to tear off the menu and toolbar, those are also a special | ||||
| kind of window. | ||||
| .SH AUTHOR | ||||
| This manual page was written by Jose M. Moya <josem@die.upm.es>, for | ||||
| the Debian  GNU/Linux system (but may be used by others). | ||||
| .SH "SEE ALSO" | ||||
| .\" Always quote multiple words for .SH | ||||
| .BR x-window-manager (1), | ||||
| .BR mutter (1), | ||||
| .BR mutter-theme-viewer (1). | ||||
							
								
								
									
										394
									
								
								doc/theme-format.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										394
									
								
								doc/theme-format.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,394 @@ | ||||
| Themes are in a simple XML-subset format. There are multiple versions | ||||
| of the theme format, and a given theme can support more than one format. | ||||
|  | ||||
| Version 1:     THEMEDIR/metacity-1/metacity-theme-1.xml | ||||
|   (original metacity format) | ||||
| Version 2:     THEMEDIR/metacity-1/metacity-theme-2.xml | ||||
| Version 3:     THEMEDIR/metacity-1/metacity-theme-3.xml | ||||
|  | ||||
| The subdirectory name is "metacity-1" in all versions. | ||||
|  | ||||
| As you might expect, older versions of metacity will not understand | ||||
| newer theme formats. However, newer versions will use old themes. | ||||
| Metacity will always use the newest theme format it understands that | ||||
| the X server supports. Some format versions are only supported if you | ||||
| have the right X server features. | ||||
|  | ||||
| Each format *requires* the corresponding filename. If you put version | ||||
| 2 format features in the metacity-1/metacity-theme-1.xml file, then | ||||
| metacity will get angry. | ||||
|  | ||||
| This document has separate sections for each format version. You may | ||||
| want to read the document in reverse order, since the base features | ||||
| are discussed under version 1. | ||||
|  | ||||
| New Features in Theme Format Version 3.4 | ||||
| ======================================== | ||||
|  | ||||
| An additional color type is added to pick up custom colors defined | ||||
| in the GTK+ theme's CSS: | ||||
|  | ||||
|   gtk:custom(name,fallback) | ||||
|  | ||||
| where <name> refers to a custom color defined with @define-color in | ||||
| the GTK+ theme, and <fallback> provides an alternative color definition | ||||
| in case the color referenced by <name> is not found. | ||||
|  | ||||
| New Features in Theme Format Version 3.3 | ||||
| ======================================== | ||||
|  | ||||
| Add two additional button background functions - left_single_background and | ||||
| right_single_background - for button groups with just a single button. | ||||
|  | ||||
| There are now additional frame states to style left/right tiled windows | ||||
| differently ("tiled_left", "tiled_right", "tiled_left_and_shaded", | ||||
| "tiled_right_and_shaded"). | ||||
|  | ||||
| New Features in Theme Format Version 3.2 | ||||
| ======================================== | ||||
|  | ||||
| A new window type 'attached' is added for modal dialogs which are | ||||
| attached to their parent window. (When the attach_modal_dialogs preference | ||||
| is turned on.) If no style is defined for the 'attached' window type, | ||||
| the 'border' window type will be used instead. | ||||
|  | ||||
| New Features in Theme Format Version 3.1 | ||||
| ======================================== | ||||
|  | ||||
| Additional predefined variables are added for positioning expressions: | ||||
|  | ||||
|  frame_x_center: the X center of the entire frame, with respect to the | ||||
|      piece currently being drawn. | ||||
|  frame_y_center: the Y center of the entire frame, with respect to the | ||||
|      piece currently being drawn. | ||||
|  | ||||
| The <title/> element now supports an "ellipsize_width" attribute. When | ||||
| specified, this gives a width at which to ellipsize the title. If not | ||||
| specified, the title will simply be clipped to the title area. | ||||
|  | ||||
| New Features in Theme Format Version 3 | ||||
| ====================================== | ||||
|  | ||||
| Format version 3 has exactly one new feature; any element in the file | ||||
| can now have a version attribute: | ||||
|  | ||||
|   version="[<|<=|=>|>] MAJOR.MINOR" | ||||
|  | ||||
| (< and > should be to be entity escaped as < and >). If this | ||||
| version check is not met, then the element and its children will be | ||||
| ignored. This allows having alternate sections of the theme file for | ||||
| older and newer version of the Metacity theme format. | ||||
|  | ||||
| When placed on the toplevel <metacity_theme> element, an unsatisfied | ||||
| version check will not just cause the contents of the file to be | ||||
| ignored, it will also cause the lookup of a theme file to proceed on | ||||
| and look for an older format 2 or format 1 file. This allows making a | ||||
| metacity-theme-3.xml file that is only used the format version 3.2 or | ||||
| newer is supported, and using metacity-theme-1.xml for older window | ||||
| managers. | ||||
|  | ||||
| New Features in Theme Format Version 2 | ||||
| ====================================== | ||||
|  | ||||
| The optional attributes rounded_top_left, rounded_top_right, | ||||
| rounded_bottom_left and rounded_bottom_right on <frame_geometry> | ||||
| should now be the radius of the corner in pixels. You may still use | ||||
| the values "false" for 0 and "true" for 5, which means v1 values will | ||||
| still work just fine. | ||||
|  | ||||
| <frame_geometry> has a new optional attribute, hide_buttons. If this | ||||
| is true, no buttons will be displayed on the titlebar. | ||||
|  | ||||
| Anywhere you can use a positive integer, you can use an integer constant. | ||||
|  | ||||
| As well as constant integers and reals, you may define constant colours, | ||||
| thus: | ||||
|   <constant name="RevoltingPink" value="#FF00FF"/> | ||||
|   <constant name="Background" value="gtk:bg[NORMAL]"/> | ||||
|  | ||||
| <frame_style> has two new optional attributes, background and alpha. | ||||
| If you specify alpha, you must specify background. background is a | ||||
| colour used for the background of the frame. alpha is the transparency | ||||
| as a real between 0.0 and 1.0. If the current X server does not support | ||||
| alpha channels, the value is ignored. | ||||
|  | ||||
| The filename attribute of <image> may begin with "theme:". If so, the | ||||
| rest of the string is the name of a theme icon. The 64x64 version of the | ||||
| icon is used, except for fallback mini_icons, which use the 16x16 version. | ||||
| This does not affect ordinary resizing. For example: | ||||
|   <button function="close" state="normal"> | ||||
|     <draw_ops> | ||||
|       <include name="active_button"/> | ||||
|       <image filename="theme:gnome-logout" x="2" y="2" | ||||
|           width="width-4" height="height-4"/> | ||||
|       <!-- Note: not "theme:gnome-logout.png" or similar. --> | ||||
|     </draw_ops> | ||||
|   </button> | ||||
|  | ||||
| <menu_icon>s are parsed but ignored. | ||||
|  | ||||
| Fallback icons can be specified using <fallback>. There are two | ||||
| optional arguments, icon and mini_icon. The values of these arguments | ||||
| are identical to that of the filename attribute of <image>. Fallback | ||||
| icons are used when a window does not supply its own icon. If a fallback | ||||
| icon is not specified with <fallback>, Metacity will use a built-in | ||||
| icon, as in metacity-theme-1. | ||||
|  | ||||
| The <arc> element, as well as the original start_angle and end_angle | ||||
| attributes, may be given from and to attributes. The values of these | ||||
| attributes are given in degrees clockwise, with 0 being straight up. | ||||
| For example: | ||||
|   <arc from="0.0" to="90.0" filled="true" color="#FF00FF" | ||||
|       x="0" y="5" width="15" height="15"/> | ||||
|  | ||||
| <frame state="shaded"> may now take an optional resize attribute, with | ||||
| the same interpretation as the resize attribute on <frame state="normal">. | ||||
| If this attribute is omitted for state="shaded", it defaults to "both". | ||||
| (If it is omitted for state="normal", it remains an error.) | ||||
|  | ||||
| In addition to the four <button> functions which are required in | ||||
| metacity-theme-1, there are six new functions in metacity-theme-2: | ||||
| shade, unshade, above, unabove, stick and unstick. | ||||
|        | ||||
| Overview of Theme Format Version 1 | ||||
| ================================== | ||||
|  | ||||
| <?xml version="1.0"?> | ||||
| <metacity_theme> | ||||
| <!-- Only one info section is allowed --> | ||||
| <info> | ||||
|   <name>Foo</name> | ||||
|   <author>Foo P. Bar</author> | ||||
|   <copyright>whoever, 2002</copyright> | ||||
|   <date>Jan 31 2005</date> | ||||
|   <description>A sentence about the theme.</description> | ||||
| </info> | ||||
|  | ||||
| <!-- define a frame geometry to be referenced later --> | ||||
| <!-- frame_geometry has an optional has_title attribute which  | ||||
|      determines whether the title text height is included in the  | ||||
|      height calculation. if not specified, defaults to true. | ||||
|      It also has an optional text_size="medium" attribute | ||||
|      (same sizes as with Pango markup, xx-small thru medium thru | ||||
|      xx-large)  | ||||
|  | ||||
|      Finally it has optional args rounded_top_left=true,  | ||||
|      rounded_top_right=true, rounded_bottom_left=true, | ||||
|      rounded_bottom_right=true. | ||||
|  | ||||
|      --> | ||||
| <frame_geometry name="normal" has_title="true" title_scale="medium"> | ||||
|   <distance name="left_width" value="6"/> | ||||
|   <distance name="right_width" value="6"/> | ||||
|   <distance name="bottom_height" value="7"/> | ||||
|   <distance name="left_titlebar_edge" value="6"/> | ||||
|   <distance name="right_titlebar_edge" value="6"/> | ||||
|   <distance name="button_width" value="17"/> | ||||
|   <distance name="button_height" value="17"/> | ||||
|   <!-- alternative to button_width button_height distances --> | ||||
|   <aspect_ratio name="button" value="1.0"/> | ||||
|   <distance name="title_vertical_pad" value="4"/> | ||||
|   <border name="title_border" left="3" right="12" top="4" bottom="3"/> | ||||
|   <border name="button_border" left="0" right="0" top="1" bottom="1"/> | ||||
| </frame_geometry> | ||||
|  | ||||
| <!-- inheritance is allowed; simply overwrites values from parent --> | ||||
| <frame_geometry name="borderless" parent="normal"> | ||||
|   <distance name="left_width" value="0"/> | ||||
|   <distance name="right_width" value="0"/> | ||||
|   <distance name="bottom_height" value="0"/> | ||||
|   <distance name="left_titlebar_edge" value="0"/> | ||||
|   <distance name="right_titlebar_edge" value="0"/> | ||||
| </frame_geometry> | ||||
|  | ||||
| <!-- define a constant to use in positions/sizes of draw operations; | ||||
|      constant names must start with a capital letter. | ||||
|   --> | ||||
| <constant name="LineOffset" value="3"/> | ||||
|  | ||||
| <!-- define drawing operations to be referenced later;  | ||||
|      these draw-op lists can also be placed inline.  | ||||
|  | ||||
|      Positions/lengths are given as expressions. | ||||
|      Operators are: +,-,*,/,%,`max`,`min` | ||||
|      All operators are infix including `max` and `min`,  | ||||
|       i.e. "2 `max` 5" | ||||
|       | ||||
|      Some variables are predefined, and constants can also  | ||||
|      be used. Variables are: | ||||
|  | ||||
|        width - width of target area | ||||
|        height - height of target area | ||||
|        object_width - natural width of object being drawn | ||||
|        object_height - natural height of object being drawn | ||||
|        left_width - distance from left of frame to client window | ||||
|        right_width - distance from right of frame to client window | ||||
|        top_height - distance from top of frame to client window | ||||
|        bottom_height - distance from bottom of frame to client window | ||||
|        mini_icon_width - width of mini icon for window | ||||
|        mini_icon_height - height of mini icon | ||||
|        icon_width - width of large icon | ||||
|        icon_height - height of large icon | ||||
|        title_width - width of title text | ||||
|        title_height - height of title text | ||||
|  | ||||
|     All these are always defined, except object_width/object_height  | ||||
|     which only exists for <image> right now. | ||||
|  | ||||
|   --> | ||||
|  | ||||
| <draw_ops name="demo_all_ops"> | ||||
|   <line color="#00FF00" x1="LineOffset" y1="0" x2="0" y2="height"/> | ||||
|   <line color="gtk:fg[NORMAL]"  | ||||
|         x1="width - 1" y1="0" x2="width - 1" y2="height"  | ||||
|         width="3" dash_on_length="2" dash_off_length="3"/> | ||||
|   <rectangle color="blend/gtk:fg[NORMAL]/gtk:bg[NORMAL]/0.7" | ||||
|              x="0" y="0" width="width - 1" height="height - 1" filled="true"/> | ||||
|   <arc color="dark gray" x="0" y="0" width="width - 1" height="height - 1"  | ||||
|        filled="false" start_angle="30" extent_angle="180"/> | ||||
|   <tint color="orange" alpha="0.5" x="0" y="0" width="width" height="height"/> | ||||
|  <!-- may be vertical, horizontal, diagonal --> | ||||
|   <gradient type="diagonal"  | ||||
|             x="10" y="30" width="width / 3" height="height / 4"> | ||||
|     <!-- any number of colors allowed here. A color can be  | ||||
|          a color name like "blue" (look at gcolorsel), a hex color | ||||
|          as in HTML (#FFBB99), or a color from the gtk theme  | ||||
|          given as "gtk:base[NORMAL]", "gtk:fg[ACTIVE]", etc. | ||||
|        --> | ||||
|     <color value="gtk:fg[SELECTED]"/> | ||||
|     <!-- color obtained by a 0.5 alpha composite of the second color onto the first --> | ||||
|     <color value="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.5"/> | ||||
|   </gradient> | ||||
|   <image filename="foo.png" alpha="0.7" | ||||
|          x="10" y="30" width="width / 3" height="height / 4"/> | ||||
|   <gtk_arrow state="normal" shadow="in" arrow="up" | ||||
|              filled="true" | ||||
|              x="2" y="2" width="width - 4" height="height - 4"/> | ||||
|   <gtk_box state="normal" shadow="out" | ||||
|            x="2" y="2" width="width - 4" height="height - 4"/> | ||||
|   <gtk_vline state="normal" x="2" y1="0" y2="height"/> | ||||
|   <!-- window's icon --> | ||||
|   <icon alpha="0.7" | ||||
|         x="10" y="30" width="width / 3" height="height / 4"/> | ||||
|   <!-- window's title --> | ||||
|   <title color="gtk:text[NORMAL]" x="20" y="30"/> | ||||
|   <!-- include another draw ops list; has optional x/y/width/height attrs --> | ||||
|   <include name="some_other_draw_ops"/> | ||||
|   <!-- tile another draw ops list; has optional | ||||
|        x/y/width/height/tile_xoffset/tile_yoffset --> | ||||
|   <tile name="some_other_draw_ops" tile_width="10" tile_height="10"/> | ||||
| </draw_ops> | ||||
|  | ||||
| <frame_style name="normal" geometry="normal"> | ||||
|   <!-- How to draw each piece of the frame. | ||||
|        For each piece, a draw_ops can be given inline or referenced  | ||||
|        by name. If a piece is omitted, then nothing will be drawn  | ||||
|        for that piece. | ||||
|  | ||||
|        For each piece, the "width" and "height" variables in  | ||||
|        coordinate expressions refers to the dimensions of the piece,  | ||||
|        the origin is at the top left of the piece. | ||||
|    | ||||
|        So <rectangle x="0" y="0" width="width-1" height="height-1"/> | ||||
|        will outline a piece. | ||||
|     --> | ||||
|  | ||||
|   <piece position="entire_background" draw_ops="demo_all_ops"/> | ||||
|   <piece position="left_titlebar_edge"> | ||||
|     <draw_ops> | ||||
|       <line color="#00FF00" x1="0" y1="0" x2="0" y2="height"/> | ||||
|     </draw_ops> | ||||
|   </piece> | ||||
|  | ||||
|   <!-- The complete list of frame pieces: | ||||
|  | ||||
|        entire_background: whole frame | ||||
|        titlebar: entire area above the app's window  | ||||
|        titlebar_middle: area of titlebar_background not considered | ||||
|                         part of an edge | ||||
|        left_titlebar_edge: left side of titlebar background | ||||
|        right_titlebar_edge: right side of titlebar background | ||||
|        top_titlebar_edge: top side of titlebar background | ||||
|        bottom_titlebar_edge: bottom side of titlebar background  | ||||
|        title: the title area (doesn't include buttons) | ||||
|        left_edge: left edge of the frame | ||||
|        right_edge: right edge of the frame | ||||
|        bottom_edge: bottom edge of the frame | ||||
|        overlay: same area as entire_background, but drawn after  | ||||
|                 drawing all sub-pieces instead of before | ||||
|  | ||||
|    --> | ||||
|  | ||||
|   <!-- For buttons, drawing methods have to be provided for  | ||||
|        each of three states:  | ||||
|           normal, pressed, prelight | ||||
|        and the button function or position must be provided: | ||||
|           close, maximize, minimize, menu,  | ||||
|           left_left_background, left_middle_background, | ||||
|           left_right_background, right_left_background,  | ||||
|           right_middle_background, right_right_background | ||||
|        So a working theme needs 3*4 = 12 button declarations | ||||
|        and a theme may have up to 3*10 = 30 button declarations | ||||
|        in order to handle button-rearrangement preferences. | ||||
|   | ||||
|        (The name "function" for the attribute is from before the  | ||||
|         background values existed.) | ||||
|     --> | ||||
|  | ||||
|   <button function="close" state="normal" draw_ops="previously_named"/> | ||||
|   <button function="menu" state="normal"> | ||||
|     <draw_ops> | ||||
|       <icon alpha="0.7" | ||||
|             x="0" y="0" width="object_width" height="object_height"/> | ||||
|     </draw_ops> | ||||
|   </button> | ||||
|  | ||||
| </frame_style> | ||||
|  | ||||
| <!-- styles can inherit from each other with the parent="" attribute.  | ||||
|      In a subclass anything can be re-specified to override  | ||||
|      the parent style. --> | ||||
| <frame_style name="focused" parent="normal"> | ||||
|   <piece position="title"> | ||||
|     <draw_ops> | ||||
|       <rectangle color="gtk:bg[SELECTED]" | ||||
|                  x="0" y="0" width="width-1" height="height-1"/> | ||||
|       <title color="gtk:fg[SELECTED]" x="(width - title_width) / 2" | ||||
|                                       y="(height - title_height) / 2"/> | ||||
|     </draw_ops> | ||||
|   </piece> | ||||
| </frame_style> | ||||
|  | ||||
| <!-- Maps styles to states of frame.  | ||||
|  | ||||
|      Focus: yes (focused), no (not focused) | ||||
|      Window states: normal, maximized, shaded, maximized_and_shaded | ||||
|      Window resizability: none, vertical, horizontal, both | ||||
|  | ||||
|      Everything unspecified just does the same as | ||||
|      unfocused/normal/both. | ||||
|  | ||||
|      only state="normal" needs a resize="" attribute. | ||||
|  --> | ||||
| <frame_style_set name="normal"> | ||||
| <frame focus="yes" state="normal" resize="both" style="focused"/> | ||||
| <frame focus="no" state="normal" resize="both" style="normal"/> | ||||
| </frame_style_set> | ||||
|  | ||||
| <!-- Each window type needs a style set  | ||||
|      Types: normal, dialog, modal_dialog, menu, utility, border | ||||
|   --> | ||||
| <window type="normal" style_set="normal"/> | ||||
|  | ||||
|  | ||||
| <!-- For menu icons, drawing methods are needed for the same  | ||||
|      four types as the buttons, and GTK states | ||||
|      (insensitive,prelight,normal,etc.) | ||||
|   --> | ||||
|  | ||||
| <menu_icon function="close" state="normal" draw_ops="previously_named"/> | ||||
|  | ||||
|  | ||||
| </metacity_theme> | ||||
|  | ||||
|  | ||||
							
								
								
									
										10
									
								
								mutter.doap
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								mutter.doap
									
									
									
									
									
								
							| @@ -23,8 +23,7 @@ environment.</description> | ||||
|   <download-page rdf:resource="http://download.gnome.org/sources/mutter/" /> | ||||
|   <bug-database rdf:resource="http://bugzilla.gnome.org/browse.cgi?product=mutter" /> | ||||
|  | ||||
|   <category rdf:resource="http://api.gnome.org/doap-extensions#core" /> | ||||
|   <programming-language>C</programming-language> | ||||
|   <category rdf:resource="http://api.gnome.org/doap-extensions#desktop" /> | ||||
|  | ||||
|   <maintainer> | ||||
|     <foaf:Person> | ||||
| @@ -40,11 +39,4 @@ environment.</description> | ||||
|       <gnome:userid>otaylor</gnome:userid> | ||||
|     </foaf:Person> | ||||
|   </maintainer> | ||||
|   <maintainer> | ||||
|     <foaf:Person> | ||||
|       <foaf:name>Florian Müllner</foaf:name> | ||||
|       <foaf:mbox rdf:resource="mailto:fmuellner@gnome.org" /> | ||||
|       <gnome:userid>fmuellner</gnome:userid> | ||||
|     </foaf:Person> | ||||
|   </maintainer> | ||||
| </Project> | ||||
|   | ||||
| @@ -44,7 +44,6 @@ is | ||||
| it | ||||
| ja | ||||
| ka | ||||
| kk | ||||
| kn | ||||
| ko | ||||
| ku | ||||
| @@ -81,7 +80,6 @@ sr@latin | ||||
| sv | ||||
| ta | ||||
| te | ||||
| tg | ||||
| th | ||||
| tk | ||||
| tr | ||||
|   | ||||
| @@ -1,14 +1,7 @@ | ||||
| # List of source files containing translatable strings. | ||||
| # Please keep this file sorted alphabetically. | ||||
| data/50-mutter-navigation.xml.in | ||||
| data/50-mutter-system.xml.in | ||||
| data/50-mutter-windows.xml.in | ||||
| data/mutter.desktop.in | ||||
| data/org.gnome.mutter.gschema.xml.in | ||||
| data/org.gnome.mutter.wayland.gschema.xml.in | ||||
| src/backends/meta-monitor-manager.c | ||||
| src/50-mutter-windows.xml.in | ||||
| src/compositor/compositor.c | ||||
| src/compositor/meta-background.c | ||||
| src/core/bell.c | ||||
| src/core/core.c | ||||
| src/core/delete.c | ||||
| @@ -19,10 +12,20 @@ src/core/main.c | ||||
| src/core/mutter.c | ||||
| src/core/prefs.c | ||||
| src/core/screen.c | ||||
| src/core/session.c | ||||
| src/core/util.c | ||||
| src/core/window.c | ||||
| src/core/window-props.c | ||||
| src/core/xprops.c | ||||
| src/mutter.desktop.in | ||||
| src/mutter-wm.desktop.in | ||||
| src/org.gnome.mutter.gschema.xml.in | ||||
| src/tools/mutter-message.c | ||||
| src/ui/frames.c | ||||
| src/ui/menu.c | ||||
| src/ui/metaaccellabel.c | ||||
| src/ui/resizepopup.c | ||||
| src/ui/theme.c | ||||
| src/x11/session.c | ||||
| src/x11/window-props.c | ||||
| src/x11/xprops.c | ||||
| src/ui/theme-parser.c | ||||
| src/ui/theme-viewer.c | ||||
|  | ||||
|   | ||||
| @@ -1 +1,2 @@ | ||||
| data/mutter-wayland.desktop.in | ||||
| src/metacity.schemas.in | ||||
|  | ||||
|   | ||||
							
								
								
									
										184
									
								
								po/ast.po
									
									
									
									
									
								
							
							
						
						
									
										184
									
								
								po/ast.po
									
									
									
									
									
								
							| @@ -37,6 +37,7 @@ msgstr "Petición d'información ventana desconocida: %d" | ||||
| #. Translators: %s is a window title | ||||
| #: ../src/core/delete.c:95 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "<tt>%s</tt> is not responding." | ||||
| msgstr "<tt>%s</tt> nun ta respondiendo." | ||||
|  | ||||
| @@ -121,6 +122,7 @@ msgstr "Comandu de terminal nun definíu.\n" | ||||
|  | ||||
| #: ../src/core/main.c:130 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| @@ -259,6 +261,7 @@ msgstr "Error axustando númberu d'arees de trabayu a %d: %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:2028 ../src/core/prefs.c:2531 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Espaciu de Trabayu %d" | ||||
|  | ||||
| @@ -272,6 +275,7 @@ msgstr "\"%s\" atopau na base de datos de configuración nun ye un valor válidu | ||||
|  | ||||
| #: ../src/core/prefs.c:2612 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Error setting name for workspace %d to \"%s\": %s\n" | ||||
| msgstr "Fallu al afitar nome pal espaciu de trabayu %d a \"%s\": %s\n" | ||||
|  | ||||
| @@ -282,16 +286,19 @@ msgstr "Fallu al afitar l'estáu del compositor: %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:2845 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Error setting clutter plugin list: %s\n" | ||||
| msgstr "Fallu al afitar la llista desordenada de plugin: %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:2889 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Error setting live hidden windows status status: %s\n" | ||||
| msgstr "Fallu al afitar l'estáu de les ventanes anubríes: %s\n" | ||||
|  | ||||
| #: ../src/core/prefs.c:2917 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Error setting no tab popup status: %s\n" | ||||
| msgstr "Fallu al afitar l'estáu de les llingüetes emerxentes: %s\n" | ||||
|  | ||||
| @@ -351,6 +358,7 @@ msgstr "Falló analizar ficheru de sesión guardáu: %s\n" | ||||
|  | ||||
| #: ../src/core/session.c:1198 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "<mutter_session> attribute seen but we already have the session ID" | ||||
| msgstr "Vióse l'atributu <mutter_session> pero yá tenemos la ID de sesión" | ||||
|  | ||||
| @@ -396,6 +404,7 @@ msgstr "Abiertu archivu log %s\n" | ||||
|  | ||||
| #: ../src/core/util.c:139 ../src/tools/mutter-message.c:176 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter compilose ensin sofitu pal mou testu\n" | ||||
|  | ||||
| @@ -490,19 +499,19 @@ msgid "" | ||||
| msgstr "La propiedá %s del ventanu 0x%lx contien un códigu UTF-8 non válidu pal " | ||||
| "elementu %d na llista\n" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:88 ../src/50-mutter-navigation.xml.in.h:18 | ||||
| #: ../src/include/all-keybindings.h:88 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "Cambiar a espaciu de trabayu 1" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:90 ../src/50-mutter-navigation.xml.in.h:19 | ||||
| #: ../src/include/all-keybindings.h:90 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "Cambiar a espaciu de trabayu 2" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:92 ../src/50-mutter-navigation.xml.in.h:20 | ||||
| #: ../src/include/all-keybindings.h:92 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "Cambiar a espaciu de trabayu 3" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:94 ../src/50-mutter-navigation.xml.in.h:21 | ||||
| #: ../src/include/all-keybindings.h:94 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "Cambiar a espaciu de trabayu 4" | ||||
|  | ||||
| @@ -631,57 +640,47 @@ msgstr "Saca una semeya d'una ventana" | ||||
| msgid "Run a terminal" | ||||
| msgstr "Executar una terminal" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:271 ../src/50-mutter-windows.xml.in.h:1 | ||||
| #: ../src/include/all-keybindings.h:271 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Activar el menú de la ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:274 ../src/50-mutter-windows.xml.in.h:13 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:274 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Camudar a modu pantalla completa\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Camudar a mou pantalla completa" | ||||
| msgstr "Camudar a modu pantalla completa" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:276 ../src/50-mutter-windows.xml.in.h:14 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:276 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Camudar a estáu maximizáu\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Conmutar l'estáu maximizáu" | ||||
| msgstr "Camudar a estáu maximizáu" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:278 | ||||
| msgid "Toggle whether a window will always be visible over other windows" | ||||
| msgstr "Conmutar si una ventana siempres se verá encima d'otres ventanes" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:280 ../src/50-mutter-windows.xml.in.h:4 | ||||
| #: ../src/include/all-keybindings.h:280 | ||||
| msgid "Maximize window" | ||||
| msgstr "Maximizar ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:282 ../src/50-mutter-windows.xml.in.h:12 | ||||
| #: ../src/include/all-keybindings.h:282 | ||||
| msgid "Restore window" | ||||
| msgstr "Restaurar la ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:284 ../src/50-mutter-windows.xml.in.h:15 | ||||
| #: ../src/include/all-keybindings.h:284 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Activa estáu endolcáu" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:286 ../src/50-mutter-windows.xml.in.h:7 | ||||
| #: ../src/include/all-keybindings.h:286 | ||||
| msgid "Minimize window" | ||||
| msgstr "Minimizar ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:288 ../src/50-mutter-windows.xml.in.h:2 | ||||
| #: ../src/include/all-keybindings.h:288 | ||||
| msgid "Close window" | ||||
| msgstr "Zarrar ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:290 ../src/50-mutter-windows.xml.in.h:8 | ||||
| #: ../src/include/all-keybindings.h:290 | ||||
| msgid "Move window" | ||||
| msgstr "Mover ventana" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:292 ../src/50-mutter-windows.xml.in.h:11 | ||||
| #: ../src/include/all-keybindings.h:292 | ||||
| msgid "Resize window" | ||||
| msgstr "Cambiar el tamañu la ventana" | ||||
|  | ||||
| @@ -690,22 +689,18 @@ msgid "Toggle whether window is on all workspaces or just one" | ||||
| msgstr "Conmutar si la ventana apaez en toles árees de trabayu o namái nuna" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:299 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:10 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Mover ventana al espaciu de trabayu 1" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:302 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:11 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Mover ventana al espaciu de trabayu 2" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:305 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Mover ventana al espaciu de trabayu 3" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:308 | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Mover ventana al espaciu de trabayu 4" | ||||
|  | ||||
| @@ -741,24 +736,19 @@ msgstr "Mover ventana al espaciu de trabayu 11" | ||||
| msgid "Move window to workspace 12" | ||||
| msgstr "Mover ventana al espaciu de trabayu 12" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:344 ../src/50-mutter-navigation.xml.in.h:7 | ||||
| #: ../src/include/all-keybindings.h:344 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Mover ventana un espaciu de trabayu a manzorga" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:347 ../src/50-mutter-navigation.xml.in.h:8 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:347 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Mover ventana un espaciu de trabayu a derecha\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Mover ventana un espaciu de trabayu a madrecha" | ||||
| msgstr "Mover ventana un espaciu de trabayu a derecha" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:350 ../src/50-mutter-navigation.xml.in.h:9 | ||||
| #: ../src/include/all-keybindings.h:350 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Mover ventana un espaciu de trabayu p'arriba" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:353 ../src/50-mutter-navigation.xml.in.h:6 | ||||
| #: ../src/include/all-keybindings.h:353 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Mover ventana un espaciu de trabayu p'abaxo" | ||||
|  | ||||
| @@ -767,29 +757,19 @@ msgid "Raise window if it's covered by another window, otherwise lower it" | ||||
| msgstr "" | ||||
| "Llevantar la ventana si ta cubierta por otra ventana, minimizala n'otru casu" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:358 ../src/50-mutter-windows.xml.in.h:9 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:358 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Poner el ventanu en primer planu\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Poner la ventana en primer planu" | ||||
| msgstr "Poner el ventanu en primer planu" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:360 ../src/50-mutter-windows.xml.in.h:3 | ||||
| #, fuzzy | ||||
| #: ../src/include/all-keybindings.h:360 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Ventanu más baxu per debaxo d'otros ventanos\n" | ||||
| "#-#-#-#-#  ast.po (metacity)  #-#-#-#-#\n" | ||||
| "Ventana más baxa per debaxo d'otres ventanes" | ||||
| msgstr "Ventanu más baxu per debaxo d'otros ventanos" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:364 ../src/50-mutter-windows.xml.in.h:6 | ||||
| #: ../src/include/all-keybindings.h:364 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Maximizar ventana verticalmente" | ||||
|  | ||||
| #: ../src/include/all-keybindings.h:368 ../src/50-mutter-windows.xml.in.h:5 | ||||
| #: ../src/include/all-keybindings.h:368 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Maximizar ventana horizontalmente" | ||||
|  | ||||
| @@ -1003,6 +983,7 @@ msgstr "Espaciu de Trabayu %d%n" | ||||
|  | ||||
| #: ../src/ui/menu.c:213 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "Workspace 1_0" | ||||
| msgstr "Espaciu de Trabayu 1_0" | ||||
|  | ||||
| @@ -1743,6 +1724,7 @@ msgstr "Nun se permite testu dientro del elementu <%s>" | ||||
| #: ../src/ui/theme-parser.c:3748 ../src/ui/theme-parser.c:3760 | ||||
| #: ../src/ui/theme-parser.c:3772 | ||||
| #, c-format | ||||
| #, c-format | ||||
| msgid "<%s> specified twice for this theme" | ||||
| msgstr "<%s> especificáu dos vegaes pa esti tema" | ||||
|  | ||||
| @@ -1954,96 +1936,6 @@ msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "%d espresiones de coordenaes interpretaes en %g segundos (%g segundos de " | ||||
| "media)\n" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Anubrir toles ventanes normales" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Mover al área de trabayu d'arriba" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Mover al área de trabayu d'abaxo" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:4 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Mover al área de trabayu de la izquierda" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:5 | ||||
| #, fuzzy | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Mover al área de trabayu de la derecha" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Navigation" | ||||
| msgstr "Navegación" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Switch applications" | ||||
| msgstr "Movese ente aplicaciones" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls" | ||||
| msgstr "Cambiar ente controles del sistema" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Movese ente los controles del sistema direutamente" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| #, fuzzy | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Cambiar ventanes direutamente" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| #, fuzzy | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Movese ente les ventanes d'una aplicación direutamente" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| #, fuzzy | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Movese ente les ventanes d'una aplicación" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Amosar el resume d'actividaes" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Amosar l'elementu «executar comando»" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "System" | ||||
| msgstr "Sistema" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| #, fuzzy | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Llevantar la ventana si ta cubierta, minimizala n'otru casu" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "Conmutar la ventana en toles árees de trabayu o namái nuna" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Windows" | ||||
| msgstr "Ventanes" | ||||
|  | ||||
| #~ msgid "Desktop" | ||||
| #~ msgstr "Escritoriu" | ||||
|  | ||||
|   | ||||
							
								
								
									
										3134
									
								
								po/bn_IN.po
									
									
									
									
									
								
							
							
						
						
									
										3134
									
								
								po/bn_IN.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3854
									
								
								po/ca@valencia.po
									
									
									
									
									
								
							
							
						
						
									
										3854
									
								
								po/ca@valencia.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										684
									
								
								po/en_GB.po
									
									
									
									
									
								
							
							
						
						
									
										684
									
								
								po/en_GB.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										447
									
								
								po/et.po
									
									
									
									
									
								
							
							
						
						
									
										447
									
								
								po/et.po
									
									
									
									
									
								
							| @@ -7,15 +7,15 @@ | ||||
| # | ||||
| # Tõivo Leedjärv <toivo linux ee>, 2004. | ||||
| # Ivar Smolin <okul linux ee>, 2005, 2006, 2009–2011. | ||||
| # Mattias Põldaru <mahfiaz@gmail.com>, 2008–2011, 2012, 2013. | ||||
| # Mattias Põldaru <mahfiaz@gmail.com>, 2008–2011, 2012. | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter MASTER\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2013-09-10 15:25+0000\n" | ||||
| "PO-Revision-Date: 2013-09-11 23:20+0300\n" | ||||
| "POT-Creation-Date: 2012-03-11 22:19+0000\n" | ||||
| "PO-Revision-Date: 2012-03-12 00:47+0200\n" | ||||
| "Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n" | ||||
| "Language-Team: Estonian <>\n" | ||||
| "Language: et\n" | ||||
| @@ -23,143 +23,10 @@ msgstr "" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=2; plural=(n!=1);\n" | ||||
| "X-Generator: Poedit 1.5.4\n" | ||||
|  | ||||
| msgid "Navigation" | ||||
| msgstr "Navigeerimine" | ||||
|  | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Akna liigutamine 1. tööalale" | ||||
|  | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Akna liigutamine 2. tööalale" | ||||
|  | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Akna liigutamine 3. tööalale" | ||||
|  | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Akna liigutamine 4. tööalale" | ||||
|  | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Akna tõstmine vasakpoolsele tööalale" | ||||
|  | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "Akna tõstmine parempoolsele tööalale" | ||||
|  | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Akna tõstmine ülemisele tööalale" | ||||
|  | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Akna tõstmine alumisele tööalale" | ||||
|  | ||||
| msgid "Switch applications" | ||||
| msgstr "Rakenduste vahetamine" | ||||
|  | ||||
| msgid "Switch windows" | ||||
| msgstr "Akende vahetamine" | ||||
|  | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Rakenduse akende vahetamine" | ||||
|  | ||||
| msgid "Switch system controls" | ||||
| msgstr "Süsteemi juhtalade vahetamine" | ||||
|  | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Akende kohene vahetamine" | ||||
|  | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Rakenduse akende kohene vahetamine" | ||||
|  | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Süsteemi juhtalade kohene vahetamine" | ||||
|  | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Kõigi tavaliste akende peitmine" | ||||
|  | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "1. tööalale liikumine" | ||||
|  | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "2. tööalale liikumine" | ||||
|  | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "3. tööalale liikumine" | ||||
|  | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "4. tööalale liikumine" | ||||
|  | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Vasakpoolsele tööalale liikumine" | ||||
|  | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Parempoolsele tööalale liikumine" | ||||
|  | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Ülemisele tööalale liikumine" | ||||
|  | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Alumisele tööalale liikumine" | ||||
|  | ||||
| msgid "System" | ||||
| msgstr "Süsteem" | ||||
|  | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Käsuviiba kuvamine" | ||||
|  | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Tegevuste ülevaate avamine" | ||||
|  | ||||
| msgid "Windows" | ||||
| msgstr "Aknad" | ||||
|  | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Aknamenüü avamine" | ||||
|  | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Täisekraanoleku vahetamine" | ||||
|  | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "Maksimeeritud oleku vahetamine" | ||||
|  | ||||
| msgid "Maximize window" | ||||
| msgstr "Akna maksimeerimine" | ||||
|  | ||||
| msgid "Restore window" | ||||
| msgstr "Akna taastamine" | ||||
|  | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Varjatud oleku vahetamine" | ||||
|  | ||||
| msgid "Close window" | ||||
| msgstr "Akna sulgemine" | ||||
|  | ||||
| msgid "Hide window" | ||||
| msgstr "Peida aken" | ||||
|  | ||||
| msgid "Move window" | ||||
| msgstr "Akna liigutamine" | ||||
|  | ||||
| msgid "Resize window" | ||||
| msgstr "Akna suuruse muutmine" | ||||
|  | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "Akna kõigil või ühel tööalal olemise vahetamine" | ||||
|  | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "Akna tõstmine, kui see on kaetud, muul juhul langetamine" | ||||
|  | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "Akna tõstmine teiste kohale" | ||||
|  | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "Akna langetamine teiste taha" | ||||
|  | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Akna vertikaalne maksimeerimine" | ||||
|  | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Akna horisontaalne maksimeerimine" | ||||
|  | ||||
| msgid "View split on left" | ||||
| msgstr "Vaade poolitatakse vasakult" | ||||
|  | ||||
| @@ -174,9 +41,6 @@ msgid "" | ||||
| "\"." | ||||
| msgstr "Teine komposiithaldur juba töötab ekraani %i kuval \"%s\"." | ||||
|  | ||||
| msgid "background texture could not be created from file" | ||||
| msgstr "failist polnud võimalik taustatekstuuri luua" | ||||
|  | ||||
| msgid "Bell event" | ||||
| msgstr "Helina sündmus" | ||||
|  | ||||
| @@ -185,8 +49,8 @@ msgid "Unknown window information request: %d" | ||||
| msgstr "Tundmatu aknateabe päring: %d" | ||||
|  | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "„%s” ei vasta." | ||||
| msgid "<tt>%s</tt> is not responding." | ||||
| msgstr "<tt>%s</tt> ei vasta." | ||||
|  | ||||
| msgid "Application is not responding." | ||||
| msgstr "Rakendus ei vasta." | ||||
| @@ -218,10 +82,6 @@ msgstr "" | ||||
| "Mõni teine programm juba kasutab klahvi %s koos muuteklahvidega %x " | ||||
| "kiirklahvina\n" | ||||
|  | ||||
| #, c-format | ||||
| msgid "\"%s\" is not a valid accelerator\n" | ||||
| msgstr "\"%s\" pole sobiv kiirklahv\n" | ||||
|  | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Seansihalduriga ühendumise keelamine" | ||||
|  | ||||
| @@ -250,17 +110,6 @@ msgid "" | ||||
| msgstr "" | ||||
| "Teemat ei leitud! Veendu, et %s on olemas ja sisaldab harilikke teemasid.\n" | ||||
|  | ||||
| msgid "Built-in display" | ||||
| msgstr "Sisseehitatud kuva" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor name (in case we don't know | ||||
| #. the vendor), it's Unknown followed by a size in inches, | ||||
| #. like 'Unknown 15"' | ||||
| #. | ||||
| #, c-format | ||||
| msgid "Unknown %s" | ||||
| msgstr "Tundmatu %s" | ||||
|  | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| @@ -279,8 +128,8 @@ msgstr "" | ||||
| msgid "Print version" | ||||
| msgstr "Versiooni printimine" | ||||
|  | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "Millist Mutteri pluginat kasutada" | ||||
| msgid "Comma-separated list of compositor plugins" | ||||
| msgstr "Komaga eraldatud nimekiri komposiitmontaaži pluginatest" | ||||
|  | ||||
| msgid "" | ||||
| "Workarounds for broken applications disabled. Some applications may not " | ||||
| @@ -393,6 +242,7 @@ msgstr "Tõrge logifaili %s avamisel funktsiooniga fdopen(): %s\n" | ||||
| msgid "Opened log file %s\n" | ||||
| msgstr "Avati logifail %s\n" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "Mutter kompileeriti ilma jutuka režiimi toeta\n" | ||||
|  | ||||
| @@ -503,6 +353,16 @@ msgstr "" | ||||
| "Kui märgitud, siis eraldi tiitliribade asemel on moodaalsed dialoogid " | ||||
| "emaakna tiitliribade küljes ning liiguvad koos emaaknaga." | ||||
|  | ||||
| msgid "Live Hidden Windows" | ||||
| msgstr "Varjatud akende aktiivsus" | ||||
|  | ||||
| msgid "" | ||||
| "Determines whether hidden windows (i.e., minimized windows and windows on " | ||||
| "other workspaces than the current one) should be kept alive." | ||||
| msgstr "" | ||||
| "Määrab, kas varjatud aknaid (nt minimeeritud ja teistel tööaladel aknad) " | ||||
| "hoitakse elus." | ||||
|  | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "Akna ümberpaigutamine selle lohistamisel ekraani serva" | ||||
|  | ||||
| @@ -546,17 +406,6 @@ msgstr "" | ||||
| "Kui märgitud, siis on hüpikaken ja esiletõstmise raam keelatud akende " | ||||
| "vahetamisel." | ||||
|  | ||||
| msgid "Delay focus changes until the pointer stops moving" | ||||
| msgstr "Fookusemuutused lükatakse edasi kuni kursor peatub" | ||||
|  | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| msgstr "" | ||||
| "Kui tõene ning fookusrežiim on kas \"sloppy\" või \"mouse\", siis fookust ei " | ||||
| "vahetata kohe, kui kursor aknale liigub, vaid alles pärast kursori peatumist." | ||||
|  | ||||
| msgid "Draggable border width" | ||||
| msgstr "Lohistatava äärise laius." | ||||
|  | ||||
| @@ -567,22 +416,49 @@ msgstr "" | ||||
| "Lohistatava äärise laius. Kui kujunduse nähtavatest ääristest ei piisa, " | ||||
| "lisatakse puuduoleva osa jaoks nähtamatu ääris." | ||||
|  | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "Peaaegu monitori suurused ekraanid maksimeeritakse automaatselt" | ||||
|  | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
| "Kui lubatud, maksimeeritakse automaatselt aknad, mis on avanedes monitori " | ||||
| "suurused." | ||||
|  | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "Akna valimine tabulaatori hüpikaknalt" | ||||
|  | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "Tabulaatori hüpikakna katkestamine" | ||||
|  | ||||
| #, c-format | ||||
| msgid "Usage: %s\n" | ||||
| msgstr "Kasutamine: %s\n" | ||||
|  | ||||
| msgid "Close Window" | ||||
| msgstr "Sulge aken" | ||||
|  | ||||
| msgid "Window Menu" | ||||
| msgstr "Aknamenüü" | ||||
|  | ||||
| msgid "Minimize Window" | ||||
| msgstr "Akna minimeerimine" | ||||
|  | ||||
| msgid "Maximize Window" | ||||
| msgstr "Akna maksimeerimine" | ||||
|  | ||||
| msgid "Restore Window" | ||||
| msgstr "Akna taastamine" | ||||
|  | ||||
| msgid "Roll Up Window" | ||||
| msgstr "Akna kokkukerimine" | ||||
|  | ||||
| msgid "Unroll Window" | ||||
| msgstr "Akna lahtikerimine" | ||||
|  | ||||
| msgid "Keep Window On Top" | ||||
| msgstr "Akna kõige pealmiseks määramine" | ||||
|  | ||||
| msgid "Remove Window From Top" | ||||
| msgstr "Eemalda aken kõige pealmise kohalt" | ||||
|  | ||||
| msgid "Always On Visible Workspace" | ||||
| msgstr "Alati nähtaval tööalal" | ||||
|  | ||||
| msgid "Put Window On Only One Workspace" | ||||
| msgstr "Tõsta aken ainult ühele tööalale" | ||||
|  | ||||
| #. Translators: Translate this string the same way as you do in libwnck! | ||||
| msgid "Mi_nimize" | ||||
| msgstr "_Minimeeri" | ||||
| @@ -1288,151 +1164,156 @@ msgstr "Selle teema jaoks on <%s> määratud kaks korda" | ||||
| msgid "Failed to find a valid file for theme %s\n" | ||||
| msgstr "Tõrge %s teema jaoks korrektse faili leidmisel\n" | ||||
|  | ||||
| #~ msgid "Usage: %s\n" | ||||
| #~ msgstr "Kasutamine: %s\n" | ||||
| msgid "_Windows" | ||||
| msgstr "_Aknad" | ||||
|  | ||||
| #~ msgid "_Windows" | ||||
| #~ msgstr "_Aknad" | ||||
| msgid "_Dialog" | ||||
| msgstr "_Dialoog" | ||||
|  | ||||
| #~ msgid "_Dialog" | ||||
| #~ msgstr "_Dialoog" | ||||
| msgid "_Modal dialog" | ||||
| msgstr "_Modaaldialoog" | ||||
|  | ||||
| #~ msgid "_Modal dialog" | ||||
| #~ msgstr "_Modaaldialoog" | ||||
| msgid "_Utility" | ||||
| msgstr "_Utiliit" | ||||
|  | ||||
| #~ msgid "_Utility" | ||||
| #~ msgstr "_Utiliit" | ||||
| msgid "_Splashscreen" | ||||
| msgstr "_Käivitusekraan" | ||||
|  | ||||
| #~ msgid "_Splashscreen" | ||||
| #~ msgstr "_Käivitusekraan" | ||||
| msgid "_Top dock" | ||||
| msgstr "Ü_lemine dokk" | ||||
|  | ||||
| #~ msgid "_Top dock" | ||||
| #~ msgstr "Ü_lemine dokk" | ||||
| msgid "_Bottom dock" | ||||
| msgstr "_Alumine dokk" | ||||
|  | ||||
| #~ msgid "_Bottom dock" | ||||
| #~ msgstr "_Alumine dokk" | ||||
| msgid "_Left dock" | ||||
| msgstr "_Vasak dokk" | ||||
|  | ||||
| #~ msgid "_Left dock" | ||||
| #~ msgstr "_Vasak dokk" | ||||
| msgid "_Right dock" | ||||
| msgstr "_Parem dokk" | ||||
|  | ||||
| #~ msgid "_Right dock" | ||||
| #~ msgstr "_Parem dokk" | ||||
| msgid "_All docks" | ||||
| msgstr "_Kõik dokid" | ||||
|  | ||||
| #~ msgid "_All docks" | ||||
| #~ msgstr "_Kõik dokid" | ||||
| msgid "Des_ktop" | ||||
| msgstr "_Töölaud" | ||||
|  | ||||
| #~ msgid "Des_ktop" | ||||
| #~ msgstr "_Töölaud" | ||||
| msgid "Open another one of these windows" | ||||
| msgstr "Ava neist akendest järgmine" | ||||
|  | ||||
| #~ msgid "Open another one of these windows" | ||||
| #~ msgstr "Ava neist akendest järgmine" | ||||
| msgid "This is a demo button with an 'open' icon" | ||||
| msgstr "See on näidisnupp koos 'ava' ikooniga" | ||||
|  | ||||
| #~ msgid "This is a demo button with an 'open' icon" | ||||
| #~ msgstr "See on näidisnupp koos 'ava' ikooniga" | ||||
| msgid "This is a demo button with a 'quit' icon" | ||||
| msgstr "See on näidisnupp koos 'lõpeta' ikooniga" | ||||
|  | ||||
| #~ msgid "This is a demo button with a 'quit' icon" | ||||
| #~ msgstr "See on näidisnupp koos 'lõpeta' ikooniga" | ||||
| msgid "This is a sample message in a sample dialog" | ||||
| msgstr "See on näidisteade näidisdialoogis" | ||||
|  | ||||
| #~ msgid "This is a sample message in a sample dialog" | ||||
| #~ msgstr "See on näidisteade näidisdialoogis" | ||||
| #, c-format | ||||
| msgid "Fake menu item %d\n" | ||||
| msgstr "Võltsitud menüüpunkt %d\n" | ||||
|  | ||||
| #~ msgid "Fake menu item %d\n" | ||||
| #~ msgstr "Võltsitud menüüpunkt %d\n" | ||||
| msgid "Border-only window" | ||||
| msgstr "Ainult raamiga aken" | ||||
|  | ||||
| #~ msgid "Border-only window" | ||||
| #~ msgstr "Ainult raamiga aken" | ||||
| msgid "Bar" | ||||
| msgstr "Riba" | ||||
|  | ||||
| #~ msgid "Bar" | ||||
| #~ msgstr "Riba" | ||||
| msgid "Normal Application Window" | ||||
| msgstr "Tavaline rakenduseaken" | ||||
|  | ||||
| #~ msgid "Normal Application Window" | ||||
| #~ msgstr "Tavaline rakenduseaken" | ||||
| msgid "Dialog Box" | ||||
| msgstr "Dialoogikast" | ||||
|  | ||||
| #~ msgid "Dialog Box" | ||||
| #~ msgstr "Dialoogikast" | ||||
| msgid "Modal Dialog Box" | ||||
| msgstr "Modaalne dialoogikast" | ||||
|  | ||||
| #~ msgid "Modal Dialog Box" | ||||
| #~ msgstr "Modaalne dialoogikast" | ||||
| msgid "Utility Palette" | ||||
| msgstr "Rakendite palett" | ||||
|  | ||||
| #~ msgid "Utility Palette" | ||||
| #~ msgstr "Rakendite palett" | ||||
| msgid "Torn-off Menu" | ||||
| msgstr "Ärarebitav menüü" | ||||
|  | ||||
| #~ msgid "Torn-off Menu" | ||||
| #~ msgstr "Ärarebitav menüü" | ||||
| msgid "Border" | ||||
| msgstr "Raam" | ||||
|  | ||||
| #~ msgid "Border" | ||||
| #~ msgstr "Raam" | ||||
| msgid "Attached Modal Dialog" | ||||
| msgstr "Kinnistatud modaaldialoog" | ||||
|  | ||||
| #~ msgid "Attached Modal Dialog" | ||||
| #~ msgstr "Kinnistatud modaaldialoog" | ||||
| #, c-format | ||||
| msgid "Button layout test %d" | ||||
| msgstr "Nuppude paigutuse test %d" | ||||
|  | ||||
| #~ msgid "Button layout test %d" | ||||
| #~ msgstr "Nuppude paigutuse test %d" | ||||
| #, c-format | ||||
| msgid "%g milliseconds to draw one window frame" | ||||
| msgstr "%g millisekundit kulub ühe akna raami joonistamiseks" | ||||
|  | ||||
| #~ msgid "%g milliseconds to draw one window frame" | ||||
| #~ msgstr "%g millisekundit kulub ühe akna raami joonistamiseks" | ||||
| #, c-format | ||||
| msgid "Usage: metacity-theme-viewer [THEMENAME]\n" | ||||
| msgstr "Kasutamine: metacity-theme-viewer [TEEMANIMI]\n" | ||||
|  | ||||
| #~ msgid "Usage: metacity-theme-viewer [THEMENAME]\n" | ||||
| #~ msgstr "Kasutamine: metacity-theme-viewer [TEEMANIMI]\n" | ||||
| #, c-format | ||||
| msgid "Error loading theme: %s\n" | ||||
| msgstr "Viga teema laadimisel: %s\n" | ||||
|  | ||||
| #~ msgid "Error loading theme: %s\n" | ||||
| #~ msgstr "Viga teema laadimisel: %s\n" | ||||
| #, c-format | ||||
| msgid "Loaded theme \"%s\" in %g seconds\n" | ||||
| msgstr "Teema \"%s\" laaditi %g sekundiga\n" | ||||
|  | ||||
| #~ msgid "Loaded theme \"%s\" in %g seconds\n" | ||||
| #~ msgstr "Teema \"%s\" laaditi %g sekundiga\n" | ||||
| msgid "Normal Title Font" | ||||
| msgstr "Tiitli tavasuurusega kirjatüüp" | ||||
|  | ||||
| #~ msgid "Normal Title Font" | ||||
| #~ msgstr "Tiitli tavasuurusega kirjatüüp" | ||||
| msgid "Small Title Font" | ||||
| msgstr "Tiitli väike kirjatüüp" | ||||
|  | ||||
| #~ msgid "Small Title Font" | ||||
| #~ msgstr "Tiitli väike kirjatüüp" | ||||
| msgid "Large Title Font" | ||||
| msgstr "Tiitli suur kirjatüüp" | ||||
|  | ||||
| #~ msgid "Large Title Font" | ||||
| #~ msgstr "Tiitli suur kirjatüüp" | ||||
| msgid "Button Layouts" | ||||
| msgstr "Nuppude paigutus" | ||||
|  | ||||
| #~ msgid "Button Layouts" | ||||
| #~ msgstr "Nuppude paigutus" | ||||
| msgid "Benchmark" | ||||
| msgstr "Jõudlus" | ||||
|  | ||||
| #~ msgid "Benchmark" | ||||
| #~ msgstr "Jõudlus" | ||||
| msgid "Window Title Goes Here" | ||||
| msgstr "Siia tuleb akna pealkiri" | ||||
|  | ||||
| #~ msgid "Window Title Goes Here" | ||||
| #~ msgstr "Siia tuleb akna pealkiri" | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g " | ||||
| "seconds wall clock time including X server resources (%g milliseconds per " | ||||
| "frame)\n" | ||||
| msgstr "" | ||||
| "Joonistati %d kaadrit %g kliendi-kella sekundiga (%g millisekundit kaadrile) " | ||||
| "ja %g sekundiga seinakella järgi, millesse on kaasatud X-serveri " | ||||
| "ressursikasutus (%g millisekundit kaadrile)\n" | ||||
|  | ||||
| #~ msgid "" | ||||
| #~ "Drew %d frames in %g client-side seconds (%g milliseconds per frame) and " | ||||
| #~ "%g seconds wall clock time including X server resources (%g milliseconds " | ||||
| #~ "per frame)\n" | ||||
| #~ msgstr "" | ||||
| #~ "Joonistati %d kaadrit %g kliendi-kella sekundiga (%g millisekundit " | ||||
| #~ "kaadrile) ja %g sekundiga seinakella järgi, millesse on kaasatud X-" | ||||
| #~ "serveri ressursikasutus (%g millisekundit kaadrile)\n" | ||||
| msgid "position expression test returned TRUE but set error" | ||||
| msgstr "asukoha avaldise kontroll tagastas TÕENE, aga määras vea" | ||||
|  | ||||
| #~ msgid "position expression test returned TRUE but set error" | ||||
| #~ msgstr "asukoha avaldise kontroll tagastas TÕENE, aga määras vea" | ||||
| msgid "position expression test returned FALSE but didn't set error" | ||||
| msgstr "asukoha avaldise kontroll tagastas VÄÄR, aga ei määranud viga" | ||||
|  | ||||
| #~ msgid "position expression test returned FALSE but didn't set error" | ||||
| #~ msgstr "asukoha avaldise kontroll tagastas VÄÄR, aga ei määranud viga" | ||||
| msgid "Error was expected but none given" | ||||
| msgstr "Oodati viga, aga ühtegi ei edastatud" | ||||
|  | ||||
| #~ msgid "Error was expected but none given" | ||||
| #~ msgstr "Oodati viga, aga ühtegi ei edastatud" | ||||
| #, c-format | ||||
| msgid "Error %d was expected but %d given" | ||||
| msgstr "Oodati viga %d, aga edastati viga %d" | ||||
|  | ||||
| #~ msgid "Error %d was expected but %d given" | ||||
| #~ msgstr "Oodati viga %d, aga edastati viga %d" | ||||
| #, c-format | ||||
| msgid "Error not expected but one was returned: %s" | ||||
| msgstr "Viga ei oodatud, aga üks edastati: %s" | ||||
|  | ||||
| #~ msgid "Error not expected but one was returned: %s" | ||||
| #~ msgstr "Viga ei oodatud, aga üks edastati: %s" | ||||
| #, c-format | ||||
| msgid "x value was %d, %d was expected" | ||||
| msgstr "x väärtus oli %d, oodati väärtust %d" | ||||
|  | ||||
| #~ msgid "x value was %d, %d was expected" | ||||
| #~ msgstr "x väärtus oli %d, oodati väärtust %d" | ||||
| #, c-format | ||||
| msgid "y value was %d, %d was expected" | ||||
| msgstr "y väärtus oli %d, oodati väärtust %d" | ||||
|  | ||||
| #~ msgid "y value was %d, %d was expected" | ||||
| #~ msgstr "y väärtus oli %d, oodati väärtust %d" | ||||
|  | ||||
| #~ msgid "" | ||||
| #~ "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| #~ msgstr "" | ||||
| #~ "%d koordinaatide avaldis töödeldi %g sekundiga (keskmine %g sekundit)\n" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "Akna minimeerimine" | ||||
| #, c-format | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "" | ||||
| "%d koordinaatide avaldis töödeldi %g sekundiga (keskmine %g sekundit)\n" | ||||
|   | ||||
							
								
								
									
										360
									
								
								po/fa.po
									
									
									
									
									
								
							
							
						
						
									
										360
									
								
								po/fa.po
									
									
									
									
									
								
							| @@ -20,7 +20,8 @@ msgstr "" | ||||
| "X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n" | ||||
| "X-Poedit-SourceCharset: utf-8\n" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17 | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| #| msgid "/_Windows" | ||||
| msgid "Windows" | ||||
| msgstr "پنجرهها" | ||||
|  | ||||
| @@ -1485,291 +1486,6 @@ msgstr "مقدار y %Id بود، %Id انتظار میرفت" | ||||
| msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n" | ||||
| msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (متوسط %Ig ثانیه)\n" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:2 | ||||
| #, fuzzy | ||||
| msgid "Close window" | ||||
| msgstr "بستن پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "پایین بردن پنجره زیر پنجرههای دیگر" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:4 | ||||
| #, fuzzy | ||||
| msgid "Maximize window" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "حداکثر کردن پنجره\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "بیشینه کردن پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:5 | ||||
| #, fuzzy | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "حداکثر کردن افقی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:6 | ||||
| #, fuzzy | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "حداکثر کردن عمودی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:7 | ||||
| #, fuzzy | ||||
| msgid "Minimize window" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "حداقل کردن پنجره\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "کمینه کردن پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:8 | ||||
| #, fuzzy | ||||
| msgid "Move window" | ||||
| msgstr "جابهجایی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:6 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری پایینی\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری پایینی" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:7 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری چپ \n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری چپ " | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:8 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری راست\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری راست" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:9 | ||||
| #, fuzzy | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری بالایی\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری بالایی" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:10 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری ۱\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری ۱" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:11 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری ۲\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری ۲" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:12 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "نقلمکان پنجره به فضای کاری ۳\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری ۳" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:13 | ||||
| #, fuzzy | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضای کاری ۴\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "جابهجایی پنجره به فضایکاری ۴" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:9 | ||||
| #, fuzzy | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "پیش آوردن پنجره روی همهی پنجرهها" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:11 | ||||
| #, fuzzy | ||||
| msgid "Resize window" | ||||
| msgstr "تغییر اندازهی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:18 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "تعویض به فضای کاری ۱\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "رفتن به فضایکاری ۱" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:19 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "تعویض به فضای کاری ۲\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "رفتن به فضایکاری ۲" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:20 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "تعویض به فضای کاری ۳\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "رفتن به فضایکاری ۳" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:21 | ||||
| #, fuzzy | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "تعویض به فضای کاری ۴\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "رفتن به فضایکاری ۴" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:13 | ||||
| #, fuzzy | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "ضامن حالت تمام صفحه" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "ضامن همیشه در وضیعت حداکثر\n" | ||||
| "#-#-#-#-#  fa.po (metacity HEAD)  #-#-#-#-#\n" | ||||
| "ضامن همیشه در وضعیت حداکثر" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "ضامن وضعیت سایه خورده" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| #, fuzzy | ||||
| #| msgid "Hide all normal windows and set focus to the desktop" | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "مخفی کردن همهی پنجرههای معمول" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:2 | ||||
| #, fuzzy | ||||
| #| msgid "Move to Workspace _Left" | ||||
| msgid "Move to workspace above" | ||||
| msgstr "جابهجایی به فضایکاری _چپ" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:3 | ||||
| #, fuzzy | ||||
| #| msgid "Move to Workspace _Down" | ||||
| msgid "Move to workspace below" | ||||
| msgstr "جابهجایی به فضایکاری پایین" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:4 | ||||
| #, fuzzy | ||||
| #| msgid "Move to Workspace _Left" | ||||
| msgid "Move to workspace left" | ||||
| msgstr "جابهجایی به فضایکاری سمت چپ" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:5 | ||||
| #, fuzzy | ||||
| #| msgid "Move to Workspace R_ight" | ||||
| msgid "Move to workspace right" | ||||
| msgstr "جابهجایی به فضایکاری سمت راست" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:14 | ||||
| #, fuzzy | ||||
| msgid "Navigation" | ||||
| msgstr "جابهجایی" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:15 | ||||
| #, fuzzy | ||||
| msgid "Switch applications" | ||||
| msgstr "تعویض برنامهها" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:16 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls" | ||||
| msgstr "تعویض کنترلهای سیستم" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:17 | ||||
| #, fuzzy | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "تعویض مستقیمِ کنترلهای سیستم" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:22 | ||||
| #, fuzzy | ||||
| msgid "Switch windows directly" | ||||
| msgstr "تعویض مستیقیم پنجرهها" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:23 | ||||
| #, fuzzy | ||||
| #| msgid "Move between windows of an application immediately" | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "تعویض مستقیمِ پنجرههای یک برنامه" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:24 | ||||
| #, fuzzy | ||||
| #| msgid "Move between windows of an application immediately" | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "تعویض پنجرههای یک برنامه" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Show the activities overview" | ||||
| msgstr "نمایش نمایکلی فعالیتها" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:2 | ||||
| #, fuzzy | ||||
| #| msgid "Show the panel's main menu" | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "نمایش خط فرمان اجرا" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:3 | ||||
| #, fuzzy | ||||
| msgid "System" | ||||
| msgstr "سیستم" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Activate the window menu" | ||||
| msgstr "فعال کردن منوی پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:10 | ||||
| #, fuzzy | ||||
| #| msgid "Raise window if it's covered by another window, otherwise lower it" | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "بالا آوردن پنجره در صورتی که پوشیده شده است، در غیر اینصورت پایین برود" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:12 | ||||
| #, fuzzy | ||||
| msgid "Restore window" | ||||
| msgstr "بازگرداندن پنجره" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:16 | ||||
| #, fuzzy | ||||
| #| msgid "Toggle whether window is on all workspaces or just one" | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "تغییر حالت پنجره در یک یا تمام فضاهایکاری" | ||||
|  | ||||
| #~ msgid "Failed to parse message \"%s\" from dialog process\n" | ||||
| #~ msgstr "شکست در تجزیه پیغام «%s» از پردازش محاوره\n" | ||||
|  | ||||
| @@ -1906,6 +1622,9 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ "(کلیک راست) میشود. تغییردهنده به صورت مثلاً«<Alt>» یا «<Super>» " | ||||
| #~ "نمایش داده میشود." | ||||
|  | ||||
| #~ msgid "Close window" | ||||
| #~ msgstr "بستن پنجره" | ||||
|  | ||||
| #~ msgid "Commands to run in response to keybindings" | ||||
| #~ msgstr "فرمانهایی که در پاسخ به کلیدهای مقید اجرا میشوند" | ||||
|  | ||||
| @@ -1984,6 +1703,21 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgstr "" | ||||
| #~ "اگر درست بود از قابلیت کاربری در قبال استفادهی کمتر از منابع صرف نظر شود" | ||||
|  | ||||
| #~ msgid "Lower window below other windows" | ||||
| #~ msgstr "پایین بردن پنجره زیر پنجرههای دیگر" | ||||
|  | ||||
| #~ msgid "Maximize window" | ||||
| #~ msgstr "حداکثر کردن پنجره" | ||||
|  | ||||
| #~ msgid "Maximize window horizontally" | ||||
| #~ msgstr "حداکثر کردن افقی پنجره" | ||||
|  | ||||
| #~ msgid "Maximize window vertically" | ||||
| #~ msgstr "حداکثر کردن عمودی پنجره" | ||||
|  | ||||
| #~ msgid "Minimize window" | ||||
| #~ msgstr "حداقل کردن پنجره" | ||||
|  | ||||
| #~ msgid "Move backward between panels and the desktop immediately" | ||||
| #~ msgstr "جابهجایی آنی به عقب بین تابلو و رومیزی" | ||||
|  | ||||
| @@ -2005,6 +1739,24 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgid "Move focus backwards between windows using popup display" | ||||
| #~ msgstr "انتقال تمرکز به عقب بین پنجرهها با نمایش واشو" | ||||
|  | ||||
| #~ msgid "Move window" | ||||
| #~ msgstr "جابهجایی پنجره" | ||||
|  | ||||
| #~ msgid "Move window one workspace down" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری پایینی" | ||||
|  | ||||
| #~ msgid "Move window one workspace to the left" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری چپ " | ||||
|  | ||||
| #~ msgid "Move window one workspace to the right" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری راست" | ||||
|  | ||||
| #~ msgid "Move window one workspace up" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری بالایی" | ||||
|  | ||||
| #~ msgid "Move window to workspace 1" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۱" | ||||
|  | ||||
| #~ msgid "Move window to workspace 10" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۱۰" | ||||
|  | ||||
| @@ -2014,6 +1766,15 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgid "Move window to workspace 12" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۱۲" | ||||
|  | ||||
| #~ msgid "Move window to workspace 2" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۲" | ||||
|  | ||||
| #~ msgid "Move window to workspace 3" | ||||
| #~ msgstr "نقلمکان پنجره به فضای کاری ۳" | ||||
|  | ||||
| #~ msgid "Move window to workspace 4" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۴" | ||||
|  | ||||
| #~ msgid "Move window to workspace 5" | ||||
| #~ msgstr "جابهجایی پنجره به فضای کاری ۵" | ||||
|  | ||||
| @@ -2043,6 +1804,12 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ "تعداد فضاهای کاری. باید بیش از صفر باشد و حداکثر مشخصی دارد (برای این که " | ||||
| #~ "اتفاقی رومیزیتان را با درخواست ۳۴ میلیون فضای کاری از بین نبرید)." | ||||
|  | ||||
| #~ msgid "Raise window above other windows" | ||||
| #~ msgstr "پیش آوردن پنجره روی همهی پنجرهها" | ||||
|  | ||||
| #~ msgid "Resize window" | ||||
| #~ msgstr "تغییر اندازهی پنجره" | ||||
|  | ||||
| #~ msgid "Run a defined command" | ||||
| #~ msgstr "اجرای یک فرمان تعریف شده" | ||||
|  | ||||
| @@ -2083,6 +1850,9 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ "بعضی از دور زدنها دورزدن کمبودهای خود قواعد جزئی هستند، بنابراین بعضی " | ||||
| #~ "وقتها اشکال در حالت دور زدن بدون دستکاری قواعد قبل رفع نیست." | ||||
|  | ||||
| #~ msgid "Switch to workspace 1" | ||||
| #~ msgstr "تعویض به فضای کاری ۱" | ||||
|  | ||||
| #~ msgid "Switch to workspace 10" | ||||
| #~ msgstr "تعویض به فضای کاری ۱۰" | ||||
|  | ||||
| @@ -2092,6 +1862,15 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgid "Switch to workspace 12" | ||||
| #~ msgstr "تعویض به فضای کاری ۱۲" | ||||
|  | ||||
| #~ msgid "Switch to workspace 2" | ||||
| #~ msgstr "تعویض به فضای کاری ۲" | ||||
|  | ||||
| #~ msgid "Switch to workspace 3" | ||||
| #~ msgstr "تعویض به فضای کاری ۳" | ||||
|  | ||||
| #~ msgid "Switch to workspace 4" | ||||
| #~ msgstr "تعویض به فضای کاری ۴" | ||||
|  | ||||
| #~ msgid "Switch to workspace 5" | ||||
| #~ msgstr "تعویض به فضای کاری ۵" | ||||
|  | ||||
| @@ -3146,6 +2925,15 @@ msgstr "تغییر حالت پنجره در یک یا تمام فضاهایک | ||||
| #~ msgid "Toggle always on top state" | ||||
| #~ msgstr "ضامن همیشه در وضعیت بالایی" | ||||
|  | ||||
| #~ msgid "Toggle fullscreen mode" | ||||
| #~ msgstr "ضامن حالت تمام صفحه" | ||||
|  | ||||
| #~ msgid "Toggle maximization state" | ||||
| #~ msgstr "ضامن همیشه در وضیعت حداکثر" | ||||
|  | ||||
| #~ msgid "Toggle shaded state" | ||||
| #~ msgstr "ضامن وضعیت سایه خورده" | ||||
|  | ||||
| #~ msgid "Toggle window on all workspaces" | ||||
| #~ msgstr "ضامن پنجره در تمام فضاهای کاری" | ||||
|  | ||||
|   | ||||
							
								
								
									
										672
									
								
								po/kk.po
									
									
									
									
									
								
							
							
						
						
									
										672
									
								
								po/kk.po
									
									
									
									
									
								
							| @@ -1,672 +0,0 @@ | ||||
| # Kazakh translation for mutter. | ||||
| # Copyright (C) 2013 mutter's COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the mutter package. | ||||
| # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: mutter master\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" | ||||
| "product=mutter&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2015-03-08 23:11+0000\n" | ||||
| "PO-Revision-Date: 2015-03-09 15:42+0500\n" | ||||
| "Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n" | ||||
| "Language-Team: Kazakh <kk@li.org>\n" | ||||
| "Language: kk\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "X-Generator: Poedit 1.7.3\n" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:1 | ||||
| msgid "Navigation" | ||||
| msgstr "Навигация" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:2 | ||||
| msgid "Move window to workspace 1" | ||||
| msgstr "Терезені 1-ші жұмыс орнына жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:3 | ||||
| msgid "Move window to workspace 2" | ||||
| msgstr "Терезені 2-ші жұмыс орнына жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:4 | ||||
| msgid "Move window to workspace 3" | ||||
| msgstr "Терезені 3-ші жұмыс орнына жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:5 | ||||
| msgid "Move window to workspace 4" | ||||
| msgstr "Терезені 4-ші жұмыс орнына жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:6 | ||||
| msgid "Move window to last workspace" | ||||
| msgstr "Терезені соңғы жұмыс орнына жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:7 | ||||
| msgid "Move window one workspace to the left" | ||||
| msgstr "Терезені бір жұмыс орнына солға жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:8 | ||||
| msgid "Move window one workspace to the right" | ||||
| msgstr "Терезені бір жұмыс орнына оңға жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:9 | ||||
| msgid "Move window one workspace up" | ||||
| msgstr "Терезені бір жұмыс орнына жоғары жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:10 | ||||
| msgid "Move window one workspace down" | ||||
| msgstr "Терезені бір жұмыс орнына төмен жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:11 | ||||
| #| msgid "Move window one workspace to the left" | ||||
| msgid "Move window one monitor to the left" | ||||
| msgstr "Терезені бір мониторға солға жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:12 | ||||
| #| msgid "Move window one workspace to the right" | ||||
| msgid "Move window one monitor to the right" | ||||
| msgstr "Терезені бір мониторға оңға жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:13 | ||||
| #| msgid "Move window one workspace up" | ||||
| msgid "Move window one monitor up" | ||||
| msgstr "Терезені бір мониторға жоғары жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:14 | ||||
| #| msgid "Move window one workspace down" | ||||
| msgid "Move window one monitor down" | ||||
| msgstr "Терезені бір мониторға төмен жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:15 | ||||
| msgid "Switch applications" | ||||
| msgstr "Қолданбаларды ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:16 | ||||
| #| msgid "Switch applications" | ||||
| msgid "Switch to previous application" | ||||
| msgstr "Алдыңғы қолданбаға ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:17 | ||||
| msgid "Switch windows" | ||||
| msgstr "Терезелерді ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:18 | ||||
| #| msgid "Switch windows" | ||||
| msgid "Switch to previous window" | ||||
| msgstr "Алдыңғы терезеге ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:19 | ||||
| msgid "Switch windows of an application" | ||||
| msgstr "Қолданба терезелерін ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:20 | ||||
| #| msgid "Switch windows of an application" | ||||
| msgid "Switch to previous window of an application" | ||||
| msgstr "Қолданбаның алдыңғы терезесіне ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:21 | ||||
| msgid "Switch system controls" | ||||
| msgstr "Жүйелік басқару элементтерін ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:22 | ||||
| #| msgid "Switch system controls" | ||||
| msgid "Switch to previous system control" | ||||
| msgstr "Алдыңғы жүйелік басқару элементіне ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:23 | ||||
| msgid "Switch windows directly" | ||||
| msgstr "Терезелерді тікелей ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:24 | ||||
| msgid "Switch directly to previous window" | ||||
| msgstr "Тікелей алдыңғы терезеге ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:25 | ||||
| msgid "Switch windows of an app directly" | ||||
| msgstr "Қолданба терезелерін тікелей ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:26 | ||||
| #| msgid "Switch windows of an application" | ||||
| msgid "Switch directly to previous window of an app" | ||||
| msgstr "Тікелей қолданбаның алдыңғы терезесіне ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:27 | ||||
| msgid "Switch system controls directly" | ||||
| msgstr "Жүйелік басқару элементтерін тікелей ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:28 | ||||
| #| msgid "Switch system controls" | ||||
| msgid "Switch directly to previous system control" | ||||
| msgstr "Тікелей алдыңғы жүйелік басқару элементіне ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:29 | ||||
| msgid "Hide all normal windows" | ||||
| msgstr "Барлық қалыпты терезелерді жасыру" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:30 | ||||
| msgid "Switch to workspace 1" | ||||
| msgstr "1-ші жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:31 | ||||
| msgid "Switch to workspace 2" | ||||
| msgstr "2-ші жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:32 | ||||
| msgid "Switch to workspace 3" | ||||
| msgstr "3-ші жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:33 | ||||
| msgid "Switch to workspace 4" | ||||
| msgstr "4-ші жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:34 | ||||
| msgid "Switch to last workspace" | ||||
| msgstr "Соңғы жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:35 | ||||
| msgid "Move to workspace left" | ||||
| msgstr "Сол жақтағы жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:36 | ||||
| msgid "Move to workspace right" | ||||
| msgstr "Оң жақтағы жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:37 | ||||
| msgid "Move to workspace above" | ||||
| msgstr "Жоғарыдағы жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-navigation.xml.in.h:38 | ||||
| msgid "Move to workspace below" | ||||
| msgstr "Төмендегі жұмыс орнына ауысу" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:1 | ||||
| msgid "System" | ||||
| msgstr "Жүйе" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:2 | ||||
| msgid "Show the run command prompt" | ||||
| msgstr "Команданы жөнелту сұхбатын көрсету" | ||||
|  | ||||
| #: ../data/50-mutter-system.xml.in.h:3 | ||||
| msgid "Show the activities overview" | ||||
| msgstr "Шолуды көрсету" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:1 | ||||
| msgid "Windows" | ||||
| msgstr "Терезелер" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:2 | ||||
| msgid "Activate the window menu" | ||||
| msgstr "Терезе мәзірін белсендіру" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:3 | ||||
| msgid "Toggle fullscreen mode" | ||||
| msgstr "Толық экран режимін ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:4 | ||||
| msgid "Toggle maximization state" | ||||
| msgstr "Жазық күйін ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:5 | ||||
| msgid "Maximize window" | ||||
| msgstr "Терезені жазық қылу" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:6 | ||||
| msgid "Restore window" | ||||
| msgstr "Терезені қалпына келтіру" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:7 | ||||
| msgid "Toggle shaded state" | ||||
| msgstr "Көлеңкелі күйін ауыстыру" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:8 | ||||
| msgid "Close window" | ||||
| msgstr "Терезені жабу" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:9 | ||||
| msgid "Hide window" | ||||
| msgstr "Терезені жасыру" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:10 | ||||
| msgid "Move window" | ||||
| msgstr "Терезені жылжыту" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:11 | ||||
| msgid "Resize window" | ||||
| msgstr "Терезе өлшемдерін өзгерту" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:12 | ||||
| msgid "Toggle window on all workspaces or one" | ||||
| msgstr "Терезені барлық жұмыс орындарында көрсетуді іске қосу/сөндіру" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:13 | ||||
| msgid "Raise window if covered, otherwise lower it" | ||||
| msgstr "" | ||||
| "Терезе басқалармен үстінен жабылған болса, алдына көтеру, болмаса, " | ||||
| "басқалардың артына апару" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:14 | ||||
| msgid "Raise window above other windows" | ||||
| msgstr "Терезені басқа терезелердің алдына көтеру" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:15 | ||||
| msgid "Lower window below other windows" | ||||
| msgstr "Терезені басқа терезелердің артына апару" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:16 | ||||
| msgid "Maximize window vertically" | ||||
| msgstr "Терезені вертикалды жазық қылу" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:17 | ||||
| msgid "Maximize window horizontally" | ||||
| msgstr "Терезені горизонталды жазық қылу" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:18 | ||||
| msgid "View split on left" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/50-mutter-windows.xml.in.h:19 | ||||
| msgid "View split on right" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/mutter.desktop.in.h:1 | ||||
| msgid "Mutter" | ||||
| msgstr "Mutter" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:1 | ||||
| msgid "Modifier to use for extended window management operations" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:2 | ||||
| msgid "" | ||||
| "This key will initiate the \"overlay\", which is a combination window " | ||||
| "overview and application launching system. The default is intended to be the " | ||||
| "\"Windows key\" on PC hardware. It's expected that this binding either the " | ||||
| "default or set to the empty string." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:3 | ||||
| msgid "Attach modal dialogs" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:4 | ||||
| msgid "" | ||||
| "When true, instead of having independent titlebars, modal dialogs appear " | ||||
| "attached to the titlebar of the parent window and are moved together with " | ||||
| "the parent window." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:5 | ||||
| msgid "Enable edge tiling when dropping windows on screen edges" | ||||
| msgstr "" | ||||
| "Терезелерді экран шеттеріне апарған кезде олардың өлшемдерін өзгертуді іске " | ||||
| "қосу" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:6 | ||||
| msgid "" | ||||
| "If enabled, dropping windows on vertical screen edges maximizes them " | ||||
| "vertically and resizes them horizontally to cover half of the available " | ||||
| "area. Dropping windows on the top screen edge maximizes them completely." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:7 | ||||
| msgid "Workspaces are managed dynamically" | ||||
| msgstr "Жұмыс орындары динамикалы түрде басқарылады" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:8 | ||||
| msgid "" | ||||
| "Determines whether workspaces are managed dynamically or whether there's a " | ||||
| "static number of workspaces (determined by the num-workspaces key in org." | ||||
| "gnome.desktop.wm.preferences)." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:9 | ||||
| msgid "Workspaces only on primary" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:10 | ||||
| msgid "" | ||||
| "Determines whether workspace switching should happen for windows on all " | ||||
| "monitors or only for windows on the primary monitor." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:11 | ||||
| msgid "No tab popup" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:12 | ||||
| msgid "" | ||||
| "Determines whether the use of popup and highlight frame should be disabled " | ||||
| "for window cycling." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:13 | ||||
| msgid "Delay focus changes until the pointer stops moving" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:14 | ||||
| msgid "" | ||||
| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " | ||||
| "the focus will not be changed immediately when entering a window, but only " | ||||
| "after the pointer stops moving." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:15 | ||||
| msgid "Draggable border width" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:16 | ||||
| msgid "" | ||||
| "The amount of total draggable borders. If the theme's visible borders are " | ||||
| "not enough, invisible borders will be added to meet this value." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:17 | ||||
| msgid "Auto maximize nearly monitor sized windows" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:18 | ||||
| msgid "" | ||||
| "If enabled, new windows that are initially the size of the monitor " | ||||
| "automatically get maximized." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:19 | ||||
| msgid "Place new windows in the center" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:20 | ||||
| msgid "" | ||||
| "When true, the new windows will always be put in the center of the active " | ||||
| "screen of the monitor." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:21 | ||||
| msgid "Select window from tab popup" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.gschema.xml.in.h:22 | ||||
| msgid "Cancel tab popup" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 1" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2 | ||||
| #| msgid "Switch to workspace 2" | ||||
| msgid "Switch to VT 2" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3 | ||||
| #| msgid "Switch to workspace 3" | ||||
| msgid "Switch to VT 3" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4 | ||||
| #| msgid "Switch to workspace 4" | ||||
| msgid "Switch to VT 4" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 5" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 6" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 7" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 8" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 9" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 10" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 11" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12 | ||||
| #| msgid "Switch to workspace 1" | ||||
| msgid "Switch to VT 12" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:364 | ||||
| msgid "Built-in display" | ||||
| msgstr "Құрамындағы экран" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:391 | ||||
| msgid "Unknown" | ||||
| msgstr "Белгісіз" | ||||
|  | ||||
| #: ../src/backends/meta-monitor-manager.c:393 | ||||
| #| msgid "Unknown %s" | ||||
| msgid "Unknown Display" | ||||
| msgstr "Белгісіз дисплей" | ||||
|  | ||||
| #. TRANSLATORS: this is a monitor vendor name, followed by a | ||||
| #. * size in inches, like 'Dell 15"' | ||||
| #. | ||||
| #: ../src/backends/meta-monitor-manager.c:401 | ||||
| #, c-format | ||||
| msgid "%s %s" | ||||
| msgstr "%s %s" | ||||
|  | ||||
| #. This probably means that a non-WM compositor like xcompmgr is running; | ||||
| #. * we have no way to get it to exit | ||||
| #: ../src/compositor/compositor.c:456 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Another compositing manager is already running on screen %i on display \"%s" | ||||
| "\"." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/bell.c:185 | ||||
| msgid "Bell event" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/delete.c:127 | ||||
| #, c-format | ||||
| msgid "“%s” is not responding." | ||||
| msgstr "“%s” жауап бермейді." | ||||
|  | ||||
| #: ../src/core/delete.c:129 | ||||
| msgid "Application is not responding." | ||||
| msgstr "Қолданба жауап бермейді." | ||||
|  | ||||
| #: ../src/core/delete.c:134 | ||||
| msgid "" | ||||
| "You may choose to wait a short while for it to continue or force the " | ||||
| "application to quit entirely." | ||||
| msgstr "" | ||||
| "Сіз қолданба өз жұмысын жалғастырғанды күтіп, немесе оны мәжбүрлетіп жаба " | ||||
| "аласыз." | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| msgid "_Wait" | ||||
| msgstr "_Күту" | ||||
|  | ||||
| #: ../src/core/delete.c:141 | ||||
| msgid "_Force Quit" | ||||
| msgstr "_Мәжбүрлі шығу" | ||||
|  | ||||
| #: ../src/core/display.c:562 | ||||
| #, c-format | ||||
| msgid "Failed to open X Window System display '%s'\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/main.c:176 | ||||
| msgid "Disable connection to session manager" | ||||
| msgstr "Сессиялар менеджеріне байланыстарды сөндіру" | ||||
|  | ||||
| #: ../src/core/main.c:182 | ||||
| msgid "Replace the running window manager" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/main.c:188 | ||||
| msgid "Specify session management ID" | ||||
| msgstr "Сессия менеджментінің ID-ін көрсету" | ||||
|  | ||||
| #: ../src/core/main.c:193 | ||||
| msgid "X Display to use" | ||||
| msgstr "Қолданылатын X дисплейі" | ||||
|  | ||||
| #: ../src/core/main.c:199 | ||||
| msgid "Initialize session from savefile" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/main.c:205 | ||||
| msgid "Make X calls synchronous" | ||||
| msgstr "X сервер шақыруларын синхронды қылу" | ||||
|  | ||||
| #: ../src/core/main.c:212 | ||||
| msgid "Run as a wayland compositor" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/main.c:220 | ||||
| msgid "Run as a full display server, rather than nested" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/mutter.c:39 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "mutter %s\n" | ||||
| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" | ||||
| "This is free software; see the source for copying conditions.\n" | ||||
| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " | ||||
| "PARTICULAR PURPOSE.\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/mutter.c:53 | ||||
| msgid "Print version" | ||||
| msgstr "Нұсқа ақпаратын шығару" | ||||
|  | ||||
| #: ../src/core/mutter.c:59 | ||||
| msgid "Mutter plugin to use" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/prefs.c:2004 | ||||
| #, c-format | ||||
| msgid "Workspace %d" | ||||
| msgstr "Жұмыс орны %d" | ||||
|  | ||||
| #: ../src/core/screen.c:525 | ||||
| #, c-format | ||||
| msgid "" | ||||
| "Display \"%s\" already has a window manager; try using the --replace option " | ||||
| "to replace the current window manager." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/screen.c:607 | ||||
| #, c-format | ||||
| msgid "Screen %d on display '%s' is invalid\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/core/util.c:118 | ||||
| msgid "Mutter was compiled without support for verbose mode\n" | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/x11/session.c:1815 | ||||
| msgid "" | ||||
| "These windows do not support "save current setup" and will have to " | ||||
| "be restarted manually next time you log in." | ||||
| msgstr "" | ||||
|  | ||||
| #: ../src/x11/window-props.c:549 | ||||
| #, c-format | ||||
| msgid "%s (on %s)" | ||||
| msgstr "%s (%s жерінде)" | ||||
|  | ||||
| #~ msgid "Window manager: " | ||||
| #~ msgstr "Терезелер басқарушысы:" | ||||
|  | ||||
| #~ msgid "Mi_nimize" | ||||
| #~ msgstr "Қа_йыру" | ||||
|  | ||||
| #~ msgid "Ma_ximize" | ||||
| #~ msgstr "Ж_азық қылу" | ||||
|  | ||||
| #~ msgid "Unma_ximize" | ||||
| #~ msgstr "Жа_зық емес қылу" | ||||
|  | ||||
| #~ msgid "Roll _Up" | ||||
| #~ msgstr "Атауға ж_инау" | ||||
|  | ||||
| #~ msgid "_Unroll" | ||||
| #~ msgstr "Жи_наудан қайтару" | ||||
|  | ||||
| #~ msgid "_Move" | ||||
| #~ msgstr "Жы_лжыту" | ||||
|  | ||||
| #~ msgid "_Resize" | ||||
| #~ msgstr "Ө_лшемін өзгерту" | ||||
|  | ||||
| #~ msgid "Always on _Top" | ||||
| #~ msgstr "Әрқа_шан үстінде" | ||||
|  | ||||
| #~ msgid "_Always on Visible Workspace" | ||||
| #~ msgstr "Әрқашан кө_рініп тұрған жұмыс орнында" | ||||
|  | ||||
| #~ msgid "_Only on This Workspace" | ||||
| #~ msgstr "Тек ос_ы жұмыс орнында" | ||||
|  | ||||
| #~ msgid "Move to Workspace _Left" | ||||
| #~ msgstr "_Сол жақтағы жұмыс орнына ауыстыру" | ||||
|  | ||||
| #~ msgid "Move to Workspace R_ight" | ||||
| #~ msgstr "Оң _жақтағы жұмыс орнына ауыстыру" | ||||
|  | ||||
| #~ msgid "Move to Workspace _Up" | ||||
| #~ msgstr "Жоға_рыдағы жұмыс орнына ауыстыру" | ||||
|  | ||||
| #~ msgid "Move to Workspace _Down" | ||||
| #~ msgstr "Тө_мендегі жұмыс орнына ауыстыру" | ||||
|  | ||||
| #~ msgid "_Close" | ||||
| #~ msgstr "Жа_бу" | ||||
|  | ||||
| #~ msgid "Workspace %d%n" | ||||
| #~ msgstr "Жұмыс орны %d%n" | ||||
|  | ||||
| #~ msgid "Workspace 1_0" | ||||
| #~ msgstr "Жұмыс орны 1_0" | ||||
|  | ||||
| #~ msgid "Workspace %s%d" | ||||
| #~ msgstr "Жұмыс орны %s%d" | ||||
|  | ||||
| #~ msgid "Move to Another _Workspace" | ||||
| #~ msgstr "Басқа жұмыс орнына ж_ылжыту" | ||||
|  | ||||
| #~ msgid "Shift" | ||||
| #~ msgstr "Shift" | ||||
|  | ||||
| #~ msgid "Ctrl" | ||||
| #~ msgstr "Ctrl" | ||||
|  | ||||
| #~ msgid "Alt" | ||||
| #~ msgstr "Alt" | ||||
|  | ||||
| #~ msgid "Meta" | ||||
| #~ msgstr "Meta" | ||||
|  | ||||
| #~ msgid "%d x %d" | ||||
| #~ msgstr "%d x %d" | ||||
							
								
								
									
										3020
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
							
						
						
									
										3020
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										27
									
								
								po/ro.po
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								po/ro.po
									
									
									
									
									
								
							| @@ -1944,33 +1944,6 @@ msgstr "" | ||||
| "Expresiile pentru coordonate %d parsate în %g secunde (o medie de %g " | ||||
| "secunde)\n" | ||||
|  | ||||
| #: ../src/50-mutter-launchers.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Launchers" | ||||
| msgstr "Lansatori" | ||||
|  | ||||
| #: ../src/50-mutter-navigation.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "Navigation" | ||||
| msgstr "Navigare" | ||||
|  | ||||
| #: ../src/50-mutter-screenshot.xml.in.h:1 | ||||
| #, fuzzy | ||||
| #| msgid "Take a screenshot" | ||||
| msgid "Screenshots" | ||||
| msgstr "Capturi de ecran" | ||||
|  | ||||
| #: ../src/50-mutter-system.xml.in.h:1 | ||||
| #, fuzzy | ||||
| msgid "System" | ||||
| msgstr "Sistem" | ||||
|  | ||||
| #: ../src/50-mutter-windows.xml.in.h:1 | ||||
| #, fuzzy | ||||
| #| msgid "/_Windows" | ||||
| msgid "Windows" | ||||
| msgstr "Ferestre" | ||||
|  | ||||
| #~ msgid "Window Management" | ||||
| #~ msgstr "Administrare ferestre" | ||||
|  | ||||
|   | ||||
							
								
								
									
										4631
									
								
								po/sr@latin.po
									
									
									
									
									
								
							
							
						
						
									
										4631
									
								
								po/sr@latin.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1976
									
								
								po/zh_CN.po
									
									
									
									
									
								
							
							
						
						
									
										1976
									
								
								po/zh_CN.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1517
									
								
								po/zh_HK.po
									
									
									
									
									
								
							
							
						
						
									
										1517
									
								
								po/zh_HK.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2406
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
							
						
						
									
										2406
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										15
									
								
								src/50-mutter-windows.xml.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/50-mutter-windows.xml.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <KeyListEntries schema="org.gnome.mutter.keybindings" | ||||
|                 group="system" | ||||
|                 _name="Windows" | ||||
|                 wm_name="Mutter" | ||||
|                 package="mutter"> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-tiled-left" | ||||
|                       _description="View split on left"/> | ||||
|  | ||||
| 	<KeyListEntry name="toggle-tiled-right" | ||||
|                       _description="View split on right"/> | ||||
|  | ||||
| </KeyListEntries> | ||||
|  | ||||
| @@ -1,46 +0,0 @@ | ||||
| # A framework for running scripted tests | ||||
|  | ||||
| if HAVE_WAYLAND | ||||
|  | ||||
| if BUILDOPT_INSTALL_TESTS | ||||
| stackingdir = $(pkgdatadir)/tests/stacking | ||||
| dist_stacking_DATA =				\ | ||||
| 	tests/stacking/basic-x11.metatest	\ | ||||
| 	tests/stacking/basic-wayland.metatest	\ | ||||
| 	tests/stacking/minimized.metatest   	\ | ||||
| 	tests/stacking/mixed-windows.metatest   \ | ||||
| 	tests/stacking/override-redirect.metatest | ||||
|  | ||||
| mutter-all.test: tests/mutter-all.test.in | ||||
| 	$(AM_V_GEN) sed  -e "s|@libexecdir[@]|$(libexecdir)|g"  $< > $@.tmp && mv $@.tmp $@ | ||||
|  | ||||
| installedtestsdir = $(datadir)/installed-tests/mutter | ||||
| installedtests_DATA = mutter-all.test | ||||
|  | ||||
| installedtestsbindir = $(libexecdir)/installed-tests/mutter | ||||
| installedtestsbin_PROGRAMS = mutter-test-client mutter-test-runner | ||||
| else | ||||
| noinst_PROGRAMS += mutter-test-client mutter-test-runner | ||||
| endif | ||||
|  | ||||
| EXTRA_DIST += tests/mutter-all.test.in | ||||
|  | ||||
| mutter_test_client_SOURCES = tests/test-client.c | ||||
| mutter_test_client_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
|  | ||||
| mutter_test_runner_SOURCES = tests/test-runner.c | ||||
| mutter_test_runner_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
|  | ||||
| .PHONY: run-tests | ||||
|  | ||||
| run-tests: mutter-test-client mutter-test-runner | ||||
| 	./mutter-test-runner $(dist_stacking_DATA) | ||||
|  | ||||
| endif | ||||
|  | ||||
| # Some random test programs for bits of the code | ||||
|  | ||||
| testboxes_SOURCES = core/testboxes.c | ||||
| testboxes_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
|  | ||||
| noinst_PROGRAMS += testboxes | ||||
							
								
								
									
										434
									
								
								src/Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										434
									
								
								src/Makefile.am
									
									
									
									
									
								
							| @@ -3,147 +3,55 @@ | ||||
|  | ||||
| lib_LTLIBRARIES = libmutter.la | ||||
|  | ||||
| SUBDIRS=compositor/plugins | ||||
| SUBDIRS=wm-tester tools compositor/plugins | ||||
|  | ||||
| EXTRA_DIST = | ||||
| NULL = | ||||
|  | ||||
| AM_CPPFLAGS = \ | ||||
| 	-DCLUTTER_ENABLE_COMPOSITOR_API					\ | ||||
| 	-DCLUTTER_ENABLE_EXPERIMENTAL_API				\ | ||||
| 	-DCOGL_ENABLE_EXPERIMENTAL_API					\ | ||||
| 	-DCOGL_ENABLE_EXPERIMENTAL_2_0_API                              \ | ||||
| 	-DCLUTTER_DISABLE_DEPRECATION_WARNINGS				\ | ||||
| 	-DCOGL_DISABLE_DEPRECATION_WARNINGS				\ | ||||
| INCLUDES=								\ | ||||
| 	$(MUTTER_CFLAGS)						\ | ||||
| 	$(MUTTER_NATIVE_BACKEND_CFLAGS)					\ | ||||
| 	-I$(builddir)							\ | ||||
| 	-I$(srcdir)							\ | ||||
| 	-I$(srcdir)/backends						\ | ||||
| 	-I$(srcdir)/core						\ | ||||
| 	-I$(srcdir)/ui							\ | ||||
| 	-I$(srcdir)/compositor						\ | ||||
| 	-DMUTTER_LIBEXECDIR=\"$(libexecdir)\"				\ | ||||
| 	-DMUTTER_LOCALEDIR=\"$(localedir)\"				\ | ||||
| 	-DHOST_ALIAS=\"@HOST_ALIAS@\"					\ | ||||
| 	-DMUTTER_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\"		\ | ||||
| 	-DMUTTER_PKGDATADIR=\"$(pkgdatadir)\"				\ | ||||
| 	-DMUTTER_DATADIR=\"$(datadir)\"					\ | ||||
| 	-DG_LOG_DOMAIN=\"mutter\"					\ | ||||
| 	-DSN_API_NOT_YET_FROZEN=1					\ | ||||
| 	-DMUTTER_MAJOR_VERSION=$(MUTTER_MAJOR_VERSION)			\ | ||||
| 	-DMUTTER_MINOR_VERSION=$(MUTTER_MINOR_VERSION)			\ | ||||
| 	-DMUTTER_MICRO_VERSION=$(MUTTER_MICRO_VERSION)			\ | ||||
| 	-DMUTTER_PLUGIN_API_VERSION=$(MUTTER_PLUGIN_API_VERSION)	\ | ||||
| 	-DMUTTER_PKGLIBDIR=\"$(pkglibdir)\"				\ | ||||
| 	-DMUTTER_PLUGIN_DIR=\"$(MUTTER_PLUGIN_DIR)\"			\ | ||||
| 	-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\"			\ | ||||
| 	-DXWAYLAND_PATH=\"$(XWAYLAND_PATH)\"				\ | ||||
| 	$(NULL) | ||||
| 	-DMUTTER_PLUGIN_DIR=\"@MUTTER_PLUGIN_DIR@\"			\ | ||||
| 	-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\" | ||||
|  | ||||
| mutter_built_sources = \ | ||||
| 	$(dbus_idle_built_sources)		\ | ||||
| 	$(dbus_display_config_built_sources)	\ | ||||
| 	$(dbus_login1_built_sources)		\ | ||||
| 	meta/meta-enum-types.h			\ | ||||
| 	meta-enum-types.c			\ | ||||
| 	$(NULL) | ||||
|  | ||||
| if HAVE_WAYLAND | ||||
| mutter_built_sources += \ | ||||
| 	pointer-gestures-protocol.c		\ | ||||
| 	pointer-gestures-server-protocol.h	\ | ||||
| 	gtk-shell-protocol.c			\ | ||||
| 	gtk-shell-server-protocol.h		\ | ||||
| 	xdg-shell-protocol.c			\ | ||||
| 	xdg-shell-server-protocol.h		\ | ||||
| 	$(NULL) | ||||
| endif | ||||
|  | ||||
| wayland_protocols =				\ | ||||
| 	wayland/protocol/pointer-gestures.xml	\ | ||||
| 	wayland/protocol/gtk-shell.xml		\ | ||||
| 	wayland/protocol/xdg-shell.xml		\ | ||||
| 	$(NULL) | ||||
| 	mutter-enum-types.h \ | ||||
| 	mutter-enum-types.c | ||||
|  | ||||
| libmutter_la_SOURCES =				\ | ||||
| 	backends/meta-backend.c			\ | ||||
| 	meta/meta-backend.h			\ | ||||
| 	backends/meta-backend-private.h		\ | ||||
| 	backends/meta-barrier.c			\ | ||||
| 	backends/meta-barrier-private.h		\ | ||||
| 	backends/meta-cursor.c			\ | ||||
| 	backends/meta-cursor.h			\ | ||||
| 	backends/meta-cursor-tracker.c		\ | ||||
| 	backends/meta-cursor-tracker-private.h	\ | ||||
| 	backends/meta-cursor-renderer.c		\ | ||||
| 	backends/meta-cursor-renderer.h		\ | ||||
| 	backends/meta-display-config-shared.h	\ | ||||
| 	backends/meta-idle-monitor.c		\ | ||||
| 	backends/meta-idle-monitor-private.h	\ | ||||
| 	backends/meta-idle-monitor-dbus.c	\ | ||||
| 	backends/meta-idle-monitor-dbus.h	\ | ||||
| 	backends/meta-input-settings.c		\ | ||||
| 	backends/meta-input-settings-private.h	\ | ||||
| 	backends/meta-monitor-config.c		\ | ||||
| 	backends/meta-monitor-config.h		\ | ||||
| 	backends/meta-monitor-manager.c		\ | ||||
| 	meta/meta-monitor-manager.h		\ | ||||
| 	backends/meta-monitor-manager-private.h	\ | ||||
| 	backends/meta-monitor-manager-dummy.c	\ | ||||
| 	backends/meta-monitor-manager-dummy.h	\ | ||||
| 	backends/meta-stage.h			\ | ||||
| 	backends/meta-stage.c			\ | ||||
| 	backends/edid-parse.c			\ | ||||
| 	backends/edid.h				\ | ||||
| 	backends/x11/meta-backend-x11.c			\ | ||||
| 	backends/x11/meta-backend-x11.h			\ | ||||
| 	backends/x11/meta-barrier-x11.c			\ | ||||
| 	backends/x11/meta-barrier-x11.h			\ | ||||
| 	backends/x11/meta-cursor-renderer-x11.c		\ | ||||
| 	backends/x11/meta-cursor-renderer-x11.h		\ | ||||
| 	backends/x11/nested/meta-cursor-renderer-x11-nested.c		\ | ||||
| 	backends/x11/nested/meta-cursor-renderer-x11-nested.h		\ | ||||
| 	backends/x11/meta-idle-monitor-xsync.c		\ | ||||
| 	backends/x11/meta-idle-monitor-xsync.h		\ | ||||
| 	backends/x11/meta-input-settings-x11.c		\ | ||||
| 	backends/x11/meta-input-settings-x11.h		\ | ||||
| 	backends/x11/meta-monitor-manager-xrandr.c	\ | ||||
| 	backends/x11/meta-monitor-manager-xrandr.h	\ | ||||
| 	core/meta-accel-parse.c			\ | ||||
| 	core/meta-accel-parse.h			\ | ||||
| 	meta/barrier.h				\ | ||||
| 	core/async-getprop.c			\ | ||||
| 	core/async-getprop.h			\ | ||||
| 	core/bell.c				\ | ||||
| 	core/bell.h				\ | ||||
| 	core/boxes.c				\ | ||||
| 	core/boxes-private.h			\ | ||||
| 	meta/boxes.h				\ | ||||
| 	compositor/clutter-utils.c		\ | ||||
| 	compositor/clutter-utils.h		\ | ||||
| 	compositor/cogl-utils.c			\ | ||||
| 	compositor/cogl-utils.h			\ | ||||
| 	compositor/compositor.c			\ | ||||
| 	compositor/compositor-private.h		\ | ||||
| 	compositor/meta-background.c		\ | ||||
| 	compositor/meta-background-private.h	\ | ||||
| 	compositor/meta-background-actor.c	\ | ||||
| 	compositor/meta-background-actor-private.h	\ | ||||
| 	compositor/meta-background-image.c	\ | ||||
| 	compositor/meta-background-group.c	\ | ||||
| 	compositor/meta-cullable.c		\ | ||||
| 	compositor/meta-cullable.h		\ | ||||
| 	compositor/meta-dnd-actor.c		\ | ||||
| 	compositor/meta-dnd-actor-private.h	\ | ||||
| 	compositor/meta-feedback-actor.c	\ | ||||
| 	compositor/meta-feedback-actor-private.h	\ | ||||
| 	compositor/meta-module.c		\ | ||||
| 	compositor/meta-module.h		\ | ||||
| 	compositor/meta-plugin.c		\ | ||||
| 	compositor/meta-plugin-manager.c	\ | ||||
| 	compositor/meta-plugin-manager.h	\ | ||||
| 	compositor/meta-shadow-factory.c	\ | ||||
| 	compositor/meta-shadow-factory-private.h	\ | ||||
| 	compositor/meta-shaped-texture.c	\ | ||||
| 	compositor/meta-shaped-texture-private.h 	\ | ||||
| 	compositor/meta-surface-actor.c		\ | ||||
| 	compositor/meta-surface-actor.h		\ | ||||
| 	compositor/meta-surface-actor-x11.c	\ | ||||
| 	compositor/meta-surface-actor-x11.h	\ | ||||
| 	compositor/meta-sync-ring.c		\ | ||||
| 	compositor/meta-sync-ring.h		\ | ||||
| 	compositor/meta-texture-rectangle.c	\ | ||||
| 	compositor/meta-texture-rectangle.h	\ | ||||
| 	compositor/meta-texture-tower.c		\ | ||||
| @@ -153,18 +61,16 @@ libmutter_la_SOURCES =				\ | ||||
| 	compositor/meta-window-group.c		\ | ||||
| 	compositor/meta-window-group.h		\ | ||||
| 	compositor/meta-window-shape.c		\ | ||||
| 	compositor/meta-window-shape.h		\ | ||||
| 	compositor/region-utils.c		\ | ||||
| 	compositor/region-utils.h		\ | ||||
| 	meta/compositor.h			\ | ||||
| 	meta/meta-background.h			\ | ||||
| 	meta/meta-background-actor.h		\ | ||||
| 	meta/meta-background-image.h		\ | ||||
| 	meta/meta-background-group.h		\ | ||||
| 	meta/meta-plugin.h			\ | ||||
| 	meta/meta-shadow-factory.h		\ | ||||
| 	meta/meta-window-actor.h		\ | ||||
| 	meta/meta-window-shape.h		\ | ||||
| 	meta/compositor-mutter.h 		\ | ||||
| 	core/above-tab-keycode.c		\ | ||||
| 	core/constraints.c			\ | ||||
| 	core/constraints.h			\ | ||||
| 	core/core.c				\ | ||||
| @@ -172,19 +78,27 @@ libmutter_la_SOURCES =				\ | ||||
| 	core/display.c				\ | ||||
| 	core/display-private.h			\ | ||||
| 	meta/display.h				\ | ||||
| 	ui/draw-workspace.c			\ | ||||
| 	ui/draw-workspace.h			\ | ||||
| 	core/edge-resistance.c			\ | ||||
| 	core/edge-resistance.h			\ | ||||
| 	core/events.c				\ | ||||
| 	core/events.h				\ | ||||
| 	core/errors.c				\ | ||||
| 	meta/errors.h				\ | ||||
| 	core/eventqueue.c			\ | ||||
| 	core/eventqueue.h			\ | ||||
| 	core/frame.c				\ | ||||
| 	core/frame.h				\ | ||||
| 	core/meta-gesture-tracker.c		\ | ||||
| 	core/meta-gesture-tracker-private.h	\ | ||||
| 	core/group-private.h			\ | ||||
| 	core/group-props.c			\ | ||||
| 	core/group-props.h			\ | ||||
| 	core/group.c				\ | ||||
| 	meta/group.h				\ | ||||
| 	core/iconcache.c			\ | ||||
| 	core/iconcache.h			\ | ||||
| 	core/keybindings.c			\ | ||||
| 	core/keybindings-private.h		\ | ||||
| 	core/main.c				\ | ||||
| 	core/mutter-Xatomtype.h			\ | ||||
| 	core/place.c				\ | ||||
| 	core/place.h				\ | ||||
| 	core/prefs.c				\ | ||||
| @@ -193,127 +107,48 @@ libmutter_la_SOURCES =				\ | ||||
| 	core/screen-private.h			\ | ||||
| 	meta/screen.h				\ | ||||
| 	meta/types.h				\ | ||||
| 	core/restart.c				\ | ||||
| 	core/session.c				\ | ||||
| 	core/session.h				\ | ||||
| 	core/stack.c				\ | ||||
| 	core/stack.h				\ | ||||
| 	core/stack-tracker.c			\ | ||||
| 	core/stack-tracker.h			\ | ||||
| 	core/util.c				\ | ||||
| 	meta/util.h				\ | ||||
| 	core/util-private.h			\ | ||||
| 	core/window-props.c			\ | ||||
| 	core/window-props.h			\ | ||||
| 	core/window.c				\ | ||||
| 	core/window-private.h			\ | ||||
| 	meta/window.h				\ | ||||
| 	core/workspace.c			\ | ||||
| 	core/workspace-private.h		\ | ||||
| 	core/xprops.c				\ | ||||
| 	core/xprops.h				\ | ||||
| 	meta/common.h				\ | ||||
| 	core/core.h				\ | ||||
| 	ui/ui.h					\ | ||||
| 	ui/frames.c				\ | ||||
| 	ui/frames.h				\ | ||||
| 	ui/theme.c				\ | ||||
| 	meta/theme.h				\ | ||||
| 	ui/theme-private.h			\ | ||||
| 	inlinepixbufs.h				\ | ||||
| 	ui/uiframe.c				\ | ||||
| 	ui/uiframe.h				\ | ||||
| 	ui/menu.c				\ | ||||
| 	ui/menu.h				\ | ||||
| 	ui/metaaccellabel.c			\ | ||||
| 	ui/metaaccellabel.h			\ | ||||
| 	ui/resizepopup.c			\ | ||||
| 	ui/resizepopup.h			\ | ||||
| 	ui/tabpopup.c				\ | ||||
| 	ui/tabpopup.h				\ | ||||
| 	ui/tile-preview.c			\ | ||||
| 	ui/tile-preview.h			\ | ||||
| 	ui/ui.c					\ | ||||
| 	x11/atomnames.h				\ | ||||
| 	x11/events.c				\ | ||||
| 	x11/events.h				\ | ||||
| 	x11/group-private.h			\ | ||||
| 	x11/group-props.c			\ | ||||
| 	x11/group-props.h			\ | ||||
| 	x11/group.c				\ | ||||
| 	meta/group.h				\ | ||||
| 	x11/iconcache.c				\ | ||||
| 	x11/iconcache.h				\ | ||||
| 	x11/session.c				\ | ||||
| 	x11/session.h				\ | ||||
| 	x11/window-props.c			\ | ||||
| 	x11/window-props.h			\ | ||||
| 	x11/window-x11.c			\ | ||||
| 	x11/window-x11.h			\ | ||||
| 	x11/window-x11-private.h		\ | ||||
| 	x11/xprops.c				\ | ||||
| 	x11/xprops.h				\ | ||||
| 	x11/mutter-Xatomtype.h			\ | ||||
| 	$(NULL) | ||||
| 	$(mutter_built_sources) | ||||
|  | ||||
| if HAVE_WAYLAND | ||||
| libmutter_la_SOURCES +=				\ | ||||
| 	compositor/meta-surface-actor-wayland.c	\ | ||||
| 	compositor/meta-surface-actor-wayland.h	\ | ||||
| 	wayland/meta-wayland.c			\ | ||||
| 	wayland/meta-wayland.h			\ | ||||
| 	wayland/meta-wayland-private.h		\ | ||||
| 	wayland/meta-xwayland.c			\ | ||||
| 	wayland/meta-xwayland.h			\ | ||||
| 	wayland/meta-xwayland-selection.c	\ | ||||
| 	wayland/meta-xwayland-selection-private.h	\ | ||||
| 	wayland/meta-xwayland-private.h		\ | ||||
| 	wayland/meta-wayland-buffer.c      	\ | ||||
| 	wayland/meta-wayland-buffer.h      	\ | ||||
| 	wayland/meta-wayland-region.c      	\ | ||||
| 	wayland/meta-wayland-region.h      	\ | ||||
| 	wayland/meta-wayland-data-device.c      \ | ||||
| 	wayland/meta-wayland-data-device.h      \ | ||||
| 	wayland/meta-wayland-data-device-private.h	\ | ||||
| 	wayland/meta-wayland-pointer-gestures.c	\ | ||||
| 	wayland/meta-wayland-pointer-gestures.h	\ | ||||
| 	wayland/meta-wayland-pointer-gesture-swipe.c	\ | ||||
| 	wayland/meta-wayland-pointer-gesture-swipe.h	\ | ||||
| 	wayland/meta-wayland-pointer-gesture-pinch.c	\ | ||||
| 	wayland/meta-wayland-pointer-gesture-pinch.h	\ | ||||
| 	wayland/meta-wayland-keyboard.c		\ | ||||
| 	wayland/meta-wayland-keyboard.h		\ | ||||
| 	wayland/meta-wayland-pointer.c		\ | ||||
| 	wayland/meta-wayland-pointer.h		\ | ||||
| 	wayland/meta-wayland-popup.c		\ | ||||
| 	wayland/meta-wayland-popup.h		\ | ||||
| 	wayland/meta-wayland-seat.c		\ | ||||
| 	wayland/meta-wayland-seat.h		\ | ||||
| 	wayland/meta-wayland-touch.c		\ | ||||
| 	wayland/meta-wayland-touch.h		\ | ||||
| 	wayland/meta-wayland-surface.c		\ | ||||
| 	wayland/meta-wayland-surface.h		\ | ||||
| 	wayland/meta-wayland-types.h		\ | ||||
| 	wayland/meta-wayland-versions.h		\ | ||||
| 	wayland/meta-wayland-outputs.c		\ | ||||
| 	wayland/meta-wayland-outputs.h		\ | ||||
| 	wayland/meta-window-wayland.c		\ | ||||
| 	wayland/meta-window-wayland.h		\ | ||||
| 	$(NULL) | ||||
| endif | ||||
|  | ||||
| if HAVE_NATIVE_BACKEND | ||||
| libmutter_la_SOURCES +=					\ | ||||
| 	backends/native/meta-backend-native.c		\ | ||||
| 	backends/native/meta-backend-native.h		\ | ||||
| 	backends/native/meta-backend-native-private.h	\ | ||||
| 	backends/native/meta-barrier-native.c		\ | ||||
| 	backends/native/meta-barrier-native.h		\ | ||||
| 	backends/native/meta-cursor-renderer-native.c	\ | ||||
| 	backends/native/meta-cursor-renderer-native.h	\ | ||||
| 	backends/native/meta-idle-monitor-native.c	\ | ||||
| 	backends/native/meta-idle-monitor-native.h	\ | ||||
| 	backends/native/meta-input-settings-native.c	\ | ||||
| 	backends/native/meta-input-settings-native.h	\ | ||||
| 	backends/native/meta-monitor-manager-kms.c	\ | ||||
| 	backends/native/meta-monitor-manager-kms.h	\ | ||||
| 	backends/native/meta-launcher.c			\ | ||||
| 	backends/native/meta-launcher.h			\ | ||||
| 	backends/native/dbus-utils.c			\ | ||||
| 	backends/native/dbus-utils.h			\ | ||||
| 	$(NULL) | ||||
| endif | ||||
|  | ||||
| nodist_libmutter_la_SOURCES = $(mutter_built_sources) | ||||
|  | ||||
| libmutter_la_LDFLAGS = -no-undefined -export-symbols-regex "^(meta|ag)_.*" | ||||
| libmutter_la_LIBADD  = $(MUTTER_LIBS) $(MUTTER_NATIVE_BACKEND_LIBS) | ||||
| libmutter_la_LDFLAGS = -no-undefined | ||||
| libmutter_la_LIBADD  = $(MUTTER_LIBS) | ||||
|  | ||||
| # Headers installed for plugins; introspected information will | ||||
| # be extracted into Mutter-<version>.gir | ||||
| libmutterinclude_headers =			\ | ||||
| 	meta/barrier.h				\ | ||||
| libmutterinclude_base_headers =		\ | ||||
| 	meta/boxes.h				\ | ||||
| 	meta/common.h				\ | ||||
| 	meta/compositor-mutter.h		\ | ||||
| @@ -323,57 +158,34 @@ libmutterinclude_headers =			\ | ||||
| 	meta/group.h				\ | ||||
| 	meta/keybindings.h			\ | ||||
| 	meta/main.h				\ | ||||
| 	meta/meta-backend.h			\ | ||||
| 	meta/meta-background.h			\ | ||||
| 	meta/meta-background-actor.h		\ | ||||
| 	meta/meta-background-image.h		\ | ||||
| 	meta/meta-background-group.h		\ | ||||
| 	meta/meta-cursor-tracker.h		\ | ||||
| 	meta/meta-idle-monitor.h		\ | ||||
| 	meta/meta-plugin.h			\ | ||||
| 	meta/meta-monitor-manager.h		\ | ||||
| 	meta/meta-shaped-texture.h		\ | ||||
| 	meta/meta-shadow-factory.h		\ | ||||
| 	meta/meta-window-actor.h		\ | ||||
| 	meta/meta-window-shape.h		\ | ||||
| 	meta/prefs.h				\ | ||||
| 	meta/screen.h				\ | ||||
| 	meta/theme.h				\ | ||||
| 	meta/types.h				\ | ||||
| 	meta/util.h				\ | ||||
| 	meta/window.h				\ | ||||
| 	meta/workspace.h			\ | ||||
| 	$(NULL) | ||||
| 	meta/workspace.h | ||||
|  | ||||
| libmutterinclude_built_headers =		\ | ||||
| 	meta/meta-version.h			\ | ||||
| 	meta/meta-enum-types.h			\ | ||||
| 	$(NULL) | ||||
|  | ||||
| libmutterinclude_base_headers =			\ | ||||
| 	$(libmutterinclude_headers)		\ | ||||
| 	$(libmutterinclude_built_headers) | ||||
| # Excluded from scanning for introspection but installed | ||||
| # atomnames.h: macros cause problems for scanning process | ||||
| libmutterinclude_extra_headers =		\ | ||||
| 	meta/atomnames.h | ||||
|  | ||||
| libmutterincludedir = $(includedir)/mutter/meta | ||||
|  | ||||
| libmutterinclude_HEADERS =			\ | ||||
| 	$(libmutterinclude_headers) | ||||
|  | ||||
| nodist_libmutterinclude_HEADERS =		\ | ||||
| 	$(libmutterinclude_built_headers) | ||||
| 	$(libmutterinclude_base_headers)	\ | ||||
| 	$(libmutterinclude_extra_headers) | ||||
|  | ||||
| bin_PROGRAMS=mutter | ||||
| noinst_PROGRAMS= | ||||
|  | ||||
| mutter_SOURCES = core/mutter.c | ||||
| mutter_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
|  | ||||
| libexec_PROGRAMS = mutter-restart-helper | ||||
| mutter_restart_helper_SOURCES = core/restart-helper.c | ||||
| mutter_restart_helper_LDADD = $(MUTTER_LIBS) | ||||
|  | ||||
| include Makefile-tests.am | ||||
|  | ||||
| if HAVE_INTROSPECTION | ||||
| include $(INTROSPECTION_MAKEFILE) | ||||
|  | ||||
| @@ -395,93 +207,105 @@ typelib_DATA = Meta-$(api_version).typelib | ||||
| INTROSPECTION_GIRS = Meta-$(api_version).gir | ||||
|  | ||||
| Meta-$(api_version).gir: libmutter.la | ||||
| @META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 Cogl-1.0 | ||||
| @META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0 | ||||
| @META_GIR@_EXPORT_PACKAGES = libmutter | ||||
| @META_GIR@_CFLAGS = $(AM_CPPFLAGS) | ||||
| @META_GIR@_CFLAGS = $(INCLUDES) | ||||
| @META_GIR@_LIBS = libmutter.la | ||||
| @META_GIR@_FILES =				\ | ||||
| 	mutter-enum-types.h			\ | ||||
| 	$(libmutterinclude_base_headers)	\ | ||||
| 	$(filter %.c,$(libmutter_la_SOURCES) $(nodist_libmutter_la_SOURCES)) | ||||
| 	$(filter %.c,$(libmutter_la_SOURCES)) | ||||
| @META_GIR@_SCANNERFLAGS = --warn-all --warn-error | ||||
|  | ||||
| endif | ||||
|  | ||||
| dbus_idle_built_sources = meta-dbus-idle-monitor.c meta-dbus-idle-monitor.h | ||||
| testboxes_SOURCES = core/testboxes.c | ||||
| testasyncgetprop_SOURCES = core/testasyncgetprop.c | ||||
|  | ||||
| noinst_PROGRAMS=testboxes testasyncgetprop | ||||
|  | ||||
| testboxes_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
| testasyncgetprop_LDADD = $(MUTTER_LIBS) libmutter.la | ||||
|  | ||||
| @INTLTOOL_DESKTOP_RULE@ | ||||
|  | ||||
| desktopfilesdir=$(datadir)/applications | ||||
| desktopfiles_in_files=mutter.desktop.in | ||||
| desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop) | ||||
| desktopfiles_DATA = $(desktopfiles_files) | ||||
|  | ||||
| wmpropertiesdir=$(datadir)/gnome/wm-properties | ||||
| wmproperties_in_files=mutter-wm.desktop.in | ||||
| wmproperties_files=$(wmproperties_in_files:.desktop.in=.desktop) | ||||
| wmproperties_DATA = $(wmproperties_files) | ||||
|  | ||||
| xmldir       = @GNOME_KEYBINDINGS_KEYSDIR@ | ||||
| xml_in_files = \ | ||||
|         50-mutter-windows.xml.in | ||||
| xml_DATA     = $(xml_in_files:.xml.in=.xml) | ||||
|  | ||||
| gsettings_SCHEMAS = org.gnome.mutter.gschema.xml | ||||
| @INTLTOOL_XML_NOMERGE_RULE@ | ||||
| @GSETTINGS_RULES@ | ||||
|  | ||||
| convertdir = $(datadir)/GConf/gsettings | ||||
| convert_DATA = mutter-schemas.convert | ||||
|  | ||||
| IMAGES=stock_maximize.png stock_minimize.png stock_delete.png | ||||
| VARIABLES=stock_maximize_data $(srcdir)/stock_maximize.png \ | ||||
|           stock_minimize_data $(srcdir)/stock_minimize.png \ | ||||
|           stock_delete_data $(srcdir)/stock_delete.png | ||||
|  | ||||
| BUILT_SOURCES = inlinepixbufs.h | ||||
| CLEANFILES =					\ | ||||
| 	inlinepixbufs.h				\ | ||||
| 	mutter.desktop				\ | ||||
| 	mutter-wm.desktop			\ | ||||
| 	org.gnome.mutter.gschema.xml		\ | ||||
| 	$(xml_DATA)				\ | ||||
| 	$(mutter_built_sources)			\ | ||||
| 	$(typelib_DATA)				\ | ||||
| 	$(gir_DATA) | ||||
|  | ||||
| DISTCLEANFILES = 				\ | ||||
| 	$(libmutterinclude_built_headers) | ||||
| inlinepixbufs.h: $(IMAGES) | ||||
| 	$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h | ||||
|  | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| pkgconfig_DATA = libmutter.pc | ||||
|  | ||||
| EXTRA_DIST +=					\ | ||||
| 	$(wayland_protocols)			\ | ||||
| 	libmutter.pc.in				\ | ||||
| 	meta-enum-types.h.in			\ | ||||
| 	meta-enum-types.c.in			\ | ||||
| 	org.freedesktop.login1.xml		\ | ||||
| 	org.gnome.Mutter.DisplayConfig.xml	\ | ||||
| 	org.gnome.Mutter.IdleMonitor.xml	\ | ||||
| 	$(NULL) | ||||
| pkgconfig_DATA = libmutter.pc mutter-plugins.pc | ||||
|  | ||||
| BUILT_SOURCES =					\ | ||||
| 	$(mutter_built_sources)			\ | ||||
| 	$(libmutterinclude_built_headers) | ||||
| EXTRA_DIST=$(desktopfiles_files) 	\ | ||||
| 	$(wmproperties_files)		\ | ||||
| 	$(IMAGES) 			\ | ||||
| 	$(desktopfiles_in_files)	\ | ||||
| 	$(wmproperties_in_files)	\ | ||||
| 	$(xml_in_files)			\ | ||||
| 	org.gnome.mutter.gschema.xml.in \ | ||||
| 	mutter-schemas.convert \ | ||||
| 	libmutter.pc.in \ | ||||
| 	mutter-plugins.pc.in  \ | ||||
| 	mutter-enum-types.h.in \ | ||||
| 	mutter-enum-types.c.in | ||||
|  | ||||
| MUTTER_STAMP_FILES = stamp-meta-enum-types.h | ||||
| BUILT_SOURCES += $(mutter_built_sources) | ||||
| MUTTER_STAMP_FILES = stamp-mutter-enum-types.h | ||||
| CLEANFILES += $(MUTTER_STAMP_FILES) | ||||
|  | ||||
| meta/meta-enum-types.h: stamp-meta-enum-types.h Makefile | ||||
| mutter-enum-types.h: stamp-mutter-enum-types.h Makefile | ||||
| 	@true | ||||
| stamp-meta-enum-types.h: $(libmutterinclude_headers) meta-enum-types.h.in | ||||
| stamp-mutter-enum-types.h: $(libmutterinclude_base_headers) mutter-enum-types.h.in | ||||
| 	$(AM_V_GEN) ( cd $(srcdir) && \ | ||||
| 	  $(GLIB_MKENUMS) \ | ||||
| 	    --template meta-enum-types.h.in \ | ||||
| 	    --template mutter-enum-types.h.in \ | ||||
| 	  $(libmutterinclude_base_headers) ) >> xgen-teth && \ | ||||
| 	(cmp -s xgen-teth meta/meta-enum-types.h || cp xgen-teth meta/meta-enum-types.h) && \ | ||||
| 	(cmp -s xgen-teth mutter-enum-types.h || cp xgen-teth mutter-enum-types.h) && \ | ||||
| 	rm -f xgen-teth && \ | ||||
| 	echo timestamp > $(@F) | ||||
|  | ||||
| meta-enum-types.c: stamp-meta-enum-types.h meta-enum-types.c.in | ||||
| mutter-enum-types.c: stamp-mutter-enum-types.h mutter-enum-types.c.in | ||||
| 	  $(AM_V_GEN) ( cd $(srcdir) && \ | ||||
| 	  $(GLIB_MKENUMS) \ | ||||
| 	    --template meta-enum-types.c.in \ | ||||
| 	    --template mutter-enum-types.c.in \ | ||||
| 	  $(libmutterinclude_base_headers) ) >> xgen-tetc && \ | ||||
| 	cp xgen-tetc meta-enum-types.c && \ | ||||
| 	cp xgen-tetc mutter-enum-types.c && \ | ||||
| 	rm -f xgen-tetc | ||||
|  | ||||
| dbus_display_config_built_sources = meta-dbus-display-config.c meta-dbus-display-config.h | ||||
|  | ||||
| $(dbus_display_config_built_sources) : Makefile.am org.gnome.Mutter.DisplayConfig.xml | ||||
| 	$(AM_V_GEN)gdbus-codegen							\ | ||||
| 		--interface-prefix org.gnome.Mutter					\ | ||||
| 		--c-namespace MetaDBus							\ | ||||
| 		--generate-c-code meta-dbus-display-config				\ | ||||
| 		$(srcdir)/org.gnome.Mutter.DisplayConfig.xml | ||||
|  | ||||
| $(dbus_idle_built_sources) : Makefile.am org.gnome.Mutter.IdleMonitor.xml | ||||
| 	$(AM_V_GEN)gdbus-codegen							\ | ||||
| 		--interface-prefix org.gnome.Mutter					\ | ||||
| 		--c-namespace MetaDBus							\ | ||||
| 		--generate-c-code meta-dbus-idle-monitor				\ | ||||
| 		--c-generate-object-manager						\ | ||||
| 		$(srcdir)/org.gnome.Mutter.IdleMonitor.xml | ||||
|  | ||||
| dbus_login1_built_sources = meta-dbus-login1.c meta-dbus-login1.h | ||||
|  | ||||
| $(dbus_login1_built_sources) : Makefile.am org.freedesktop.login1.xml | ||||
| 	$(AM_V_GEN)gdbus-codegen							\ | ||||
| 		--interface-prefix org.freedesktop.login1				\ | ||||
| 		--c-namespace Login1							\ | ||||
| 		--generate-c-code meta-dbus-login1					\ | ||||
| 		$(srcdir)/org.freedesktop.login1.xml | ||||
|  | ||||
| %-protocol.c : $(srcdir)/wayland/protocol/%.xml | ||||
| 	$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@ | ||||
| %-server-protocol.h : $(srcdir)/wayland/protocol/%.xml | ||||
| 	$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@ | ||||
|   | ||||
| @@ -1,539 +0,0 @@ | ||||
| /* | ||||
|  * Copyright 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 | ||||
|  * on the rights to use, copy, modify, merge, publish, distribute, sub | ||||
|  * license, 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 (including the next | ||||
|  * paragraph) 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 NON-INFRINGEMENT.  IN NO EVENT SHALL | ||||
|  * THE AUTHORS 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. | ||||
|  */ | ||||
|  | ||||
| /* Author: Soren Sandmann <sandmann@redhat.com> */ | ||||
|  | ||||
| #include "edid.h" | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <math.h> | ||||
| #include <glib.h> | ||||
|  | ||||
| static int | ||||
| get_bit (int in, int bit) | ||||
| { | ||||
|   return (in & (1 << bit)) >> bit; | ||||
| } | ||||
|  | ||||
| static int | ||||
| get_bits (int in, int begin, int end) | ||||
| { | ||||
|   int mask = (1 << (end - begin + 1)) - 1; | ||||
|  | ||||
|   return (in >> begin) & mask; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_header (const uchar *edid) | ||||
| { | ||||
|   if (memcmp (edid, "\x00\xff\xff\xff\xff\xff\xff\x00", 8) == 0) | ||||
|     return TRUE; | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_vendor_and_product_identification (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   int is_model_year; | ||||
|  | ||||
|   /* Manufacturer Code */ | ||||
|   info->manufacturer_code[0]  = get_bits (edid[0x08], 2, 6); | ||||
|   info->manufacturer_code[1]  = get_bits (edid[0x08], 0, 1) << 3; | ||||
|   info->manufacturer_code[1] |= get_bits (edid[0x09], 5, 7); | ||||
|   info->manufacturer_code[2]  = get_bits (edid[0x09], 0, 4); | ||||
|   info->manufacturer_code[3]  = '\0'; | ||||
|  | ||||
|   info->manufacturer_code[0] += 'A' - 1; | ||||
|   info->manufacturer_code[1] += 'A' - 1; | ||||
|   info->manufacturer_code[2] += 'A' - 1; | ||||
|  | ||||
|   /* Product Code */ | ||||
|   info->product_code = edid[0x0b] << 8 | edid[0x0a]; | ||||
|  | ||||
|   /* Serial Number */ | ||||
|   info->serial_number = | ||||
|     edid[0x0c] | edid[0x0d] << 8 | edid[0x0e] << 16 | edid[0x0f] << 24; | ||||
|  | ||||
|   /* Week and Year */ | ||||
|   is_model_year = FALSE; | ||||
|   switch (edid[0x10]) | ||||
|     { | ||||
|     case 0x00: | ||||
|       info->production_week = -1; | ||||
|       break; | ||||
|  | ||||
|     case 0xff: | ||||
|       info->production_week = -1; | ||||
|       is_model_year = TRUE; | ||||
|       break; | ||||
|  | ||||
|     default: | ||||
|       info->production_week = edid[0x10]; | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|   if (is_model_year) | ||||
|     { | ||||
|       info->production_year = -1; | ||||
|       info->model_year = 1990 + edid[0x11]; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       info->production_year = 1990 + edid[0x11]; | ||||
|       info->model_year = -1; | ||||
|     } | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_edid_version (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   info->major_version = edid[0x12]; | ||||
|   info->minor_version = edid[0x13]; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_display_parameters (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   /* Digital vs Analog */ | ||||
|   info->is_digital = get_bit (edid[0x14], 7); | ||||
|  | ||||
|   if (info->is_digital) | ||||
|     { | ||||
|       int bits; | ||||
|  | ||||
|       static const int bit_depth[8] = | ||||
|         { | ||||
|           -1, 6, 8, 10, 12, 14, 16, -1 | ||||
|         }; | ||||
|  | ||||
|       static const Interface interfaces[6] = | ||||
|         { | ||||
|           UNDEFINED, DVI, HDMI_A, HDMI_B, MDDI, DISPLAY_PORT | ||||
|         }; | ||||
|  | ||||
|       bits = get_bits (edid[0x14], 4, 6); | ||||
|       info->connector.digital.bits_per_primary = bit_depth[bits]; | ||||
|  | ||||
|       bits = get_bits (edid[0x14], 0, 3); | ||||
|  | ||||
|       if (bits <= 5) | ||||
|         info->connector.digital.interface = interfaces[bits]; | ||||
|       else | ||||
|         info->connector.digital.interface = UNDEFINED; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       int bits = get_bits (edid[0x14], 5, 6); | ||||
|  | ||||
|       static const double levels[][3] = | ||||
|         { | ||||
|           { 0.7,   0.3,    1.0 }, | ||||
|           { 0.714, 0.286,  1.0 }, | ||||
|           { 1.0,   0.4,    1.4 }, | ||||
|           { 0.7,   0.0,    0.7 }, | ||||
|         }; | ||||
|  | ||||
|       info->connector.analog.video_signal_level = levels[bits][0]; | ||||
|       info->connector.analog.sync_signal_level = levels[bits][1]; | ||||
|       info->connector.analog.total_signal_level = levels[bits][2]; | ||||
|  | ||||
|       info->connector.analog.blank_to_black = get_bit (edid[0x14], 4); | ||||
|  | ||||
|       info->connector.analog.separate_hv_sync = get_bit (edid[0x14], 3); | ||||
|       info->connector.analog.composite_sync_on_h = get_bit (edid[0x14], 2); | ||||
|       info->connector.analog.composite_sync_on_green = get_bit (edid[0x14], 1); | ||||
|  | ||||
|       info->connector.analog.serration_on_vsync = get_bit (edid[0x14], 0); | ||||
|     } | ||||
|  | ||||
|   /* Screen Size / Aspect Ratio */ | ||||
|   if (edid[0x15] == 0 && edid[0x16] == 0) | ||||
|     { | ||||
|       info->width_mm = -1; | ||||
|       info->height_mm = -1; | ||||
|       info->aspect_ratio = -1.0; | ||||
|     } | ||||
|   else if (edid[0x16] == 0) | ||||
|     { | ||||
|       info->width_mm = -1; | ||||
|       info->height_mm = -1; | ||||
|       info->aspect_ratio = 100.0 / (edid[0x15] + 99); | ||||
|     } | ||||
|   else if (edid[0x15] == 0) | ||||
|     { | ||||
|       info->width_mm = -1; | ||||
|       info->height_mm = -1; | ||||
|       info->aspect_ratio = 100.0 / (edid[0x16] + 99); | ||||
|       info->aspect_ratio = 1/info->aspect_ratio; /* portrait */ | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       info->width_mm = 10 * edid[0x15]; | ||||
|       info->height_mm = 10 * edid[0x16]; | ||||
|     } | ||||
|  | ||||
|   /* Gamma */ | ||||
|   if (edid[0x17] == 0xFF) | ||||
|     info->gamma = -1.0; | ||||
|   else | ||||
|     info->gamma = (edid[0x17] + 100.0) / 100.0; | ||||
|  | ||||
|   /* Features */ | ||||
|   info->standby = get_bit (edid[0x18], 7); | ||||
|   info->suspend = get_bit (edid[0x18], 6); | ||||
|   info->active_off = get_bit (edid[0x18], 5); | ||||
|  | ||||
|   if (info->is_digital) | ||||
|     { | ||||
|       info->connector.digital.rgb444 = TRUE; | ||||
|       if (get_bit (edid[0x18], 3)) | ||||
|         info->connector.digital.ycrcb444 = 1; | ||||
|       if (get_bit (edid[0x18], 4)) | ||||
|         info->connector.digital.ycrcb422 = 1; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       int bits = get_bits (edid[0x18], 3, 4); | ||||
|       ColorType color_type[4] = | ||||
|         { | ||||
|           MONOCHROME, RGB, OTHER_COLOR, UNDEFINED_COLOR | ||||
|         }; | ||||
|  | ||||
|       info->connector.analog.color_type = color_type[bits]; | ||||
|     } | ||||
|  | ||||
|   info->srgb_is_standard = get_bit (edid[0x18], 2); | ||||
|  | ||||
|   /* In 1.3 this is called "has preferred timing" */ | ||||
|   info->preferred_timing_includes_native = get_bit (edid[0x18], 1); | ||||
|  | ||||
|   /* FIXME: In 1.3 this indicates whether the monitor accepts GTF */ | ||||
|   info->continuous_frequency = get_bit (edid[0x18], 0); | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static double | ||||
| decode_fraction (int high, int low) | ||||
| { | ||||
|   double result = 0.0; | ||||
|   int i; | ||||
|  | ||||
|   high = (high << 2) | low; | ||||
|  | ||||
|   for (i = 0; i < 10; ++i) | ||||
|     result += get_bit (high, i) * pow (2, i - 10); | ||||
|  | ||||
|   return result; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_color_characteristics (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   info->red_x = decode_fraction (edid[0x1b], get_bits (edid[0x19], 6, 7)); | ||||
|   info->red_y = decode_fraction (edid[0x1c], get_bits (edid[0x19], 5, 4)); | ||||
|   info->green_x = decode_fraction (edid[0x1d], get_bits (edid[0x19], 2, 3)); | ||||
|   info->green_y = decode_fraction (edid[0x1e], get_bits (edid[0x19], 0, 1)); | ||||
|   info->blue_x = decode_fraction (edid[0x1f], get_bits (edid[0x1a], 6, 7)); | ||||
|   info->blue_y = decode_fraction (edid[0x20], get_bits (edid[0x1a], 4, 5)); | ||||
|   info->white_x = decode_fraction (edid[0x21], get_bits (edid[0x1a], 2, 3)); | ||||
|   info->white_y = decode_fraction (edid[0x22], get_bits (edid[0x1a], 0, 1)); | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_established_timings (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   static const Timing established[][8] = | ||||
|     { | ||||
|       { | ||||
|         { 800, 600, 60 }, | ||||
|         { 800, 600, 56 }, | ||||
|         { 640, 480, 75 }, | ||||
|         { 640, 480, 72 }, | ||||
|         { 640, 480, 67 }, | ||||
|         { 640, 480, 60 }, | ||||
|         { 720, 400, 88 }, | ||||
|         { 720, 400, 70 } | ||||
|       }, | ||||
|       { | ||||
|         { 1280, 1024, 75 }, | ||||
|         { 1024, 768, 75 }, | ||||
|         { 1024, 768, 70 }, | ||||
|         { 1024, 768, 60 }, | ||||
|         { 1024, 768, 87 }, | ||||
|         { 832, 624, 75 }, | ||||
|         { 800, 600, 75 }, | ||||
|         { 800, 600, 72 } | ||||
| 	}, | ||||
|       { | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 0, 0, 0 }, | ||||
|         { 1152, 870, 75 } | ||||
|       }, | ||||
|     }; | ||||
|  | ||||
|   int i, j, idx; | ||||
|  | ||||
|   idx = 0; | ||||
|   for (i = 0; i < 3; ++i) | ||||
|     { | ||||
|       for (j = 0; j < 8; ++j) | ||||
| 	{ | ||||
|           int byte = edid[0x23 + i]; | ||||
|  | ||||
|           if (get_bit (byte, j) && established[i][j].frequency != 0) | ||||
|             info->established[idx++] = established[i][j]; | ||||
| 	} | ||||
|     } | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_standard_timings (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   int i; | ||||
|  | ||||
|   for (i = 0; i < 8; i++) | ||||
|     { | ||||
|       int first = edid[0x26 + 2 * i]; | ||||
|       int second = edid[0x27 + 2 * i]; | ||||
|  | ||||
|       if (first != 0x01 && second != 0x01) | ||||
| 	{ | ||||
|           int w = 8 * (first + 31); | ||||
|           int h = 0; | ||||
|  | ||||
|           switch (get_bits (second, 6, 7)) | ||||
|             { | ||||
| 	    case 0x00: h = (w / 16) * 10; break; | ||||
| 	    case 0x01: h = (w / 4) * 3; break; | ||||
| 	    case 0x02: h = (w / 5) * 4; break; | ||||
| 	    case 0x03: h = (w / 16) * 9; break; | ||||
| 	    } | ||||
|  | ||||
|           info->standard[i].width = w; | ||||
|           info->standard[i].height = h; | ||||
|           info->standard[i].frequency = get_bits (second, 0, 5) + 60; | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| decode_lf_string (const uchar *s, int n_chars, char *result) | ||||
| { | ||||
|   int i; | ||||
|   for (i = 0; i < n_chars; ++i) | ||||
|     { | ||||
|       if (s[i] == 0x0a) | ||||
| 	{ | ||||
|           *result++ = '\0'; | ||||
|           break; | ||||
| 	} | ||||
|       else if (s[i] == 0x00) | ||||
| 	{ | ||||
|           /* Convert embedded 0's to spaces */ | ||||
|           *result++ = ' '; | ||||
| 	} | ||||
|       else | ||||
| 	{ | ||||
|           *result++ = s[i]; | ||||
| 	} | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| decode_display_descriptor (const uchar *desc, | ||||
| 			   MonitorInfo *info) | ||||
| { | ||||
|   switch (desc[0x03]) | ||||
|     { | ||||
|     case 0xFC: | ||||
|       decode_lf_string (desc + 5, 13, info->dsc_product_name); | ||||
|       break; | ||||
|     case 0xFF: | ||||
|       decode_lf_string (desc + 5, 13, info->dsc_serial_number); | ||||
|       break; | ||||
|     case 0xFE: | ||||
|       decode_lf_string (desc + 5, 13, info->dsc_string); | ||||
|       break; | ||||
|     case 0xFD: | ||||
|       /* Range Limits */ | ||||
|       break; | ||||
|     case 0xFB: | ||||
|       /* Color Point */ | ||||
|       break; | ||||
|     case 0xFA: | ||||
|       /* Timing Identifications */ | ||||
|       break; | ||||
|     case 0xF9: | ||||
|       /* Color Management */ | ||||
|       break; | ||||
|     case 0xF8: | ||||
|       /* Timing Codes */ | ||||
|       break; | ||||
|     case 0xF7: | ||||
|       /* Established Timings */ | ||||
|       break; | ||||
|     case 0x10: | ||||
|       break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| decode_detailed_timing (const uchar *timing, | ||||
| 			DetailedTiming *detailed) | ||||
| { | ||||
|   int bits; | ||||
|   StereoType stereo[] = | ||||
|     { | ||||
|       NO_STEREO, NO_STEREO, FIELD_RIGHT, FIELD_LEFT, | ||||
|       TWO_WAY_RIGHT_ON_EVEN, TWO_WAY_LEFT_ON_EVEN, | ||||
|       FOUR_WAY_INTERLEAVED, SIDE_BY_SIDE | ||||
|     }; | ||||
|  | ||||
|   detailed->pixel_clock = (timing[0x00] | timing[0x01] << 8) * 10000; | ||||
|   detailed->h_addr = timing[0x02] | ((timing[0x04] & 0xf0) << 4); | ||||
|   detailed->h_blank = timing[0x03] | ((timing[0x04] & 0x0f) << 8); | ||||
|   detailed->v_addr = timing[0x05] | ((timing[0x07] & 0xf0) << 4); | ||||
|   detailed->v_blank = timing[0x06] | ((timing[0x07] & 0x0f) << 8); | ||||
|   detailed->h_front_porch = timing[0x08] | get_bits (timing[0x0b], 6, 7) << 8; | ||||
|   detailed->h_sync = timing[0x09] | get_bits (timing[0x0b], 4, 5) << 8; | ||||
|   detailed->v_front_porch = | ||||
|     get_bits (timing[0x0a], 4, 7) | get_bits (timing[0x0b], 2, 3) << 4; | ||||
|   detailed->v_sync = | ||||
|     get_bits (timing[0x0a], 0, 3) | get_bits (timing[0x0b], 0, 1) << 4; | ||||
|   detailed->width_mm =  timing[0x0c] | get_bits (timing[0x0e], 4, 7) << 8; | ||||
|   detailed->height_mm = timing[0x0d] | get_bits (timing[0x0e], 0, 3) << 8; | ||||
|   detailed->right_border = timing[0x0f]; | ||||
|   detailed->top_border = timing[0x10]; | ||||
|  | ||||
|   detailed->interlaced = get_bit (timing[0x11], 7); | ||||
|  | ||||
|   /* Stereo */ | ||||
|   bits = get_bits (timing[0x11], 5, 6) << 1 | get_bit (timing[0x11], 0); | ||||
|   detailed->stereo = stereo[bits]; | ||||
|  | ||||
|   /* Sync */ | ||||
|   bits = timing[0x11]; | ||||
|  | ||||
|   detailed->digital_sync = get_bit (bits, 4); | ||||
|   if (detailed->digital_sync) | ||||
|     { | ||||
|       detailed->connector.digital.composite = !get_bit (bits, 3); | ||||
|  | ||||
|       if (detailed->connector.digital.composite) | ||||
| 	{ | ||||
|           detailed->connector.digital.serrations = get_bit (bits, 2); | ||||
|           detailed->connector.digital.negative_vsync = FALSE; | ||||
| 	} | ||||
|       else | ||||
| 	{ | ||||
|           detailed->connector.digital.serrations = FALSE; | ||||
|           detailed->connector.digital.negative_vsync = !get_bit (bits, 2); | ||||
| 	} | ||||
|  | ||||
|       detailed->connector.digital.negative_hsync = !get_bit (bits, 0); | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       detailed->connector.analog.bipolar = get_bit (bits, 3); | ||||
|       detailed->connector.analog.serrations = get_bit (bits, 2); | ||||
|       detailed->connector.analog.sync_on_green = !get_bit (bits, 1); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static int | ||||
| decode_descriptors (const uchar *edid, MonitorInfo *info) | ||||
| { | ||||
|   int i; | ||||
|   int timing_idx; | ||||
|  | ||||
|   timing_idx = 0; | ||||
|  | ||||
|   for (i = 0; i < 4; ++i) | ||||
|     { | ||||
|       int index = 0x36 + i * 18; | ||||
|  | ||||
|       if (edid[index + 0] == 0x00 && edid[index + 1] == 0x00) | ||||
| 	{ | ||||
|           decode_display_descriptor (edid + index, info); | ||||
| 	} | ||||
|       else | ||||
| 	{ | ||||
|           decode_detailed_timing (edid + index, &(info->detailed_timings[timing_idx++])); | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|   info->n_detailed_timings = timing_idx; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| decode_check_sum (const uchar *edid, | ||||
| 		  MonitorInfo *info) | ||||
| { | ||||
|   int i; | ||||
|   uchar check = 0; | ||||
|  | ||||
|   for (i = 0; i < 128; ++i) | ||||
|     check += edid[i]; | ||||
|  | ||||
|   info->checksum = check; | ||||
| } | ||||
|  | ||||
| MonitorInfo * | ||||
| decode_edid (const uchar *edid) | ||||
| { | ||||
|   MonitorInfo *info = g_new0 (MonitorInfo, 1); | ||||
|  | ||||
|   decode_check_sum (edid, info); | ||||
|  | ||||
|   if (decode_header (edid) | ||||
|       && decode_vendor_and_product_identification (edid, info) | ||||
|       && decode_edid_version (edid, info) | ||||
|       && decode_display_parameters (edid, info) | ||||
|       && decode_color_characteristics (edid, info) | ||||
|       && decode_established_timings (edid, info) | ||||
|       && decode_standard_timings (edid, info) | ||||
|       && decode_descriptors (edid, info)) | ||||
|     { | ||||
|       return info; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       g_free (info); | ||||
|       return NULL; | ||||
|     } | ||||
| } | ||||
| @@ -1,193 +0,0 @@ | ||||
| /* edid.h | ||||
|  * | ||||
|  * Copyright 2007, 2008, Red Hat, Inc. | ||||
|  * | ||||
|  * This file is part of the Gnome Library. | ||||
|  * | ||||
|  * The Gnome 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. | ||||
|  * | ||||
|  * The Gnome 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 the Gnome Library; see the file COPYING.LIB.  If not, | ||||
|  * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
|  * Boston, MA 02110-1301, USA. | ||||
|  * | ||||
|  * Author: Soren Sandmann <sandmann@redhat.com> | ||||
|  */ | ||||
|  | ||||
| #ifndef EDID_H | ||||
| #define EDID_H | ||||
|  | ||||
| typedef unsigned char uchar; | ||||
| typedef struct MonitorInfo MonitorInfo; | ||||
| typedef struct Timing Timing; | ||||
| typedef struct DetailedTiming DetailedTiming; | ||||
|  | ||||
| typedef enum | ||||
| { | ||||
|   UNDEFINED, | ||||
|   DVI, | ||||
|   HDMI_A, | ||||
|   HDMI_B, | ||||
|   MDDI, | ||||
|   DISPLAY_PORT | ||||
| } Interface; | ||||
|  | ||||
| typedef enum | ||||
| { | ||||
|   UNDEFINED_COLOR, | ||||
|   MONOCHROME, | ||||
|   RGB, | ||||
|   OTHER_COLOR | ||||
| } ColorType; | ||||
|  | ||||
| typedef enum | ||||
| { | ||||
|   NO_STEREO, | ||||
|   FIELD_RIGHT, | ||||
|   FIELD_LEFT, | ||||
|   TWO_WAY_RIGHT_ON_EVEN, | ||||
|   TWO_WAY_LEFT_ON_EVEN, | ||||
|   FOUR_WAY_INTERLEAVED, | ||||
|   SIDE_BY_SIDE | ||||
| } StereoType; | ||||
|  | ||||
| struct Timing | ||||
| { | ||||
|   int width; | ||||
|   int height; | ||||
|   int frequency; | ||||
| }; | ||||
|  | ||||
| struct DetailedTiming | ||||
| { | ||||
|   int		pixel_clock; | ||||
|   int		h_addr; | ||||
|   int		h_blank; | ||||
|   int		h_sync; | ||||
|   int		h_front_porch; | ||||
|   int		v_addr; | ||||
|   int		v_blank; | ||||
|   int		v_sync; | ||||
|   int		v_front_porch; | ||||
|   int		width_mm; | ||||
|   int		height_mm; | ||||
|   int		right_border; | ||||
|   int		top_border; | ||||
|   int		interlaced; | ||||
|   StereoType	stereo; | ||||
|  | ||||
|   int		digital_sync; | ||||
|   union | ||||
|   { | ||||
|     struct | ||||
|     { | ||||
|       int bipolar; | ||||
|       int serrations; | ||||
|       int sync_on_green; | ||||
|     } analog; | ||||
|  | ||||
|     struct | ||||
|     { | ||||
|       int composite; | ||||
|       int serrations; | ||||
|       int negative_vsync; | ||||
|       int negative_hsync; | ||||
|     } digital; | ||||
|   } connector; | ||||
| }; | ||||
|  | ||||
| struct MonitorInfo | ||||
| { | ||||
|   int		checksum; | ||||
|   char		manufacturer_code[4]; | ||||
|   int		product_code; | ||||
|   unsigned int	serial_number; | ||||
|  | ||||
|   int		production_week;	/* -1 if not specified */ | ||||
|   int		production_year;	/* -1 if not specified */ | ||||
|   int		model_year;		/* -1 if not specified */ | ||||
|  | ||||
|   int		major_version; | ||||
|   int		minor_version; | ||||
|  | ||||
|   int		is_digital; | ||||
|  | ||||
|   union | ||||
|   { | ||||
|     struct | ||||
|     { | ||||
|       int	bits_per_primary; | ||||
|       Interface	interface; | ||||
|       int	rgb444; | ||||
|       int	ycrcb444; | ||||
|       int	ycrcb422; | ||||
|     } digital; | ||||
|  | ||||
|     struct | ||||
|     { | ||||
|       double	video_signal_level; | ||||
|       double	sync_signal_level; | ||||
|       double	total_signal_level; | ||||
|  | ||||
|       int	blank_to_black; | ||||
|  | ||||
|       int	separate_hv_sync; | ||||
|       int	composite_sync_on_h; | ||||
|       int	composite_sync_on_green; | ||||
|       int	serration_on_vsync; | ||||
|       ColorType	color_type; | ||||
|     } analog; | ||||
|   } connector; | ||||
|  | ||||
|   int		width_mm;		/* -1 if not specified */ | ||||
|   int		height_mm;		/* -1 if not specified */ | ||||
|   double	aspect_ratio;		/* -1.0 if not specififed */ | ||||
|  | ||||
|   double	gamma;			/* -1.0 if not specified */ | ||||
|  | ||||
|   int		standby; | ||||
|   int		suspend; | ||||
|   int		active_off; | ||||
|  | ||||
|   int		srgb_is_standard; | ||||
|   int		preferred_timing_includes_native; | ||||
|   int		continuous_frequency; | ||||
|  | ||||
|   double	red_x; | ||||
|   double	red_y; | ||||
|   double	green_x; | ||||
|   double	green_y; | ||||
|   double	blue_x; | ||||
|   double	blue_y; | ||||
|   double	white_x; | ||||
|   double	white_y; | ||||
|  | ||||
|   Timing	established[24];	/* Terminated by 0x0x0 */ | ||||
|   Timing	standard[8]; | ||||
|  | ||||
|   int		n_detailed_timings; | ||||
|   DetailedTiming detailed_timings[4];	/* If monitor has a preferred | ||||
|                                          * mode, it is the first one | ||||
|                                          * (whether it has, is | ||||
|                                          * determined by the | ||||
|                                          * preferred_timing_includes | ||||
|                                          * bit. | ||||
|                                          */ | ||||
|  | ||||
|   /* Optional product description */ | ||||
|   char		dsc_serial_number[14]; | ||||
|   char		dsc_product_name[14]; | ||||
|   char		dsc_string[14];		/* Unspecified ASCII data */ | ||||
| }; | ||||
|  | ||||
| MonitorInfo *decode_edid (const uchar *data); | ||||
|  | ||||
| #endif | ||||
| @@ -1,113 +0,0 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (C) 2014 Red Hat | ||||
|  * | ||||
|  * 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. | ||||
|  * | ||||
|  * Written by: | ||||
|  *     Jasper St. Pierre <jstpierre@mecheye.net> | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #ifndef META_BACKEND_PRIVATE_H | ||||
| #define META_BACKEND_PRIVATE_H | ||||
|  | ||||
| #include <glib-object.h> | ||||
|  | ||||
| #include <xkbcommon/xkbcommon.h> | ||||
|  | ||||
| #include <meta/meta-backend.h> | ||||
| #include <meta/meta-idle-monitor.h> | ||||
| #include "meta-cursor-renderer.h" | ||||
| #include "meta-monitor-manager-private.h" | ||||
|  | ||||
| #define DEFAULT_XKB_RULES_FILE "evdev" | ||||
| #define DEFAULT_XKB_MODEL "pc105+inet" | ||||
|  | ||||
| #define META_TYPE_BACKEND             (meta_backend_get_type ()) | ||||
| #define META_BACKEND(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_BACKEND, MetaBackend)) | ||||
| #define META_BACKEND_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass),  META_TYPE_BACKEND, MetaBackendClass)) | ||||
| #define META_IS_BACKEND(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_BACKEND)) | ||||
| #define META_IS_BACKEND_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass),  META_TYPE_BACKEND)) | ||||
| #define META_BACKEND_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj),  META_TYPE_BACKEND, MetaBackendClass)) | ||||
|  | ||||
| struct _MetaBackend | ||||
| { | ||||
|   GObject parent; | ||||
|  | ||||
|   GHashTable *device_monitors; | ||||
|   gint current_device_id; | ||||
| }; | ||||
|  | ||||
| struct _MetaBackendClass | ||||
| { | ||||
|   GObjectClass parent_class; | ||||
|  | ||||
|   void (* post_init) (MetaBackend *backend); | ||||
|  | ||||
|   MetaIdleMonitor * (* create_idle_monitor) (MetaBackend *backend, | ||||
|                                              int          device_id); | ||||
|   MetaMonitorManager * (* create_monitor_manager) (MetaBackend *backend); | ||||
|   MetaCursorRenderer * (* create_cursor_renderer) (MetaBackend *backend); | ||||
|  | ||||
|   gboolean (* grab_device) (MetaBackend *backend, | ||||
|                             int          device_id, | ||||
|                             uint32_t     timestamp); | ||||
|   gboolean (* ungrab_device) (MetaBackend *backend, | ||||
|                               int          device_id, | ||||
|                               uint32_t     timestamp); | ||||
|  | ||||
|   void (* warp_pointer) (MetaBackend *backend, | ||||
|                          int          x, | ||||
|                          int          y); | ||||
|  | ||||
|   void (* set_keymap) (MetaBackend *backend, | ||||
|                        const char  *layouts, | ||||
|                        const char  *variants, | ||||
|                        const char  *options); | ||||
|  | ||||
|   struct xkb_keymap * (* get_keymap) (MetaBackend *backend); | ||||
|  | ||||
|   void (* lock_layout_group) (MetaBackend *backend, | ||||
|                               guint        idx); | ||||
|  | ||||
|   void (* update_screen_size) (MetaBackend *backend, int width, int height); | ||||
|   void (* select_stage_events) (MetaBackend *backend); | ||||
| }; | ||||
|  | ||||
| MetaIdleMonitor * meta_backend_get_idle_monitor (MetaBackend *backend, | ||||
|                                                  int          device_id); | ||||
| MetaMonitorManager * meta_backend_get_monitor_manager (MetaBackend *backend); | ||||
| MetaCursorRenderer * meta_backend_get_cursor_renderer (MetaBackend *backend); | ||||
|  | ||||
| gboolean meta_backend_grab_device (MetaBackend *backend, | ||||
|                                    int          device_id, | ||||
|                                    uint32_t     timestamp); | ||||
| gboolean meta_backend_ungrab_device (MetaBackend *backend, | ||||
|                                      int          device_id, | ||||
|                                      uint32_t     timestamp); | ||||
|  | ||||
| void meta_backend_warp_pointer (MetaBackend *backend, | ||||
|                                 int          x, | ||||
|                                 int          y); | ||||
|  | ||||
| struct xkb_keymap * meta_backend_get_keymap (MetaBackend *backend); | ||||
|  | ||||
| void meta_backend_update_last_device (MetaBackend *backend, | ||||
|                                       int          device_id); | ||||
|  | ||||
| #endif /* META_BACKEND_PRIVATE_H */ | ||||
| @@ -1,643 +0,0 @@ | ||||
| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ | ||||
|  | ||||
| /* | ||||
|  * Copyright (C) 2014 Red Hat | ||||
|  * | ||||
|  * 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. | ||||
|  * | ||||
|  * Written by: | ||||
|  *     Jasper St. Pierre <jstpierre@mecheye.net> | ||||
|  */ | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| #include <meta/meta-backend.h> | ||||
| #include "meta-backend-private.h" | ||||
| #include "meta-input-settings-private.h" | ||||
|  | ||||
| #include "backends/x11/meta-backend-x11.h" | ||||
| #include "meta-cursor-tracker-private.h" | ||||
| #include "meta-stage.h" | ||||
|  | ||||
| #ifdef HAVE_NATIVE_BACKEND | ||||
| #include "backends/native/meta-backend-native.h" | ||||
| #endif | ||||
|  | ||||
| #include "backends/meta-idle-monitor-private.h" | ||||
|  | ||||
| #include "backends/meta-monitor-manager-dummy.h" | ||||
|  | ||||
| static MetaBackend *_backend; | ||||
|  | ||||
| /** | ||||
|  * meta_get_backend: | ||||
|  * | ||||
|  * Accessor for the singleton MetaBackend. | ||||
|  * | ||||
|  * Returns: (transfer none): The only #MetaBackend there is. | ||||
|  */ | ||||
| MetaBackend * | ||||
| meta_get_backend (void) | ||||
| { | ||||
|   return _backend; | ||||
| } | ||||
|  | ||||
| struct _MetaBackendPrivate | ||||
| { | ||||
|   MetaMonitorManager *monitor_manager; | ||||
|   MetaCursorRenderer *cursor_renderer; | ||||
|   MetaInputSettings *input_settings; | ||||
|  | ||||
|   ClutterActor *stage; | ||||
| }; | ||||
| typedef struct _MetaBackendPrivate MetaBackendPrivate; | ||||
|  | ||||
| G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MetaBackend, meta_backend, G_TYPE_OBJECT); | ||||
|  | ||||
| static void | ||||
| meta_backend_finalize (GObject *object) | ||||
| { | ||||
|   MetaBackend *backend = META_BACKEND (object); | ||||
|   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); | ||||
|  | ||||
|   g_clear_object (&priv->monitor_manager); | ||||
|   g_clear_object (&priv->input_settings); | ||||
|  | ||||
|   g_hash_table_destroy (backend->device_monitors); | ||||
|  | ||||
|   G_OBJECT_CLASS (meta_backend_parent_class)->finalize (object); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_backend_sync_screen_size (MetaBackend *backend) | ||||
| { | ||||
|   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); | ||||
|   int width, height; | ||||
|  | ||||
|   meta_monitor_manager_get_screen_size (priv->monitor_manager, &width, &height); | ||||
|  | ||||
|   META_BACKEND_GET_CLASS (backend)->update_screen_size (backend, width, height); | ||||
| } | ||||
|  | ||||
| static void | ||||
| center_pointer (MetaBackend *backend) | ||||
| { | ||||
|   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); | ||||
|   MetaMonitorInfo *monitors, *primary; | ||||
|   guint n_monitors; | ||||
|  | ||||
|   monitors = meta_monitor_manager_get_monitor_infos (priv->monitor_manager, &n_monitors); | ||||
|   primary = &monitors[meta_monitor_manager_get_primary_index (priv->monitor_manager)]; | ||||
|   meta_backend_warp_pointer (backend, | ||||
|                              primary->rect.x + primary->rect.width / 2, | ||||
|                              primary->rect.y + primary->rect.height / 2); | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_monitors_changed (MetaMonitorManager *monitors, | ||||
|                      gpointer user_data) | ||||
| { | ||||
|   MetaBackend *backend = META_BACKEND (user_data); | ||||
|   ClutterDeviceManager *manager = clutter_device_manager_get_default (); | ||||
|   ClutterInputDevice *device = clutter_device_manager_get_core_device (manager, CLUTTER_POINTER_DEVICE); | ||||
|   ClutterPoint point; | ||||
|  | ||||
|   meta_backend_sync_screen_size (backend); | ||||
|  | ||||
|   if (clutter_input_device_get_coords (device, NULL, &point)) | ||||
|     { | ||||
|       /* If we're outside all monitors, warp the pointer back inside */ | ||||
|       if (meta_monitor_manager_get_monitor_at_point (monitors, point.x, point.y) < 0) | ||||
|         center_pointer (backend); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static MetaIdleMonitor * | ||||
| meta_backend_create_idle_monitor (MetaBackend *backend, | ||||
|                                   int          device_id) | ||||
| { | ||||
|   return META_BACKEND_GET_CLASS (backend)->create_idle_monitor (backend, device_id); | ||||
| } | ||||
|  | ||||
| static void | ||||
| create_device_monitor (MetaBackend *backend, | ||||
|                        int          device_id) | ||||
| { | ||||
|   MetaIdleMonitor *idle_monitor; | ||||
|  | ||||
|   g_assert (g_hash_table_lookup (backend->device_monitors, &device_id) == NULL); | ||||
|  | ||||
|   idle_monitor = meta_backend_create_idle_monitor (backend, device_id); | ||||
|   g_hash_table_insert (backend->device_monitors, &idle_monitor->device_id, idle_monitor); | ||||
| } | ||||
|  | ||||
| static void | ||||
| destroy_device_monitor (MetaBackend *backend, | ||||
|                         int          device_id) | ||||
| { | ||||
|   g_hash_table_remove (backend->device_monitors, &device_id); | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_device_added (ClutterDeviceManager *device_manager, | ||||
|                  ClutterInputDevice   *device, | ||||
|                  gpointer              user_data) | ||||
| { | ||||
|   MetaBackend *backend = META_BACKEND (user_data); | ||||
|   int device_id = clutter_input_device_get_device_id (device); | ||||
|  | ||||
|   create_device_monitor (backend, device_id); | ||||
| } | ||||
|  | ||||
| static inline gboolean | ||||
| device_is_slave_touchscreen (ClutterInputDevice *device) | ||||
| { | ||||
|   return (clutter_input_device_get_device_mode (device) != CLUTTER_INPUT_MODE_MASTER && | ||||
|           clutter_input_device_get_device_type (device) == CLUTTER_TOUCHSCREEN_DEVICE); | ||||
| } | ||||
|  | ||||
| static inline gboolean | ||||
| check_has_pointing_device (ClutterDeviceManager *manager) | ||||
| { | ||||
|   const GSList *devices; | ||||
|  | ||||
|   devices = clutter_device_manager_peek_devices (manager); | ||||
|  | ||||
|   for (; devices; devices = devices->next) | ||||
|     { | ||||
|       ClutterInputDevice *device = devices->data; | ||||
|  | ||||
|       if (clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_MASTER) | ||||
|         continue; | ||||
|       if (clutter_input_device_get_device_type (device) == CLUTTER_TOUCHSCREEN_DEVICE || | ||||
|           clutter_input_device_get_device_type (device) == CLUTTER_KEYBOARD_DEVICE) | ||||
|         continue; | ||||
|  | ||||
|       return TRUE; | ||||
|     } | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static inline gboolean | ||||
| check_has_slave_touchscreen (ClutterDeviceManager *manager) | ||||
| { | ||||
|   const GSList *devices; | ||||
|  | ||||
|   devices = clutter_device_manager_peek_devices (manager); | ||||
|  | ||||
|   for (; devices; devices = devices->next) | ||||
|     { | ||||
|       ClutterInputDevice *device = devices->data; | ||||
|  | ||||
|       if (clutter_input_device_get_device_mode (device) != CLUTTER_INPUT_MODE_MASTER && | ||||
|           clutter_input_device_get_device_type (device) == CLUTTER_TOUCHSCREEN_DEVICE) | ||||
|         return TRUE; | ||||
|     } | ||||
|  | ||||
|   return FALSE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| on_device_removed (ClutterDeviceManager *device_manager, | ||||
|                    ClutterInputDevice   *device, | ||||
|                    gpointer              user_data) | ||||
| { | ||||
|   MetaBackend *backend = META_BACKEND (user_data); | ||||
|   int device_id = clutter_input_device_get_device_id (device); | ||||
|  | ||||
|   destroy_device_monitor (backend, device_id); | ||||
|  | ||||
|   /* If the device the user last interacted goes away, check again pointer | ||||
|    * visibility. | ||||
|    */ | ||||
|   if (backend->current_device_id == device_id) | ||||
|     { | ||||
|       MetaCursorTracker *cursor_tracker = meta_cursor_tracker_get_for_screen (NULL); | ||||
|       gboolean has_touchscreen, has_pointing_device; | ||||
|       ClutterInputDeviceType device_type; | ||||
|  | ||||
|       device_type = clutter_input_device_get_device_type (device); | ||||
|       has_touchscreen = check_has_slave_touchscreen (device_manager); | ||||
|  | ||||
|       if (device_type == CLUTTER_TOUCHSCREEN_DEVICE && has_touchscreen) | ||||
|         { | ||||
|           /* There's more touchscreens left, keep the pointer hidden */ | ||||
|           meta_cursor_tracker_set_pointer_visible (cursor_tracker, FALSE); | ||||
|         } | ||||
|       else if (device_type != CLUTTER_KEYBOARD_DEVICE) | ||||
|         { | ||||
|           has_pointing_device = check_has_pointing_device (device_manager); | ||||
|           meta_cursor_tracker_set_pointer_visible (cursor_tracker, | ||||
|                                                    has_pointing_device && | ||||
|                                                    !has_touchscreen); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| static MetaMonitorManager * | ||||
| create_monitor_manager (MetaBackend *backend) | ||||
| { | ||||
|   if (g_getenv ("META_DUMMY_MONITORS")) | ||||
|     return g_object_new (META_TYPE_MONITOR_MANAGER_DUMMY, NULL); | ||||
|  | ||||
|   return META_BACKEND_GET_CLASS (backend)->create_monitor_manager (backend); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_backend_real_post_init (MetaBackend *backend) | ||||
| { | ||||
|   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); | ||||
|  | ||||
|   priv->stage = meta_stage_new (); | ||||
|   clutter_actor_realize (priv->stage); | ||||
|   META_BACKEND_GET_CLASS (backend)->select_stage_events (backend); | ||||
|  | ||||
|   priv->monitor_manager = create_monitor_manager (backend); | ||||
|  | ||||
|   g_signal_connect (priv->monitor_manager, "monitors-changed", | ||||
|                     G_CALLBACK (on_monitors_changed), backend); | ||||
|   meta_backend_sync_screen_size (backend); | ||||
|  | ||||
|   priv->cursor_renderer = META_BACKEND_GET_CLASS (backend)->create_cursor_renderer (backend); | ||||
|  | ||||
|   backend->device_monitors = g_hash_table_new_full (g_int_hash, g_int_equal, | ||||
|                                                     NULL, (GDestroyNotify) g_object_unref); | ||||
|  | ||||
|   { | ||||
|     MetaCursorTracker *cursor_tracker; | ||||
|     ClutterDeviceManager *manager; | ||||
|     gboolean has_touchscreen = FALSE; | ||||
|     GSList *devices, *l; | ||||
|  | ||||
|     /* Create the core device monitor. */ | ||||
|     create_device_monitor (backend, 0); | ||||
|  | ||||
|     manager = clutter_device_manager_get_default (); | ||||
|     g_signal_connect_object (manager, "device-added", | ||||
|                              G_CALLBACK (on_device_added), backend, 0); | ||||
|     g_signal_connect_object (manager, "device-removed", | ||||
|                              G_CALLBACK (on_device_removed), backend, 0); | ||||
|  | ||||
|     devices = clutter_device_manager_list_devices (manager); | ||||
|  | ||||
|     for (l = devices; l != NULL; l = l->next) | ||||
|       { | ||||
|         ClutterInputDevice *device = l->data; | ||||
|         on_device_added (manager, device, backend); | ||||
|         has_touchscreen |= device_is_slave_touchscreen (device); | ||||
|       } | ||||
|  | ||||
|     cursor_tracker = meta_cursor_tracker_get_for_screen (NULL); | ||||
|     meta_cursor_tracker_set_pointer_visible (cursor_tracker, !has_touchscreen); | ||||
|  | ||||
|     g_slist_free (devices); | ||||
|   } | ||||
|  | ||||
|   priv->input_settings = meta_input_settings_create (); | ||||
|  | ||||
|   center_pointer (backend); | ||||
| } | ||||
|  | ||||
| static MetaCursorRenderer * | ||||
| meta_backend_real_create_cursor_renderer (MetaBackend *backend) | ||||
| { | ||||
|   return meta_cursor_renderer_new (); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| meta_backend_real_grab_device (MetaBackend *backend, | ||||
|                                int          device_id, | ||||
|                                uint32_t     timestamp) | ||||
| { | ||||
|   /* Do nothing */ | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| meta_backend_real_ungrab_device (MetaBackend *backend, | ||||
|                                  int          device_id, | ||||
|                                  uint32_t     timestamp) | ||||
| { | ||||
|   /* Do nothing */ | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_backend_real_update_screen_size (MetaBackend *backend, | ||||
|                                       int width, int height) | ||||
| { | ||||
|   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); | ||||
|  | ||||
|   clutter_actor_set_size (priv->stage, width, height); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_backend_real_select_stage_events (MetaBackend *backend) | ||||
| { | ||||
|   /* Do nothing */ | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_backend_class_init (MetaBackendClass *klass) | ||||
| { | ||||
|   GObjectClass *object_class = G_OBJECT_CLASS (klass); | ||||
|  | ||||
|   object_class->finalize = meta_backend_finalize; | ||||
|  | ||||
|   klass->post_init = meta_backend_real_post_init; | ||||
|   klass->create_cursor_renderer = meta_backend_real_create_cursor_renderer; | ||||
|   klass->grab_device = meta_backend_real_grab_device; | ||||
|   klass->ungrab_device = meta_backend_real_ungrab_device; | ||||
|   klass->update_screen_size = meta_backend_real_update_screen_size; | ||||
|   klass->select_stage_events = meta_backend_real_select_stage_events; | ||||
|  | ||||
|   g_signal_new ("keymap-changed", | ||||
|                 G_TYPE_FROM_CLASS (object_class), | ||||
|                 G_SIGNAL_RUN_LAST, | ||||
|                 0, | ||||
|                 NULL, NULL, NULL, | ||||
|                 G_TYPE_NONE, 0); | ||||
|   g_signal_new ("keymap-layout-group-changed", | ||||
|                 G_TYPE_FROM_CLASS (object_class), | ||||
|                 G_SIGNAL_RUN_LAST, | ||||
|                 0, | ||||
|                 NULL, NULL, NULL, | ||||
|                 G_TYPE_NONE, 1, G_TYPE_UINT); | ||||
|   g_signal_new ("last-device-changed", | ||||
|                 G_TYPE_FROM_CLASS (object_class), | ||||
|                 G_SIGNAL_RUN_LAST, | ||||
|                 0, | ||||
|                 NULL, NULL, NULL, | ||||
|                 G_TYPE_NONE, 1, G_TYPE_INT); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_backend_init (MetaBackend *backend) | ||||
| { | ||||
|   _backend = backend; | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_backend_post_init (MetaBackend *backend) | ||||
| { | ||||
|   META_BACKEND_GET_CLASS (backend)->post_init (backend); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_backend_get_idle_monitor: (skip) | ||||
|  */ | ||||
| MetaIdleMonitor * | ||||
| meta_backend_get_idle_monitor (MetaBackend *backend, | ||||
|                                int          device_id) | ||||
| { | ||||
|   return g_hash_table_lookup (backend->device_monitors, &device_id); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_backend_get_monitor_manager: (skip) | ||||
|  */ | ||||
| MetaMonitorManager * | ||||
| meta_backend_get_monitor_manager (MetaBackend *backend) | ||||
| { | ||||
|   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); | ||||
|  | ||||
|   return priv->monitor_manager; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_backend_get_cursor_renderer: (skip) | ||||
|  */ | ||||
| MetaCursorRenderer * | ||||
| meta_backend_get_cursor_renderer (MetaBackend *backend) | ||||
| { | ||||
|   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); | ||||
|  | ||||
|   return priv->cursor_renderer; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_backend_grab_device: (skip) | ||||
|  */ | ||||
| gboolean | ||||
| meta_backend_grab_device (MetaBackend *backend, | ||||
|                           int          device_id, | ||||
|                           uint32_t     timestamp) | ||||
| { | ||||
|   return META_BACKEND_GET_CLASS (backend)->grab_device (backend, device_id, timestamp); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_backend_ungrab_device: (skip) | ||||
|  */ | ||||
| gboolean | ||||
| meta_backend_ungrab_device (MetaBackend *backend, | ||||
|                             int          device_id, | ||||
|                             uint32_t     timestamp) | ||||
| { | ||||
|   return META_BACKEND_GET_CLASS (backend)->ungrab_device (backend, device_id, timestamp); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_backend_warp_pointer: (skip) | ||||
|  */ | ||||
| void | ||||
| meta_backend_warp_pointer (MetaBackend *backend, | ||||
|                            int          x, | ||||
|                            int          y) | ||||
| { | ||||
|   META_BACKEND_GET_CLASS (backend)->warp_pointer (backend, x, y); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_backend_set_keymap (MetaBackend *backend, | ||||
|                          const char  *layouts, | ||||
|                          const char  *variants, | ||||
|                          const char  *options) | ||||
| { | ||||
|   META_BACKEND_GET_CLASS (backend)->set_keymap (backend, layouts, variants, options); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_backend_get_keymap: (skip) | ||||
|  */ | ||||
| struct xkb_keymap * | ||||
| meta_backend_get_keymap (MetaBackend *backend) | ||||
|  | ||||
| { | ||||
|   return META_BACKEND_GET_CLASS (backend)->get_keymap (backend); | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_backend_lock_layout_group (MetaBackend *backend, | ||||
|                                 guint idx) | ||||
| { | ||||
|   META_BACKEND_GET_CLASS (backend)->lock_layout_group (backend, idx); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * meta_backend_get_stage: | ||||
|  * @backend: A #MetaBackend | ||||
|  * | ||||
|  * Gets the global #ClutterStage that's managed by this backend. | ||||
|  * | ||||
|  * Returns: (transfer none): the #ClutterStage | ||||
|  */ | ||||
| ClutterActor * | ||||
| meta_backend_get_stage (MetaBackend *backend) | ||||
| { | ||||
|   MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); | ||||
|   return priv->stage; | ||||
| } | ||||
|  | ||||
| void | ||||
| meta_backend_update_last_device (MetaBackend *backend, | ||||
|                                  int          device_id) | ||||
| { | ||||
|   ClutterInputDeviceType device_type; | ||||
|   MetaCursorTracker *cursor_tracker; | ||||
|   ClutterDeviceManager *manager; | ||||
|   ClutterInputDevice *device; | ||||
|  | ||||
|   if (backend->current_device_id == device_id) | ||||
|     return; | ||||
|  | ||||
|   manager = clutter_device_manager_get_default (); | ||||
|   device = clutter_device_manager_get_device (manager, device_id); | ||||
|  | ||||
|   if (!device || | ||||
|       clutter_input_device_get_device_mode (device) == CLUTTER_INPUT_MODE_MASTER) | ||||
|     return; | ||||
|  | ||||
|   device_type = clutter_input_device_get_device_type (device); | ||||
|  | ||||
|   cursor_tracker = meta_cursor_tracker_get_for_screen (NULL); | ||||
|   backend->current_device_id = device_id; | ||||
|   g_signal_emit_by_name (backend, "last-device-changed", device_id); | ||||
|  | ||||
|   if (device_type == CLUTTER_KEYBOARD_DEVICE) | ||||
|     return; | ||||
|  | ||||
|   switch (device_type) | ||||
|     { | ||||
|     case CLUTTER_TOUCHSCREEN_DEVICE: | ||||
|       meta_cursor_tracker_set_pointer_visible (cursor_tracker, FALSE); | ||||
|       break; | ||||
|     default: | ||||
|       meta_cursor_tracker_set_pointer_visible (cursor_tracker, TRUE); | ||||
|       break; | ||||
|     } | ||||
| } | ||||
|  | ||||
| static GType | ||||
| get_backend_type (void) | ||||
| { | ||||
| #if defined(CLUTTER_WINDOWING_X11) | ||||
|   if (clutter_check_windowing_backend (CLUTTER_WINDOWING_X11)) | ||||
|     return META_TYPE_BACKEND_X11; | ||||
| #endif | ||||
|  | ||||
| #if defined(CLUTTER_WINDOWING_EGL) && defined(HAVE_NATIVE_BACKEND) | ||||
|   if (clutter_check_windowing_backend (CLUTTER_WINDOWING_EGL)) | ||||
|     return META_TYPE_BACKEND_NATIVE; | ||||
| #endif | ||||
|  | ||||
|   g_assert_not_reached (); | ||||
| } | ||||
|  | ||||
| static void | ||||
| meta_create_backend (void) | ||||
| { | ||||
|   /* meta_backend_init() above install the backend globally so | ||||
|    * so meta_get_backend() works even during initialization. */ | ||||
|   g_object_new (get_backend_type (), NULL); | ||||
| } | ||||
|  | ||||
| /* Mutter is responsible for pulling events off the X queue, so Clutter | ||||
|  * doesn't need (and shouldn't) run its normal event source which polls | ||||
|  * the X fd, but we do have to deal with dispatching events that accumulate | ||||
|  * in the clutter queue. This happens, for example, when clutter generate | ||||
|  * enter/leave events on mouse motion - several events are queued in the | ||||
|  * clutter queue but only one dispatched. It could also happen because of | ||||
|  * explicit calls to clutter_event_put(). We add a very simple custom | ||||
|  * event loop source which is simply responsible for pulling events off | ||||
|  * of the queue and dispatching them before we block for new events. | ||||
|  */ | ||||
|  | ||||
| static gboolean | ||||
| event_prepare (GSource    *source, | ||||
|                gint       *timeout_) | ||||
| { | ||||
|   *timeout_ = -1; | ||||
|  | ||||
|   return clutter_events_pending (); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| event_check (GSource *source) | ||||
| { | ||||
|   return clutter_events_pending (); | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| event_dispatch (GSource    *source, | ||||
|                 GSourceFunc callback, | ||||
|                 gpointer    user_data) | ||||
| { | ||||
|   ClutterEvent *event = clutter_event_get (); | ||||
|  | ||||
|   if (event) | ||||
|     { | ||||
|       clutter_do_event (event); | ||||
|       clutter_event_free (event); | ||||
|     } | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static GSourceFuncs event_funcs = { | ||||
|   event_prepare, | ||||
|   event_check, | ||||
|   event_dispatch | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * meta_clutter_init: (skip) | ||||
|  */ | ||||
| void | ||||
| meta_clutter_init (void) | ||||
| { | ||||
|   ClutterSettings *clutter_settings; | ||||
|   GSource *source; | ||||
|  | ||||
|   meta_create_backend (); | ||||
|  | ||||
|   if (clutter_init (NULL, NULL) != CLUTTER_INIT_SUCCESS) | ||||
|     g_error ("Unable to initialize Clutter.\n"); | ||||
|  | ||||
|   /* | ||||
|    * XXX: We cannot handle high dpi scaling yet, so fix the scale to 1 | ||||
|    * for now. | ||||
|    */ | ||||
|   clutter_settings = clutter_settings_get_default (); | ||||
|   g_object_set (clutter_settings, "window-scaling-factor", 1, NULL); | ||||
|  | ||||
|   source = g_source_new (&event_funcs, sizeof (GSource)); | ||||
|   g_source_attach (source, NULL); | ||||
|   g_source_unref (source); | ||||
|  | ||||
|   meta_backend_post_init (_backend); | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user