Compare commits

...

444 Commits

Author SHA1 Message Date
4dfbe9a493 Bump version to 3.7.92
Update NEWS.
2013-03-18 23:08:47 +01:00
6a17bb4cf5 docs: Disable gtk-doc-check in make check
Missing documentation should not cause make check to fail, disable
it.
2013-03-18 23:08:25 +01:00
58496de595 Give a title to the MetaWorkspace page in the API docs
https://bugzilla.gnome.org/show_bug.cgi?id=695935
2013-03-18 23:08:24 +01:00
f80a15f312 Remove theme.h and preview-widget.h from the API docs
As they are of no use to plugins and to be removed in the future

https://bugzilla.gnome.org/show_bug.cgi?id=695935
2013-03-18 23:08:24 +01:00
9df2d83aa0 Add small note to the docs about the actor containers in the compositor
https://bugzilla.gnome.org/show_bug.cgi?id=695935
2013-03-18 23:08:24 +01:00
1582448553 Move compositor documentation from header to the API docs
https://bugzilla.gnome.org/show_bug.cgi?id=695935
2013-03-18 23:08:24 +01:00
eefa62bcd4 screen: Fix a copy/paste error from the fullscreen tracking
This was causing a warning on shutdown.
2013-03-18 16:29:25 -04:00
e216b6ca0f background: Fix the desaturate effect when on its own
We need to make sure cogl_texel is set to something,
otherwise we'll have junk.

https://bugzilla.gnome.org/show_bug.cgi?id=696087
2013-03-18 15:23:19 -04:00
8a33880c00 Don't configure a window before it responds to _NET_WM_SYNC_REQUEST
In 97a4cc8c, we accidentally lost the check that kept us from
sending multiple configures to a window before it responds to
_NET_WM_SYNC_REQUEST. So _NET_WM_SYNC_REQUEST stopped working
properly. Add a check back with the same effect.

https://bugzilla.gnome.org/show_bug.cgi?id=696091
2013-03-18 15:10:18 -04:00
7a8c45dda8 Handle spontaneous frames during a resize
During a resize, if we don't have a configure pending, then a counter
change shouldn't trigger anything other than the normal drawing:
it's just a spontaneous frame from the application. So don't try
to update the position or remove our timeout ID.

https://bugzilla.gnome.org/show_bug.cgi?id=696091
2013-03-18 15:10:18 -04:00
af01ddaf5d background-group: Use a default FixedLayout manager
ClutterBinLayout's get_preferred_width / get_preferred_height
doesn't respect fixed child positioning when calculating the
size of the layout, but does when allocating. This is absurdly
broken, but it's what we're given. Use a ClutterFixedLayout,
which doesn't have these issues.

https://bugzilla.gnome.org/show_bug.cgi?id=696089
2013-03-18 14:52:06 -04:00
5ceffe86ee MetaScreen: Add tracking of whether there are fullscreen windows
Trying to track the fullscreen status outside of Mutter, as GNOME Shell
was doing previously, was very prone to errors, because Mutter has a
very tricky definition of when a window is set to be fullscreen and
*actually* acting like a fullscreen window.

 * Add meta_screen_get_monitor_in_fullscreen() and an
   ::in-fullscreen-changed signal. This allows an application to
   track when there are fullscreen windows on a monitor.

 * Do the computation of fullscreen status in a "later" function that
   runs after showing, so we properly take focus into account.

 * To get ordering of different phases right, add more values
   to MetaLaterType.

 * Add auto-minimization, similar to what was added to GNOME Shell
   earlier in this cycle - if a window is set to be fullscreen, but
   not actually fullscreen, minimize.

https://bugzilla.gnome.org/show_bug.cgi?id=649748
2013-03-18 13:05:22 -04:00
49df033b4e window: Remove obsolete code
Since the tile mode is now always reset on maximize(), this code
no longer does anything (not to mention that side-by-side tiled
windows haven't snapped back for a while now).

https://bugzilla.gnome.org/show_bug.cgi?id=682779
2013-03-18 16:43:08 +01:00
ac3465ffbb window: Reset tile-mode on maximization
We used to restore side-by-side tiling when unmaximizing, so we
kept the tile-mode during maximization. Since commit 10d53fc7d
there's no longer a good reason to do so, and it can result in
tile previews being shown erroneously on window drag operations
without motion (double-click on titlebar), so reset the tile
mode in maximize().

https://bugzilla.gnome.org/show_bug.cgi?id=682779
2013-03-18 16:43:08 +01:00
884ab602cb window: Force NORMAL layer for tile preview
The tile preview is expected to be shown underneath the focus window.
However the code that restacks the preview broke when override-redirect
windows were moved to a separate window group.
To fix, special-case tile previews to put them in the NORMAL layer.

https://bugzilla.gnome.org/show_bug.cgi?id=696053
2013-03-18 16:20:07 +01:00
d944bda7b9 Updated Vietnamese translation 2013-03-17 19:37:18 +07:00
11f7cfb27b Updated Latvian translation 2013-03-17 13:05:48 +02:00
64358d9901 Updated Danish translation 2013-03-16 16:34:37 +01:00
2efed44257 Add a meaningful name and description to all sections/files in the API docs
https://bugzilla.gnome.org/show_bug.cgi?id=695641
2013-03-14 18:11:04 -04:00
69c72ebb26 Enable tests for the gtk-doc generation
https://bugzilla.gnome.org/show_bug.cgi?id=695641
2013-03-14 18:07:05 -04:00
00a842f41b Add overview and running sections to API docs
https://bugzilla.gnome.org/show_bug.cgi?id=695641
2013-03-14 18:07:05 -04:00
460dc9f2ef Improve a bit the look of the main page of the API docs
https://bugzilla.gnome.org/show_bug.cgi?id=695641
2013-03-14 18:07:04 -04:00
be46869782 docs: Fix cross-reference generation
https://bugzilla.gnome.org/show_bug.cgi?id=676856
2013-03-14 18:02:43 -04:00
2863eba2e7 Ignore private headers when generating API docs
https://bugzilla.gnome.org/show_bug.cgi?id=676856
2013-03-14 18:02:43 -04:00
e0b698d365 Fix gobs of gtk-doc warnings
https://bugzilla.gnome.org/show_bug.cgi?id=676856
2013-03-14 18:02:43 -04:00
edeac1de09 Remove meta_display_get_atom and MetaAtom
They aren't used and MetaAtom confused gtk-doc because it's defined
with a macro.

https://bugzilla.gnome.org/show_bug.cgi?id=676856
2013-03-14 17:56:36 -04:00
9281a1c191 Escape a few < and > from the API docs
https://bugzilla.gnome.org/show_bug.cgi?id=676856
2013-03-14 17:56:36 -04:00
a3826987e6 Build reference docs
https://bugzilla.gnome.org/show_bug.cgi?id=676856
2013-03-14 17:56:36 -04:00
e46c7fd27b Update and fix comments 2013-03-14 17:55:31 -04:00
0bb8d29be4 background-group: Subclass ClutterActor, not ClutterGroup
We use the new Clutter Actor API in the shell, so we really
shouldn't be using ClutterGroup.

https://bugzilla.gnome.org/show_bug.cgi?id=695881
2013-03-14 17:48:36 -04:00
1f905bd0e2 compositor: Fix crash when adding a window with an opaque region
If _NET_WM_OPAQUE_REGION is set when the window is first mapped, the
initial load_properties will happen before the window actor is created,
and we'll have a call to meta_compositor_window_shape_changed. Just
fizzle this call out instead of doing anything fancy, as we'll pick
up the opaque region when the window actor is eventually created.

https://bugzilla.gnome.org/show_bug.cgi?id=695813
2013-03-14 11:35:23 -04:00
cce5ad7cc0 Update French translation 2013-03-14 16:05:32 +01:00
97a4cc8c9b Make handling of windows that don't respond to _NET_WM_SYNC_REQUEST reliable
Previously, we were handling failure to respond to _NET_WM_SYNC_REQUEST
in the code path for throttling motion events. But this meant that
if a window didn't respond to _NET_WM_SYNC_REQUEST and there were no
motion events - for a keyboard resize, or after the end of the grab
operation - it would end up in a stuck state.

Use a separate per-window timeout to reliably catch the failure to respond
to _NET_WM_SYNC_REQUEST.

https://bugzilla.gnome.org/show_bug.cgi?id=694046
2013-03-14 08:01:28 -04:00
592374bc62 Fix freezing of windows with keyboard resizing
During resizing we froze window updates when configuring the
window, and unfroze the window updates when processing the
next resize. This wasn't absolutely reliable, because we might
not have a next resize. Instead tie window freezing more
directly to the current sync request value - a window is
frozen until it catches up with the last value we sent it
in _NET_WM_SYNC_REQUEST.

Testing with unresponsive clients showed that there was a bug
where window->disable_sync once set, would not actually disable
sync, but it *would* disable noticing that the client was
unresponsive for the next resize. Fix that by checking for
->disable_sync before sending _NET_WM_SYNC_REQUEST.

https://bugzilla.gnome.org/show_bug.cgi?id=694046
2013-03-14 07:59:57 -04:00
2e0f979613 Updated gujarati file 2013-03-14 13:41:57 +05:30
6d365a700c [l10n] Updated Estonian translation 2013-03-13 13:04:47 +02:00
72a9eb6a3e [l10n] Updated Catalan (Valencian) translation 2013-03-12 22:58:27 +01:00
ae3cfe6c01 [l10n] Updated Catalan translation 2013-03-12 22:58:01 +01:00
da557cb712 Updated Korean translation 2013-03-13 03:53:18 +09:00
c1e41d558f [l10n] Updated Italian translation. 2013-03-12 18:35:52 +01:00
889844b004 Compositor: sync stacking of window actors even if they're not parented to the window groups
Window actors might be temporarily parented to intermediate actors during
effect, but we should not require that the plugin keeps track of stacking.
Rather, assume that the intermediate groups holds a whole stack, and
applying position within it.

https://bugzilla.gnome.org/show_bug.cgi?id=695711
2013-03-12 17:58:00 +01:00
6311a3ebc1 Updated gujarati file 2013-03-12 16:08:20 +05:30
0f6c1db2ba Updated Portuguese translation and converted to New Spelling (Novo AO) 2013-03-12 00:22:32 +00:00
e6ec1abbfa Updated Serbian translation 2013-03-11 11:42:33 +01:00
42621c960e Update Arabic translation 2013-03-09 22:48:51 +02:00
8e9ae2eb50 Updated Slovak translation 2013-03-09 18:00:00 +00:00
ca7843372c Updated Greek translation 2013-03-09 09:03:20 +02:00
1202714428 Updated Slovenian translation 2013-03-07 17:17:09 +01:00
45addabe5d Assamese translation updated for gnome 3.8 2013-03-07 19:34:39 +05:30
31abad0ea5 Updated Belarusian translation. 2013-03-07 16:24:11 +03:00
c169d29836 Updated Brazilian Portuguese translation 2013-03-07 01:30:45 -03:00
df8ad83cec Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-03-06 19:12:21 +08:00
381a9c2650 core: Remove the eventqueue
It is unused.

https://bugzilla.gnome.org/show_bug.cgi?id=695269
2013-03-06 09:17:12 +01:00
dc3529d98a Bump version to 3.7.91
Update NEWS.
2013-03-04 22:29:13 +01:00
e15bc37225 compositor: map overlay window before redirecting windows
When windows get redirected off screen, all that gets left behind
is black. We don't want to flicker black at startup, though.

This commit maps the overlay window early, before redirecting
toplevels, so they end up getting snapshotted onto the background
pixmap of the overlay window when the overlay window is mapped.

https://bugzilla.gnome.org/show_bug.cgi?id=694321
2013-03-04 16:16:56 -05:00
160150d127 compositor: don't show stage right away
We don't want the stage shown until gnome-shell is ready for it.
This commit ensures the stage isn't shown implicitly.

https://bugzilla.gnome.org/show_bug.cgi?id=694321
2013-03-04 16:16:56 -05:00
6e02fb80c4 Always send _NET_WM_FRAME_DRAWN for newly created windows
Send a _NET_WM_FRAME_DRAWN for each newly created window, as required
by the specification. This avoids a race where a window might be created
frozen but already unfrozen by the time we first see fetch the
counter value.

Remove a duplicate call to meta_compositor_set_updates_frozen() which
was called before the MetaWindowActor is created and hence did nothing.

https://bugzilla.gnome.org/show_bug.cgi?id=694771
2013-03-04 15:36:13 -05:00
98b0a37442 Free memory allocated by XIQueryPointer()
https://bugzilla.gnome.org/show_bug.cgi?id=695135
2013-03-04 19:07:23 +01:00
4d437e32e0 window-actor: Fix leaked frame list
https://bugzilla.gnome.org/show_bug.cgi?id=695135
2013-03-04 19:07:23 +01:00
7db236b2a4 window-actor: Fix leaked opaque_region
https://bugzilla.gnome.org/show_bug.cgi?id=695135
2013-03-04 19:07:23 +01:00
377e2ed8a5 keybindings: filter overlay key even when not-modal
mutter currently only filters the overlay key through the shell
when there is a grab operation and that grab operation belongs to the
shell (because the shell is pushModal'd). This means the shell can't
filter out overlay key press events events at startup (since the shell
isn't normally modal).

This commit changes the code to always run the shell filtering code,
even when the shell is not modal.

https://bugzilla.gnome.org/show_bug.cgi?id=694837
2013-03-04 11:57:17 -05:00
99cfbac473 Updated Norwegian bokmål translation 2013-03-04 14:57:49 +01:00
34f06ee9e5 Updated Spanish translation 2013-03-04 14:53:05 +01:00
f212723e71 Updated Galician translations 2013-03-04 14:20:30 +01:00
660eceb61a compositor: Fix ClutterTimeline usage
Use the correct 'stopped' signal name and callback signature.

https://bugzilla.gnome.org/show_bug.cgi?id=695093
2013-03-04 00:25:19 +01:00
d395d75e26 Fix up for latest Clutter deprecations
https://bugzilla.gnome.org/show_bug.cgi?id=678917
2013-03-03 16:23:32 -05:00
2aea49a8d0 [l10n] Updated German translation 2013-03-03 16:31:28 +01:00
c996dde5cb meta-window-group: Report a paint volume
We never paint outside of the allocation so we can simply use
clutter_paint_volume_set_from_allocation.

https://bugzilla.gnome.org/show_bug.cgi?id=694988
2013-03-03 11:46:06 +01:00
4bdd985faf Punjabi: Translation updated (aalam) 2013-03-03 07:11:00 +05:30
6e831c88a6 compositor: fix background vignette for non-stretched styles
The background vignette currently fits itself to the painted
texture, instead of the monitor.  This causes some very
wrong looking drawing for backgrounds that don't fill the screen.

This commit reworks the vignette shader code to be clearer, more
correct, and parameterized so that it knows how to scale and
position the vignette.

https://bugzilla.gnome.org/show_bug.cgi?id=694393
2013-03-02 17:31:43 -05:00
0e3d164117 compositor: when tiling background, center on screen
The WALLPAPER style of background painting currently
draws starting in the upper left corner of each monitor.

This isn't really correct, it means the seam between
monitors doesn't match up and edges look unbalanced if
the tile isn't a multipe of monitor size.

Really, the tiles should be centered in the middle of
the screen.  (Just like when tiling a bathroom floor,
tiles should start in the center of the room.)

This commit reworks the math to make that happen.

https://bugzilla.gnome.org/show_bug.cgi?id=694393
2013-03-02 17:30:32 -05:00
ec6460382c Updated Lithuanian translation 2013-03-02 22:57:48 +02:00
436d3ff8a9 compositor: Make sure we always call the post_paint handlers
Commit 4f2bb583bf started to use a clutter_threads_add_repaint_func_full
callback instead of connecting to the stage's paint signal.

The callback has to return TRUE if it wants to be called again, so fix that
as we want to call it for every frame (otherwise apps supporting the WM SYNC
protocol will stop drawing).

https://bugzilla.gnome.org/show_bug.cgi?id=695006
2013-03-02 18:24:31 +01:00
e4269002ce meta-background-group: Report a paint volume
We never paint outside of the allocation so we can simply use
clutter_paint_volume_set_from_allocation.

https://bugzilla.gnome.org/show_bug.cgi?id=694988
2013-03-02 15:31:10 +01:00
4f2bb583bf compositor: Don't connect to the stage's paint signal
Doing so causes useless full stage redraws and breaks culling
as clutter cannot know how the signal handler affects painting.

So use clutter_threads_add_repaint_func_full with the
CLUTTER_REPAINT_FLAGS_POST_PAINT flag instead.

https://bugzilla.gnome.org/show_bug.cgi?id=694988
2013-03-02 14:42:06 +01:00
702f3fc691 Updated Vietnamese translation 2013-03-02 18:04:34 +07:00
4cad9513b4 po/vi: import from Damned Lies 2013-03-02 18:00:15 +07:00
24974816a6 Updated Polish translation 2013-03-02 01:53:43 +01:00
773ae8dc65 core: make session registration an explicit step
gnome-shell shouldn't announce to the session manager it's
"ready" until it's fully initialized.  It currently tells
the session manager it's ready as soon as it hits the main
loop. This causes nautilus in classic mode to start before
we have workspaces initialized.

https://bugzilla.gnome.org/show_bug.cgi?id=694876
2013-03-01 11:30:07 -05:00
7f14298126 prefs: Use an unsigned value for META_KEYBINDING_ACTION_NONE
Keybinding actions are unsigned, so it is a tad bit odd to use a
negative value for NONE and rely on implicit casting.
Use 0 instead.

https://bugzilla.gnome.org/show_bug.cgi?id=643111
2013-03-01 16:11:44 +01:00
a39cabfadb keybindings: Add external grab API
During compositor grabs, all global keybindings that don't go
through mutter's keybinding system are blocked. To allow other
processes to make use of it, gnome-shell will expose a simple
grab API on DBus; for this, add API to grab key combos directly
instead of parsing accelerators stored in GSettings.

https://bugzilla.gnome.org/show_bug.cgi?id=643111
2013-03-01 16:11:43 +01:00
4df3e987c6 keybindings: Generalize mechanism to generate dynamic keybinding actions
https://bugzilla.gnome.org/show_bug.cgi?id=643111
2013-03-01 16:11:42 +01:00
64c523c534 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-03-01 22:42:53 +08:00
fba2c49aae Updated Serbian translation 2013-03-01 11:32:24 +01:00
e623406c99 background: Fix gradient color rendering
There is currently code to try to fill gradients in a
hardware native format, using #ifdefs. That optimization is
unimportant since gradients only use 2 byte buffers. It's
also incorrect because it's getting the channel order wrong
at buffer initialization time.

This commit drops the ifdefs for clarity and fixes the
channel order.

https://bugzilla.gnome.org/show_bug.cgi?id=694641
2013-02-28 13:17:24 -05:00
de36d51b91 screen: fix meta_screen_get_monitor_for_rect for 0x0 rects
meta_screen_get_monitor_for_rect will return the monitor that
a given rect belongs in (choosing the "best" monitor based on
overlap, if there are overlapping monitors).

It doesn't work with 0x0 rects, though.

This commit fixes that.

https://bugzilla.gnome.org/show_bug.cgi?id=694725
2013-02-27 21:35:30 -05:00
e6d5e98c9d MetaWindow: fix annotation
caller-allocates makes sense only for structure, and gjs will complain
if used on anything else

https://bugzilla.gnome.org/show_bug.cgi?id=694801
2013-02-27 18:00:01 +01:00
832b7f9431 Updated Greek translation 2013-02-26 11:42:44 +02:00
171a273d11 Updated Galician translations 2013-02-26 00:33:40 +01:00
45b0765f2f [l10n] Updated Italian translation. 2013-02-25 22:09:23 +01:00
2a773e0c85 window: Add get_all_monitors
Add a method that returns the indices of the monitors a window
is on.

https://bugzilla.gnome.org/show_bug.cgi?id=646861
2013-02-25 22:05:42 +01:00
b5152c3327 Update French translation 2013-02-25 20:42:12 +01:00
d4f8c29221 Updated Uyghur translation
Signed-off-by: Gheyret Kenji <gheyret@gmail.com>
2013-02-25 18:46:53 +09:00
1b83e8a64c Updated Polish translation 2013-02-24 02:34:48 +01:00
36eb5c305d Punjabi: Translation updated (aalam) 2013-02-22 03:30:13 +00:00
c72dbeb611 Updated Hebrew translation. 2013-02-21 19:14:40 +02:00
63aec4566d Updated Spanish translation 2013-02-21 16:56:13 +01:00
2cafb8be2d window: fix meta_window_is_remote across hostname changes
meta_window_is_remote compares a cached copy of the system hostname
with the hostname of the client window
(as presented by the WM_CLIENT_MACHINE property).

Of course, the system hostname can change at any time, so caching
it is wrong. Also, the WM_CLIENT_MACHINE property won't necessarily
change when the system hostname changes, so comparing it with the
new system hostname is wrong, too.

This commit makes the code call gethostname() at the time
WM_CLIENT_MACHINE is set, check whether it's remote then, and cache
that value, rather than comparing potentially out of sync hostnames
later.

https://bugzilla.gnome.org/show_bug.cgi?id=688716
2013-02-20 16:02:10 -05:00
64544fa0ed window: deduplicate is_remote logic
set_title_text does the equivalent of meta_window_is_remote on its
own.

This commit changes set_title_text to just use meta_window_is_remote.

https://bugzilla.gnome.org/show_bug.cgi?id=688716
2013-02-20 15:28:31 -05:00
51ccaaaff0 Bump version to 3.7.90
Update NEWS.
2013-02-20 16:44:30 +01:00
b09f47d17f po: Add missing file 2013-02-20 16:44:30 +01:00
1dbefc4e36 compositor/background: Avoid uninitialized variable warning
'code' may be used uninitialized in this function, so make sure
to return early in this case.
2013-02-20 14:02:02 +01:00
7f6a77232f compositor: Don't use deprecated Cogl-1.0 API
https://bugzilla.gnome.org/show_bug.cgi?id=694224
2013-02-19 20:05:33 -05:00
580feb0c85 compositor: rework how backgrounds are managed
Background handling in GNOME is very roundabout at the moment.

gnome-settings-daemon uses gnome-desktop to read the background from
disk into a screen-sized pixmap. It then sets the XID of that pixmap
on the _XROOTPMAP_ID root window property.

mutter puts that pixmap into a texture/actor which gnome-shell then
uses.

Having the gnome-settings-daemon detour from disk to screen means we
can't easily let the compositor handle transition effects when
switching backgrounds. Also, having the background actor be
per-screen instead of per-monitor means we may have oversized
textures in certain multihead setups.

This commit changes mutter to read backgrounds from disk itself, and
it changes backgrounds to be per-monitor.

This way background handling/compositing is left to the compositor.

https://bugzilla.gnome.org/show_bug.cgi?id=682427
2013-02-19 18:21:00 -05:00
842bc4421c compositor: export actor_is_untransformed function
actor_is_untransformed is a function meta-window-group uses to determine
if an actor is relatively pixel aligned and not contorted. It then
returns the coordinates of the actor.

In a subsequent commit will need the function in a different file, so
this commit separates it out.

https://bugzilla.gnome.org/show_bug.cgi?id=682427
2013-02-19 18:18:29 -05:00
aba87407e9 compositor: do sync actor stack in one pass
This refactor will simplify a subsequent commit that
introduces more than one background actor to the window
group.

https://bugzilla.gnome.org/show_bug.cgi?id=682427
2013-02-19 16:09:27 -05:00
112ef93e19 Updated Spanish translation 2013-02-19 12:43:26 +01:00
c4efd1c789 l10n: Updated Italian translation 2013-02-19 11:06:35 +01:00
7e61ef0936 display: Don't put minimized windows at the back of alt-tab
Minimizing a window should not change its position in the alt-tab
list.

https://bugzilla.gnome.org/show_bug.cgi?id=693991
2013-02-18 13:11:55 -05:00
e9709b7ff9 window: Add is_screen_sized method
Add a method that returns whether the window occupies
the whole screen (i.e all montiors).
2013-02-18 14:10:27 +01:00
027593faa5 Keybindings: reverse key combination read from settings
Window menus use the first key combination for a binding to show the
acceleration, so the list must be in the right configured order, which
is the opposite of what's built by g_slist_prepend()

https://bugzilla.gnome.org/show_bug.cgi?id=694045
2013-02-17 21:52:19 +01:00
491c5b622e window-actor: Set every window actor to be reactive
Now that the background actor is reactive, this means that
clicks on the window group part of the stage, even when they're
on an X window, will be registered as the background actor, as
all of the other children of the group aren't reactive. This can
happen when a plugin takes a modal grab, for instance.

https://bugzilla.gnome.org/show_bug.cgi?id=681540
2013-02-17 15:43:38 -05:00
5e9621ed80 compositor: Spoof events on the guard window
This allows events generated for the guard window to be picked up
by Clutter as if they were events for the mutter stage.

https://bugzilla.gnome.org/show_bug.cgi?id=681540
2013-02-17 15:43:38 -05:00
f5de1c78af compositor: Set the background actor to be reactive by default
Combined with the previous patch, this gives us an easy way to
connect for events on the wallpaper.

https://bugzilla.gnome.org/show_bug.cgi?id=681540
2013-02-17 15:43:38 -05:00
b0774d795c screen: Select for pointer events on the guard window
The guard window is effectively the background window, as it sits
in between live windows and minimized windows. This gives us a nice
easy place to allow users to allow users to right-click or long-press
on the wallpaper.

https://bugzilla.gnome.org/show_bug.cgi?id=681540
2013-02-17 15:43:38 -05:00
034ab77c30 window-actor: Use meta_window_is_monitor_sized
Use meta_window_is_monitor_sized in should_unredirect instead of doing
the checks directly.
2013-02-17 21:42:14 +01:00
a6a9d3f448 window: Add meta_window_is_monitor_sized
We duplicate this checks in multiple places so lets add this to
avoid code duplication.
2013-02-17 21:42:01 +01:00
a215852d3c Updated Polish translation 2013-02-17 20:33:51 +01:00
264a0bbd15 Updated Galician translations 2013-02-17 13:11:15 +01:00
55a4d0e0cb Updated Serbian translation 2013-02-17 10:33:28 +01:00
d900d83522 MetaWindowActor: Go back to freezing affecting actor geometry
We do, in fact, need freezing to affect window geometry, so that
move-resize operations (such as an interactive resize from the
left, or a resize of a popup centered by the application) occur
atomically.

So to make map effects work properly, only exclude the initial
placement of a window from freezing. (In the future, we may want
to consider whether pure moves of a window being done in response
to a user drag should also be excluded from freezing.)

Rename meta_window_sync_actor_position() to
meta_window_sync_actor_geometry() for clarity.

https://bugzilla.gnome.org/show_bug.cgi?id=693922
2013-02-15 21:48:25 -05:00
e8b0c11703 barrier: Add a time field to MetaBarrierEvent
This was used in gnome-shell, but last-minute changes and multiple
branch confusion on my part meant the field actually never got added.

https://bugzilla.gnome.org/show_bug.cgi?id=693854
2013-02-15 16:49:03 -05:00
3d337a98d9 MetaWindowActor: Freeze shouldn't affect actor position
If a window is frozen because it is repainting, that shouldn't kee[p
us from updating its position: we don't want a slow-to-update window
to move around the screen chunkily when dragged. (This does reduce
the efficiency of begin/end frames for replacing double-buffering,
but that never works very well in the case where there was an overlapping
window or the entire screen needed redrawing for whatever reason.)

This fixes a bug where a window that was mapped frozen would not get
positioned properly until after the map effect finished, and would
jump from 0,0 at that point. Since effects *do* need to prevent
actor repositioning by Mutter, we must position the actor before any
effect starts.

Because we now are queuing invalidates on frozen windows, fix the
logic for that so that we properly update everything when the window
unfreezes.

https://bugzilla.gnome.org/show_bug.cgi?id=693922
2013-02-15 16:07:47 -05:00
3e38a48c40 meta_spew_xi2_event: fix crash-causing typo 2013-02-15 15:52:34 -05:00
5876f2e3e5 Fix corner cases where _NET_WM_FRAME_DRAWN might be missed
The WM spec requires _NET_WM_FRAME_DRAWN to *always* be sent when
there is an appropriate update to the sync counter value. We were
potentially missing _NET_WM_FRAME_DRAWN when an application did a
spontaneous update during an interactive resize and during effects.
Refactor the code to always send _NET_WM_FRAME_DRAWN, even when
a window is frozen.

https://bugzilla.gnome.org/show_bug.cgi?id=693833
2013-02-14 16:21:26 -05:00
aeb589c176 MetaWindow: fix detecting the response to an extended _NET_WM_SYNC_REQUEST
During resizing, An odd counter value (indicating the beginning of a frame)
shouldn't cause us to redraw and start a new frame, only an even counter
value. This was causing the frozen state for the window frame counter to
overlap the frozen state for the resize, causing the window not to be
updated.

https://bugzilla.gnome.org/show_bug.cgi?id=693833
2013-02-14 16:21:14 -05:00
14dd766e11 Updated Lithuanian translation 2013-02-14 23:16:08 +02:00
24ff4b5622 settings: Clarifiy auto_maximize language
Use less technical terms and fix a typo.

https://bugzilla.gnome.org/show_bug.cgi?id=680990
2013-02-14 20:04:08 +01:00
7f3362bdce Update French translation 2013-02-14 19:56:10 +01:00
6b5cf2eb61 compositor: Add a new window group for override-redirect windows
Put override redirect windows such as menus into a separate window group
stacked above everything else. This will allow us to visually put these
above other compositior chrome.

Based on a patch from Muffin.

https://bugzilla.gnome.org/show_bug.cgi?id=633620
2013-02-14 01:25:17 -05:00
fb0cd80332 compositor: remove the hidden group
It is unused and always empty.

https://bugzilla.gnome.org/show_bug.cgi?id=682427
2013-02-14 01:03:47 -05:00
579bf2105e display: Pass timestamp to meta_display_end_grab_op
We need to pass the timestamp not the event detail to meta_display_end_grab_op

https://bugzilla.gnome.org/show_bug.cgi?id=690580
2013-02-13 18:32:57 +01:00
995e8040dd Bump Clutter and Cogl version requirements
Cogl - require 1.13.3 for CoglFrameInfo
Clutter - require 1.13.5 for clutter_stage_set_sync_delay()
2013-02-13 09:48:27 -05:00
0503f6bb9a Consistently use meta_grab_op_is_resizing() for _NET_WM_SYNC_REQUEST
In different places we checked the grab op differently when determing
whether we are using _NET_WM_SYNC_REQUEST. This was somewhat covered
up previously by the fact that we only had a sync alarm when using
_NET_WM_SYNC_REQUEST, but that is no longer the case, so consistently
use meta_grab_op_is_resizing() everywhere.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:27 -05:00
87fe9685b5 Distinguish "no delay" frames from spontaneous drawing
When a client is drawing as hard as possible (without sleeping
between frames) we need to draw as soon possible, since sleeping
will decrease the effective frame rate shown to the user, and
can also result in the system never kicking out of power-saving
mode because it doesn't look fully utilized.

Use the amount the client increments the counter value by when
ending the frame to distinguish these cases:

 - Increment by 1: a no-delay frame
 - Increment by more than 1: a non-urgent frame, handle normally

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:27 -05:00
2d9b8bb2d0 Send _NET_WM_FRAME_TIMINGS messages
We previously had timestamp information stubbed out in
_NET_WM_FRAME_DRAWN. Instead of this, add a high-resolution timestamp
in _NET_WM_FRAME_DRAWN then send a _NET_WM_FRAME_TIMINGS message
after when we have complete frame timing information, representing
the "presentation time" of the frame as an offset from the timestamp
in _NET_WM_FRAME_DRAWN.

To provide maximum space in the messages,_NET_WM_FRAME_DRAWN and
_NET_WM_FRAME_TIMINGS are not done as WM_PROTOCOLS messages but
have their own message types.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:27 -05:00
74b1a9e2b9 Add meta_compositor_monotonic_time_to_server_time()
Add a function to convert from g_get_monotonic_time() to a
"high-resolution server timestamp" with microsecond precision.
These timestamps will be used when communicating frame timing
information to the client.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:27 -05:00
fcc178ee8c Use XSyncSetPriority()
Use XSyncSetPriority() to prioritize the compositor above applications
for X server priority. In practice, this makes little difference because
the Xorg "smart scheduler" will schedule in a single application for
time slices that exceed the frame drawing time, but it's theoretically
right and might make a difference if the X server scheduler is improved.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:26 -05:00
d8696c17be Use clutter_stage_set_sync_delay()
Using a "sync delay" where we wait for 2 ms after the vblank before
starting to draw the next frame provides for much more predictable
latency for applications. An application can know that if it completes
a frame any time between 8ms before the vblank to the vblank,
it will reliably be drawn on the following vblank period, rather than
having an unpredictable latency depending on whether the compositor
is currently busy drawing a frame or not.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:26 -05:00
b07aea467e Enable CLUTTER / COGL_ENABLE_EXPERIMENTAL_API globally
Instead of defining CLUTTER_ENABLE_EXPERIMENTAL_API and
COGL_ENABLE_EXPERIMENTAL_API in individual source files, enable
them on the command line. We weren't tracking exactly what pieces of
experimental API we were using and we were using the experimental
API in most source files that used Clutter and Cogl, so the
local #defines were annoying rather than useful.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:26 -05:00
04ef448927 Handle _NET_WM_SYNC_REQUEST_COUNTER updates without redraw
It's possible that a client might update the (extended)
_NET_WM_SYNC_REQUEST_COUNTER counter twice without actually drawing
anything. In that case, we still should send a _NET_WM_FRAME_DRAWN
message since it's hard for a client to know every case in which
no damage is generated. For now, do it the easy way by forcing a
stage repaint.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:26 -05:00
790bfcad9a MetaWindow: always resize the frame first when we have synchronization
Resizing the frame triggers creation of a new backing pixmap for the
window, so we should do that first before we resize the client window
and mess up the contents of the old backing pixmap.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:26 -05:00
fbfab93c63 Send _NET_WM_FRAME_DRAWN messages
When the application provides the extended second counter for
_NET_WM_SYNC_REQUEST, send a client message with completion
information after the next redraw after each counter update
by the application.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:26 -05:00
70c0d39fa7 Add support for an extended style of _NET_WM_SYNC_REQUEST_COUNTER
If an application provides two values in _NET_WM_SYNC_REQUEST_COUNTER,
use that as a signal that the applications wants an extended behavior
where it can update the counter as well as the window manager. If the
application updates the counter to an odd value, updates of the
window are frozen until the counter is updated again to an even value.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:26 -05:00
7d43bde019 Support properties with lists of XSyncCounter
Add META_PROP_VALUE_SYNC_COUNTER_LIST for a property that contains
multiple XSyncCounter values.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:26 -05:00
7743c70d47 Move sync alarms to be per-window and permanent
Instead of creating a new alarm each time we resize a window
interactively, create an alarm the first time we resize a window
and keep it around permanently until we unmanage the window.
Doing it this way will be useful when we allow the application to
spontaneously generate sync request updates to indicate
frames it is drawing.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:48:25 -05:00
c9343e3ee3 Implement freezing of updates during resize
Replace the unused meta_compositor_set_updates() with
a reversed-meaning meta_compositor_set_updates_frozen(), and use
it to implement freezing application window updates during
interactive resizing. This avoids drawing new areas of the window
with blank content before the application has a chance to repaint.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:40:07 -05:00
3abaf506a6 MetaWindowActor: Use guint for bitfields
A 1-bit boolean (int) bitfield has the values 0 and -1. Use
guint instead for bitfield values.

https://bugzilla.gnome.org/show_bug.cgi?id=685463
2013-02-13 09:39:09 -05:00
9de142db09 Punjabi: Translation updated (aalam) 2013-02-10 23:36:40 +00:00
2942b22ccf screen: Don't try to move / resize OR windows on montior change
meta_screen_resize calls meta_window_update_for_monitors_changed for all
windows including OR windows when the monitors change (or screen size).

This calls meta_window_move_between_rects for the window which attempts to
move the OR window by calling meta_window_move_resize.

meta_window_move_resize refuses to do anything on OR windows (just returns
for OR windows).

This causes a storm of assert messages when the screen
resolution changes while an OR window is visible.
(like the one gnome-control-center displays with the monitor name).

Fix that by not calling meta_window_update_for_monitors_changed for OR windows
and let the applications handle them by themselves.

https://bugzilla.gnome.org/show_bug.cgi?id=693540
2013-02-10 20:43:03 +01:00
94e6e55ef7 resize-popup: use a tooltip style for the resize popup window
- set GTK_STYLE_CLASS_TOOLTIP on the window, and use the same code of
  GtkTooltip to paint it
- set GDK_WINDOW_TYPE_HINT_TOOLTIP and make the window non-resizable, so
  it doesn't get an incorrect shadow from the WM

https://bugzilla.gnome.org/show_bug.cgi?id=692741
2013-02-10 14:25:27 -05:00
34fc234fd7 resize-popup: set a bigger margin
Since we're going to use the tooltip's rounded corners we need a little
bit more of margin (which wasn't a bad idea even with the frame).
Also, don't use GtkMisc for this anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=692741
2013-02-10 14:25:27 -05:00
c3ffd28bb6 resize-popup: don't use a GtkFrame
We want this to look like a normal tooltip - start with removing the
GtkFrame around its shape.

https://bugzilla.gnome.org/show_bug.cgi?id=692741
2013-02-10 14:25:27 -05:00
1c680be11a meta-window-actor: Make sure that the shape_region is always set
Start off with an empty region to make sure that the shape_region is
always set even for unredirected and frozen windows.

https://bugzilla.gnome.org/show_bug.cgi?id=693482
2013-02-09 20:56:03 +01:00
a362c08f4e Fix build error introduced by d482590c84 2013-02-09 17:02:36 +01:00
380154af0a screen: Fix a potentially endless loop
We always need to move the list pointer forward.

https://bugzilla.gnome.org/show_bug.cgi?id=693475
2013-02-09 16:07:59 +01:00
d482590c84 Fix button check in meta_window_client_message
Fixes a regression introduced in 3a3be74e37

https://bugzilla.gnome.org/show_bug.cgi?id=692718
2013-02-09 13:17:42 +01:00
b3c572b8e3 barrier: fix fallback for unsupported servers
add missing ifdef HAVE_XI23.

https://bugzilla.gnome.org/show_bug.cgi?id=677215
2013-02-09 11:27:22 +11:00
c64eb94724 display: Remove an unused code path for enabling the compositor 2013-02-08 14:36:20 -05:00
d8f569eaf5 display: Rename window_ids to xids
As the hash table no longer stores only window IDs, we should rename it so
that we make sure to check if something is actually a window before using it
as a window.

https://bugzilla.gnome.org/show_bug.cgi?id=677215
2013-02-08 14:23:38 -05:00
57c31a56f4 barrier: Add support for new barrier features in XInput 2.3
XInput 2.3 adds support for "barrier events", which let us know when
a pointer barrier has been hit, and when the pointer has stopped
hitting the barrier, and lets us "release" the barrier, temporarily
letting the pointer pass through the barrier. These features can be
combined to allow for certain pointer gestures, such as "pushing"
against the bottom of the screen, or stopping the pointer on monitor
edges while dragging slowly for increased edge precision.

This commit should allow graceful fallback if servers with
XInput 2.3 aren't supported.

https://bugzilla.gnome.org/show_bug.cgi?id=677215
2013-02-08 14:23:38 -05:00
8b21df92f0 barrier: Add a new Meta wrapper for pointer barriers
Currently, we have a few function wrappers in the shell for pointer
barriers. If we want to implement interactive features on barriers,
we need some sort of signal to be notified of the interactivity.
In that case, we need to make a more sophisticated object-based wrapper
for a pointer barrier. Add one, and stick it in mutter.

https://bugzilla.gnome.org/show_bug.cgi?id=677215
2013-02-08 14:23:38 -05:00
e914595062 theme-viewer: Stop using deprecated GTK+ functions
https://bugzilla.gnome.org/show_bug.cgi?id=693439
2013-02-08 19:08:55 +01:00
a2a3188331 Fix compiler warnings 2013-02-08 00:22:54 +01:00
453020c315 Make sure to include the old XI2 mask when selecting for events
Some windows may already have event masks on them that we've selected
for, especially if we're using GTK+ windows. In particular, this fixes
window menus in the XI2 port.

https://bugzilla.gnome.org/show_bug.cgi?id=690581
2013-02-07 18:13:40 -05:00
d794db876a core: Add a helper function to grab the old event mask of a window
https://bugzilla.gnome.org/show_bug.cgi?id=690581
2013-02-07 17:53:53 -05:00
b33b4a8e2c ui: Don't use gdk_device_manager_get_client_pointer
gdk_device_manager_get_client_pointer which in calls
XIGetClientPointer seems to be very slow in a XI2 world.

So use
	gdk_x11_device_manager_lookup (gmanager, META_VIRTUAL_CORE_POINTER_ID)
instead.

https://bugzilla.gnome.org/show_bug.cgi?id=693354
2013-02-07 21:54:27 +01:00
6f74a63bbd Updated Galician translations 2013-02-07 00:52:12 +01:00
5298d1c8d0 meta-window-actor: Don't do check_needs_reshape when not mapped
This can cause us ending up with a wrong mask because we don't yet
have a pixmap to use in build_and_scan_frame_mask().

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-02-06 18:11:36 +01:00
493f619adc meta-window-actor: Fix uninitialized variable
Fallout of 90f2a3ae4c
2013-02-06 08:19:20 +01:00
a613a55658 Support _NET_WM_OPAQUE_REGION
This new hint allows compositors to know what portions of a window
will be obscured, as a region above them is opaque. For an RGB window,
possible to glean this information from the bounding shape region of
a client window, but not for an ARGB32 window. This new hint allows
clients that use ARGB32 windows to say which part of the window is
opaque, allowing this sort of optimization.

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-02-06 00:08:04 -05:00
3fe5a676c2 window-actor: Remove the bounding region
With the shape region always set, it turns out the bounding region
is only used in one place, that's easily replaced with a variable
we already have available to us.

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-02-06 00:05:23 -05:00
19420f147f window-actor: Remove conditional checks for the shape region
With recent changes in the way the window mask texture is constructed,
the shape_region is always set, which means that we can remove
conditionals checking if the shape region is set.

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-02-06 00:05:23 -05:00
32b7743735 screen: Add an introspectible wrapper for find_monitor_for_rect
Instead of returning a MonitorInfo, it returns a monitor index.

https://bugzilla.gnome.org/show_bug.cgi?id=692679
2013-02-06 00:04:15 -05:00
093e101252 Make work_area calculation funcs public and introspectible
https://bugzilla.gnome.org/show_bug.cgi?id=692679
2013-02-06 00:03:47 -05:00
6f873be7fa Revert "Make work_area calculation funcs public and introspectible"
This reverts commit d8058138ab.
2013-02-06 00:03:10 -05:00
f37dd25e92 Revert "screen: Add an introspectible wrapper for find_monitor_for_rect"
This reverts commit 3900aa10f8.
2013-02-06 00:02:04 -05:00
d48df249c9 Revert "window-actor: Ensure we always have a valid shape_region"
This reverts commit 07273a075d.
2013-02-06 00:02:03 -05:00
e48c3dac87 Revert "window-actor: Remove conditional checks for the shape region"
This reverts commit 84930f1d78.
2013-02-06 00:02:02 -05:00
3516902fae Revert "window-actor: Remove the bounding region"
This reverts commit 66185a468c.
2013-02-06 00:02:00 -05:00
66185a468c window-actor: Remove the bounding region
With the shape region always set, it turns out the bounding region
is only used in one place, that's easily replaced with a variable
we already have available to us.

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-02-05 23:59:20 -05:00
84930f1d78 window-actor: Remove conditional checks for the shape region
With recent changes in the way the window mask texture is constructed,
the shape_region is always set, which means that we can remove
conditionals checking if the shape region is set.

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-02-05 23:54:13 -05:00
07273a075d window-actor: Ensure we always have a valid shape_region
Force a reshape at startup to ensure that shape_region is always
constructed and valid, even if the window is unredirected or frozen.

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-02-05 23:54:13 -05:00
3900aa10f8 screen: Add an introspectible wrapper for find_monitor_for_rect
Instead of returning a MonitorInfo, it returns a monitor index.

https://bugzilla.gnome.org/show_bug.cgi?id=692679
2013-02-05 23:54:13 -05:00
d8058138ab Make work_area calculation funcs public and introspectible
https://bugzilla.gnome.org/show_bug.cgi?id=692679
2013-02-05 23:54:13 -05:00
ac49259fc7 Bump version to 3.7.5
Update NEWS
2013-02-05 22:59:13 +01:00
12dbb90a5a [l10n] Updated Italian translation. 2013-02-05 22:15:05 +01:00
90f2a3ae4c mutter-window-actor: Improve unredirect heuristic
Currently we only unredirect monitor sized override redirect windows.
This was supposed to catch fullscreen opengl games and improve
their performance.

Newer games like fullscreen webgl games and SDL2 using games (like L4D) as well as wine based games do not use override redirect windows so we need a better
heuristic to catch them.

GLX windows always damage the whole window when calling glxSwapBuffers and
never damage sub regions. So we can use that to detect them.

The new heuristic unredirects windows fullscreen windows that have damaged the
whole window more then 100 times in a row.

https://bugzilla.gnome.org/show_bug.cgi?id=683786
2013-02-05 21:13:27 +01:00
867e10dbcc Updated Traditional Chinese translation(Hong Kong and Taiwan) 2013-02-04 06:50:11 +08:00
9a57626556 meta-window-actor: Change unredirection hints to match spec changes
Change the bypass / dont_bypass compositor code to match the latest
spec.

https://bugzilla.gnome.org/show_bug.cgi?id=693064
2013-02-03 14:29:45 +01:00
b9e21b76ae Updated Polish translation 2013-02-02 23:58:30 +01:00
2ecc50af53 meta-window-actor: Correctly create a new pixmap when redirecting a window again
We should call meta_window_actor_detach not
meta_window_actor_queue_create_pixmap to create a new pixmap when we redirect a
previously unredirected window again.

https://bugzilla.gnome.org/show_bug.cgi?id=693042
2013-02-02 11:02:49 +01:00
1cebe19bbe Updated Hebrew translation. 2013-02-02 11:23:49 +02:00
71055556ee display: Require XFixes 5.0
We want to put barrier wrappers in mutter, which requre XFixes 5.0.
XFixes 5.0 was released in March, 2011, which should be old enough
to mandate support for.

https://bugzilla.gnome.org/show_bug.cgi?id=677215
2013-02-01 13:13:51 -05:00
4d9d66da65 window: Add set_icon_geometry() method
Using a public method for setting the (cached) icon geometry rather
than accessing the struct members directly allows setting the icon
geometry from extensions.

https://bugzilla.gnome.org/show_bug.cgi?id=692997
2013-02-01 15:08:48 +01:00
30bdadb519 window: Cache _NET_WM_ICON_GEOMETRY
Rather than doing a server round trip each time when retrieving the
icon geometry, use the existing property mechanism to cache it.

https://bugzilla.gnome.org/show_bug.cgi?id=692997
2013-02-01 15:08:38 +01:00
c388ccf477 window: Fix get_icon_geometry() annotation
gjs has had support for (out) parameters for quite some time now ...

https://bugzilla.gnome.org/show_bug.cgi?id=692997
2013-02-01 15:08:36 +01:00
a2d54bb2ab build: Bump gsettings-desktop-schemas requirement
... as needed for the new 'switch-applications' keybinding.

https://bugzilla.gnome.org/show_bug.cgi?id=692952
2013-01-31 19:13:04 +01:00
cefadb55b1 display: Request XI2.3
This matches commit:

http://git.gnome.org/browse/clutter/commit/?h=clutter-1.14&id=3e1450ba17fce90a8034cc525c67a87ff3cdd53d

Since XIQueryVersion, the bad API that it is, chooses the first client
version that it gets, we need to ensure that we pass XIQueryVersion the
new XI2.3 version, knowing fully well that Clutter won't be confused
by the new features.

https://bugzilla.gnome.org/show_bug.cgi?id=692877
2013-01-31 04:22:10 -05:00
06e31e4c03 Updated Norwegian bokmål translation 2013-01-29 19:34:12 +01:00
869a137c2f Updated Norwegian bokmål translation 2013-01-21 12:13:29 +01:00
f4e4a05a9e Updated Uyghur translation
Signed-off-by: Gheyret Kenji <gheyret@gmail.com>
2013-01-20 18:46:02 +09:00
df15843407 Use meta_window_located_on_workspace() in more places
https://bugzilla.gnome.org/show_bug.cgi?id=691744
2013-01-18 15:45:05 -05:00
d8eb47e2b7 window: Make meta_window_located_on_workspace() public
We have some code in gnome-shell that does the equivalent of:

    window.get_workspace() == workspace || window.is_on_all_workspaces();

which is a bit unwieldy. We already have a method in mutter,
so use that and document it.

https://bugzilla.gnome.org/show_bug.cgi?id=691744
2013-01-18 15:45:05 -05:00
e28a36affd window-actor: Merge two simple methods
With some recent changes to how mask textures are constructed from
shapes, a helper method we made was only called in one place, allowing
us to drop a reference/destroy, and remove a double clear.

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-01-18 00:28:54 -05:00
53534b4ded window-actor: Remove custom region destruction methods with g_clear_pointer
https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-01-18 00:28:54 -05:00
079dd60e3d window-actor: Clean up finalization code with simple uses of g_clear_pointer
While not a massive change by itself, adding new code to use g_clear_pointer
without porting existing usage looks strange.

https://bugzilla.gnome.org/show_bug.cgi?id=679901
2013-01-18 00:28:54 -05:00
5d12f00b3b window-actor: Speed up mask creation
Due to a conditional error, meta_region_builder_add_rectangle was called
on every single blank pixel, rather than at the end of spans. With the new
rename, it's fairly clear to see the error. Fix the check to ensure that
we no longer make extraneous calls to meta_region_builder_add_rectangle.

https://bugzilla.gnome.org/show_bug.cgi?id=691874
2013-01-17 16:33:54 -05:00
95f3bb3b81 window-actor: Rename variable in scanning function
"w" usually stands for "width", but here it stands for the end X bound,
so we'll rename it to the more traditional "x2".

https://bugzilla.gnome.org/show_bug.cgi?id=691874
2013-01-17 16:33:53 -05:00
2bfe6d2da5 build: Bump Clutter requirement
We now rely on XInput being enabled by default, which has only been
the case since 1.13.2.
2013-01-17 13:22:39 +01:00
27e0e44d8b Don't allow multiline window titles
https://bugzilla.gnome.org/show_bug.cgi?id=683056
2013-01-16 14:25:11 -05:00
7e5fb3e1a0 Assamese translation updated 2013-01-16 14:25:59 +05:30
2ac17cc7ba Updated Belarusian translation. 2013-01-15 20:26:09 +03:00
7b32b7fcd1 Updated Spanish translation 2013-01-15 14:36:01 +01:00
2fcd75eadd Bump version to 3.7.4
Update NEWS.
2013-01-15 00:45:27 +01:00
8094c0ab23 Updated Slovenian translation 2013-01-13 11:59:25 +01:00
831cf9a83a Updated Bulgarian translation 2013-01-12 06:33:42 +02:00
47be4fdf07 theme: Add the .background style class back to frames
GtkWindow added the BACKGROUND style class to all windows, which the
CSS file selects on to set a background color for all windows. Without
this, the background color becomes undefined, and thus window frames
look like they have "glitchy" graphics.

https://bugzilla.gnome.org/show_bug.cgi?id=690317
2013-01-11 12:40:07 -05:00
9b34545bd5 theme: Fix a memory leak
Commit 5c33b0d tried to copy/paste the code that constructed
classes, but for some reason didn't copy the theme name.

https://bugzilla.gnome.org/show_bug.cgi?id=690317
2013-01-11 12:40:07 -05:00
e5317cc7a0 theme: Remove a bunch of unused *_to_string methods
These were there just for consistency's sake.
2013-01-11 17:40:23 +01:00
b8887a6c3a keybindings: Rebrand "minimize" as "hide"
The minimize action does not make much sense without a window list,
which is why its default keybinding was removed in bug 643609;
getting the focused window out of the way quickly can still be useful
though, so change the description to "Hide window" instead, which does
not imply a window list. We will then assign a default shortcut again.

https://bugzilla.gnome.org/show_bug.cgi?id=682887
2013-01-11 16:22:29 +01:00
a6c51addac prefs: Annotate meta_prefs_get_button_layout()
https://bugzilla.gnome.org/show_bug.cgi?id=689263
2013-01-10 00:10:50 +01:00
54a3847a5e common: Annotate MetaButtonLayout
https://bugzilla.gnome.org/show_bug.cgi?id=689263
2013-01-10 00:10:50 +01:00
5a8473e226 prefs: Do not leave junk values in unused button_layout fields
MetaButtonLayout is extremely unfriendly for introspection: its fields
are arrays of a fixed length, but the actual length is determined by
a custom stop value (e.g. not NULL / 0).
Without API changes this will never work nicely in introspection, but
we can at least make it work; start by filling up unused fields with
the stop value rather than leaving it at random values.

https://bugzilla.gnome.org/show_bug.cgi?id=689263
2013-01-10 00:10:50 +01:00
5c33b0d768 theme-viewer: use the same GtkStyleContext as mutter usually renders
https://bugzilla.gnome.org/show_bug.cgi?id=690317
2013-01-09 14:06:24 -05:00
22a3126a2b theme: Make meta_frame_draw_theme take a GtkStyleContext instead of a widget
The style context of the widget is rarely what we want. We won't
fix this to be a MetaFrames style context yet; this just changes
the internal API.

https://bugzilla.gnome.org/show_bug.cgi?id=690317
2013-01-09 14:06:24 -05:00
9596c24f83 plugin-manager: Remove a bogus check
We dereference the plugin_mgr in the initializer above,
so it's wrong.

https://bugzilla.gnome.org/show_bug.cgi?id=690609
2013-01-09 14:06:24 -05:00
86d6baf30f Updated Bulgarian translation 2013-01-09 06:15:06 +02:00
3a3be74e37 Remove some server calls for core devices
These were missed in the first porting.

https://bugzilla.gnome.org/show_bug.cgi?id=691363
2013-01-08 15:54:50 -05:00
f57d64337b display: Use XI2 constants for mode/detail focus event values
This makes no function difference, except conceptual clarity.

https://bugzilla.gnome.org/show_bug.cgi?id=691363
2013-01-08 15:54:50 -05:00
e69fcc860c display: Remove some more core events
I apparently forgot to remove these.

https://bugzilla.gnome.org/show_bug.cgi?id=691363
2013-01-08 15:54:50 -05:00
afbca61524 main: Remove call to clutter_x11_enable_xinput
The call is deprecated and is called by default upstream.

https://bugzilla.gnome.org/show_bug.cgi?id=691363
2013-01-08 15:54:50 -05:00
66d37e06ba compositor: Remove unused code fetching _XSETROOT_ID
We don't use this atom anywhere, so don't bother fetching it.

https://bugzilla.gnome.org/show_bug.cgi?id=691363
2013-01-08 15:54:50 -05:00
7e2d6cb6ec README: Minor update, really just to trigger a rebuild
...after cogl bumped soname.
2013-01-05 14:16:57 -05:00
b9f775fe02 ui: Suppress warnings from -Werror=maybe-uninitialized 2013-01-03 17:30:44 +01:00
90cf43da9f display: Expose the xinput opcode
This is needed by the shell to filter out certain events

https://bugzilla.gnome.org/show_bug.cgi?id=690590
2013-01-02 13:41:56 -05:00
bab51cbbe4 Remove unnecessary python check
A grep for fix-meta-rectangle.py in the source tree comes up
empty, and building mutter works just fine without AM_PATH_PYTHON.

https://bugzilla.gnome.org/show_bug.cgi?id=690956
2013-01-02 08:01:14 -05:00
e782426736 Assamese translation updated 2012-12-27 21:33:18 +05:30
1071e9970f Updated Brazilian Portuguese Translation 2012-12-27 03:56:51 -02:00
5d64bdf3d9 Updated Polish translation 2012-12-26 21:41:21 +01:00
8012a315e3 Updated Hebrew translation. 2012-12-26 19:50:51 +02:00
acd6df34da Updated Spanish translation 2012-12-26 11:59:29 +01:00
6431abbc85 Check that the application is responding when activating a window
Currently, we ping windows only when attempting to delete them, but
if the application is not responding, we want to show the dialog
as soon as possible. Given that we cannot be passively notified that
the window stopped responding with the current X11 protocol, a good
workaround is to ping the window when activating it.
If the window stops responding while active, it is expected the user
will try to switch window or open the overview, and when coming back
he'll get the failure dialog.

https://bugzilla.gnome.org/show_bug.cgi?id=684340
2012-12-25 18:39:10 +01:00
57ff0f7071 MetaWindow: add a public method for checking if the application is responding
Add meta_window_check_alive(), which is a simple wrapper over
meta_display_ping_window(), and takes care of showing the "Application
is not responding dialog" if needed.

https://bugzilla.gnome.org/show_bug.cgi?id=684340
2012-12-25 18:39:09 +01:00
2a2ac52726 automaximize: Make it optional
Make automaximize optional by adding a gsetting "auto-maximize"
(defaults to true).

https://bugzilla.gnome.org/show_bug.cgi?id=680990
2012-12-25 13:37:22 +01:00
a91eeb24d4 update Punjabi Translation for master 2012-12-25 08:50:47 +05:30
581960abc8 Updated Galician translations 2012-12-24 23:03:34 +01:00
3a307b5d24 Update Arabic translation 2012-12-24 13:19:00 +02:00
4e21d5d610 ui: Don't use deprecated GtkStyleContext API
Update for deprecations.

https://bugzilla.gnome.org/show_bug.cgi?id=690593
2012-12-23 03:17:26 -05:00
02c2cf1960 Updated Spanish translation 2012-12-21 12:26:57 +01:00
748064678f prefs: drop errnoneous semi-colon
This fixes a compiler warning and spurious
enqueuing of WORKSPACE_NAMES change.

https://bugzilla.gnome.org/show_bug.cgi?id=690573
2012-12-20 14:27:26 -05:00
982d554450 Updated Hebrew translation. 2012-12-20 13:29:07 +02:00
0e5f8997cf [l10n] Updated Estonian translation 2012-12-19 18:23:18 +02:00
6111d3ee4a window: recompute modal dialog attached status when the window type changes
We want to maintain the invariant that an attached modal dialog is always
of type MODAL_DIALOG, so recompute is_attached_dialog() when the window
type changes.

https://bugzilla.gnome.org/show_bug.cgi?id=690454
2012-12-18 23:18:58 +01:00
3876a1a192 Support bypass compositor hints
Add support for _NET_WM_BYPASS_COMPOSITOR and _NET_WM_DONT_BYPASS_COMPOSITOR
as proposed here: https://mail.gnome.org/archives/wm-spec-list/2012-February/msg00010.html

https://bugzilla.gnome.org/show_bug.cgi?id=683020
2012-12-18 19:02:34 +01:00
6f3ae06362 Bump version to 3.7.3
Update NEWS
2012-12-18 13:31:41 +01:00
7d7b859b40 Fix 'comparison between signed and unsigned integer' compiler errors 2012-12-17 12:30:01 +00:00
d78de379cc keybindings: Give dynamic keybindings a keybindings action
https://bugzilla.gnome.org/show_bug.cgi?id=682315
2012-12-17 12:00:55 +00:00
576384a73b Updated Polish translation 2012-12-16 02:50:03 +01:00
2fcbc467e8 keybindings: Fix whitespace and alignment
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 18:15:23 -05:00
6139bc77ec Remove support for Core Events
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 18:15:23 -05:00
c1ac9d1dff ui: Use XI2 to fake GDK events
This removes our final dependency on Core Events, meaning
we can remove support code for them soon.

This commit is a bit ugly as it requires ui having a dependency on
core, but this is already a hack, so this is thus a hack inside a
hack, and two hacks make a right or however that goes.

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 18:15:23 -05:00
945c530354 display: Add spew for XI2
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 18:15:22 -05:00
774ceec243 Select for XI2 events everywhere else
In random places that are not grabs, we selected for events on
things like the root window, stage window, COW and more. Switch
these over to using the proper XI2 APIs.

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 17:14:06 -05:00
7c20621112 keybindings: Grab keys with XI2
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 17:14:06 -05:00
afcdfd158f keybindings: Grab keyboard with XI2
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 17:14:06 -05:00
8fb9e0072c display: Grab buttons with XI2
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 17:14:06 -05:00
c1b8e0ac8f display: Use XInput2 to grab the pointer
As calling XIGrabDevice multiple times will change it, just
drop the XChangeActivePointerGrab path and just go down the
XIGrabPointer path always.

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 17:14:06 -05:00
c90765370d window: Pass the grab timestamp when updating the resize grab
Since XChangeActivePointerGrab doesn't have a direct equivalent
in XI2, we need to make sure we don't re-grab with a newer
tiemstamp.
2012-12-13 17:06:00 -05:00
8931b8026e compositor: Identify XI2 events as grabbed events
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 16:36:43 -05:00
55251aa986 compositor: Use XInput2 to grab the pointer/keyboard
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 16:36:42 -05:00
946a42f13e core: enable XInput2 by default
Enable XI2 support in both Clutter and GDK.

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:57:31 -05:00
0fd4059927 display: Only care about input events for the VCP/VCK
It's unlikely that we'll ever want to support multiple pointer
devices. Multiple keyboard devices may become useful in the future,
but for now, only care about the core keyboard.

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:57:31 -05:00
1d827049d6 Port mutter to use XInput2 events instead of Core Events
Mechanically transform the event processing of mutter to care
about XI2 events instead of Core Events. Core Events will be left
in the dust soon, and removed entirely.

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:56:25 -05:00
881d256ce0 window: Move grab op sync handling code out
This removes some duplicate event type checks, and will make
the code cleaner in the future when we want to make the grab_op_event
handler take an XIDeviceEvent directly.

Based on a patch by Owen Taylor <otaylor@fishsoup.net>

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:56:24 -05:00
6b31bd402a display: Don't pass an event to a handler that will no-op
meta_window_handle_mouse_grab_op_event won't do anything on a
EnterNotify/LeaveNotify, so why are we passing something to it?

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:56:24 -05:00
129c729c50 display: separate input/non-input events handling in the event callback
In order to make the XI2 handling easier on us in the future, we now
split input events from non-input events. This will allow one code path
to use XIEvent, and the other to use XEvent in the future. This commit
has involved plenty of indenting changes, so it's better seen with
git diff -b or &ignorews=1

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:12:56 -05:00
8bf8f3ea55 common: Add the XInput2 headers to common.h, which everything uses
https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:12:56 -05:00
f0c1e39fb7 display: Initialize XInput2
Make sure it's the correct version.

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:12:56 -05:00
dd4e655e2b Require XInput2
This is going to start becoming necessary for mutter to run.

https://bugzilla.gnome.org/show_bug.cgi?id=688779
2012-12-13 14:12:56 -05:00
b3073bc3bc Updated Kannada Translations 2012-12-13 17:44:11 +05:30
54603f4d95 Updated Kannada Translations 2012-12-13 17:28:28 +05:30
aab65a768e Updated Kannada Translations 2012-12-13 17:22:56 +05:30
37c037278c Assamese translation updated 2012-12-10 18:27:30 +05:30
9d904f9a85 Increase typical icon size to 96
Since we want nice alt-tab applications for gnome-shell, we should up the
limit to 96. In the future, we probably want to get rid of the icon-cache,
and allow looking up a correctly sized icon directly from the window.

To prevent app breakage, set the legacy WM_HINTS pixmap size directly to
32x32.

https://bugzilla.gnome.org/show_bug.cgi?id=689651
2012-12-09 20:44:13 -05:00
8830814d70 screen: Add a convenience method to focus the default window
This will be used for gnome-shell so that it can focus a window after
a keyboard grab or other things.

https://bugzilla.gnome.org/show_bug.cgi?id=689652
2012-12-07 13:01:49 -05:00
c0958090b4 Updated Odia Translation with FUEL implementation. 2012-12-06 13:53:52 +05:30
7f9e4e47c5 Updated Odia Translation with FUEL implementation. 2012-12-06 13:50:51 +05:30
2282326f30 Add 'switch-applications' keybinding
Add an additional "switcher" keybinding for switching between
applications rather than windows (like the existing 'switch-windows'
and 'switch-group' bindings).
The purpose of the new keybinding is to be taken over by gnome-shell's
application-based alt-tab popup, so rather than actually implementing
an application switcher in mutter, let it duplicate the normal window
switcher when run standalone.

https://bugzilla.gnome.org/show_bug.cgi?id=688913
2012-12-05 18:45:22 +01:00
8703daccbe display: Make workspace parameter to get_tab_list() optional
Currently meta_display_get_tab_list() will only return windows on
a single workspace. Make the workspace parameter optional to allow
requesting windows from all workspaces.

https://bugzilla.gnome.org/show_bug.cgi?id=688913
2012-12-05 18:45:22 +01:00
3797ecaa65 display: Clean up meta_display_get_tab_list()
https://bugzilla.gnome.org/show_bug.cgi?id=688913
2012-12-05 18:45:22 +01:00
c6fcc79e6a display: Kill a warning at shutdown
A small semicolon was causing us to always remove the focus
timeout ID.
2012-12-04 16:46:40 -05:00
d588de635a Updated Tamil translation 2012-12-02 18:58:51 +05:30
e5b46747d6 Initialize window->user_rect in the initial placement
The window positioning is delayed in idle_move_resize() in case the application
resizes/maximizes its window quickly after its creation. The delayed
positioning uses window->user_rect because of bug 426519 comment 3 (see
meta_window_move_resize_now()).

user_rect was not set in the initial positioning, causing the delayed
positioning unable to know which monitor we use for this window. As a
consequence, the window could jump spontaneously from one monitor to another.

With this patch, the window does not jump anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=556696
2012-11-30 13:29:26 +00:00
62d85f2e41 Updated Hebrew translation. 2012-11-30 11:53:56 +02:00
5ea6bf3b46 Updated Polish translation 2012-11-27 17:31:03 +01:00
90d0bb96b4 Assamese translation updated 2012-11-23 21:10:23 +05:30
ff64cba616 Rename configure.in to configure.ac
configure.in support for autoconf is going to go away at some point.

https://bugzilla.gnome.org/show_bug.cgi?id=688777
2012-11-20 21:25:12 -05:00
30387df454 Bump version to 3.7.2
Update NEWS
2012-11-19 21:05:22 +01:00
38484bf967 Remove another call to g_type_init() 2012-11-19 21:03:14 +01:00
e73946f0bf MetaBackgroundActor: add a setter for GLSL uniforms
It doesn't make sense to GLSL shaders without uniforms.

https://bugzilla.gnome.org/show_bug.cgi?id=682536
2012-11-17 02:14:38 +01:00
6004197064 keybindings: Add is_builtin() method
https://bugzilla.gnome.org/show_bug.cgi?id=688202
2012-11-17 01:47:06 +01:00
aa43e715c0 keybindings: Add MetaKeyBinding for overlay-key
As the overlay key works differently from normal keybindings, it
requires special treatment. However, by adding a rudimentary
MetaKeyBinding for it, we will be able to confine the special
handling to mutter and treat it like any other keybinding in
the shell.

https://bugzilla.gnome.org/show_bug.cgi?id=688202
2012-11-17 01:47:06 +01:00
424fc5245a Add compositor hook to process keybindings selectively
Currently keybindings are blocked while the compositor holds a grab; if
we want a keybinding to be available anyway, we use captured ClutterEvents
to determine the KeyBindingAction the event would have triggered and
run our own handlers (ugh).
Instead, provide a hook to allow the compositor to filter out keybindings
before processing them normally, regardless of whether the compositor
holds a grab or not.

https://bugzilla.gnome.org/show_bug.cgi?id=688202
2012-11-17 01:47:05 +01:00
90952ac5c8 Fix naming of "user_data" arguments for better introspection 2012-11-16 21:23:47 +01:00
395fbefd3c po: Import translations from Metacity
To save translators some work, import existing translations for the
newly added keybinding files. As a result of a gnome-i18n discussion[0],
all additions are marked as fuzzy.

[0] https://mail.gnome.org/archives/gnome-i18n/2012-November/msg00054.html

https://bugzilla.gnome.org/show_bug.cgi?id=687672
2012-11-13 16:39:07 +01:00
bdf47aeac4 keybindings: Import keybinding files from Metacity
Fallback mode is going away, so we should stop depending on Metacity
for keybinding files for common bindings.

https://bugzilla.gnome.org/show_bug.cgi?id=687672
2012-11-12 19:27:35 +01:00
daac778f16 ui: Remove obsolete GTK+ version check 2012-11-12 19:27:35 +01:00
93a16f6d43 frames: Bump priority of style providers
Since GTK+ commit b1ad5c8abc2c, GtkSetting's CSS provider uses a
priority of GTK_STYLE_PROVIDER_PRIORITY_SETTINGS, which means it
will overwrite the ones we create ourselves.
Bump the priority to fix dark window decorations.

https://bugzilla.gnome.org/show_bug.cgi?id=688182
2012-11-12 19:27:34 +01:00
e46cf80fdd Updated Hebrew translation. 2012-11-07 18:40:37 +02:00
c37c741592 meta-background-actor: Fix compilation error 2012-11-05 19:44:03 +01:00
4cf461fffa display: Only process keyboard mapping events for the core X keyboard
The X server sends a XkbNewKeyboardNotify event for each keyboard
device when a new keyboard description is loaded. These days a typical
computer has several keyboard devices, e.g. xinput on this laptop
lists 8. Since the work we do on these events is relatively expensive
and we are only really interested in changes to the virtual core
keyboard we can skip other devices' events to cut on needless work.

https://bugzilla.gnome.org/show_bug.cgi?id=674859
2012-11-05 19:40:14 +01:00
859ea1457d Add the ability to add shader hooks to MetaBackgroundActor
Using ClutterEffect is not pratical on MetaBackgroundActor, as the FBO
redirection has a noticeable performance impact. Instead, allow adding
GLSL code directly to the pipeline used to draw the background texture.
At the same time, port MetaBackgroundActor to modern Cogl API.

https://bugzilla.gnome.org/show_bug.cgi?id=669798
2012-11-05 19:12:37 +01:00
188d532438 display: Ignore DamageNotify in spew 2012-11-03 19:37:51 -04:00
f258556cec MetaPluginManager: don't send events to Clutter twice
When support for multiple plugins was removed, the logic that was
supposed to send events to Clutter directly *only if there is no filter
function from a plugin* was broken, so events were being sent to
Clutter twice if Clutter didn't consume them the first time.

https://bugzilla.gnome.org/show_bug.cgi?id=686406
2012-11-03 19:36:41 -04:00
62dbaa89ca mutter: Don't call g_type_init
It has been deprecated upstream.
2012-11-02 11:45:11 -04:00
b56396eca5 Updated German translation 2012-10-30 18:59:33 +01:00
0fdc36cac4 Updated Brazilian Portuguese Translation 2012-10-29 16:29:49 -02:00
2cc0d31b17 window: Avoid spurious focus-window changes when showing desktop
When using the show-desktop shortcut with no desktop window, unshowing
will focus the second-most-recently-used window. If we find a desktop
window, it will be focused explicitly and everything works as expected;
however without a desktop window, we end up hiding the focus window,
which will use focus_default_window() with the not_this_one parameter
to move focus away. We used to get away with this, as the not_this_one
parameter was ignored until commit e257580b94, now with bug 675982
fixed, we need to explicitly handle the show-desktop case.

https://bugzilla.gnome.org/show_bug.cgi?id=686928
2012-10-26 15:52:32 +02:00
e2bf91cd61 Bump version to 3.7.1
Update NEWS
2012-10-23 14:50:37 +02:00
294311b2d1 [l10n] Updated Estonian translation 2012-10-22 22:02:58 +03:00
db6d89b742 Updated Norwegian bokmål translation 2012-10-22 19:52:14 +02:00
2717a02a8d screen: Ignore num-workspaces when using dynamic workspaces
On startup, workspaces are initialized according to the num-workspaces
preference. However when using dynamic workspaces, the actual number
of workspaces in use might be greater than the preference (when
replacing the window manager), forcing windows on those workspaces
to the first workspace.
To fix, ignore the preference completely when using dynamic workspaces
and try to restore the previous number of workspaces (as read from
_NET_NUMBER_OF_DESKTOPS).

https://bugzilla.gnome.org/show_bug.cgi?id=685439
2012-10-17 22:43:26 +02:00
4344c9e192 Updated Serbian translation 2012-10-17 10:11:38 +02:00
53e2d34628 Updated Czech translation 2012-10-17 08:27:39 +02:00
c602d53649 Updated Indonesian translation 2012-10-16 23:42:05 +07:00
43a121c8d9 Updated Spanish translation 2012-10-16 18:12:08 +02:00
a8c5100fbb Updated Galician translations 2012-10-16 17:06:40 +02:00
5034bd8a7e Updated Slovenian translation 2012-10-16 15:33:58 +02:00
07d8b9ce19 Revert "delete: Unbreak string freeze"
This reverts commit 09713c5fd4.

https://bugzilla.gnome.org/show_bug.cgi?id=684306
2012-10-16 14:47:37 +02:00
9c5ac65311 Bump version to 3.6.1
Update NEWS
2012-10-15 23:26:37 +02:00
ce8d36a5db [l10n] Updated Catalan (Valencian) translation 2012-10-15 22:39:12 +02:00
27b00d6f63 [l10n] Updated Catalan translation 2012-10-15 22:39:04 +02:00
c441364bd3 Update French translation 2012-10-15 21:26:41 +02:00
1a521e10c3 display: Only manage the default X screen
https://bugzilla.gnome.org/show_bug.cgi?id=648156
2012-10-15 19:18:45 +02:00
e22d941f06 Updated Thai translation 2012-10-15 15:16:47 +07:00
787d22dcd0 Updated Bengali India Translations 2012-10-15 12:30:04 +05:30
22d9182322 Updated Marathi Translations 2012-10-15 11:16:55 +05:30
38295e8202 Updated Danish translation 2012-10-15 06:38:57 +02:00
fe57f7572d Updated Kannada Translations 2012-10-14 23:58:42 +05:30
aade16a9eb Updated Kannada Translations 2012-10-14 23:57:16 +05:30
e31a97759e Updated Bulgarian translation 2012-10-14 17:31:48 +03:00
472662d099 Resize the guard window when the X screen is resized.
Fixes bug #670396. Without this fix the guard window may not
extend over the whole area of the screen after a XRandR
reconfiguration. The effect being that mouse events are
delivered to invisible windows.
2012-10-14 12:16:06 +02:00
027f16b096 Updated Lithuanian translation 2012-10-13 22:55:26 +03:00
5c7fdd67e8 Updated Belarusian translation. 2012-10-13 17:44:15 +03:00
4a0b6793bf Updated Norwegian bokmål translation 2012-10-13 12:51:20 +02:00
228d1bf9aa Updated Spanish translation 2012-10-13 12:28:33 +02:00
85bcb9c121 Updated Korean translation 2012-10-13 18:54:53 +09:00
989a38767e Updated Russian translation 2012-10-13 13:41:26 +04:00
78e72f0a47 Updated Greek translation 2012-10-13 01:00:45 +03:00
0faa623043 Updated Latvian translation 2012-10-12 22:31:27 +03:00
ecd7e662ff Updated British English translation 2012-10-12 18:55:36 +01:00
7d9925ba2e Updated Polish translation 2012-10-12 19:06:59 +02:00
95c6547631 Updated Galician translations 2012-10-11 22:02:10 +02:00
b5235d5a46 Updated Slovenian translation 2012-10-11 19:56:53 +02:00
f3b1e8b3bd Updated Indonesian translation 2012-10-11 21:45:31 +07:00
59bc5b7975 display: (Optionally) delay focus changes in focus-follows-mouse mode
Moving focus immediately on crossing events as we currently do
in focus-follows-mouse mode may trigger a lot of unwanted focus
changes when moving over unrelated windows on the way to a target.
Those accidental focus changes prevent features like GNOME Shell's
application menu from working properly and are visually expensive
since we now use a very distinct style for unfocused windows.
Instead, delay the actual focus change until the pointer has stopped
moving.

https://bugzilla.gnome.org/show_bug.cgi?id=678169
2012-10-11 07:49:21 +02:00
99cbe762d7 Expose MetaPlugin to introspection
Add a type annotation on the xevent_filter vfunc. This is sufficient
to remove the skip annotation on MetaPlugin and MetaPluginClass
without triggering scan errors.

https://bugzilla.gnome.org/show_bug.cgi?id=671098
2012-10-08 17:05:11 -04:00
7a2c019514 window: Don't move the desktop window after monitor hotplug
If someone plugs in a new monitor, while all their regular windows
should move in absolute X coordinates to ensure they stay on the
same monitor, the desktop window should stay put.

https://bugzilla.gnome.org/show_bug.cgi?id=681159
2012-10-07 13:23:04 -03:00
c02e1b6f56 Remove unused public window-property functions
Simplify the set of window-property functions to remove the
unused functions:

 meta_window_reload_properties_from_xwindow()
 meta_window_reload_properties()

And to make:

 meta_window_reload_property()

static. The code is considerably simplified by removing the
plural variants.

https://bugzilla.gnome.org/show_bug.cgi?id=587255
2012-10-03 23:35:35 -04:00
7938458eb8 window-actor: Don't create a mask texture unnecessarily
Mask texture resources may be expensive. Don't create one
if we don't need to, like on an unshaped window without
a frame.

https://bugzilla.gnome.org/show_bug.cgi?id=681676
2012-09-26 13:53:14 -03:00
165e117028 Bump version to 3.6.0
Update NEWS
2012-09-24 22:41:08 +02:00
32cb4a178e [l10n] Updated Estonian translation 2012-09-24 10:56:42 +03:00
7b69780d9a Finnish translation update by Jiri Grönroos 2012-09-24 09:29:55 +03:00
be500e33f9 [l10n] Update Japanese translation 2012-09-24 12:55:14 +09:00
427c5cc42b Updated Belarusian translation. 2012-09-23 13:28:13 +03:00
3f444cb2fe Updated gujarati file 2012-09-22 23:34:54 +05:30
02bc4b54eb Updated Latvian translation 2012-09-22 18:59:21 +03:00
85c46be205 Updated Malayalam file 2012-09-22 01:42:33 +05:30
f97db0215b Updated Telugu Translations 2012-09-21 22:29:46 +05:30
dc79d8aa3d hindi update 2012-09-21 17:09:18 +05:30
00fecb6cea hindi update 2012-09-21 17:04:11 +05:30
f0e97b540f Uploaded Ukranian 2012-09-21 10:05:23 +03:00
37266aabfe Updated Bulgarian translation 2012-09-19 20:36:13 +03:00
6cc423cca6 Bump version to 3.5.92
Update NEWS
2012-09-19 15:10:26 +02:00
ce820702e3 doap: Add myself as maintainer 2012-09-19 15:09:43 +02:00
5eb72743dd util: Guard against older zenity versions
Plenty of ugly here, but it works; revert when the zenity version
we depend on stops being bleeding-edge (or we can assume a zenity
version that does not error out on unknown options).

https://bugzilla.gnome.org/show_bug.cgi?id=684306
2012-09-19 15:09:43 +02:00
ae1be578ba util: Use a sad face in the force-quit dialog
https://bugzilla.gnome.org/show_bug.cgi?id=684306
2012-09-19 15:09:42 +02:00
7e1e9320bc utils: Request a modal dialog when transient_for is set
https://bugzilla.gnome.org/show_bug.cgi?id=684306
2012-09-19 15:09:42 +02:00
18a1ed6ec5 Updated Czech translation 2012-09-19 13:38:27 +02:00
09713c5fd4 delete: Unbreak string freeze
Quotes should definitively part of the translation, but we are in
string freeze now - revert this when we get a string freeze approval
or after the freeze ends.

https://bugzilla.gnome.org/show_bug.cgi?id=684306
2012-09-19 11:21:39 +02:00
909cd82bea Minor improvements to the not responding dialog
https://bugzilla.gnome.org/show_bug.cgi?id=684306
2012-09-19 11:15:06 +02:00
0593df8fe0 display: Add API to set wm_name / wm_keybindings
As plugins can now define their own keyboard shortcuts via
meta_display_add_keybinding(), it makes sense for them to
expose those shortcuts to System Settings, so add some API
to set the properties gnome-control-center uses to pick up
wm keybinding settings.

https://bugzilla.gnome.org/show_bug.cgi?id=671010
2012-09-18 12:53:28 +02:00
29b3e69dfa Updated translation for Brazilian Portuguese. 2012-09-17 16:25:52 -04:00
639d5e4710 Updated Danish translation 2012-09-16 13:35:20 +02:00
8c36cf5939 Updated Korean translation 2012-09-15 18:05:02 +09:00
cc107c0eda Updated Vietnamese translation 2012-09-13 20:38:34 +07:00
c7f70d71f7 Updated Greek translation 2012-09-13 04:47:29 +03:00
9c6ccf96a5 [l10n] Updated German translation 2012-09-09 13:14:23 +02:00
11262b76df Updated Polish translation 2012-09-08 15:39:38 +02:00
8fcc0db0c1 [l10n]Updated Catalan (Valencian) translation 2012-09-07 16:57:15 +02:00
7c999a9d13 [l10n] Updated Catalan translation 2012-09-07 16:57:09 +02:00
efc55347e0 Updated Thai translation. 2012-09-07 19:47:45 +07:00
5f11158721 Update French translation 2012-09-06 18:35:42 +02:00
88ee5a68d9 Update French translation 2012-09-06 17:40:25 +02:00
e1870a41b1 Updated British English translation 2012-09-05 19:47:27 +01:00
bb74499188 updated Tamil translation 2012-09-05 21:30:29 +05:30
079822c3f4 screen: Allow NULL out arguments in meta_screen_get_size 2012-09-05 16:40:01 +02:00
bfacd9d420 keybindings: Correct annotations for meta_keybindings_set_custom_handler
We need @handler to be marked as (allow-none). At the same time,
give the function a more useful docstring.
2012-09-04 17:07:58 -03:00
36361b86d4 Updated Polish translation 2012-09-04 19:34:48 +02:00
7c9c232d14 Updated Hungarian translation 2012-09-04 19:15:09 +02:00
14c460c7fd Bump version to 3.5.91
Update NEWS
2012-09-04 09:10:35 +02:00
0371194191 window-group: Add missing cast 2012-09-04 09:10:35 +02:00
3b0c7c568d window-group: Remove unused variables 2012-09-04 08:56:48 +02:00
08893400a0 Updated Swedish translation 2012-09-02 10:50:36 +02:00
03cde43646 Updated Lithuanian translation 2012-09-01 22:58:25 +03:00
8617efb544 Updated Vietnamese translation 2012-09-01 22:32:12 +07:00
db4298502e po/vi: import from Damned Lies 2012-09-01 22:31:43 +07:00
9f90f25e80 Updated Galician translations 2012-09-01 12:33:35 +02:00
1fdde85f53 Updated Portuguese translation 2012-09-01 01:44:01 +01:00
0e529fba00 Updated Greek translation 2012-08-31 16:38:50 +03:00
6a32fa9452 keybindings: Fix unsetting of overlay-key
Commit 802c1ac427 fixed updating the overlay key on settings
changes, but missed the case where the setting was set to an
empty value to disable the overlay key altogether.

https://bugzilla.gnome.org/show_bug.cgi?id=682993
2012-08-29 23:20:49 +02:00
b422b6f06e keybindings: Silence a compiler warning
https://bugzilla.gnome.org/show_bug.cgi?id=682993
2012-08-29 23:20:49 +02:00
bc96a14185 window-group: Subtract the unredirected window in stage space
meta_window_group_paint tries to carefully figure out which parts of the
scene it can avoid painting. One area it avoids painting is the region of
the screen occupied by an unredirected window (if there's one present).
When subtracting from the visible region, it gets the coordinate spaces
confused, and ends up subtracting the area at the wrong offset. Fix this
by translating the rectangle subtracted from the visible region.

https://bugzilla.gnome.org/show_bug.cgi?id=677116
2012-08-29 15:38:53 -03:00
fbcddbcf3e window-group: Skip the unredirected window
We shouldn't need to process it here.

https://bugzilla.gnome.org/show_bug.cgi?id=677116
2012-08-29 15:23:06 -03:00
dfe8979a90 window-group: Don't create a region when we have an unredirected window
We don't do anything with it other than modify an existing region.

https://bugzilla.gnome.org/show_bug.cgi?id=677116
2012-08-29 15:06:09 -03:00
c3a6de749b Don't include markup in app not responding dialog
We escaped the <tt> markup, making it visible in the ui.
2012-08-28 16:42:30 +02:00
935e820a1d Implemented FUEL entries to Assamese translation 2012-08-28 00:39:44 +05:30
f4125b95ca [l10n] Updated Italian translation. 2012-08-26 21:50:23 +02:00
d8bc7f7aa1 window-actor: Fix a memory leak
We need to free the frame_paint_region here.

https://bugzilla.gnome.org/show_bug.cgi?id=682648
2012-08-25 05:51:01 -03:00
6d67ee3965 Updated Russian translation 2012-08-24 22:22:01 +04:00
991ea50038 update Punjabi Translation 2012-08-22 09:00:03 +05:30
885a6afdcd Updated Polish translation 2012-08-22 03:03:52 +02:00
0106f8bab1 Updated Indonesian translation 2012-08-21 22:07:52 +07:00
d27bccd0ba Bump version to 3.5.90
Update NEWS
2012-08-21 15:33:30 +02:00
c66488210c Updated Marathi Translations 2012-08-17 10:22:02 +05:30
6c3985220e keybindings: Add MetaKeybindingAction for overview-key
Currently gnome-shell hardcodes <super> as overlay key when it has
a keyboard grab. In order to fix this, add a corresponding keybinding
action.

https://bugzilla.gnome.org/show_bug.cgi?id=665547
2012-08-16 09:40:47 +02:00
802c1ac427 prefs: Update overlay-key on settings changes
When changing the overlay-key setting, the change only takes effect
on restart - there are actually two bugs involved:
  (1) the test whether the key has changed is located in the
      else part of a test for string settings (and overlay-key happens
      to be a string settings ...)
  (2) with (1) fixed, a change signal is emitted, which triggers a
      reload of all keybindings - unfortunately, the actual value
      of overlay-key is only read on startup, so the key is reloaded
      using the old value
Fix both issues by replacing the custom handling of the overlay-key
with the regular handling of string preferences.

https://bugzilla.gnome.org/show_bug.cgi?id=681906
2012-08-16 09:40:47 +02:00
7a2a6e2675 MetaWindowGroup: Fix bad merge
I accidentally committed merge indicators: fix compilation.
2012-08-15 22:46:23 -04:00
c27b4b7cfc MetaWindowGroup: Handle painting inside a ClutterClone
Look at the current COGL model-view matrix and use that to find
out any offset we are painting at as a result of being inside
a ClutterClone.

https://bugzilla.gnome.org/show_bug.cgi?id=681953
2012-08-15 20:43:19 -04:00
0ab572d511 MetaWindowGroup: fix logic for handling translations
Instead of getting the x/y of the MetaBackgroundActor with respect to the
parent, use the same logic that we do for windows, fixing the case
where there is a more complex transformation involved.

https://bugzilla.gnome.org/show_bug.cgi?id=681221
2012-08-15 20:43:07 -04:00
1c8d45e89c Updated Arabic translation 2012-08-14 23:59:54 +02:00
4e2c2cb1ab shadows: Adjust values for attached modal dialogs
The designers consider the current shadow too dramatic for the new
centered position; adjust the shadow to use the same values as
popup menus.
2012-08-10 16:36:26 +02:00
07dd4d3f93 configure.in: Remove gnome-doc-utils unneded dependency 2012-08-10 03:24:10 +09:00
22370bef09 [l10n]Updated Turkish translation 2012-08-09 16:58:30 +03:00
f8d443b5b8 Updated gujarati file 2012-08-08 12:40:56 +05:30
f22ecd1c57 Updated gujarati file 2012-08-08 12:12:50 +05:30
b85be9312b Bump version to 3.5.5
Update NEWS
2012-08-07 01:33:19 +02:00
cd0870730f window-group: Translate background's visible region as necessary
Currently when the window group is moved, the visible region set
on the background actor no longer matches the actually visible
region, resulting in flickering around window actors.
Fix by translating the visible region with the window group.

https://bugzilla.gnome.org/show_bug.cgi?id=681221
2012-08-07 01:28:09 +02:00
d6be75ae99 Updated Galician translations 2012-07-31 02:02:49 +02:00
c1be7f1a60 Updated Norwegian bokmål translation 2012-07-25 16:30:18 +02:00
fccd5fd4ca Updated Hebrew translation. 2012-07-24 22:26:32 +03:00
1e5ef70fe3 Updated Serbian translation 2012-07-22 09:25:23 +02:00
1347a06e38 Updated Slovenian translation 2012-07-19 10:13:34 +02:00
169 changed files with 40451 additions and 37757 deletions

19
.gitignore vendored
View File

@ -19,6 +19,8 @@ libtool
ltmain.sh
missing
.deps
src/50-mutter-navigation.xml
src/50-mutter-system.xml
src/50-mutter-windows.xml
src/mutter-wm.desktop
src/mutter.desktop
@ -73,3 +75,20 @@ src/stamp-mutter-enum-types.h
src/mutter-marshal.[ch]
src/stamp-mutter-marshal.h
src/mutter-plugins.pc
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

View File

@ -4,3 +4,5 @@ SUBDIRS=src po doc
EXTRA_DIST = HACKING MAINTAINERS rationales.txt
DISTCLEANFILES = intltool-extract intltool-merge intltool-update po/stamp-it po/.intltool-merge-cache
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc

245
NEWS
View File

@ -1,3 +1,248 @@
3.7.92
======
* Build and improve reference docs [Tomeu; #676856, #695641, #695935]
* Add tracking of whether there are fullscreen windows [Owen; 649748]
* Misc bug fixes and cleanups [Adel, Giovanni, Owen, Jasper, Florian; #695269,
#695711, #694046, #695813, #695881, #676856, #696053, #682779, #696089,
#696091, #696087]
Contributors:
Giovanni Campagna, Adel Gadllah, Florian Müllner, Jasper St. Pierre,
Tomeu Vizoso, Owen W. Taylor
Translations:
Chao-Hsiung Liao [zh_HK, zh_TW], Rafael Ferreira [pt_BR],
Ihar Hrachyshka [be], Nilamdyuti Goswami [as], Matej Urbančič [sl],
Dimitris Spingos [el], Jan Kyselica [sk], Khaled Hosny [ar],
Мирослав Николић [sr, sr@latin], Duarte Loreto [pt], Sweta Kothari [gu],
Milo Casagrande [it], Changwoo Ryu [ko], Gil Forcada [ca],
Carles Ferrando [ca@valencia], Mattias Põldaru [et], Alexandre Franke [fr],
Ask H. Larsen [da], Rūdolfs Mazurs [lv], Nguyễn Thái Ngọc Duy [vi]
3.7.91
======
* Fix windows being treated as remote after hostname changes [Ray; #688716]
* Add meta_window_get_all_monitors() method [Adel; #646861]
* Add grab API for externally defined accelerators [Florian; #643111]
* Make session registration an explicit step [Ray; #694876]
* Avoid unnecessary stage redraws [Adel; #694988, #695006]
* Misc fixes [Giovanni, Ray, Jasper, Rui, Pavel, Owen; #694801, #694725,
#694641, #694393, #678917, #695093, #694837, #695135, #694771, #694321]
Contributors:
Giovanni Campagna, Adel Gadllah, Rui Matos, Florian Müllner,
Jasper St. Pierre, Ray Strode, Owen Taylor, Pavel Vasin
Translations:
Daniel Mustieles [es], Yaron Shahrabani [he], A S Alam [pa], Piotr Drąg [pl],
Gheyret Kenji [ug], Alexandre Franke [fr], Milo Casagrande [it],
Fran Diéguez [gl], Dimitris Spingos [el], Мирослав Николић [sr, sr@latin],
Chao-Hsiung Liao [zh_HK, zh_TW], Nguyễn Thái Ngọc Duy [vi],
Aurimas Černius [lt], Mario Blättermann [de], Kjartan Maraas [nb]
3.7.90
======
* Support _NET_WM_OPAQUE_REGION [Jasper, Adel; #679901]
* Add wrapper for XI2.3 pointer barriers [Jasper; #677215]
* Update style of resize popups [Cosimo; #692741]
* Implement compositor <-> application frame synchronization [Owen; #685463]
* Handle animated backgrounds [Ray; #682427]
* Add a new window group for override-redirect windows [Gayan; #633620]
* Pass on pointer events on guard window to Clutter [Jasper; #681540]
* Show correct shortcut in window menus [Giovanni; #694045]
* Don't put minimized windows at the back of alt-tab [Jasper; #693991]
* Misc bug fixes and cleanups [Jasper, Rico, Adel, Florian, Rui, Giovanni,
Owen; #692679, #693354, #690581, #693439, #692718, #693475, #693482, #693540,
#690580, #680990, #693833, #693922, #693854, #694224]
Contributors:
Giovanni Campagna, Cosimo Cecchi, Adel Gadllah, Rui Matos, Florian Müllner,
Gayan Perera, Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz
Translations:
Fran Diéguez [gl], A S Alam [pa], Alexandre Franke [fr], Aurimas Černius [lt],
Мирослав Николић [sr, sr@latin], Fran Diéguez [gl], Piotr Drąg [pl],
Luca Ferretti [it], Daniel Mustieles [es]
3.7.5
=====
* Don't allow multiline window titles [Jon; #683056]
* Make meta_window_located_on_workspace() public [Jasper; #691744]
* Request XI2.3 [Colin; #692877]
* Add meta_window_set_icon_geometry() method [Florian; #692997]
* Require XFixes 5.0 [Jasper; #677215]
* Change unredirection hints to match spec changes [Adel; #693064]
* Improve unredict heuristicts [Adel; #683786]
* Misc bug fixes and cleanups [Florian, Jasper, Adel; #691874, #679901,
#692952, #693042]
Contributors:
Adel Gadllah, William Jon McCann, Florian Müllner, Jasper St. Pierre,
Colin Walters
Translations:
Daniel Mustieles [es], Ihar Hrachyshka [be], Nilamdyuti Goswami [as],
Gheyret Kenji [ug], Kjartan Maraas [nb], Yaron Shahrabani [he],
Piotr Drąg [pl], Chao-Hsiung Liao [zh_HK,zh_TW], Milo Casagrande [it]
3.7.4
=====
* Add support for bypass compositor hints [Adel; #683020]
* Make automaximization optional [Adel; #680990]
* Add method for checking if the application is responding [Giovanni; #684340]
* Expose the xinput opcode [Jasper; #690590]
* Rebrand "minimize" as "hide" [Florian; #682887]
* Misc bug fixes and cleanups [Giovanni, Ray, Jasper, Matthias, Debarshi,
Florian, Rui; #690454, #690573, #690593, #690956, #691363, #690609, #690317,
#689263]
Contributors:
Giovanni Campagna, Matthias Clasen, Adel Gadllah, Rui Matos, Florian Müllner,
Debarshi Ray, Jasper St. Pierre, Ray Strode
Translations:
Mattias Põldaru [et], Yaron Shahrabani [he], Daniel Mustieles [es],
Khaled Hosny [ar], Fran Diéguez [gl], A S Alam [pa], Piotr Drąg [pl],
Rafael Ferreira [pt_BR], Nilamdyuti Goswami [as], Alexander Shopov [bg],
Matej Urbančič [sl]
3.7.3
=====
* Fix maximized windows jumping to other monitors [Alban; #556696]
* Add 'switch-applications' keybinding [Florian; #688913]
* Add a convenience method to focus the default window [Jasper; #689652]
* Increase typical icon size to 96 [Jasper; #689651]
* Port to XInput2 [Jasper; #688779]
* Give dynamic keybindings a keybinding action [Florian; #682315]
* Misc. fixes and cleanups [Jasper, Rui; #688777]
Contributors:
Alban Crequy, Rui Matos, Florian Müllner, Jasper St. Pierre
Translations:
Nilamdyuti Goswami [as], Piotr Drąg [pl], Yaron Shahrabani [he],
Dr.T.Vasudevan [ta], ManojKumar Giri [or], Shankar Prasad [kn]
3.7.2
=====
* Fix spurious focus changes when showing desktop [Florian; #686928]
* MetaPluginManager: don't send events to Clutter twice [Owen; #686406]
* Add the ability to add shader hooks to MetaBackgroundActor [Giovanni; #669798]
* Only process keyboard mapping events for the core X keyboard [Rui; #674859]
* Import keybinding files from Metacity [Florian; #687672]
* Add compositor hook to process keybindings selectively [Florian; #688202]
* MetaBackgroundActor: add a setter for GLSL uniforms [Giovanni; #682536]
* Misc. fixes and cleanups [Jasper, Rui, Florian, Rico; #688182]
Contributors:
Giovanni Campagna, Rui Matos, Florian Müllner, Jasper St. Pierre,
Owen Taylor, Rico Tzschichholz
Translations:
Rafael Ferreira [pt_BR], Tobias Endrigkeit [de], Yaron Shahrabani [he]
3.7.1
=====
* screen: Ignore num-workspaces when using dynamic workspaces [Florian; #685439]
Contributors:
Florian Müllner
Translations:
Mattias Põldaru [et], Kjartan Maraas [nb], Мирослав Николић [sr, sr@latin],
Marek Černocký [cs], Andika Triwidada [id], Daniel Mustieles [es],
Fran Diéguez [gl], Matej Urbančič [sl]
3.6.1
=====
* Fix crash when opening large popup menus [Jasper; #681676]
* window: Don't move the desktop window after monitor hotplug [Jasper; #681159]
* Expose MetaPlugin to introspection [Evan; #671098]
* Optionally delay focus changes in focus-follows-mouse mode [Florian; #678169]
* Resize the guard window when the X screen is resized [Benjamin; #670396]
* display: Only manage the default X screen [Jürg; #648156]
* Misc cleanups: [Owen; #587255]
Contributors:
Benjamin Berg, Jürg Billeter, Evan Broder, Florian Müllner, Jasper St. Pierre,
Owen Taylor
Translations:
Alexandre Franke [fr], Theppitak Karoonboonyanan [th], Sayak Sarkar [bn_IN],
Sandeep Sheshrao Shedmake [mr], Ask H. Larsen [da], Shankar Prasad [kn],
Alexander Shopov [bg], Aurimas Černius [lt], Ihar Hrachyshka [be],
Kjartan Maraas [nb], Daniel Mustieles [es], Changwoo Ryu [ko],
Yuri Myasoedov [ru], Tom Tryfonidis [el], Rūdolfs Mazurs [lv],
Chris Leonard [en_GB], Piotr Drąg [pl], Fran Diéguez [gl], Gil Forcada [ca],
Matej Urbančič [sl], Andika Triwidada [id], Carles Ferrando [ca]
3.6.0
=====
Translations:
Alexander Shopov [bg], Daniel Korostil [uk], Rajesh Ranjan [hi],
Krishnababu Krothapalli [te], Ani Peter [ml], Rūdolfs Mazurs [lv],
Sweta Kothari [gu], Ihar Hrachyshka [be], Noriko Mizumoto [ja],
Timo Jyrinki [fi], Mattias Põldaru [et]
3.5.92
======
* screen: Allow NULL out arguments in meta_screen_get_size [Tomeu]
* display: Add API to set wm_name / wm_keybindings [Florian; #671010]
* Improve the not responding dialog [Jon, Florian; #684306]
* Misc. bugfixes [Jasper]
Contributors:
William Jon McCann, Florian Müllner, Jasper St. Pierre, Tomeu Vizoso
Translations:
Gabor Kelemen [hu], Piotr Drąg [pl], Dr.T.Vasudevan [ta], Bruce Cowan [en_GB],
Alexandre Franke [fr], Theppitak Karoonboonyanan [th], Gil Forcada [ca],
Carles Ferrando [ca@valencia], Tobias Endrigkeit [de], Tom Tryfonidis [el],
Nguyễn Thái Ngọc Duy [vi], Changwoo Ryu [ko], Ask H. Larsen [da],
Rafael Ferreira [pt_BR], Marek Černocký [cs]
3.5.91
======
* Do not include markup in app not responding dialog [Alex]
* Fix subtracting unredirected windows from visible region [Jasper; #677116]
* Minor improvements and bugfixes [Jasper, Florian; #682648, #682993]
Contributors:
Alexander Larsson, Florian Müllner, Jasper St. Pierre
Translations:
Dirgita [id], Piotr Drąg [pl], A S Alam [pa], Yuri Myasoedov [ru],
Milo Casagrande [it], Nilamdyuti Goswami [as], Tom Tryfonidis [el],
Duarte Loreto [pt], Fran Diéguez [gl], Nguyễn Thái Ngọc Duy [vi],
Aurimas Černius [lt], Daniel Nylander [sv]
3.5.90
======
* Fix logic for handling translations of the windows group [Owen; #681221]
* Handle painting inside a Clutter clone [Owen; #681953]
* Update overlay-key on settings changes [Florian; #681906]
* Add keybinding for overlay-key [Florian; #665547]
* Minor fixes and improvements [Javier, Florian]
Contributors:
Javier Jardón, Florian Müllner, Owen Taylor
Translations:
Sweta Kothari [gu], Muhammet Kara [tr], Khaled Hosny [ar],
Sandeep Sheshrao Shedmake [mr]
3.5.5
=====
* Fix flickering around windows when using window group [Tom; #681221]
Contributor(s):
Tom Beckmann
Translations:
Chao-Hsiung Liao [zh_HK, zh_TW], Matej Urbančič [sl], Fran Diéguez [gl],
Мирослав Николић [sr, sr@latin], Yaron Shahrabani [he], Kjartan Maraas [nb]
3.5.4
=====
* Make it possible to reimplement move-to-workspace keybindings from plugins

18
README
View File

@ -1,16 +1,10 @@
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 original codebase named "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.
Since then, it has been renamed mutter after a rebase on top of
clutter as a compositing manager.
COMPILING MUTTER
===

View File

@ -7,7 +7,7 @@ test -z "$srcdir" && srcdir=.
PKG_NAME="mutter"
REQUIRED_AUTOMAKE_VERSION=1.10
(test -f $srcdir/configure.in \
(test -f $srcdir/configure.ac \
&& test -d $srcdir/src) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level metacity directory"

View File

@ -1,8 +1,8 @@
AC_PREREQ(2.50)
m4_define([mutter_major_version], [3])
m4_define([mutter_minor_version], [5])
m4_define([mutter_micro_version], [4])
m4_define([mutter_minor_version], [7])
m4_define([mutter_micro_version], [92])
m4_define([mutter_version],
[mutter_major_version.mutter_minor_version.mutter_micro_version])
@ -71,10 +71,10 @@ MUTTER_PC_MODULES="
gio-2.0 >= 2.25.10
pango >= 1.2.0
cairo >= 1.10.0
gsettings-desktop-schemas >= 3.3.0
xcomposite >= 0.2 xfixes xrender xdamage
$CLUTTER_PACKAGE >= 1.9.10
cogl-1.0 >= 1.9.6
gsettings-desktop-schemas >= 3.7.3
xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
$CLUTTER_PACKAGE >= 1.13.5
cogl-1.0 >= 1.13.3
"
GLIB_GSETTINGS
@ -201,6 +201,9 @@ fi
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
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)
@ -361,11 +364,7 @@ if test "x$enable_debug" = "xyes"; then
CFLAGS="$CFLAGS -g -O"
fi
# For fix-meta-rectangle.py
AM_PATH_PYTHON([2.5])
# Use gnome-doc-utils:
GNOME_DOC_INIT([0.8.0])
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
#### Warnings (last since -Werror can disturb other tests)
@ -437,6 +436,8 @@ AC_CONFIG_FILES([
Makefile
doc/Makefile
doc/man/Makefile
doc/reference/Makefile
doc/reference/meta-docs.sgml
src/Makefile
src/wm-tester/Makefile
src/libmutter.pc

View File

@ -1,4 +1,4 @@
SUBDIRS = man
SUBDIRS = man reference
EXTRA_DIST=theme-format.txt dialogs.txt code-overview.txt \
how-to-get-focus-right.txt

166
doc/reference/Makefile.am Normal file
View File

@ -0,0 +1,166 @@
## Process this file with automake to produce Makefile.in
# We require automake 1.6 at least.
AUTOMAKE_OPTIONS = 1.6
# This is a blank Makefile.am for using gtk-doc.
# Copy this to your project's API docs directory and modify the variables to
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
# of using the various options.
# The name of the module, e.g. 'glib'.
DOC_MODULE=meta
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
#DOC_MODULE_VERSION=2
# The top-level SGML file. You can change this if you want to.
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
# Directories containing the source code, relative to $(srcdir).
# gtk-doc will search all .c and .h files beneath these paths
# for inline comments documenting functions and macros.
# e.g. DOC_SOURCE_DIR=../../../gtk ../../../gdk
DOC_SOURCE_DIR=../../src/
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
SCANGOBJ_OPTIONS=
# Extra options to supply to gtkdoc-scan.
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
SCAN_OPTIONS=--rebuild-types
# Extra options to supply to gtkdoc-mkdb.
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
MKDB_OPTIONS=--xml-mode --output-format=xml
# Extra options to supply to gtkdoc-mktmpl
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
MKTMPL_OPTIONS=
# Extra options to supply to gtkdoc-mkhtml
MKHTML_OPTIONS=
# Extra options to supply to gtkdoc-fixref. Not normally needed.
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
FIXXREF_OPTIONS=
# Used for dependencies. The docs will be rebuilt if any of these change.
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
HFILE_GLOB=$(top_srcdir)/src/*.h
CFILE_GLOB=$(top_srcdir)/src/*.c
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
EXTRA_HFILES=
# Header files or dirs to ignore when scanning. Use base file/dir names
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
IGNORE_HFILES= \
async-getprop.h \
atoms.h \
bell.h \
boxes-private.h \
clutter-utils.h \
cogl-utils.h \
compositor-private.h \
constraints.h \
core.h \
display-private.h \
draw-workspace.h \
edge-resistance.h \
eventqueue.h \
frame.h \
frames.h \
group-private.h \
group-props.h \
iconcache.h \
inlinepixbufs.h \
keybindings-private.h \
menu.h \
metaaccellabel.h \
meta-background-actor-private.h \
meta-background-group-private.h \
meta-module.h \
meta-plugin-manager.h \
meta-shadow-factory-private.h \
meta-texture-rectangle.h \
meta-texture-tower.h \
meta-window-actor-private.h \
meta-window-group.h \
meta-window-shape.h \
mutter-enum-types.h \
mutter-Xatomtype.h \
place.h \
preview-widget.h \
region-utils.h \
resizepopup.h \
screen-private.h \
session.h \
stack.h \
stack-tracker.h \
stamp-mutter-enum-types.h \
tabpopup.h \
theme.h \
theme-private.h \
tile-preview.h \
ui.h \
window-private.h \
window-props.h \
workspace-private.h \
xprops.h \
$(NULL)
MKDB_OPTIONS+=--ignore-files="$(IGNORE_HFILES)"
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
HTML_IMAGES=
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
content_files= \
mutter-overview.xml \
running-mutter.xml \
$(NULL)
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
# These files must be listed here *and* in content_files
# e.g. expand_content_files=running.sgml
expand_content_files= \
mutter-overview.xml \
running-mutter.xml \
$(NULL)
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
# signals and properties.
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
GTKDOC_CFLAGS=$(MUTTER_CFLAGS)
GTKDOC_LIBS=$(MUTTER_LIBS) $(top_builddir)/src/libmutter.la
# This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.make
# Other files to distribute
# e.g. EXTRA_DIST += version.xml.in
EXTRA_DIST +=
# Files not to distribute
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
DISTCLEANFILES = $(DOC_MODULES).types
# Comment this out if you want 'make check' to test you doc status
# and run some sanity checks
if ENABLE_GTK_DOC
TESTS_ENVIRONMENT = cd $(srcdir) && \
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
#TESTS = $(GTKDOC_CHECK)
endif
-include $(top_srcdir)/git.mk

View File

@ -0,0 +1,59 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
[
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version "@VERSION@">
]>
<book id="index">
<bookinfo>
<title>Mutter Reference Manual</title>
<releaseinfo>
This document is for Mutter &version;.
The latest version of this documentation can be found on-line at
<ulink role="online-location" url="http://developer.gnome.org/meta/">http://developer.gnome.org/meta/</ulink>.
</releaseinfo>
</bookinfo>
<xi:include href="xml/mutter-overview.xml"/>
<xi:include href="xml/running-mutter.xml"/>
<part id="core-reference">
<title>Mutter Core Reference</title>
<xi:include href="xml/main.xml"/>
<xi:include href="xml/common.xml"/>
<xi:include href="xml/gradient.xml"/>
<xi:include href="xml/prefs.xml"/>
<xi:include href="xml/util.xml"/>
<xi:include href="xml/errors.xml"/>
<xi:include href="xml/meta-plugin.xml"/>
<xi:include href="xml/barrier.xml"/>
<xi:include href="xml/boxes.xml"/>
<xi:include href="xml/compositor.xml"/>
<xi:include href="xml/display.xml"/>
<xi:include href="xml/group.xml"/>
<xi:include href="xml/keybindings.xml"/>
<xi:include href="xml/meta-background-actor.xml"/>
<xi:include href="xml/meta-shadow-factory.xml"/>
<xi:include href="xml/meta-shaped-texture.xml"/>
<xi:include href="xml/meta-window-actor.xml"/>
<xi:include href="xml/screen.xml"/>
<xi:include href="xml/window.xml"/>
<xi:include href="xml/workspace.xml"/>
</part>
<chapter id="object-tree">
<title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/>
</chapter>
<index id="api-index-full">
<title>API Index</title>
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
</index>
<index id="deprecated-api-index" role="deprecated">
<title>Index of deprecated API</title>
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
</index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>

View File

@ -0,0 +1,667 @@
<SECTION>
<FILE>barrier</FILE>
<TITLE>MetaBarrier</TITLE>
MetaBarrier
MetaBarrierClass
meta_barrier_is_active
meta_barrier_destroy
meta_barrier_release
MetaBarrierDirection
MetaBarrierEvent
<SUBSECTION Standard>
META_BARRIER
META_BARRIER_CLASS
META_BARRIER_GET_CLASS
META_IS_BARRIER
META_IS_BARRIER_CLASS
META_TYPE_BARRIER
META_TYPE_BARRIER_EVENT
MetaBarrierPrivate
meta_barrier_event_get_type
meta_barrier_get_type
</SECTION>
<SECTION>
<FILE>boxes</FILE>
MetaRectangle
MetaStrut
MetaEdgeType
MetaEdge
meta_rectangle_copy
meta_rectangle_free
meta_rect
meta_rectangle_area
meta_rectangle_intersect
meta_rectangle_equal
meta_rectangle_union
meta_rectangle_overlap
meta_rectangle_vert_overlap
meta_rectangle_horiz_overlap
meta_rectangle_could_fit_rect
meta_rectangle_contains_rect
<SUBSECTION Standard>
META_TYPE_RECTANGLE
meta_rectangle_get_type
</SECTION>
<SECTION>
<FILE>common</FILE>
META_VIRTUAL_CORE_POINTER_ID
META_VIRTUAL_CORE_KEYBOARD_ID
MetaFrameFlags
MetaMenuOp
MetaWindowMenuFunc
MetaGrabOp
MetaCursor
MetaFrameType
MetaVirtualModifier
MetaDirection
MetaMotionDirection
MetaSide
MetaButtonFunction
MAX_BUTTONS_PER_CORNER
MetaButtonLayout
MetaFrameBorders
meta_frame_borders_clear
META_ICON_WIDTH
META_ICON_HEIGHT
META_MINI_ICON_WIDTH
META_MINI_ICON_HEIGHT
META_DEFAULT_ICON_NAME
META_PRIORITY_RESIZE
META_PRIORITY_BEFORE_REDRAW
META_PRIORITY_REDRAW
META_PRIORITY_PREFS_NOTIFY
POINT_IN_RECT
MetaStackLayer
MetaWindowMenu
MetaResizePopup
</SECTION>
<SECTION>
<FILE>compositor</FILE>
MetaCompEffect
MetaCompositor
meta_compositor_new
meta_compositor_destroy
meta_compositor_manage_screen
meta_compositor_unmanage_screen
meta_compositor_window_shape_changed
meta_compositor_process_event
meta_compositor_filter_keybinding
meta_compositor_add_window
meta_compositor_remove_window
meta_compositor_show_window
meta_compositor_hide_window
meta_compositor_switch_workspace
meta_compositor_maximize_window
meta_compositor_unmaximize_window
meta_compositor_window_mapped
meta_compositor_window_unmapped
meta_compositor_sync_window_geometry
meta_compositor_set_updates_frozen
meta_compositor_queue_frame_drawn
meta_compositor_sync_stack
meta_compositor_sync_screen_size
meta_compositor_flash_screen
meta_get_stage_for_screen
meta_get_overlay_group_for_screen
meta_get_overlay_window
meta_get_window_actors
meta_get_window_group_for_screen
meta_get_top_window_group_for_screen
meta_disable_unredirect_for_screen
meta_enable_unredirect_for_screen
meta_set_stage_input_region
meta_empty_stage_input_region
</SECTION>
<SECTION>
<FILE>display</FILE>
MetaTabList
MetaTabShowType
meta_XFree
meta_display_get_compositor_version
meta_display_get_xinput_opcode
meta_display_supports_extended_barriers
meta_display_get_xdisplay
meta_display_get_compositor
meta_display_get_screens
meta_display_has_shape
meta_display_screen_for_root
meta_display_get_focus_window
meta_display_xwindow_is_a_no_focus_window
meta_display_get_damage_event_base
meta_display_get_shape_event_base
meta_display_xserver_time_is_before
meta_display_get_last_user_time
meta_display_get_current_time
meta_display_get_current_time_roundtrip
meta_display_get_ignored_modifier_mask
meta_display_get_tab_list
meta_display_get_tab_next
meta_display_get_tab_current
meta_display_begin_grab_op
meta_display_end_grab_op
meta_display_get_grab_op
meta_display_add_keybinding
meta_display_remove_keybinding
meta_display_get_keybinding_action
meta_display_set_input_focus_window
meta_display_focus_the_no_focus_window
meta_display_sort_windows_by_stacking
meta_display_get_leader_window
meta_display_add_ignored_crossing_serial
meta_display_unmanage_screen
meta_display_clear_mouse_mode
MetaDisplay
MetaDisplayClass
<SUBSECTION Standard>
META_DISPLAY
META_DISPLAY_CLASS
META_DISPLAY_GET_CLASS
META_IS_DISPLAY
META_IS_DISPLAY_CLASS
META_TYPE_DISPLAY
meta_display_get_type
</SECTION>
<SECTION>
<FILE>errors</FILE>
meta_error_trap_push
meta_error_trap_pop
meta_error_trap_push_with_return
meta_error_trap_pop_with_return
</SECTION>
<SECTION>
<FILE>gradient</FILE>
MetaGradientType
meta_gradient_create_simple
meta_gradient_create_multi
meta_gradient_create_interwoven
meta_gradient_add_alpha
</SECTION>
<SECTION>
<FILE>group</FILE>
MetaGroup
meta_window_get_group
meta_window_compute_group
meta_window_shutdown_group
meta_window_group_leader_changed
meta_display_lookup_group
meta_group_list_windows
meta_group_update_layers
meta_group_get_startup_id
meta_group_get_size
meta_group_property_notify
</SECTION>
<SECTION>
<FILE>keybindings</FILE>
MetaKeyBinding
META_TYPE_KEY_BINDING
meta_key_binding_get_name
meta_key_binding_get_modifiers
meta_key_binding_get_mask
meta_key_binding_is_builtin
meta_keybindings_set_custom_handler
meta_keybindings_switch_window
meta_screen_ungrab_all_keys
meta_screen_grab_all_keys
</SECTION>
<SECTION>
<FILE>main</FILE>
meta_get_option_context
meta_init
meta_run
meta_get_replace_current_wm
meta_set_wm_name
meta_set_gnome_wm_keybindings
MetaExitCode
meta_exit
meta_quit
</SECTION>
<SECTION>
<FILE>meta-background</FILE>
<TITLE>MetaBackground</TITLE>
MetaBackgroundEffects
MetaBackground
MetaBackgroundClass
meta_background_new
meta_background_copy
meta_background_load_gradient
meta_background_load_color
meta_background_load_still_frame
meta_background_load_file_async
meta_background_load_file_finish
meta_background_get_filename
meta_background_get_style
meta_background_get_shading
meta_background_get_color
meta_background_get_second_color
<SUBSECTION Standard>
META_BACKGROUND
META_BACKGROUND_CLASS
META_BACKGROUND_GET_CLASS
META_IS_BACKGROUND
META_IS_BACKGROUND_CLASS
META_TYPE_BACKGROUND
MetaBackgroundPrivate
meta_background_get_type
</SECTION>
<SECTION>
<FILE>meta-background-actor</FILE>
<TITLE>MetaBackgroundActor</TITLE>
MetaBackgroundActor
MetaBackgroundActorClass
meta_background_actor_new_for_screen
MetaSnippetHook
meta_background_actor_add_glsl_snippet
meta_background_actor_set_uniform_float
<SUBSECTION Standard>
META_BACKGROUND_ACTOR
META_BACKGROUND_ACTOR_CLASS
META_BACKGROUND_ACTOR_GET_CLASS
META_IS_BACKGROUND_ACTOR
META_IS_BACKGROUND_ACTOR_CLASS
META_TYPE_BACKGROUND_ACTOR
MetaBackgroundActorPrivate
meta_background_actor_get_type
</SECTION>
<SECTION>
<FILE>meta-background-group</FILE>
<TITLE>MetaBackgroundGroup</TITLE>
MetaBackgroundGroupClass
meta_background_group_new
<SUBSECTION Standard>
META_BACKGROUND_GROUP
META_BACKGROUND_GROUP_CLASS
META_BACKGROUND_GROUP_GET_CLASS
META_IS_BACKGROUND_GROUP
META_IS_BACKGROUND_GROUP_CLASS
META_TYPE_BACKGROUND_GROUP
MetaBackgroundGroupPrivate
meta_background_group_get_type
</SECTION>
<SECTION>
<FILE>meta-plugin</FILE>
<TITLE>MetaPlugin</TITLE>
MetaPlugin
MetaPluginClass
MetaPluginInfo
meta_plugin_running
meta_plugin_debug_mode
meta_plugin_get_info
MetaPluginVersion
META_PLUGIN_DECLARE
meta_plugin_switch_workspace_completed
meta_plugin_minimize_completed
meta_plugin_maximize_completed
meta_plugin_unmaximize_completed
meta_plugin_map_completed
meta_plugin_destroy_completed
MetaModalOptions
meta_plugin_begin_modal
meta_plugin_end_modal
meta_plugin_get_screen
meta_plugin_manager_set_plugin_type
<SUBSECTION Standard>
META_IS_PLUGIN
META_IS_PLUGIN_CLASS
META_PLUGIN
META_PLUGIN_CLASS
META_PLUGIN_GET_CLASS
META_TYPE_PLUGIN
MetaPluginPrivate
meta_plugin_get_type
</SECTION>
<SECTION>
<FILE>meta-shadow-factory</FILE>
MetaShadowParams
meta_shadow_factory_get_default
meta_shadow_factory_set_params
meta_shadow_factory_get_params
MetaShadowFactory
MetaShadowFactoryClass
<SUBSECTION Standard>
META_IS_SHADOW_FACTORY
META_IS_SHADOW_FACTORY_CLASS
META_SHADOW_FACTORY
META_SHADOW_FACTORY_CLASS
META_SHADOW_FACTORY_GET_CLASS
META_TYPE_SHADOW_FACTORY
meta_shadow_factory_get_type
</SECTION>
<SECTION>
<FILE>meta-shaped-texture</FILE>
<TITLE>MetaShapedTexture</TITLE>
MetaShapedTexture
MetaShapedTextureClass
meta_shaped_texture_new
meta_shaped_texture_set_create_mipmaps
meta_shaped_texture_update_area
meta_shaped_texture_set_pixmap
meta_shaped_texture_get_texture
meta_shaped_texture_set_mask_texture
meta_shaped_texture_set_clip_region
meta_shaped_texture_get_image
<SUBSECTION Standard>
META_IS_SHAPED_TEXTURE
META_IS_SHAPED_TEXTURE_CLASS
META_SHAPED_TEXTURE
META_SHAPED_TEXTURE_CLASS
META_SHAPED_TEXTURE_GET_CLASS
META_TYPE_SHAPED_TEXTURE
MetaShapedTexturePrivate
meta_shaped_texture_get_type
</SECTION>
<SECTION>
<FILE>meta-window-actor</FILE>
<TITLE>MetaWindowActor</TITLE>
MetaWindowActor
MetaWindowActorClass
meta_window_actor_get_x_window
meta_window_actor_get_workspace
meta_window_actor_get_meta_window
meta_window_actor_get_texture
meta_window_actor_is_override_redirect
meta_window_actor_get_description
meta_window_actor_showing_on_its_workspace
meta_window_actor_is_destroyed
<SUBSECTION Standard>
META_IS_WINDOW_ACTOR
META_IS_WINDOW_ACTOR_CLASS
META_TYPE_WINDOW_ACTOR
META_WINDOW_ACTOR
META_WINDOW_ACTOR_CLASS
META_WINDOW_ACTOR_GET_CLASS
MetaWindowActorPrivate
meta_window_actor_get_type
</SECTION>
<SECTION>
<FILE>prefs</FILE>
MetaPreference
MetaPrefsChangedFunc
meta_prefs_add_listener
meta_prefs_remove_listener
meta_prefs_init
meta_prefs_override_preference_schema
meta_preference_to_string
meta_prefs_get_mouse_button_mods
meta_prefs_get_mouse_button_resize
meta_prefs_get_mouse_button_menu
meta_prefs_get_focus_mode
meta_prefs_get_focus_new_windows
meta_prefs_get_attach_modal_dialogs
meta_prefs_get_raise_on_click
meta_prefs_get_theme
meta_prefs_get_titlebar_font
meta_prefs_get_num_workspaces
meta_prefs_get_dynamic_workspaces
meta_prefs_get_application_based
meta_prefs_get_disable_workarounds
meta_prefs_get_auto_raise
meta_prefs_get_auto_raise_delay
meta_prefs_get_focus_change_on_pointer_rest
meta_prefs_get_gnome_accessibility
meta_prefs_get_gnome_animations
meta_prefs_get_edge_tiling
meta_prefs_get_auto_maximize
meta_prefs_get_button_layout
meta_prefs_get_action_double_click_titlebar
meta_prefs_get_action_middle_click_titlebar
meta_prefs_get_action_right_click_titlebar
meta_prefs_set_num_workspaces
meta_prefs_get_workspace_name
meta_prefs_change_workspace_name
meta_prefs_get_cursor_theme
meta_prefs_get_cursor_size
meta_prefs_get_compositing_manager
meta_prefs_get_force_fullscreen
meta_prefs_set_force_fullscreen
meta_prefs_get_workspaces_only_on_primary
meta_prefs_get_no_tab_popup
meta_prefs_set_no_tab_popup
meta_prefs_get_draggable_border_width
meta_prefs_get_ignore_request_hide_titlebar
meta_prefs_set_ignore_request_hide_titlebar
MetaKeyBindingAction
MetaKeyBindingFlags
MetaKeyCombo
MetaKeyHandlerFunc
meta_prefs_get_keybindings
meta_prefs_get_keybinding_action
meta_prefs_get_window_binding
meta_prefs_get_overlay_binding
meta_prefs_get_visual_bell
meta_prefs_bell_is_audible
meta_prefs_get_visual_bell_type
MetaKeyHandler
<SUBSECTION Standard>
meta_key_binding_get_type
</SECTION>
<SECTION>
<FILE>screen</FILE>
MetaScreen
MetaScreenClass
meta_screen_get_screen_number
meta_screen_get_display
meta_screen_get_xroot
meta_screen_get_size
meta_screen_get_compositor_data
meta_screen_set_compositor_data
meta_screen_for_x_screen
meta_screen_set_cm_selection
meta_screen_unset_cm_selection
meta_screen_get_startup_sequences
meta_screen_get_workspaces
meta_screen_get_n_workspaces
meta_screen_get_workspace_by_index
meta_screen_remove_workspace
meta_screen_append_new_workspace
meta_screen_get_active_workspace_index
meta_screen_get_active_workspace
meta_screen_get_n_monitors
meta_screen_get_primary_monitor
meta_screen_get_current_monitor
meta_screen_get_monitor_geometry
meta_screen_get_monitor_index_for_rect
meta_screen_focus_default_window
MetaScreenCorner
meta_screen_override_workspace_layout
<SUBSECTION Standard>
META_IS_SCREEN
META_IS_SCREEN_CLASS
META_SCREEN
META_SCREEN_CLASS
META_SCREEN_GET_CLASS
META_TYPE_SCREEN
meta_screen_get_type
</SECTION>
<SECTION>
<FILE>util</FILE>
meta_is_verbose
meta_set_verbose
meta_is_debugging
meta_set_debugging
meta_is_syncing
meta_set_syncing
meta_set_replace_current_wm
meta_debug_spew_real
meta_verbose_real
meta_bug
meta_warning
meta_fatal
MetaDebugTopic
meta_topic_real
meta_add_verbose_topic
meta_remove_verbose_topic
meta_push_no_msg_prefix
meta_pop_no_msg_prefix
meta_unsigned_long_equal
meta_unsigned_long_hash
meta_frame_type_to_string
meta_gravity_to_string
_
N_
meta_g_utf8_strndup
meta_free_gslist_and_elements
meta_show_dialog
meta_debug_spew
meta_verbose
meta_topic
MetaLaterType
meta_later_add
meta_later_remove
</SECTION>
<SECTION>
<FILE>window</FILE>
MetaWindow
MetaWindowClass
MetaWindowType
MetaMaximizeFlags
meta_window_get_frame
meta_window_has_focus
meta_window_appears_focused
meta_window_is_shaded
meta_window_is_monitor_sized
meta_window_is_override_redirect
meta_window_is_skip_taskbar
meta_window_get_rect
meta_window_get_input_rect
meta_window_get_outer_rect
meta_window_get_screen
meta_window_get_display
meta_window_get_xwindow
meta_window_get_window_type
meta_window_get_window_type_atom
meta_window_get_workspace
meta_window_get_monitor
meta_window_is_on_all_workspaces
meta_window_located_on_workspace
meta_window_is_hidden
meta_window_activate
meta_window_activate_with_workspace
meta_window_get_description
meta_window_get_wm_class
meta_window_get_wm_class_instance
meta_window_showing_on_its_workspace
meta_window_get_gtk_application_id
meta_window_get_gtk_unique_bus_name
meta_window_get_gtk_application_object_path
meta_window_get_gtk_window_object_path
meta_window_get_gtk_app_menu_object_path
meta_window_get_gtk_menubar_object_path
meta_window_move
meta_window_move_frame
meta_window_move_resize_frame
meta_window_move_to_monitor
meta_window_resize
meta_window_set_demands_attention
meta_window_unset_demands_attention
meta_window_get_startup_id
meta_window_change_workspace_by_index
meta_window_change_workspace
meta_window_get_compositor_private
meta_window_set_compositor_private
meta_window_configure_notify
meta_window_get_role
meta_window_get_layer
meta_window_find_root_ancestor
meta_window_is_ancestor_of_transient
MetaWindowForeachFunc
meta_window_foreach_transient
meta_window_foreach_ancestor
meta_window_get_maximized
meta_window_is_fullscreen
meta_window_is_on_primary_monitor
meta_window_requested_bypass_compositor
meta_window_requested_dont_bypass_compositor
meta_window_is_mapped
meta_window_toplevel_is_mapped
meta_window_get_icon_geometry
meta_window_set_icon_geometry
meta_window_maximize
meta_window_unmaximize
meta_window_minimize
meta_window_unminimize
meta_window_raise
meta_window_lower
meta_window_get_title
meta_window_get_transient_for
meta_window_get_transient_for_as_xid
meta_window_delete
meta_window_get_stable_sequence
meta_window_get_user_time
meta_window_get_pid
meta_window_get_client_machine
meta_window_is_remote
meta_window_is_modal
meta_window_is_attached_dialog
meta_window_get_mutter_hints
meta_window_get_frame_type
meta_window_get_frame_bounds
meta_window_get_tile_match
meta_window_make_fullscreen
meta_window_unmake_fullscreen
meta_window_make_above
meta_window_unmake_above
meta_window_shade
meta_window_unshade
meta_window_stick
meta_window_unstick
meta_window_kill
meta_window_focus
meta_window_check_alive
meta_window_get_work_area_current_monitor
meta_window_get_work_area_for_monitor
meta_window_get_work_area_all_monitors
meta_window_begin_grab_op
<SUBSECTION Standard>
META_IS_WINDOW
META_IS_WINDOW_CLASS
META_TYPE_WINDOW
META_WINDOW
META_WINDOW_CLASS
META_WINDOW_GET_CLASS
meta_window_get_type
</SECTION>
<SECTION>
<FILE>workspace</FILE>
MetaWorkspace
MetaWorkspaceClass
meta_workspace_index
meta_workspace_get_screen
meta_workspace_list_windows
meta_workspace_get_work_area_for_monitor
meta_workspace_get_work_area_all_monitors
meta_workspace_activate
meta_workspace_activate_with_focus
meta_workspace_update_window_hints
meta_workspace_set_builtin_struts
meta_workspace_get_neighbor
<SUBSECTION Standard>
META_IS_WORKSPACE
META_IS_WORKSPACE_CLASS
META_TYPE_WORKSPACE
META_WORKSPACE
META_WORKSPACE_CLASS
META_WORKSPACE_GET_CLASS
meta_workspace_get_type
</SECTION>

View File

@ -0,0 +1,15 @@
<part id="mutter-overview">
<title>Overview</title>
<partintro>
<para>Mutter is a GObject-based library for creating compositing window managers.</para>
<para>Compositors that wish to use Mutter must implement a subclass of #MetaPlugin and register it with meta_plugin_manager_set_plugin_type() before calling meta_init() but after g_type_init().</para>
<para>#MetaPlugin provides virtual functions that allow to override default behavior in the window management code, such as the effect to perform when a window is created or when switching workspaces.</para>
</partintro>
</part>

View File

@ -0,0 +1,100 @@
<part id="running-mutter">
<title>Running Mutter</title>
<partintro>
<section id="environment-variables">
<title>Environment Variables</title>
<para>
Mutter automatically checks environment variables during
its initialization. These environment variables are meant
as debug tools or overrides for default behaviours:
</para>
<variablelist>
<varlistentry>
<term>MUTTER_VERBOSE</term>
<listitem>
<para>Enable verbose mode, in which more information is printed to the console. Mutter needs to be built with the --enable-verbose-mode option (enabled by default). For more fine-grained control of the output, see meta_add_verbose_topic().</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_DEBUG</term>
<listitem>
<para>Traps and prints X errors to the console.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_G_FATAL_WARNINGS</term>
<listitem>
<para>Causes any logging from the domains Mutter, Gtk, Gdk, Pango or GLib to terminate the process (only when using the log functions in GLib).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_USE_LOGFILE</term>
<listitem>
<para>Log all messages to a temporary file.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_DEBUG_XINERAMA</term>
<listitem>
<para>Log extra information about support of the XINERAMA extension.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_DEBUG_SM</term>
<listitem>
<para>Log extra information about session management.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_DEBUG_BUTTON_GRABS</term>
<listitem>
<para>Log extra information about button grabs.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_SYNC</term>
<listitem>
<para>Call XSync after each X call.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_DISPLAY</term>
<listitem>
<para>Name of the X11 display to use.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>META_DISABLE_MIPMAPS</term>
<listitem>
<para>Disable use of mipmaps for the textures that back window pixmaps.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_USE_STATIC_GRAVITY</term>
<listitem>
<para>Enable support for clients with static bit-gravity.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_WM_CLASS_FILTER</term>
<listitem>
<para>Comma-separated list of WM_CLASS names to which to restrict Mutter to.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>MUTTER_DISABLE_FALLBACK_COLOR</term>
<listitem>
<para>Disable fallback for themed colors, for easier detection of typographical errors.</para>
</listitem>
</varlistentry>
</variablelist>
</section>
</partintro>
</part>

View File

@ -39,4 +39,11 @@ 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>

View File

@ -1,7 +1,10 @@
# List of source files containing translatable strings.
# Please keep this file sorted alphabetically.
src/50-mutter-navigation.xml.in
src/50-mutter-system.xml.in
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

506
po/ar.po

File diff suppressed because it is too large Load Diff

755
po/as.po

File diff suppressed because it is too large Load Diff

184
po/ast.po
View File

@ -37,7 +37,6 @@ 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."
@ -122,7 +121,6 @@ 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"
@ -261,7 +259,6 @@ 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"
@ -275,7 +272,6 @@ 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"
@ -286,19 +282,16 @@ 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"
@ -358,7 +351,6 @@ 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"
@ -404,7 +396,6 @@ 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"
@ -499,19 +490,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/include/all-keybindings.h:88 ../src/50-mutter-navigation.xml.in.h:18
msgid "Switch to workspace 1"
msgstr "Cambiar a espaciu de trabayu 1"
#: ../src/include/all-keybindings.h:90
#: ../src/include/all-keybindings.h:90 ../src/50-mutter-navigation.xml.in.h:19
msgid "Switch to workspace 2"
msgstr "Cambiar a espaciu de trabayu 2"
#: ../src/include/all-keybindings.h:92
#: ../src/include/all-keybindings.h:92 ../src/50-mutter-navigation.xml.in.h:20
msgid "Switch to workspace 3"
msgstr "Cambiar a espaciu de trabayu 3"
#: ../src/include/all-keybindings.h:94
#: ../src/include/all-keybindings.h:94 ../src/50-mutter-navigation.xml.in.h:21
msgid "Switch to workspace 4"
msgstr "Cambiar a espaciu de trabayu 4"
@ -640,47 +631,57 @@ msgstr "Saca una semeya d'una ventana"
msgid "Run a terminal"
msgstr "Executar una terminal"
#: ../src/include/all-keybindings.h:271
#: ../src/include/all-keybindings.h:271 ../src/50-mutter-windows.xml.in.h:1
msgid "Activate the window menu"
msgstr "Activar el menú de la ventana"
#: ../src/include/all-keybindings.h:274
#: ../src/include/all-keybindings.h:274 ../src/50-mutter-windows.xml.in.h:13
#, fuzzy
msgid "Toggle fullscreen mode"
msgstr "Camudar a modu pantalla completa"
msgstr ""
"#-#-#-#-# ast.po (metacity) #-#-#-#-#\n"
"Camudar a modu pantalla completa\n"
"#-#-#-#-# ast.po (metacity) #-#-#-#-#\n"
"Camudar a mou pantalla completa"
#: ../src/include/all-keybindings.h:276
#: ../src/include/all-keybindings.h:276 ../src/50-mutter-windows.xml.in.h:14
#, fuzzy
msgid "Toggle maximization state"
msgstr "Camudar a estáu maximizáu"
msgstr ""
"#-#-#-#-# ast.po (metacity) #-#-#-#-#\n"
"Camudar a estáu maximizáu\n"
"#-#-#-#-# ast.po (metacity) #-#-#-#-#\n"
"Conmutar l'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/include/all-keybindings.h:280 ../src/50-mutter-windows.xml.in.h:4
msgid "Maximize window"
msgstr "Maximizar ventana"
#: ../src/include/all-keybindings.h:282
#: ../src/include/all-keybindings.h:282 ../src/50-mutter-windows.xml.in.h:12
msgid "Restore window"
msgstr "Restaurar la ventana"
#: ../src/include/all-keybindings.h:284
#: ../src/include/all-keybindings.h:284 ../src/50-mutter-windows.xml.in.h:15
msgid "Toggle shaded state"
msgstr "Activa estáu endolcáu"
#: ../src/include/all-keybindings.h:286
#: ../src/include/all-keybindings.h:286 ../src/50-mutter-windows.xml.in.h:7
msgid "Minimize window"
msgstr "Minimizar ventana"
#: ../src/include/all-keybindings.h:288
#: ../src/include/all-keybindings.h:288 ../src/50-mutter-windows.xml.in.h:2
msgid "Close window"
msgstr "Zarrar ventana"
#: ../src/include/all-keybindings.h:290
#: ../src/include/all-keybindings.h:290 ../src/50-mutter-windows.xml.in.h:8
msgid "Move window"
msgstr "Mover ventana"
#: ../src/include/all-keybindings.h:292
#: ../src/include/all-keybindings.h:292 ../src/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "Cambiar el tamañu la ventana"
@ -689,18 +690,22 @@ 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"
@ -736,19 +741,24 @@ 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/include/all-keybindings.h:344 ../src/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the left"
msgstr "Mover ventana un espaciu de trabayu a manzorga"
#: ../src/include/all-keybindings.h:347
#: ../src/include/all-keybindings.h:347 ../src/50-mutter-navigation.xml.in.h:8
#, fuzzy
msgid "Move window one workspace to the right"
msgstr "Mover ventana un espaciu de trabayu a derecha"
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"
#: ../src/include/all-keybindings.h:350
#: ../src/include/all-keybindings.h:350 ../src/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up"
msgstr "Mover ventana un espaciu de trabayu p'arriba"
#: ../src/include/all-keybindings.h:353
#: ../src/include/all-keybindings.h:353 ../src/50-mutter-navigation.xml.in.h:6
msgid "Move window one workspace down"
msgstr "Mover ventana un espaciu de trabayu p'abaxo"
@ -757,19 +767,29 @@ 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/include/all-keybindings.h:358 ../src/50-mutter-windows.xml.in.h:9
#, fuzzy
msgid "Raise window above other windows"
msgstr "Poner el ventanu en primer planu"
msgstr ""
"#-#-#-#-# ast.po (metacity) #-#-#-#-#\n"
"Poner el ventanu en primer planu\n"
"#-#-#-#-# ast.po (metacity) #-#-#-#-#\n"
"Poner la ventana en primer planu"
#: ../src/include/all-keybindings.h:360
#: ../src/include/all-keybindings.h:360 ../src/50-mutter-windows.xml.in.h:3
#, fuzzy
msgid "Lower window below other windows"
msgstr "Ventanu más baxu per debaxo d'otros ventanos"
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"
#: ../src/include/all-keybindings.h:364
#: ../src/include/all-keybindings.h:364 ../src/50-mutter-windows.xml.in.h:6
msgid "Maximize window vertically"
msgstr "Maximizar ventana verticalmente"
#: ../src/include/all-keybindings.h:368
#: ../src/include/all-keybindings.h:368 ../src/50-mutter-windows.xml.in.h:5
msgid "Maximize window horizontally"
msgstr "Maximizar ventana horizontalmente"
@ -983,7 +1003,6 @@ 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"
@ -1724,7 +1743,6 @@ 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"
@ -1936,6 +1954,96 @@ 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"

485
po/be.po
View File

@ -4,33 +4,209 @@ 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: 2012-07-15 00:47+0000\n"
"PO-Revision-Date: 2012-07-15 11:34+0300\n"
"POT-Creation-Date: 2013-03-01 15:50+0000\n"
"PO-Revision-Date: 2012-10-13 17:44+0300\n"
"Last-Translator: Ігар Грачышка <ihar.hrachyshka@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Pootle 2.1.6\n"
#: ../src/50-mutter-navigation.xml.in.h:1
msgid "Navigation"
msgstr "Навігацыя"
#: ../src/50-mutter-navigation.xml.in.h:2
msgid "Move window to workspace 1"
msgstr "Перамясціць акно ў прастору 1"
#: ../src/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2"
msgstr "Перамясціць акно ў прастору 2"
#: ../src/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "Перамясціць акно ў прастору 3"
#: ../src/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "Перамясціць акно ў прастору 4"
#: ../src/50-mutter-navigation.xml.in.h:6
msgid "Move window one workspace to the left"
msgstr "Перамясціць акно ў прастору злева ад дзейнай"
#: ../src/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the right"
msgstr "Перамясціць акно ў прастору справа ад дзейнай"
#: ../src/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace up"
msgstr "Перамясціць акно ў прастору зверху ад дзейнай"
#: ../src/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace down"
msgstr "Перамясціць акно ў прастору знізу ад дзейнай"
#: ../src/50-mutter-navigation.xml.in.h:10
msgid "Switch applications"
msgstr "Пераключэнне праграм"
#: ../src/50-mutter-navigation.xml.in.h:11
msgid "Switch windows"
msgstr "Пераключэнне вокнаў"
#: ../src/50-mutter-navigation.xml.in.h:12
msgid "Switch windows of an application"
msgstr "Пераключэнне вокнаў праграмы"
#: ../src/50-mutter-navigation.xml.in.h:13
msgid "Switch system controls"
msgstr "Пераключэнне паміж сістэмнымі элементамі кіравання"
#: ../src/50-mutter-navigation.xml.in.h:14
msgid "Switch windows directly"
msgstr "Непасрэднае пераключэнне вокнаў"
#: ../src/50-mutter-navigation.xml.in.h:15
msgid "Switch windows of an app directly"
msgstr "Непасрэднае пераключэнне вокнаў праграмы"
#: ../src/50-mutter-navigation.xml.in.h:16
msgid "Switch system controls directly"
msgstr "Непасрэднае пераключэнне паміж сістэмнымі элементамі кіравання"
#: ../src/50-mutter-navigation.xml.in.h:17
msgid "Hide all normal windows"
msgstr "Схаваць усе звычайныя вокны"
#: ../src/50-mutter-navigation.xml.in.h:18
msgid "Switch to workspace 1"
msgstr "Перайсці ў прастору працы 1"
#: ../src/50-mutter-navigation.xml.in.h:19
msgid "Switch to workspace 2"
msgstr "Перайсці ў прастору працы 2"
#: ../src/50-mutter-navigation.xml.in.h:20
msgid "Switch to workspace 3"
msgstr "Перайсці ў прастору працы 3"
#: ../src/50-mutter-navigation.xml.in.h:21
msgid "Switch to workspace 4"
msgstr "Перайсці ў прастору працы 4"
#: ../src/50-mutter-navigation.xml.in.h:22
msgid "Move to workspace left"
msgstr "Перамясціць на прастору працы злева"
#: ../src/50-mutter-navigation.xml.in.h:23
msgid "Move to workspace right"
msgstr "Перамясціць на прастору працы справа"
#: ../src/50-mutter-navigation.xml.in.h:24
msgid "Move to workspace above"
msgstr "Перамясціць на прастору працы зверху"
#: ../src/50-mutter-navigation.xml.in.h:25
msgid "Move to workspace below"
msgstr "Перамясціць на прастору працы знізу"
#: ../src/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "Сістэма"
#: ../src/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "Паказаць акенца для выканання загаду"
#: ../src/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "Паказаць агляд дзейнасцяў"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "Вокны"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "Адкрыць меню акна"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "Перамяніць рэжым \"на ўвесь экран\""
#: ../src/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "Перамяніць максімалізацыю акна"
#: ../src/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "Максімалізаваць акно"
#: ../src/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "Аднавіць былы памер акна"
#: ../src/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "Перамяніць скручанасць акна ў загаловак"
#: ../src/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "Закрыць акно"
#: ../src/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "Схаваць акно"
#: ../src/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "Перамясціць акно"
#: ../src/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "Змяніць памер акна"
#: ../src/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr "Перамяніць, ці бачнае акно на ўсіх прасторах працы"
#: ../src/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "Узняць акно, калі яно закрыта іншымі вокнамі, іначай апусціць яго"
#: ../src/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "Узняць акно над астатнімі"
#: ../src/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "Апусціць акно пад астатнія"
#: ../src/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "Вертыкальна максімалізаваць акно"
#: ../src/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "Гарызантальна максімалізаваць акно"
#: ../src/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "Падзяліць прагляд злева"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "Падзяліць прагляд справа"
#. 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:492
#: ../src/compositor/compositor.c:507
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -38,6 +214,10 @@ msgid ""
msgstr ""
"Іншы кампазітны кіраўнік вокнаў ужо абслугоўвае экран %i дысплея \"%s\"."
#: ../src/compositor/meta-background.c:1111
msgid "background texture could not be created from file"
msgstr "не ўдалося стварыць фонавую тэкстуру з файла"
#: ../src/core/bell.c:320
msgid "Bell event"
msgstr "Падзея з сігналам"
@ -47,42 +227,42 @@ msgstr "Падзея з сігналам"
msgid "Unknown window information request: %d"
msgstr "Невядомы запыт інфармацыі пра акно: %d"
#: ../src/core/delete.c:114
#: ../src/core/delete.c:111
#, c-format
msgid "%s is not responding."
msgstr "%s не адказвае на запыты."
msgid "%s is not responding."
msgstr "\"%s\" не адказвае на запыты."
#: ../src/core/delete.c:118
#: ../src/core/delete.c:113
msgid "Application is not responding."
msgstr "Праграма не адказвае на запыты."
#: ../src/core/delete.c:123
#: ../src/core/delete.c:118
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:130
#: ../src/core/delete.c:125
msgid "_Wait"
msgstr "_Пачакаць"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:125
msgid "_Force Quit"
msgstr "_Змусіць да выхаду"
#: ../src/core/display.c:380
#: ../src/core/display.c:401
#, c-format
msgid "Missing %s extension required for compositing"
msgstr ""
"Адсутнічае пашырэнне \"%s\", патрэбнае для ажыццяўлення кампазітнага вываду"
#: ../src/core/display.c:446
#: ../src/core/display.c:493
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Не ўдалося адкрыць X-дысплей аконнай сістэмы \"%s\"\n"
#: ../src/core/keybindings.c:844
#: ../src/core/keybindings.c:929
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@ -91,6 +271,11 @@ msgstr ""
"Нейкая іншая праграма ўжо выкарыстоўвае як скарот клавішу %s з "
"мадыфікатарамі %x\n"
#: ../src/core/keybindings.c:1129
#, c-format
msgid "\"%s\" is not a valid accelerator\n"
msgstr "\"%s\" - гэта хібны клавіятурны скарот\n"
#: ../src/core/main.c:196
msgid "Disable connection to session manager"
msgstr "Выключыць злучэнне з кіраўніком сеансаў"
@ -152,7 +337,7 @@ msgstr "Вывесці нумар версіі праграмы"
msgid "Mutter plugin to use"
msgstr "Патрэбны плугін Mutter"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1087
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@ -160,12 +345,12 @@ msgstr ""
"Асаблівыя паводзіны для некаторых хібных праграм выключаныя. Некаторыя "
"праграмы могуць перастаць працаваць, як мае быць.\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1162
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "Не ўдалося разабраць азначэнне шрыфту \"%s\" з GSettings-ключа %s\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1228
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@ -174,7 +359,7 @@ msgstr ""
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
"мадыфікатар мышынай кнопкі\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1780
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@ -183,17 +368,17 @@ msgstr ""
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
"клавіятурны скарот \"%s\"\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1879
#, c-format
msgid "Workspace %d"
msgstr "Прастора працы %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:673
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Экран %d на дысплеі \"%s\" хібны\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:689
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@ -202,19 +387,19 @@ msgstr ""
"Экран %d на дысплеі \"%s\" ужо мае аконнага кіраўніка. Каб замяніць яго "
"новым, дадайце опцыю --replace.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:716
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr ""
"Не ўдалося пераняць вылучэнне кіраўніка вокнаў для экрана %d дысплея \"%s\"\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:794
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Экран %d на дысплеі \"%s\" ужо мае кіраўніка вокнаў\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:979
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Не ўдалося вызваліць экран %d на дысплеі \"%s\"\n"
@ -314,7 +499,7 @@ msgid "Window manager error: "
msgstr "Памылка кіраўніка вокнаў: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7539
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@ -330,7 +515,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:8263
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@ -340,22 +525,22 @@ msgstr ""
"памеру, але разам з гэтым прызначыла для сябе мінімальны памер %d x %d і "
"максімальны памер %d x %d. Такія паводзіны не маюць сэнсу.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:318
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Праграма прызначыла памылковае значэнне _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:434
#, c-format
msgid "%s (on %s)"
msgstr "%s (на %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1517
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "Для %2$s вызначана хібнае акно WM_TRANSIENT_FOR 0x%1$lx.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1528
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR акно 0x%lx для %s стварыла б цыкл.\n"
@ -404,6 +589,10 @@ msgid ""
"\"Windows key\" on PC hardware. It's expected that this binding either the "
"default or set to the empty string."
msgstr ""
"Гэта клавіша запусціць \"перакрыццё\", якое прадстаўляе спалучэнне агляду "
"вокнаў і сістэму запуску праграм. Прадвызначаная клавіша для гэтай аперацыі "
"- гэта клавіша \"Windows\" на PC-камп'ютары. Чакаецца, што гэты скарот будзе "
"або прадвызначаным значэннем, або пустым тэкставым ланцужком."
#: ../src/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs"
@ -415,10 +604,13 @@ msgid ""
"attached to the titlebar of the parent window and are moved together with "
"the parent window."
msgstr ""
"Калі ўключана, замест незалежных загалоўных стужак мадальныя дыялогавыя "
"акенцы будуць прычэплівацца да загалоўных стужак галоўных вокнаў і "
"перасоўвацца разам з імі."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
msgstr "Уключыць кафляванне пры перацягванні вокнаў на бераг экрана"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
@ -426,10 +618,14 @@ msgid ""
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
"Калі ўключана, перацягванне вокнаў на вертыкальныя берагі экрана "
"максімалізуе іх па вертыкалі і змяняе памер па гарызанталі, каб тыя "
"закрывалі палову наяўнага месца. Перацягванне вокнаў на верхні бераг экрана "
"максімалізуе іх ва ўсіх накірунках."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
msgstr ""
msgstr "Дынамічнае кіраванне прасторамі працы"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
@ -437,6 +633,9 @@ msgid ""
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
"Вызначае, ці трэба дынамічна кіраваць колькасцю прастор працы, або трэба "
"проста ўжыць іх нязменную колькасць (канкрэтнае значэнне вызначаецца ключом "
"num-workspaces у org.gnome.desktop.wm.preferences)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary"
@ -459,22 +658,52 @@ msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr ""
"Вызначае, ці трэба выключыць выплыўную рамку з падсветкай для пракручвання "
"спіса вокнаў."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving"
msgstr "Затрымліваць змяненне фокусу да спынення паказальніка мышы"
#: ../src/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 ""
"Калі ўключана, а рэжым фокусу ці \"sloppy\", ці \"mouse\", тады фокус не "
"будзе пераключацца паміж вокнамі імгненна, але толькі пасля спынення "
"паказальніка мышы."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Шырыня аблямоўкі для перацягвання"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/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 ""
"Памер аблямоўкі для перацягвання. Калі бачная аблямоўка матыва недастаткова, "
"будуць дададзена дадатковая нябачная рамка, каб задаволіць гэту настройку."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows"
msgstr "Аўтаматычна максімалізаваць вокны, якія расцягнутыя амаль на ўвесь экран"
#: ../src/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 ""
"Калі ўключана, новыя вокны з памерам, блізкім да памераў манітора, будуць "
"аўтаматычна максімалізавацца."
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
msgid "Select window from tab popup"
msgstr "Выбраць акно з выплыўнога акенца"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
msgid "Cancel tab popup"
msgstr "Закрыць выплыўное акенца"
@ -677,54 +906,54 @@ msgstr "Mod5"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#.
#: ../src/ui/resizepopup.c:113
#: ../src/ui/resizepopup.c:136
#, c-format
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:235
msgid "top"
msgstr "верхнюю"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:237
msgid "bottom"
msgstr "ніжнюю"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:239
msgid "left"
msgstr "левую"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:241
msgid "right"
msgstr "правую"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:269
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "апісанне геаметрыі рамкі акна не вызначае %s граніцу"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:288
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr ""
"апісанне геаметрыі рамкі акна не вызначае %s граніцу для аблямоўкі \"%s\""
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:325
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "Прапорцыі кнопкі %g не маюць сэнсу"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:337
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Апісанне геаметрыі рамкі акна не вызначае памер кнопак"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1050
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Градыент мусіць мець прынамсі два колеры"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1202
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@ -733,7 +962,7 @@ msgstr ""
"Уласная спецыфікацыя колеру GTK мусіць змяшчаць назвы асноўнага і запаснога "
"колераў у дужках, напрыклад, gtk:custom(foo,bar). Не ўдалося разабраць \"%s\""
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1218
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@ -742,7 +971,7 @@ msgstr ""
"Хібны знак \"%c\" у параметры color_name спецыфікацыі gtk:custom, дазволеныя "
"толькі A-Za-z0-9-_"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1232
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@ -751,7 +980,7 @@ msgstr ""
"Фармат gtk:custom: \"gtk:custom(назваолеруапасны_колер)\"; \"%s\" не "
"адпавядае фармату"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1277
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@ -760,7 +989,7 @@ msgstr ""
"Спецыфікацыя колеру GTK мусіць мець стан у квадратных дужках, напрыклад, gtk:"
"fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s\""
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1291
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@ -770,17 +999,17 @@ msgstr ""
"напрыклад, gtk:fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s"
"\""
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1302
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Незразумелы стан \"%s\" у спецыфікацыі колеру"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1315
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Незразумелы складнік колеру \"%s\" у спецыфікацыі колеру"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1344
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@ -789,58 +1018,58 @@ msgstr ""
"Фармат змяшанага колеру - \"blend/bg_color/fg_color/alpha\". \"%s\" не "
"адпавядае фармату."
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1355
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Не ўдалося разабраць значэнне альфа \"%s\" ў змяшаным колеры"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1365
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr ""
"Значэнне альфа \"%s\" у змяшаным колеры не ўваходзіць у дыяпазон ад 0.0 да "
"1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1412
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"Фармат ценю - \"shade/base_color/factor\". \"%s\" не адпавядае фармату."
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1423
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Не ўдалося разабраць каэфіцыент ценю \"%s\" у зацененым колеры"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1433
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Каэфіцыент ценю \"%s\" у зацененым колеры адмоўны"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1462
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Не ўдалося разабраць колер \"%s\""
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1779
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Каардынатны выраз змяшчае забаронены знак \"%s\""
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1806
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "Каардынатны выраз змяшчае незразумелы лік з нефіксаванай коскай \"%s\""
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1820
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Каардынатны выраз змяшчае незразумелы цэлы лік \"%s\""
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1941
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@ -848,17 +1077,17 @@ msgid ""
msgstr ""
"Каардынатны выраз змяшчае невядомы аператар у пачатку гэтага тэксту: \"%s\""
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:1998
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Каардынатны выраз пусты ці незразумелы"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Каардынатны выраз вымагае дзялення на нуль"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2163
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
@ -866,24 +1095,24 @@ msgstr ""
"Каардынатны выраз спрабуе ўжыць аператар дзялення па модулі для ліку з "
"нефіксаванай коскай"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2219
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr ""
"У каардынатным выразе ўжыты аператар \"%s\" там, дзе мусіў быць аперанд"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2228
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "У каардынатным выразе ўжыты аперанд там, дзе мусіў быць аператар"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2236
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Каардынатны выраз заканчваецца аператарам, а не аперандам"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2246
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@ -892,41 +1121,41 @@ msgstr ""
"У каардынатным выразе за аператарам \"%c\" ідзе аператар \"%c\", але паміж "
"імі няма аперанда"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "У каардынатным выразе невядомая зменная альбо канстанта \"%s\""
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2496
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Прылада для разбору каардынатных выразаў перапоўніла свой буфер."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2525
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr ""
"У каардынатным выразе ўжытыя дужкі, якія закрываюцца, але няма тых, якія б "
"адкрываліся"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2589
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr ""
"У каардынатным выразе ўжытыя дужкі, якія адкрываюцца, але няма тых, якія б "
"закрываліся"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2600
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "У каардынатным выразе няма ні аператараў, ні аперандаў"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Матыў аздаблення змяшчае выраз, які стаў прычынай памылкі: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4499
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@ -935,25 +1164,25 @@ msgstr ""
"Для гэтага стылю рамкі трэба вызначыць <button function=\"%s\" state=\"%s\" "
"draw_ops=\"whatever\"/>"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Няма <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"што-небудзь\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5083
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Не ўдалося загрузіць матыў аздаблення \"%s\": %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "Для матыву аздаблення \"%2$s\" не прызначана <%1$s>"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5255
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@ -962,7 +1191,7 @@ msgstr ""
"Стыль рамкі не вызначаны для вокнаў тыпу \"%s\" для матыву аздаблення \"%s"
"\". Дадайце <window type=\"%s\" style_set=\"штосьці\"/>."
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
@ -970,7 +1199,7 @@ msgstr ""
"Назвы канстантаў, вызначаных карыстальнікам, мусяць пачынацца з вялікай "
"літары. \"%s\" не адпавядае гэтаму патрабаванню."
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Канстанта \"%s\" ужо азначана"
@ -1462,56 +1691,56 @@ msgstr "Аблямоўка"
msgid "Attached Modal Dialog"
msgstr "Прычапленае мадальнае дыялогавае акенца"
#: ../src/ui/theme-viewer.c:739
#: ../src/ui/theme-viewer.c:737
#, c-format
msgid "Button layout test %d"
msgstr "Выпрабаванне размяшчэння кнопак %d"
#: ../src/ui/theme-viewer.c:768
#: ../src/ui/theme-viewer.c:766
#, c-format
msgid "%g milliseconds to draw one window frame"
msgstr "%g мілісекунд, каб намаляваць адну рамку акна"
#: ../src/ui/theme-viewer.c:813
#: ../src/ui/theme-viewer.c:811
#, c-format
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
msgstr "Правілы карыстання: metacity-theme-viewer [НАЗВА_МАТЫВУ]\n"
#: ../src/ui/theme-viewer.c:820
#: ../src/ui/theme-viewer.c:818
#, c-format
msgid "Error loading theme: %s\n"
msgstr "Памылка загрузкі матыву аздаблення: %s\n"
#: ../src/ui/theme-viewer.c:826
#: ../src/ui/theme-viewer.c:824
#, c-format
msgid "Loaded theme \"%s\" in %g seconds\n"
msgstr "Матыў аздаблення \"%s\" загружаны за %g секунд\n"
#: ../src/ui/theme-viewer.c:870
#: ../src/ui/theme-viewer.c:869
msgid "Normal Title Font"
msgstr "Звычайны шрыфт загалоўка"
#: ../src/ui/theme-viewer.c:876
#: ../src/ui/theme-viewer.c:875
msgid "Small Title Font"
msgstr "Маленькі шрыфт загалоўка"
#: ../src/ui/theme-viewer.c:882
#: ../src/ui/theme-viewer.c:881
msgid "Large Title Font"
msgstr "Вялікі шрыфт загалоўка"
#: ../src/ui/theme-viewer.c:887
#: ../src/ui/theme-viewer.c:886
msgid "Button Layouts"
msgstr "Размяшчэнне кнопак"
#: ../src/ui/theme-viewer.c:892
#: ../src/ui/theme-viewer.c:891
msgid "Benchmark"
msgstr "Выпрабаванне"
#: ../src/ui/theme-viewer.c:944
#: ../src/ui/theme-viewer.c:947
msgid "Window Title Goes Here"
msgstr "Месца для загалоўка акна"
#: ../src/ui/theme-viewer.c:1047
#: ../src/ui/theme-viewer.c:1053
#, c-format
msgid ""
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
@ -1522,87 +1751,41 @@ msgstr ""
"і %g секунд каляндарнага часу, уключна з рэсурсамі X-сервера (%g мілісекунд "
"на рамку)\n"
#: ../src/ui/theme-viewer.c:1266
#: ../src/ui/theme-viewer.c:1273
msgid "position expression test returned TRUE but set error"
msgstr "выпрабаванне выразу пазіцыі вярнула TRUE, але паведаміла аб памылцы"
#: ../src/ui/theme-viewer.c:1268
#: ../src/ui/theme-viewer.c:1275
msgid "position expression test returned FALSE but didn't set error"
msgstr ""
"выпрабаванне выразу пазіцыі вярнула FALSE, але не паведаміла аб памылцы"
#: ../src/ui/theme-viewer.c:1272
#: ../src/ui/theme-viewer.c:1279
msgid "Error was expected but none given"
msgstr "Чакалася памылка, але звесткі не атрыманыя"
#: ../src/ui/theme-viewer.c:1274
#: ../src/ui/theme-viewer.c:1281
#, c-format
msgid "Error %d was expected but %d given"
msgstr "Чакалася памылка %d, але атрымана %d"
#: ../src/ui/theme-viewer.c:1280
#: ../src/ui/theme-viewer.c:1287
#, c-format
msgid "Error not expected but one was returned: %s"
msgstr "Атрымана нечаканая памылка: %s"
#: ../src/ui/theme-viewer.c:1284
#: ../src/ui/theme-viewer.c:1291
#, c-format
msgid "x value was %d, %d was expected"
msgstr "X-значэнне было %d, а чакалася %d"
#: ../src/ui/theme-viewer.c:1287
#: ../src/ui/theme-viewer.c:1294
#, c-format
msgid "y value was %d, %d was expected"
msgstr "Y-значэнне было %d, а чакалася %d"
#: ../src/ui/theme-viewer.c:1352
#: ../src/ui/theme-viewer.c:1359
#, c-format
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr ""
"%d каардынатных выразаў разабраныя за %g секунд (у сярэднім %g секунд)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "Спіс плугінаў кампазітнага вываду, падзеленых коскамі"
#~ msgid "Live Hidden Windows"
#~ msgstr "Дзейныя схаваныя вокны"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "Вызначае, ці трэба захоўваць дзейнымі схаваныя вокны (напрыклад, "
#~ "мінімалізаваныя або вокны з іншых прастор працы)."
#~ msgid "Close Window"
#~ msgstr "Закрыць акно"
#~ msgid "Window Menu"
#~ msgstr "Меню акна"
#~ msgid "Minimize Window"
#~ msgstr "Мінімалізаваць акно"
#~ msgid "Maximize Window"
#~ msgstr "Максімалізаваць акно"
#~ msgid "Restore Window"
#~ msgstr "Аднавіць былы памер акна"
#~ msgid "Roll Up Window"
#~ msgstr "Скруціць акно ў загаловак"
#~ msgid "Unroll Window"
#~ msgstr "Раскруціць акно з загалоўка"
#~ msgid "Keep Window On Top"
#~ msgstr "Трымаць акно над астатнімі"
#~ msgid "Remove Window From Top"
#~ msgstr "Прыбраць акно з верху"
#~ msgid "Always On Visible Workspace"
#~ msgstr "Заўсёды на бачнай прасторы працы"
#~ msgid "Put Window On Only One Workspace"
#~ msgstr "Змясціць акно на адзінай прасторы працы"

399
po/bg.po
View File

@ -1,7 +1,7 @@
# Bulgarian translation of mutter po-file.
# Copyright (C) 2002, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
# Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
# Alexander Shopov <ash@kambanaria.org>, 2002, 2006, 2007, 2009, 2010, 2011, 2012.
# Copyright (C) 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
# Alexander Shopov <ash@kambanaria.org>, 2002, 2006, 2007, 2009, 2010, 2011, 2012, 2013.
# Vladimir Petkov <kaladan@gmail.com>, 2004.
# Rostislav Raykov <zbrox@i-space.org>, 2004.
# Yavor Doganov <yavor@gnu.org>, 2008.
@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-04 07:13+0300\n"
"PO-Revision-Date: 2012-07-04 07:12+0300\n"
"POT-Creation-Date: 2013-01-12 06:33+0200\n"
"PO-Revision-Date: 2013-01-12 06:33+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
@ -21,21 +21,197 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/50-mutter-navigation.xml.in.h:1
msgid "Navigation"
msgstr "Навигация"
#: ../src/50-mutter-navigation.xml.in.h:2
msgid "Move window to workspace 1"
msgstr "Преместване на прозореца в работен плот 1"
#: ../src/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2"
msgstr "Преместване на прозореца в работен плот 2"
#: ../src/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "Преместване на прозореца в работен плот 3"
#: ../src/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "Преместване на прозореца в работен плот 4"
#: ../src/50-mutter-navigation.xml.in.h:6
msgid "Move window one workspace to the left"
msgstr "Преместване на прозореца един работен плот наляво"
#: ../src/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the right"
msgstr "Преместване на прозореца един работен плот надясно"
#: ../src/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace up"
msgstr "Преместване на прозореца един работен плот нагоре"
#: ../src/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace down"
msgstr "Преместване на прозореца един работен плот надолу"
#: ../src/50-mutter-navigation.xml.in.h:10
msgid "Switch applications"
msgstr "Преместване на фокуса между програмите"
#: ../src/50-mutter-navigation.xml.in.h:11
msgid "Switch windows"
msgstr "Преместване на фокуса между прозорците"
#: ../src/50-mutter-navigation.xml.in.h:12
msgid "Switch windows of an application"
msgstr "Преместване на фокуса между прозорците на едно приложение"
#: ../src/50-mutter-navigation.xml.in.h:13
msgid "Switch system controls"
msgstr "Преместване на фокуса между служебните обекти"
#: ../src/50-mutter-navigation.xml.in.h:14
msgid "Switch windows directly"
msgstr "Незабавно преместване на фокуса между прозорците"
#: ../src/50-mutter-navigation.xml.in.h:15
msgid "Switch windows of an app directly"
msgstr "Незабавно преместване на фокуса между прозорците на едно приложение"
#: ../src/50-mutter-navigation.xml.in.h:16
msgid "Switch system controls directly"
msgstr "Незабавно преместване на фокуса между служебните обекти"
#: ../src/50-mutter-navigation.xml.in.h:17
msgid "Hide all normal windows"
msgstr "Скриване на всички обикновени прозорци"
#: ../src/50-mutter-navigation.xml.in.h:18
msgid "Switch to workspace 1"
msgstr "Превключване към работен плот 1"
#: ../src/50-mutter-navigation.xml.in.h:19
msgid "Switch to workspace 2"
msgstr "Превключване към работен плот 2"
#: ../src/50-mutter-navigation.xml.in.h:20
msgid "Switch to workspace 3"
msgstr "Превключване към работен плот 3"
#: ../src/50-mutter-navigation.xml.in.h:21
msgid "Switch to workspace 4"
msgstr "Превключване към работен плот 4"
#: ../src/50-mutter-navigation.xml.in.h:22
msgid "Move to workspace left"
msgstr "Преместване на левия работен плот"
#: ../src/50-mutter-navigation.xml.in.h:23
msgid "Move to workspace right"
msgstr "Преместване на десния работен плот"
#: ../src/50-mutter-navigation.xml.in.h:24
msgid "Move to workspace above"
msgstr "Преместване на горния работен плот"
#: ../src/50-mutter-navigation.xml.in.h:25
msgid "Move to workspace below"
msgstr "Преместване на долния работен плот"
#: ../src/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "Система"
#: ../src/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "Показване на прозореца за стартиране на команда"
#: ../src/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "Преглед на дейностите"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "Прозорци"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "Задействане на менюто за прозорците"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "Превключване на режима за цял екран"
#: ../src/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "Превключване на състоянието на максимизиране"
#: ../src/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "Максимизиране на прозорец"
#: ../src/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "Възстановяване на прозорец"
#: ../src/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "Превключване на състоянието на навиване"
#: ../src/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "Затваряне на прозореца"
#: ../src/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "Скриване на прозорец"
#: ../src/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "Преместване на прозорец"
#: ../src/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "Оразмеряване на прозорец"
#: ../src/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr "Превключване на появата на прозореца на всички работни места"
#: ../src/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "Ако прозорецът е под друг, го издига, иначе го понижава"
#: ../src/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "Издигане на прозореца над другите"
#: ../src/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "Понижаване на прозореца под другите прозорци"
#: ../src/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "Максимизиране на прозореца вертикално"
#: ../src/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "Максимизиране на прозореца хоризонтално"
#: ../src/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "Изглед разделен отляво"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "Изглед разделен отдясно"
#. 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:492
#: ../src/compositor/compositor.c:512
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -53,14 +229,14 @@ msgstr "Неизвестна заявка за информация за про
#: ../src/core/delete.c:111
#, c-format
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> не отговаря на съобщенията."
msgid "“%s” is not responding."
msgstr "„%s“ не отговаря на съобщенията."
#: ../src/core/delete.c:114
#: ../src/core/delete.c:113
msgid "Application is not responding."
msgstr "Програмата не отговаря на съобщенията."
#: ../src/core/delete.c:119
#: ../src/core/delete.c:118
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -68,25 +244,25 @@ msgstr ""
"Можете да изчакате малко преди изрично да накарате приложението да спре "
"работата си."
#: ../src/core/delete.c:126
#: ../src/core/delete.c:125
msgid "_Wait"
msgstr "Из_чакване"
#: ../src/core/delete.c:126
#: ../src/core/delete.c:125
msgid "_Force Quit"
msgstr "_Принудително спиране"
#: ../src/core/display.c:380
#: ../src/core/display.c:394
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Липсва разширението „%s“, необходимо за наслагване"
#: ../src/core/display.c:446
#: ../src/core/display.c:491
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Неуспех при отварянето на дисплея на X Window „%s“\n"
#: ../src/core/keybindings.c:852
#: ../src/core/keybindings.c:876
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@ -156,7 +332,7 @@ msgstr "Отпечатване на версията на програмата"
msgid "Mutter plugin to use"
msgstr "Приставка, която да се ползва"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1087
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@ -164,14 +340,14 @@ msgstr ""
"Триковете за развалените програми са изключени. Някои програми могат да са с "
"неправилно поведение.\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1162
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr ""
"Описанието на шрифт „%s“ от ключа на GSettings — %s, не може да бъде "
"анализирано\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1228
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@ -180,7 +356,7 @@ msgstr ""
"„%s“, който е открит в базата от данни с настройките, не е валиден "
"модификатор на бутон на мишката\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1780
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@ -189,17 +365,17 @@ msgstr ""
"Низът „%s“ открит в базата от данни с настройки е невалиден за стойност на "
"клавишната комбинация „%s“\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1877
#, c-format
msgid "Workspace %d"
msgstr "Работен плот %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:658
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Екранът %d на дисплей „%s“ е невалиден\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:674
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@ -208,7 +384,7 @@ msgstr ""
"Екранът %d на дисплей „%s“ вече има мениджър на прозорци; пробвайте да го "
"замените с опцията --replace.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:701
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
@ -216,12 +392,12 @@ msgstr ""
"Неуспех при получаването на избрания мениджър за прозорци на екран %d, "
"дисплей „%s“\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:770
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Екран %d на дисплей „%s“ вече има мениджър за прозорци\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:955
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Неуспех при отстъпването на екран %d на дисплей „%s“\n"
@ -319,7 +495,7 @@ msgid "Window manager error: "
msgstr "Грешка от мениджъра на прозорци: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7279
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@ -335,7 +511,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:7945
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@ -345,22 +521,22 @@ msgstr ""
"променя, но едновременно с това указва минимален размер %d x %d и максимален "
"размер %d x %d. Това не е смислено.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:274
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Приложението зададе неверен _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:393
#, c-format
msgid "%s (on %s)"
msgstr "%s (от %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1448
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "За %2$s е указан неправилен WM_TRANSIENT_FOR, прозорец 0x%1$lx.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1459
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR за прозорец 0x%lx за %s ще зацикли.\n"
@ -442,7 +618,7 @@ msgstr ""
"Ако е включено, прозорците ще се максимизират по вертикала и ще заемат "
"половината площ по хоризонтала при поставянето им край вертикалните граници "
"на екрана. При поставянето им край горната граница прозорците ще се "
"максимзират изцяло."
"максимизират изцяло."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
@ -483,10 +659,24 @@ msgstr ""
"прозорците да се изключат."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving"
msgstr "Смяната на фокуса да изчака спирането на показалеца"
#: ../src/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 ""
"Ако е зададено като истина и начинът за фокусиране е „sloppy“ или „mouse“, "
"тогава фокусът няма да се предава веднага при навлизането в прозорец, а едва "
"след като показалецът спре да се движи."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Широчина на границата за влачене"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/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."
@ -494,11 +684,24 @@ msgstr ""
"Общ размер на границите за влачене. Ако видимите граници на темата са по-"
"малки, се добавят невидими граници, за да се достигне тази величина."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
"Автоматично максимизиране на прозорци с размер близък до този на монитора"
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid ""
"If enabled, monitor nearly monitor sized windows automatically get maximized "
"when mapped."
msgstr ""
"Ако е включено, прозорците, чийто размер е близък на този на монитора, "
"автоматично ще се максимизират, когато получат фокуса."
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
msgid "Select window from tab popup"
msgstr "Избиране при обхождане чрез изскачащ прозорец"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
msgid "Cancel tab popup"
msgstr "Без изскачащ прозорец при обхождане"
@ -706,48 +909,48 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d×%d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:235
msgid "top"
msgstr "горния"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:237
msgid "bottom"
msgstr "долния"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:239
msgid "left"
msgstr "левия"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:241
msgid "right"
msgstr "десния"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:269
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "геометрията на рамката не указва „%s“ размер"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:288
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "геометрията на рамката не указва „%s“ размер на „%s“ ръб"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:325
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "Отношението на размерите на бутона %g е неподходящо"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:337
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Геометрията на рамката не указва размера на бутоните"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1050
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Преливките трябва да имат поне два цвята"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1202
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@ -756,7 +959,7 @@ msgstr ""
"Цветовата спецификация на GTK трябва да съдържа в скоби име на основен и "
"резервен цвят: напр. gtk:custom(foo,bar). Неуспех при анализа на „%s“"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1218
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@ -765,7 +968,7 @@ msgstr ""
"Неправилен знак „%c“ в параметъра за име на цвят (color_name) на gtk:custom. "
"Позволени са само A-Za-z0-9-_."
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1232
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@ -774,7 +977,7 @@ msgstr ""
"Форматът на Gtk:custom е „gtk:custom(основен_цвят,резервен_цвят)“, „%s“ не "
"съответства на формата"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1277
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@ -784,7 +987,7 @@ msgstr ""
"скоби, напр. gtk:fg[NORMAL], където NORMAL е състоянието. Неуспех при "
"анализира „%s“"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1291
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@ -794,17 +997,17 @@ msgstr ""
"състоянието, напр. gtk:fg[NORMAL], където NORMAL е състоянието. Неуспех при "
"анализа на „%s“"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1302
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Неуспех при анализа на състоянието „%s“ в цветовата спецификация"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1315
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Неуспех при анализа на цветови компонент „%s“ в цветовата спецификация"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1344
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@ -813,17 +1016,17 @@ msgstr ""
"Форматът на смесването е „blend/bg_color/fg_color/alpha“, „%s“ не се "
"подчинява на формата"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1355
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Неуспех при анализира на алфа стойността „%s“ в смесения цвят"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1365
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "Алфа стойността „%s“ в смесения цвят не е между 0.0 и 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1412
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
@ -831,27 +1034,27 @@ msgstr ""
"Форматът на навиването е „shade/base_color/factor“, „%s“ не съответства на "
"формата"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1423
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Неуспех при анализа на фактора на навиването „%s“ в цвета за навиване"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1433
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Факторът на навиване „%s“ в цвета за сянката е отрицателен"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1462
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Неуспех при анализа на цвета „%s“"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1779
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Изразът за координати съдържа символа „%s“, който не е позволен"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1806
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
@ -860,14 +1063,14 @@ msgstr ""
"Изразът за координати съдържа числото с плаваща запетая „%s“, което не може "
"да бъде анализирано"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1820
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr ""
"Изразът за координати съдържа цялото число „%s“, което не може да бъде "
"анализирано"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1941
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@ -876,24 +1079,24 @@ msgstr ""
"Изразът за координати съдържа непознат оператор в началото на този текст: "
"„%s“"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:1998
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Изразът за координати бе празен или не бе разбран"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Изразът за координати дава деление на нула"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2163
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr ""
"Изразът за координати използва оператора mod върху число с плаваща запетая"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2219
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
@ -901,18 +1104,18 @@ msgstr ""
"Изразът за координати използва оператора „%s“ на място, където се очаква "
"операнд"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2228
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr ""
"Изразът за координати използва оператор на място, където се очаква операнд"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2236
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Изразът за координати завършва с оператор вместо с операнд"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2246
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@ -921,38 +1124,38 @@ msgstr ""
"Изразът за координати използва оператора „%c“ след „%c“ без да има операнд "
"между тях"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr ""
"Изразът за координати използва непознатата променлива или константа „%s“"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2496
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Анализаторът на изрази за координати препълни буфера си."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2525
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "В израза за координати има затваряща скоба без съответна отваряща"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2589
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "В изразът за координати има отваряща скоба без съответна затваряща"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2600
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "Изразът за координати не съдържа нито оператори, нито операнди"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Темата съдържа израз, който даде грешка: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4499
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@ -961,25 +1164,25 @@ msgstr ""
"За този стил на рамката трябва да се укаже <button function=\"%s\" state=\"%s"
"\" draw_ops=\"нещо си\"/>"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Липсва <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"нещо си\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5083
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Неуспех при зареждането на темата „%s“: %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "Не е даден елементът <%s> за темата „%s“"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5255
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@ -988,7 +1191,7 @@ msgstr ""
"Няма указан стил на рамката за „%s“ прозорците в тема „%s“. Добавете елемент "
"<window type=\"%s\" style_set=\"нещо си\"/>"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
@ -996,7 +1199,7 @@ msgstr ""
"Константите определени от потребителя трябва да започват с главна буква, а "
"„%s“ не започва така"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Константата „%s“ вече е дефинирана"
@ -1506,31 +1709,31 @@ msgstr "Грешка при зареждането на темата: %s\n"
msgid "Loaded theme \"%s\" in %g seconds\n"
msgstr "Темата „%s“ е заредена за %g секунди\n"
#: ../src/ui/theme-viewer.c:870
#: ../src/ui/theme-viewer.c:871
msgid "Normal Title Font"
msgstr "Нормален шрифт на заглавието"
#: ../src/ui/theme-viewer.c:876
#: ../src/ui/theme-viewer.c:877
msgid "Small Title Font"
msgstr "Малък шрифт на заглавието"
#: ../src/ui/theme-viewer.c:882
#: ../src/ui/theme-viewer.c:883
msgid "Large Title Font"
msgstr "Голям шрифт на заглавието"
#: ../src/ui/theme-viewer.c:887
#: ../src/ui/theme-viewer.c:888
msgid "Button Layouts"
msgstr "Изглед на бутоните"
#: ../src/ui/theme-viewer.c:892
#: ../src/ui/theme-viewer.c:893
msgid "Benchmark"
msgstr "Статистика"
#: ../src/ui/theme-viewer.c:944
#: ../src/ui/theme-viewer.c:949
msgid "Window Title Goes Here"
msgstr "Тук се поставя заглавието на прозорците"
#: ../src/ui/theme-viewer.c:1047
#: ../src/ui/theme-viewer.c:1055
#, c-format
msgid ""
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
@ -1541,43 +1744,43 @@ msgstr ""
"на кадър) и %g секунди нормално време, което включва ресурси от страна на "
"сървъра X (по %g милисекунди на кадър)\n"
#: ../src/ui/theme-viewer.c:1266
#: ../src/ui/theme-viewer.c:1275
msgid "position expression test returned TRUE but set error"
msgstr ""
"изразът за проверка на разположението върна TRUE, но зададе състояние за "
"грешка"
#: ../src/ui/theme-viewer.c:1268
#: ../src/ui/theme-viewer.c:1277
msgid "position expression test returned FALSE but didn't set error"
msgstr ""
"изразът за проверка на разположението върна FALSE, но не зададе състояние за "
"грешка"
#: ../src/ui/theme-viewer.c:1272
#: ../src/ui/theme-viewer.c:1281
msgid "Error was expected but none given"
msgstr "Очакваше се грешка, но не беше дадена никаква"
#: ../src/ui/theme-viewer.c:1274
#: ../src/ui/theme-viewer.c:1283
#, c-format
msgid "Error %d was expected but %d given"
msgstr "Очакваше се грешка %d, но беше дадена %d"
#: ../src/ui/theme-viewer.c:1280
#: ../src/ui/theme-viewer.c:1289
#, c-format
msgid "Error not expected but one was returned: %s"
msgstr "Не се очакваше грешка, но беше върната една: %s"
#: ../src/ui/theme-viewer.c:1284
#: ../src/ui/theme-viewer.c:1293
#, c-format
msgid "x value was %d, %d was expected"
msgstr "стойността на x бе %d, а се очакваше %d"
#: ../src/ui/theme-viewer.c:1287
#: ../src/ui/theme-viewer.c:1296
#, c-format
msgid "y value was %d, %d was expected"
msgstr "стойността y бе %d, а се очакваше %d"
#: ../src/ui/theme-viewer.c:1352
#: ../src/ui/theme-viewer.c:1361
#, c-format
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "%d координатен израз обработен за %g секунди (%g секунди средно)\n"

File diff suppressed because it is too large Load Diff

1021
po/ca.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

594
po/cs.po

File diff suppressed because it is too large Load Diff

720
po/da.po

File diff suppressed because it is too large Load Diff

653
po/de.po

File diff suppressed because it is too large Load Diff

1504
po/el.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

313
po/eo.po
View File

@ -1493,17 +1493,260 @@ msgstr "Y-valoro estis %d, %d estis atendita"
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr ""
#~ msgid "Switch to workspace 1"
#~ msgstr "Ŝalti al laborspaco 1"
#: ../src/50-mutter-navigation.xml.in.h:17
#, fuzzy
msgid "Switch to workspace 1"
msgstr "Ŝalti al laborspaco 1"
#~ msgid "Switch to workspace 2"
#~ msgstr "Ŝalti al laborspaco 2"
#: ../src/50-mutter-navigation.xml.in.h:18
#, fuzzy
msgid "Switch to workspace 2"
msgstr "Ŝalti al laborspaco 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "Ŝalti al laborspaco 3"
#: ../src/50-mutter-navigation.xml.in.h:19
#, fuzzy
msgid "Switch to workspace 3"
msgstr "Ŝalti al laborspaco 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "Ŝalti al laborspaco 4"
#: ../src/50-mutter-navigation.xml.in.h:20
#, fuzzy
msgid "Switch to workspace 4"
msgstr "Ŝalti al laborspaco 4"
#: ../src/50-mutter-windows.xml.in.h:2
#, fuzzy
msgid "Activate the window menu"
msgstr "Aktivigi la fenestromenuon"
#: ../src/50-mutter-windows.xml.in.h:3
#, fuzzy
msgid "Toggle fullscreen mode"
msgstr "Baskuligi tutekranan reĝimon"
#: ../src/50-mutter-windows.xml.in.h:5
#, fuzzy
msgid "Maximize window"
msgstr "Maksimumigi la fenestron"
#: ../src/50-mutter-windows.xml.in.h:6
#, fuzzy
msgid "Restore window"
msgstr "Restaŭri fenestron"
#: ../src/50-mutter-windows.xml.in.h:9
#, fuzzy
msgid "Minimize window"
msgstr "Minimumigi fenestron"
#: ../src/50-mutter-windows.xml.in.h:8
#, fuzzy
msgid "Close window"
msgstr "Fermi la fenestron"
#: ../src/50-mutter-windows.xml.in.h:10
#, fuzzy
msgid "Move window"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron"
#: ../src/50-mutter-windows.xml.in.h:11
#, fuzzy
msgid "Resize window"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Ŝanĝi la fenestrograndon\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Ŝanĝi fenestrograndon"
#: ../src/50-mutter-navigation.xml.in.h:2
#, fuzzy
msgid "Move window to workspace 1"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron al laborspaco 1\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron al laborspaco 1"
#: ../src/50-mutter-navigation.xml.in.h:3
#, fuzzy
msgid "Move window to workspace 2"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron al laborspaco 2\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron al laborspaco 2"
#: ../src/50-mutter-navigation.xml.in.h:4
#, fuzzy
msgid "Move window to workspace 3"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron al laborspaco 3\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron al laborspaco 3"
#: ../src/50-mutter-navigation.xml.in.h:5
#, fuzzy
msgid "Move window to workspace 4"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron al laborspaco 4\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron al laborspaco 4"
#: ../src/50-mutter-navigation.xml.in.h:6
#, fuzzy
msgid "Move window one workspace to the left"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron al la maldekstra laborspaco\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron al la maldekstra laborspaco"
#: ../src/50-mutter-navigation.xml.in.h:7
#, fuzzy
msgid "Move window one workspace to the right"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron al la dekstra laborspaco\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron al la dekstra laborspaco"
#: ../src/50-mutter-navigation.xml.in.h:8
#, fuzzy
msgid "Move window one workspace up"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron al la supra laborspaco\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron al la supra laborspaco"
#: ../src/50-mutter-navigation.xml.in.h:9
#, fuzzy
msgid "Move window one workspace down"
msgstr ""
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi la fenestron al la suba laborspaco\n"
"#-#-#-#-# eo.po (mutter) #-#-#-#-#\n"
"Movi fenestron al la suba laborspaco"
#: ../src/50-mutter-windows.xml.in.h:16
#, fuzzy
msgid "Maximize window vertically"
msgstr "Vertikale maksimumigi la fenestron"
#: ../src/50-mutter-windows.xml.in.h:17
#, fuzzy
msgid "Maximize window horizontally"
msgstr "Horizontale maksimumigi la fenestron"
#: ../src/50-mutter-navigation.xml.in.h:1
#, fuzzy
msgid "Navigation"
msgstr "Navigado"
#: ../src/50-mutter-navigation.xml.in.h:10
#, fuzzy
msgid "Switch applications"
msgstr ""
#: ../src/50-mutter-navigation.xml.in.h:11
#, fuzzy
msgid "Switch windows of an application"
msgstr "Ŝalti fenestrojn de aplikaĵo"
#: ../src/50-mutter-navigation.xml.in.h:12
#, fuzzy
msgid "Switch system controls"
msgstr ""
#: ../src/50-mutter-navigation.xml.in.h:13
#, fuzzy
msgid "Switch windows directly"
msgstr ""
#: ../src/50-mutter-navigation.xml.in.h:14
#, fuzzy
msgid "Switch windows of an app directly"
msgstr ""
#: ../src/50-mutter-navigation.xml.in.h:15
#, fuzzy
msgid "Switch system controls directly"
msgstr ""
#: ../src/50-mutter-navigation.xml.in.h:16
#, fuzzy
msgid "Hide all normal windows"
msgstr "Kaŝi ĉiujn normalajn fenestrojn"
#: ../src/50-mutter-navigation.xml.in.h:21
#, fuzzy
msgid "Move to workspace left"
msgstr "Movi al la maldekstra laborspaco"
#: ../src/50-mutter-navigation.xml.in.h:22
#, fuzzy
msgid "Move to workspace right"
msgstr "Movi al la dekstra laborspaco"
#: ../src/50-mutter-navigation.xml.in.h:23
#, fuzzy
msgid "Move to workspace above"
msgstr "Movi al la supra laborspaco"
#: ../src/50-mutter-navigation.xml.in.h:24
#, fuzzy
msgid "Move to workspace below"
msgstr "Movi al la malsupra laborspaco"
#: ../src/50-mutter-system.xml.in.h:1
#, fuzzy
msgid "System"
msgstr "Sistemo"
#: ../src/50-mutter-system.xml.in.h:2
#, fuzzy
msgid "Show the run command prompt"
msgstr ""
#: ../src/50-mutter-system.xml.in.h:3
#, fuzzy
msgid "Show the activities overview"
msgstr ""
#: ../src/50-mutter-windows.xml.in.h:4
#, fuzzy
msgid "Toggle maximization state"
msgstr ""
#: ../src/50-mutter-windows.xml.in.h:7
#, fuzzy
msgid "Toggle shaded state"
msgstr ""
#: ../src/50-mutter-windows.xml.in.h:12
#, fuzzy
msgid "Toggle window on all workspaces or one"
msgstr ""
#: ../src/50-mutter-windows.xml.in.h:13
#, fuzzy
msgid "Raise window if covered, otherwise lower it"
msgstr ""
#: ../src/50-mutter-windows.xml.in.h:14
#, fuzzy
msgid "Raise window above other windows"
msgstr ""
#: ../src/50-mutter-windows.xml.in.h:15
#, fuzzy
msgid "Lower window below other windows"
msgstr ""
#~ msgid "Switch to workspace 5"
#~ msgstr "Ŝalti al laborspaco 5"
@ -1598,42 +1841,6 @@ msgstr ""
#~ msgid "Run a terminal"
#~ msgstr "Ruli terminalon"
#~ msgid "Activate the window menu"
#~ msgstr "Aktivigi la fenestromenuon"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Baskuligi tutekranan reĝimon"
#~ msgid "Maximize window"
#~ msgstr "Maksimumigi la fenestron"
#~ msgid "Restore window"
#~ msgstr "Restaŭri fenestron"
#~ msgid "Minimize window"
#~ msgstr "Minimumigi fenestron"
#~ msgid "Close window"
#~ msgstr "Fermi la fenestron"
#~ msgid "Move window"
#~ msgstr "Movi la fenestron"
#~ msgid "Resize window"
#~ msgstr "Ŝanĝi la fenestrograndon"
#~ msgid "Move window to workspace 1"
#~ msgstr "Movi la fenestron al laborspaco 1"
#~ msgid "Move window to workspace 2"
#~ msgstr "Movi la fenestron al laborspaco 2"
#~ msgid "Move window to workspace 3"
#~ msgstr "Movi la fenestron al laborspaco 3"
#~ msgid "Move window to workspace 4"
#~ msgstr "Movi la fenestron al laborspaco 4"
#~ msgid "Move window to workspace 5"
#~ msgstr "Movi la fenestron al laborspaco 5"
@ -1658,24 +1865,6 @@ msgstr ""
#~ msgid "Move window to workspace 12"
#~ msgstr "Movi la fenestron al laborspaco 12"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Movi la fenestron al la maldekstra laborspaco"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Movi la fenestron al la dekstra laborspaco"
#~ msgid "Move window one workspace up"
#~ msgstr "Movi la fenestron al la supra laborspaco"
#~ msgid "Move window one workspace down"
#~ msgstr "Movi la fenestron al la suba laborspaco"
#~ msgid "Maximize window vertically"
#~ msgstr "Vertikale maksimumigi la fenestron"
#~ msgid "Maximize window horizontally"
#~ msgstr "Horizontale maksimumigi la fenestron"
#~ msgid ""
#~ "There was an error running <tt>%s</tt>:\n"
#~ "\n"

515
po/es.po

File diff suppressed because it is too large Load Diff

220
po/et.po
View File

@ -7,15 +7,15 @@
#
# Tõivo Leedjärv <toivo linux ee>, 2004.
# Ivar Smolin <okul linux ee>, 2005, 2006, 20092011.
# Mattias Põldaru <mahfiaz@gmail.com>, 20082011, 2012.
# Mattias Põldaru <mahfiaz@gmail.com>, 20082011, 2012, 2013.
#
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: 2012-03-11 22:19+0000\n"
"PO-Revision-Date: 2012-03-12 00:47+0200\n"
"POT-Creation-Date: 2013-03-12 18:53+0000\n"
"PO-Revision-Date: 2013-03-12 20:55+0300\n"
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
"Language-Team: Estonian <>\n"
"Language: et\n"
@ -24,9 +24,141 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\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"
@ -41,6 +173,9 @@ 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"
@ -49,8 +184,8 @@ msgid "Unknown window information request: %d"
msgstr "Tundmatu aknateabe päring: %d"
#, c-format
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> ei vasta."
msgid "“%s” is not responding."
msgstr "„%s” ei vasta."
msgid "Application is not responding."
msgstr "Rakendus ei vasta."
@ -82,6 +217,10 @@ 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"
@ -128,8 +267,8 @@ msgstr ""
msgid "Print version"
msgstr "Versiooni printimine"
msgid "Comma-separated list of compositor plugins"
msgstr "Komaga eraldatud nimekiri komposiitmontaaži pluginatest"
msgid "Mutter plugin to use"
msgstr "Millist Mutteri pluginat kasutada"
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
@ -353,16 +492,6 @@ 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"
@ -406,6 +535,17 @@ 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."
@ -416,6 +556,16 @@ 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"
@ -426,39 +576,6 @@ msgstr "Tabulaatori hüpikakna katkestamine"
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"
@ -1317,3 +1434,6 @@ 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"

291
po/eu.po
View File

@ -31,7 +31,7 @@ msgstr "Ikusi zatia ezkerrean"
msgid "View split on right"
msgstr "Ikusi zatia eskuinean"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:3 ../src/50-mutter-windows.xml.in.h:17
msgid "Windows"
msgstr "Leihoak"
@ -1630,17 +1630,224 @@ msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr ""
"%d koordenada adierazpen analizatua %g segundotan (%g segundo batazbesteko)\n"
#~ msgid "Switch to workspace 1"
#~ msgstr "Aldatu 1. laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:18
#, fuzzy
msgid "Switch to workspace 1"
msgstr "Aldatu 1. laneko areara"
#~ msgid "Switch to workspace 2"
#~ msgstr "Aldatu 2. laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:19
#, fuzzy
msgid "Switch to workspace 2"
msgstr "Aldatu 2. laneko areara"
#~ msgid "Switch to workspace 3"
#~ msgstr "Aldatu 3. laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:20
#, fuzzy
msgid "Switch to workspace 3"
msgstr "Aldatu 3. laneko areara"
#~ msgid "Switch to workspace 4"
#~ msgstr "Aldatu 4. laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:21
#, fuzzy
msgid "Switch to workspace 4"
msgstr "Aldatu 4. laneko areara"
#: ../src/50-mutter-windows.xml.in.h:1
#, fuzzy
msgid "Activate the window menu"
msgstr "Aktibatu leiho-menua"
#: ../src/50-mutter-windows.xml.in.h:13
#, fuzzy
msgid "Toggle fullscreen mode"
msgstr "Txandakatu pantaila osoaren modua"
#: ../src/50-mutter-windows.xml.in.h:14
#, fuzzy
msgid "Toggle maximization state"
msgstr "Txandakatu maximizatze-egoera"
#: ../src/50-mutter-windows.xml.in.h:4
#, fuzzy
msgid "Maximize window"
msgstr "Maximizatu leihoa"
#: ../src/50-mutter-windows.xml.in.h:12
#, fuzzy
msgid "Restore window"
msgstr "Leheneratu leihoa"
#: ../src/50-mutter-windows.xml.in.h:15
#, fuzzy
msgid "Toggle shaded state"
msgstr "Txandakatu bildutako egoera"
#: ../src/50-mutter-windows.xml.in.h:7
#, fuzzy
msgid "Minimize window"
msgstr ""
"#-#-#-#-# eu.po (eu) #-#-#-#-#\n"
"Ikonotu leihoa\n"
"#-#-#-#-# eu.po (eu) #-#-#-#-#\n"
"Minimizatu leihoa"
#: ../src/50-mutter-windows.xml.in.h:2
#, fuzzy
msgid "Close window"
msgstr "Itxi leihoa"
#: ../src/50-mutter-windows.xml.in.h:8
#, fuzzy
msgid "Move window"
msgstr "Lekuz aldatu leihoa"
#: ../src/50-mutter-windows.xml.in.h:11
#, fuzzy
msgid "Resize window"
msgstr "Aldatu leihoaren tamaina"
#: ../src/50-mutter-navigation.xml.in.h:10
#, fuzzy
msgid "Move window to workspace 1"
msgstr "Eraman leihoa 1. laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:11
#, fuzzy
msgid "Move window to workspace 2"
msgstr "Eraman leihoa 2. laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:12
#, fuzzy
msgid "Move window to workspace 3"
msgstr "Eraman leihoa 3. laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:13
#, fuzzy
msgid "Move window to workspace 4"
msgstr "Eraman leihoa 4. laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:7
#, fuzzy
msgid "Move window one workspace to the left"
msgstr "Eraman leihoa laneko area bat ezkerrera"
#: ../src/50-mutter-navigation.xml.in.h:8
#, fuzzy
msgid "Move window one workspace to the right"
msgstr "Eraman leihoa laneko area bat eskuinera"
#: ../src/50-mutter-navigation.xml.in.h:9
#, fuzzy
msgid "Move window one workspace up"
msgstr "Eraman leihoa laneko area bat gora"
#: ../src/50-mutter-navigation.xml.in.h:6
#, fuzzy
msgid "Move window one workspace down"
msgstr "Eraman leihoa laneko area bat behera"
#: ../src/50-mutter-windows.xml.in.h:9
#, fuzzy
msgid "Raise window above other windows"
msgstr "Goratu leihoa beste leihoen gainera"
#: ../src/50-mutter-windows.xml.in.h:3
#, fuzzy
msgid "Lower window below other windows"
msgstr "Beheratu leihoa beste leihoen azpira"
#: ../src/50-mutter-windows.xml.in.h:6
#, fuzzy
msgid "Maximize window vertically"
msgstr "Maximizatu leihoa bertikalki"
#: ../src/50-mutter-windows.xml.in.h:5
#, fuzzy
msgid "Maximize window horizontally"
msgstr "Maximizatu leihoa horizontalki"
#: ../src/50-mutter-navigation.xml.in.h:1
#, fuzzy
msgid "Hide all normal windows"
msgstr "Ezkutatu leiho arrunt guztiak"
#: ../src/50-mutter-navigation.xml.in.h:2
#, fuzzy
msgid "Move to workspace above"
msgstr "Eraman gaineko laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:3
#, fuzzy
msgid "Move to workspace below"
msgstr "Eraman azpiko laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:4
#, fuzzy
msgid "Move to workspace left"
msgstr "Eraman ezkerreko laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:5
#, fuzzy
msgid "Move to workspace right"
msgstr "Eraman eskuineko laneko areara"
#: ../src/50-mutter-navigation.xml.in.h:14
#, fuzzy
msgid "Navigation"
msgstr "Nabigazioa"
#: ../src/50-mutter-navigation.xml.in.h:15
#, fuzzy
msgid "Switch applications"
msgstr "Aldatu aplikazioz"
#: ../src/50-mutter-navigation.xml.in.h:16
#, fuzzy
msgid "Switch system controls"
msgstr "Aldatu sistemaren kontrolak"
#: ../src/50-mutter-navigation.xml.in.h:17
#, fuzzy
msgid "Switch system controls directly"
msgstr "Aldatu sistemaren kontrolak zuzenean"
#: ../src/50-mutter-navigation.xml.in.h:22
#, fuzzy
msgid "Switch windows directly"
msgstr "Aldatu leihoa zuzenean"
#: ../src/50-mutter-navigation.xml.in.h:23
#, fuzzy
msgid "Switch windows of an app directly"
msgstr "Aldatu aplikazio baten leihoa zuzenean"
#: ../src/50-mutter-navigation.xml.in.h:24
#, fuzzy
msgid "Switch windows of an application"
msgstr "Aldatu aplikazio baten leihoen artean"
#: ../src/50-mutter-system.xml.in.h:1
#, fuzzy
msgid "Show the activities overview"
msgstr "Erakutsi jardueren aurkezpen orokorra"
#: ../src/50-mutter-system.xml.in.h:2
#, fuzzy
msgid "Show the run command prompt"
msgstr "Erakutsi gonbitea komandoa exekutatzeko"
#: ../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 "Goratu leihoa beste leiho batek estaltzen badu, bestela beheratu"
#: ../src/50-mutter-windows.xml.in.h:16
#, fuzzy
msgid "Toggle window on all workspaces or one"
msgstr "Txandakatu leihoa laneko area guztietan edo bakar batean egotea"
#~ msgid "Switch to workspace 5"
#~ msgstr "Aldatu 5. laneko areara"
@ -1738,55 +1945,13 @@ msgstr ""
#~ msgid "Run a terminal"
#~ msgstr "Exekutatu terminala"
#~ msgid "Activate the window menu"
#~ msgstr "Aktibatu leiho-menua"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Txandakatu pantaila osoaren modua"
#~ msgid "Toggle maximization state"
#~ msgstr "Txandakatu maximizatze-egoera"
#~ msgid "Toggle whether a window will always be visible over other windows"
#~ msgstr ""
#~ "Txandakatu leiho bat beste leiho guztien gainean ikusgai egongo den edo ez"
#~ msgid "Maximize window"
#~ msgstr "Maximizatu leihoa"
#~ msgid "Restore window"
#~ msgstr "Leheneratu leihoa"
#~ msgid "Toggle shaded state"
#~ msgstr "Txandakatu bildutako egoera"
#~ msgid "Minimize window"
#~ msgstr "Ikonotu leihoa"
#~ msgid "Close window"
#~ msgstr "Itxi leihoa"
#~ msgid "Move window"
#~ msgstr "Lekuz aldatu leihoa"
#~ msgid "Resize window"
#~ msgstr "Aldatu leihoaren tamaina"
#~ msgid "Toggle whether window is on all workspaces or just one"
#~ msgstr "Txandakatu leihoa laneko area guztietan edo bakar batean egotea"
#~ msgid "Move window to workspace 1"
#~ msgstr "Eraman leihoa 1. laneko areara"
#~ msgid "Move window to workspace 2"
#~ msgstr "Eraman leihoa 2. laneko areara"
#~ msgid "Move window to workspace 3"
#~ msgstr "Eraman leihoa 3. laneko areara"
#~ msgid "Move window to workspace 4"
#~ msgstr "Eraman leihoa 4. laneko areara"
#~ msgid "Move window to workspace 5"
#~ msgstr "Eraman leihoa 5. laneko areara"
@ -1811,33 +1976,9 @@ msgstr ""
#~ msgid "Move window to workspace 12"
#~ msgstr "Eraman leihoa 12. laneko areara"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Eraman leihoa laneko area bat ezkerrera"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Eraman leihoa laneko area bat eskuinera"
#~ msgid "Move window one workspace up"
#~ msgstr "Eraman leihoa laneko area bat gora"
#~ msgid "Move window one workspace down"
#~ msgstr "Eraman leihoa laneko area bat behera"
#~ msgid "Raise window if it's covered by another window, otherwise lower it"
#~ msgstr "Goratu leihoa beste leiho batek estaltzen badu, bestela beheratu"
#~ msgid "Raise window above other windows"
#~ msgstr "Goratu leihoa beste leihoen gainera"
#~ msgid "Lower window below other windows"
#~ msgstr "Beheratu leihoa beste leihoen azpira"
#~ msgid "Maximize window vertically"
#~ msgstr "Maximizatu leihoa bertikalki"
#~ msgid "Maximize window horizontally"
#~ msgstr "Maximizatu leihoa horizontalki"
#~ msgid "Move window to north-west (top left) corner"
#~ msgstr "Eraman leihoa ipar-mendebaldeko (goi-ezkerreko) ertzera"

360
po/fa.po
View File

@ -20,8 +20,7 @@ msgstr ""
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
"X-Poedit-SourceCharset: utf-8\n"
#: ../src/50-mutter-windows.xml.in.h:1
#| msgid "/_Windows"
#: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17
msgid "Windows"
msgstr "پنجره‌ها"
@ -1486,6 +1485,291 @@ 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"
@ -1622,9 +1906,6 @@ msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (مت
#~ "(کلیک راست) می‌شود. تغییردهنده به صورت مثلاً«&lt;Alt&gt;» یا «&lt;Super&gt;» "
#~ "نمایش داده می‌شود."
#~ msgid "Close window"
#~ msgstr "بستن پنجره"
#~ msgid "Commands to run in response to keybindings"
#~ msgstr "فرمان‌هایی که در پاسخ به کلیدهای مقید اجرا می‌شوند"
@ -1703,21 +1984,6 @@ msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (مت
#~ 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 "جابه‌جایی آنی به عقب بین تابلو و رومیزی"
@ -1739,24 +2005,6 @@ msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (مت
#~ 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 "جابه‌جایی پنجره به فضای کاری ۱۰"
@ -1766,15 +2014,6 @@ msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (مت
#~ 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 "جابه‌جایی پنجره به فضای کاری ۵"
@ -1804,12 +2043,6 @@ msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (مت
#~ "تعداد فضاهای کاری. باید بیش از صفر باشد و حداکثر مشخصی دارد (برای این که "
#~ "اتفاقی رومیزی‌تان را با درخواست ۳۴ میلیون فضای کاری از بین نبرید)."
#~ msgid "Raise window above other windows"
#~ msgstr "پیش آوردن پنجره روی همه‌ی پنجره‌ها"
#~ msgid "Resize window"
#~ msgstr "تغییر اندازه‌ی پنجره"
#~ msgid "Run a defined command"
#~ msgstr "اجرای یک فرمان تعریف شده"
@ -1850,9 +2083,6 @@ msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (مت
#~ "بعضی از دور زدن‌ها دورزدن کمبودهای خود قواعد جزئی هستند، بنابراین بعضی "
#~ "وقت‌ها اشکال در حالت دور زدن بدون دستکاری قواعد قبل رفع نیست."
#~ msgid "Switch to workspace 1"
#~ msgstr "تعویض به فضای کاری ۱"
#~ msgid "Switch to workspace 10"
#~ msgstr "تعویض به فضای کاری ۱۰"
@ -1862,15 +2092,6 @@ msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (مت
#~ 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 "تعویض به فضای کاری ۵"
@ -2925,15 +3146,6 @@ msgstr "%Id عبارت مختصاتی در %Ig ثانیه تجزیه شد (مت
#~ 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 "ضامن پنجره در تمام فضاهای کاری"

943
po/fi.po

File diff suppressed because it is too large Load Diff

492
po/fr.po

File diff suppressed because it is too large Load Diff

569
po/gl.po

File diff suppressed because it is too large Load Diff

683
po/gu.po

File diff suppressed because it is too large Load Diff

597
po/he.po

File diff suppressed because it is too large Load Diff

2942
po/hi.po

File diff suppressed because it is too large Load Diff

727
po/hu.po

File diff suppressed because it is too large Load Diff

1420
po/id.po

File diff suppressed because it is too large Load Diff

1448
po/it.po

File diff suppressed because it is too large Load Diff

984
po/ja.po

File diff suppressed because it is too large Load Diff

574
po/kn.po

File diff suppressed because it is too large Load Diff

542
po/ko.po

File diff suppressed because it is too large Load Diff

3401
po/lt.po

File diff suppressed because it is too large Load Diff

1200
po/lv.po

File diff suppressed because it is too large Load Diff

4470
po/ml.po

File diff suppressed because it is too large Load Diff

3179
po/mr.po

File diff suppressed because it is too large Load Diff

416
po/nb.po
View File

@ -1,13 +1,13 @@
# Norwegian bokmål translation of mutter.
# Copyright © 2002-2004 Free Software Foundation, Inc.
# Kjartan Maraas <kmaraas@gnome.org>, 2002-2012.
# Kjartan Maraas <kmaraas@gnome.org>, 2002-2013.
#
msgid ""
msgstr ""
"Project-Id-Version: mutter 3.5.x\n"
"Project-Id-Version: mutter 3.7.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-10 07:57+0200\n"
"PO-Revision-Date: 2012-07-10 07:58+0200\n"
"POT-Creation-Date: 2013-03-04 14:57+0100\n"
"PO-Revision-Date: 2013-03-04 14:57+0100\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
"Language: \n"
@ -15,27 +15,207 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../src/50-mutter-navigation.xml.in.h:1
msgid "Navigation"
msgstr "Navigering"
#: ../src/50-mutter-navigation.xml.in.h:2
msgid "Move window to workspace 1"
msgstr "Flytt vindu til arbeidsområde 1"
#: ../src/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2"
msgstr "Flytt vindu til arbeidsområde 2"
#: ../src/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "Flytt vindu til arbeidsområde 3"
#: ../src/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "Flytt vindu til arbeidsområde 4"
#: ../src/50-mutter-navigation.xml.in.h:6
msgid "Move window one workspace to the left"
msgstr "Flytt vindu ett arbeidsområde til venstre"
#: ../src/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the right"
msgstr "Flytt vindu ett arbeidsområde til høyre"
#: ../src/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace up"
msgstr "Flytt vindu ett arbeidsområde opp"
#: ../src/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace down"
msgstr "Flytt vindu ett arbeidsområde ned"
#: ../src/50-mutter-navigation.xml.in.h:10
msgid "Switch applications"
msgstr "Bytt programmer"
#: ../src/50-mutter-navigation.xml.in.h:11
msgid "Switch windows"
msgstr "Bytt vinduer"
#: ../src/50-mutter-navigation.xml.in.h:12
msgid "Switch windows of an application"
msgstr "Bytt mellom et programs vinduer"
#: ../src/50-mutter-navigation.xml.in.h:13
msgid "Switch system controls"
msgstr "Bytt systemkontroller"
#: ../src/50-mutter-navigation.xml.in.h:14
msgid "Switch windows directly"
msgstr "Bytt vinduer direkte"
#: ../src/50-mutter-navigation.xml.in.h:15
msgid "Switch windows of an app directly"
msgstr "Bytt mellom et programs vinduer direkte"
#: ../src/50-mutter-navigation.xml.in.h:16
msgid "Switch system controls directly"
msgstr "Bytt systemkontroller direkte"
#: ../src/50-mutter-navigation.xml.in.h:17
msgid "Hide all normal windows"
msgstr "Skjul alle normale vinduer"
#: ../src/50-mutter-navigation.xml.in.h:18
msgid "Switch to workspace 1"
msgstr "Bytt til arbeidsområde 1"
#: ../src/50-mutter-navigation.xml.in.h:19
msgid "Switch to workspace 2"
msgstr "Bytt til arbeidsområde 2"
#: ../src/50-mutter-navigation.xml.in.h:20
msgid "Switch to workspace 3"
msgstr "Bytt til arbeidsområde 3"
#: ../src/50-mutter-navigation.xml.in.h:21
msgid "Switch to workspace 4"
msgstr "Bytt til arbeidsområde 4"
#: ../src/50-mutter-navigation.xml.in.h:22
msgid "Move to workspace left"
msgstr "Flytt til arbeidsområdet til venstre"
#: ../src/50-mutter-navigation.xml.in.h:23
msgid "Move to workspace right"
msgstr "Flytt til arbeidsområdet til høyre"
#: ../src/50-mutter-navigation.xml.in.h:24
msgid "Move to workspace above"
msgstr "Flytt til arbeidsområdet over"
#: ../src/50-mutter-navigation.xml.in.h:25
msgid "Move to workspace below"
msgstr "Flytt til arbeidsområdet under"
#: ../src/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "System"
#: ../src/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "Vis kommandolinje"
#: ../src/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "Vis oversikt over aktiviteter"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "Vinduer"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "Aktiver vindumenyen"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "Slå av/på fullskjermmodus"
#: ../src/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "Endre tilstand for maksimering"
#: ../src/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "Maksimer vindu"
#: ../src/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "Gjenopprett vindu"
#: ../src/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "Endre tilstand for skyggelegging"
#: ../src/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "Lukk vindu"
#: ../src/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "Skjul vindu"
#: ../src/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "Flytt vindu"
#: ../src/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "Endre størrelse på vindu"
#: ../src/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr "Slå av/på om vinduet skal vises på alle arbeidsområder eller bare ett"
#: ../src/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "Hev vindu hvis skjult av et annet vindu, senk det ellers"
#: ../src/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "Hev vinduet over andre vinduer"
#: ../src/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "Senk vinduet under andre vinduer"
#: ../src/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "Maksimer vinduet vertikalt"
#: ../src/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "Maksimer vinduet horisontalt"
#: ../src/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "Visning delt til venstre"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "Visning delt til høyre"
#. 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:492
#: ../src/compositor/compositor.c:509
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr "En annen compositing manager kjører skjerm %i på display «%s»."
#: ../src/compositor/meta-background.c:1180
msgid "background texture could not be created from file"
msgstr "bakgrunnstekstur kunne ikke lages fra fil"
#: ../src/core/bell.c:320
msgid "Bell event"
msgstr "Klokkehendelse"
@ -47,14 +227,14 @@ msgstr "Ukjent forespørsel om vindusinformasjon: %d"
#: ../src/core/delete.c:111
#, c-format
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> svarer ikke."
msgid "“%s” is not responding."
msgstr "«%s» svarer ikke."
#: ../src/core/delete.c:114
#: ../src/core/delete.c:113
msgid "Application is not responding."
msgstr "Programmet svarer ikke."
#: ../src/core/delete.c:119
#: ../src/core/delete.c:118
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -62,25 +242,25 @@ msgstr ""
"Du kan velge å vente en kort stund for å se om det fortsetter eller tvinge "
"programmet til å avslutte helt."
#: ../src/core/delete.c:126
#: ../src/core/delete.c:125
msgid "_Wait"
msgstr "_Vent"
#: ../src/core/delete.c:126
#: ../src/core/delete.c:125
msgid "_Force Quit"
msgstr "_Tvungen nedstenging"
#: ../src/core/display.c:380
#: ../src/core/display.c:401
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Mangler utvidelsen %s som kreves for komposittfunksjon"
#: ../src/core/display.c:446
#: ../src/core/display.c:493
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Feil under åpning av X Window System skjerm «%s»\n"
#: ../src/core/keybindings.c:852
#: ../src/core/keybindings.c:929
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@ -89,6 +269,11 @@ msgstr ""
"Et annet program bruker allerede nøkkelen %s med modifikatorer %x som "
"binding\n"
#: ../src/core/keybindings.c:1129
#, c-format
msgid "\"%s\" is not a valid accelerator\n"
msgstr "«%s» er ikke en gyldig aksellerator\n"
#: ../src/core/main.c:196
msgid "Disable connection to session manager"
msgstr "Deaktiver tilkobling til sesjonshåndtereren"
@ -113,12 +298,12 @@ msgstr "Initier sesjonen fra en lagret fil"
msgid "Make X calls synchronous"
msgstr "Gjør X-kall synkrone"
#: ../src/core/main.c:494
#: ../src/core/main.c:533
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Feil under søk i temakatalog: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:549
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@ -148,7 +333,7 @@ msgstr "Skriv versjonsnummer"
msgid "Mutter plugin to use"
msgstr "Mutter-tillegg som skal brukes"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1087
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@ -156,12 +341,12 @@ msgstr ""
"Funksjonalitet for å gå rundt ødelagte programmer er deaktivert. Noen "
"programmer vil kanskje ikke oppføre seg korrekt.\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1162
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "Kunne ikke tolke skriftbeskrivelsen «%s» fra GSettings-nøkkel %s\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1228
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@ -170,7 +355,7 @@ msgstr ""
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for endring av "
"musknapp\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1780
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@ -179,17 +364,17 @@ msgstr ""
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for "
"tastaturbinding «%s»\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1879
#, c-format
msgid "Workspace %d"
msgstr "Arbeidsområde %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:673
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Skjerm %d på display «%s» er ugyldig\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:689
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@ -198,19 +383,19 @@ msgstr ""
"Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke "
"flagget --replace for å erstatte aktiv vindushåndterer.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:716
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr ""
"Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%s»\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:794
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:979
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
@ -307,7 +492,7 @@ msgid "Window manager error: "
msgstr "Feil i vindushåndterer: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7539
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@ -323,7 +508,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:8263
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@ -333,22 +518,22 @@ msgstr ""
"men setter minste størrelse %d x %d og maks størrelse %d x %d; dette virker "
"ikke fornuftig.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:318
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Programmet satte en feil _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:434
#, c-format
msgid "%s (on %s)"
msgstr "%s (på %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1517
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "Ugyldig WM_TRANSIENT_FOR vindu 0x%lx oppgitt for %s.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1528
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR vindu 0x%lx for %s ville skapt en løkke.\n"
@ -469,10 +654,21 @@ msgstr ""
"mellom vinduer."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving"
msgstr "Utsett fokusendringer til pekeren slutter å bevege seg"
#: ../src/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 ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Bredde på drakant"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/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."
@ -480,11 +676,21 @@ msgstr ""
"Total mengde med drakant. Hvis temas synlige kanter ikke er nok vil usynlige "
"kanter legges til for å imøtekomme denne verdien."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows"
msgstr "Maksimer vinduer automatisk hvis de er nesten like store som skjermen"
#: ../src/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 ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
msgid "Select window from tab popup"
msgstr "Fjern vindu fra tabulatordialog"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
msgid "Cancel tab popup"
msgstr "Avbryt tabulatordialog"
@ -687,53 +893,53 @@ msgstr "Mod5"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#.
#: ../src/ui/resizepopup.c:113
#: ../src/ui/resizepopup.c:136
#, c-format
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:235
msgid "top"
msgstr "topp"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:237
msgid "bottom"
msgstr "bunn"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:239
msgid "left"
msgstr "venstre"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:241
msgid "right"
msgstr "høyre"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:269
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "rammegeometrien spesifiserer ikke «%s»-dimensjon"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:288
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "rammegeometri spesifiserer ikke dimensjon «%s» for kant «%s»"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:325
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "Aspektrate %g for knapp er ikke fornuftig"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:337
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Rammegeometrien spesifiserer ikke størrelse på knapper"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1050
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Gradienter må ha minst to farger"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1202
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@ -742,7 +948,7 @@ msgstr ""
"Egendefinert GTK-fargespesifikasjon må ha fargenavn og reserve i parantes, f."
"eks gtk:custom(foo,bar); kunne ikke lese «%s»"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1218
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@ -751,7 +957,7 @@ msgstr ""
"Ugyldig tegn «%c» i parameter color_name for gtk:custom, kun A-Za-z0-9-_ er "
"gyldig"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1232
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@ -760,7 +966,7 @@ msgstr ""
"Gtk:custom-format er «gtk:custom(color_name,fallback)», «%s» passer ikke i "
"formatet"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1277
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@ -769,7 +975,7 @@ msgstr ""
"GTK-fargespesifikasjon må ha tilstand i klammer, f.eks. gtk:fg[NORMAL], hvor "
"NORMAL er tilstanden; kunne ikke lese «%s»"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1291
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@ -778,17 +984,17 @@ msgstr ""
"GTK-fargespesifikasjon må ha en avsluttende klamme etter tilstanden, f.eks. "
"gtk:fg[NORMAL], hvor NORMAL er tilstanden; kunne ikke lese «%s»"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1302
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Forsto ikke tilstand «%s» i fargespesifikasjonen"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1315
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Forsto ikke fargekomponent «%s» i fargespesifikasjonen"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1344
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@ -797,56 +1003,56 @@ msgstr ""
"Blandingsformat er «blend/bg_color/fg_color/alpha», «%s» passer ikke i "
"formatet"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1355
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Kunne ikke lese alpha-verdi «%s» i blandet farge"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1365
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "Alpha-verdi «%s» i blandet farge er ikke mellom 0.0 og 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1412
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"Skyggeformatet er «shade/base_color/factor», «%s» passer ikke i formatet"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1423
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Kunne ikke lese skyggefaktor «%s» i skyggelagt farge"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1433
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Skyggefaktor «%s» i skyggelagt farge er negativ"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1462
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Kunne ikke lese farge «%s»"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1779
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Koordinatuttrykk inneholder tegn «%s» som ikke er tillatt"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1806
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "Koordinatuttrykk inneholder flyttall «%s» som ikke kunne tolkes"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1820
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Koordinatuttrykk inneholder heltall «%s» som ikke kunne tolkes"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1941
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@ -855,39 +1061,39 @@ msgstr ""
"Koordinatuttrykket inneholdt en ukjent operator ved begynnelsen av denne "
"teksten: «%s»"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:1998
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Koordinatuttrykket var tomt eller ble ikke forstått"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Koordinatuttrykket resulterer i divisjon med null"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2163
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "Koordinatuttrykket prøver å bruke mod-operator på et flyttall"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2219
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Koordinatuttrykket har en operator «%s» hvor en operand var ventet"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2228
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "Koordinatuttrykket hadde en operand hvor en operator var ventet"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2236
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Koordinatuttrykket sluttet med en operator i stedet for en operand"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2246
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@ -896,38 +1102,38 @@ msgstr ""
"Koordinatuttrykket har en operator «%c» etter en operator «%c» og ingen "
"operand mellom dem."
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "Koordinatuttrykket haddeen ukjent variabel eller konstant «%s»"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2496
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Tolkeren for koordinatuttrykk oversteg buffergrensen."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2525
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "Koordinatuttrykket hadde en parantes slutt uten parantes start"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2589
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "Koordinatuttrykket hadde en åpen parantes uten en avsluttende parantes"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2600
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr ""
"Koordinatuttrykket ser ikke ut til å ha noen operatorer eller operander"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Tema inneholdt et uttrykk som resulterte i en feil: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4499
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@ -936,25 +1142,25 @@ msgstr ""
"<button function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må "
"spesifiseres for denne rammestilen"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5083
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Klarte ikke å laste tema «%s»: %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "<%s> er ikke satt for tema «%s»"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5255
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@ -963,14 +1169,14 @@ msgstr ""
"Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window "
"type=«%s» style_set=«ett-eller-annet»/>-element"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Konstant «%s» er allerede definert"
@ -1457,56 +1663,56 @@ msgstr "Kant"
msgid "Attached Modal Dialog"
msgstr "Festet modal dialog"
#: ../src/ui/theme-viewer.c:739
#: ../src/ui/theme-viewer.c:737
#, c-format
msgid "Button layout test %d"
msgstr "Test av knappeplassering %d"
#: ../src/ui/theme-viewer.c:768
#: ../src/ui/theme-viewer.c:766
#, c-format
msgid "%g milliseconds to draw one window frame"
msgstr "%g millisekunder for å tegne en vindusramme"
#: ../src/ui/theme-viewer.c:813
#: ../src/ui/theme-viewer.c:811
#, c-format
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
msgstr "Bruk: metacity-theme-viewer [TEMANAVN]\n"
#: ../src/ui/theme-viewer.c:820
#: ../src/ui/theme-viewer.c:818
#, c-format
msgid "Error loading theme: %s\n"
msgstr "Feil under lasting av tema: %s\n"
#: ../src/ui/theme-viewer.c:826
#: ../src/ui/theme-viewer.c:824
#, c-format
msgid "Loaded theme \"%s\" in %g seconds\n"
msgstr "Lastet tema «%s» på %g sekunder\n"
#: ../src/ui/theme-viewer.c:870
#: ../src/ui/theme-viewer.c:869
msgid "Normal Title Font"
msgstr "Normal tittelskrift"
#: ../src/ui/theme-viewer.c:876
#: ../src/ui/theme-viewer.c:875
msgid "Small Title Font"
msgstr "Liten tittelskrift"
#: ../src/ui/theme-viewer.c:882
#: ../src/ui/theme-viewer.c:881
msgid "Large Title Font"
msgstr "Stor tittelskrift"
#: ../src/ui/theme-viewer.c:887
#: ../src/ui/theme-viewer.c:886
msgid "Button Layouts"
msgstr "Knappeplasseringer"
#: ../src/ui/theme-viewer.c:892
#: ../src/ui/theme-viewer.c:891
msgid "Benchmark"
msgstr "Ytelsestest"
#: ../src/ui/theme-viewer.c:944
#: ../src/ui/theme-viewer.c:947
msgid "Window Title Goes Here"
msgstr "Vindutittel skal her"
#: ../src/ui/theme-viewer.c:1047
#: ../src/ui/theme-viewer.c:1053
#, c-format
msgid ""
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
@ -1517,39 +1723,39 @@ msgstr ""
"%g sekunder på klokken inklusive ressurser på X-tjener (%g millisekunder per "
"ramme)\n"
#: ../src/ui/theme-viewer.c:1266
#: ../src/ui/theme-viewer.c:1273
msgid "position expression test returned TRUE but set error"
msgstr "test av posisjonsuttrykk returnerte TRUE, men satte en feilkode"
#: ../src/ui/theme-viewer.c:1268
#: ../src/ui/theme-viewer.c:1275
msgid "position expression test returned FALSE but didn't set error"
msgstr "test av posisjonsuttrykk returnerte FALSE, men satte ikke en feilkode"
#: ../src/ui/theme-viewer.c:1272
#: ../src/ui/theme-viewer.c:1279
msgid "Error was expected but none given"
msgstr "Feil var ventet men ingen ble gitt"
#: ../src/ui/theme-viewer.c:1274
#: ../src/ui/theme-viewer.c:1281
#, c-format
msgid "Error %d was expected but %d given"
msgstr "Feil %d var ventet men %d ble gitt"
#: ../src/ui/theme-viewer.c:1280
#: ../src/ui/theme-viewer.c:1287
#, c-format
msgid "Error not expected but one was returned: %s"
msgstr "Feil ikke ventet men en ble returnert: %s"
#: ../src/ui/theme-viewer.c:1284
#: ../src/ui/theme-viewer.c:1291
#, c-format
msgid "x value was %d, %d was expected"
msgstr "x-verdi var %d, %d var ventet"
#: ../src/ui/theme-viewer.c:1287
#: ../src/ui/theme-viewer.c:1294
#, c-format
msgid "y value was %d, %d was expected"
msgstr "y-verdi var %d, %d var ventet"
#: ../src/ui/theme-viewer.c:1352
#: ../src/ui/theme-viewer.c:1359
#, c-format
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "%d koordinatuttrykk lest på %g sekunder (%g sekunder i snitt)\n"

287
po/nl.po
View File

@ -21,7 +21,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/50-mutter-windows.xml.in.h:1
#: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17
msgid "Windows"
msgstr "Vensters"
@ -1589,17 +1589,220 @@ msgstr ""
"%d coördinatenexpressies verwerkt in %g seconden (gemiddelde van %g "
"seconden)\n"
#~ msgid "Switch to workspace 1"
#~ msgstr "Schakelen naar werkblad 1"
#: ../src/50-mutter-navigation.xml.in.h:18
#, fuzzy
msgid "Switch to workspace 1"
msgstr "Schakelen naar werkblad 1"
#~ msgid "Switch to workspace 2"
#~ msgstr "Schakelen naar werkblad 2"
#: ../src/50-mutter-navigation.xml.in.h:19
#, fuzzy
msgid "Switch to workspace 2"
msgstr "Schakelen naar werkblad 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "Schakelen naar werkblad 3"
#: ../src/50-mutter-navigation.xml.in.h:20
#, fuzzy
msgid "Switch to workspace 3"
msgstr "Schakelen naar werkblad 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "Schakelen naar werkblad 4"
#: ../src/50-mutter-navigation.xml.in.h:21
#, fuzzy
msgid "Switch to workspace 4"
msgstr "Schakelen naar werkblad 4"
#: ../src/50-mutter-windows.xml.in.h:1
#, fuzzy
msgid "Activate the window menu"
msgstr "Venstermenu activeren"
#: ../src/50-mutter-windows.xml.in.h:13
#, fuzzy
msgid "Toggle fullscreen mode"
msgstr "Volledig scherm-modus omschakelen"
#: ../src/50-mutter-windows.xml.in.h:14
#, fuzzy
msgid "Toggle maximization state"
msgstr "Maximalisatie in- of uitschakelen"
#: ../src/50-mutter-windows.xml.in.h:4
#, fuzzy
msgid "Maximize window"
msgstr "Venster maximaliseren"
#: ../src/50-mutter-windows.xml.in.h:12
#, fuzzy
msgid "Restore window"
msgstr "Venster herstellen"
#: ../src/50-mutter-windows.xml.in.h:15
#, fuzzy
msgid "Toggle shaded state"
msgstr "Oprollen in- of uitschakelen"
#: ../src/50-mutter-windows.xml.in.h:7
#, fuzzy
msgid "Minimize window"
msgstr "Venster minimaliseren"
#: ../src/50-mutter-windows.xml.in.h:2
#, fuzzy
msgid "Close window"
msgstr "Venster sluiten"
#: ../src/50-mutter-windows.xml.in.h:8
#, fuzzy
msgid "Move window"
msgstr "Venster verplaatsen"
#: ../src/50-mutter-windows.xml.in.h:11
#, fuzzy
msgid "Resize window"
msgstr "Vensterafmetingen veranderen"
#: ../src/50-mutter-navigation.xml.in.h:10
#, fuzzy
msgid "Move window to workspace 1"
msgstr "Venster verplaatsen naar werkblad 1"
#: ../src/50-mutter-navigation.xml.in.h:11
#, fuzzy
msgid "Move window to workspace 2"
msgstr "Venster verplaatsen naar werkblad 2"
#: ../src/50-mutter-navigation.xml.in.h:12
#, fuzzy
msgid "Move window to workspace 3"
msgstr "Venster verplaatsen naar werkblad 3"
#: ../src/50-mutter-navigation.xml.in.h:13
#, fuzzy
msgid "Move window to workspace 4"
msgstr "Venster verplaatsen naar werkblad 4"
#: ../src/50-mutter-navigation.xml.in.h:7
#, fuzzy
msgid "Move window one workspace to the left"
msgstr "Venster één werkblad naar links verplaatsen"
#: ../src/50-mutter-navigation.xml.in.h:8
#, fuzzy
msgid "Move window one workspace to the right"
msgstr "Venster één werkblad naar rechts verplaatsen"
#: ../src/50-mutter-navigation.xml.in.h:9
#, fuzzy
msgid "Move window one workspace up"
msgstr "Venster één werkblad naar boven verplaatsen"
#: ../src/50-mutter-navigation.xml.in.h:6
#, fuzzy
msgid "Move window one workspace down"
msgstr "Venster één werkblad naar beneden verplaatsen"
#: ../src/50-mutter-windows.xml.in.h:9
#, fuzzy
msgid "Raise window above other windows"
msgstr "Venster voor andere vensters brengen"
#: ../src/50-mutter-windows.xml.in.h:3
#, fuzzy
msgid "Lower window below other windows"
msgstr "Venster achter andere vensters brengen"
#: ../src/50-mutter-windows.xml.in.h:6
#, fuzzy
msgid "Maximize window vertically"
msgstr "Een venster verticaal maximaliseren"
#: ../src/50-mutter-windows.xml.in.h:5
#, fuzzy
msgid "Maximize window horizontally"
msgstr "Een venster horizontaal maximaliseren"
#: ../src/50-mutter-navigation.xml.in.h:1
#, fuzzy
msgid "Hide all normal windows"
msgstr "Alle normale vensters verbergen"
#: ../src/50-mutter-navigation.xml.in.h:2
#, fuzzy
msgid "Move to workspace above"
msgstr "Verplaatsen naar werkblad hierboven"
#: ../src/50-mutter-navigation.xml.in.h:3
#, fuzzy
msgid "Move to workspace below"
msgstr "Verplaatsen naar werkblad hieronder"
#: ../src/50-mutter-navigation.xml.in.h:4
#, fuzzy
msgid "Move to workspace left"
msgstr "Verplaatsen naar werkblad links"
#: ../src/50-mutter-navigation.xml.in.h:5
#, fuzzy
msgid "Move to workspace right"
msgstr "Verplaatsen naar werkblad rechts"
#: ../src/50-mutter-navigation.xml.in.h:14
#, fuzzy
msgid "Navigation"
msgstr "Navigatie"
#: ../src/50-mutter-navigation.xml.in.h:15
#, fuzzy
msgid "Switch applications"
msgstr "Tussen toepassingen schakelen"
#: ../src/50-mutter-navigation.xml.in.h:16
#, fuzzy
msgid "Switch system controls"
msgstr "Systeemschermen wisselen"
#: ../src/50-mutter-navigation.xml.in.h:17
#, fuzzy
msgid "Switch system controls directly"
msgstr "Direct tussen systeemschermen schakelen"
#: ../src/50-mutter-navigation.xml.in.h:22
#, fuzzy
msgid "Switch windows directly"
msgstr "Direct tussen vensters schakelen"
#: ../src/50-mutter-navigation.xml.in.h:23
#, fuzzy
msgid "Switch windows of an app directly"
msgstr "Direct wisselen van venster binnen een toepassing"
#: ../src/50-mutter-navigation.xml.in.h:24
#, fuzzy
msgid "Switch windows of an application"
msgstr "Wisselen van venster binnen een toepassing"
#: ../src/50-mutter-system.xml.in.h:1
#, fuzzy
msgid "Show the activities overview"
msgstr "Het activiteitenoverzicht tonen"
#: ../src/50-mutter-system.xml.in.h:2
#, fuzzy
msgid "Show the run command prompt"
msgstr "Het opdrachtregelvenster tonen"
#: ../src/50-mutter-system.xml.in.h:3
#, fuzzy
msgid "System"
msgstr "Systeem"
#: ../src/50-mutter-windows.xml.in.h:10
#, fuzzy
msgid "Raise window if covered, otherwise lower it"
msgstr "Deels bedekte vensters naar voren halen of anders naar achter halen"
#: ../src/50-mutter-windows.xml.in.h:16
#, fuzzy
msgid "Toggle window on all workspaces or one"
msgstr "Venster is op alle werkbladen zichtbaar in- of uitschakelen"
#~ msgid "Switch to workspace 5"
#~ msgstr "Schakelen naar werkblad 5"
@ -1699,54 +1902,12 @@ msgstr ""
#~ msgid "Run a terminal"
#~ msgstr "Een terminal opstarten"
#~ msgid "Activate the window menu"
#~ msgstr "Venstermenu activeren"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Volledig scherm-modus omschakelen"
#~ msgid "Toggle maximization state"
#~ msgstr "Maximalisatie in- of uitschakelen"
#~ msgid "Toggle whether a window will always be visible over other windows"
#~ msgstr "Altijd bovenop-instelling omschakelen"
#~ msgid "Maximize window"
#~ msgstr "Venster maximaliseren"
#~ msgid "Restore window"
#~ msgstr "Venster herstellen"
#~ msgid "Toggle shaded state"
#~ msgstr "Oprollen in- of uitschakelen"
#~ msgid "Minimize window"
#~ msgstr "Venster minimaliseren"
#~ msgid "Close window"
#~ msgstr "Venster sluiten"
#~ msgid "Move window"
#~ msgstr "Venster verplaatsen"
#~ msgid "Resize window"
#~ msgstr "Vensterafmetingen veranderen"
#~ msgid "Toggle whether window is on all workspaces or just one"
#~ msgstr "Venster is op alle werkbladen zichtbaar omschakelen"
#~ msgid "Move window to workspace 1"
#~ msgstr "Venster verplaatsen naar werkblad 1"
#~ msgid "Move window to workspace 2"
#~ msgstr "Venster verplaatsen naar werkblad 2"
#~ msgid "Move window to workspace 3"
#~ msgstr "Venster verplaatsen naar werkblad 3"
#~ msgid "Move window to workspace 4"
#~ msgstr "Venster verplaatsen naar werkblad 4"
#~ msgid "Move window to workspace 5"
#~ msgstr "Venster verplaatsen naar werkblad 5"
@ -1771,35 +1932,11 @@ msgstr ""
#~ msgid "Move window to workspace 12"
#~ msgstr "Venster verplaatsen naar werkblad 12"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Venster één werkblad naar links verplaatsen"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Venster één werkblad naar rechts verplaatsen"
#~ msgid "Move window one workspace up"
#~ msgstr "Venster één werkblad naar boven verplaatsen"
#~ msgid "Move window one workspace down"
#~ msgstr "Venster één werkblad naar beneden verplaatsen"
#~ msgid "Raise window if it's covered by another window, otherwise lower it"
#~ msgstr ""
#~ "Venster naar boven halen indien overlapt door een ander venster, anders "
#~ "naar beneden halen"
#~ msgid "Raise window above other windows"
#~ msgstr "Venster voor andere vensters brengen"
#~ msgid "Lower window below other windows"
#~ msgstr "Venster achter andere vensters brengen"
#~ msgid "Maximize window vertically"
#~ msgstr "Een venster verticaal maximaliseren"
#~ msgid "Maximize window horizontally"
#~ msgstr "Een venster horizontaal maximaliseren"
#~ msgid "Move window to north-west (top left) corner"
#~ msgstr "Venster verplaatsen naar de noordwest-hoek (linksboven)"

2996
po/or.po

File diff suppressed because it is too large Load Diff

670
po/pa.po

File diff suppressed because it is too large Load Diff

648
po/pl.po

File diff suppressed because it is too large Load Diff

1020
po/pt.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1944,6 +1944,33 @@ 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"

1299
po/ru.po

File diff suppressed because it is too large Load Diff

3830
po/sk.po

File diff suppressed because it is too large Load Diff

942
po/sl.po

File diff suppressed because it is too large Load Diff

2945
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

588
po/sv.po

File diff suppressed because it is too large Load Diff

881
po/ta.po

File diff suppressed because it is too large Load Diff

1066
po/te.po

File diff suppressed because it is too large Load Diff

1298
po/th.po

File diff suppressed because it is too large Load Diff

259
po/tr.po
View File

@ -6,22 +6,22 @@
# Baris Cicek <baris@teamforce.name.tr>, 2004, 2005, 2008, 2009.
# İlker DAĞLI <ilker@ilkerdagli.info>, 2011.
# Muhammed EKEN <gnome@m-eken.com>, 2011.
# Muhammet Kara <muhammet.k@gmail.com>, 2011, 2012.
# Muhammet Kara <muhammetk@acikkaynak.name.tr>, 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: 2012-03-15 21:29+0000\n"
"PO-Revision-Date: 2012-03-23 21:56+0000\n"
"Last-Translator: Muhammet Kara <muhammet.k@gmail.com>\n"
"POT-Creation-Date: 2012-08-06 23:35+0000\n"
"PO-Revision-Date: 2012-08-09 16:48+0000\n"
"Last-Translator: Muhammet Kara <muhammetk@acikkaynak.name.tr>\n"
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.2\n"
"X-Generator: Lokalize 1.4\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: tr\n"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
@ -46,7 +46,7 @@ msgstr ""
"\"%2$s\" monitöründeki %1$i ekranında zaten başka bir birleştirme yöneticisi "
"çalışıyor."
#: ../src/core/bell.c:307
#: ../src/core/bell.c:320
msgid "Bell event"
msgstr "Etkinlik zili"
@ -55,16 +55,17 @@ msgstr "Etkinlik zili"
msgid "Unknown window information request: %d"
msgstr "Bilinmeyen pencere bilgi isteği: %d"
#: ../src/core/delete.c:111
#, c-format
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> cevap vermiyor."
#: ../src/core/delete.c:114
#, c-format
#| msgid "<tt>%s</tt> is not responding."
msgid "%s is not responding."
msgstr "%s yanıt vermiyor."
#: ../src/core/delete.c:118
msgid "Application is not responding."
msgstr "Uygulama cevap vermiyor"
#: ../src/core/delete.c:119
#: ../src/core/delete.c:123
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -72,25 +73,25 @@ msgstr ""
"Uygulamanın devam etmesi için bir müddet bekleyi seçebilirsiniz ya d a "
"uygulamanın tamamen çıkması için onu zorlayabilirsiniz."
#: ../src/core/delete.c:126
#: ../src/core/delete.c:130
msgid "_Wait"
msgstr "_Bekle"
#: ../src/core/delete.c:126
#: ../src/core/delete.c:130
msgid "_Force Quit"
msgstr "_Sonlandır"
#: ../src/core/display.c:387
#: ../src/core/display.c:380
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Kompozisyon için gerekli olan %s eklentisi eksik"
#: ../src/core/display.c:453
#: ../src/core/display.c:446
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "X Pencere Sistemi '%s' ekranıılamadı\n"
#: ../src/core/keybindings.c:852
#: ../src/core/keybindings.c:844
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@ -99,36 +100,36 @@ msgstr ""
"%s tuşu %x değiştiricileriyle birlikte başka bir uygulama tarafından tuş "
"bağıolarak kullanılıyor\n"
#: ../src/core/main.c:206
#: ../src/core/main.c:196
msgid "Disable connection to session manager"
msgstr "Ortam yöneticisine olan bağlantıyı kapat"
#: ../src/core/main.c:212
#: ../src/core/main.c:202
msgid "Replace the running window manager"
msgstr "Çalışan pencere yöneticisinin yerini al"
#: ../src/core/main.c:218
#: ../src/core/main.c:208
msgid "Specify session management ID"
msgstr "Ortam yönetim ID'sini belirtin"
#: ../src/core/main.c:223
#: ../src/core/main.c:213
msgid "X Display to use"
msgstr "Kullanılacak X Ekranı"
#: ../src/core/main.c:229
#: ../src/core/main.c:219
msgid "Initialize session from savefile"
msgstr "Ortamı kayıtlı dosyadan başlat"
#: ../src/core/main.c:235
#: ../src/core/main.c:225
msgid "Make X calls synchronous"
msgstr "X çağrılarını eşazamanlı yap"
#: ../src/core/main.c:504
#: ../src/core/main.c:494
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Tema dizini taranırken hata oluştu: %s\n"
#: ../src/core/main.c:520
#: ../src/core/main.c:510
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@ -155,10 +156,10 @@ msgid "Print version"
msgstr "Sürümü yazdır"
#: ../src/core/mutter.c:60
msgid "Comma-separated list of compositor plugins"
msgstr "Kompozisyon eklentilerinin listesi (virgül ile ayrılmış)"
msgid "Mutter plugin to use"
msgstr "Kullanılacak Mutter eklentisi"
#: ../src/core/prefs.c:1077
#: ../src/core/prefs.c:1065
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@ -166,13 +167,13 @@ msgstr ""
"Hatalı uygulamalara yönelik çözümler devre dışı. Bazı uygulamalar düzgün "
"işlemeyebilir.\n"
#: ../src/core/prefs.c:1152
#: ../src/core/prefs.c:1140
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr ""
"\"%s\" yazıtipi tanımlaması, %s GSettings anahtarından ayrıştırılamadı\n"
#: ../src/core/prefs.c:1218
#: ../src/core/prefs.c:1206
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@ -181,7 +182,7 @@ msgstr ""
"Yapılandırma veritabanında bulunan \"%s\", fare düğme düzenleyicisi olarak "
"geçerli bir değer değil\n"
#: ../src/core/prefs.c:1739
#: ../src/core/prefs.c:1724
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@ -190,17 +191,17 @@ msgstr ""
"Yapılandırma veritabanında bulunan \"%s\", \"%s\" tuş bağı olarak geçerli "
"bir değer değil\n"
#: ../src/core/prefs.c:1836
#: ../src/core/prefs.c:1821
#, c-format
msgid "Workspace %d"
msgstr "Çalışma Alanı %d"
#: ../src/core/screen.c:730
#: ../src/core/screen.c:652
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "'%2$s' X oturumundaki ekran %1$d geçersiz\n"
#: ../src/core/screen.c:746
#: ../src/core/screen.c:668
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@ -210,7 +211,7 @@ msgstr ""
"geçerli pencere yöneticisinin yerine bir başkasını koymak için --replace "
"seçeneğini kullanmayı deneyin.\n"
#: ../src/core/screen.c:773
#: ../src/core/screen.c:695
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
@ -218,13 +219,13 @@ msgstr ""
"\"%2$s\" X oturumundaki ekran %1$d hangi pencere yöneticisine "
"sahipöğrenilemedi\n"
#: ../src/core/screen.c:828
#: ../src/core/screen.c:750
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr ""
"\"%2$s\" X oturumundaki ekran %1$d bir pencere yöneticisine zaten sahip\n"
#: ../src/core/screen.c:1013
#: ../src/core/screen.c:935
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "\"%2$s\" X oturumundaki ekran %1$d serberst bırakılamadı\"\n"
@ -286,44 +287,44 @@ msgstr ""
"Bu pencereler, &quot;geçerli ayarları kaydet&quot; özelliğini desteklemiyor "
"ve bir dahaki girişinizde elle yeniden başlatmanız gerekecek."
#: ../src/core/util.c:111
#: ../src/core/util.c:80
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Hata ayıklama günlüğü açılamadı: %s\n"
#: ../src/core/util.c:121
#: ../src/core/util.c:90
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "fdopen() günlük dosyası %s açılamadı: %s\n"
#: ../src/core/util.c:127
#: ../src/core/util.c:96
#, c-format
msgid "Opened log file %s\n"
msgstr "%s günlük dosyasııldı\n"
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter, ayrıntılı kip desteği olmadan derlenmiş\n"
#: ../src/core/util.c:290
#: ../src/core/util.c:259
msgid "Window manager: "
msgstr "Pencere yöneticisi: "
#: ../src/core/util.c:438
#: ../src/core/util.c:407
msgid "Bug in window manager: "
msgstr "Pencere yöneticisinde hata: "
#: ../src/core/util.c:471
#: ../src/core/util.c:438
msgid "Window manager warning: "
msgstr "Pencere yöneticisi uyarısı: "
#: ../src/core/util.c:499
#: ../src/core/util.c:466
msgid "Window manager error: "
msgstr "Pencere yöneticisi hatası: "
#. first time through
#: ../src/core/window.c:7269
#: ../src/core/window.c:7234
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@ -339,32 +340,32 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7932
#: ../src/core/window.c:7899
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
"d x %d and max size %d x %d; this doesn't make much sense.\n"
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
msgstr ""
"%s penceresi bir yandan yeniden boyutlandırılamaz olduğunu gösteren bir MWM "
"ipucu verirken anlamsız bir biçimde en küçük (%d x %d) ve en büyük (%d x %d) "
"boyut sınırlarını da atıyor.\n"
#: ../src/core/window-props.c:309
#: ../src/core/window-props.c:310
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Uygulama geçersiz _NET_WM_PID %lu atadı\n"
#: ../src/core/window-props.c:426
#: ../src/core/window-props.c:429
#, c-format
msgid "%s (on %s)"
msgstr "%s (%s üzerinde)"
#: ../src/core/window-props.c:1481
#: ../src/core/window-props.c:1484
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "Geçersiz WM_TRANSIENT_FOR pencere 0x%lx belirtilen %s.\n"
#: ../src/core/window-props.c:1492
#: ../src/core/window-props.c:1495
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR penceresi 0x%lx (%s için) döngü oluşturacak.\n"
@ -432,23 +433,11 @@ msgstr ""
"birlikte hareket eder."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Live Hidden Windows"
msgstr "Çalışır Durumdaki Gizli Pencereler"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"Gizli pencerelerin (ö.r. küçültülmüş pencereler ve diğer çalışma alanındaki "
"pencereler) çalışır bırakılıp bırakılmayacağını belirler."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Pencereler ekran kenarlarında bırakıldığında kenar döşemeyi etkinleştir."
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/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 "
@ -459,26 +448,25 @@ msgstr ""
"şekilde yeniden boyutlandırılır. Ekranın tepedeki kenarına bırakılan "
"pencereler ekranı tamamen kaplar."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
msgstr "Çalışma alanları dinamik olarak yönetilir"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/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 ""
"Çalışma alanlarının dinamik olarak mı yönetileceğini yoksa sabit sayıda "
"çalışma alanı mı olacağını "
"belirler (org.gnome.desktop.wm.preferences içindeki num-workspaces değişkeni "
"tarafından belirlenir)."
"çalışma alanı mı olacağını belirler (org.gnome.desktop.wm.preferences "
"içindeki num-workspaces değişkeni tarafından belirlenir)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary"
msgstr "Sadece birincil monitördeki çalışma alanları"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/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."
@ -486,11 +474,11 @@ msgstr ""
"Çalışma alanı değiştirilmesinin, tüm monitörlerdeki pencerelerde mi yoksa "
"sadece birincil monitördekilerde mi gerçekleşeceğini belirler."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup"
msgstr "Sekme açılır penceresi yok"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -498,11 +486,11 @@ msgstr ""
"Pencere geçişinde çerçeve vurgulanması ve açılır pencere kullanımının "
"kapatılıp kapatılmayacağını belirler."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Draggable border width"
msgstr "Sürüklenebilir kenarlık genişliği"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
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."
@ -511,11 +499,11 @@ msgstr ""
"kenarlıkları yetersiz gelirse, bu değere ulaşmak için görünmez kenarlıklar "
"eklenir."
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Select window from tab popup"
msgstr "Pencereyi, sekme açılır penceresinden seç"
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid "Cancel tab popup"
msgstr "Sekmeyi yeni pencerede açmayı iptal et"
@ -723,49 +711,49 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:253
#: ../src/ui/theme.c:234
msgid "top"
msgstr "üst"
#: ../src/ui/theme.c:255
#: ../src/ui/theme.c:236
msgid "bottom"
msgstr "alt"
#: ../src/ui/theme.c:257
#: ../src/ui/theme.c:238
msgid "left"
msgstr "sol"
#: ../src/ui/theme.c:259
#: ../src/ui/theme.c:240
msgid "right"
msgstr "sağ"
#: ../src/ui/theme.c:286
#: ../src/ui/theme.c:268
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "çerçeve geometrisi \"%s\" boyutunu tanımlamıyor"
#: ../src/ui/theme.c:305
#: ../src/ui/theme.c:287
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr ""
"çerçeve geometrisi \"%s\" boyutunu \"%s\" pencere kenarı için tanımlamıyor"
#: ../src/ui/theme.c:342
#: ../src/ui/theme.c:324
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "%g kabul edilebilir bir düğme en-boy oranı değil"
#: ../src/ui/theme.c:354
#: ../src/ui/theme.c:336
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Çerçeve geometrisi düğmelerin boyutunu tanımlamıyor"
#: ../src/ui/theme.c:1067
#: ../src/ui/theme.c:1049
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Renk geçişlerinde en az iki renk olmalı"
#: ../src/ui/theme.c:1219
#: ../src/ui/theme.c:1201
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@ -774,7 +762,7 @@ msgstr ""
"GTK özel renk belirtiminde parantez içinde renk adı ve fallback kelimesi yer "
"almalıdır; örneğin, gtk:custom[foo,bar]; \"%s\" ayrıştırılamadı"
#: ../src/ui/theme.c:1235
#: ../src/ui/theme.c:1217
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@ -783,7 +771,7 @@ msgstr ""
"gtk:custom color_name parametresinin adında geçersiz karakter '%c'; sadece A-"
"Za-z0-9-_ karakterleri geçerlidir"
#: ../src/ui/theme.c:1249
#: ../src/ui/theme.c:1231
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@ -792,7 +780,7 @@ msgstr ""
"Gtk:custom biçimi \"gtk:custom(color_name,fallback)\" şeklindedir; \"%s\" "
"biçime uymuyor"
#: ../src/ui/theme.c:1294
#: ../src/ui/theme.c:1276
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@ -802,7 +790,7 @@ msgstr ""
"örneğin, gtk:fg[NORMAL] belirtiminde NORMAL, durumu gösterir; \"%s\" "
"ayrıştırılamadı"
#: ../src/ui/theme.c:1308
#: ../src/ui/theme.c:1290
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@ -812,17 +800,17 @@ msgstr ""
"örneğin, gtk:fg[NORMAL] belirtiminde NORMAL, durumu gösterir; \"%s\" "
"ayrıştırılamadı"
#: ../src/ui/theme.c:1319
#: ../src/ui/theme.c:1301
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Renk belirtimindeki \"%s\" durumu anlaşılamadı"
#: ../src/ui/theme.c:1332
#: ../src/ui/theme.c:1314
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Renk belirtimindeki \"%s\" renk bileşeni anlaşılamadı"
#: ../src/ui/theme.c:1361
#: ../src/ui/theme.c:1343
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@ -831,17 +819,17 @@ msgstr ""
"Renk karışımının doğru biçimi \"blend/bg_color/fg_color/alpha\"dır; \"%s\" "
"bu biçime uymuyor"
#: ../src/ui/theme.c:1372
#: ../src/ui/theme.c:1354
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Renk karışımındaki \"%s\" alfa değeri ayrıştırılamadı"
#: ../src/ui/theme.c:1382
#: ../src/ui/theme.c:1364
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "Renk karışımının alfa değeri \"%s\", 0.0 ile 1.0 arasında değil"
#: ../src/ui/theme.c:1429
#: ../src/ui/theme.c:1411
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
@ -849,27 +837,27 @@ msgstr ""
"Gölgelendirmenin doğru biçimi \"shade/bas_color/factor\"dır; \"%s\" bu "
"biçime uymuyor"
#: ../src/ui/theme.c:1440
#: ../src/ui/theme.c:1422
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Gölgeli rengin gölge katsayısı olan \"%s\" ayrıştırılamadı"
#: ../src/ui/theme.c:1450
#: ../src/ui/theme.c:1432
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Gölgeli rengin gölge katsayısı olan \"%s\", negatif"
#: ../src/ui/theme.c:1479
#: ../src/ui/theme.c:1461
#, c-format
msgid "Could not parse color \"%s\""
msgstr "\"%s\" rengi ayrıştırılamadı"
#: ../src/ui/theme.c:1790
#: ../src/ui/theme.c:1778
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Kordinat ifadesi izin verilmeyen '%s' karakterini içeriyor"
#: ../src/ui/theme.c:1817
#: ../src/ui/theme.c:1805
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
@ -877,12 +865,12 @@ msgid ""
msgstr ""
"Kordinat ifadesi '%s' gerçel sayısını içeriyor ve bu sayı ayrıştırılamıyor"
#: ../src/ui/theme.c:1831
#: ../src/ui/theme.c:1819
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Kordinat ifadesi ayrıştırılamayan '%s' tamsayısını içeriyor"
#: ../src/ui/theme.c:1953
#: ../src/ui/theme.c:1940
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@ -890,17 +878,17 @@ msgid ""
msgstr ""
"Kordinat ifadesi bu metnin başında bilinmeyen bir işleç içeriyor: \"%s\""
#: ../src/ui/theme.c:2010
#: ../src/ui/theme.c:1997
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Kordinat ifadesi boş ya da anlaşılamadı"
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Kordinat ifadesi sıfıra bölümle sonuçlanıyor"
#: ../src/ui/theme.c:2173
#: ../src/ui/theme.c:2162
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
@ -908,23 +896,23 @@ msgstr ""
"Kordinat ifadesi bir gerçel sayı üzerinde mod (kalan bulma) işlecini "
"kullanmaya çalıştı"
#: ../src/ui/theme.c:2229
#: ../src/ui/theme.c:2218
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Kordinat ifadesi işleneni beklenen \"%s\", işlecini içeriyor"
#: ../src/ui/theme.c:2238
#: ../src/ui/theme.c:2227
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "Kordinat ifadesi işleci beklenen bir işlenen içeriyor"
#: ../src/ui/theme.c:2246
#: ../src/ui/theme.c:2235
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Kordinat ifadesi bir işlenen yerine işleçle bitiyor"
#: ../src/ui/theme.c:2256
#: ../src/ui/theme.c:2245
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@ -933,38 +921,38 @@ msgstr ""
"Kordinat ifadesi birbirlerinin izleyen ve aralarında işlenen olmayan \"%2$c"
"\" ve \"%1$c\" işleçlerini içeriyor"
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr ""
"Kordinat ifadesi bilinmeyen bir değişken ya da sabit olan \"%s\" içeriyor"
#: ../src/ui/theme.c:2506
#: ../src/ui/theme.c:2495
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Kordinat belirtim ayrıştırıcısı tamponundan taştı."
#: ../src/ui/theme.c:2535
#: ../src/ui/theme.c:2524
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "Kordinat ifadesi sol parantezi olmayan bir sağ parantez içeriyor"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2588
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "Kordinat ifadesi sağ parantezi olmayan bir sol parantez içeriyor"
#: ../src/ui/theme.c:2610
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "Kordinat ifadesi göründüğü kadarıyla ne işleç ne de işlenen içeriyor"
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Tema bir hata ile sonuçlanan ifadeye sahip: %s\n"
#: ../src/ui/theme.c:4533
#: ../src/ui/theme.c:4498
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@ -973,25 +961,25 @@ msgstr ""
"Bu çerçeve biçeminde <button function=\"%s\" state=\"%s\" draw_ops=\"her "
"neyse\"/> belirtilmek zorunda"
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Eksik <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"her neyse\"/>"
#: ../src/ui/theme.c:5139
#: ../src/ui/theme.c:5082
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "\"%s\" teması yüklenemedi: %s\n"
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "\"%2$s\" temasında hiç <%1$s> atanmamış"
#: ../src/ui/theme.c:5311
#: ../src/ui/theme.c:5254
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@ -1000,14 +988,14 @@ msgstr ""
"\"%2$s\" temasında \"%1$s\" pencere türüne çerçeve biçemi atanmamış, bir "
"<window type=\"%3$s\" style_set=\"her neyse\"/> öğesi ekleyin"
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"Kullanıcı tanımlı sabitler büyük harfle başlamalıdır; \"%s\" buna uymuyor"
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "\"%s\" sabit değeri zaten tanımlanmış"
@ -1390,7 +1378,7 @@ msgstr "<%s> öğesinin içinde metin bulunmamalıdır"
msgid "<%s> specified twice for this theme"
msgstr "Bu tema için <%s> iki kez belirtilmiş"
#: ../src/ui/theme-parser.c:4348
#: ../src/ui/theme-parser.c:4334
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Tema %s için geçerli bir dosya bulunamadı\n"
@ -1594,6 +1582,19 @@ msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr ""
"%d kordinat ifadesi %g saniye içinde ayrıştırıldı (%g saniye ortalama ile)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "Kompozisyon eklentilerinin listesi (virgül ile ayrılmış)"
#~ msgid "Live Hidden Windows"
#~ msgstr "Çalışır Durumdaki Gizli Pencereler"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "Gizli pencerelerin (ö.r. küçültülmüş pencereler ve diğer çalışma "
#~ "alanındaki pencereler) çalışır bırakılıp bırakılmayacağını belirler."
#~ msgid "Close Window"
#~ msgstr "Pencereyi Kapat"

1748
po/ug.po

File diff suppressed because it is too large Load Diff

547
po/uk.po

File diff suppressed because it is too large Load Diff

768
po/vi.po

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bits\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../src/50-mutter-windows.xml.in.h:1
#: ../src/50-mutter-windows.xml.in.h:1 ../src/50-mutter-windows.xml.in.h:17
msgid "Windows"
msgstr "窗口"
@ -1530,17 +1530,177 @@ msgstr "y 值为 %d但应该为 %d "
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "在 %2$g 秒内处理了 %1$d 个坐标表达式(平均 %3$g 秒)\n"
#~ msgid "Switch to workspace 1"
#~ msgstr "切换到工作区 1"
#: ../src/50-mutter-navigation.xml.in.h:18
msgid "Switch to workspace 1"
msgstr "切换到工作区 1"
#~ msgid "Switch to workspace 2"
#~ msgstr "切换到工作区 2"
#: ../src/50-mutter-navigation.xml.in.h:19
msgid "Switch to workspace 2"
msgstr "切换到工作区 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "切换到工作区 3"
#: ../src/50-mutter-navigation.xml.in.h:20
msgid "Switch to workspace 3"
msgstr "切换到工作区 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "切换到工作区 4"
#: ../src/50-mutter-navigation.xml.in.h:21
msgid "Switch to workspace 4"
msgstr "切换到工作区 4"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Activate the window menu"
msgstr "激活窗口菜单"
#: ../src/50-mutter-windows.xml.in.h:13
msgid "Toggle fullscreen mode"
msgstr "切换全屏模式"
#: ../src/50-mutter-windows.xml.in.h:14
msgid "Toggle maximization state"
msgstr "切换最大化状态"
#: ../src/50-mutter-windows.xml.in.h:4
msgid "Maximize window"
msgstr "最大化窗口"
#: ../src/50-mutter-windows.xml.in.h:12
msgid "Restore window"
msgstr "恢复窗口"
#: ../src/50-mutter-windows.xml.in.h:15
msgid "Toggle shaded state"
msgstr "切换卷起状态"
#: ../src/50-mutter-windows.xml.in.h:7
msgid "Minimize window"
msgstr "最小化窗口"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "Close window"
msgstr "关闭窗口"
#: ../src/50-mutter-windows.xml.in.h:8
msgid "Move window"
msgstr "移动窗口"
#: ../src/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "改变窗口大小"
#: ../src/50-mutter-navigation.xml.in.h:10
msgid "Move window to workspace 1"
msgstr "将窗口移到工作区 1"
#: ../src/50-mutter-navigation.xml.in.h:11
msgid "Move window to workspace 2"
msgstr "将窗口移到工作区 2"
#: ../src/50-mutter-navigation.xml.in.h:12
msgid "Move window to workspace 3"
msgstr "将窗口移到工作区 3"
#: ../src/50-mutter-navigation.xml.in.h:13
msgid "Move window to workspace 4"
msgstr "将窗口移到工作区 4"
#: ../src/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the left"
msgstr "将窗口左移一个工作区"
#: ../src/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace to the right"
msgstr "将窗口右移一个工作区"
#: ../src/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up"
msgstr "将窗口上移一个工作区"
#: ../src/50-mutter-navigation.xml.in.h:6
msgid "Move window one workspace down"
msgstr "将窗口下移一个工作区"
#: ../src/50-mutter-windows.xml.in.h:9
msgid "Raise window above other windows"
msgstr "将窗口提升到其它窗口之上"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Lower window below other windows"
msgstr "将窗口降低到其它窗口之下"
#: ../src/50-mutter-windows.xml.in.h:6
msgid "Maximize window vertically"
msgstr "垂直最大化窗口"
#: ../src/50-mutter-windows.xml.in.h:5
msgid "Maximize window horizontally"
msgstr "水平最大化窗口"
#: ../src/50-mutter-navigation.xml.in.h:1
msgid "Hide all normal windows"
msgstr "隐藏所有正常窗口"
#: ../src/50-mutter-navigation.xml.in.h:2
msgid "Move to workspace above"
msgstr "移动到上层工作区"
#: ../src/50-mutter-navigation.xml.in.h:3
msgid "Move to workspace below"
msgstr "移动到下层工作区"
#: ../src/50-mutter-navigation.xml.in.h:4
msgid "Move to workspace left"
msgstr "移动到左侧工作区"
#: ../src/50-mutter-navigation.xml.in.h:5
msgid "Move to workspace right"
msgstr "移动到右侧工作区"
#: ../src/50-mutter-navigation.xml.in.h:14
msgid "Navigation"
msgstr "导航"
#: ../src/50-mutter-navigation.xml.in.h:15
msgid "Switch applications"
msgstr "切换应用程序"
#: ../src/50-mutter-navigation.xml.in.h:16
msgid "Switch system controls"
msgstr "切换系统控制"
#: ../src/50-mutter-navigation.xml.in.h:17
msgid "Switch system controls directly"
msgstr "直接切换系统控制"
#: ../src/50-mutter-navigation.xml.in.h:22
msgid "Switch windows directly"
msgstr "直接切换窗口"
#: ../src/50-mutter-navigation.xml.in.h:23
msgid "Switch windows of an app directly"
msgstr "在应用程序窗口间直接移动焦点"
#: ../src/50-mutter-navigation.xml.in.h:24
msgid "Switch windows of an application"
msgstr "在应用程序的窗口之间切换窗口"
#: ../src/50-mutter-system.xml.in.h:1
msgid "Show the activities overview"
msgstr "显示活动大纲"
#: ../src/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "显示运行命令提示符"
#: ../src/50-mutter-system.xml.in.h:3
msgid "System"
msgstr "系统"
#: ../src/50-mutter-windows.xml.in.h:10
msgid "Raise window if covered, otherwise lower it"
msgstr "如果窗口被其他窗口遮盖,则提升它,否则降低它"
#: ../src/50-mutter-windows.xml.in.h:16
msgid "Toggle window on all workspaces or one"
msgstr "在位于所有或仅一个工作区的窗口间切换"
#~ msgid "Switch to workspace 5"
#~ msgstr "切换到工作区 5"
@ -1636,54 +1796,12 @@ msgstr "在 %2$g 秒内处理了 %1$d 个坐标表达式(平均 %3$g 秒)\n"
#~ msgid "Run a terminal"
#~ msgstr "运行终端"
#~ msgid "Activate the window menu"
#~ msgstr "激活窗口菜单"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "切换全屏模式"
#~ msgid "Toggle maximization state"
#~ msgstr "切换最大化状态"
#~ msgid "Toggle whether a window will always be visible over other windows"
#~ msgstr "在窗口是否永远可见于其它窗口之上间切换"
#~ msgid "Maximize window"
#~ msgstr "最大化窗口"
#~ msgid "Restore window"
#~ msgstr "恢复窗口"
#~ msgid "Toggle shaded state"
#~ msgstr "切换卷起状态"
#~ msgid "Minimize window"
#~ msgstr "最小化窗口"
#~ msgid "Close window"
#~ msgstr "关闭窗口"
#~ msgid "Move window"
#~ msgstr "移动窗口"
#~ msgid "Resize window"
#~ msgstr "改变窗口大小"
#~ msgid "Toggle whether window is on all workspaces or just one"
#~ msgstr "在窗口位于所有或仅一个工作区间切换"
#~ msgid "Move window to workspace 1"
#~ msgstr "将窗口移到工作区 1"
#~ msgid "Move window to workspace 2"
#~ msgstr "将窗口移到工作区 2"
#~ msgid "Move window to workspace 3"
#~ msgstr "将窗口移到工作区 3"
#~ msgid "Move window to workspace 4"
#~ msgstr "将窗口移到工作区 4"
#~ msgid "Move window to workspace 5"
#~ msgstr "将窗口移到工作区 5"
@ -1708,33 +1826,9 @@ msgstr "在 %2$g 秒内处理了 %1$d 个坐标表达式(平均 %3$g 秒)\n"
#~ msgid "Move window to workspace 12"
#~ msgstr "将窗口移到工作区 12"
#~ 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 one workspace down"
#~ msgstr "将窗口下移一个工作区"
#~ msgid "Raise window if it's covered by another window, otherwise lower it"
#~ msgstr "如果窗口被其他窗口遮盖,则提升它,否则降低它"
#~ msgid "Raise window above other windows"
#~ msgstr "将窗口提升到其它窗口之上"
#~ msgid "Lower window below other windows"
#~ msgstr "将窗口降低到其它窗口之下"
#~ msgid "Maximize window vertically"
#~ msgstr "垂直最大化窗口"
#~ msgid "Maximize window horizontally"
#~ msgstr "水平最大化窗口"
#~ msgid "Move window to north-west (top left) corner"
#~ msgstr "将窗口移到西北(左上)角"

View File

@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity 3.3.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-17 15:17+0800\n"
"PO-Revision-Date: 2012-07-17 15:17+0800\n"
"POT-Creation-Date: 2013-03-06 19:12+0800\n"
"PO-Revision-Date: 2013-03-06 19:12+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
"Language: \n"
@ -18,29 +18,210 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.5.3\n"
#: ../src/50-mutter-navigation.xml.in.h:1
msgid "Navigation"
msgstr "導航"
#: ../src/50-mutter-navigation.xml.in.h:2
msgid "Move window to workspace 1"
msgstr "將視窗移至第 1 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2"
msgstr "將視窗移至第 2 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "將視窗移至第 3 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "將視窗移至第 4 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:6
msgid "Move window one workspace to the left"
msgstr "將視窗移至左方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the right"
msgstr "將視窗移至右方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace up"
msgstr "將視窗移至上方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace down"
msgstr "將視窗移至下方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:10
msgid "Switch applications"
msgstr "切換程式"
#: ../src/50-mutter-navigation.xml.in.h:11
msgid "Switch windows"
msgstr "切換視窗"
#: ../src/50-mutter-navigation.xml.in.h:12
msgid "Switch windows of an application"
msgstr "切換程式的視窗"
#: ../src/50-mutter-navigation.xml.in.h:13
msgid "Switch system controls"
msgstr "切換系統控制"
#: ../src/50-mutter-navigation.xml.in.h:14
msgid "Switch windows directly"
msgstr "直接切換視窗"
#: ../src/50-mutter-navigation.xml.in.h:15
msgid "Switch windows of an app directly"
msgstr "直接切換程式的視窗"
#: ../src/50-mutter-navigation.xml.in.h:16
msgid "Switch system controls directly"
msgstr "直接切換系統控制"
#: ../src/50-mutter-navigation.xml.in.h:17
msgid "Hide all normal windows"
msgstr "隱藏所有一般視窗"
#: ../src/50-mutter-navigation.xml.in.h:18
msgid "Switch to workspace 1"
msgstr "切換至第 1 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:19
msgid "Switch to workspace 2"
msgstr "切換至第 2 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:20
msgid "Switch to workspace 3"
msgstr "切換至第 3 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:21
msgid "Switch to workspace 4"
msgstr "切換至第 4 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:22
msgid "Move to workspace left"
msgstr "移至左方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:23
msgid "Move to workspace right"
msgstr "移至右方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:24
msgid "Move to workspace above"
msgstr "移至上方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:25
msgid "Move to workspace below"
msgstr "移至下方的工作區"
#: ../src/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "系統"
#: ../src/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "顯示執行指令提示"
#: ../src/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "顯示活動概覽"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "視窗"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "使用視窗選單"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "切換全螢幕模式"
#: ../src/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "切換最大化狀態"
#: ../src/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "視窗最大化"
#: ../src/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "還原視窗"
#: ../src/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "切換視窗捲起/放下狀態"
#: ../src/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "關閉視窗"
#: ../src/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "隱藏視窗"
#: ../src/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "移動視窗"
#: ../src/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "調整視窗大小"
#: ../src/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr "切換視窗顯示在所有工作區或是只顯示於其中之一"
#: ../src/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "若被其他視窗遮蔽就抬升它,否則將它降下"
#: ../src/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "令某個視窗覆蓋其它視窗"
#: ../src/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "遮蔽某個視窗"
#: ../src/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "將視窗縱向最大化"
#: ../src/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "將視窗橫向最大化"
#: ../src/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "檢視分割於左側"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "檢視分割於右側"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#. 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:492
#: ../src/compositor/compositor.c:502
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr "在畫面「%2$s」中的第 %1$i 個螢幕中已啟動另一個組合視窗管理員。"
#: ../src/compositor/meta-background.c:1180
msgid "background texture could not be created from file"
msgstr "背景材質無法從檔案建立"
#: ../src/core/bell.c:320
msgid "Bell event"
msgstr "響鈴事件"
@ -50,46 +231,51 @@ msgstr "響鈴事件"
msgid "Unknown window information request: %d"
msgstr "未知的視窗資訊要求:%d"
#: ../src/core/delete.c:114
#: ../src/core/delete.c:111
#, c-format
msgid "%s is not responding."
msgstr "%s 沒有回應。"
msgid "%s is not responding."
msgstr "%s沒有回應。"
#: ../src/core/delete.c:118
#: ../src/core/delete.c:113
msgid "Application is not responding."
msgstr "應用程式沒有回應。"
#: ../src/core/delete.c:123
#: ../src/core/delete.c:118
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:130
#: ../src/core/delete.c:125
msgid "_Wait"
msgstr "等待(_W)"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:125
msgid "_Force Quit"
msgstr "強制結束(_F)"
#: ../src/core/display.c:380
#: ../src/core/display.c:402
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "遺失複合視窗管理所需的 %s 延伸功能"
#: ../src/core/display.c:446
#: ../src/core/display.c:494
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "無法開啟 X Window 畫面‘%s\n"
#: ../src/core/keybindings.c:844
#: ../src/core/keybindings.c:929
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
"binding\n"
msgstr "其它程式已經使用了按鍵 %s 加上特殊按鍵 %x 作為按鍵組合\n"
#: ../src/core/keybindings.c:1129
#, c-format
msgid "\"%s\" is not a valid accelerator\n"
msgstr "「%s」不是有效的捷徑鍵\n"
#: ../src/core/main.c:196
msgid "Disable connection to session manager"
msgstr "停用到作業階段管理程式的連線"
@ -114,12 +300,12 @@ msgstr "以 savefile 初始化作業階段"
msgid "Make X calls synchronous"
msgstr "使用同步方式調用 X 函數"
#: ../src/core/main.c:494
#: ../src/core/main.c:533
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "找不到佈景主題目錄:%s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:549
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@ -147,25 +333,25 @@ msgstr "顯示版本"
msgid "Mutter plugin to use"
msgstr "要使用的 Mutter 外掛程式"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1087
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
msgstr "關閉了對不合規格的程式的支援。某些程式可能無法正常運作。\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1162
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "無法從 GSettings 設定鍵 %2$s 分析字型描述文字「%1$s」\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1228
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
"modifier\n"
msgstr "組態資料庫中的“%s”設定值不是有效的滑鼠按鈕修改功能鍵\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1780
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@ -173,17 +359,17 @@ msgid ""
msgstr "組態資料庫中的“%s”不是按鍵組合“%s”的有效設定值\n"
# (Abel) take care of the same string in libwnck
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1879
#, c-format
msgid "Workspace %d"
msgstr "工作區 %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:674
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "畫面‘%2$s中的第 %1$d 個螢幕無效\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:690
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@ -191,18 +377,18 @@ msgid ""
msgstr "畫面‘%2$s中的第 %1$d 個螢幕已經有了視窗管理員;請嘗試使用 --replace 選項來替換目前的視窗管理員。\n"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#: ../src/core/screen.c:695
#: ../src/core/screen.c:717
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "無法在畫面“%2$s”中的第 %1$d 個螢幕進行視窗管理員選擇程序\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:795
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "畫面“%2$s”中的第 %1$d 個螢幕已經有了視窗總管\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:980
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "無法釋放畫面“%2$s”中的第 %1$d 個螢幕\n"
@ -297,7 +483,7 @@ msgid "Window manager error: "
msgstr "視窗總管錯誤:"
#. first time through
#: ../src/core/window.c:7234
#: ../src/core/window.c:7538
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@ -311,29 +497,29 @@ msgstr "視窗 %s 將 SM_CLIENT_ID 設定為該視窗本身,而不是 ICCCM
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7899
#: ../src/core/window.c:8262
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
msgstr "視窗 %s 設定了 MWM 提示,表示它不可以調整大小,但又將大小下限定為 %d×%d 及將大小上限定為 %d×%d這種做法不符合常理。\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:318
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "程式設定了多餘的 _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:434
#, c-format
msgid "%s (on %s)"
msgstr "%s在 %s"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1517
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "%2$s 指定了無效的 WM_TRANSIENT_FOR 視窗 0x%1$lx。\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1528
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "%2$s 的 WM_TRANSIENT_FOR 視窗 0x%1$lx 會造成迴圈。\n"
@ -434,20 +620,41 @@ msgid ""
msgstr "決定當視窗輪換時是否使用彈出式和強調框架。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving"
msgstr "延遲焦點的改變直到指標停止移動"
#: ../src/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 "如果設為 true焦點模式為「sloppy」或「mouse」則焦點不會在進入視窗時立即改變而是在指標停止移動之後才改變。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "可拖曳邊框闊度"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/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 "所有可拖曳邊框的總數。如果布景的可視邊框不夠,會加入隱形邊框來符合這個數值。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows"
msgstr "自動最大化接近螢幕大小的視窗"
#: ../src/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 "如果啟用,初始大小為螢幕大小的新視窗會自動最大化。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
msgid "Select window from tab popup"
msgstr "從分頁彈出項選擇視窗"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
msgid "Cancel tab popup"
msgstr "取消分頁彈出項"
@ -666,266 +873,266 @@ msgstr "Mod5"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#.
#: ../src/ui/resizepopup.c:113
#: ../src/ui/resizepopup.c:136
#, c-format
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:235
msgid "top"
msgstr "頂"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:237
msgid "bottom"
msgstr "底"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:239
msgid "left"
msgstr "左"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:241
msgid "right"
msgstr "右"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:269
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "邊框的位置大小中沒有指定“%s”部分的大小"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:288
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "邊框的位置大小中沒有指定“%2$s”邊框中的“%1$s”部分"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:325
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "按鈕的長寬比 %g 不合理"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:337
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "邊框的位置大小規格內未有指定按鈕的大小"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1050
#, c-format
msgid "Gradients should have at least two colors"
msgstr "漸變色至少應該有兩種顏色"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1202
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
"parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
msgstr "GTK 自選顏色規格規定必須有顏色名稱並加上封閉括號,例如 gtk:custom(foo,bar);無法分析「%s」"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1218
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
"_ are valid"
msgstr "gtk:custom 的 color_name 參數 '%c' 中有無效字符,只能使用 A-Za-z0-9-_ "
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1232
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
"fit the format"
msgstr "Gtk:custom 的格式是「gtk:custom(color_name,fallback)」,但「%s」不符合格式"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1277
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
"where NORMAL is the state; could not parse \"%s\""
msgstr "GTK 色彩規格規定必須在狀態外加上方括號,例如 gtk:fg[NORMAL],這裏 NORMAL 表示狀態;無法分析“%s”"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1291
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
"fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
msgstr "GTK 色彩規格規定必須在狀態後加上閉方括號,例如 gtk:fg[NORMAL],這裏 NORMAL 表示狀態;無法分析“%s”"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1302
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "無法將“%s”理解為色彩規格中的狀態"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1315
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "無法將“%s”理解為色彩規格中的色彩部分"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1344
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
"format"
msgstr "指定混色的格式是“blend/背景顏色/前景顏色/透明度”,“%s”不符合規格"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1355
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "無法理解“%s”作為混色的透明度數值"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1365
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "混色的透明度數值“%s”不是在 0.0 至 1.0 之間"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1412
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "陰影的格式是“shade/基本顏色/比重”,但“%s”不符合格式"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1423
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "在陰影顏色中無法將“%s”理解為陰影比重"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1433
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "在陰影顏色中陰影比重“%s”是負數"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1462
#, c-format
msgid "Could not parse color \"%s\""
msgstr "無法分析顏色“%s”"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1779
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "座標表達式中出現不可接受的字符‘%s"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1806
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "座標表達式中出現無法分析的浮點小數‘%s"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1820
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "座標表達式中出現無法分析的整數‘%s"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1941
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
"\"%s\""
msgstr "在座標表達式中,以下文字的開始部分含有不明的運算符:“%s”"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:1998
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "座標表達式是空白的或是無法分析"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "座標表達式中出現被 0 整除的錯誤"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2163
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "座標表達式中出現將浮點數使用於餘數運算符 (mod) 的錯誤"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2219
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "在座標表達式中,應該有運算子的地方出現了運算符“%s”"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2228
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "在座標表達式中,應該有運算符的地方出現了運算子"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2236
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "結束座標表達式的是一個運算符而非運算子"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2246
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
"operand in between"
msgstr "在座標表達式中,運算符“%c”緊隨運算符“%c”出現但中間沒有任何運算子"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "座標表達式中出現不明的變數或常數“%s”"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2496
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "座標表達式分析器令緩衝溢位。"
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2525
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "座標表達式中的閉括號沒有相應的開括號"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2589
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "座標表達式中的開括號沒有相應的閉括號"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2600
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "座標表達式中似乎沒有任何運算符或運算子"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "佈景主題中含有引致錯誤的表達式:%s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4499
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
"specified for this frame style"
msgstr "此邊框款式必須指定 <button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/>"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "缺少了 <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5083
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "無法載入佈景主題“%s”%s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "佈景主題“%s”未指定 <%s>"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5255
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
"type=\"%s\" style_set=\"whatever\"/> element"
msgstr "在佈景主題“%2$s”中視窗類型“%1$s”沒有指定任何邊框款式。請加上 <window type=\"%3$s\" style_set=\"whatever\"/> 元素"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr "自行定義的常數必須以大寫字母開始;但“%s”不是"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "已定義了“%s”常數"
@ -1393,56 +1600,56 @@ msgstr "邊框"
msgid "Attached Modal Dialog"
msgstr "附加的模態對話盒"
#: ../src/ui/theme-viewer.c:739
#: ../src/ui/theme-viewer.c:737
#, c-format
msgid "Button layout test %d"
msgstr "按鈕配置測試 %d"
#: ../src/ui/theme-viewer.c:768
#: ../src/ui/theme-viewer.c:766
#, c-format
msgid "%g milliseconds to draw one window frame"
msgstr "繪畫一個視窗需時 %g 毫秒"
#: ../src/ui/theme-viewer.c:813
#: ../src/ui/theme-viewer.c:811
#, c-format
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
msgstr "用法: metacity-theme-viewer [佈景主題名稱]\n"
#: ../src/ui/theme-viewer.c:820
#: ../src/ui/theme-viewer.c:818
#, c-format
msgid "Error loading theme: %s\n"
msgstr "載入佈景主題失敗 %s\n"
#: ../src/ui/theme-viewer.c:826
#: ../src/ui/theme-viewer.c:824
#, c-format
msgid "Loaded theme \"%s\" in %g seconds\n"
msgstr "載入佈景主題 “%s” 需時 %g 秒\n"
#: ../src/ui/theme-viewer.c:870
#: ../src/ui/theme-viewer.c:869
msgid "Normal Title Font"
msgstr "正常標題列字型"
#: ../src/ui/theme-viewer.c:876
#: ../src/ui/theme-viewer.c:875
msgid "Small Title Font"
msgstr "小標題列字型"
#: ../src/ui/theme-viewer.c:882
#: ../src/ui/theme-viewer.c:881
msgid "Large Title Font"
msgstr "大標題列字型"
#: ../src/ui/theme-viewer.c:887
#: ../src/ui/theme-viewer.c:886
msgid "Button Layouts"
msgstr "按鈕配置"
#: ../src/ui/theme-viewer.c:892
#: ../src/ui/theme-viewer.c:891
msgid "Benchmark"
msgstr "速度測試"
#: ../src/ui/theme-viewer.c:944
#: ../src/ui/theme-viewer.c:947
msgid "Window Title Goes Here"
msgstr "這裏是視窗標題"
#: ../src/ui/theme-viewer.c:1047
#: ../src/ui/theme-viewer.c:1053
#, c-format
msgid ""
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
@ -1453,43 +1660,46 @@ msgstr ""
"在客戶端是 %g 秒(每幀 %g 毫秒)\n"
"包括 X 伺服器資源的實際消耗時間是 %g 秒(每幀 %g 毫秒)\n"
#: ../src/ui/theme-viewer.c:1266
#: ../src/ui/theme-viewer.c:1273
msgid "position expression test returned TRUE but set error"
msgstr "位置表現測試返回值是「正確」,但有 set error"
#: ../src/ui/theme-viewer.c:1268
#: ../src/ui/theme-viewer.c:1275
msgid "position expression test returned FALSE but didn't set error"
msgstr "位置表現測試返回值是「錯誤」,但沒有 set error"
#: ../src/ui/theme-viewer.c:1272
#: ../src/ui/theme-viewer.c:1279
msgid "Error was expected but none given"
msgstr "預期會發生錯誤,但結果並沒錯誤發生"
#: ../src/ui/theme-viewer.c:1274
#: ../src/ui/theme-viewer.c:1281
#, c-format
msgid "Error %d was expected but %d given"
msgstr "預期會發生錯誤 %d ,但結果卻出現 %d"
#: ../src/ui/theme-viewer.c:1280
#: ../src/ui/theme-viewer.c:1287
#, c-format
msgid "Error not expected but one was returned: %s"
msgstr "預期不會發生錯誤,但結果返回了一個:%s"
#: ../src/ui/theme-viewer.c:1284
#: ../src/ui/theme-viewer.c:1291
#, c-format
msgid "x value was %d, %d was expected"
msgstr "x 的數值是 %d%d是預期中的數值"
#: ../src/ui/theme-viewer.c:1287
#: ../src/ui/theme-viewer.c:1294
#, c-format
msgid "y value was %d, %d was expected"
msgstr "y 的數值是 %d%d是預期中的數值"
#: ../src/ui/theme-viewer.c:1352
#: ../src/ui/theme-viewer.c:1359
#, c-format
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "分析 %d 座標表現需時 %g 秒(平均 %g 秒)\n"
#~ msgid "Minimize window"
#~ msgstr "視窗最小化"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "以逗號分隔的複合視窗外掛程式清單"

View File

@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity 3.3.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-17 15:17+0800\n"
"PO-Revision-Date: 2012-07-16 11:21+0800\n"
"POT-Creation-Date: 2013-03-06 19:12+0800\n"
"PO-Revision-Date: 2013-03-05 19:37+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
"Language: \n"
@ -18,29 +18,210 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.5.3\n"
#: ../src/50-mutter-navigation.xml.in.h:1
msgid "Navigation"
msgstr "導航"
#: ../src/50-mutter-navigation.xml.in.h:2
msgid "Move window to workspace 1"
msgstr "將視窗移至第 1 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2"
msgstr "將視窗移至第 2 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "將視窗移至第 3 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "將視窗移至第 4 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:6
msgid "Move window one workspace to the left"
msgstr "將視窗移至左方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the right"
msgstr "將視窗移至右方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace up"
msgstr "將視窗移至上方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace down"
msgstr "將視窗移至下方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:10
msgid "Switch applications"
msgstr "切換程式"
#: ../src/50-mutter-navigation.xml.in.h:11
msgid "Switch windows"
msgstr "切換視窗"
#: ../src/50-mutter-navigation.xml.in.h:12
msgid "Switch windows of an application"
msgstr "切換程式的視窗"
#: ../src/50-mutter-navigation.xml.in.h:13
msgid "Switch system controls"
msgstr "切換系統控制"
#: ../src/50-mutter-navigation.xml.in.h:14
msgid "Switch windows directly"
msgstr "直接切換視窗"
#: ../src/50-mutter-navigation.xml.in.h:15
msgid "Switch windows of an app directly"
msgstr "直接切換程式的視窗"
#: ../src/50-mutter-navigation.xml.in.h:16
msgid "Switch system controls directly"
msgstr "直接切換系統控制"
#: ../src/50-mutter-navigation.xml.in.h:17
msgid "Hide all normal windows"
msgstr "隱藏所有一般視窗"
#: ../src/50-mutter-navigation.xml.in.h:18
msgid "Switch to workspace 1"
msgstr "切換至第 1 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:19
msgid "Switch to workspace 2"
msgstr "切換至第 2 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:20
msgid "Switch to workspace 3"
msgstr "切換至第 3 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:21
msgid "Switch to workspace 4"
msgstr "切換至第 4 個工作區"
#: ../src/50-mutter-navigation.xml.in.h:22
msgid "Move to workspace left"
msgstr "移至左方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:23
msgid "Move to workspace right"
msgstr "移至右方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:24
msgid "Move to workspace above"
msgstr "移至上方的工作區"
#: ../src/50-mutter-navigation.xml.in.h:25
msgid "Move to workspace below"
msgstr "移至下方的工作區"
#: ../src/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "系統"
#: ../src/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "顯示執行指令提示"
#: ../src/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "顯示活動概覽"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "視窗"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "使用視窗選單"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "切換全螢幕模式"
#: ../src/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "切換最大化狀態"
#: ../src/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "視窗最大化"
#: ../src/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "還原視窗"
#: ../src/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "切換視窗捲起/放下狀態"
#: ../src/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "關閉視窗"
#: ../src/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "隱藏視窗"
#: ../src/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "移動視窗"
#: ../src/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "調整視窗大小"
#: ../src/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr "切換視窗顯示在所有工作區或是只顯示於其中之一"
#: ../src/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "若被其他視窗遮蔽就抬升它,否則將它降下"
#: ../src/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "令某個視窗覆蓋其它視窗"
#: ../src/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "遮蔽某個視窗"
#: ../src/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "將視窗縱向最大化"
#: ../src/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "將視窗橫向最大化"
#: ../src/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "檢視分割於左側"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "檢視分割於右側"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#. 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:492
#: ../src/compositor/compositor.c:502
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr "在畫面「%2$s」中的第 %1$i 個螢幕中已啟動另一個組合視窗管理員。"
#: ../src/compositor/meta-background.c:1180
msgid "background texture could not be created from file"
msgstr "背景材質無法從檔案建立"
#: ../src/core/bell.c:320
msgid "Bell event"
msgstr "響鈴事件"
@ -50,46 +231,51 @@ msgstr "響鈴事件"
msgid "Unknown window information request: %d"
msgstr "未知的視窗資訊要求:%d"
#: ../src/core/delete.c:114
#: ../src/core/delete.c:111
#, c-format
msgid "%s is not responding."
msgstr "%s 沒有回應。"
msgid "%s is not responding."
msgstr "%s沒有回應。"
#: ../src/core/delete.c:118
#: ../src/core/delete.c:113
msgid "Application is not responding."
msgstr "應用程式沒有回應。"
#: ../src/core/delete.c:123
#: ../src/core/delete.c:118
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:130
#: ../src/core/delete.c:125
msgid "_Wait"
msgstr "等待(_W)"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:125
msgid "_Force Quit"
msgstr "強制結束(_F)"
#: ../src/core/display.c:380
#: ../src/core/display.c:402
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "遺失複合視窗管理所需的 %s 延伸功能"
#: ../src/core/display.c:446
#: ../src/core/display.c:494
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "無法開啟 X Window 畫面‘%s\n"
#: ../src/core/keybindings.c:844
#: ../src/core/keybindings.c:929
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
"binding\n"
msgstr "其它程式已經使用了按鍵 %s 加上特殊按鍵 %x 作為按鍵組合\n"
#: ../src/core/keybindings.c:1129
#, c-format
msgid "\"%s\" is not a valid accelerator\n"
msgstr "「%s」不是有效的捷徑鍵\n"
#: ../src/core/main.c:196
msgid "Disable connection to session manager"
msgstr "停用到作業階段管理程式的連線"
@ -114,12 +300,12 @@ msgstr "以 savefile 初始化作業階段"
msgid "Make X calls synchronous"
msgstr "使用同步方式調用 X 函式"
#: ../src/core/main.c:494
#: ../src/core/main.c:533
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "找不到佈景主題目錄:%s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:549
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@ -147,25 +333,25 @@ msgstr "顯示版本"
msgid "Mutter plugin to use"
msgstr "要使用的 Mutter 外掛程式"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1087
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
msgstr "關閉了對不合規格的程式的支援。某些程式可能無法正常運作。\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1162
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "無法從 GSettings 設定鍵 %2$s 分析字型描述文字「%1$s」\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1228
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
"modifier\n"
msgstr "組態資料庫中的“%s”設定值不是有效的滑鼠按鈕修改功能鍵\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1780
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@ -173,17 +359,17 @@ msgid ""
msgstr "組態資料庫中的“%s”不是按鍵組合“%s”的有效設定值\n"
# (Abel) take care of the same string in libwnck
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1879
#, c-format
msgid "Workspace %d"
msgstr "工作區 %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:674
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "畫面‘%2$s中的第 %1$d 個螢幕無效\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:690
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@ -193,18 +379,18 @@ msgstr ""
"換目前的視窗管理員。\n"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#: ../src/core/screen.c:695
#: ../src/core/screen.c:717
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "無法在畫面“%2$s”中的第 %1$d 個螢幕進行視窗管理員選擇程序\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:795
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "畫面“%2$s”中的第 %1$d 個螢幕已經有了視窗總管\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:980
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "無法釋放畫面“%2$s”中的第 %1$d 個螢幕\n"
@ -299,7 +485,7 @@ msgid "Window manager error: "
msgstr "視窗總管錯誤:"
#. first time through
#: ../src/core/window.c:7234
#: ../src/core/window.c:7538
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@ -315,7 +501,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7899
#: ../src/core/window.c:8262
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@ -324,22 +510,22 @@ msgstr ""
"視窗 %s 設定了 MWM 提示,表示它不可以調整大小,但又將大小下限定為 %d×%d 及將"
"大小上限定為 %d×%d這種做法不符合常理。\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:318
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "程式設定了多餘的 _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:434
#, c-format
msgid "%s (on %s)"
msgstr "%s在 %s"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1517
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "%2$s 指定了無效的 WM_TRANSIENT_FOR 視窗 0x%1$lx。\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1528
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "%2$s 的 WM_TRANSIENT_FOR 視窗 0x%1$lx 會造成迴圈。\n"
@ -449,21 +635,44 @@ msgid ""
msgstr "決定當視窗輪換時是否使用彈出式和強調框架。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving"
msgstr "延遲焦點的改變直到指標停止移動"
#: ../src/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 ""
"如果設為 true焦點模式為「sloppy」或「mouse」則焦點不會在進入視窗時立即改"
"變,而是在指標停止移動之後才改變。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "可拖曳邊框寬度"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/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 ""
"所有可拖曳邊框的總數。如果布景的可視邊框不夠,會加入隱形邊框來符合這個數值。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows"
msgstr "自動最大化接近螢幕大小的視窗"
#: ../src/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 "如果啟用,初始大小為螢幕大小的新視窗會自動最大化。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:19
msgid "Select window from tab popup"
msgstr "從分頁彈出項選擇視窗"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:20
msgid "Cancel tab popup"
msgstr "取消分頁彈出項"
@ -682,53 +891,53 @@ msgstr "Mod5"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#.
#: ../src/ui/resizepopup.c:113
#: ../src/ui/resizepopup.c:136
#, c-format
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:235
msgid "top"
msgstr "頂"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:237
msgid "bottom"
msgstr "底"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:239
msgid "left"
msgstr "左"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:241
msgid "right"
msgstr "右"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:269
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "邊框的位置大小中沒有指定“%s”部分的大小"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:288
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "邊框的位置大小中沒有指定“%2$s”邊框中的“%1$s”部分"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:325
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "按鈕的長寬比 %g 不合理"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:337
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "邊框的位置大小規格內未有指定按鈕的大小"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1050
#, c-format
msgid "Gradients should have at least two colors"
msgstr "漸層至少應該有兩種顏色"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1202
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@ -737,14 +946,14 @@ msgstr ""
"GTK 自訂顏色規格規定必須有顏色名稱並加上封閉括號,例如 gtk:custom(foo,bar)"
"無法分析「%s」"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1218
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
"_ are valid"
msgstr "gtk:custom 的 color_name 參數 '%c' 中有無效字元,只能使用 A-Za-z0-9-_ "
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1232
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@ -752,7 +961,7 @@ msgid ""
msgstr ""
"Gtk:custom 的格式是「gtk:custom(color_name,fallback)」,但「%s」不符合格式"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1277
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@ -761,7 +970,7 @@ msgstr ""
"GTK 色彩規格規定必須在狀態外加上方括號,例如 gtk:fg[NORMAL],這裡 NORMAL 表示"
"狀態;無法分析“%s”"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1291
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@ -770,148 +979,148 @@ msgstr ""
"GTK 色彩規格規定必須在狀態後加上閉方括號,例如 gtk:fg[NORMAL],這裡 NORMAL 表"
"示狀態;無法分析“%s”"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1302
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "無法將“%s”理解為色彩規格中的狀態"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1315
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "無法將“%s”理解為色彩規格中的色彩部分"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1344
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
"format"
msgstr "指定混色的格式是“blend/背景顏色/前景顏色/透明度”,“%s”不符合規格"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1355
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "無法理解“%s”作為混色的透明度數值"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1365
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "混色的透明度數值“%s”不是在 0.0 至 1.0 之間"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1412
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "陰影的格式是“shade/基本顏色/比重”,但“%s”不符合格式"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1423
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "在陰影顏色中無法將“%s”理解為陰影比重"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1433
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "在陰影顏色中陰影比重“%s”是負數"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1462
#, c-format
msgid "Could not parse color \"%s\""
msgstr "無法分析顏色“%s”"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1779
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "座標表達式中出現不可接受的字元‘%s"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1806
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "座標表達式中出現無法分析的浮點小數‘%s"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1820
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "座標表達式中出現無法分析的整數‘%s"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1941
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
"\"%s\""
msgstr "在座標表達式中,以下文字的開始部分含有不明的運算符:“%s”"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:1998
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "座標表達式是空白的或是無法分析"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2111 ../src/ui/theme.c:2121 ../src/ui/theme.c:2155
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "座標表達式中出現被 0 整除的錯誤"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2163
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "座標表達式中出現將浮點數使用於餘數運算符 (mod) 的錯誤"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2219
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "在座標表達式中,應該有運算子的地方出現了運算符“%s”"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2228
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "在座標表達式中,應該有運算符的地方出現了運算子"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2236
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "結束座標表達式的是一個運算符而非運算子"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2246
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
"operand in between"
msgstr "在座標表達式中,運算符“%c”緊隨運算符“%c”出現但中間沒有任何運算子"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2397 ../src/ui/theme.c:2442
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "座標表達式中出現不明的變數或常數“%s”"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2496
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "座標表達式分析器令緩衝溢位。"
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2525
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "座標表達式中的閉括號沒有相應的開括號"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2589
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "座標表達式中的開括號沒有相應的閉括號"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2600
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "座標表達式中似乎沒有任何運算符或運算子"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2813 ../src/ui/theme.c:2833 ../src/ui/theme.c:2853
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "佈景主題中含有引致錯誤的表達式:%s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4499
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@ -920,25 +1129,25 @@ msgstr ""
"此邊框款式必須指定 <button function=\"%s\" state=\"%s\" draw_ops=\"whatever"
"\"/>"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5010 ../src/ui/theme.c:5035
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"缺少了 <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5083
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "無法載入佈景主題“%s”%s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5219 ../src/ui/theme.c:5226 ../src/ui/theme.c:5233
#: ../src/ui/theme.c:5240 ../src/ui/theme.c:5247
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "佈景主題“%s”未指定 <%s>"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5255
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@ -947,13 +1156,13 @@ msgstr ""
"在佈景主題“%2$s”中視窗類型“%1$s”沒有指定任何邊框款式。請加上 <window type="
"\"%3$s\" style_set=\"whatever\"/> 元素"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5662 ../src/ui/theme.c:5724 ../src/ui/theme.c:5787
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr "自行定義的常數必須以大寫字母開始;但“%s”不是"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5670 ../src/ui/theme.c:5732 ../src/ui/theme.c:5795
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "已定義了“%s”常數"
@ -1429,56 +1638,56 @@ msgstr "邊框"
msgid "Attached Modal Dialog"
msgstr "附加的模態對話盒"
#: ../src/ui/theme-viewer.c:739
#: ../src/ui/theme-viewer.c:737
#, c-format
msgid "Button layout test %d"
msgstr "按鈕配置測試 %d"
#: ../src/ui/theme-viewer.c:768
#: ../src/ui/theme-viewer.c:766
#, c-format
msgid "%g milliseconds to draw one window frame"
msgstr "繪畫一個視窗需時 %g 毫秒"
#: ../src/ui/theme-viewer.c:813
#: ../src/ui/theme-viewer.c:811
#, c-format
msgid "Usage: metacity-theme-viewer [THEMENAME]\n"
msgstr "用法: metacity-theme-viewer [佈景主題名稱]\n"
#: ../src/ui/theme-viewer.c:820
#: ../src/ui/theme-viewer.c:818
#, c-format
msgid "Error loading theme: %s\n"
msgstr "載入佈景主題失敗 %s\n"
#: ../src/ui/theme-viewer.c:826
#: ../src/ui/theme-viewer.c:824
#, c-format
msgid "Loaded theme \"%s\" in %g seconds\n"
msgstr "載入佈景主題 “%s” 需時 %g 秒\n"
#: ../src/ui/theme-viewer.c:870
#: ../src/ui/theme-viewer.c:869
msgid "Normal Title Font"
msgstr "正常標題列字型"
#: ../src/ui/theme-viewer.c:876
#: ../src/ui/theme-viewer.c:875
msgid "Small Title Font"
msgstr "小標題列字型"
#: ../src/ui/theme-viewer.c:882
#: ../src/ui/theme-viewer.c:881
msgid "Large Title Font"
msgstr "大標題列字型"
#: ../src/ui/theme-viewer.c:887
#: ../src/ui/theme-viewer.c:886
msgid "Button Layouts"
msgstr "按鈕配置"
#: ../src/ui/theme-viewer.c:892
#: ../src/ui/theme-viewer.c:891
msgid "Benchmark"
msgstr "速度測試"
#: ../src/ui/theme-viewer.c:944
#: ../src/ui/theme-viewer.c:947
msgid "Window Title Goes Here"
msgstr "這裡是視窗標題"
#: ../src/ui/theme-viewer.c:1047
#: ../src/ui/theme-viewer.c:1053
#, c-format
msgid ""
"Drew %d frames in %g client-side seconds (%g milliseconds per frame) and %g "
@ -1489,43 +1698,46 @@ msgstr ""
"在客戶端是 %g 秒(每幀 %g 毫秒)\n"
"包括 X 伺服器資源的實際消耗時間是 %g 秒(每幀 %g 毫秒)\n"
#: ../src/ui/theme-viewer.c:1266
#: ../src/ui/theme-viewer.c:1273
msgid "position expression test returned TRUE but set error"
msgstr "位置表現測試返回值是「正確」,但有 set error"
#: ../src/ui/theme-viewer.c:1268
#: ../src/ui/theme-viewer.c:1275
msgid "position expression test returned FALSE but didn't set error"
msgstr "位置表現測試返回值是「錯誤」,但沒有 set error"
#: ../src/ui/theme-viewer.c:1272
#: ../src/ui/theme-viewer.c:1279
msgid "Error was expected but none given"
msgstr "預期會發生錯誤,但結果並沒錯誤發生"
#: ../src/ui/theme-viewer.c:1274
#: ../src/ui/theme-viewer.c:1281
#, c-format
msgid "Error %d was expected but %d given"
msgstr "預期會發生錯誤 %d ,但結果卻出現 %d"
#: ../src/ui/theme-viewer.c:1280
#: ../src/ui/theme-viewer.c:1287
#, c-format
msgid "Error not expected but one was returned: %s"
msgstr "預期不會發生錯誤,但結果返回了一個:%s"
#: ../src/ui/theme-viewer.c:1284
#: ../src/ui/theme-viewer.c:1291
#, c-format
msgid "x value was %d, %d was expected"
msgstr "x 的數值是 %d%d是預期中的數值"
#: ../src/ui/theme-viewer.c:1287
#: ../src/ui/theme-viewer.c:1294
#, c-format
msgid "y value was %d, %d was expected"
msgstr "y 的數值是 %d%d是預期中的數值"
#: ../src/ui/theme-viewer.c:1352
#: ../src/ui/theme-viewer.c:1359
#, c-format
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "分析 %d 座標表現需時 %g 秒(平均 %g 秒)\n"
#~ msgid "Minimize window"
#~ msgstr "視窗最小化"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "以逗號分隔的複合視窗外掛程式清單"

View File

@ -0,0 +1,80 @@
<?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-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="switch-applications"
_description="Switch applications"/>
<KeyListEntry name="switch-windows"
_description="Switch windows"/>
<KeyListEntry name="switch-group"
_description="Switch windows of an application"/>
<KeyListEntry name="switch-panels"
_description="Switch system controls"/>
<KeyListEntry name="cycle-windows"
_description="Switch windows directly"/>
<KeyListEntry name="cycle-group"
_description="Switch windows of an app directly"/>
<KeyListEntry name="cycle-panels"
_description="Switch system controls directly"/>
<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-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>

View File

@ -0,0 +1,13 @@
<?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>

View File

@ -1,14 +1,49 @@
<?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.mutter.keybindings"
<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>

View File

@ -6,6 +6,9 @@ lib_LTLIBRARIES = libmutter.la
SUBDIRS=wm-tester tools compositor/plugins
INCLUDES= \
-DCLUTTER_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_API \
-DCOGL_ENABLE_EXPERIMENTAL_2_0_API \
$(MUTTER_CFLAGS) \
-I$(srcdir) \
-I$(srcdir)/core \
@ -33,17 +36,24 @@ mutter_built_sources = \
libmutter_la_SOURCES = \
core/async-getprop.c \
core/async-getprop.h \
core/barrier.c \
meta/barrier.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-actor.c \
compositor/meta-background-actor-private.h \
compositor/meta-background-group.c \
compositor/meta-background-group-private.h \
compositor/meta-module.c \
compositor/meta-module.h \
compositor/meta-plugin.c \
@ -65,7 +75,9 @@ libmutter_la_SOURCES = \
compositor/region-utils.c \
compositor/region-utils.h \
meta/compositor.h \
meta/meta-background.h \
meta/meta-background-actor.h \
meta/meta-background-group.h \
meta/meta-plugin.h \
meta/meta-shadow-factory.h \
meta/meta-window-actor.h \
@ -84,8 +96,6 @@ libmutter_la_SOURCES = \
core/edge-resistance.h \
core/errors.c \
meta/errors.h \
core/eventqueue.c \
core/eventqueue.h \
core/frame.c \
core/frame.h \
ui/gradient.c \
@ -157,6 +167,7 @@ libmutter_la_LIBADD = $(MUTTER_LIBS)
# Headers installed for plugins; introspected information will
# be extracted into Mutter-<version>.gir
libmutterinclude_base_headers = \
meta/barrier.h \
meta/boxes.h \
meta/common.h \
meta/compositor-mutter.h \
@ -168,6 +179,8 @@ libmutterinclude_base_headers = \
meta/keybindings.h \
meta/main.h \
meta/meta-background-actor.h \
meta/meta-background-group.h \
meta/meta-background.h \
meta/meta-plugin.h \
meta/meta-shaped-texture.h \
meta/meta-shadow-factory.h \
@ -221,7 +234,7 @@ 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
@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@_EXPORT_PACKAGES = libmutter
@META_GIR@_CFLAGS = $(INCLUDES)
@META_GIR@_LIBS = libmutter.la
@ -259,6 +272,8 @@ wmproperties_DATA = $(wmproperties_files)
xmldir = @GNOME_KEYBINDINGS_KEYSDIR@
xml_in_files = \
50-mutter-navigation.xml.in \
50-mutter-system.xml.in \
50-mutter-windows.xml.in
xml_DATA = $(xml_in_files:.xml.in=.xml)

View File

@ -0,0 +1,120 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Utilities for use with Cogl
*
* Copyright 2010 Red Hat, Inc.
* Copyright 2010 Intel Corporation
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
#include "clutter-utils.h"
#include <math.h>
/* This file uses pixel-aligned region computation to determine what
* can be clipped out. This only really works if everything is aligned
* to the pixel grid - not scaled or rotated and at integer offsets.
*
* (This could be relaxed - if we turned off filtering for unscaled
* windows then windows would be, by definition aligned to the pixel
* grid. And for rectangular windows without a shape, the outline that
* we draw for an unrotated window is always a rectangle because we
* don't use antialasing for the window boundary - with or without
* filtering, with or without a scale. But figuring out exactly
* what pixels will be drawn by the graphics system in these cases
* gets tricky, so we just go for the easiest part - no scale,
* and at integer offsets.)
*
* The way we check for pixel-aligned is by looking at the
* transformation into screen space of the allocation box of an actor
* and and checking if the corners are "close enough" to integral
* pixel values.
*/
/* The definition of "close enough" to integral pixel values is
* equality when we convert to 24.8 fixed-point.
*/
static inline int
round_to_fixed (float x)
{
return roundf (x * 256);
}
/* This helper function checks if (according to our fixed point precision)
* the vertices @verts form a box of width @widthf and height @heightf
* located at integral coordinates. These coordinates are returned
* in @x_origin and @y_origin.
*/
gboolean
meta_actor_vertices_are_untransformed (ClutterVertex *verts,
float widthf,
float heightf,
int *x_origin,
int *y_origin)
{
int width, height;
int v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y;
int x, y;
width = round_to_fixed (widthf); height = round_to_fixed (heightf);
v0x = round_to_fixed (verts[0].x); v0y = round_to_fixed (verts[0].y);
v1x = round_to_fixed (verts[1].x); v1y = round_to_fixed (verts[1].y);
v2x = round_to_fixed (verts[2].x); v2y = round_to_fixed (verts[2].y);
v3x = round_to_fixed (verts[3].x); v3y = round_to_fixed (verts[3].y);
/* Using shifting for converting fixed => int, gets things right for
* negative values. / 256. wouldn't do the same
*/
x = v0x >> 8;
y = v0y >> 8;
/* At integral coordinates? */
if (x * 256 != v0x || y * 256 != v0y)
return FALSE;
/* Not scaled? */
if (v1x - v0x != width || v2y - v0y != height)
return FALSE;
/* Not rotated/skewed? */
if (v0x != v2x || v0y != v1y ||
v3x != v1x || v3y != v2y)
return FALSE;
*x_origin = x;
*y_origin = y;
return TRUE;
}
/* Check if an actor is "untransformed" - which actually means transformed by
* at most a integer-translation. The integer translation, if any, is returned.
*/
gboolean
meta_actor_is_untransformed (ClutterActor *actor,
int *x_origin,
int *y_origin)
{
gfloat widthf, heightf;
ClutterVertex verts[4];
clutter_actor_get_size (actor, &widthf, &heightf);
clutter_actor_get_abs_allocation_vertices (actor, verts);
return meta_actor_vertices_are_untransformed (verts, widthf, heightf, x_origin, y_origin);
}

View File

@ -1,10 +1,9 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* Mutter X event source for main loop */
/*
* Copyright (C) 2001 Havoc Pennington
*
/*
* Utilities for use with Clutter
*
* Copyright 2010 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
@ -14,27 +13,24 @@
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
#ifndef META_EVENT_QUEUE_H
#define META_EVENT_QUEUE_H
#ifndef __META_CLUTTER_UTILS_H__
#define __META_CLUTTER_UTILS_H__
#include <glib.h>
#include <X11/Xlib.h>
#include <clutter/clutter.h>
gboolean meta_actor_vertices_are_untransformed (ClutterVertex *verts,
float widthf,
float heightf,
int *x_origin,
int *y_origin);
gboolean meta_actor_is_untransformed (ClutterActor *actor,
int *x_origin,
int *y_origin);
typedef struct _MetaEventQueue MetaEventQueue;
typedef void (* MetaEventQueueFunc) (XEvent *event,
gpointer data);
MetaEventQueue* meta_event_queue_new (Display *display,
MetaEventQueueFunc func,
gpointer data);
void meta_event_queue_free (MetaEventQueue *eq);
#endif
#endif /* __META_CLUTTER_UTILS_H__ */

View File

@ -21,14 +21,15 @@
* 02111-1307, USA.
*/
#include <clutter/clutter.h>
#include "cogl-utils.h"
/**
* meta_create_color_texture_4ub:
* @red:
* @green:
* @blue:
* @alpha:
* @red: red component
* @green: green component
* @blue: blue component
* @alpha: alpha component
* @flags: Optional flags for the texture, or %COGL_TEXTURE_NONE;
* %COGL_TEXTURE_NO_SLICING is useful if the texture will be
* repeated to create a constant color fill, since hardware
@ -39,7 +40,7 @@
*
* Return value: (transfer full): a newly created Cogl texture
*/
CoglHandle
CoglTexture *
meta_create_color_texture_4ub (guint8 red,
guint8 green,
guint8 blue,
@ -68,43 +69,45 @@ meta_create_color_texture_4ub (guint8 red,
/* Based on gnome-shell/src/st/st-private.c:_st_create_texture_material.c */
/**
* meta_create_texture_material:
* meta_create_texture_pipeline:
* @src_texture: (allow-none): texture to use initially for the layer
*
* Creates a material with a single layer. Using a common template
* Creates a pipeline with a single layer. Using a common template
* allows sharing a shader for different uses in Mutter. To share the same
* shader with all other materials that are just texture plus opacity
* shader with all other pipelines that are just texture plus opacity
* would require Cogl fixes.
* (See http://bugzilla.clutter-project.org/show_bug.cgi?id=2425)
*
* Return value: (transfer full): a newly created Cogl material
* Return value: (transfer full): a newly created #CoglPipeline
*/
CoglHandle
meta_create_texture_material (CoglHandle src_texture)
CoglPipeline *
meta_create_texture_pipeline (CoglTexture *src_texture)
{
static CoglHandle texture_material_template = COGL_INVALID_HANDLE;
CoglHandle material;
static CoglPipeline *texture_pipeline_template = NULL;
CoglPipeline *pipeline;
/* We use a material that has a dummy texture as a base for all
texture materials. The idea is that only the Cogl texture object
/* We use a pipeline that has a dummy texture as a base for all
texture pipelines. The idea is that only the Cogl texture object
would be different in the children so it is likely that Cogl will
be able to share GL programs between all the textures. */
if (G_UNLIKELY (texture_material_template == COGL_INVALID_HANDLE))
if (G_UNLIKELY (texture_pipeline_template == NULL))
{
CoglHandle dummy_texture;
CoglTexture *dummy_texture;
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
dummy_texture = meta_create_color_texture_4ub (0xff, 0xff, 0xff, 0xff,
COGL_TEXTURE_NONE);
texture_material_template = cogl_material_new ();
cogl_material_set_layer (texture_material_template, 0, dummy_texture);
cogl_handle_unref (dummy_texture);
texture_pipeline_template = cogl_pipeline_new (ctx);
cogl_pipeline_set_layer_texture (texture_pipeline_template, 0, dummy_texture);
cogl_object_unref (dummy_texture);
}
material = cogl_material_copy (texture_material_template);
pipeline = cogl_pipeline_copy (texture_pipeline_template);
if (src_texture != COGL_INVALID_HANDLE)
cogl_material_set_layer (material, 0, src_texture);
if (src_texture != NULL)
cogl_pipeline_set_layer_texture (pipeline, 0, src_texture);
return material;
return pipeline;
}

View File

@ -25,11 +25,11 @@
#include <cogl/cogl.h>
CoglHandle meta_create_color_texture_4ub (guint8 red,
guint8 green,
guint8 blue,
guint8 alpha,
CoglTextureFlags flags);
CoglHandle meta_create_texture_material (CoglHandle src_texture);
CoglTexture * meta_create_color_texture_4ub (guint8 red,
guint8 green,
guint8 blue,
guint8 alpha,
CoglTextureFlags flags);
CoglPipeline * meta_create_texture_pipeline (CoglTexture *texture);
#endif /* __META_COGL_UTILS_H__ */

View File

@ -18,7 +18,6 @@ struct _MetaCompositor
MetaDisplay *display;
Atom atom_x_root_pixmap;
Atom atom_x_set_root;
Atom atom_net_wm_window_opacity;
guint repaint_func_id;
@ -26,22 +25,28 @@ struct _MetaCompositor
MetaPlugin *modal_plugin;
gboolean show_redraw : 1;
gboolean debug : 1;
gboolean no_mipmaps : 1;
gint64 server_time_query_time;
gint64 server_time_offset;
guint server_time_is_monotonic_time : 1;
guint show_redraw : 1;
guint debug : 1;
guint no_mipmaps : 1;
};
struct _MetaCompScreen
{
MetaScreen *screen;
ClutterActor *stage, *window_group, *overlay_group;
ClutterActor *stage, *window_group, *top_window_group, *overlay_group;
ClutterActor *background_actor;
ClutterActor *hidden_group;
GList *windows;
GHashTable *windows_by_xid;
Window output;
CoglOnscreen *onscreen;
CoglFrameClosure *frame_closure;
/* Used for unredirecting fullscreen windows */
guint disable_unredirect_count;
MetaWindowActor *unredirected_window;
@ -54,6 +59,9 @@ struct _MetaCompScreen
MetaPluginManager *plugin_mgr;
};
/* Wait 2ms after vblank before starting to draw next frame */
#define META_SYNC_DELAY 2
void meta_switch_workspace_completed (MetaScreen *screen);
gboolean meta_begin_modal_for_plugin (MetaScreen *screen,
@ -66,6 +74,9 @@ void meta_end_modal_for_plugin (MetaScreen *screen,
MetaPlugin *plugin,
guint32 timestamp);
gint64 meta_compositor_monotonic_time_to_server_time (MetaDisplay *display,
gint64 monotonic_time);
void meta_check_end_modal (MetaScreen *screen);
#endif /* META_COMPOSITOR_PRIVATE_H */

View File

@ -1,9 +1,76 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/**
* SECTION:compositor
* @Title: MetaCompositor
* @Short_Description: Compositor API
*
* At a high-level, a window is not-visible or visible. When a
* window is added (with meta_compositor_add_window()) it is not visible.
* meta_compositor_show_window() indicates a transition from not-visible to
* visible. Some of the reasons for this:
*
* - Window newly created
* - Window is unminimized
* - Window is moved to the current desktop
* - Window was made sticky
*
* meta_compositor_hide_window() indicates that the window has transitioned from
* visible to not-visible. Some reasons include:
*
* - Window was destroyed
* - Window is minimized
* - Window is moved to a different desktop
* - Window no longer sticky.
*
* Note that combinations are possible - a window might have first
* been minimized and then moved to a different desktop. The 'effect' parameter
* to meta_compositor_show_window() and meta_compositor_hide_window() is a hint
* as to the appropriate effect to show the user and should not
* be considered to be indicative of a state change.
*
* When the active workspace is changed, meta_compositor_switch_workspace() is
* called first, then meta_compositor_show_window() and
* meta_compositor_hide_window() are called individually for each window
* affected, with an effect of META_COMP_EFFECT_NONE.
* If hiding windows will affect the switch workspace animation, the
* compositor needs to delay hiding the windows until the switch
* workspace animation completes.
*
* meta_compositor_maximize_window() and meta_compositor_unmaximize_window()
* are transitions within the visible state. The window is resized __before__
* the call, so it may be necessary to readjust the display based on the
* old_rect to start the animation.
*
* meta_compositor_window_mapped() and meta_compositor_window_unmapped() are
* notifications when the toplevel window (frame or client window) is mapped or
* unmapped. That is, when the result of meta_window_toplevel_is_mapped()
* changes. The main use of this is to drop resources when a window is unmapped.
* A window will always be mapped before meta_compositor_show_window()
* is called and will not be unmapped until after meta_compositor_hide_window()
* is called. If the live_hidden_windows preference is set, windows will never
* be unmapped.
*
* # Containers #
*
* There's three containers in the stage that can be used to place actors, here
* are listed in the order in which they are painted:
*
* - window group, accessible with meta_get_window_group_for_screen()
* - top window group, accessible with meta_get_top_window_group_for_screen()
* - overlay group, accessible with meta_get_overlay_group_for_screen()
*
* Mutter will place actors representing windows in the window group, except for
* override-redirect windows (ie. popups and menus) which will be placed in the
* top window group. Mutter won't put any actors in the overlay group, but it's
* intended for compositors to place there panel, dashes, status bars, etc.
*/
#include <config.h>
#include <clutter/x11/clutter-x11.h>
#include "core.h"
#include <meta/screen.h>
#include <meta/errors.h>
#include <meta/window.h>
@ -12,10 +79,11 @@
#include "xprops.h"
#include <meta/prefs.h>
#include <meta/main.h>
#include <meta/meta-background-actor.h>
#include <meta/meta-background-group.h>
#include <meta/meta-shadow-factory.h>
#include "meta-window-actor-private.h"
#include "meta-window-group.h"
#include "meta-background-actor-private.h"
#include "window-private.h" /* to check window->hidden */
#include "display-private.h" /* for meta_display_lookup_x_window() */
#include <X11/extensions/shape.h>
@ -116,21 +184,6 @@ process_property_notify (MetaCompositor *compositor,
{
MetaWindowActor *window_actor;
if (event->atom == compositor->atom_x_root_pixmap)
{
GSList *l;
for (l = meta_display_get_screens (compositor->display); l; l = l->next)
{
MetaScreen *screen = l->data;
if (event->window == meta_screen_get_xroot (screen))
{
meta_background_actor_update (screen);
return;
}
}
}
if (window == NULL)
return;
@ -157,23 +210,28 @@ get_output_window (MetaScreen *screen)
Window output, xroot;
XWindowAttributes attr;
long event_mask;
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
xroot = meta_screen_get_xroot (screen);
event_mask = FocusChangeMask |
ExposureMask |
EnterWindowMask | LeaveWindowMask |
PointerMotionMask |
PropertyChangeMask |
ButtonPressMask | ButtonReleaseMask |
KeyPressMask | KeyReleaseMask;
output = XCompositeGetOverlayWindow (xdisplay, xroot);
meta_core_add_old_event_mask (xdisplay, output, &mask);
XISetMask (mask.mask, XI_KeyPress);
XISetMask (mask.mask, XI_KeyRelease);
XISetMask (mask.mask, XI_ButtonPress);
XISetMask (mask.mask, XI_ButtonRelease);
XISetMask (mask.mask, XI_Enter);
XISetMask (mask.mask, XI_Leave);
XISetMask (mask.mask, XI_FocusIn);
XISetMask (mask.mask, XI_FocusOut);
XISetMask (mask.mask, XI_Motion);
XISelectEvents (xdisplay, output, &mask, 1);
event_mask = ExposureMask | PropertyChangeMask;
if (XGetWindowAttributes (xdisplay, output, &attr))
{
event_mask |= attr.your_event_mask;
}
event_mask |= attr.your_event_mask;
XSelectInput (xdisplay, output, event_mask);
@ -232,24 +290,20 @@ meta_get_window_group_for_screen (MetaScreen *screen)
}
/**
* meta_get_background_actor_for_screen:
* meta_get_top_window_group_for_screen:
* @screen: a #MetaScreen
*
* Gets the actor that draws the root window background under the windows.
* The root window background automatically tracks the image or color set
* by the environment.
*
* Returns: (transfer none): The background actor corresponding to @screen
* Returns: (transfer none): The top window group corresponding to @screen
*/
ClutterActor *
meta_get_background_actor_for_screen (MetaScreen *screen)
meta_get_top_window_group_for_screen (MetaScreen *screen)
{
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
if (!info)
return NULL;
return info->background_actor;
return info->top_window_group;
}
/**
@ -358,14 +412,23 @@ meta_begin_modal_for_plugin (MetaScreen *screen,
if ((options & META_MODAL_POINTER_ALREADY_GRABBED) == 0)
{
result = XGrabPointer (xdpy, grab_window,
False, /* owner_events */
(ButtonPressMask | ButtonReleaseMask |
EnterWindowMask | LeaveWindowMask | PointerMotionMask),
GrabModeAsync, GrabModeAsync,
None, /* confine to */
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
XISetMask (mask.mask, XI_ButtonPress);
XISetMask (mask.mask, XI_ButtonRelease);
XISetMask (mask.mask, XI_Enter);
XISetMask (mask.mask, XI_Leave);
XISetMask (mask.mask, XI_Motion);
result = XIGrabDevice (xdpy,
META_VIRTUAL_CORE_POINTER_ID,
grab_window,
timestamp,
cursor,
timestamp);
XIGrabModeAsync, XIGrabModeAsync,
False, /* owner_events */
&mask);
if (result != Success)
goto fail;
@ -374,10 +437,20 @@ meta_begin_modal_for_plugin (MetaScreen *screen,
if ((options & META_MODAL_KEYBOARD_ALREADY_GRABBED) == 0)
{
result = XGrabKeyboard (xdpy, grab_window,
False, /* owner_events */
GrabModeAsync, GrabModeAsync,
timestamp);
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
XISetMask (mask.mask, XI_KeyPress);
XISetMask (mask.mask, XI_KeyRelease);
result = XIGrabDevice (xdpy,
META_VIRTUAL_CORE_KEYBOARD_ID,
grab_window,
timestamp,
None,
XIGrabModeAsync, XIGrabModeAsync,
False, /* owner_events */
&mask);
if (result != Success)
goto fail;
@ -397,9 +470,9 @@ meta_begin_modal_for_plugin (MetaScreen *screen,
fail:
if (pointer_grabbed)
XUngrabPointer (xdpy, timestamp);
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_POINTER_ID, timestamp);
if (keyboard_grabbed)
XUngrabKeyboard (xdpy, timestamp);
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_KEYBOARD_ID, timestamp);
return FALSE;
}
@ -415,8 +488,8 @@ meta_end_modal_for_plugin (MetaScreen *screen,
g_return_if_fail (compositor->modal_plugin == plugin);
XUngrabPointer (xdpy, timestamp);
XUngrabKeyboard (xdpy, timestamp);
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_POINTER_ID, timestamp);
XIUngrabDevice (xdpy, META_VIRTUAL_CORE_KEYBOARD_ID, timestamp);
display->grab_op = META_GRAB_OP_NONE;
display->grab_window = NULL;
@ -445,25 +518,28 @@ meta_check_end_modal (MetaScreen *screen)
}
}
void
meta_compositor_manage_screen (MetaCompositor *compositor,
MetaScreen *screen)
static gboolean
after_stage_paint (gpointer data)
{
MetaCompScreen *info;
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
int screen_number = meta_screen_get_screen_number (screen);
Window xroot = meta_screen_get_xroot (screen);
Window xwin;
gint width, height;
XWindowAttributes attr;
long event_mask;
guint n_retries;
guint max_retries;
MetaCompScreen *info = (MetaCompScreen*) data;
GList *l;
/* Check if the screen is already managed */
if (meta_screen_get_compositor_data (screen))
return;
for (l = info->windows; l; l = l->next)
meta_window_actor_post_paint (l->data);
return TRUE;
}
static void
redirect_windows (MetaCompositor *compositor,
MetaScreen *screen)
{
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
Window xroot = meta_screen_get_xroot (screen);
int screen_number = meta_screen_get_screen_number (screen);
guint n_retries;
guint max_retries;
if (meta_get_replace_current_wm ())
max_retries = 5;
@ -496,6 +572,21 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
n_retries++;
g_usleep (G_USEC_PER_SEC);
}
}
void
meta_compositor_manage_screen (MetaCompositor *compositor,
MetaScreen *screen)
{
MetaCompScreen *info;
MetaDisplay *display = meta_screen_get_display (screen);
Display *xdisplay = meta_display_get_xdisplay (display);
Window xwin;
gint width, height;
/* Check if the screen is already managed */
if (meta_screen_get_compositor_data (screen))
return;
info = g_new0 (MetaCompScreen, 1);
/*
@ -517,6 +608,12 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
info->stage = clutter_stage_new ();
clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT,
after_stage_paint,
info, NULL);
clutter_stage_set_sync_delay (CLUTTER_STAGE (info->stage), META_SYNC_DELAY);
meta_screen_get_size (screen, &width, &height);
clutter_actor_realize (info->stage);
@ -524,38 +621,39 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
XResizeWindow (xdisplay, xwin, width, height);
event_mask = FocusChangeMask |
ExposureMask |
EnterWindowMask | LeaveWindowMask |
PointerMotionMask |
PropertyChangeMask |
ButtonPressMask | ButtonReleaseMask |
KeyPressMask | KeyReleaseMask |
StructureNotifyMask;
{
long event_mask;
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
XWindowAttributes attr;
if (XGetWindowAttributes (xdisplay, xwin, &attr))
{
event_mask |= attr.your_event_mask;
}
meta_core_add_old_event_mask (xdisplay, xwin, &mask);
XSelectInput (xdisplay, xwin, event_mask);
XISetMask (mask.mask, XI_KeyPress);
XISetMask (mask.mask, XI_KeyRelease);
XISetMask (mask.mask, XI_ButtonPress);
XISetMask (mask.mask, XI_ButtonRelease);
XISetMask (mask.mask, XI_Enter);
XISetMask (mask.mask, XI_Leave);
XISetMask (mask.mask, XI_FocusIn);
XISetMask (mask.mask, XI_FocusOut);
XISetMask (mask.mask, XI_Motion);
XISelectEvents (xdisplay, xwin, &mask, 1);
event_mask = ExposureMask | PropertyChangeMask | StructureNotifyMask;
if (XGetWindowAttributes (xdisplay, xwin, &attr))
event_mask |= attr.your_event_mask;
XSelectInput (xdisplay, xwin, event_mask);
}
info->window_group = meta_window_group_new (screen);
info->background_actor = meta_background_actor_new_for_screen (screen);
info->overlay_group = clutter_group_new ();
info->hidden_group = clutter_group_new ();
info->top_window_group = meta_window_group_new (screen);
info->overlay_group = clutter_actor_new ();
clutter_container_add (CLUTTER_CONTAINER (info->window_group),
info->background_actor,
NULL);
clutter_container_add (CLUTTER_CONTAINER (info->stage),
info->window_group,
info->overlay_group,
info->hidden_group,
NULL);
clutter_actor_hide (info->hidden_group);
clutter_actor_add_child (info->stage, info->window_group);
clutter_actor_add_child (info->stage, info->top_window_group);
clutter_actor_add_child (info->stage, info->overlay_group);
info->plugin_mgr = meta_plugin_manager_new (screen);
@ -587,7 +685,13 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
}
clutter_actor_show (info->overlay_group);
clutter_actor_show (info->stage);
/* Map overlay window before redirecting windows offscreen so we catch their
* contents until we show the stage.
*/
XMapWindow (xdisplay, info->output);
redirect_windows (compositor, screen);
}
void
@ -688,25 +792,53 @@ meta_compositor_remove_window (MetaCompositor *compositor,
}
void
meta_compositor_set_updates (MetaCompositor *compositor,
MetaWindow *window,
gboolean updates)
meta_compositor_set_updates_frozen (MetaCompositor *compositor,
MetaWindow *window,
gboolean updates_frozen)
{
MetaWindowActor *window_actor;
DEBUG_TRACE ("meta_compositor_set_updates_frozen\n");
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
if (!window_actor)
return;
meta_window_actor_set_updates_frozen (window_actor, updates_frozen);
}
void
meta_compositor_queue_frame_drawn (MetaCompositor *compositor,
MetaWindow *window,
gboolean no_delay_frame)
{
MetaWindowActor *window_actor;
DEBUG_TRACE ("meta_compositor_queue_frame_drawn\n");
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
if (!window_actor)
return;
meta_window_actor_queue_frame_drawn (window_actor, no_delay_frame);
}
static gboolean
is_grabbed_event (XEvent *event)
is_grabbed_event (MetaDisplay *display,
XEvent *event)
{
switch (event->xany.type)
if (event->type == GenericEvent &&
event->xcookie.extension == display->xinput_opcode)
{
case ButtonPress:
case ButtonRelease:
case EnterNotify:
case LeaveNotify:
case MotionNotify:
case KeyPress:
case KeyRelease:
return TRUE;
XIEvent *xev = (XIEvent *) event->xcookie.data;
switch (xev->evtype)
{
case XI_Motion:
case XI_ButtonPress:
case XI_ButtonRelease:
case XI_KeyPress:
case XI_KeyRelease:
return TRUE;
}
}
return FALSE;
@ -718,11 +850,63 @@ meta_compositor_window_shape_changed (MetaCompositor *compositor,
{
MetaWindowActor *window_actor;
window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
if (!window_actor)
return;
meta_window_actor_update_shape (window_actor);
}
/* Clutter makes the assumption that there is only one X window
* per stage, which is a valid assumption to make for a generic
* application toolkit. As such, it will ignore any events sent
* to the a stage that isn't its X window.
*
* When a user clicks on what she thinks is the wallpaper, she
* is actually clicking on the guard window, which is an entirely
* separate top-level override-redirect window in the hierarchy.
* We want to recieve events on this guard window so that users
* can right-click on the background actor. We do this by telling
* Clutter a little white lie, by transforming clicks on the guard
* window to become clicks on the stage window, allowing Clutter
* to process the event normally.
*/
static void
maybe_spoof_guard_window_event_as_stage_event (MetaCompScreen *info,
XEvent *event)
{
MetaDisplay *display = meta_screen_get_display (info->screen);
if (event->type == GenericEvent &&
event->xcookie.extension == display->xinput_opcode)
{
XIEvent *input_event = (XIEvent *) event->xcookie.data;
/* Only care about pointer events for now. */
switch (input_event->evtype)
{
case XI_Motion:
case XI_ButtonPress:
case XI_ButtonRelease:
{
XIDeviceEvent *device_event = ((XIDeviceEvent *) input_event);
if (device_event->event == info->screen->guard_window)
{
Window xwin = clutter_x11_get_stage_window (CLUTTER_STAGE (info->stage));
device_event->event = xwin;
}
}
break;
default:
break;
}
}
}
/**
* meta_compositor_process_event: (skip)
* @compositor:
* @event:
* @window:
*
*/
gboolean
@ -730,7 +914,7 @@ meta_compositor_process_event (MetaCompositor *compositor,
XEvent *event,
MetaWindow *window)
{
if (compositor->modal_plugin && is_grabbed_event (event))
if (compositor->modal_plugin && is_grabbed_event (compositor->display, event))
{
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (compositor->modal_plugin);
@ -769,6 +953,8 @@ meta_compositor_process_event (MetaCompositor *compositor,
info = meta_screen_get_compositor_data (screen);
maybe_spoof_guard_window_event_as_stage_event (info, event);
if (meta_plugin_manager_xevent_filter (info->plugin_mgr, event))
{
DEBUG_TRACE ("meta_compositor_process_event (filtered,window==NULL)\n");
@ -815,6 +1001,19 @@ meta_compositor_process_event (MetaCompositor *compositor,
return FALSE;
}
gboolean
meta_compositor_filter_keybinding (MetaCompositor *compositor,
MetaScreen *screen,
MetaKeyBinding *binding)
{
MetaCompScreen *info = meta_screen_get_compositor_data (screen);
if (info->plugin_mgr)
return meta_plugin_manager_filter_keybinding (info->plugin_mgr, binding);
return FALSE;
}
void
meta_compositor_show_window (MetaCompositor *compositor,
MetaWindow *window,
@ -911,8 +1110,11 @@ static void
sync_actor_stacking (MetaCompScreen *info)
{
GList *children;
GList *expected_window_node;
GList *tmp;
GList *old;
GList *backgrounds;
gboolean has_windows;
gboolean reordered;
/* NB: The first entries in the lists are stacked the lowest */
@ -921,60 +1123,74 @@ sync_actor_stacking (MetaCompScreen *info)
* little effort to make sure we actually need to restack before
* we go ahead and do it */
children = clutter_container_get_children (CLUTTER_CONTAINER (info->window_group));
children = clutter_actor_get_children (info->window_group);
reordered = FALSE;
old = children;
/* We allow for actors in the window group other than the actors we
* know about, but it's up to a plugin to try and keep them stacked correctly
* (we really need extra API to make that reliable.)
*/
/* Of the actors we know, the bottom actor should be the background actor */
while (old && old->data != info->background_actor && !META_IS_WINDOW_ACTOR (old->data))
old = old->next;
if (old == NULL || old->data != info->background_actor)
/* First we collect a list of all backgrounds, and check if they're at the
* bottom. Then we check if the window actors are in the correct sequence */
backgrounds = NULL;
expected_window_node = info->windows;
for (old = children; old != NULL; old = old->next)
{
reordered = TRUE;
goto done_with_check;
}
ClutterActor *actor = old->data;
/* Then the window actors should follow in sequence */
old = old->next;
for (tmp = info->windows; tmp != NULL; tmp = tmp->next)
{
while (old && !META_IS_WINDOW_ACTOR (old->data))
old = old->next;
/* old == NULL: someone reparented a window out of the window group,
* order undefined, always restack */
if (old == NULL || old->data != tmp->data)
if (META_IS_BACKGROUND_GROUP (actor) ||
META_IS_BACKGROUND_ACTOR (actor))
{
reordered = TRUE;
goto done_with_check;
backgrounds = g_list_prepend (backgrounds, actor);
if (has_windows)
reordered = TRUE;
}
else if (META_IS_WINDOW_ACTOR (actor) && !reordered)
{
has_windows = TRUE;
old = old->next;
if (expected_window_node != NULL && actor == expected_window_node->data)
expected_window_node = expected_window_node->next;
else
reordered = TRUE;
}
}
done_with_check:
g_list_free (children);
if (!reordered)
return;
for (tmp = g_list_last (info->windows); tmp != NULL; tmp = tmp->prev)
{
MetaWindowActor *window_actor = tmp->data;
clutter_actor_lower_bottom (CLUTTER_ACTOR (window_actor));
g_list_free (backgrounds);
return;
}
clutter_actor_lower_bottom (info->background_actor);
/* reorder the actors by lowering them in turn to the bottom of the stack.
* windows first, then background.
*
* We reorder the actors even if they're not parented to the window group,
* to allow stacking to work with intermediate actors (eg during effects)
*/
for (tmp = g_list_last (info->windows); tmp != NULL; tmp = tmp->prev)
{
ClutterActor *actor = tmp->data, *parent;
parent = clutter_actor_get_parent (actor);
clutter_actor_set_child_below_sibling (parent, actor, NULL);
}
/* we prepended the backgrounds above so the last actor in the list
* should get lowered to the bottom last.
*/
for (tmp = backgrounds; tmp != NULL; tmp = tmp->next)
{
ClutterActor *actor = tmp->data, *parent;
parent = clutter_actor_get_parent (actor);
clutter_actor_set_child_below_sibling (parent, actor, NULL);
}
g_list_free (backgrounds);
}
void
@ -1095,7 +1311,8 @@ meta_compositor_window_unmapped (MetaCompositor *compositor,
void
meta_compositor_sync_window_geometry (MetaCompositor *compositor,
MetaWindow *window)
MetaWindow *window,
gboolean did_placement)
{
MetaWindowActor *window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
MetaScreen *screen = meta_window_get_screen (window);
@ -1107,7 +1324,7 @@ meta_compositor_sync_window_geometry (MetaCompositor *compositor,
if (!window_actor)
return;
meta_window_actor_sync_actor_position (window_actor);
meta_window_actor_sync_actor_geometry (window_actor, did_placement);
}
void
@ -1129,13 +1346,53 @@ meta_compositor_sync_screen_size (MetaCompositor *compositor,
XResizeWindow (xdisplay, xwin, width, height);
meta_background_actor_screen_size_changed (screen);
meta_verbose ("Changed size for stage on screen %d to %dx%d\n",
meta_screen_get_screen_number (screen),
width, height);
}
static void
frame_callback (CoglOnscreen *onscreen,
CoglFrameEvent event,
CoglFrameInfo *frame_info,
void *user_data)
{
MetaCompScreen *info = user_data;
GList *l;
if (event == COGL_FRAME_EVENT_COMPLETE)
{
gint64 presentation_time_cogl = cogl_frame_info_get_presentation_time (frame_info);
gint64 presentation_time;
if (presentation_time_cogl != 0)
{
/* Cogl reports presentation in terms of its own clock, which is
* guaranteed to be in nanoseconds but with no specified base. The
* normal case with the open source GPU drivers on Linux 3.8 and
* newer is that the base of cogl_get_clock_time() is that of
* clock_gettime(CLOCK_MONOTONIC), so the same as g_get_monotonic_time),
* but there's no exposure of that through the API. clock_gettime()
* is fairly fast, so calling it twice and subtracting to get a
* nearly-zero number is acceptable, if a litle ugly.
*/
CoglContext *context = cogl_framebuffer_get_context (COGL_FRAMEBUFFER (onscreen));
gint64 current_cogl_time = cogl_get_clock_time (context);
gint64 current_monotonic_time = g_get_monotonic_time ();
presentation_time =
current_monotonic_time + (presentation_time_cogl - current_cogl_time) / 1000;
}
else
{
presentation_time = 0;
}
for (l = info->windows; l; l = l->next)
meta_window_actor_frame_complete (l->data, frame_info, presentation_time);
}
}
static void
pre_paint_windows (MetaCompScreen *info)
{
@ -1143,6 +1400,15 @@ pre_paint_windows (MetaCompScreen *info)
MetaWindowActor *top_window;
MetaWindowActor *expected_unredirected_window = NULL;
if (info->onscreen == NULL)
{
info->onscreen = COGL_ONSCREEN (cogl_get_draw_framebuffer ());
info->frame_closure = cogl_onscreen_add_frame_callback (info->onscreen,
frame_callback,
info,
NULL);
}
if (info->windows == NULL)
return;
@ -1217,6 +1483,7 @@ on_shadow_factory_changed (MetaShadowFactory *factory,
/**
* meta_compositor_new: (skip)
* @display:
*
*/
MetaCompositor *
@ -1224,7 +1491,6 @@ meta_compositor_new (MetaDisplay *display)
{
char *atom_names[] = {
"_XROOTPMAP_ID",
"_XSETROOT_ID",
"_NET_WM_WINDOW_OPACITY",
};
Atom atoms[G_N_ELEMENTS(atom_names)];
@ -1251,8 +1517,7 @@ meta_compositor_new (MetaDisplay *display)
compositor);
compositor->atom_x_root_pixmap = atoms[0];
compositor->atom_x_set_root = atoms[1];
compositor->atom_net_wm_window_opacity = atoms[2];
compositor->atom_net_wm_window_opacity = atoms[1];
compositor->repaint_func_id = clutter_threads_add_repaint_func (meta_repaint_func,
compositor,
@ -1263,6 +1528,7 @@ meta_compositor_new (MetaDisplay *display)
/**
* meta_get_overlay_window: (skip)
* @screen: a #MetaScreen
*
*/
Window
@ -1307,43 +1573,91 @@ meta_enable_unredirect_for_screen (MetaScreen *screen)
#define FLASH_TIME_MS 50
static void
flash_out_completed (ClutterAnimation *animation,
ClutterActor *flash)
flash_out_completed (ClutterTimeline *timeline,
gboolean is_finished,
gpointer user_data)
{
ClutterActor *flash = CLUTTER_ACTOR (user_data);
clutter_actor_destroy (flash);
}
static void
flash_in_completed (ClutterAnimation *animation,
ClutterActor *flash)
{
clutter_actor_animate (flash, CLUTTER_EASE_IN_QUAD,
FLASH_TIME_MS,
"opacity", 0,
"signal-after::completed", flash_out_completed, flash,
NULL);
}
void
meta_compositor_flash_screen (MetaCompositor *compositor,
MetaScreen *screen)
{
ClutterActor *stage;
ClutterActor *flash;
ClutterColor black = { 0, 0, 0, 255 };
ClutterTransition *transition;
gfloat width, height;
stage = meta_get_stage_for_screen (screen);
clutter_actor_get_size (stage, &width, &height);
flash = clutter_rectangle_new_with_color (&black);
flash = clutter_actor_new ();
clutter_actor_set_background_color (flash, CLUTTER_COLOR_Black);
clutter_actor_set_size (flash, width, height);
clutter_actor_set_opacity (flash, 0);
clutter_container_add_actor (CLUTTER_CONTAINER (stage), flash);
clutter_actor_add_child (stage, flash);
clutter_actor_animate (flash, CLUTTER_EASE_OUT_QUAD,
FLASH_TIME_MS,
"opacity", 192,
"signal-after::completed", flash_in_completed, flash,
NULL);
clutter_actor_save_easing_state (flash);
clutter_actor_set_easing_mode (flash, CLUTTER_EASE_IN_QUAD);
clutter_actor_set_easing_duration (flash, FLASH_TIME_MS);
clutter_actor_set_opacity (flash, 192);
transition = clutter_actor_get_transition (flash, "opacity");
clutter_timeline_set_auto_reverse (CLUTTER_TIMELINE (transition), TRUE);
clutter_timeline_set_repeat_count (CLUTTER_TIMELINE (transition), 2);
g_signal_connect (transition, "stopped",
G_CALLBACK (flash_out_completed), flash);
clutter_actor_restore_easing_state (flash);
}
/**
* meta_compositor_monotonic_time_to_server_time:
* @display: a #MetaDisplay
* @monotonic_time: time in the units of g_get_monotonic_time()
*
* _NET_WM_FRAME_DRAWN and _NET_WM_FRAME_TIMINGS messages represent time
* as a "high resolution server time" - this is the server time interpolated
* to microsecond resolution. The advantage of this time representation
* is that if X server is running on the same computer as a client, and
* the Xserver uses 'clock_gettime(CLOCK_MONOTONIC, ...)' for the server
* time, the client can detect this, and all such clients will share a
* a time representation with high accuracy. If there is not a common
* time source, then the time synchronization will be less accurate.
*/
gint64
meta_compositor_monotonic_time_to_server_time (MetaDisplay *display,
gint64 monotonic_time)
{
MetaCompositor *compositor = display->compositor;
if (compositor->server_time_query_time == 0 ||
(!compositor->server_time_is_monotonic_time &&
monotonic_time > compositor->server_time_query_time + 10*1000*1000)) /* 10 seconds */
{
guint32 server_time = meta_display_get_current_time_roundtrip (display);
gint64 server_time_usec = (gint64)server_time * 1000;
gint64 current_monotonic_time = g_get_monotonic_time ();
compositor->server_time_query_time = current_monotonic_time;
/* If the server time is within a second of the monotonic time,
* we assume that they are identical. This seems like a big margin,
* but we want to be as robust as possible even if the system
* is under load and our processing of the server response is
* delayed.
*/
if (server_time_usec > current_monotonic_time - 1000*1000 &&
server_time_usec < current_monotonic_time + 1000*1000)
compositor->server_time_is_monotonic_time = TRUE;
compositor->server_time_offset = server_time_usec - current_monotonic_time;
}
if (compositor->server_time_is_monotonic_time)
return monotonic_time;
else
return monotonic_time + compositor->server_time_offset;
}

View File

@ -9,7 +9,6 @@
void meta_background_actor_set_visible_region (MetaBackgroundActor *self,
cairo_region_t *visible_region);
void meta_background_actor_update (MetaScreen *screen);
void meta_background_actor_screen_size_changed (MetaScreen *screen);
cairo_region_t *meta_background_actor_get_visible_region (MetaBackgroundActor *self);
#endif /* META_BACKGROUND_ACTOR_PRIVATE_H */

View File

@ -1,7 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* meta-background-actor.c: Actor for painting the root window background
*
* Copyright 2009 Sander Dijkhuis
* Copyright 2010 Red Hat, Inc.
*
@ -23,12 +21,17 @@
* Portions adapted from gnome-shell/src/shell-global.c
*/
/**
* SECTION:meta-background-actor
* @title: MetaBackgroundActor
* @short_description: Actor for painting the root window background
*
*/
#include <config.h>
#define COGL_ENABLE_EXPERIMENTAL_API
#include <cogl/cogl-texture-pixmap-x11.h>
#define CLUTTER_ENABLE_EXPERIMENTAL_API
#include <clutter/clutter.h>
#include <X11/Xatom.h>
@ -36,226 +39,23 @@
#include "cogl-utils.h"
#include "compositor-private.h"
#include <meta/errors.h>
#include <meta/meta-background.h>
#include "meta-background-actor-private.h"
/* We allow creating multiple MetaBackgroundActors for the same MetaScreen to
* allow different rendering options to be set for different copies.
* But we want to share the same underlying CoglTexture for efficiency and
* to avoid driver bugs that might occur if we created multiple CoglTexturePixmaps
* for the same pixmap.
*
* This structure holds common information.
*/
typedef struct _MetaScreenBackground MetaScreenBackground;
struct _MetaScreenBackground
{
MetaScreen *screen;
GSList *actors;
float texture_width;
float texture_height;
CoglHandle texture;
CoglMaterialWrapMode wrap_mode;
guint have_pixmap : 1;
};
struct _MetaBackgroundActorPrivate
{
MetaScreenBackground *background;
CoglHandle material;
cairo_region_t *visible_region;
float dim_factor;
};
enum
{
PROP_0,
PROP_DIM_FACTOR,
PROP_LAST
};
static GParamSpec *obj_props[PROP_LAST];
G_DEFINE_TYPE (MetaBackgroundActor, meta_background_actor, CLUTTER_TYPE_ACTOR);
static void set_texture (MetaScreenBackground *background,
CoglHandle texture);
static void set_texture_to_stage_color (MetaScreenBackground *background);
static void
on_notify_stage_color (GObject *stage,
GParamSpec *pspec,
MetaScreenBackground *background)
{
if (!background->have_pixmap)
set_texture_to_stage_color (background);
}
static void
free_screen_background (MetaScreenBackground *background)
{
set_texture (background, COGL_INVALID_HANDLE);
if (background->screen != NULL)
{
ClutterActor *stage = meta_get_stage_for_screen (background->screen);
g_signal_handlers_disconnect_by_func (stage,
(gpointer) on_notify_stage_color,
background);
background->screen = NULL;
}
}
static MetaScreenBackground *
meta_screen_background_get (MetaScreen *screen)
{
MetaScreenBackground *background;
background = g_object_get_data (G_OBJECT (screen), "meta-screen-background");
if (background == NULL)
{
ClutterActor *stage;
background = g_new0 (MetaScreenBackground, 1);
background->screen = screen;
g_object_set_data_full (G_OBJECT (screen), "meta-screen-background",
background, (GDestroyNotify) free_screen_background);
stage = meta_get_stage_for_screen (screen);
g_signal_connect (stage, "notify::color",
G_CALLBACK (on_notify_stage_color), background);
meta_background_actor_update (screen);
}
return background;
}
static void
update_wrap_mode_of_actor (MetaBackgroundActor *self)
{
MetaBackgroundActorPrivate *priv = self->priv;
cogl_material_set_layer_wrap_mode (priv->material, 0, priv->background->wrap_mode);
}
static void
update_wrap_mode (MetaScreenBackground *background)
{
GSList *l;
int width, height;
meta_screen_get_size (background->screen, &width, &height);
/* We turn off repeating when we have a full-screen pixmap to keep from
* getting artifacts from one side of the image sneaking into the other
* side of the image via bilinear filtering.
*/
if (width == background->texture_width && height == background->texture_height)
background->wrap_mode = COGL_MATERIAL_WRAP_MODE_CLAMP_TO_EDGE;
else
background->wrap_mode = COGL_MATERIAL_WRAP_MODE_REPEAT;
for (l = background->actors; l; l = l->next)
update_wrap_mode_of_actor (l->data);
}
static void
set_texture_on_actor (MetaBackgroundActor *self)
{
MetaBackgroundActorPrivate *priv = self->priv;
MetaDisplay *display = meta_screen_get_display (priv->background->screen);
/* This may trigger destruction of an old texture pixmap, which, if
* the underlying X pixmap is already gone has the tendency to trigger
* X errors inside DRI. For safety, trap errors */
meta_error_trap_push (display);
cogl_material_set_layer (priv->material, 0, priv->background->texture);
meta_error_trap_pop (display);
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
}
static void
set_texture (MetaScreenBackground *background,
CoglHandle texture)
{
MetaDisplay *display = meta_screen_get_display (background->screen);
GSList *l;
/* This may trigger destruction of an old texture pixmap, which, if
* the underlying X pixmap is already gone has the tendency to trigger
* X errors inside DRI. For safety, trap errors */
meta_error_trap_push (display);
if (background->texture != COGL_INVALID_HANDLE)
{
cogl_handle_unref (background->texture);
background->texture = COGL_INVALID_HANDLE;
}
meta_error_trap_pop (display);
if (texture != COGL_INVALID_HANDLE)
background->texture = cogl_handle_ref (texture);
background->texture_width = cogl_texture_get_width (background->texture);
background->texture_height = cogl_texture_get_height (background->texture);
for (l = background->actors; l; l = l->next)
set_texture_on_actor (l->data);
update_wrap_mode (background);
}
/* Sets our material to paint with a 1x1 texture of the stage's background
* color; doing this when we have no pixmap allows the application to turn
* off painting the stage. There might be a performance benefit to
* painting in this case with a solid color, but the normal solid color
* case is a 1x1 root pixmap, so we'd have to reverse-engineer that to
* actually pick up the (small?) performance win. This is just a fallback.
*/
static void
set_texture_to_stage_color (MetaScreenBackground *background)
{
ClutterActor *stage = meta_get_stage_for_screen (background->screen);
ClutterColor color;
CoglHandle texture;
clutter_stage_get_color (CLUTTER_STAGE (stage), &color);
/* Slicing will prevent COGL from using hardware texturing for
* the tiled 1x1 pixmap, and will cause it to draw the window
* background in millions of separate 1x1 rectangles */
texture = meta_create_color_texture_4ub (color.red, color.green,
color.blue, 0xff,
COGL_TEXTURE_NO_SLICING);
set_texture (background, texture);
cogl_handle_unref (texture);
}
static void
meta_background_actor_dispose (GObject *object)
{
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
MetaBackgroundActorPrivate *priv = self->priv;
meta_background_actor_set_visible_region (self, NULL);
if (priv->background != NULL)
{
priv->background->actors = g_slist_remove (priv->background->actors, self);
priv->background = NULL;
}
if (priv->material != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->material);
priv->material = COGL_INVALID_HANDLE;
}
G_OBJECT_CLASS (meta_background_actor_parent_class)->dispose (object);
}
@ -265,11 +65,15 @@ meta_background_actor_get_preferred_width (ClutterActor *actor,
gfloat *min_width_p,
gfloat *natural_width_p)
{
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
MetaBackgroundActorPrivate *priv = self->priv;
int width, height;
ClutterContent *content;
gfloat width;
meta_screen_get_size (priv->background->screen, &width, &height);
content = clutter_actor_get_content (actor);
if (content)
clutter_content_get_preferred_size (content, &width, NULL);
else
width = 0;
if (min_width_p)
*min_width_p = width;
@ -284,11 +88,15 @@ meta_background_actor_get_preferred_height (ClutterActor *actor,
gfloat *natural_height_p)
{
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
MetaBackgroundActorPrivate *priv = self->priv;
int width, height;
ClutterContent *content;
gfloat height;
meta_screen_get_size (priv->background->screen, &width, &height);
content = clutter_actor_get_content (actor);
if (content)
clutter_content_get_preferred_size (content, NULL, &height);
else
height = 0;
if (min_height_p)
*min_height_p = height;
@ -296,64 +104,19 @@ meta_background_actor_get_preferred_height (ClutterActor *actor,
*natural_height_p = height;
}
static void
meta_background_actor_paint (ClutterActor *actor)
{
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
MetaBackgroundActorPrivate *priv = self->priv;
guint8 opacity = clutter_actor_get_paint_opacity (actor);
guint8 color_component;
int width, height;
meta_screen_get_size (priv->background->screen, &width, &height);
color_component = (int)(0.5 + opacity * priv->dim_factor);
cogl_material_set_color4ub (priv->material,
color_component,
color_component,
color_component,
opacity);
cogl_set_source (priv->material);
if (priv->visible_region)
{
int n_rectangles = cairo_region_num_rectangles (priv->visible_region);
int i;
for (i = 0; i < n_rectangles; i++)
{
cairo_rectangle_int_t rect;
cairo_region_get_rectangle (priv->visible_region, i, &rect);
cogl_rectangle_with_texture_coords (rect.x, rect.y,
rect.x + rect.width, rect.y + rect.height,
rect.x / priv->background->texture_width,
rect.y / priv->background->texture_height,
(rect.x + rect.width) / priv->background->texture_width,
(rect.y + rect.height) / priv->background->texture_height);
}
}
else
{
cogl_rectangle_with_texture_coords (0.0f, 0.0f,
width, height,
0.0f, 0.0f,
width / priv->background->texture_width,
height / priv->background->texture_height);
}
}
static gboolean
meta_background_actor_get_paint_volume (ClutterActor *actor,
ClutterPaintVolume *volume)
{
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (actor);
MetaBackgroundActorPrivate *priv = self->priv;
int width, height;
ClutterContent *content;
gfloat width, height;
meta_screen_get_size (priv->background->screen, &width, &height);
content = clutter_actor_get_content (actor);
if (!content)
return FALSE;
clutter_content_get_preferred_size (content, &width, &height);
clutter_paint_volume_set_width (volume, width);
clutter_paint_volume_set_height (volume, height);
@ -361,214 +124,48 @@ meta_background_actor_get_paint_volume (ClutterActor *actor,
return TRUE;
}
static void
meta_background_actor_set_dim_factor (MetaBackgroundActor *self,
gfloat dim_factor)
{
MetaBackgroundActorPrivate *priv = self->priv;
if (priv->dim_factor == dim_factor)
return;
priv->dim_factor = dim_factor;
clutter_actor_queue_redraw (CLUTTER_ACTOR (self));
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_DIM_FACTOR]);
}
static void
meta_background_actor_get_property(GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
MetaBackgroundActorPrivate *priv = self->priv;
switch (prop_id)
{
case PROP_DIM_FACTOR:
g_value_set_float (value, priv->dim_factor);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
meta_background_actor_set_property(GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
MetaBackgroundActor *self = META_BACKGROUND_ACTOR (object);
switch (prop_id)
{
case PROP_DIM_FACTOR:
meta_background_actor_set_dim_factor (self, g_value_get_float (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
meta_background_actor_class_init (MetaBackgroundActorClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
GParamSpec *pspec;
g_type_class_add_private (klass, sizeof (MetaBackgroundActorPrivate));
object_class->dispose = meta_background_actor_dispose;
object_class->get_property = meta_background_actor_get_property;
object_class->set_property = meta_background_actor_set_property;
actor_class->get_preferred_width = meta_background_actor_get_preferred_width;
actor_class->get_preferred_height = meta_background_actor_get_preferred_height;
actor_class->paint = meta_background_actor_paint;
actor_class->get_paint_volume = meta_background_actor_get_paint_volume;
/**
* MetaBackgroundActor:dim-factor:
*
* Factor to dim the background by, between 0.0 (black) and 1.0 (original
* colors)
*/
pspec = g_param_spec_float ("dim-factor",
"Dim factor",
"Factor to dim the background by",
0.0, 1.0,
1.0,
G_PARAM_READWRITE);
obj_props[PROP_DIM_FACTOR] = pspec;
g_object_class_install_property (object_class, PROP_DIM_FACTOR, pspec);
}
static void
meta_background_actor_init (MetaBackgroundActor *self)
{
MetaBackgroundActorPrivate *priv;
priv = self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
META_TYPE_BACKGROUND_ACTOR,
MetaBackgroundActorPrivate);
priv->dim_factor = 1.0;
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
META_TYPE_BACKGROUND_ACTOR,
MetaBackgroundActorPrivate);
}
/**
* meta_background_actor_new:
* @screen: the #MetaScreen
*
* Creates a new actor to draw the background for the given screen.
* Creates a new actor to draw the background for the given monitor.
* This actor should be associated with a #MetaBackground using
* clutter_actor_set_content()
*
* Return value: the newly created background actor
*/
ClutterActor *
meta_background_actor_new_for_screen (MetaScreen *screen)
meta_background_actor_new (void)
{
MetaBackgroundActor *self;
MetaBackgroundActorPrivate *priv;
g_return_val_if_fail (META_IS_SCREEN (screen), NULL);
self = g_object_new (META_TYPE_BACKGROUND_ACTOR, NULL);
priv = self->priv;
priv->background = meta_screen_background_get (screen);
priv->background->actors = g_slist_prepend (priv->background->actors, self);
priv->material = meta_create_texture_material (NULL);
set_texture_on_actor (self);
update_wrap_mode_of_actor (self);
return CLUTTER_ACTOR (self);
}
/**
* meta_background_actor_update:
* @screen: a #MetaScreen
*
* Refetches the _XROOTPMAP_ID property for the root window and updates
* the contents of the background actor based on that. There's no attempt
* to optimize out pixmap values that don't change (since a root pixmap
* could be replaced by with another pixmap with the same ID under some
* circumstances), so this should only be called when we actually receive
* a PropertyNotify event for the property.
*/
void
meta_background_actor_update (MetaScreen *screen)
{
MetaScreenBackground *background;
MetaDisplay *display;
MetaCompositor *compositor;
Atom type;
int format;
gulong nitems;
gulong bytes_after;
guchar *data;
Pixmap root_pixmap_id;
background = meta_screen_background_get (screen);
display = meta_screen_get_display (screen);
compositor = meta_display_get_compositor (display);
root_pixmap_id = None;
if (!XGetWindowProperty (meta_display_get_xdisplay (display),
meta_screen_get_xroot (screen),
compositor->atom_x_root_pixmap,
0, LONG_MAX,
False,
AnyPropertyType,
&type, &format, &nitems, &bytes_after, &data) &&
type != None)
{
/* Got a property. */
if (type == XA_PIXMAP && format == 32 && nitems == 1)
{
/* Was what we expected. */
root_pixmap_id = *(Pixmap *)data;
}
XFree(data);
}
if (root_pixmap_id != None)
{
CoglHandle texture;
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
GError *error = NULL;
meta_error_trap_push (display);
texture = cogl_texture_pixmap_x11_new (ctx, root_pixmap_id, FALSE, &error);
meta_error_trap_pop (display);
if (texture != COGL_INVALID_HANDLE)
{
set_texture (background, texture);
cogl_handle_unref (texture);
background->have_pixmap = True;
return;
}
else
{
g_warning ("Failed to create background texture from pixmap: %s",
error->message);
g_error_free (error);
}
}
background->have_pixmap = False;
set_texture_to_stage_color (background);
}
/**
* meta_background_actor_set_visible_region:
* @self: a #MetaBackgroundActor
@ -588,40 +185,44 @@ meta_background_actor_set_visible_region (MetaBackgroundActor *self,
priv = self->priv;
if (priv->visible_region)
{
cairo_region_destroy (priv->visible_region);
priv->visible_region = NULL;
}
g_clear_pointer (&priv->visible_region,
(GDestroyNotify)
cairo_region_destroy);
if (visible_region)
{
cairo_rectangle_int_t screen_rect = { 0 };
meta_screen_get_size (priv->background->screen, &screen_rect.width, &screen_rect.height);
/* Doing the intersection here is probably unnecessary - MetaWindowGroup
* should never compute a visible area that's larger than the root screen!
* but it's not that expensive and adds some extra robustness.
*/
priv->visible_region = cairo_region_create_rectangle (&screen_rect);
cairo_region_intersect (priv->visible_region, visible_region);
}
priv->visible_region = cairo_region_copy (visible_region);
}
/**
* meta_background_actor_screen_size_changed:
* @screen: a #MetaScreen
* meta_background_actor_get_visible_region:
* @self: a #MetaBackgroundActor
*
* Called by the compositor when the size of the #MetaScreen changes
* Return value (transfer full): a #cairo_region_t that represents the part of
* the background not obscured by other #MetaBackgroundActor or
* #MetaWindowActor objects.
*/
void
meta_background_actor_screen_size_changed (MetaScreen *screen)
cairo_region_t *
meta_background_actor_get_visible_region (MetaBackgroundActor *self)
{
MetaScreenBackground *background = meta_screen_background_get (screen);
GSList *l;
MetaBackgroundActorPrivate *priv = self->priv;
ClutterActorBox content_box;
cairo_rectangle_int_t content_area = { 0 };
cairo_region_t *visible_region;
update_wrap_mode (background);
g_return_val_if_fail (META_IS_BACKGROUND_ACTOR (self), NULL);
for (l = background->actors; l; l = l->next)
clutter_actor_queue_relayout (l->data);
if (!priv->visible_region)
return NULL;
clutter_actor_get_content_box (CLUTTER_ACTOR (self), &content_box);
content_area.x = content_box.x1;
content_area.y = content_box.y1;
content_area.width = content_box.x2 - content_box.x1;
content_area.height = content_box.y2 - content_box.y1;
visible_region = cairo_region_create_rectangle (&content_area);
cairo_region_intersect (visible_region, priv->visible_region);
return visible_region;
}

View File

@ -0,0 +1,11 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
#ifndef META_BACKGROUND_GROUP_PRIVATE_H
#define META_BACKGROUND_GROUP_PRIVATE_H
#include <meta/screen.h>
#include <meta/meta-background-group.h>
void meta_background_group_set_visible_region (MetaBackgroundGroup *self,
cairo_region_t *visible_region);
#endif /* META_BACKGROUND_GROUP_PRIVATE_H */

View File

@ -0,0 +1,110 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/**
* SECTION:meta-background-group
* @title: MetaBackgroundGroup
* @short_description: Container for background actors
*
* This class is a subclass of ClutterActor with special handling for
* MetaBackgroundActor/MetaBackgroundGroup when painting children.
* It makes sure to only draw the parts of the backgrounds not
* occluded by opaque windows.
*
* See #MetaWindowGroup for more information behind the motivation,
* and details on implementation.
*/
#include <config.h>
#include "compositor-private.h"
#include "clutter-utils.h"
#include "meta-background-actor-private.h"
#include "meta-background-group-private.h"
G_DEFINE_TYPE (MetaBackgroundGroup, meta_background_group, CLUTTER_TYPE_ACTOR);
struct _MetaBackgroundGroupPrivate
{
gpointer dummy;
};
static void
meta_background_group_dispose (GObject *object)
{
G_OBJECT_CLASS (meta_background_group_parent_class)->dispose (object);
}
static gboolean
meta_background_group_get_paint_volume (ClutterActor *actor,
ClutterPaintVolume *volume)
{
return clutter_paint_volume_set_from_allocation (volume, actor);
}
static void
meta_background_group_class_init (MetaBackgroundGroupClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
actor_class->get_paint_volume = meta_background_group_get_paint_volume;
object_class->dispose = meta_background_group_dispose;
g_type_class_add_private (klass, sizeof (MetaBackgroundGroupPrivate));
}
static void
meta_background_group_init (MetaBackgroundGroup *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
META_TYPE_BACKGROUND_GROUP,
MetaBackgroundGroupPrivate);
}
/**
* meta_background_group_set_visible_region:
* @self: a #MetaBackgroundGroup
* @visible_region: (allow-none): the parts of the background to paint
*
* Sets the area of the backgrounds that is unobscured by overlapping windows.
* This is used to optimize and only paint the visible portions.
*/
void
meta_background_group_set_visible_region (MetaBackgroundGroup *self,
cairo_region_t *region)
{
GList *children, *l;
children = clutter_actor_get_children (CLUTTER_ACTOR (self));
for (l = children; l; l = l->next)
{
ClutterActor *actor = l->data;
if (META_IS_BACKGROUND_ACTOR (actor))
{
meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (actor), region);
}
else if (META_IS_BACKGROUND_GROUP (actor))
{
int x, y;
if (!meta_actor_is_untransformed (actor, &x, &y))
continue;
cairo_region_translate (region, -x, -y);
meta_background_group_set_visible_region (META_BACKGROUND_GROUP (actor), region);
cairo_region_translate (region, x, y);
}
}
g_list_free (children);
}
ClutterActor *
meta_background_group_new (void)
{
MetaBackgroundGroup *background_group;
background_group = g_object_new (META_TYPE_BACKGROUND_GROUP, NULL);
return CLUTTER_ACTOR (background_group);
}

File diff suppressed because it is too large Load Diff

View File

@ -281,6 +281,19 @@ meta_plugin_manager_switch_workspace (MetaPluginManager *plugin_mgr,
return retval;
}
gboolean
meta_plugin_manager_filter_keybinding (MetaPluginManager *plugin_mgr,
MetaKeyBinding *binding)
{
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
if (klass->keybinding_filter)
return klass->keybinding_filter (plugin, binding);
return FALSE;
}
/*
* The public method that the compositor hooks into for desktop switching.
*
@ -296,17 +309,14 @@ meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr,
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
if (!plugin_mgr)
return FALSE;
/* We need to make sure that clutter gets certain events, like
* ConfigureNotify on the stage window. If there is a plugin that
* provides an xevent_filter function, then it's the responsibility
* of that plugin to pass events to Clutter. Otherwise, we send the
* event directly to Clutter ourselves.
*/
if (klass->xevent_filter && klass->xevent_filter (plugin, xev))
return TRUE;
if (klass->xevent_filter)
return klass->xevent_filter (plugin, xev);
else
return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE;
}

View File

@ -67,6 +67,9 @@ gboolean meta_plugin_manager_switch_workspace (MetaPluginManager *mgr,
gint to,
MetaMotionDirection direction);
gboolean meta_plugin_manager_filter_keybinding (MetaPluginManager *mgr,
MetaKeyBinding *binding);
gboolean meta_plugin_manager_xevent_filter (MetaPluginManager *mgr,
XEvent *xev);

View File

@ -21,6 +21,13 @@
* 02111-1307, USA.
*/
/**
* SECTION:meta-plugin
* @title: MetaPlugin
* @short_description: Entry point for plugins
*
*/
#include <meta/meta-plugin.h>
#include "meta-plugin-manager.h"
#include <meta/screen.h>

View File

@ -40,7 +40,7 @@ typedef struct _MetaShadow MetaShadow;
MetaShadow *meta_shadow_ref (MetaShadow *shadow);
void meta_shadow_unref (MetaShadow *shadow);
CoglHandle meta_shadow_get_texture (MetaShadow *shadow);
CoglTexture*meta_shadow_get_texture (MetaShadow *shadow);
void meta_shadow_paint (MetaShadow *shadow,
int window_x,
int window_y,

View File

@ -1,9 +1,5 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* MetaShadowFactory:
*
* Create and cache shadow textures for abritrary window shapes
*
* Copyright 2010 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
@ -21,6 +17,13 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
/**
* SECTION:meta-shadow-factory
* @title: MetaShadowFactory
* @short_description: Create and cache shadow textures for abritrary window shapes
*/
#include <config.h>
#include <math.h>
#include <string.h>
@ -65,8 +68,8 @@ struct _MetaShadow
MetaShadowFactory *factory;
MetaShadowCacheKey key;
CoglHandle texture;
CoglHandle material;
CoglTexture *texture;
CoglPipeline *pipeline;
/* The outer order is the distance the shadow extends outside the window
* shape; the inner border is the unscaled portion inside the window
@ -130,7 +133,7 @@ MetaShadowClassInfo default_shadow_classes[] = {
{ "popup-menu", { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } },
{ "dropdown-menu", { 1, 10, 0, 1, 128 }, { 1, 10, 0, 1, 128 } },
{ "attached", { 2, -1, 0, 1, 255 }, { 1, -1, 0, 1, 128 } }
{ "attached", { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } }
};
G_DEFINE_TYPE (MetaShadowFactory, meta_shadow_factory, G_TYPE_OBJECT);
@ -175,8 +178,8 @@ meta_shadow_unref (MetaShadow *shadow)
}
meta_window_shape_unref (shadow->key.shape);
cogl_handle_unref (shadow->texture);
cogl_handle_unref (shadow->material);
cogl_object_unref (shadow->texture);
cogl_object_unref (shadow->pipeline);
g_slice_free (MetaShadow, shadow);
}
@ -218,10 +221,10 @@ meta_shadow_paint (MetaShadow *shadow,
int dest_y[4];
int n_x, n_y;
cogl_material_set_color4ub (shadow->material,
cogl_pipeline_set_color4ub (shadow->pipeline,
opacity, opacity, opacity, opacity);
cogl_set_source (shadow->material);
cogl_set_source (shadow->pipeline);
if (shadow->scale_width)
{
@ -801,7 +804,7 @@ make_shadow (MetaShadow *shadow,
cairo_region_destroy (column_convolve_region);
g_free (buffer);
shadow->material = meta_create_texture_material (shadow->texture);
shadow->pipeline = meta_create_texture_pipeline (shadow->texture);
}
static MetaShadowParams *

View File

@ -1,8 +1,4 @@
/*
* shaped texture
*
* An actor to draw a masked texture.
*
* Authored By Neil Roberts <neil@linux.intel.com>
* and Jasper St. Pierre <jstpierre@mecheye.net>
*
@ -25,10 +21,13 @@
* 02111-1307, USA.
*/
#include <config.h>
/**
* SECTION:meta-shaped-texture
* @title: MetaShapedTexture
* @short_description: An actor to draw a masked texture.
*/
#define CLUTTER_ENABLE_EXPERIMENTAL_API
#define COGL_ENABLE_EXPERIMENTAL_API
#include <config.h>
#include <meta/meta-shaped-texture.h>
#include "meta-texture-tower.h"
@ -67,10 +66,10 @@ struct _MetaShapedTexturePrivate
{
MetaTextureTower *paint_tower;
Pixmap pixmap;
CoglHandle texture;
CoglHandle mask_texture;
CoglHandle material;
CoglHandle material_unshaped;
CoglTexturePixmapX11 *texture;
CoglTexture *mask_texture;
CoglPipeline *pipeline;
CoglPipeline *pipeline_unshaped;
cairo_region_t *clip_region;
@ -104,8 +103,8 @@ meta_shaped_texture_init (MetaShapedTexture *self)
priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self);
priv->paint_tower = meta_texture_tower_new ();
priv->texture = COGL_INVALID_HANDLE;
priv->mask_texture = COGL_INVALID_HANDLE;
priv->texture = NULL;
priv->mask_texture = NULL;
priv->create_mipmaps = TRUE;
}
@ -119,23 +118,11 @@ meta_shaped_texture_dispose (GObject *object)
meta_texture_tower_free (priv->paint_tower);
priv->paint_tower = NULL;
if (priv->material != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->material);
priv->material = COGL_INVALID_HANDLE;
}
if (priv->material_unshaped != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->material_unshaped);
priv->material_unshaped = COGL_INVALID_HANDLE;
}
if (priv->texture != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->texture);
priv->texture = COGL_INVALID_HANDLE;
}
g_clear_pointer (&priv->pipeline, cogl_object_unref);
g_clear_pointer (&priv->pipeline_unshaped, cogl_object_unref);
g_clear_pointer (&priv->texture, cogl_object_unref);
meta_shaped_texture_set_mask_texture (self, COGL_INVALID_HANDLE);
meta_shaped_texture_set_mask_texture (self, NULL);
meta_shaped_texture_set_clip_region (self, NULL);
G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object);
@ -146,14 +133,14 @@ meta_shaped_texture_paint (ClutterActor *actor)
{
MetaShapedTexture *stex = (MetaShapedTexture *) actor;
MetaShapedTexturePrivate *priv = stex->priv;
CoglHandle paint_tex;
CoglTexture *paint_tex;
guint tex_width, tex_height;
ClutterActorBox alloc;
static CoglHandle material_template = COGL_INVALID_HANDLE;
static CoglHandle material_unshaped_template = COGL_INVALID_HANDLE;
static CoglPipeline *pipeline_template = NULL;
static CoglPipeline *pipeline_unshaped_template = NULL;
CoglHandle material;
CoglPipeline *pipeline;
if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
return;
@ -179,9 +166,9 @@ meta_shaped_texture_paint (ClutterActor *actor)
if (priv->create_mipmaps)
paint_tex = meta_texture_tower_get_paint_texture (priv->paint_tower);
else
paint_tex = priv->texture;
paint_tex = COGL_TEXTURE (priv->texture);
if (paint_tex == COGL_INVALID_HANDLE)
if (paint_tex == NULL)
return;
tex_width = priv->tex_width;
@ -190,47 +177,51 @@ meta_shaped_texture_paint (ClutterActor *actor)
if (tex_width == 0 || tex_height == 0) /* no contents yet */
return;
if (priv->mask_texture == COGL_INVALID_HANDLE)
if (priv->mask_texture == NULL)
{
/* Use a single-layer texture if we don't have a mask. */
if (priv->material_unshaped == COGL_INVALID_HANDLE)
if (priv->pipeline_unshaped == NULL)
{
if (G_UNLIKELY (material_unshaped_template == COGL_INVALID_HANDLE))
material_unshaped_template = cogl_material_new ();
if (G_UNLIKELY (pipeline_unshaped_template == NULL))
{
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
pipeline_unshaped_template = cogl_pipeline_new (ctx);
}
priv->material_unshaped = cogl_material_copy (material_unshaped_template);
priv->pipeline_unshaped = cogl_pipeline_copy (pipeline_unshaped_template);
}
material = priv->material_unshaped;
pipeline = priv->pipeline_unshaped;
}
else
{
if (priv->material == COGL_INVALID_HANDLE)
if (priv->pipeline == NULL)
{
if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE))
if (G_UNLIKELY (pipeline_template == NULL))
{
material_template = cogl_material_new ();
cogl_material_set_layer_combine (material_template, 1,
CoglContext *ctx = clutter_backend_get_cogl_context (clutter_get_default_backend ());
pipeline_template = cogl_pipeline_new (ctx);
cogl_pipeline_set_layer_combine (pipeline_template, 1,
"RGBA = MODULATE (PREVIOUS, TEXTURE[A])",
NULL);
}
priv->material = cogl_material_copy (material_template);
priv->pipeline = cogl_pipeline_copy (pipeline_template);
}
material = priv->material;
pipeline = priv->pipeline;
cogl_material_set_layer (material, 1, priv->mask_texture);
cogl_pipeline_set_layer_texture (pipeline, 1, priv->mask_texture);
}
cogl_material_set_layer (material, 0, paint_tex);
cogl_pipeline_set_layer_texture (pipeline, 0, paint_tex);
{
CoglColor color;
guchar opacity = clutter_actor_get_paint_opacity (actor);
cogl_color_set_from_4ub (&color, opacity, opacity, opacity, opacity);
cogl_material_set_color (material, &color);
cogl_pipeline_set_color (pipeline, &color);
}
cogl_set_source (material);
cogl_set_source (pipeline);
clutter_actor_get_allocation_box (actor, &alloc);
@ -295,18 +286,18 @@ meta_shaped_texture_pick (ClutterActor *actor,
MetaShapedTexturePrivate *priv = stex->priv;
/* If there is no region then use the regular pick */
if (priv->mask_texture == COGL_INVALID_HANDLE)
if (priv->mask_texture == NULL)
CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class)
->pick (actor, color);
else if (clutter_actor_should_pick_paint (actor))
{
CoglHandle paint_tex;
CoglTexture *paint_tex;
ClutterActorBox alloc;
guint tex_width, tex_height;
paint_tex = priv->texture;
paint_tex = COGL_TEXTURE (priv->texture);
if (paint_tex == COGL_INVALID_HANDLE)
if (paint_tex == NULL)
return;
tex_width = cogl_texture_get_width (paint_tex);
@ -396,17 +387,17 @@ meta_shaped_texture_set_create_mipmaps (MetaShapedTexture *stex,
if (create_mipmaps != priv->create_mipmaps)
{
CoglHandle base_texture;
CoglTexture *base_texture;
priv->create_mipmaps = create_mipmaps;
base_texture = create_mipmaps ?
priv->texture : COGL_INVALID_HANDLE;
COGL_TEXTURE (priv->texture) : NULL;
meta_texture_tower_set_base_texture (priv->paint_tower, base_texture);
}
}
void
meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
CoglHandle mask_texture)
CoglTexture *mask_texture)
{
MetaShapedTexturePrivate *priv;
@ -414,16 +405,12 @@ meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
priv = stex->priv;
if (priv->mask_texture != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->mask_texture);
priv->mask_texture = COGL_INVALID_HANDLE;
}
g_clear_pointer (&priv->mask_texture, cogl_object_unref);
if (mask_texture != COGL_INVALID_HANDLE)
if (mask_texture != NULL)
{
priv->mask_texture = mask_texture;
cogl_handle_ref (priv->mask_texture);
cogl_object_ref (priv->mask_texture);
}
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
@ -441,10 +428,11 @@ meta_shaped_texture_update_area (MetaShapedTexture *stex,
priv = stex->priv;
if (priv->texture == COGL_INVALID_HANDLE)
if (priv->texture == NULL)
return;
cogl_texture_pixmap_x11_update_area (priv->texture, x, y, width, height);
cogl_texture_pixmap_x11_update_area (priv->texture,
x, y, width, height);
meta_texture_tower_update_area (priv->paint_tower, x, y, width, height);
@ -452,8 +440,8 @@ meta_shaped_texture_update_area (MetaShapedTexture *stex,
}
static void
set_cogl_texture (MetaShapedTexture *stex,
CoglHandle cogl_tex)
set_cogl_texture (MetaShapedTexture *stex,
CoglTexturePixmapX11 *cogl_tex)
{
MetaShapedTexturePrivate *priv;
guint width, height;
@ -462,21 +450,21 @@ set_cogl_texture (MetaShapedTexture *stex,
priv = stex->priv;
if (priv->texture != COGL_INVALID_HANDLE)
cogl_handle_unref (priv->texture);
if (priv->texture != NULL)
cogl_object_unref (priv->texture);
priv->texture = cogl_tex;
if (priv->material != COGL_INVALID_HANDLE)
cogl_material_set_layer (priv->material, 0, cogl_tex);
if (priv->pipeline != NULL)
cogl_pipeline_set_layer_texture (priv->pipeline, 0, COGL_TEXTURE (cogl_tex));
if (priv->material_unshaped != COGL_INVALID_HANDLE)
cogl_material_set_layer (priv->material_unshaped, 0, cogl_tex);
if (priv->pipeline_unshaped != NULL)
cogl_pipeline_set_layer_texture (priv->pipeline_unshaped, 0, COGL_TEXTURE (cogl_tex));
if (cogl_tex != COGL_INVALID_HANDLE)
if (cogl_tex != NULL)
{
width = cogl_texture_get_width (cogl_tex);
height = cogl_texture_get_height (cogl_tex);
width = cogl_texture_get_width (COGL_TEXTURE (cogl_tex));
height = cogl_texture_get_height (COGL_TEXTURE (cogl_tex));
if (width != priv->tex_width ||
height != priv->tex_height)
@ -489,7 +477,7 @@ set_cogl_texture (MetaShapedTexture *stex,
}
else
{
/* size changed to 0 going to an invalid handle */
/* size changed to 0 going to an inavlid texture */
priv->tex_width = 0;
priv->tex_height = 0;
clutter_actor_queue_relayout (CLUTTER_ACTOR (stex));
@ -525,10 +513,11 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
set_cogl_texture (stex, cogl_texture_pixmap_x11_new (ctx, pixmap, FALSE, NULL));
}
else
set_cogl_texture (stex, COGL_INVALID_HANDLE);
set_cogl_texture (stex, NULL);
if (priv->create_mipmaps)
meta_texture_tower_set_base_texture (priv->paint_tower, priv->texture);
meta_texture_tower_set_base_texture (priv->paint_tower,
COGL_TEXTURE (priv->texture));
}
/**
@ -537,11 +526,11 @@ meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
*
* Returns: (transfer none): the unshaped texture
*/
CoglHandle
CoglTexture *
meta_shaped_texture_get_texture (MetaShapedTexture *stex)
{
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), COGL_INVALID_HANDLE);
return stex->priv->texture;
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL);
return COGL_TEXTURE (stex->priv->texture);
}
/**
@ -598,13 +587,13 @@ cairo_surface_t *
meta_shaped_texture_get_image (MetaShapedTexture *stex,
cairo_rectangle_int_t *clip)
{
CoglHandle texture, mask_texture;
CoglTexture *texture, *mask_texture;
cairo_rectangle_int_t texture_rect = { 0, 0, 0, 0 };
cairo_surface_t *surface;
g_return_val_if_fail (META_IS_SHAPED_TEXTURE (stex), NULL);
texture = stex->priv->texture;
texture = COGL_TEXTURE (stex->priv->texture);
if (texture == NULL)
return NULL;
@ -641,7 +630,7 @@ meta_shaped_texture_get_image (MetaShapedTexture *stex,
cogl_object_unref (texture);
mask_texture = stex->priv->mask_texture;
if (mask_texture != COGL_INVALID_HANDLE)
if (mask_texture != NULL)
{
cairo_t *cr;
cairo_surface_t *mask_surface;

View File

@ -25,9 +25,6 @@
#include <config.h>
#define CLUTTER_ENABLE_EXPERIMENTAL_API
#define COGL_ENABLE_EXPERIMENTAL_API
#include <clutter/clutter.h>
#include "meta-texture-rectangle.h"

View File

@ -59,8 +59,8 @@ typedef struct
struct _MetaTextureTower
{
int n_levels;
CoglHandle textures[MAX_TEXTURE_LEVELS];
CoglHandle fbos[MAX_TEXTURE_LEVELS];
CoglTexture *textures[MAX_TEXTURE_LEVELS];
CoglOffscreen *fbos[MAX_TEXTURE_LEVELS];
Box invalid[MAX_TEXTURE_LEVELS];
};
@ -93,7 +93,7 @@ meta_texture_tower_free (MetaTextureTower *tower)
{
g_return_if_fail (tower != NULL);
meta_texture_tower_set_base_texture (tower, COGL_INVALID_HANDLE);
meta_texture_tower_set_base_texture (tower, NULL);
g_slice_free (MetaTextureTower, tower);
}
@ -110,7 +110,7 @@ meta_texture_tower_free (MetaTextureTower *tower)
*/
void
meta_texture_tower_set_base_texture (MetaTextureTower *tower,
CoglHandle texture)
CoglTexture *texture)
{
int i;
@ -119,33 +119,33 @@ meta_texture_tower_set_base_texture (MetaTextureTower *tower,
if (texture == tower->textures[0])
return;
if (tower->textures[0] != COGL_INVALID_HANDLE)
if (tower->textures[0] != NULL)
{
for (i = 1; i < tower->n_levels; i++)
{
if (tower->textures[i] != COGL_INVALID_HANDLE)
if (tower->textures[i] != NULL)
{
cogl_handle_unref (tower->textures[i]);
tower->textures[i] = COGL_INVALID_HANDLE;
cogl_object_unref (tower->textures[i]);
tower->textures[i] = NULL;
}
if (tower->fbos[i] != COGL_INVALID_HANDLE)
if (tower->fbos[i] != NULL)
{
cogl_handle_unref (tower->fbos[i]);
tower->fbos[i] = COGL_INVALID_HANDLE;
cogl_object_unref (tower->fbos[i]);
tower->fbos[i] = NULL;
}
}
cogl_handle_unref (tower->textures[0]);
cogl_object_unref (tower->textures[0]);
}
tower->textures[0] = texture;
if (tower->textures[0] != COGL_INVALID_HANDLE)
if (tower->textures[0] != NULL)
{
int width, height;
cogl_handle_ref (tower->textures[0]);
cogl_object_ref (tower->textures[0]);
width = cogl_texture_get_width (tower->textures[0]);
height = cogl_texture_get_height (tower->textures[0]);
@ -186,7 +186,7 @@ meta_texture_tower_update_area (MetaTextureTower *tower,
g_return_if_fail (tower != NULL);
if (tower->textures[0] == COGL_INVALID_HANDLE)
if (tower->textures[0] == NULL)
return;
texture_width = cogl_texture_get_width (tower->textures[0]);
@ -387,22 +387,22 @@ static gboolean
texture_tower_revalidate_fbo (MetaTextureTower *tower,
int level)
{
CoglHandle source_texture = tower->textures[level - 1];
CoglTexture *source_texture = tower->textures[level - 1];
int source_texture_width = cogl_texture_get_width (source_texture);
int source_texture_height = cogl_texture_get_height (source_texture);
CoglHandle dest_texture = tower->textures[level];
CoglTexture *dest_texture = tower->textures[level];
int dest_texture_width = cogl_texture_get_width (dest_texture);
int dest_texture_height = cogl_texture_get_height (dest_texture);
Box *invalid = &tower->invalid[level];
CoglMatrix modelview;
if (tower->fbos[level] == COGL_INVALID_HANDLE)
if (tower->fbos[level] == NULL)
tower->fbos[level] = cogl_offscreen_new_to_texture (dest_texture);
if (tower->fbos[level] == COGL_INVALID_HANDLE)
if (tower->fbos[level] == NULL)
return FALSE;
cogl_push_framebuffer (tower->fbos[level]);
cogl_push_framebuffer (COGL_FRAMEBUFFER (tower->fbos[level]));
cogl_ortho (0, dest_texture_width, dest_texture_height, 0, -1., 1.);
@ -460,12 +460,12 @@ static void
texture_tower_revalidate_client (MetaTextureTower *tower,
int level)
{
CoglHandle source_texture = tower->textures[level - 1];
CoglTexture *source_texture = tower->textures[level - 1];
int source_texture_width = cogl_texture_get_width (source_texture);
int source_texture_height = cogl_texture_get_height (source_texture);
guint source_rowstride;
guchar *source_data;
CoglHandle dest_texture = tower->textures[level];
CoglTexture *dest_texture = tower->textures[level];
int dest_texture_width = cogl_texture_get_width (dest_texture);
int dest_texture_height = cogl_texture_get_height (dest_texture);
int dest_x = tower->invalid[level].x1;
@ -575,28 +575,28 @@ texture_tower_revalidate (MetaTextureTower *tower,
* rectangle (0, 0, 200, 200).
*
* Return value: the COGL texture handle to use for painting, or
* %COGL_INVALID_HANDLE if no base texture has yet been set.
* %NULL if no base texture has yet been set.
*/
CoglHandle
CoglTexture *
meta_texture_tower_get_paint_texture (MetaTextureTower *tower)
{
int texture_width, texture_height;
int level;
g_return_val_if_fail (tower != NULL, COGL_INVALID_HANDLE);
g_return_val_if_fail (tower != NULL, NULL);
if (tower->textures[0] == COGL_INVALID_HANDLE)
return COGL_INVALID_HANDLE;
if (tower->textures[0] == NULL)
return NULL;
texture_width = cogl_texture_get_width (tower->textures[0]);
texture_height = cogl_texture_get_height (tower->textures[0]);
level = get_paint_level(texture_width, texture_height);
if (level < 0) /* singular paint matrix, scaled to nothing */
return COGL_INVALID_HANDLE;
return NULL;
level = MIN (level, tower->n_levels - 1);
if (tower->textures[level] == COGL_INVALID_HANDLE ||
if (tower->textures[level] == NULL ||
(tower->invalid[level].x2 != tower->invalid[level].x1 &&
tower->invalid[level].y2 != tower->invalid[level].y1))
{
@ -608,7 +608,7 @@ meta_texture_tower_get_paint_texture (MetaTextureTower *tower)
texture_width = MAX (1, texture_width / 2);
texture_height = MAX (1, texture_height / 2);
if (tower->textures[i] == COGL_INVALID_HANDLE)
if (tower->textures[i] == NULL)
texture_tower_create_texture (tower, i, texture_width, texture_height);
}

View File

@ -56,13 +56,13 @@ typedef struct _MetaTextureTower MetaTextureTower;
MetaTextureTower *meta_texture_tower_new (void);
void meta_texture_tower_free (MetaTextureTower *tower);
void meta_texture_tower_set_base_texture (MetaTextureTower *tower,
CoglHandle texture);
CoglTexture *texture);
void meta_texture_tower_update_area (MetaTextureTower *tower,
int x,
int y,
int width,
int height);
CoglHandle meta_texture_tower_get_paint_texture (MetaTextureTower *tower);
CoglTexture *meta_texture_tower_get_paint_texture (MetaTextureTower *tower);
G_BEGIN_DECLS

View File

@ -28,6 +28,10 @@ void meta_window_actor_process_damage (MetaWindowActor *self,
XDamageNotifyEvent *event);
void meta_window_actor_pre_paint (MetaWindowActor *self);
void meta_window_actor_post_paint (MetaWindowActor *self);
void meta_window_actor_frame_complete (MetaWindowActor *self,
CoglFrameInfo *frame_info,
gint64 presentation_time);
void meta_window_actor_invalidate_shadow (MetaWindowActor *self);
@ -39,12 +43,17 @@ void meta_window_actor_get_shape_bounds (MetaWindowActor *self,
cairo_rectangle_int_t *bounds);
gboolean meta_window_actor_effect_in_progress (MetaWindowActor *self);
void meta_window_actor_sync_actor_position (MetaWindowActor *self);
void meta_window_actor_sync_actor_geometry (MetaWindowActor *self,
gboolean did_placement);
void meta_window_actor_sync_visibility (MetaWindowActor *self);
void meta_window_actor_update_shape (MetaWindowActor *self);
void meta_window_actor_update_opacity (MetaWindowActor *self);
void meta_window_actor_mapped (MetaWindowActor *self);
void meta_window_actor_unmapped (MetaWindowActor *self);
void meta_window_actor_set_updates_frozen (MetaWindowActor *self,
gboolean updates_frozen);
void meta_window_actor_queue_frame_drawn (MetaWindowActor *self,
gboolean no_delay_frame);
cairo_region_t *meta_window_actor_get_obscured_region (MetaWindowActor *self);

File diff suppressed because it is too large Load Diff

View File

@ -7,122 +7,127 @@
#include <gdk/gdk.h> /* for gdk_rectangle_intersect() */
#include "clutter-utils.h"
#include "compositor-private.h"
#include "meta-window-actor-private.h"
#include "meta-window-group.h"
#include "meta-background-actor-private.h"
#include "meta-background-group-private.h"
struct _MetaWindowGroupClass
{
ClutterGroupClass parent_class;
ClutterActorClass parent_class;
};
struct _MetaWindowGroup
{
ClutterGroup parent;
ClutterActor parent;
MetaScreen *screen;
};
G_DEFINE_TYPE (MetaWindowGroup, meta_window_group, CLUTTER_TYPE_GROUP);
G_DEFINE_TYPE (MetaWindowGroup, meta_window_group, CLUTTER_TYPE_ACTOR);
/* We want to find out if the window is "close enough" to
* 1:1 transform. We do that by converting the transformed coordinates
* to 24.8 fixed-point before checking if they look right.
/* Help macros to scale from OpenGL <-1,1> coordinates system to
* window coordinates ranging [0,window-size]. Borrowed from clutter-utils.c
*/
static inline int
round_to_fixed (float x)
{
return roundf (x * 256);
}
#define MTX_GL_SCALE_X(x,w,v1,v2) ((((((x) / (w)) + 1.0f) / 2.0f) * (v1)) + (v2))
#define MTX_GL_SCALE_Y(y,w,v1,v2) ((v1) - (((((y) / (w)) + 1.0f) / 2.0f) * (v1)) + (v2))
/* We can only (easily) apply our logic for figuring out what a window
* obscures if is not transformed. This function does that check and
* as a side effect gets the position of the upper-left corner of the
* actors.
*
* (We actually could handle scaled and non-integrally positioned actors
* too as long as they weren't shaped - no filtering is done at the
* edges so a rectangle stays a rectangle. But the gain from that is
* small, especally since most of our windows are shaped. The simple
* case we handle here is the case that matters when the user is just
* using the desktop normally.)
*
* If we assume that the window group is untransformed (it better not
* be!) then we could also make this determination by checking directly
* if the actor itself is rotated, scaled, or at a non-integral position.
* However, the criterion for "close enough" in that case get trickier,
* since, for example, the allowed rotation depends on the size of
* actor. The approach we take here is to just require everything
* to be within 1/256th of a pixel.
/* Check if we're painting the MetaWindowGroup "untransformed". This can
* differ from the result of actor_is_untransformed(window_group) if we're
* inside a clone paint. The integer translation, if any, is returned.
*/
static gboolean
actor_is_untransformed (ClutterActor *actor,
int *x_origin,
int *y_origin)
painting_untransformed (MetaWindowGroup *window_group,
int *x_origin,
int *y_origin)
{
gfloat widthf, heightf;
CoglMatrix modelview, projection, modelview_projection;
ClutterVertex vertices[4];
int width, height;
ClutterVertex verts[4];
int v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y;
int x, y;
float viewport[4];
int i;
clutter_actor_get_size (actor, &widthf, &heightf);
width = round_to_fixed (widthf); height = round_to_fixed (heightf);
cogl_get_modelview_matrix (&modelview);
cogl_get_projection_matrix (&projection);
clutter_actor_get_abs_allocation_vertices (actor, verts);
v0x = round_to_fixed (verts[0].x); v0y = round_to_fixed (verts[0].y);
v1x = round_to_fixed (verts[1].x); v1y = round_to_fixed (verts[1].y);
v2x = round_to_fixed (verts[2].x); v2y = round_to_fixed (verts[2].y);
v3x = round_to_fixed (verts[3].x); v3y = round_to_fixed (verts[3].y);
cogl_matrix_multiply (&modelview_projection,
&projection,
&modelview);
/* Using shifting for converting fixed => int, gets things right for
* negative values. / 256. wouldn't do the same
*/
x = v0x >> 8;
y = v0y >> 8;
meta_screen_get_size (window_group->screen, &width, &height);
/* At integral coordinates? */
if (x * 256 != v0x || y * 256 != v0y)
return FALSE;
vertices[0].x = 0;
vertices[0].y = 0;
vertices[0].z = 0;
vertices[1].x = width;
vertices[1].y = 0;
vertices[1].z = 0;
vertices[2].x = 0;
vertices[2].y = height;
vertices[2].z = 0;
vertices[3].x = width;
vertices[3].y = height;
vertices[3].z = 0;
/* Not scaled? */
if (v1x - v0x != width || v2y - v0y != height)
return FALSE;
cogl_get_viewport (viewport);
/* Not rotated/skewed? */
if (v0x != v2x || v0y != v1y ||
v3x != v1x || v3y != v2y)
return FALSE;
for (i = 0; i < 4; i++)
{
float w = 1;
cogl_matrix_transform_point (&modelview_projection, &vertices[i].x, &vertices[i].y, &vertices[i].z, &w);
vertices[i].x = MTX_GL_SCALE_X (vertices[i].x, w,
viewport[2], viewport[0]);
vertices[i].y = MTX_GL_SCALE_Y (vertices[i].y, w,
viewport[3], viewport[1]);
}
*x_origin = x;
*y_origin = y;
return TRUE;
return meta_actor_vertices_are_untransformed (vertices, width, height, x_origin, y_origin);
}
static void
meta_window_group_paint (ClutterActor *actor)
{
cairo_region_t *visible_region;
cairo_region_t *unredirected_window_region = NULL;
ClutterActor *stage;
cairo_rectangle_int_t visible_rect, unredirected_rect;
cairo_rectangle_int_t visible_rect;
GList *children, *l;
int paint_x_origin, paint_y_origin;
int actor_x_origin, actor_y_origin;
int paint_x_offset, paint_y_offset;
MetaWindowGroup *window_group = META_WINDOW_GROUP (actor);
MetaCompScreen *info = meta_screen_get_compositor_data (window_group->screen);
if (info->unredirected_window != NULL)
/* Normally we expect an actor to be drawn at it's position on the screen.
* However, if we're inside the paint of a ClutterClone, that won't be the
* case and we need to compensate. We look at the position of the window
* group under the current model-view matrix and the position of the actor.
* If they are both simply integer translations, then we can compensate
* easily, otherwise we give up.
*
* Possible cleanup: work entirely in paint space - we can compute the
* combination of the model-view matrix with the local matrix for each child
* actor and get a total transformation for that actor for how we are
* painting currently, and never worry about how actors are positioned
* on the stage.
*/
if (!painting_untransformed (window_group, &paint_x_origin, &paint_y_origin) ||
!meta_actor_is_untransformed (actor, &actor_x_origin, &actor_y_origin))
{
meta_window_actor_get_shape_bounds (META_WINDOW_ACTOR (info->unredirected_window), &unredirected_rect);
unredirected_window_region = cairo_region_create_rectangle (&unredirected_rect);
CLUTTER_ACTOR_CLASS (meta_window_group_parent_class)->paint (actor);
return;
}
paint_x_offset = paint_x_origin - actor_x_origin;
paint_y_offset = paint_y_origin - actor_y_origin;
/* We walk the list from top to bottom (opposite of painting order),
* and subtract the opaque area of each window out of the visible
* region that we pass to the windows below.
*/
children = clutter_container_get_children (CLUTTER_CONTAINER (actor));
children = clutter_actor_get_children (actor);
children = g_list_reverse (children);
/* Get the clipped redraw bounds from Clutter so that we can avoid
@ -137,14 +142,23 @@ meta_window_group_paint (ClutterActor *actor)
visible_region = cairo_region_create_rectangle (&visible_rect);
if (unredirected_window_region)
cairo_region_subtract (visible_region, unredirected_window_region);
if (info->unredirected_window != NULL)
{
cairo_rectangle_int_t unredirected_rect;
MetaWindow *window = meta_window_actor_get_meta_window (info->unredirected_window);
meta_window_get_outer_rect (window, (MetaRectangle *)&unredirected_rect);
cairo_region_subtract_rectangle (visible_region, &unredirected_rect);
}
for (l = children; l; l = l->next)
{
if (!CLUTTER_ACTOR_IS_VISIBLE (l->data))
continue;
if (l->data == info->unredirected_window)
continue;
/* If an actor has effects applied, then that can change the area
* it paints and the opacity, so we no longer can figure out what
* portion of the actor is obscured and what portion of the screen
@ -169,9 +183,12 @@ meta_window_group_paint (ClutterActor *actor)
MetaWindowActor *window_actor = l->data;
int x, y;
if (!actor_is_untransformed (CLUTTER_ACTOR (window_actor), &x, &y))
if (!meta_actor_is_untransformed (CLUTTER_ACTOR (window_actor), &x, &y))
continue;
x += paint_x_offset;
y += paint_y_offset;
/* Temporarily move to the coordinate system of the actor */
cairo_region_translate (visible_region, - x, - y);
@ -187,18 +204,30 @@ meta_window_group_paint (ClutterActor *actor)
meta_window_actor_set_visible_region_beneath (window_actor, visible_region);
cairo_region_translate (visible_region, x, y);
}
else if (META_IS_BACKGROUND_ACTOR (l->data))
else if (META_IS_BACKGROUND_ACTOR (l->data) ||
META_IS_BACKGROUND_GROUP (l->data))
{
MetaBackgroundActor *background_actor = l->data;
meta_background_actor_set_visible_region (background_actor, visible_region);
ClutterActor *background_actor = l->data;
int x, y;
if (!meta_actor_is_untransformed (CLUTTER_ACTOR (background_actor), &x, &y))
continue;
x += paint_x_offset;
y += paint_y_offset;
cairo_region_translate (visible_region, - x, - y);
if (META_IS_BACKGROUND_GROUP (background_actor))
meta_background_group_set_visible_region (META_BACKGROUND_GROUP (background_actor), visible_region);
else
meta_background_actor_set_visible_region (META_BACKGROUND_ACTOR (background_actor), visible_region);
cairo_region_translate (visible_region, x, y);
}
}
cairo_region_destroy (visible_region);
if (unredirected_window_region)
cairo_region_destroy (unredirected_window_region);
CLUTTER_ACTOR_CLASS (meta_window_group_parent_class)->paint (actor);
/* Now that we are done painting, unset the visible regions (they will
@ -221,12 +250,20 @@ meta_window_group_paint (ClutterActor *actor)
g_list_free (children);
}
static gboolean
meta_window_group_get_paint_volume (ClutterActor *actor,
ClutterPaintVolume *volume)
{
return clutter_paint_volume_set_from_allocation (volume, actor);
}
static void
meta_window_group_class_init (MetaWindowGroupClass *klass)
{
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
actor_class->paint = meta_window_group_paint;
actor_class->get_paint_volume = meta_window_group_get_paint_volume;
}
static void

View File

@ -10,13 +10,15 @@
/**
* MetaWindowGroup:
*
* This class is a subclass of ClutterGroup with special handling for
* MetaWindowActor when painting the group. When we are painting a stack
* of 5-10 maximized windows, the standard bottom-to-top method of
* drawing every actor results in a tremendous amount of overdraw
* and can easily max out the available memory bandwidth on a low-end
* graphics chipset. It's even worse if window textures are being accessed
* over the AGP bus.
* This class is a subclass of ClutterActor with special handling for
* MetaWindowActor/MetaBackgroundActor/MetaBackgroundGroup when painting
* children.
*
* When we are painting a stack of 5-10 maximized windows, the
* standard bottom-to-top method of drawing every actor results in a
* tremendous amount of overdraw and can easily max out the available
* memory bandwidth on a low-end graphics chipset. It's even worse if
* window textures are being accessed over the AGP bus.
*
* The basic technique applied here is to do a pre-pass before painting
* where we walk window from top to bottom and compute the visible area
@ -49,4 +51,7 @@ GType meta_window_group_get_type (void);
ClutterActor *meta_window_group_new (MetaScreen *screen);
gboolean meta_window_group_actor_is_untransformed (ClutterActor *actor,
int *x_origin,
int *y_origin);
#endif /* META_WINDOW_GROUP_H */

Some files were not shown because too many files have changed in this diff Show More