Compare commits

..

114 Commits

Author SHA1 Message Date
8797e5951c Bump version to 3.22.0
Update NEWS.
2016-09-19 23:15:04 +02:00
a4e69f338d clutter: Reuse GTK+'s RTL/LTR handling
Commit a4fb7ef5a3 dropped translations of our internal cogl/clutter
forks, which broke the local-based text direction support. Instead
of bringing back translations just for this purpose, we can re-use
GTK's translations which use the same technique.

https://bugzilla.gnome.org/show_bug.cgi?id=771549
2016-09-19 23:10:57 +02:00
d045462860 Updated Danish translation 2016-09-19 22:59:52 +02:00
3137ddb1a1 backends: Handle tablet settings lookups with no backing libwacom info
Those will be unseen by g-s-d/g-c-c, so no settings will be written on
disk for those. Still, look up an ID correctly in this case instead of
crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=771628
2016-09-19 22:55:30 +02:00
5fbb479301 clutter/stage: Fix framebuffer capture origin offset
Commit f36fa53b0e had the offset math
wrong and the reviewer didn't notice it.

https://bugzilla.gnome.org/show_bug.cgi?id=771502
2016-09-19 22:28:05 +02:00
a4c10b6683 Update British English translation 2016-09-18 12:14:41 +02:00
9e5491439e window-actor: Make sync_visibility() public
When we mess with a window actor's visibility from the shell side
(yes, I know :-( ), we should at least restore the proper visibility
when we're done with it ...

https://bugzilla.gnome.org/show_bug.cgi?id=771536
2016-09-18 11:01:15 +02:00
417757eab8 wayland: Handle parent-less popup commits
A xdg_popup, when active, always has a parent surface. However, a popup
created may immediately become invalid, for example when it is not
granted a grab, in which case it won't be assigned a parent since it
will never be mapped.

This case needs to be handled elsewhere, as one cannot assume a
MetaWaylandXdgPoup that is processed (via wl_surface commit handling
etc) will have a parent_surface.

https://bugzilla.gnome.org/show_bug.cgi?id=771495
2016-09-18 10:58:38 +08:00
32b87e7bea Updated Greek translation 2016-09-16 11:14:12 +00:00
ed6fda84e1 Updated Russian translation 2016-09-16 09:24:23 +00:00
b1d95438d6 wayland/xwayland: Gracefully handle Xdnd start drag focus race
If a X11 client would initiate a Xdnd session after it had lost pointer
focus (for example when the Xdnd event starting the drag happens after
the implicit pointer grab is already broken due to the button being
released), just end the drag operation instead of dereferencing the
non-existing focus surface.

Also avoid using a native Wayland surface as a drag origin, as that can
never happen, but allow any arbitrary Xwayland client, since there is
no way to find out the actual drag origin.

https://bugzilla.gnome.org/show_bug.cgi?id=770940
2016-09-15 10:21:48 +08:00
60bc6798f4 wayland/data-device: Don't disconnect valid dnd client
We cannot check 'has-target' or 'has-seat' when verifying a
wl_data_offer.finish request is valid or not, since the source may have
effected 'has-target' or whether theh source has a seat or not when the
finish request was already on the wire.

Instead of checking against the source state, keep track whether the
required operations has been done on the offer in question (i.e.
whether an action has been sent, or a mime type been accepted).

This fixes incorrectly raised error when dragging from gtk+'s testdnd
via Xwayland onto gtk+'s testdnd using Wayland.

https://bugzilla.gnome.org/show_bug.cgi?id=770937
2016-09-15 10:19:08 +08:00
342532a98d ClutterStageCogl: Don't get buffer damage dirty pixel when not supported
Now with the existance of offscreen view framebuffers the buffer age
damage regions are only valid if the view in question doesn't doesn't
have an intermediate offscreen. So, for views that doesn't have buffer
age, return the dirty pixel (0,0).

https://bugzilla.gnome.org/show_bug.cgi?id=770672
2016-09-15 10:14:20 +08:00
219d2304e0 clutter: Let the stage window translate dirty pixel according to view
Otherwise if buffer age is not supported the dirty pixel would be
shifted potentially in unpaintable position.

https://bugzilla.gnome.org/show_bug.cgi?id=770672
2016-09-15 10:14:20 +08:00
fb6b0de48b clutter: Use non-deprecated pixel reading function when picking
This wont fix anything, it just one small step away from using
deprecated cogl functions.

https://bugzilla.gnome.org/show_bug.cgi?id=770672
2016-09-15 10:14:20 +08:00
22173fde15 MetaWaylandOutput: Cleanup type declaration
Use G_DECLARE_FINAL_TYPE instead of the set of macros.

https://bugzilla.gnome.org/show_bug.cgi?id=770672
2016-09-15 10:14:20 +08:00
4c8dd08c77 MetaWaylandOutput: Pretend outputs are always untransformed
Since wl_surface.set_buffer_transform() is not supported, until it is
added, pretend outputs are never transformed, so that clients are less
likely to attach pre-transformed buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=770672
2016-09-15 10:14:20 +08:00
b78b8c9578 ClutterStageView: Always blit full texture on full onscreen framebuffer
When blitting an offscreen onto an onscreen, the whole offscreen should
always be drawn on the whole onscreen. Thus, don't try to convert
between coordinate spaces, just draw the whole offscreen on the whole
onscreen.

https://bugzilla.gnome.org/show_bug.cgi?id=770672
2016-09-15 10:14:20 +08:00
e1516e4f31 wayland/pointer-constraints: Maybe remove when pointer focus changes
Also maybe remove a constraint when the pointer focus changes. This is
needed because when Xwayland has a constraint focus may change, the
constraint object will not receive a 'appears-focused' event on its
window since it never changed.

This happens for example when an override-redirect window (which never
appears focused) holds the constraint, and alt-tab happens. In this case
focus changes, but from the constraint's point of view, none of the
windows it knows about changed its focus appearance.

https://bugzilla.gnome.org/show_bug.cgi?id=771345
2016-09-15 10:12:25 +08:00
32276cf418 wayland/pointer-constraints: Move window-unmanaging check
We should never enable a pointer constraint for an unmanaging window.

https://bugzilla.gnome.org/show_bug.cgi?id=771345
2016-09-15 10:12:25 +08:00
98f0578f9d MetaWaylandPointer: Initialize default grab on init
Instead of initializing the default grab when the device class is
enabled, initialize it on object initialization. This way other device
classes can still grab the pointer, as if there was one. This may be
useful for example if a touch grab is active and a mouse is connected.

This also makes it possible for popup grabs, which currently use a
pointer grab for controlling, to be triggered by touch devices, while
still holding an active pointer grab.

https://bugzilla.gnome.org/show_bug.cgi?id=771305
2016-09-15 09:55:34 +08:00
87f82d9fc0 wayland: Move device seat association to MetaWaylandInputDevice
Make the device <-> seat association permanent, and move it into
MetaWaylandInputDevice. A device will never be disassociated with a
seat, so there is no point in unsetting it.

https://bugzilla.gnome.org/show_bug.cgi?id=771305
2016-09-15 09:55:34 +08:00
a6646b32d0 wayland: Add common object for device classes
Add a new object class, MetaWaylandInputDevice, and make all device
classes (pointer, keyboard, touch) inherit it. In the future common
functionality may be placed there.

https://bugzilla.gnome.org/show_bug.cgi?id=771305
2016-09-15 09:54:55 +08:00
d2cdbd433d wayland/seat: Add API to check whether a seat has a device class
Meant to replace explicitly checking whether a
MetaWaylandPointer/MetaWaylandKeyboard/MetaWaylandTouch has a seat or
not to determine whether they are supposed to be active or not.

https://bugzilla.gnome.org/show_bug.cgi?id=771305
2016-09-15 09:53:43 +08:00
5d3cacf8d2 Updated French translation 2016-09-13 10:16:11 +00:00
a9b78cea6b Updated Danish translation 2016-09-13 02:00:08 +02:00
bb25aa5e6b Bump version to 3.21.92
Update NEWS.
2016-09-12 23:56:38 +02:00
b52f304f9d backends: Use g-s-d settings for tablet configuration
This is needed to make the wayland backend react to configuration
changes until gnome-control-center is updated to use the
gsettings-desktop-schemas settings.

https://bugzilla.gnome.org/show_bug.cgi?id=771315
2016-09-12 21:51:00 +02:00
9a076076c0 monitor-manager-kms: Add common modes
Some output devices only advertise their preferred mode even though
they're able to display others too. This means we can include some
common modes in each output's supported list.

This is particularly important for mirroring, since we can only mirror
outputs which are using the same resolution.

https://bugzilla.gnome.org/show_bug.cgi?id=744544
2016-09-12 20:02:03 +02:00
5cae628f37 Add more options to XGETTEXT_OPTIONS in po/Makevars 2016-09-12 19:56:30 +02:00
0f0b25767d backends: Add comment to translators in "Switch monitor" string
Without context it's not clear to what it actually refers to. Add some
context.

https://bugzilla.gnome.org/show_bug.cgi?id=770929
2016-09-12 19:45:09 +02:00
878fb6720a Updated Serbian translation 2016-09-11 09:10:10 +02:00
f4c2da7499 Updated Galician translations 2016-09-11 00:49:16 +02:00
0559308812 Updated Korean translation 2016-09-10 18:16:54 +00:00
30d2a94cb3 Updated Polish translation 2016-09-09 23:58:50 +02:00
2681647089 wayland: Fix type error
Until the setting is moved to gnome-desktop-schemas, we still use
our own enum.
2016-09-09 20:28:00 +02:00
4c106a9c9b wayland: save/restore numlock state
Save the state on NumLock so that is can be (optionally) restored on
next login.

bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=757943
2016-09-09 19:07:10 +02:00
a884e4540c Updated Portuguese translation 2016-09-09 17:01:34 +00:00
f9fff98909 Updated Kazakh translation 2016-09-09 16:14:25 +00:00
abee020f71 wayland/pointer-constraints: Maybe constrain on pointer focus change
Since Xwayland surface constraints might need to enable not only
because the constrained window appears focused, add a pointer focus
listener and try constrain whenever the pointer focus changes. It's
still required that a Xwayland window is focused to activate.

https://bugzilla.gnome.org/show_bug.cgi?id=771050
2016-09-09 10:09:46 +08:00
33ba06504b MetaWaylandPointerConstraints: Relax enable requirements for Xwayland
Xwayland surfaces are special, because there is no reliable way to
associate a window with its corresponding "application window" (the one
which was given focus). Many games that require pointer warping and
confining pointer grabs may for example create override redirect windows
and make that window receive input even though it will never be the
focus window.

Therefore, the requirements for enabling a constraint for a wl_surface
from Xwayland needs to be relaxed in order. This commit changes
Xwayland wl_surfaces to not require being focused to be enabled; it'll
be enabled as long as any X11 window is the one with focus.

https://bugzilla.gnome.org/show_bug.cgi?id=771050
2016-09-09 10:09:46 +08:00
10c7035a71 MetaWaylandPointerConstraints: Require pointer focus to enable
Require pointer focus to enable, otherwise we can't guarantee it has
entered the surface, as the focus may have been given to a subsurface,
override-redirect or other sub window covering the surface that was
requested to have o pointer constraint.

https://bugzilla.gnome.org/show_bug.cgi?id=771050
2016-09-09 10:09:46 +08:00
e6a20a025d MetaWaylandPointer: Add 'focus-surface-changed' signal
Add a signal that is emitted when the pointer focus surface of the
pointer device changes. This will later be used by the pointer
constraints to maybe enable pointer constraints when a surface receives
pointer focus.

https://bugzilla.gnome.org/show_bug.cgi?id=771050
2016-09-09 10:09:46 +08:00
262b52da50 MetaWaylandPointerConstraints: Handle delayed window surface association
For Xwayland, a newly created wl_surface and X11 Window pair may not be
immediately associated, but Xwayland may still request a pointer
constraint on some of its wl_surface's. Handle the situation by
postponing maybe enabling the constraint until the window and surface
has been associated.

https://bugzilla.gnome.org/show_bug.cgi?id=771050
2016-09-09 10:09:46 +08:00
fccdd00f74 MetaWaylandSurface: Move destroy signal even earlier
Move the MetaWaylandSurface::destroy signal before starting the actual
destruction, in wl_surface_destructor, so that all fields (e.g. surface
role) are intact when the listeners are invoked.

https://bugzilla.gnome.org/show_bug.cgi?id=771050
2016-09-09 10:09:46 +08:00
3a41b0f221 xwayland: Add 'window-associated' signal to role
When the Xwayland wl_surface is created, it may not yet be possible to
associate it with the corresponding X11 Window. Add a signal to the
Xwayland role to communicate with any interested parties.

https://bugzilla.gnome.org/show_bug.cgi?id=771050
2016-09-09 10:09:46 +08:00
e5a359a032 wayland: Make seat devices GObjects
This will make it possible to add signals and other GObject features.

https://bugzilla.gnome.org/show_bug.cgi?id=771050
2016-09-09 10:09:46 +08:00
d893adb290 clutter: Compress instead of discard motion events
Clutter discards any motion event if next event happens to also be a
motion event. This is problematic when the motion event carries
relative motion deltas, since the information about them is completely
lost.

Until we have moved away made the stage stop discarding motion events,
lets work around the issue by compressing them, effectively adding
multiple relative motion deltas together, would one be discarded.

https://bugzilla.gnome.org/show_bug.cgi?id=771049
2016-09-09 10:03:34 +08:00
0c53677992 wayland/pointer-constraints: Send wl_pointer.frame when locked
We were not sending wl_pointer.frame after
wp_relative_pointer.relative_motion. Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=770994
2016-09-09 10:03:16 +08:00
640178a94f wayland/cursor-role: Handle premature wl_buffer destruction
If a client would attach a buffer to a surface, commit, destroy the
buffer and then later set the surface as a cursor, there will be no
wl_buffer available to be used by the cursor role. Instead of
dereferencing the non-existing wl_buffer resource, handle this situation
by logging a warning and treating a prematurely destroyd wl_buffer as if
no buffer had been attached.

https://bugzilla.gnome.org/show_bug.cgi?id=770992
2016-09-09 10:02:41 +08:00
2e7f11305c MetaWindowActor: Sync thawed state when surface actor is set
Not having a surface actor would cause the window actor state to be
considered frozen, thus causing various state (such as geometry, shape
etc) synchronization to be delayed until thawed. If the window actor
was "thawed" due to having a surface set, not all state would be
properly synchronized, causing the thawed window actor to be displayed
incorrectly.

This patch fixes this by putting state synchronization after thawing in
a common function, calling it both from frozen count decreasing and
surface setting.

This fixes for example misplaced menus in Steam.

https://bugzilla.gnome.org/show_bug.cgi?id=770991
2016-09-09 10:00:24 +08:00
c1b5b76bf4 Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2016-09-09 08:16:01 +07:00
d164ce15f2 Updated Galician translations 2016-09-08 23:37:21 +02:00
c9941f2d30 Update Latvian translation 2016-09-08 21:39:06 +03:00
330c5ffef9 Update Bulgarian translation 2016-09-08 06:33:46 +03:00
f83f5019cf Updated German translation 2016-09-07 16:56:36 +00:00
7b55592cce Updated Brazilian Portuguese translation 2016-09-07 11:18:00 +00:00
99aaec6ce4 Updated Swedish translation 2016-09-07 09:55:07 +00:00
880c9e379f Updated Portuguese translation 2016-09-07 05:38:36 +00:00
99d89299fd Updated Swedish translation 2016-09-06 19:25:40 +00:00
f36fa53b0e clutter/stage: Offset framebuffer capture origin by view layout
The rectangle passed to capture_view() is in stage coordinate space;
thus, to translate to framebuffer coordinate space, the origin need to
be translated by the view layout position.

This fixes capturing views not at position (0, 0).

https://bugzilla.gnome.org/show_bug.cgi?id=770127
2016-09-06 14:59:36 +08:00
4f58a46217 wayland: add min/max size from xdg-shell v6
Implement min/max size request from xdg-shell-v6 and plug it into the
existing code so that windows with fixed size cannot be tiled/maximized
in Wayland just like in X11.

Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=770226
2016-09-06 08:54:08 +02:00
3acd562a41 Updated Kazakh translation 2016-09-04 04:41:19 +00:00
0515f73ff0 Updated Korean translation 2016-09-03 14:08:34 +00:00
d696fd3021 wayland: Don't handle input events after capability was removed
The seat capability updating is synchronous, but input events are
asynchronous (first queued then emitted). This means we may end up in a
situation where we from libinput first may receive a key event,
immediately followed by a device-removed event. Clutter will first
queue the key event, then remove the device, immediately triggering the
seat capability removal.

Later, when the clutter stage processes the queued events, the
previously queued key event will be processed, eventually making it
into MetaWaylandSeat. Before this patch, MetaWaylandSeat would still
forward the key event to MetaWaylandKeyboard, even though it had
'released' it. Doing this would cause referencing potentially freed
memory, such as the xkb state that was unreferenced when the seat
removed the capability.

In order to avoid processing these lingering events, for now, just drop
them on the floor if the capability has been removed.

Eventually, the event queuing etc needs to be redesigned to work better
when used in a Wayland compositor, but for now at least don't access
freed memory.

https://bugzilla.gnome.org/show_bug.cgi?id=770727
2016-09-02 21:11:08 +08:00
ce7573e2b7 cogl/egl: Fix non-Wayland build
Use #ifdef instead of #if, otherwise it won't compile when Wayland is
not available.

https://bugzilla.gnome.org/show_bug.cgi?id=770647
2016-09-02 17:04:11 +08:00
6c8f6afdc4 window: Fix focus of unmappable modal transient's parent
When a modal transient is unmanaging, most likely the parent of the
modal transient should be focused.

In Wayland, a MetaWindow is created when a shell surface role (like
xdg_toplevel) is created, but a window cannot be shown until a buffer
is attached. If a client would create two modal transients and make
them both have the same parent, but only one get a buffer attached
(i.e. shown), when unmanaging the modal transient that was showing,
when finding a new focus candidate, the stacking code will ignore the
not-to-be-shown buffer-less modal transient when finding a good
candidate for focusing. In the case described here, this means it will
find the parent of the unmanaging modal transient.

This newly chosen candidate will then be passed to meta_window_focus();
meta_window_focus() will then try to find any modal transient to focus
instead, will find the one without any buffer, then fail to focus it
because it cannot be mapped, thus making meta_window_focus() not focus
anything. Since meta_window_focus() didn't change any focus state, the
assert in meta_window_unmanage() checking that the unmanaging window
isn't focused anymore will be hit, causing mutter to abort.

For now, fix this by checking whether the modal transient can actually
be focused in meta_window_focus(). For X11 client windows, a window
will be defined to be focusable always, but for Wayland client windows,
a window will be determined focusable only if it has a buffer attached.

In the future, we should probably do a more thorough refactorization of
focus handling to get rid of any X11 - Wayland differences.

https://bugzilla.gnome.org/show_bug.cgi?id=757568
2016-09-01 21:09:10 +08:00
7a096b8686 wayland/cursor-role: Add back priv variable
Rebase of previous patch that removed the priv variable shouldn't have,
since it was now used by other things. Add it back so it compiles again.
2016-09-01 21:04:13 +08:00
c7976e0dbc wayland/cursor-role: Increase buffer use count on construction
We may be assigned multiple times, if the surface is assigned to be a
cursor surface multiple times. Each time e.g. wl_pointer.set_cursor is
called, we'll be assigned.

While the role object exists, we'll handle buffer use count even when
we are not actively assigned, thus we should only handle the initial
assignment use count bump when constructing, so that we don't increase
it when reassigned, where the wl_resource may already have been
released.

https://bugzilla.gnome.org/show_bug.cgi?id=770402
2016-09-01 19:39:53 +08:00
f692c527e7 surface-role-cursor: Send frame callbacks for backend handled cursors
For backend handled cursors, if nothing else changes on the clutter
stage, we end up not sending out frame callbacks since clutter doesn't
draw a new frame.

To fix this, we'll keep cursor surfaces' frame callbacks separate from
other surfaces' and trigger them from the new
MetaCursorRenderer::cursor-painted signal which handles both software
and hardware cursors.

https://bugzilla.gnome.org/show_bug.cgi?id=749913
2016-08-31 20:10:43 +02:00
2c1d3e5b70 cursor-renderer: Add a cursor painted signal
This signal allows interested parties to be notified of a new cursor
frame being painted regardless of whether it's being painted by the
backend directly or if it's a software rendered cursor frame handled
by clutter.

https://bugzilla.gnome.org/show_bug.cgi?id=749913
2016-08-31 20:10:14 +02:00
262e184fe7 Default to using stage views
Instead of hiding stage views enablement behind MUTTER_STAGE_VIEWS=1,
default to enable it, while making it possible to disable using
MUTTER_STAGE_VIEWS=0 instead.

https://bugzilla.gnome.org/show_bug.cgi?id=770366
2016-08-30 22:56:56 +08:00
01edf10e82 clutter/evdev: Fix absolute pointer motion events
Absolute pointer events used the X coordinate as both X and Y. This
caused the pointer cursor to be moved incorrectly for absolute pointer
devices, commonly used in virtual machines.

https://bugzilla.gnome.org/show_bug.cgi?id=770557
2016-08-30 15:48:30 +08:00
335764e815 Bump version to 3.21.91
Update NEWS.
2016-08-30 00:58:08 +02:00
89f6fdce5d events: Only pass key events to Wayland if focus is on the stage
Even without a compositor grab, key events may still be expected to
be processed by the compositor and not applications, for instance
when using ctrl-alt-tab to keynav in the top bar. On X11, focus is
moved to the stage window in that case, so that events are processed
before they are dispatched by the window manager. On wayland, we need
to handle this case ourselves, so make sure to not pass key events to
wayland in that case, and move the key focus back to the stage when
appropriate.

https://bugzilla.gnome.org/show_bug.cgi?id=758167
2016-08-30 00:20:31 +02:00
7d9af9585d Use _NO_CONTEXT when creating images for EGL_WAYLAND_BUFFER_WL
The WL_bind_wayland_display spec says that EGL images should be created
using EGL_WAYLAND_BUFFER_WL as the target and a NULL context. Mesa
seems to be lenient and accept any context, however some other stacks
aren't so forgiving and fail if anything apart from EGL_NO_CONTEXT is
used.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>

https://bugzilla.gnome.org/show_bug.cgi?id=769731
2016-08-29 16:31:36 +02:00
c8f24721c5 monitor-manager-kms: Use the output naming logic used by the X server
Switch to the output naming logic used by the X server's modesetting
driver which, in particular, uses drmModeConnector's connector_type_id
instead of connector_id.

The kernel generates new connector_id's every time there are changes
which means we can't identify the same monitor on the same connector
after an hardware hotplug. Switching to connector_type_id fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=770338
2016-08-29 15:53:00 +02:00
7ba803934c monitor-manager-kms: Use the same connector type names as the X server
Switch to the connector type names used by the X server's modesetting
driver which, in particular, fixes DVI-A being labeled DVID.

https://bugzilla.gnome.org/show_bug.cgi?id=770338
2016-08-29 15:52:59 +02:00
5a1ce1b5a2 Updated Serbian translation 2016-08-28 11:13:33 +02:00
1f570d542e wayland: Survive an unsupported buffer size
If cogl fails to create a texture from the client's given buffer,
mutter would raise a fatal error and terminate.

As a result, a broken client might kill gnome-shell/mutter and take the
entire Wayland session with it.

Instead of raising a fatal error in this case, log the cogl error
message and send the client an OOM error, so mutter/gnome-shell can
survive an unsupported buffer size.

https://bugzilla.gnome.org/show_bug.cgi?id=770387
2016-08-26 11:16:07 +02:00
658d97d00e window: Don't unmanage transient_for when attached
For some reason, when a modal dialog was made an attaching
transient-for, if the window wasn't "constructing", it would be
unmanaged and rely on some side effect to be recreated. This side
effect is not triggered for Wayland clients, thus if one happen to set
a surface as "modal" via gtk_surface.set_modal before
xdg_toplevel.set_parent, it'd be unmanaged and never show up.

Instead, simply just set the tranciency anyway for Wayland clients.
This makes GTK+ clients that set_modal() before set_transient_for()
work.

https://bugzilla.gnome.org/show_bug.cgi?id=770324
2016-08-26 09:59:55 +08:00
8942e98e1d Revert "window: Make meta_window_has_pointer() per protocol implemented"
Windows from Xwayland still needs to use the Wayland path, but is
represented an MetaWindowX11, thus the abstraction introduced in
"window: Make meta_window_has_pointer() per protocol implemented"
is wrong. Lets turn back time, and reconsider how this can be
abstracted more correctly in the future.

This reverts commit 9fb891d216.
2016-08-26 06:51:19 +08:00
b6e13c459a wayland/subsurface: Call commit of surface-actor-role on commit
Rely on the actor surface role's commit function for queuing frame
callbacks. This also makes the surface actor state synchronization work
again, which was broken by 'wayland: Sync surface actor state in actor
role commit handler'.

https://bugzilla.gnome.org/show_bug.cgi?id=770131
2016-08-25 12:19:40 +08:00
43151edece wayland/actor-surface-role: Check for toplevel window
Don't check whether the surface of the role has a window, but whether
the corresponding toplevel surface has a window. This is necessary to
make subsurfaces not always early out.

https://bugzilla.gnome.org/show_bug.cgi?id=770131
2016-08-25 12:19:40 +08:00
b3f27de710 wayland/subsurface: Return NULL as toplevel if parent has no role
There is nothing stopping a subsurface from commiting its state before
its parents role has been assigned. Thus, we need to handle
meta_wayland_surface_get_toplevel() returning NULL for subsurfaces even
on commit.
2016-08-25 12:19:40 +08:00
4cf14c41ef wayland: Use correct GObject parent in subsurface role object
The parent of MetaWaylandSurfaceRoleSubsurface is
MetaWaylandSurfaceRoleActorSurface thus use that as the GObject parent.

https://bugzilla.gnome.org/show_bug.cgi?id=770131
2016-08-25 12:19:40 +08:00
dc03b3aa47 xdg-shell: Don't early out of role commit before calling parent impl
Make sure to always call the parent role commit vfunc, so that they can
handle updating their state properly.

This means other places need to handle the situation where
surface->window is NULL on commit. This may for example happen when the
parent of a modal dialog is unmapped or NULL is attached to a
wl_shell_surface.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
ef3e036b45 wayland/xdg-shell: Port to unstable v6
Port the xdg_shell implementation to use the unstable v6 protocol. This
includes:

 - making xdg_surface a generic base interface for xdg_shell surface
   roles
 - create a xdg_toplevel role replacing the old xdg_surface
 - change the xdg_opup role to be based on xdg_surface
 - make xdg_popup not grab by default
 - add support for xdg_positioner

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
24c3844246 wayland/xdg-shell: Make keyboard focus follow grabbing popup
This is the explicitly intended keyboard focus symantics of xdg-shell
unstable v6. The semantics are undefined in unstable v5.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
f21df37190 wayland: Let shell surface role sync generic window state
Instead of having each final role do the same call, lets just make the
common role object deal with synchronizing window buffer size.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
a5efa30f6c wayland: Call assigned() surface role vfunc when re-assigned
This will later be used by xdg-shell to ensure no buffer is attached on
assignment.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
817911d9d3 wayland: Keep track of configured position
Besides the configured dimension, also keep track of the configured
position. This will later be used by popup position feedback.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
a8d86b4876 wayland: Make gtk_shell handle our private window states
Instead of using the "allocated" state ranges of xdg_shell, lets just
use our own gtk_shell by adding a state enum and a configure event.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
cfb3d10e1b MetaWaylandSurface: Add 'configure' signal
Emit a 'configure' signal before configuring the role. This will enable
extensions to send its own configure events before the role is
configured.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
3a75e55cd8 wayland: Move gtk_surface fields out of MetaWaylandSurface
Let the gtk_shell extension unit handle its own state.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
335cd8e74c MetaWaylandSurface: Move 'destroying' field
It is not related to the gtk_surface extension, so move it to other
generic fields.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
c73d3d9d83 wayland: Move out gtk_shell from meta-wayland-surface.c
https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
8833991201 core: Add support for custom window placement rules
Add support for assigning a window a custom window placement rule used
for calculating the initial window position as well as defining how a
window is constrained.

The custom rule is a declarative rule which defines a set of parameters
which the placing algorithm and constrain algorithm uses for
calculating the position of a window. It is meant to be used to
implement positioning of menus and other popup windows created via
Wayland.

A custom placement rule replaces any other placement or constraint
rule.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
9fb891d216 window: Make meta_window_has_pointer() per protocol implemented
https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
3b3f40a1aa MetaWaylandSurface: Allow passing parameters when assigning role
Allow passing parameters (only GObject parameters supported for now) so
that role assignment can affect the paremeters set during construction.

If a role was already assigned when assigning, the passed parameters
are set using g_object_set_valist().

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
2114f2eb9f MetaWaylandSurfaceRole: Set the surface instance on construction
Set the MetaWaylandSurface instance pointer on construction so that all
surface role relevant parameters are initialized when constructed.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
3ee16a2abb src/Makefile.am: Pass protocol file to wayland-scanner as an argument
Instead of piping the protocol file content to wayland-scanner, pass
the file name as an argument. This enables a new enough wayland-scanner
to print more meaningful error messages.

https://bugzilla.gnome.org/show_bug.cgi?id=769936
2016-08-25 12:19:40 +08:00
9fb4783957 backends/native: Expose all transform modes in CRTCs
We can only honor this properly in the MUTTER_STAGE_VIEWS=1 case. When using
the legacy view, software implemented transforms are only exposed if there is
only one output, as we can only transform the entire stage there.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:38:06 +02:00
9e641f623f backends/native: Set offscreen on the transformed MetaRendererViews
The texture is only created if the view is transformed at the software level,
otherwise the texture is NULL, and rendering happens on the onscreen.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:38:06 +02:00
8065ff5a37 backends/native: Refactor onscreen creation into separate function
And use the right size, regarless of view transform.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:38:05 +02:00
6ce918661c backends/native: Use framebuffer size on swap_buffers implementation
Instead of ClutterStageView layout, which may be affected by transformations.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:38:05 +02:00
a72bd1bd29 backends/native: Set transform on MetaRendererViews
Only do this if mutter uses the multiple stage views feature. This
is uneffective at the moment because no back texture is set yet.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:38:05 +02:00
89854f9244 backends: Add MetaStageView::transform property
This property updates the ClutterStageView pipeline, so the texture is applied
with the corresponding transform.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:38:05 +02:00
a6e15e841b clutter/cogl: Transform swap buffers regions into onscreen coordinates
Those are given in view coordinates, so we must transform into onscreen
coordinates in order to perform swap_buffers on the right damage regions.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:38:05 +02:00
61e9c5c357 clutter/cogl: Hook up ClutterStageView render-to-texture
"Blit" the result on the framebuffer after each view is painted.
This of course only applies if there is an offscreen buffer to
perform any blitting. Otherwise the onscreen framebuffer is rendered
to directly and this step is not necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:38:05 +02:00
54dc10f890 clutter: Add infrastructure to render ClutterStageViews to offscreen
The offscreen is given through the ::back-buffer property, the ClutterStageView
will set up the the CoglPipeline used to render it back to the "onscreen"
framebuffer.

The pipeline can be altered through the setup_pipeline() vfunc, so ClutterStageView
implementations can alter the default behavior of blitting from offscreen to
onscreen with no transformations.

All getters of "the framebuffer" that were expecting to get an onscreen have
been updated to call the right clutter_stage_view_get_onscreen() function.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:36:45 +02:00
7baa1d8a8d backends/native: Refactor g_object_set() call
Makes sense to update ::layout inside meta_renderer_native_set_legacy_view_size().

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:11:37 +02:00
4b4eb3a039 backends/native: Remove unneeded call
The call to _cogl_framebuffer_winsys_update_size() results in no-op here,
as the framebuffer has already the right size when rebuilding the views.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:11:37 +02:00
92c03e8625 backends/native: Split hw supported CRTC rotation modes
Those will need a separate treatment from the modes that we eventually
support through "software", so split those into a separate enum so we
can can do the right thing when applying the configuration.

Also, add a helper function that returns the transform that the software
fallbacks should perform, which should be "normal" if the rotation is
already handled via hw.

The function applying the configuration has been modified to always set
a HW rotation mode (even if normal), when we come to support SW rotation
modes, we'll be relying on a normal transformation, so it will be
necessary to have mixed HW/SW managed transforms.

https://bugzilla.gnome.org/show_bug.cgi?id=745079
2016-08-24 02:09:32 +02:00
91 changed files with 8179 additions and 5595 deletions

55
NEWS
View File

@ -1,3 +1,58 @@
3.22.0
======
* Fix wayland crashes [Jonas; #771305, #771345, #770940, #771495]
* Fix display rotation on wayland [Jonas; #770672]
* Fix framebuffer capture origin offset [Rui; #771502]
* Misc. bug fixes [Jonas, Florian, Carlos; #770937, #771536, #771628, #771549]
Contributors:
Jonas Ådahl, Carlos Garnacho, Rui Matos, Florian Müllner
Translations:
Ask Hjorth Larsen [da], Charles Monzat [fr], Stas Solovey [ru],
Tom Tryfonidis [el], David King [en_GB]
3.21.92
=======
* Fix absolute pointer motion events on wayland [Jonas; #770557]
* Default to using stage views [Jonas; #770366]
* Fix animated cursors on wayland [Rui; #749913]
* Fix various crashes on wayland [Jonas; #757568, #770727, #770992]
* Fix screen capture for stage views not at (0, 0) [Jonas; #770127]
* Compress motion events instead of discarding them [Jonas; #771049]
* Fix XWayland pointer warp emulation [Jonas; #771050]
* Add common monitor modes in KMS backend [Rui; #744544]
* Temporarily use g-s-d schemas for tablet configuration [Carlos; #771315]
* Misc. bug fixes [Jonas, Carlos; #770402, #770647, #770991, #770994, #770929]
Contributors:
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner
Translations:
Changwoo Ryu [ko], Baurzhan Muftakhidinov [kk], Anders Jonsson [sv],
Tiago Santos [pt], Rafael Fontenelle [pt_BR], Mario Blättermann [de],
Alexander Shopov [bg], Rūdolfs Mazurs [lv], Fran Dieguez [gl],
Trần Ngọc Quân [vi], Piotr Drąg [pl], Мирослав Николић [sr, sr@latin]
3.21.91
=======
* Add support for xdg-foreign protocol [Jonas; #769786]
* Support monitor rotation on wayland [Carlos; #745079]
* Port xdg-shell implementation to unstable v6 [Jonas; #769936]
* Handle unsupported buffer sizes more gracefully [Olivier; #770387]
* Use the same output naming logic as the X server on wayland [Rui; #770338]
* Fix replies in gnome-shell's chat notifications on wayland [Florian; #758167]
* Misc. bug fixes and cleanups [Bastien, Sjoerd, Jonas; #769276, #769636,
#770131, #770324, #769731]
Contributors:
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Rui Matos, Florian Müllner,
Bastien Nocera, Sjoerd Simons
Translations:
Piotr Drąg [pl], Mario Blättermann [de], Andika Triwidada [id],
Enrico Nicoletto [pt_BR], Мирослав Николић [sr, sr@latin]
3.21.90
=======
* Consider XDG_SESSION_TYPE when determining session type [Jouke; #759388]

View File

@ -188,6 +188,10 @@ void _clutter_device_manager_select_stage_events (ClutterDeviceMa
ClutterStage *stage);
ClutterBackend *_clutter_device_manager_get_backend (ClutterDeviceManager *device_manager);
void _clutter_device_manager_compress_motion (ClutterDeviceManager *device_manger,
ClutterEvent *event,
const ClutterEvent *to_discard);
/* input device */
gboolean _clutter_input_device_has_sequence (ClutterInputDevice *device,
ClutterEventSequence *sequence);

View File

@ -458,3 +458,20 @@ clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_man
return manager_class->create_virtual_device (device_manager,
device_type);
}
void
_clutter_device_manager_compress_motion (ClutterDeviceManager *device_manager,
ClutterEvent *event,
const ClutterEvent *to_discard)
{
ClutterDeviceManagerClass *manager_class;
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager));
manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
if (!manager_class->compress_motion)
return;
manager_class->compress_motion (device_manager, event, to_discard);
}

View File

@ -85,9 +85,12 @@ struct _ClutterDeviceManagerClass
ClutterStage *stage);
ClutterVirtualInputDevice *(* create_virtual_device) (ClutterDeviceManager *manager,
ClutterInputDeviceType device_type);
void (* compress_motion) (ClutterDeviceManager *device_manger,
ClutterEvent *event,
const ClutterEvent *to_discard);
/* padding */
gpointer _padding[7];
gpointer _padding[6];
};
CLUTTER_AVAILABLE_IN_1_2

View File

@ -719,14 +719,8 @@ clutter_get_text_direction (void)
}
else
{
/* Translators: Leave this UNTRANSLATED if your language is
* left-to-right. If your language is right-to-left
* (e.g. Hebrew, Arabic), translate it to "default:RTL".
*
* Do NOT translate it to non-English e.g. "predefinito:LTR"! If
* it isn't default:LTR or default:RTL it will not work.
*/
char *e = _("default:LTR");
/* Re-use GTK+'s LTR/RTL handling */
const char *e = g_dgettext ("gtk30", "default:LTR");
if (strcmp (e, "default:RTL") == 0)
dir = CLUTTER_TEXT_DIRECTION_RTL;

View File

@ -115,36 +115,12 @@ clutter_stage_view_invalidate_offscreen_blit_pipeline (ClutterStageView *view)
g_clear_pointer (&priv->pipeline, cogl_object_unref);
}
static void
transform_rect_to_onscreen (ClutterStageView *view,
const cairo_rectangle_t *rect,
cairo_rectangle_t *rect_out)
{
float x1, y1, x2, y2;
x1 = rect->x;
y1 = rect->y;
clutter_stage_view_transform_to_onscreen (view, &x1, &y1);
x2 = rect->x + rect->width;
y2 = rect->y + rect->height;
clutter_stage_view_transform_to_onscreen (view, &x2, &y2);
*rect_out = (cairo_rectangle_t) {
.x = MIN (x1, x2),
.y = MIN (y1, y2),
.width = ABS (x2 - x1),
.height = ABS (y2 - y1)
};
}
void
clutter_stage_view_blit_offscreen (ClutterStageView *view,
const cairo_rectangle_int_t *rect)
{
ClutterStageViewPrivate *priv =
clutter_stage_view_get_instance_private (view);
cairo_rectangle_t texture_rect, onscreen_rect;
CoglMatrix matrix;
clutter_stage_view_ensure_offscreen_blit_pipeline (view);
@ -158,25 +134,9 @@ clutter_stage_view_blit_offscreen (ClutterStageView *view,
cogl_matrix_scale (&matrix, 2, -2, 0);
cogl_framebuffer_set_projection_matrix (priv->framebuffer, &matrix);
texture_rect = (cairo_rectangle_t) {
.x = (double) rect->x / cogl_framebuffer_get_width (priv->offscreen),
.y = (double) rect->y / cogl_framebuffer_get_height (priv->offscreen),
.width = (double) rect->width / cogl_framebuffer_get_width (priv->offscreen),
.height = (double) rect->height / cogl_framebuffer_get_height (priv->offscreen)
};
transform_rect_to_onscreen (view, &texture_rect, &onscreen_rect);
cogl_framebuffer_draw_textured_rectangle (priv->framebuffer,
priv->pipeline,
onscreen_rect.x,
onscreen_rect.y,
onscreen_rect.x + onscreen_rect.width,
onscreen_rect.y + onscreen_rect.height,
texture_rect.x,
texture_rect.y,
texture_rect.x + texture_rect.width,
texture_rect.y + texture_rect.height);
cogl_framebuffer_draw_rectangle (priv->framebuffer,
priv->pipeline,
0, 0, 1, 1);
cogl_framebuffer_pop_matrix (priv->framebuffer);
}

View File

@ -676,12 +676,6 @@ clutter_stage_do_paint_view (ClutterStage *stage,
_clutter_stage_paint_volume_stack_free_all (stage);
_clutter_stage_update_active_framebuffer (stage, framebuffer);
clutter_actor_paint (CLUTTER_ACTOR (stage));
if (clutter_stage_view_get_onscreen (view) !=
clutter_stage_view_get_framebuffer (view))
{
clutter_stage_view_blit_offscreen (view, clip);
}
}
/* This provides a common point of entry for painting the scenegraph
@ -1004,6 +998,16 @@ _clutter_stage_process_queued_events (ClutterStage *stage)
"Omitting motion event at %d, %d",
(int) event->motion.x,
(int) event->motion.y);
if (next_event->type == CLUTTER_MOTION)
{
ClutterDeviceManager *device_manager =
clutter_device_manager_get_default ();
_clutter_device_manager_compress_motion (device_manager,
next_event, event);
}
goto next_event;
}
else if (event->type == CLUTTER_TOUCH_UPDATE &&
@ -1400,8 +1404,6 @@ _clutter_stage_do_pick_on_view (ClutterStage *stage,
view_layout.height);
_clutter_stage_window_get_dirty_pixel (priv->impl, view, &dirty_x, &dirty_y);
dirty_x -= view_layout.x;
dirty_y -= view_layout.y;
if (G_LIKELY (!(clutter_pick_debug_flags & CLUTTER_DEBUG_DUMP_PICK_BUFFERS)))
{
@ -1452,10 +1454,10 @@ _clutter_stage_do_pick_on_view (ClutterStage *stage,
used. The format is requested as pre-multiplied because Cogl
assumes that all pixels in the framebuffer are premultiplied so
it avoids a conversion. */
cogl_read_pixels (read_x, read_y, 1, 1,
COGL_READ_PIXELS_COLOR_BUFFER,
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
pixel);
cogl_framebuffer_read_pixels (fb,
read_x, read_y, 1, 1,
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
pixel);
if (G_UNLIKELY (clutter_pick_debug_flags & CLUTTER_DEBUG_DUMP_PICK_BUFFERS))
{
@ -4682,6 +4684,7 @@ capture_view (ClutterStage *stage,
uint8_t *data;
int stride;
CoglBitmap *bitmap;
cairo_rectangle_int_t view_layout;
framebuffer = clutter_stage_view_get_framebuffer (view);
@ -4706,8 +4709,11 @@ capture_view (ClutterStage *stage,
stride,
data);
clutter_stage_view_get_layout (view, &view_layout);
cogl_framebuffer_read_pixels_into_bitmap (framebuffer,
rect->x, rect->y,
view_layout.x + rect->x,
view_layout.y + rect->y,
COGL_READ_PIXELS_COLOR_BUFFER,
bitmap);

View File

@ -420,6 +420,12 @@ paint_stage (ClutterStageCogl *stage_cogl,
_clutter_stage_maybe_setup_viewport (stage, view);
_clutter_stage_paint_view (stage, view, clip);
if (clutter_stage_view_get_onscreen (view) !=
clutter_stage_view_get_framebuffer (view))
{
clutter_stage_view_blit_offscreen (view, clip);
}
}
static void
@ -800,7 +806,9 @@ clutter_stage_cogl_get_dirty_pixel (ClutterStageWindow *stage_window,
int *x,
int *y)
{
CoglFramebuffer *framebuffer = clutter_stage_view_get_framebuffer (view);
gboolean has_buffer_age =
cogl_is_onscreen (framebuffer) &&
cogl_clutter_winsys_has_feature (COGL_WINSYS_FEATURE_BUFFER_AGE);
cairo_rectangle_int_t *rect;
@ -814,10 +822,13 @@ clutter_stage_cogl_get_dirty_pixel (ClutterStageWindow *stage_window,
ClutterStageViewCogl *view_cogl = CLUTTER_STAGE_VIEW_COGL (view);
ClutterStageViewCoglPrivate *view_priv =
clutter_stage_view_cogl_get_instance_private (view_cogl);
cairo_rectangle_int_t view_layout;
clutter_stage_view_get_layout (view, &view_layout);
rect = &view_priv->damage_history[DAMAGE_HISTORY (view_priv->damage_index - 1)];
*x = rect->x;
*y = rect->y;
*x = rect->x - view_layout.x;
*y = rect->y - view_layout.y;
}
}

View File

@ -1970,6 +1970,31 @@ clutter_device_manager_evdev_create_virtual_device (ClutterDeviceManager *manag
NULL);
}
static void
clutter_device_manager_evdev_compress_motion (ClutterDeviceManager *device_manger,
ClutterEvent *event,
const ClutterEvent *to_discard)
{
double dx, dy;
double dx_unaccel, dy_unaccel;
double dst_dx = 0.0, dst_dy = 0.0;
double dst_dx_unaccel = 0.0, dst_dy_unaccel = 0.0;
if (!clutter_evdev_event_get_relative_motion (to_discard,
&dx, &dy,
&dx_unaccel, &dy_unaccel))
return;
clutter_evdev_event_get_relative_motion (event,
&dst_dx, &dst_dy,
&dst_dx_unaccel, &dst_dy_unaccel);
_clutter_evdev_event_set_relative_motion (event,
dx + dst_dx,
dy + dst_dy,
dx_unaccel + dst_dx_unaccel,
dy_unaccel + dst_dy_unaccel);
}
/*
* GObject implementation
*/
@ -2110,6 +2135,7 @@ clutter_device_manager_evdev_class_init (ClutterDeviceManagerEvdevClass *klass)
manager_class->get_core_device = clutter_device_manager_evdev_get_core_device;
manager_class->get_device = clutter_device_manager_evdev_get_device;
manager_class->create_virtual_device = clutter_device_manager_evdev_create_virtual_device;
manager_class->compress_motion = clutter_device_manager_evdev_compress_motion;
}
static void
@ -2504,6 +2530,60 @@ clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
xkb_state_update_mask (state, depressed_mods, latched_mods, locked_mods, 0, 0, idx);
}
/**
* clutter_evdev_set_keyboard_numlock: (skip)
* @evdev: the #ClutterDeviceManager created by the evdev backend
* @numlock_set: TRUE to set NumLock ON, FALSE otherwise.
*
* Sets the NumLock state on the backend's #xkb_state .
*
* Stability: unstable
*/
void
clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev,
gboolean numlock_state)
{
ClutterDeviceManagerEvdev *manager_evdev;
ClutterDeviceManagerEvdevPrivate *priv;
GSList *iter;
xkb_mod_mask_t numlock;
g_return_if_fail (CLUTTER_IS_DEVICE_MANAGER_EVDEV (evdev));
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (evdev);
priv = manager_evdev->priv;
numlock = (1 << xkb_keymap_mod_get_index(priv->keymap, "Mod2"));
for (iter = priv->seats; iter; iter = iter->next)
{
ClutterSeatEvdev *seat = iter->data;
xkb_mod_mask_t depressed_mods;
xkb_mod_mask_t latched_mods;
xkb_mod_mask_t locked_mods;
xkb_mod_mask_t group_mods;
depressed_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_DEPRESSED);
latched_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_LATCHED);
locked_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_LOCKED);
group_mods = xkb_state_serialize_layout (seat->xkb, XKB_STATE_LAYOUT_EFFECTIVE);
if (numlock_state)
locked_mods |= numlock;
else
locked_mods &= ~numlock;
xkb_state_update_mask (seat->xkb,
depressed_mods,
latched_mods,
locked_mods,
0, 0,
group_mods);
clutter_seat_evdev_sync_leds (seat);
}
}
/**
* clutter_evdev_set_pointer_constrain_callback:
* @evdev: the #ClutterDeviceManager created by the evdev backend

View File

@ -105,6 +105,10 @@ CLUTTER_AVAILABLE_IN_1_20
void clutter_evdev_set_keyboard_layout_index (ClutterDeviceManager *evdev,
xkb_layout_index_t idx);
CLUTTER_AVAILABLE_IN_1_26
void clutter_evdev_set_keyboard_numlock (ClutterDeviceManager *evdev,
gboolean numlock_state);
CLUTTER_AVAILABLE_IN_1_18
void clutter_evdev_set_keyboard_repeat (ClutterDeviceManager *evdev,
gboolean repeat,

View File

@ -421,7 +421,7 @@ void clutter_seat_evdev_notify_absolute_motion (ClutterSeatEvdev *seat,
{
ClutterEvent *event;
event = new_absolute_motion_event (seat, input_device, time_us, x, x, axes);
event = new_absolute_motion_event (seat, input_device, time_us, x, y, axes);
queue_event (event);
}

View File

@ -1028,6 +1028,13 @@ _cogl_egl_create_image (CoglContext *ctx,
if (target == EGL_NATIVE_PIXMAP_KHR)
egl_ctx = EGL_NO_CONTEXT;
else
#endif
#ifdef COGL_HAS_WAYLAND_EGL_SERVER_SUPPORT
/* The WL_bind_wayland_display spec states that EGL_NO_CONTEXT is to be used
* in conjunction with the EGL_WAYLAND_BUFFER_WL target */
if (target == EGL_WAYLAND_BUFFER_WL)
egl_ctx = EGL_NO_CONTEXT;
else
#endif
egl_ctx = egl_display->egl_context;

View File

@ -1,8 +1,8 @@
AC_PREREQ(2.62)
m4_define([mutter_major_version], [3])
m4_define([mutter_minor_version], [21])
m4_define([mutter_micro_version], [90])
m4_define([mutter_minor_version], [22])
m4_define([mutter_micro_version], [0])
m4_define([mutter_version],
[mutter_major_version.mutter_minor_version.mutter_micro_version])
@ -272,7 +272,7 @@ AS_IF([test "$have_wayland" = "yes"], [
AC_SUBST([WAYLAND_SCANNER])
AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.6],
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.7],
[ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
])
@ -376,6 +376,8 @@ AC_CHECK_DECL([GL_EXT_x11_sync_object],
[AC_MSG_ERROR([GL_EXT_x11_sync_object definition not found, please update your GL headers])],
[#include <GL/glx.h>])
AC_PATH_PROG([CVT],[cvt],[])
#### Warnings (last since -Werror can disturb other tests)
# Stay command-line compatible with the gnome-common configure option. Here

View File

@ -10,7 +10,7 @@ top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ \
--keyword=C_:1c,2 --keyword=NC_:1c,2 \
--keyword=g_dngettext:2,3 \
--keyword=g_dngettext:2,3 --add-comments \
--flag=g_dngettext:2:pass-c-format \
--flag=g_strdup_printf:1:c-format \
--flag=g_string_printf:2:c-format \

838
po/bg.po
View File

@ -1,9 +1,10 @@
# Bulgarian translation of mutter po-file.
# Copyright (C) 2002, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
# Copyright (C) 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
# Copyright (C) 2014, 2015 Free Software Foundation, Inc.
# Copyright (C) 2014, 2015, 2016 Free Software Foundation, Inc.
# Alexander Shopov <ash@kambanaria.org>, 2002, 2006, 2007, 2009, 2010.
# Alexander Shopov <ash@kambanaria.org>, 2011, 2012, 2013, 2014, 2015.
# Alexander Shopov <ash@kambanaria.org>, 2016.
# Vladimir Petkov <kaladan@gmail.com>, 2004.
# Rostislav Raykov <zbrox@i-space.org>, 2004.
# Yavor Doganov <yavor@gnu.org>, 2008.
@ -11,9 +12,10 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-03-10 09:51+0200\n"
"PO-Revision-Date: 2015-03-10 09:51+0200\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-09-08 06:33+0300\n"
"PO-Revision-Date: 2016-09-05 16:27+0300\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
@ -22,471 +24,44 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../data/50-mutter-navigation.xml.in.h:1
msgid "Navigation"
msgstr "Навигация"
#: ../src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Смяна на екрана"
#: ../data/50-mutter-navigation.xml.in.h:2
msgid "Move window to workspace 1"
msgstr "Преместване на прозореца на работен плот 1"
#: ../src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Показване на помощта на екрана"
#: ../data/50-mutter-navigation.xml.in.h:3
msgid "Move window to workspace 2"
msgstr "Преместване на прозореца на работен плот 2"
#: ../data/50-mutter-navigation.xml.in.h:4
msgid "Move window to workspace 3"
msgstr "Преместване на прозореца на работен плот 3"
#: ../data/50-mutter-navigation.xml.in.h:5
msgid "Move window to workspace 4"
msgstr "Преместване на прозореца на работен плот 4"
#: ../data/50-mutter-navigation.xml.in.h:6
msgid "Move window to last workspace"
msgstr "Преместване на прозореца на последния работен плот"
#: ../data/50-mutter-navigation.xml.in.h:7
msgid "Move window one workspace to the left"
msgstr "Преместване на прозореца един работен плот наляво"
#: ../data/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace to the right"
msgstr "Преместване на прозореца един работен плот надясно"
#: ../data/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up"
msgstr "Преместване на прозореца един работен плот нагоре"
#: ../data/50-mutter-navigation.xml.in.h:10
msgid "Move window one workspace down"
msgstr "Преместване на прозореца един работен плот надолу"
#: ../data/50-mutter-navigation.xml.in.h:11
msgid "Move window one monitor to the left"
msgstr "Преместване на прозореца един екран наляво"
#: ../data/50-mutter-navigation.xml.in.h:12
msgid "Move window one monitor to the right"
msgstr "Преместване на прозореца един екран надясно"
#: ../data/50-mutter-navigation.xml.in.h:13
msgid "Move window one monitor up"
msgstr "Преместване на прозореца един екран нагоре"
#: ../data/50-mutter-navigation.xml.in.h:14
msgid "Move window one monitor down"
msgstr "Преместване на прозореца един екран надолу"
#: ../data/50-mutter-navigation.xml.in.h:15
msgid "Switch applications"
msgstr "Преместване на фокуса между програмите"
#: ../data/50-mutter-navigation.xml.in.h:16
msgid "Switch to previous application"
msgstr "Преместване на фокуса към предишната програма"
#: ../data/50-mutter-navigation.xml.in.h:17
msgid "Switch windows"
msgstr "Преместване на фокуса между прозорците"
#: ../data/50-mutter-navigation.xml.in.h:18
msgid "Switch to previous window"
msgstr "Преместване на фокуса към предишния прозорец"
#: ../data/50-mutter-navigation.xml.in.h:19
msgid "Switch windows of an application"
msgstr "Преместване на фокуса между прозорците на една програма"
#: ../data/50-mutter-navigation.xml.in.h:20
msgid "Switch to previous window of an application"
msgstr "Преместване на фокуса към предишния прозорец на програма"
#: ../data/50-mutter-navigation.xml.in.h:21
msgid "Switch system controls"
msgstr "Преместване на фокуса между служебните обекти"
#: ../data/50-mutter-navigation.xml.in.h:22
msgid "Switch to previous system control"
msgstr "Преместване на фокуса към предишния служебен обект"
#: ../data/50-mutter-navigation.xml.in.h:23
msgid "Switch windows directly"
msgstr "Незабавно преместване на фокуса между прозорците"
#: ../data/50-mutter-navigation.xml.in.h:24
msgid "Switch directly to previous window"
msgstr "Незабавно преместване на фокуса към предишния прозорец"
#: ../data/50-mutter-navigation.xml.in.h:25
msgid "Switch windows of an app directly"
msgstr "Незабавно преместване на фокуса между прозорците на една програма"
#: ../data/50-mutter-navigation.xml.in.h:26
msgid "Switch directly to previous window of an app"
msgstr ""
"Незабавно преместване на фокуса към предишния прозорец на една програма"
#: ../data/50-mutter-navigation.xml.in.h:27
msgid "Switch system controls directly"
msgstr "Незабавно преместване на фокуса между служебните обекти"
#: ../data/50-mutter-navigation.xml.in.h:28
msgid "Switch directly to previous system control"
msgstr "Незабавно преместване на фокуса към предишния служебен обект"
#: ../data/50-mutter-navigation.xml.in.h:29
msgid "Hide all normal windows"
msgstr "Скриване на всички обикновени прозорци"
#: ../data/50-mutter-navigation.xml.in.h:30
msgid "Switch to workspace 1"
msgstr "Превключване към работен плот 1"
#: ../data/50-mutter-navigation.xml.in.h:31
msgid "Switch to workspace 2"
msgstr "Превключване към работен плот 2"
#: ../data/50-mutter-navigation.xml.in.h:32
msgid "Switch to workspace 3"
msgstr "Превключване към работен плот 3"
#: ../data/50-mutter-navigation.xml.in.h:33
msgid "Switch to workspace 4"
msgstr "Превключване към работен плот 4"
#: ../data/50-mutter-navigation.xml.in.h:34
msgid "Switch to last workspace"
msgstr "Превключване към последния работен плот"
#: ../data/50-mutter-navigation.xml.in.h:35
msgid "Move to workspace left"
msgstr "Преместване на левия работен плот"
#: ../data/50-mutter-navigation.xml.in.h:36
msgid "Move to workspace right"
msgstr "Преместване на десния работен плот"
#: ../data/50-mutter-navigation.xml.in.h:37
msgid "Move to workspace above"
msgstr "Преместване на горния работен плот"
#: ../data/50-mutter-navigation.xml.in.h:38
msgid "Move to workspace below"
msgstr "Преместване на долния работен плот"
#: ../data/50-mutter-system.xml.in.h:1
msgid "System"
msgstr "Система"
#: ../data/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt"
msgstr "Показване на прозореца за стартиране на команда"
#: ../data/50-mutter-system.xml.in.h:3
msgid "Show the activities overview"
msgstr "Преглед на дейностите"
#: ../data/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "Прозорци"
#: ../data/50-mutter-windows.xml.in.h:2
msgid "Activate the window menu"
msgstr "Задействане на менюто за прозорците"
#: ../data/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode"
msgstr "Превключване на режима за цял екран"
#: ../data/50-mutter-windows.xml.in.h:4
msgid "Toggle maximization state"
msgstr "Превключване на състоянието на максимизиране"
#: ../data/50-mutter-windows.xml.in.h:5
msgid "Maximize window"
msgstr "Максимизиране на прозорец"
#: ../data/50-mutter-windows.xml.in.h:6
msgid "Restore window"
msgstr "Възстановяване на прозорец"
#: ../data/50-mutter-windows.xml.in.h:7
msgid "Toggle shaded state"
msgstr "Превключване на състоянието на навиване"
#: ../data/50-mutter-windows.xml.in.h:8
msgid "Close window"
msgstr "Затваряне на прозореца"
#: ../data/50-mutter-windows.xml.in.h:9
msgid "Hide window"
msgstr "Скриване на прозорец"
#: ../data/50-mutter-windows.xml.in.h:10
msgid "Move window"
msgstr "Преместване на прозорец"
#: ../data/50-mutter-windows.xml.in.h:11
msgid "Resize window"
msgstr "Оразмеряване на прозорец"
#: ../data/50-mutter-windows.xml.in.h:12
msgid "Toggle window on all workspaces or one"
msgstr "Превключване на появата на прозореца на всички работни места"
#: ../data/50-mutter-windows.xml.in.h:13
msgid "Raise window if covered, otherwise lower it"
msgstr "Ако прозорецът е под друг, го издига, иначе го понижава"
#: ../data/50-mutter-windows.xml.in.h:14
msgid "Raise window above other windows"
msgstr "Издигане на прозореца над другите"
#: ../data/50-mutter-windows.xml.in.h:15
msgid "Lower window below other windows"
msgstr "Понижаване на прозореца под другите прозорци"
#: ../data/50-mutter-windows.xml.in.h:16
msgid "Maximize window vertically"
msgstr "Максимизиране на прозореца вертикално"
#: ../data/50-mutter-windows.xml.in.h:17
msgid "Maximize window horizontally"
msgstr "Максимизиране на прозореца хоризонтално"
#: ../data/50-mutter-windows.xml.in.h:18
msgid "View split on left"
msgstr "Изглед разделен отляво"
#: ../data/50-mutter-windows.xml.in.h:19
msgid "View split on right"
msgstr "Изглед разделен отдясно"
#: ../data/mutter.desktop.in.h:1
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
msgid "Modifier to use for extended window management operations"
msgstr ""
"Модификатор, който да се ползва за допълнителните действия по прозорците"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
"\"Windows key\" on PC hardware. It's expected that this binding either the "
"default or set to the empty string."
msgstr ""
"Този клавиш стартира наслагването, което е комбинация от прозорец и система "
"за стартиране на програми. Стандартно клавишът е „Windows“ при системите "
"съвместими с PC. Очаква се да е или стандартната стойност или празен низ."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs"
msgstr "Прилепени модални диалогови прозорци"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
"the parent window."
msgstr ""
"Когато е ключът е истина, модалните диалогови прозорци прилепват към "
"заглавната лента на родителския си прозорец и се местят с него, вместо да са "
"отделни и да имат собствена заглавна лента."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Включване на прилепването и максимизирането на прозорците по границите на "
"екрана"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
"Ако е включено, прозорците ще се максимизират по вертикала и ще заемат "
"половината площ по хоризонтала при поставянето им край вертикалните граници "
"на екрана. При поставянето им край горната граница прозорците ще се "
"максимизират изцяло."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
msgstr "Динамично управление на работните места"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
"Определя дали се ползва динамично управление на работните места или броят им "
"е установено число (зададено чрез ключа „num-workspaces“ в „org.gnome."
"desktop.wm.preferences“)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary"
msgstr "Работни плотове само на основния екран"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr ""
"Дали смяната на работни плотове да се извършва на всички екрани или само на "
"основния."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup"
msgstr "Без изскачащ прозорец при обхождане"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr ""
"Дали отбелязването на рамка и изскачащият прозорец при обхождане на "
"прозорците да се изключат."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving"
msgstr "Смяната на фокуса да изчака спирането на показалеца"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
"the focus will not be changed immediately when entering a window, but only "
"after the pointer stops moving."
msgstr ""
"Ако е включено и начинът за фокусиране е „sloppy“ (мързеливо) или "
"„mouse“ (под мишката), тогава фокусът няма да се предава веднага при "
"навлизането в прозорец, а едва след като показалецът спре да се движи."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Широчина на границата за влачене"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
"Общ размер на границите за влачене. Ако видимите граници на темата са по-"
"малки, се добавят невидими граници, за да се достигне тази величина."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
"Автоматично максимизиране на прозорци с размер близък до този на екрана"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
msgstr ""
"Ако е включено, новите прозорци, чийто размер е близък на този на екрана, "
"автоматично ще се максимизират."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
msgid "Place new windows in the center"
msgstr "Поставяне на новите прозорци в центъра на екрана"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
msgstr "Ако е включено, новите прозорци ще се поставят в центъра на екрана."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
msgid "Select window from tab popup"
msgstr "Избиране при обхождане чрез изскачащ прозорец"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
msgid "Cancel tab popup"
msgstr "Без изскачащ прозорец при обхождане"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
msgid "Switch to VT 1"
msgstr "Превключване към виртуална графична конзола 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
msgid "Switch to VT 2"
msgstr "Превключване към виртуална графична конзола 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
msgid "Switch to VT 3"
msgstr "Превключване към виртуална графична конзола 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
msgid "Switch to VT 4"
msgstr "Превключване към виртуална графична конзола 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
msgid "Switch to VT 5"
msgstr "Превключване към виртуална графична конзола 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
msgid "Switch to VT 6"
msgstr "Превключване към виртуална графична конзола 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
msgid "Switch to VT 7"
msgstr "Превключване към виртуална графична конзола 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
msgid "Switch to VT 8"
msgstr "Превключване към виртуална графична конзола 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
msgid "Switch to VT 9"
msgstr "Превключване към виртуална графична конзола 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
msgid "Switch to VT 10"
msgstr "Превключване към виртуална графична конзола 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
msgid "Switch to VT 11"
msgstr "Превключване към виртуална графична конзола 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
msgid "Switch to VT 12"
msgstr "Превключване към виртуална графична конзола 12"
#: ../src/backends/meta-monitor-manager.c:364
#: ../src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Вграден екран"
#: ../src/backends/meta-monitor-manager.c:391
#: ../src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Непознат"
#: ../src/backends/meta-monitor-manager.c:393
#: ../src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Непознат екран"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:401
#: ../src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: ../src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr "На екран %i от дисплея „%s“ вече има мениджър за наслагване."
#: ../src/core/bell.c:185
#: ../src/core/bell.c:194
msgid "Bell event"
msgstr "Събитие за звънец"
@ -515,44 +90,48 @@ msgstr "Из_чакване"
msgid "_Force Quit"
msgstr "_Принудително спиране"
#: ../src/core/display.c:562
#: ../src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Неуспешно отваряне на дисплея на X Window „%s“\n"
#: ../src/core/main.c:176
#: ../src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Прекъсване на връзката към мениджъра на сесиите"
#: ../src/core/main.c:182
#: ../src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Замяна на текущия мениджър на прозорци"
#: ../src/core/main.c:188
#: ../src/core/main.c:194
msgid "Specify session management ID"
msgstr "Определяне на идентификатор за управлението на сесии"
#: ../src/core/main.c:193
#: ../src/core/main.c:199
msgid "X Display to use"
msgstr "X дисплеят, който да се използва"
# Ако „запазено“ не се членува, низът се събира на един ред без
# пренасяне.
#: ../src/core/main.c:199
#: ../src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Инициализиране на сесия от файл със запазено състояние"
#: ../src/core/main.c:205
#: ../src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Извикванията на X да са синхронни"
#: ../src/core/main.c:212
#: ../src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Wayland да е мениджър за наслагване"
#: ../src/core/main.c:220
#: ../src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Изпълнение като вложен сървър за изобразяване"
#: ../src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Изпълнение като самостоятелен, а не вграден сървър за изобразяване"
msgstr "Изпълнение като самостоятелен, а не вложен сървър за изобразяване"
#: ../src/core/mutter.c:39
#, c-format
@ -578,12 +157,12 @@ msgstr "Отпечатване на версията на програмата"
msgid "Mutter plugin to use"
msgstr "Приставка, която да се ползва"
#: ../src/core/prefs.c:2004
#: ../src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Работен плот %d"
#: ../src/core/screen.c:525
#: ../src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -592,15 +171,20 @@ msgstr ""
"Вече има мениджър на прозорци на дисплей „%s“. Пробвайте да го замените с "
"опцията „--replace“."
#: ../src/core/screen.c:607
#: ../src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Екранът %d на дисплей „%s“ е невалиден\n"
#: ../src/core/util.c:118
#: ../src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter е компилиран без поддръжка на подробен режим\n"
#: ../src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Смяна на режима: режим %d"
#: ../src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
@ -609,7 +193,345 @@ msgstr ""
"Тези прозорци не поддържат операцията по записване на текущото състояние и "
"ще трябва да се стартират ръчно при следващото ви влизане."
#: ../src/x11/window-props.c:549
#: ../src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (от %s)"
#~ msgid "Navigation"
#~ 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 last workspace"
#~ 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 one workspace down"
#~ msgstr "Преместване на прозореца един работен плот надолу"
#~ msgid "Move window one monitor to the left"
#~ msgstr "Преместване на прозореца един екран наляво"
#~ msgid "Move window one monitor to the right"
#~ msgstr "Преместване на прозореца един екран надясно"
#~ msgid "Move window one monitor up"
#~ msgstr "Преместване на прозореца един екран нагоре"
#~ msgid "Move window one monitor down"
#~ msgstr "Преместване на прозореца един екран надолу"
#~ msgid "Switch applications"
#~ msgstr "Преместване на фокуса между програмите"
#~ msgid "Switch to previous application"
#~ msgstr "Преместване на фокуса към предишната програма"
#~ msgid "Switch windows"
#~ msgstr "Преместване на фокуса между прозорците"
#~ msgid "Switch to previous window"
#~ msgstr "Преместване на фокуса към предишния прозорец"
#~ msgid "Switch windows of an application"
#~ msgstr "Преместване на фокуса между прозорците на една програма"
#~ msgid "Switch to previous window of an application"
#~ msgstr "Преместване на фокуса към предишния прозорец на програма"
#~ msgid "Switch to previous system control"
#~ msgstr "Преместване на фокуса към предишния служебен обект"
#~ msgid "Switch windows directly"
#~ msgstr "Незабавно преместване на фокуса между прозорците"
#~ msgid "Switch directly to previous window"
#~ msgstr "Незабавно преместване на фокуса към предишния прозорец"
#~ msgid "Switch windows of an app directly"
#~ msgstr "Незабавно преместване на фокуса между прозорците на една програма"
#~ msgid "Switch directly to previous window of an app"
#~ msgstr ""
#~ "Незабавно преместване на фокуса към предишния прозорец на една програма"
#~ msgid "Switch system controls directly"
#~ msgstr "Незабавно преместване на фокуса между служебните обекти"
#~ msgid "Switch directly to previous system control"
#~ msgstr "Незабавно преместване на фокуса към предишния служебен обект"
#~ msgid "Hide all normal windows"
#~ msgstr "Скриване на всички обикновени прозорци"
#~ msgid "Switch to workspace 1"
#~ msgstr "Превключване към работен плот 1"
#~ msgid "Switch to workspace 2"
#~ msgstr "Превключване към работен плот 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "Превключване към работен плот 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "Превключване към работен плот 4"
#~ msgid "Switch to last workspace"
#~ msgstr "Превключване към последния работен плот"
#~ msgid "Move to workspace left"
#~ msgstr "Преместване на левия работен плот"
#~ msgid "Move to workspace right"
#~ msgstr "Преместване на десния работен плот"
#~ msgid "Move to workspace above"
#~ msgstr "Преместване на горния работен плот"
#~ msgid "Move to workspace below"
#~ msgstr "Преместване на долния работен плот"
#~ msgid "System"
#~ msgstr "Система"
#~ msgid "Show the run command prompt"
#~ msgstr "Показване на прозореца за стартиране на команда"
#~ msgid "Show the activities overview"
#~ msgstr "Преглед на дейностите"
#~ msgid "Windows"
#~ msgstr "Прозорци"
#~ msgid "Activate the window menu"
#~ msgstr "Задействане на менюто за прозорците"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Превключване на режима за цял екран"
#~ msgid "Toggle maximization state"
#~ msgstr "Превключване на състоянието на максимизиране"
#~ msgid "Maximize window"
#~ msgstr "Максимизиране на прозорец"
#~ msgid "Restore window"
#~ msgstr "Възстановяване на прозорец"
#~ msgid "Toggle shaded state"
#~ msgstr "Превключване на състоянието на навиване"
#~ msgid "Close window"
#~ msgstr "Затваряне на прозореца"
#~ msgid "Hide window"
#~ msgstr "Скриване на прозорец"
#~ msgid "Move window"
#~ msgstr "Преместване на прозорец"
#~ msgid "Resize window"
#~ msgstr "Оразмеряване на прозорец"
#~ msgid "Toggle window on all workspaces or one"
#~ msgstr "Превключване на появата на прозореца на всички работни места"
#~ msgid "Raise window if covered, 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 "View split on left"
#~ msgstr "Изглед разделен отляво"
#~ msgid "View split on right"
#~ msgstr "Изглед разделен отдясно"
#~ msgid "Mutter"
#~ msgstr "Mutter"
#~ msgid "Modifier to use for extended window management operations"
#~ msgstr ""
#~ "Модификатор, който да се ползва за допълнителните действия по прозорците"
#~ msgid ""
#~ "This key will initiate the \"overlay\", which is a combination window "
#~ "overview and application launching system. The default is intended to be "
#~ "the \"Windows key\" on PC hardware. It's expected that this binding "
#~ "either the default or set to the empty string."
#~ msgstr ""
#~ "Този клавиш стартира наслагването, което е комбинация от прозорец и "
#~ "система за стартиране на програми. Стандартно клавишът е „Windows“ при "
#~ "системите съвместими с PC. Очаква се да е или стандартната стойност или "
#~ "празен низ."
#~ msgid "Attach modal dialogs"
#~ msgstr "Прилепени модални диалогови прозорци"
#~ msgid ""
#~ "When true, instead of having independent titlebars, modal dialogs appear "
#~ "attached to the titlebar of the parent window and are moved together with "
#~ "the parent window."
#~ msgstr ""
#~ "Когато е ключът е истина, модалните диалогови прозорци прилепват към "
#~ "заглавната лента на родителския си прозорец и се местят с него, вместо да "
#~ "са отделни и да имат собствена заглавна лента."
#~ msgid "Enable edge tiling when dropping windows on screen edges"
#~ msgstr ""
#~ "Включване на прилепването и максимизирането на прозорците по границите на "
#~ "екрана"
#~ msgid ""
#~ "If enabled, dropping windows on vertical screen edges maximizes them "
#~ "vertically and resizes them horizontally to cover half of the available "
#~ "area. Dropping windows on the top screen edge maximizes them completely."
#~ msgstr ""
#~ "Ако е включено, прозорците ще се максимизират по вертикала и ще заемат "
#~ "половината площ по хоризонтала при поставянето им край вертикалните "
#~ "граници на екрана. При поставянето им край горната граница прозорците ще "
#~ "се максимизират изцяло."
#~ msgid "Workspaces are managed dynamically"
#~ msgstr "Динамично управление на работните места"
#~ 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 ""
#~ "Определя дали се ползва динамично управление на работните места или броят "
#~ "им е установено число (зададено чрез ключа „num-workspaces“ в „org.gnome."
#~ "desktop.wm.preferences“)."
#~ msgid "Workspaces only on primary"
#~ msgstr "Работни плотове само на основния екран"
#~ msgid ""
#~ "Determines whether workspace switching should happen for windows on all "
#~ "monitors or only for windows on the primary monitor."
#~ msgstr ""
#~ "Дали смяната на работни плотове да се извършва на всички екрани или само "
#~ "на основния."
#~ msgid "No tab popup"
#~ msgstr "Без изскачащ прозорец при обхождане"
#~ msgid ""
#~ "Determines whether the use of popup and highlight frame should be "
#~ "disabled for window cycling."
#~ msgstr ""
#~ "Дали отбелязването на рамка и изскачащият прозорец при обхождане на "
#~ "прозорците да се изключат."
#~ msgid "Delay focus changes until the pointer stops moving"
#~ msgstr "Смяната на фокуса да изчака спирането на показалеца"
#~ 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“ (под мишката), тогава фокусът няма да се предава веднага при "
#~ "навлизането в прозорец, а едва след като показалецът спре да се движи."
#~ msgid "Draggable border width"
#~ msgstr "Широчина на границата за влачене"
#~ 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 ""
#~ "Общ размер на границите за влачене. Ако видимите граници на темата са по-"
#~ "малки, се добавят невидими граници, за да се достигне тази величина."
#~ msgid "Auto maximize nearly monitor sized windows"
#~ msgstr ""
#~ "Автоматично максимизиране на прозорци с размер близък до този на екрана"
#~ msgid ""
#~ "If enabled, new windows that are initially the size of the monitor "
#~ "automatically get maximized."
#~ msgstr ""
#~ "Ако е включено, новите прозорци, чийто размер е близък на този на екрана, "
#~ "автоматично ще се максимизират."
#~ msgid "Place new windows in the center"
#~ msgstr "Поставяне на новите прозорци в центъра на екрана"
#~ msgid ""
#~ "When true, the new windows will always be put in the center of the active "
#~ "screen of the monitor."
#~ msgstr "Ако е включено, новите прозорци ще се поставят в центъра на екрана."
#~ msgid "Select window from tab popup"
#~ msgstr "Избиране при обхождане чрез изскачащ прозорец"
#~ msgid "Cancel tab popup"
#~ msgstr "Без изскачащ прозорец при обхождане"
#~ msgid "Switch to VT 1"
#~ msgstr "Превключване към виртуална графична конзола 1"
#~ msgid "Switch to VT 2"
#~ msgstr "Превключване към виртуална графична конзола 2"
#~ msgid "Switch to VT 3"
#~ msgstr "Превключване към виртуална графична конзола 3"
#~ msgid "Switch to VT 4"
#~ msgstr "Превключване към виртуална графична конзола 4"
#~ msgid "Switch to VT 5"
#~ msgstr "Превключване към виртуална графична конзола 5"
#~ msgid "Switch to VT 6"
#~ msgstr "Превключване към виртуална графична конзола 6"
#~ msgid "Switch to VT 7"
#~ msgstr "Превключване към виртуална графична конзола 7"
#~ msgid "Switch to VT 8"
#~ msgstr "Превключване към виртуална графична конзола 8"
#~ msgid "Switch to VT 9"
#~ msgstr "Превключване към виртуална графична конзола 9"
#~ msgid "Switch to VT 10"
#~ msgstr "Превключване към виртуална графична конзола 10"
#~ msgid "Switch to VT 11"
#~ msgstr "Превключване към виртуална графична конзола 11"
#~ msgid "Switch to VT 12"
#~ msgstr "Превключване към виртуална графична конзола 12"

297
po/da.po
View File

@ -10,7 +10,7 @@
# Joe Hansen <joedalton2@yahoo.dk>, 2011.
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16.
#
# Konventioner:
# Ordliste:
#
# display -> terminal
#
@ -19,9 +19,10 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-03-20 23:17+0100\n"
"PO-Revision-Date: 2016-03-20 21:46+0100\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-09-13 10:16+0000\n"
"PO-Revision-Date: 2016-09-08 23:52+0200\n"
"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
@ -29,255 +30,255 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navigation"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Flyt vindue til arbejdsområde 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Flyt vindue til arbejdsområde 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Flyt vindue til arbejdsområde 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Flyt vindue til arbejdsområde 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Flyt vindue til sidste arbejdsområde"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Flyt vindue et arbejdsområde til venstre"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Flyt vindue et arbejdsområde til højre"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Flyt vindue et arbejdsområde op"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Flyt vindue et arbejdsområde ned"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Flyt vindue en skærm til venstre"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Flyt vindue en skærm til højre"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Flyt vindue en skærm op"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Flyt vindue en skærm ned"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Skift mellem programmer"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Skift til forrige program"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Skift mellem vinduer"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Skift til forrige vindue"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Skift mellem vinduer i et program"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Skift til forrige vindue af et program"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Skift mellem systemkontroller"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Skift til forrige systemkontrol"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Skift direkte mellem vinduer"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Skift direkte til forrige vindue"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Skift direkte mellem vinduer i et program"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Skift direkte til forrige vindue af et program"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Skift direkte mellem systemkontroller"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Skift direkte til forrige systemkontrol"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Skjul alle normale vinduer"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Skift til arbejdsområde 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Skift til arbejdsområde 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Skift til arbejdsområde 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Skift til arbejdsområde 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Skift til sidste arbejdsområde"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Flyt til arbejdsområdet til venstre"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Flyt til arbejdsområdet til højre"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Flyt til arbejdsområdet ovenover"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Flyt til arbejdsområdet nedenunder"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "System"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Vis \"kør kommando\"-prompten"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Vis aktivitetsoversigten"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Vinduer"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Aktivér vinduesmenuen"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Slå fuldskærmstilstand til/fra"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Slå maksimering til/fra"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Maksimér vindue"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Gendan vindue"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Slå vinduesoprulning til/fra"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Luk vindue"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Skjul vindue"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Flyt vindue"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Ændr vinduesstørrelse"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Slå visning af vindue på alle arbejdsområder til/fra"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Hæv vindue hvis det er dækket, ellers sænk det"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Hæv vindue over andre vinduer"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Sænk vindue under andre vinduer"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Maksimér vindue lodret"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Maksimér vindue vandret"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Delt visning venstre"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Delt visning højre"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Modifikationstast til brug for udvidede vindueshåndteringsoperationer"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -289,11 +290,11 @@ msgstr ""
"\"Windows\"-tasten. Det forventes at denne binding enten har "
"standardværdien, eller er sat til den tomme streng."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Fastgør modaldialoger"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -302,13 +303,13 @@ msgstr ""
"Når sand, vil modaldialoger hænge sammen med titellinjen af ophavsvinduet og "
"flyttes sammen med dette, frem for at have uafhængige titellinjer."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Aktivér maksimering eller halvmaksimering når vinduer slippes over "
"skærmranden"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -319,11 +320,11 @@ msgstr ""
"tilgængelige område. Vinduer, der slippes på øverste skærmrand, maksimeres "
"helt."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Arbejdsområder håndteres dynamisk"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -333,11 +334,11 @@ msgstr ""
"antal arbejdsområder (angivet med nøglen num-workspaces i org.gnome.desktop."
"wm.preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Arbejdsområder kun på primær skærm"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -345,11 +346,11 @@ msgstr ""
"Angiver om skift mellem arbejdsområder skal ske for vinduer på alle skærme, "
"eller kun for vinduer på den primære skærm."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Ingen tab-pop-op"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -357,11 +358,11 @@ msgstr ""
"Afgør om brugen af pop-op og fremhævet vinduesramme skal deaktiveres ved "
"vinduesskifte."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Lad fokusændringer vente indtil markøren holder op med at bevæge sig"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -371,11 +372,11 @@ msgstr ""
"vil fokus ikke blive ændret omgående når man går ind i et nyt vindue, men "
"først efter markøren holder op med at bevæge sig."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Bredde af den trækbare kant"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -383,11 +384,11 @@ msgstr ""
"Samlet mængde kant der kan trækkes. Hvis temaets synlige grænser ikke er "
"nok, så vil usynlige kanter blive tilføjet for at møde denne værdi."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr "Maksimér automatisk vinduer hvis størrelse næsten passer til skærmen"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -395,96 +396,107 @@ msgstr ""
"Hvis aktiveret vil nye vinduer, som i begyndelsen har samme størrelse som "
"skærmen, blive automatisk maksimeret."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Placér nye vinduer i midten"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
msgstr ""
"Når sand, vil nye vinduer altid blive placeret i midten af den aktive skærm."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Vælg vindue fra tab-pop-op"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Annullér faneblads-pop-op"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Skift til VT 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Skift til VT 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Skift til VT 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Skift til VT 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Skift til VT 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Skift til VT 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Skift til VT 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Skift til VT 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Skift til VT 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Skift til VT 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Skift til VT 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Skift til VT 12"
#: ../src/backends/meta-monitor-manager.c:518
msgid "Built-in display"
msgstr "Indbygget skærm"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1845
msgid "Switch monitor"
msgstr "Skift skærm"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-input-settings.c:1847
msgid "Show on-screen help"
msgstr "Vis integreret hjælp"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Indbygget terminal"
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Ukendt"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Ukendt skærm"
msgstr "Ukendt terminal"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -492,20 +504,20 @@ msgid ""
msgstr ""
"En anden komposithåndtering kører allerede på skærm %i på terminal \"%s\"."
#: ../src/core/bell.c:192
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Bip-hændelse"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "“%s” svarer ikke."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Program svarer ikke."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -513,56 +525,56 @@ msgstr ""
"Du kan vælge at vente et lille stykke tid på at programmet fortsætter, eller "
"du kan tvinge programmet til at afslutte fuldstændigt."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Vent"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Tving til at afslutte"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Kunne ikke åbne X Window System-terminalen \"%s\"\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Deaktivér forbindelse til sessionshåndtering"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Erstat den kørende vindueshåndtering"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Angiv sessionhåndterings-id"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "X-skærm som bruges"
msgstr "X-terminal som bruges"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Initialisér session fra gemt fil"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Gør kald til X synkrone"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Kør som en wayland-kompositor"
#: ../src/core/main.c:223
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Kør som en indlejret kompositor"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Kør som fuld displayserver, frem for indlejret"
msgstr "Kør som fuld terminalserver, frem for indlejret"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -577,20 +589,20 @@ msgstr ""
"Der er INGEN garanti; ikke engang for SALGBARHED eller EGNETHED TIL ET "
"BESTEMT FORMÅL.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Vis version"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Mutter-udvidelsesmodul der skal bruges"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Arbejdsområde %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -599,16 +611,21 @@ msgstr ""
"Terminalen \"%s\" har allerede en vindueshåndtering; prøv tilvalget --"
"replace for at erstatte den aktuelle vindueshåndtering."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Skærm %d på terminal \"%s\" er ugyldig\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter blev kompileret uden understøttelse for uddybende tilstand\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Tilstandsskift: Tilstand %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -617,7 +634,7 @@ msgstr ""
"genstartes manuelt næste gang du logger på."
# Lad os håbe dette er rigtigt
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (på %s)"
@ -631,9 +648,6 @@ msgstr "%s (på %s)"
#~ "Kunne ikke finde et tema! Sikr dig at %s eksisterer og indeholder de "
#~ "sædvanlige temaer.\n"
#~ msgid "Screen %d on display \"%s\" already has a window manager\n"
#~ msgstr "Skærm %d på terminal \"%s\" har allerede en vindueshåndtering\n"
#~ msgid "%d x %d"
#~ msgstr "%d x %d"
@ -1133,15 +1147,6 @@ msgstr "%s (på %s)"
#~ "\"%s\" fundet i konfigurationsdatabasen er ikke en gyldig værdi for "
#~ "tastebindingen \"%s\"\n"
#~ msgid ""
#~ "Could not acquire window manager selection on screen %d display \"%s\"\n"
#~ msgstr ""
#~ "Kunne ikke fremskaffe vindueshåndteringvælgeren på skærm %d på terminal "
#~ "\"%s\"\n"
#~ msgid "Could not release screen %d on display \"%s\"\n"
#~ msgstr "Kunne ikke frigive skærm %d på terminal \"%s\"\n"
#~ msgid "Could not create directory '%s': %s\n"
#~ msgstr "Kunne ikke oprette mappen \"%s\": %s\n"

426
po/de.po
View File

@ -13,8 +13,8 @@ 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: 2016-08-19 21:04+0000\n"
"PO-Revision-Date: 2016-08-21 11:45+0200\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-07 18:55+0200\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n"
@ -22,7 +22,248 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.8\n"
"X-Generator: Poedit 1.8.9\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navigation"
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Fenster auf Arbeitsfläche 1 verschieben"
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Fenster auf Arbeitsfläche 2 verschieben"
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Fenster auf Arbeitsfläche 3 verschieben"
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Fenster auf Arbeitsfläche 4 verschieben"
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Fenster auf letzte Arbeitsfläche verschieben"
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Fenster eine Arbeitsfläche nach links verschieben"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Fenster eine Arbeitsfläche nach rechts verschieben"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Fenster eine Arbeitsfläche nach oben verschieben"
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Fenster eine Arbeitsfläche nach unten verschieben"
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Fenster einen Bildschirm nach links verschieben"
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Fenster einen Bildschirm nach rechts verschieben"
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Fenster einen Bildschirm nach oben verschieben"
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Fenster einen Bildschirm nach unten verschieben"
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Anwendungen wechseln"
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Zur vorherigen Anwendung wechseln"
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Fenster wechseln"
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Zum vorherigen Fenster wechseln"
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Zwischen den Fenstern einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Zum vorherigen Fenster einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Systemsteuerungen umschalten"
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Zur vorherigen Systemsteuerungen wechseln"
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Fenster sofort wechseln"
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Direkt zum vorherigen Fenster wechseln"
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Sofort zwischen den Fenstern einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Direkt zum vorherigen Fenster einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Systemsteuerungen sofort umschalten"
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Direkt zur vorherigen Systemsteuerungen wechselen"
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Alle normalen Fenster verbergen"
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Zur Arbeitsfläche 1 wechseln"
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Zur Arbeitsfläche 2 wechseln"
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Zur Arbeitsfläche 3 wechseln"
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Zur Arbeitsfläche 4 wechseln"
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Zur letzten Arbeitsfläche wechseln"
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Auf Arbeitsfläche links verschieben"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Auf Arbeitsfläche rechts verschieben"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Auf Arbeitsfläche darüber verschieben"
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Auf Arbeitsfläche darunter verschieben"
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "System"
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Den »Befehl ausführen«-Dialog anzeigen"
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Aktivitäten-Übersicht anzeigen"
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Fenster"
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Das Fenstermenü aktivieren"
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Vollbildmodus ein-/ausschalten"
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Maximierungszustand ein-/ausschalten"
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Fenster maximieren"
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Fenstergröße wiederherstellen"
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Fenster ein-/ausrollen"
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Fenster schließen"
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Fenster verbergen"
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Fenster verschieben"
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Fenstergröße ändern"
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr ""
"Festlegen, ob das Fenster auf allen oder nur einer Arbeitsfläche sichtbar ist"
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Fenster anheben, falls es verdeckt ist, andernfalls absenken"
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Fenster vor die anderen Fenster anheben"
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Fenster hinter die anderen Fenster absenken"
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Fenster vertikal maximieren"
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Fenster horizontal maximieren"
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Ansicht links teilen"
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Ansicht rechts teilen"
#: data/mutter.desktop.in:4
msgid "Mutter"
@ -398,185 +639,6 @@ msgstr ""
msgid "%s (on %s)"
msgstr "%s (auf %s)"
#~ msgid "Navigation"
#~ msgstr "Navigation"
#~ msgid "Move window to workspace 1"
#~ msgstr "Fenster auf Arbeitsfläche 1 verschieben"
#~ msgid "Move window to workspace 2"
#~ msgstr "Fenster auf Arbeitsfläche 2 verschieben"
#~ msgid "Move window to workspace 3"
#~ msgstr "Fenster auf Arbeitsfläche 3 verschieben"
#~ msgid "Move window to workspace 4"
#~ msgstr "Fenster auf Arbeitsfläche 4 verschieben"
#~ msgid "Move window to last workspace"
#~ msgstr "Fenster auf letzte Arbeitsfläche verschieben"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Fenster eine Arbeitsfläche nach links verschieben"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Fenster eine Arbeitsfläche nach rechts verschieben"
#~ msgid "Move window one workspace up"
#~ msgstr "Fenster eine Arbeitsfläche nach oben verschieben"
#~ msgid "Move window one workspace down"
#~ msgstr "Fenster eine Arbeitsfläche nach unten verschieben"
#~ msgid "Move window one monitor to the left"
#~ msgstr "Fenster einen Bildschirm nach links verschieben"
#~ msgid "Move window one monitor to the right"
#~ msgstr "Fenster einen Bildschirm nach rechts verschieben"
#~ msgid "Move window one monitor up"
#~ msgstr "Fenster einen Bildschirm nach oben verschieben"
#~ msgid "Move window one monitor down"
#~ msgstr "Fenster einen Bildschirm nach unten verschieben"
#~ msgid "Switch applications"
#~ msgstr "Anwendungen wechseln"
#~ msgid "Switch to previous application"
#~ msgstr "Zur vorherigen Anwendung wechseln"
#~ msgid "Switch windows"
#~ msgstr "Fenster wechseln"
#~ msgid "Switch to previous window"
#~ msgstr "Zum vorherigen Fenster wechseln"
#~ msgid "Switch windows of an application"
#~ msgstr "Zwischen den Fenstern einer Anwendung wechseln"
#~ msgid "Switch to previous window of an application"
#~ msgstr "Zum vorherigen Fenster einer Anwendung wechseln"
#~ msgid "Switch to previous system control"
#~ msgstr "Zur vorherigen Systemsteuerungen wechseln"
#~ msgid "Switch windows directly"
#~ msgstr "Fenster sofort wechseln"
#~ msgid "Switch directly to previous window"
#~ msgstr "Direkt zum vorherigen Fenster wechseln"
#~ msgid "Switch windows of an app directly"
#~ msgstr "Sofort zwischen den Fenstern einer Anwendung wechseln"
#~ msgid "Switch directly to previous window of an app"
#~ msgstr "Direkt zum vorherigen Fenster einer Anwendung wechseln"
#~ msgid "Switch system controls directly"
#~ msgstr "Systemsteuerungen sofort umschalten"
#~ msgid "Switch directly to previous system control"
#~ msgstr "Direkt zur vorherigen Systemsteuerungen wechselen"
#~ msgid "Hide all normal windows"
#~ msgstr "Alle normalen Fenster verbergen"
#~ msgid "Switch to workspace 1"
#~ msgstr "Zur Arbeitsfläche 1 wechseln"
#~ msgid "Switch to workspace 2"
#~ msgstr "Zur Arbeitsfläche 2 wechseln"
#~ msgid "Switch to workspace 3"
#~ msgstr "Zur Arbeitsfläche 3 wechseln"
#~ msgid "Switch to workspace 4"
#~ msgstr "Zur Arbeitsfläche 4 wechseln"
#~ msgid "Switch to last workspace"
#~ msgstr "Zur letzten Arbeitsfläche wechseln"
#~ msgid "Move to workspace left"
#~ msgstr "Auf Arbeitsfläche links verschieben"
#~ msgid "Move to workspace right"
#~ msgstr "Auf Arbeitsfläche rechts verschieben"
#~ msgid "Move to workspace above"
#~ msgstr "Auf Arbeitsfläche darüber verschieben"
#~ msgid "Move to workspace below"
#~ msgstr "Auf Arbeitsfläche darunter verschieben"
#~ msgid "System"
#~ msgstr "System"
#~ msgid "Show the run command prompt"
#~ msgstr "Den »Befehl ausführen«-Dialog anzeigen"
#~ msgid "Show the activities overview"
#~ msgstr "Aktivitäten-Übersicht anzeigen"
#~ msgid "Windows"
#~ msgstr "Fenster"
#~ msgid "Activate the window menu"
#~ msgstr "Das Fenstermenü aktivieren"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Vollbildmodus ein-/ausschalten"
#~ msgid "Toggle maximization state"
#~ msgstr "Maximierungszustand ein-/ausschalten"
#~ msgid "Maximize window"
#~ msgstr "Fenster maximieren"
#~ msgid "Restore window"
#~ msgstr "Fenstergröße wiederherstellen"
#~ msgid "Toggle shaded state"
#~ msgstr "Fenster ein-/ausrollen"
#~ msgid "Close window"
#~ msgstr "Fenster schließen"
#~ msgid "Hide window"
#~ msgstr "Fenster verbergen"
#~ msgid "Move window"
#~ msgstr "Fenster verschieben"
#~ msgid "Resize window"
#~ msgstr "Fenstergröße ändern"
#~ msgid "Toggle window on all workspaces or one"
#~ msgstr ""
#~ "Festlegen, ob das Fenster auf allen oder nur einer Arbeitsfläche sichtbar "
#~ "ist"
#~ msgid "Raise window if covered, otherwise lower it"
#~ msgstr "Fenster anheben, falls es verdeckt ist, andernfalls absenken"
#~ msgid "Raise window above other windows"
#~ msgstr "Fenster vor die anderen Fenster anheben"
#~ msgid "Lower window below other windows"
#~ msgstr "Fenster hinter die anderen Fenster absenken"
#~ msgid "Maximize window vertically"
#~ msgstr "Fenster vertikal maximieren"
#~ msgid "Maximize window horizontally"
#~ msgstr "Fenster horizontal maximieren"
#~ msgid "View split on left"
#~ msgstr "Ansicht links teilen"
#~ msgid "View split on right"
#~ msgstr "Ansicht rechts teilen"
#~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "Der Themenordner konnte nicht eingelesen werden: %s\n"

273
po/el.po
View File

@ -20,8 +20,8 @@ msgstr ""
"Project-Id-Version: metacity.gnome-2-26\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-12 01:36+0000\n"
"PO-Revision-Date: 2016-03-14 23:05+0200\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-15 11:47+0300\n"
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
"Language-Team: Greek, Modern (1453-) <opensuse-translation-el@opensuse.org>\n"
"Language: el\n"
@ -29,258 +29,258 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.7\n"
"X-Generator: Poedit 1.8.9\n"
"X-Project-Style: gnome\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Περιήγηση"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Μετακίνηση παραθύρου στον χώρο εργασίας 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Μετακίνηση παραθύρου στον χώρο εργασίας 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Μετακίνηση παραθύρου στον χώρο εργασίας 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Μετακίνηση παραθύρου στον χώρο εργασίας 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Μετακίνηση παραθύρου στον τελευταίο χώρο εργασίας"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Μετακίνηση παραθύρου έναν χώρο εργασίας αριστερά"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Μετακίνηση παραθύρου έναν χώρο εργασίας δεξιά"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Μετακίνηση παραθύρου έναν χώρο εργασίας πάνω"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Μετακίνηση παραθύρου έναν χώρο εργασίας κάτω"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Μετακίνηση παραθύρου κατά μια οθόνη στα αριστερά"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Μετακίνηση παραθύρου κατά μια οθόνη στα δεξιά"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Μετακίνηση παραθύρου κατά μια οθόνη προς τα πάνω"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Μετακίνηση παραθύρου κατά μια οθόνη προς τα κάτω"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Εναλλαγή εφαρμογών"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Εναλλαγή στην προηγούμενη εφαρμογή"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Εναλλαγή παραθύρων"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Εναλλαγή στο προηγούμενο παράθυρο"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Εναλλαγή παραθύρων μιας εφαρμογής"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Εναλλαγή στο προηγούμενο παράθυρο μιας εφαρμογής"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Εναλλαγή ελέγχων συστήματος"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Εναλλαγή σε προηγούμενους ελέγχους συστήματος"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Άμεση εναλλαγή παραθύρων"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Άμεση εναλλαγή στο προηγούμενο παράθυρο"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Άμεση εναλλαγή παραθύρων μιας εφαρμογής"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Άμεση εναλλαγή στο προηγούμενο παράθυρο μιας εφαρμογής"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Άμεση εναλλαγή ελέγχων συστήματος"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Άμεση εναλλαγή σε προηγούμενους ελέγχους συστήματος"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Απόκρυψη όλων των κανονικών παραθύρων"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Εναλλαγή στον χώρο εργασίας 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Εναλλαγή στον χώρο εργασίας 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Εναλλαγή στον χώρο εργασίας 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Εναλλαγή στον χώρο εργασίας 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Εναλλαγή στον τελευταίο χώρο εργασίας"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Μετακίνηση στον χώρο εργασίας αριστερά"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Μετακίνηση στον χώρο εργασίας δεξιά"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Μετακίνηση στον χώρο εργασίας επάνω"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Μετακίνηση στον χώρο εργασίας κάτω"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Σύστημα"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Εμφάνιση της προτροπής της εντολής run"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Εμφάνιση της επισκόπησης των δραστηριοτήτων"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Παράθυρα"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Ενεργοποίηση του μενού παραθύρου"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Εναλλαγή κατάστασης πλήρους οθόνης"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Εναλλαγή κατάστασης μεγιστοποίησης"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Μεγιστοποίηση παραθύρου"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Επαναφορά παραθύρου"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Εναλλαγή σκιασμένης κατάστασης"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Κλείσιμο παραθύρου"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Απόκρυψη παραθύρου"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Μετακίνηση παραθύρου"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Αυξομείωση παραθύρου"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Εναλλαγή παραθύρου σε όλες τις επιφάνειες εργασίας ή σε μία"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Ανύψωση παραθύρου εάν καλύπτεται, αλλιώς βύθισή του"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Ανύψωση παραθύρου πάνω από τα άλλα παράθυρα"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Βύθιση παραθύρου κάτω από τα άλλα παράθυρα"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Μεγιστοποίηση παραθύρου κάθετα"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Μεγιστοποίηση παραθύρου οριζόντια"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Μεγιστοποίηση στα αριστερά"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Μεγιστοποίηση στα δεξιά"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Μετατροπέας για χρήση στις εκτεταμένες ενέργειες διαχείρισης παραθύρων"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -293,11 +293,11 @@ msgstr ""
"αυτή η αντιστοίχιση θα είναι είτε η προεπιλογή ή θα ορίζεται στην κενή "
"συμβολοσειρά."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Επισύναψη σχηματικών διαλόγων"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -307,13 +307,13 @@ msgstr ""
"εμφανίζονται στην μπάρα τίτλου του γονικού παραθύρου και μετακινούνται μαζί "
"με το γονικό παράθυρο."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Ενεργοποίηση της παράθεσης παραθύρων όταν τα μετακινείτε στις άκρες της "
"οθόνης"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -324,11 +324,11 @@ msgstr ""
"καλύψουν το μισό της οθόνης. Το σύρσιμο των παραθύρων στο πάνω μέρος της "
"οθόνης τα μεγιστοποιεί ολοκληρωτικά."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Οι χώροι εργασίας διαχειρίζονται δυναμικά"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -338,11 +338,11 @@ msgstr ""
"στατικός αριθμός χώρων εργασίας (καθορίζεται από το κλειδί num-workspaces "
"στο org.gnome.desktop.wm.preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Χώροι εργασίας μόνο στην κύρια"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -350,11 +350,11 @@ msgstr ""
"Καθορίζει εάν η εναλλαγή των χώρων εργασίας θα συμβαίνει για τα παράθυρα σε "
"όλες τις οθόνες ή μόνο για τα παράθυρα της κύριας οθόνης."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Καμία αναδυόμενη καρτέλα"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -362,12 +362,12 @@ msgstr ""
"Καθορίζει αν πρέπει να απενεργοποιηθεί η χρήση της ανάδυσης και επισήμανσης "
"του πλαισίου για την κυκλική εναλλαγή των παραθύρων."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr ""
"Η καθυστέρηση της εστίασης αλλάζει μέχρι ο δείκτης να σταματήσει να κινείται"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -377,11 +377,11 @@ msgstr ""
"\"mouse\" τότε η εστίαση δεν θα αλλάξει αμέσως όταν ανοίγετε ένα παράθυρο, "
"αλλά μόνο όταν ο δείκτης σταματήσει να κινείται."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Συρόμενο πλάτος περιγράμματος"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -390,13 +390,13 @@ msgstr ""
"θέματος δεν είναι αρκετά, θα προστεθούν αόρατα περιγράμματα για την κάλυψη "
"αυτής της τιμής."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
"Αυτόματη μεγιστοποίηση των παραθύρων των οποίων το μέγεθος είναι κοντά με το "
"μέγεθος της οθόνης"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -404,11 +404,11 @@ msgstr ""
"Εάν ενεργοποιηθεί, τα νέα παράθυρα που είναι αρχικά στο μέγεθος της οθόνης "
"μεγιστοποιούνται αυτόματα."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Τοποθέτηση νέων παραθύρων στο κέντρο"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -416,85 +416,93 @@ msgstr ""
"Αν είναι αληθές, τα νέα παράθυρα θα είναι πάντα τοποθετημένα στο κέντρο της "
"κύριας οθόνης."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Επιλογή παραθύρου από την αναδυόμενη καρτέλα"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Ακύρωση αναδυόμενης καρτέλας"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Εναλλαγή στο VT 1 "
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Εναλλαγή στο VT 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Εναλλαγή στο VT 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Εναλλαγή στο VT 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Εναλλαγή στο VT 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Εναλλαγή στο VT 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Εναλλαγή στο VT 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Εναλλαγή στο VT 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Εναλλαγή στο VT 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Εναλλαγή στο VT 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Εναλλαγή στο VT 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Εναλλαγή στο VT 12"
#: ../src/backends/meta-monitor-manager.c:518
#: src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Εναλλαγή οθόνης"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Εμφάνιση βοήθειας στην οθόνη"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Ενσωματωμένη οθόνη"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Άγνωστη"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Άγνωστη οθόνη"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -502,20 +510,20 @@ msgid ""
msgstr ""
"Εκτελείται ένας άλλος διαχειριστής παραθύρων στην οθόνη %i προβολή \"%s\"."
#: ../src/core/bell.c:192
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Ηχητικό συμβάν κουδουνιού"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "Το “%s” δεν ανταποκρίνεται."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Η εφαρμογή δεν ανταποκρίνεται."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -523,57 +531,57 @@ msgstr ""
"Μπορείτε να επιλέξετε να περιμένετε λίγο για να συνεχίσει, ή να εξαναγκάσετε "
"την εφαρμογή σε έξοδο."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Αναμονή"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Εξαναγκασμός σε τερματισμό"
# gconf/gconf-internals.c:2416
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Αποτυχία ανοίγματος οθόνης του συστήματος παραθύρων Χ '%s'\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Απενεργοποίηση σύνδεσης στο διαχειριστή συνεδρίας"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Αντικατάσταση του τρέχοντος διαχειριστή παραθύρων"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Καθορισμός αναγνωριστικού διαχείρισης συνεδρίας"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Εμφάνιση Χ για χρήση"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Εκκίνηση συνεδρίας από savefile"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Να καταστούν σύγχρονες οι κλήσεις του X"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Εκτέλεση ως wayland compositor"
#: ../src/core/main.c:223
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Εκτέλεση ως ενσωματωμένος compositor"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Εκτέλεση ως διακομιστής πλήρους οθόνης, αντί ενσωματωμένης"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -587,22 +595,22 @@ msgstr ""
"άλλοι\n"
"Αυτό είναι ελεύθερο λογισμικό, βλ. τον πηγαίο κώδικα για όρους αντιγραφής.\n"
"ΔΕΝ παρέχεται καμία εγγύηση, ούτε ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ούτε ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ "
"ΣΥΓΚΕΚΡΙΜΕΝΟΣΚΟΠΟ.\n"
"ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Εμφάνιση έκδοσης"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Πρόσθετα του Mutter για χρήση"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Χώρος εργασίας %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -612,27 +620,32 @@ msgstr ""
"χρησιμοποιήσετε την επιλογή --replace για να αντικαταστήσετε τον τρέχων "
"διαχειριστή παραθύρων."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Η οθόνη %d στην προβολή '%s' δεν είναι έγκυρη\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr ""
"Το Mutter έχει μεταγλωττιστεί χωρίς υποστήριξη για λειτουργία εμφάνισης "
"λεπτομερειών\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Λειτουργία διακόπτη: Λειτουργία %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
msgstr ""
"Αυτά τα παράθυρα δεν υποστηρίζουν &quot;αποθήκευση τρέχουσας "
"Αυτά τα παράθυρα δεν υποστηρίζουν &quot;αποθήκευση της τρέχουσας "
"εγκατάστασης&quot; και θα πρέπει να επανεκκινηθούν χειροκίνητα στην επόμενη "
"είσοδο σας."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (σε %s)"

File diff suppressed because it is too large Load Diff

277
po/fr.po
View File

@ -9,275 +9,276 @@
# Baptiste Mille-Mathias <baptiste@mille-mathias.info>, 2004.
# Jonathan Ernst <jonathan@ernstfamily.ch>, 2006.
# Cyprien Le Pannérer <cyplp@free.fr>, 2006.
# Robert-André Mauchin <zebob.m@gmail.com>, 2007.
# Robert-André Mauchin <zebob.m@gmail.com>, 2007.
# Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007.
# Claude Paroz <claude@2xlibre.net>, 2008-2016.
# Bruno Brouard <annoa.b@gmail.com>, 2011-12.
#
# Charles Monzat <superboa@hotmail.fr>, 2016.
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: 2016-03-05 13:41+0000\n"
"PO-Revision-Date: 2016-03-05 17:57+0100\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"POT-Creation-Date: 2016-09-12 23:59+0000\n"
"PO-Revision-Date: 2016-09-13 12:13+0200\n"
"Last-Translator: Charles Monzat <superboa@hotmail.fr>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.9\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navigation"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Déplacer la fenêtre vers l'espace de travail 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Déplacer la fenêtre vers l'espace de travail 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Déplacer la fenêtre vers l'espace de travail 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Déplacer la fenêtre vers l'espace de travail 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Déplacer la fenêtre vers le dernier espace de travail"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Déplacer la fenêtre d'un espace de travail vers la gauche"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Déplacer la fenêtre d'un espace de travail vers la droite"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Déplacer la fenêtre d'un espace de travail vers le haut"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Déplacer la fenêtre d'un espace de travail vers le bas"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Déplacer la fenêtre d'un écran vers la gauche"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Déplacer la fenêtre d'un écran vers la droite"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Déplacer la fenêtre d'un écran vers le haut"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Déplacer la fenêtre d'un écran vers le bas"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Changer d'application"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Passer à l'application précédente"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Changer de fenêtre"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Passer à la fenêtre précédente"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Changer de fenêtre d'une application"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Passer à la fenêtre précédente d'une application"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Changer les contrôles système"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Passer au contrôle système précédent"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Changer de fenêtre directement"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Passer directement à la fenêtre précédente"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Changer de fenêtre d'une application directement"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Passer directement à la fenêtre précédente d'une application"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Changer les contrôles système directement"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Passer directement au contrôle système précédent"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Masquer toutes les fenêtres normales"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Passer à l'espace de travail 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Passer à l'espace de travail 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Passer à l'espace de travail 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Passer à l'espace de travail 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Passer au dernier espace de travail"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Déplacer vers l'espace de travail de gauche"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Déplacer vers l'espace de travail de droite"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Déplacer vers l'espace de travail du dessus"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Déplacer vers l'espace de travail du dessous"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Système"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Afficher la fenêtre pour lancer une commande"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Afficher l'aperçu des activités"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Fenêtres"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Activer le menu fenêtre"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Basculer le mode plein écran"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Basculer l'état d'agrandissement"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Maximiser la fenêtre"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Restaurer la fenêtre"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Basculer l'état de repli"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Fermer la fenêtre"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Masquer la fenêtre"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Déplacer la fenêtre"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Redimensionner la fenêtre"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Placer la fenêtre sur tous les espaces de travail, ou sur un seul"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr ""
"Mettre la fenêtre au premier plan si elle est cachée, sinon à l'arrière-plan"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Mettre la fenêtre au premier plan"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Mettre la fenêtre sous les autres fenêtres"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Maximiser la fenêtre verticalement"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Maximiser la fenêtre horizontalement"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Vue divisée sur la gauche"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Vue divisée sur la droite"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Touche à utiliser pour les opérations étendues de gestion des fenêtres"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -289,11 +290,11 @@ msgstr ""
"matériel PC est la touche Windows. En principe, ce raccourci est configuré "
"sur le réglage par défaut ou sur la chaîne vide."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Attacher les boîtes de dialogue modale"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -303,11 +304,11 @@ msgstr ""
"dialogue apparaissent attachées à la barre de titre de la fenêtre parente et "
"sont déplacées ensembles avec elle."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Activer l'empilage des fenêtres déposées sur les bords de l'écran"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -318,11 +319,11 @@ msgstr ""
"la moitié de la zone disponible. Le dépôt des fenêtres sur le bord supérieur "
"de l'écran les maximise complètement."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Les espaces de travail sont gérés de manière dynamique"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -332,11 +333,11 @@ msgstr ""
"nombre d'espaces de travail est fixe (déterminé par la clé num-workspaces "
"dans org.gnome.desktop.wm.preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Espaces de travail seulement sur l'écran principal"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -345,11 +346,11 @@ msgstr ""
"fenêtres de tous les écrans ou seulement pour les fenêtres de l'écran "
"principal."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Aucune apparition suite à un appui sur la touche tab"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -357,11 +358,11 @@ msgstr ""
"Détermine si l'utilisation de fenêtres surgissantes et de mise en valeur "
"doit être désactivée pour la consultation des fenêtres."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Attend l'arrêt du pointeur avant le changement de focus"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -371,11 +372,11 @@ msgstr ""
"alors le focus ne sera pas changé immédiatement en passant sur une fenêtre, "
"mais seulement après que le pointeur s'arrête."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Largeur de bordure ajustable"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -384,13 +385,13 @@ msgstr ""
"visibles du thème ne sont pas suffisantes, des bordures invisibles sont "
"ajoutées pour arriver à cette valeur."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
"Maximiser automatiquement les fenêtres dont la taille est proche de celle de "
"l'écran"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -398,11 +399,11 @@ msgstr ""
"Si activé, les nouvelles fenêtres qui ont presque la taille de l'écran à "
"l'ouverture seront maximisées automatiquement."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Placer les nouvelles fenêtres au centre"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -410,87 +411,98 @@ msgstr ""
"Si true (vrai), les nouvelles fenêtres seront toujours placées au centre de "
"l'écran actif du moniteur."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr ""
"Sélectionner la fenêtre dans la vue qui apparaît suite à un appui sur la "
"touche tab"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Fermer la vue qui apparaît suite à un appui sur la touche tab"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Passer à l'émulateur de terminal 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Passer à l'émulateur de terminal 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Passer à l'émulateur de terminal 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Passer à l'émulateur de terminal 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Passer à l'émulateur de terminal 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Passer à l'émulateur de terminal 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Passer à l'émulateur de terminal 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Passer à l'émulateur de terminal 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Passer à l'émulateur de terminal 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Passer à l'émulateur de terminal 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Passer à l'émulateur de terminal 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Passer à l'émulateur de terminal 12"
#: ../src/backends/meta-monitor-manager.c:518
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:1845
msgid "Switch monitor"
msgstr "Changer de moniteur"
#: src/backends/meta-input-settings.c:1847
msgid "Show on-screen help"
msgstr "Afficher l'aide à l'écran"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Affichage intégré"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Inconnu"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Affichage inconnu"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -499,20 +511,20 @@ msgstr ""
"Un autre gestionnaire de composition est déjà lancé sur l'écran %i de "
"l'affichage « %s »."
#: ../src/core/bell.c:185
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Évènement sonore"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "« %s » ne répond pas."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "L'application ne répond pas."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -520,56 +532,56 @@ msgstr ""
"Vous pouvez patienter un instant pour continuer ou forcer l'application à "
"quitter définitivement."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Attendre"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Forcer à quitter"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Impossible d'ouvrir l'affichage « %s » du système X Window\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Désactiver la connexion au gestionnaire de sessions"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Indiquer l'ID de gestion de sessions"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Affichage X à utiliser"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Initialiser la session depuis le fichier de sauvegarde"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Rendre synchrones les appels à X"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Lancer comme un compositeur wayland"
#: ../src/core/main.c:223
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Lancer comme un compositeur imbriqué"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Lancer comme un serveur d'affichage complet, plutôt qu'imbriqué"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -585,20 +597,20 @@ msgstr ""
"Il n'y a AUCUNE garantie ; même pas de VALEUR MARCHANDE ou\n"
"d'ADÉQUATION À UN USAGE PARTICULIER.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Afficher la version"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Greffon de Mutter à utiliser"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Espace de travail %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -607,16 +619,21 @@ msgstr ""
"L'affichage « %s » a déjà un gestionnaire de fenêtres ; essayez d'utiliser "
"l'option --replace pour remplacer le gestionnaire de fenêtres actuel."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "L'écran %d sur l'affichage « %s » n'est pas valide\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter a été compilé sans la prise en charge du mode bavard\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Changement de mode : mode %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -625,7 +642,7 @@ msgstr ""
"configuration actuelle » et devront être redémarrées manuellement à la "
"prochaine connexion."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (sur %s)"

274
po/gl.po
View File

@ -13,268 +13,271 @@
msgid ""
msgstr ""
"Project-Id-Version: gl\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-03-02 09:49+0100\n"
"PO-Revision-Date: 2016-03-02 09:49+0200\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
"keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-09-09 01:16+0000\n"
"PO-Revision-Date: 2016-09-11 00:48+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: gnome-l10n-gl@gnome.org\n"
"Language-Team: Galician\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navegación"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Mover xanela ao espazo de traballo 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Mover xanela ao espazo de traballo 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Mover xanela ao espazo de traballo 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Mover xanela ao espazo de traballo 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Mover xanela ao último espazo de traballo"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Mover xanela un espazo de traballo cara á esquerda"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Mover xanela un espazo de traballo cara á dereita"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Mover xanela un espazo de traballo cara a arriba"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Mover xanela un espazo de traballo cara a abaixo"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Mover xanela un monitor á esquerda"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Mover xanela un monitor á dereita"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Mover xanela un monitor arriba"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Mover xanela un espazo de traballo abaixo"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Cambiar entre aplicativos"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Cambiar ao aplicativo aplicativos"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Cambiar xanelas"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Cambiar á xanela anterior"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Cambiar entre as xanelas dun aplicativo"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Cambia á xanela anterior dun aplicativo"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
#| msgid "Switch system controls directly"
msgid "Switch system controls"
msgstr "Cambiar entre os controles do sistema"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Cambia ao control do sistema anterior"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Cambiar xanelas directamente"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Cambia directamente á xanela anterior"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Cambiar entre as xanelas dun aplicativo directamente"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Cambia directamente á xanela anterior do aplicativo"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Cambiar entre os controles do sistema directamente"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Cambiar directamente ao control do sistema anterior"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Ocultar todas as xanelas normais"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Cambiar ao espazo de traballo 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Cambiar ao espazo de traballo 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Cambiar ao espazo de traballo 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Cambiar ao espazo de traballo 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Cambiar ao último espazo de traballo"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Mover ao espazo da esquerda"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Mover ao espazo da dereita"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Mover ao espazo de arriba"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Mover ao espazo de traballo de abaixo"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Sistema"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Mostrar o diálogo de executar orde"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Mostrar a vista xeral de actividades"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Xanelas"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Activar o menú da xanela"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Trocar modo de pantalla completa"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Trocar o estado maximizado"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Maximizar xanela"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Restaurar xanela"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Trocar o estado ensombrecido"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Pechar xanela"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Ocultar xanela"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Mover xanela"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Redimensionar xanela"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Trocar que a xanela apareza en tódolos espazos de traballo ou nun"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Elevar a xanela se está cuberta por outra, en caso contrario baixala"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Subir a xanela por enriba doutras xanelas"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Baixar xanela debaixo doutras xanelas"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Maximizar xanela verticalmente"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Maximizar xanela horizontalmente"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Dividir vista á esquerda"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Dividir vista á dereita"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr ""
"Modificador que se vai usar para as accións modificadas de xestión de xanela"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -286,11 +289,11 @@ msgstr ""
"nun PC é a «Tecla Windows». Espérase que este enlace sexa configurado ao "
"valor predeterminado ou á cadena baleira."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Anexar os diálogos modais"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -300,11 +303,11 @@ msgstr ""
"diálogos modais aparecerán anexados á barra de título da xanela pai e "
"moveranse de forma conxunta á xanela pai."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Activar o mosaico nos bordos ao arrastrar xanelas aos bordos da xanela"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -315,11 +318,11 @@ msgstr ""
"metade da área dispoñíbel. Arrastrar xanelas ao bordo superior da pantalla "
"maximízaas por completo."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Os espazos de traballo xestiónanse dinamicamente"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -329,11 +332,11 @@ msgstr ""
"número estático de áreas de traballo (determinado pola chave «num-"
"workspaces» en «org.gnome.desktop.wm.preferences»)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Espazos de traballo só no principal"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -341,11 +344,11 @@ msgstr ""
"Determina se o troco de espazo de traballo debe facerse para as xanelas de "
"todos os monitores ou só para o monitor principal."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "No hai lapela emerxente"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -353,11 +356,11 @@ msgstr ""
"Determina se se debe desactivar o uso de xanelas emerxentes e marcos "
"realzados ao cambiar entre xanelas."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Retrasar o cambio de enfoque até que o punteiro se deteña ao moverse"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -367,11 +370,11 @@ msgstr ""
"entón o enfoque non se cambiará de forma inmediata ao entrar nunha xanela, "
"só cando o punteiro se deteña sobre ela."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Anchura arrastrábel do bordo"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -379,12 +382,12 @@ msgstr ""
"A cantidade total de bordo arrastrábel. Se os bordos visíbeis do tema non "
"son suficientes, engadiranse bordos invisíbeis para satisfacer este valor."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
"Maximizar automaticamente as xanelas que case teñan o tamaño da pantalla"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -392,11 +395,11 @@ msgstr ""
"Se está activada, as xanelas novas que inicialmente teñan o tamaño da "
"pantalla maximizaranse automaticamente."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Dispor as novas xanelas no centro"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -404,85 +407,93 @@ msgstr ""
"Cando está verdadeiro, as novas xanelas sempre se porán no centro da "
"pantalla activa."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Seleccionar xanela da lapela emerxente"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Cancelar lapela emerxente"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Cambiar á VT 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Cambiar á VT 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Cambiar á VT 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Cambiar á VT 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Cambiar á VT 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Cambiar á VT 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Cambiar á VT 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Cambiar á VT 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Cambiar á VT 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Cambiar á VT 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Cambiar á VT 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Cambiar á VT 12"
#: ../src/backends/meta-monitor-manager.c:518
#: src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Cambiar monitor"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Mostrar axuda en pantalla"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Pantalla embebida"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Descoñecido"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Pantalla descoñecida"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -491,20 +502,20 @@ msgstr ""
"Xa se está a executar outro xestor de composición na pantalla %i na "
"visualización «%s»"
#: ../src/core/bell.c:185
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Evento de campá"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "«%s» non está respondendo."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "O Aplicativo non está respondendo."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -512,56 +523,56 @@ msgstr ""
"Pode elixir esperar un momento para ver se continúa ou forzar ao aplicativo "
"a pechar completamente."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "Espe_rar"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Forzar a saída"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Produciuse un erro ao abrir a visualización do X Window System «%s»\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Desactivar a conexión ao xestor de sesión"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Substituír o xestor de xanelas en execución"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Especificar o ID de xestión de sesión"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Pantalla X que se vai usar"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Inicializar sesión desde o ficheiro de salvagarda"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Facer que as chamadas a X sexan sincrónicas"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Executar como compositor de wayland"
#: ../src/core/main.c:223
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Executar como compositor anidado"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Executar como un servidor de pantalla completo, fronte a un aniñado"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -576,20 +587,20 @@ msgstr ""
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
"PARTICULAR PURPOSE.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Imprimir versión"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Engadido de mutter que usar"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Espazo de traballo %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -598,16 +609,21 @@ msgstr ""
"A pantalla «%s» ten xa un xestor de xanelas, tente usar a opción --replace "
"para substituír o xestor de xanelas."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "A pantalla %d na visualización «%s» non é válida\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter foi compilado sen compatibilidade para o modo detallado\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Modo conmutador: Modo %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -615,7 +631,7 @@ msgstr ""
"Estas xanelas non soportan &quot;save current setup&quot; e terán que "
"reiniciarse manualmente a próxima vez que inicie a sesión."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (en %s)"

318
po/kk.po
View File

@ -8,277 +8,267 @@ msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-08 23:11+0000\n"
"PO-Revision-Date: 2015-03-09 15:42+0500\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-09 21:12+0500\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk@li.org>\n"
"Language: kk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.7.3\n"
"X-Generator: Poedit 1.8.9\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Навигация"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Терезені 1-ші жұмыс орнына жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Терезені 2-ші жұмыс орнына жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Терезені 3-ші жұмыс орнына жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Терезені 4-ші жұмыс орнына жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Терезені соңғы жұмыс орнына жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Терезені бір жұмыс орнына солға жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Терезені бір жұмыс орнына оңға жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Терезені бір жұмыс орнына жоғары жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Терезені бір жұмыс орнына төмен жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:11
#| msgid "Move window one workspace to the left"
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Терезені бір мониторға солға жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:12
#| msgid "Move window one workspace to the right"
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Терезені бір мониторға оңға жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:13
#| msgid "Move window one workspace up"
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Терезені бір мониторға жоғары жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:14
#| msgid "Move window one workspace down"
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Терезені бір мониторға төмен жылжыту"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Қолданбаларды ауыстыру"
#: ../data/50-mutter-navigation.xml.in.h:16
#| msgid "Switch applications"
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Алдыңғы қолданбаға ауысу"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Терезелерді ауыстыру"
#: ../data/50-mutter-navigation.xml.in.h:18
#| msgid "Switch windows"
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Алдыңғы терезеге ауысу"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Қолданба терезелерін ауыстыру"
#: ../data/50-mutter-navigation.xml.in.h:20
#| msgid "Switch windows of an application"
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Қолданбаның алдыңғы терезесіне ауысу"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Жүйелік басқару элементтерін ауыстыру"
#: ../data/50-mutter-navigation.xml.in.h:22
#| msgid "Switch system controls"
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Алдыңғы жүйелік басқару элементіне ауысу"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Терезелерді тікелей ауыстыру"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Тікелей алдыңғы терезеге ауысу"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Қолданба терезелерін тікелей ауыстыру"
#: ../data/50-mutter-navigation.xml.in.h:26
#| msgid "Switch windows of an application"
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Тікелей қолданбаның алдыңғы терезесіне ауысу"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Жүйелік басқару элементтерін тікелей ауыстыру"
#: ../data/50-mutter-navigation.xml.in.h:28
#| msgid "Switch system controls"
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Тікелей алдыңғы жүйелік басқару элементіне ауысу"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Барлық қалыпты терезелерді жасыру"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "1-ші жұмыс орнына ауысу"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "2-ші жұмыс орнына ауысу"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "3-ші жұмыс орнына ауысу"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "4-ші жұмыс орнына ауысу"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Соңғы жұмыс орнына ауысу"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Сол жақтағы жұмыс орнына ауысу"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Оң жақтағы жұмыс орнына ауысу"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Жоғарыдағы жұмыс орнына ауысу"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Төмендегі жұмыс орнына ауысу"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Жүйе"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Команданы жөнелту сұхбатын көрсету"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Шолуды көрсету"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Терезелер"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Терезе мәзірін белсендіру"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Толық экран режимін ауыстыру"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Жазық күйін ауыстыру"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Терезені жазық қылу"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Терезені қалпына келтіру"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Көлеңкелі күйін ауыстыру"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Терезені жабу"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Терезені жасыру"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Терезені жылжыту"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Терезе өлшемдерін өзгерту"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Терезені барлық жұмыс орындарында көрсетуді іске қосу/сөндіру"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr ""
"Терезе басқалармен үстінен жабылған болса, алдына көтеру, болмаса, "
"басқалардың артына апару"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Терезені басқа терезелердің алдына көтеру"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Терезені басқа терезелердің артына апару"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Терезені вертикалды жазық қылу"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Терезені горизонталды жазық қылу"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr ""
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr ""
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -286,214 +276,209 @@ msgid ""
"default or set to the empty string."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
"the parent window."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Терезелерді экран шеттеріне апарған кезде олардың өлшемдерін өзгертуді іске "
"қосу"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Жұмыс орындары динамикалы түрде басқарылады"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
msgid ""
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
"the focus will not be changed immediately when entering a window, but only "
"after the pointer stops moving."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr ""
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr ""
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr ""
msgstr "Бірінші виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#| msgid "Switch to workspace 2"
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr ""
msgstr "Екінші виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#| msgid "Switch to workspace 3"
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr ""
msgstr "Үшінші виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#| msgid "Switch to workspace 4"
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr ""
msgstr "Төртінші виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr ""
msgstr "Бесінші виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr ""
msgstr "Алтыншы виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr ""
msgstr "Жетінші виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr ""
msgstr "Сегізінші виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr ""
msgstr "Тоғызыншы виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr ""
msgstr "Оныншы виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr ""
msgstr "Он бірінші виртуалды терминалына ауысу"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#| msgid "Switch to workspace 1"
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr ""
msgstr "Он екінші виртуалды терминалына ауысу"
#: ../src/backends/meta-monitor-manager.c:364
#: src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Мониторды ауыстыру"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Экрандағы көмекті көрсету"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Құрамындағы экран"
#: ../src/backends/meta-monitor-manager.c:391
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Белгісіз"
#: ../src/backends/meta-monitor-manager.c:393
#| msgid "Unknown %s"
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Белгісіз дисплей"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:401
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr ""
#: ../src/core/bell.c:185
#: src/core/bell.c:194
msgid "Bell event"
msgstr ""
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "“%s” жауап бермейді."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Қолданба жауап бермейді."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -501,52 +486,56 @@ msgstr ""
"Сіз қолданба өз жұмысын жалғастырғанды күтіп, немесе оны мәжбүрлетіп жаба "
"аласыз."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Күту"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Мәжбүрлі шығу"
#: ../src/core/display.c:562
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr ""
#: ../src/core/main.c:176
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Сессиялар менеджеріне байланыстарды сөндіру"
#: ../src/core/main.c:182
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr ""
#: ../src/core/main.c:188
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Сессия менеджментінің ID-ін көрсету"
#: ../src/core/main.c:193
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Қолданылатын X дисплейі"
#: ../src/core/main.c:199
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr ""
#: ../src/core/main.c:205
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "X сервер шақыруларын синхронды қылу"
#: ../src/core/main.c:212
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr ""
#: ../src/core/main.c:220
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr ""
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr ""
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -556,42 +545,47 @@ msgid ""
"PARTICULAR PURPOSE.\n"
msgstr ""
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Нұсқа ақпаратын шығару"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr ""
#: ../src/core/prefs.c:2004
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Жұмыс орны %d"
#: ../src/core/screen.c:525
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
"to replace the current window manager."
msgstr ""
#: ../src/core/screen.c:607
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr ""
#: ../src/core/util.c:118
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr ""
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr ""
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
msgstr ""
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (%s жерінде)"

824
po/ko.po

File diff suppressed because it is too large Load Diff

277
po/lv.po
View File

@ -11,269 +11,269 @@
msgid ""
msgstr ""
"Project-Id-Version: lv\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
"keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-03 13:37+0000\n"
"PO-Revision-Date: 2016-03-03 22:19+0200\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter"
"&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-08 21:31+0200\n"
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
"2);\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :"
" 2);\n"
"X-Generator: Lokalize 2.0\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navigācija"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Pārvietot logu uz 1. darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Pārvietot logu uz 2. darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Pārvietot logu uz 3. darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Pārvietot logu uz 4. darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Pārvietot logu uz pēdējo darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Pārvietot logu uz darbvietu pa kreisi"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Pārvietot logu uz darbvietu pa labi"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Pārvietot logu uz darbvietu augšup"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Pārvietot logu uz darbvietu lejup"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Pārvietot logu uz monitoru pa kreisi"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Pārvietot logu uz monitoru pa labi"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Pārvietot logu uz monitoru augšup"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Pārvietot logu uz monitoru lejup"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Pārslēgt lietotnes"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Pārslēgties uz iepriekšējo lietotni"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Pārslēgt logus"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Pārslēgties uz iepriekšējo logu"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Pārslēgt vienas lietotnes logus"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Pārslēgties uz lietotnes iepriekšējo logu"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Pārslēgt sistēmas vadīklas"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Pārslēgties uz iepriekšējo sistēmas vadīklu"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Pārslēgties starp logiem tieši"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Pārslēgties tieši uz iepriekšējo logu"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Pārslēgties starp lietotnes logiem tieši"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Pārslēgties tieši uz iepriekšējo lietotnes logu"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Pārslēgt sistēmas vadīklas tieši"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Pārslēgties tieši uz iepriekšējo sistēmas vadīklu"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Slēpt visus parastos logus"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Pārslēgties uz 1. darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Pārslēgties uz 2. darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Pārslēgties uz 3. darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Pārslēgties uz 4. darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Pārslēgties uz pēdējo darbvietu"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Pāriet uz darbvietu pa kreisi"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Pāriet uz darbvietu pa labi"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Pāriet uz darbvietu augšup"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Pāriet uz darbvietu lejup"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Sistēma"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Rādīt palaišanas komandrindu"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Rādīt aktivitāšu pārskatu"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Logi"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Aktivizēt loga izvēlni"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Pārslēgt pilnekrāna režīmu"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Pārslēgt maksimizācijas stāvokli"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Maksimizēt logu"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Atjaunot loga izmēru"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Pārslēgt ēnoto stāvokli"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Aizvērt logu"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Paslēpt logu"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Pārvietot logu"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Mainīt loga izmēru"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Pārslēgt, vai logam jābūt visās darbvietās vai vienā"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Pacelt logu, ja to aizsedz, citādi pazemināt"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Pacelt logu virs citiem logiem"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Pazemināt logu zem citiem logiem"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Maksimizēt logu vertikāli"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Maksimizēt logu horizontāli"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Izvietot kreisajā ekrāna pusē"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Izvietot labajā ekrāna pusē"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Modifikators, kuru lietot paplašinātām loga pārvaldības darbībām"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -285,11 +285,11 @@ msgstr ""
"PC aparatūras. Tiek sagaidīts, ka šī sasaite ir vai nu noklusējuma, vai "
"tukša virkne."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Piesaistīt modālos dialogus"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -299,11 +299,11 @@ msgstr ""
"dialogs būs piesaistīts virsraksta joslai vecāka logam un tiks pārvietots "
"kopā ar vecāka logu."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Aktivēt logu sānisko izklāšanu, kad to nomet uz ekrāna malas"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -313,11 +313,11 @@ msgstr ""
"izklāti pa visu ekrāna augstumu pusē no pieejamā platuma, bet tie, kas "
"nomesti uz augšējās malas, tiks izklāti pa visu ekrānu."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Darbvirsmas tiek pārvaldītas dinamiski"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -327,11 +327,11 @@ msgstr ""
"darbvirsmu skaits (ko nosaka num-workspaces atslēga laukā org.gnome.desktop."
"wm.preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Darbvietas tikai uz galvenā"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -339,11 +339,11 @@ msgstr ""
"Nosaka, vai darbvietu pārslēgšanai vajadzētu notikt visiem logiem visos "
"monitoros, vai tikai logiem galvenajā monitorā."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Nerādīt logus pārslēgšanās laikā"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -351,11 +351,11 @@ msgstr ""
"Nosaka, vai atslēgt uzlecošo izvēlni ar logu attēliem un izvēles rāmi, kad "
"notiek pārslēgšanās starp logiem ar tabulatora vai tildes taustiņiem."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Aizkavēt fokusa izmaiņas, līdz rādītājs pārstāj kustēties"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -365,11 +365,11 @@ msgstr ""
"\" (pele), tad fokuss nemainīsies uzreiz pēc ieiešanas logā, bet tikai pēc "
"tam, kad rādītājs beidzis kustēties."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Velkams malas platums"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -377,11 +377,11 @@ msgstr ""
"Kopējo velkamo malu apjoms. Ja motīva redzamās robežas nav pietiekamas, tiks "
"pievienotas neredzamas robežas, lai iegūtu šo vērtību."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr "Automātiski maksimizēt logus, kas ir gandrīz ar monitora izmēru"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -389,116 +389,125 @@ msgstr ""
"Ja aktivizēts, jauni logi, kuru izmērs ir gandrīz tāds pats, kā monitoram, "
"tiks maksimizēti."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Novietot logu vidū"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
msgstr ""
"Ja patiess, jaunie logi vienmēr tiks novietoti monitora aktīvā ekrāna vidū."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Izvēlēties logu no tabulatora izvēlnes"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Atcelt logu rādīšanu"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Pārslēgties uz VT 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Pārslēgties uz VT 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Pārslēgties uz VT 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Pārslēgties uz VT 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Pārslēgties uz VT 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Pārslēgties uz VT 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Pārslēgties uz VT 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Pārslēgties uz VT 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Pārslēgties uz VT 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Pārslēgties uz VT 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Pārslēgties uz VT 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Pārslēgties uz VT 12"
#: ../src/backends/meta-monitor-manager.c:518
#: src/backends/meta-input-settings.c:1707
#| msgid "Switch system controls"
msgid "Switch monitor"
msgstr "Pārslēgt monitoru"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Rādīt palīdzību uz ekrāna"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Iebūvēts displejs"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Nezināms"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Nezināms displejs"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr "Cits kompozīcijas pārvaldnieks jau darbojas ekrānā %d displejā “%s”."
#: ../src/core/bell.c:185
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Zvana notikums"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "“%s” nereaģē."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Lietotne nereaģē."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -506,57 +515,56 @@ msgstr ""
"Var uzgaidīt neilgu brīdi, līdz tā atgūstas, vai arī aizvērt to piespiedu "
"kārtā."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Gaidīt"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "Aizvērt _piespiedu kārtā"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Neizdevās atvērt X logu sistēmas displeju “%s”\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Deaktivēt savienojumu ar sesiju pārvaldnieku"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Aizvietot darbojošos logu pārvaldnieku"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Norādiet sesiju pārvaldības ID"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Lietojamais X displejs"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Inicializēt sesiju no saglabātās datnes"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Padarīt X izsaukumus sinhronus"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Palaist kā wayland kompozitoru"
#: ../src/core/main.c:223
#| msgid "Run as a wayland compositor"
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Palaist kā ligzdotu kompozitoru"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Palaist kā pilnu attēlošanas serveri, nevis iegultu"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -571,20 +579,20 @@ msgstr ""
"Netiek dota NEKĀDA garantija; pat ne KOMERCIĀLAS VĒRTĪBAS vai DERĪGUMA "
"NOTEIKTAM NOLŪKAM.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Parādīt versiju"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Izmantojamais mutter spraudnis"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Darbvieta %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -593,16 +601,21 @@ msgstr ""
"Displejam “%s” jau ir logu pārvaldnieks; mēģiniet lietot --replace iespēju, "
"lai aizvietotu pašreizējo logu pārvaldnieku."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Ekrāna %d displejs “%s“ nav derīgs\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter tika kompilēts bez detalizētas izvades režīma atbalsta\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Režīma slēdzis: režīms %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -610,7 +623,7 @@ msgstr ""
"Šie logi neatbalsta “saglabāt pašreizējos iestatījumus” un būs jāpārstartē "
"pašrocīgi nākamreiz, kad ierakstīsities."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (uz %s)"

View File

@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-20 10:10+0200\n"
"PO-Revision-Date: 2016-08-20 10:12+0200\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-09 23:58+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
@ -297,8 +297,8 @@ msgid ""
"the parent window."
msgstr ""
"Jeśli wynosi wartość „true”, to modalne okna dialogowe pojawiają się "
"dołączone do paska tytułowego okna nadrzędnego zamiast posiadać oddzielne "
"paski tytułowe i są przenoszone razem z nim."
"dołączone do paska tytułowego okna nadrzędnego, zamiast mieć oddzielne "
"paski tytułowe, i są przenoszone razem z nim."
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"

274
po/pt.po
View File

@ -10,266 +10,266 @@ msgstr ""
"Project-Id-Version: 3.10\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-04-30 13:15+0000\n"
"PO-Revision-Date: 2016-04-30 16:12+0100\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-09 17:59+0100\n"
"Last-Translator: Tiago Santos <tiagofsantos81@sapo.pt>\n"
"Language-Team: Português <palbuquerque73@openmailbox.com>\n"
"Language-Team: Português\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
"X-Generator: Poedit 1.8.7.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navegação"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Mover janela para a área de trabalho 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Mover janela para a área de trabalho 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Mover janela para a área de trabalho 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Mover janela para a área de trabalho 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Mover janela para a última área de trabalho"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Mover a janela uma área de trabalho para a esquerda"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Mover a janela uma área de trabalho para a direita"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Mover a janela uma área de trabalho acima"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Mover a janela uma área de trabalho abaixo"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Mover a janela um monitor para a esquerda"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Mover a janela um monitor para a direita"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Mover a janela um monitor acima"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Mover a janela um monitor abaixo"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Mudar de aplicações"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Mudar para a aplicação anterior"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Mudar de janelas"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Mudar para a janela anterior"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Alternar entre janelas de uma aplicação"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Mudar para a janela anterior de uma aplicação"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Alternar entre controlos de sistema"
msgstr "Alternar controlos de sistema"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Mudar para o controlo de sistema anterior"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Alternar diretamente entre janelas"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Mudar diretamente para a janela anterior"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Alternar diretamente entre janelas de uma aplicação"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Mudar diretamente para a janela anterior de uma aplicação"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Alternar diretamente entre controlos de sistema"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Mudar diretamente para o controlo de sistema anterior"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Ocultar todas as janelas normais"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Mudar para a área de trabalho 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Mudar para a área de trabalho 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Mudar para a área de trabalho 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Mudar para a área de trabalho 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Mudar para a última área de trabalho 1"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Mover para a área de trabalho à esquerda"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Mover para a área de trabalho à direita"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Mover para a área de trabalho acima"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Mover para a área de trabalho abaixo"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Sistema"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Mostrar a linha de comando de execução"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Mostrar o resumo de atividades"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Janelas"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Ativar o menu de janela"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Alternar modo de ecrã completo"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Alternar estado de maximização"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Maximizar a janela"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Restaurar a janela"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Alternar estado sombreado"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Fechar a janela"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Esconder a janela"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Mover a janela"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Redimensionar a janela"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Alternar janela em todas as áreas de trabalho ou só numa"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Elevar a janela se estiver tapada, caso contrário baixá-la"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Elevar janela acima de outras janelas"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Baixar janela abaixo de outras janelas"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Maximizar janela verticalmente"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Maximizar janela horizontalmente"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Ver a divisão à esquerda"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Ver a divisão à direita"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Modificador a utilizar para operações estendidas de gestão de janelas"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -281,11 +281,11 @@ msgstr ""
"Windows\" em computadores PC. Espera-se que esta associação seja a "
"predefinição ou uma cadeia vazia."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Anexar diálogos modais"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -295,11 +295,11 @@ msgstr ""
"diálogos modais surgem anexados à barra de título da janela-mãe e são "
"movidos juntamente com a janela-mãe."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Ativar ajuste em grelha ao largar janelas nos limites do ecrã"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -310,11 +310,11 @@ msgstr ""
"disponível. Largar janelas no limite superior do ecrã maximiza-as "
"completamente."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Áreas de trabalho geridas dinamicamente"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -324,11 +324,11 @@ msgstr ""
"número estático de áreas de trabalho (determinado pela chave num-workspaces "
"em org.gnome.desktop.wm.preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Áreas de trabalho só no principal"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -336,11 +336,11 @@ msgstr ""
"Determina se a troca de área de trabalho deverá ocorrer para janelas em "
"todos os monitores ou apenas para janelas no monitor principal."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Sem popup ao utilizar tabulador"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -348,11 +348,11 @@ msgstr ""
"Determina se deverá ou não ser desativado o popup e o realce na janela ao "
"circular entre janelas."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Adiar as alterações de foco até que o ponteiro pare de se mover"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -362,11 +362,11 @@ msgstr ""
"será alterado imediatamente ao entrar numa janela mas apenas quando o "
"ponteiro parar de se mover."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Largura da margem de arrasto"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -375,11 +375,11 @@ msgstr ""
"forem suficientes, serão adicionadas margens invisíveis para atingir este "
"valor."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr "Maximizar automaticamente janelas de dimensão aproximada à do monitor"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -387,11 +387,11 @@ msgstr ""
"Se ativo, novas janelas que sejam inicialmente do tamanho do monitor são "
"maximizadas automaticamente."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Posicionar novas janelas no centro"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -399,85 +399,93 @@ msgstr ""
"Se ativo, as novas janelas são sempre posicionadas no centro do ecrã do "
"monitor ativo."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Selecionar a janela no popup de tabulador"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Cancelar o popup de tabulador"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Alternar para a área de trabalho 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Alternar para a área de trabalho 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Alternar para a área de trabalho 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Alternar para a área de trabalho 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Mover para a área de trabalho 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Mover para a área de trabalho 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Mover para a área de trabalho 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Mover para a área de trabalho 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Mover para a área de trabalho 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Mover para a área de trabalho 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Mover para a área de trabalho 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Mover para a área de trabalho 12"
#: ../src/backends/meta-monitor-manager.c:515
#: src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Alternar monitor"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Mostrar ajuda no ecrã"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Ecrã embutido"
#: ../src/backends/meta-monitor-manager.c:538
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Desconhecido"
#: ../src/backends/meta-monitor-manager.c:540
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Ecrã desconhecido"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:548
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -486,20 +494,20 @@ msgstr ""
"Já se encontra em execução outro gestor de janelas no ecrã %i do monitor \"%s"
"\"."
#: ../src/core/bell.c:194
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Evento de campainha"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "“%s” não está a responder."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "A aplicação não está a responder."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -507,57 +515,56 @@ msgstr ""
"Poderá aguardar uns instantes para que continue ou forçar a aplicação a "
"terminar definitivamente."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Aguardar"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Forçar terminar"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Falha ao abrir ecrã \"%s\" do sistema Janelas X\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Desativar a ligação ao gestor de sessão"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Substituir o gestor de janelas em execução"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Especificar a ID de gestão de sessão"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Ecrã X a utilizar"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Inicializar a sessão a partir de um ficheiro de gravação de sessão"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Fazer as chamadas X sincronamente"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Executar como compositor wayland"
#: ../src/core/main.c:223
#| msgid "Run as a wayland compositor"
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Executar como compositor aninhado"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Executar como servidor de ecrã completo, em vez de aninhado"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -573,20 +580,20 @@ msgstr ""
"NÃO existe qualquer garantia; nem sequer de COMERCIALIZAÇÃO ou ADEQUAÇÃO A "
"UM PROPÓSITO ESPECÍFICO.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Imprimir a versão"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Extensão Mutter a utilizar"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Área de trabalho %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -595,16 +602,21 @@ msgstr ""
"O ecrã \"%s\" já tem um gestor de janelas; tente utilizar a opção --replace "
"para substituir o gestor de janelas atual."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Ecrã %d no monitor \"%s\" é inválido\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "O Mutter foi compilado sem suporte para modo verboso\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Alteração de Modo: Modo %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -612,7 +624,7 @@ msgstr ""
"Estas janelas não suportam &quot;Gravar configuração atual&quot; e terão de "
"ser reiniciadas manualmente da próxima vez que iniciar sessão."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (em %s)"

View File

@ -16,22 +16,268 @@
# Rafael Ferreira <rafael.f.f1@gmail.com>, 2013, 2014.
# Artur de Aquino Morais <artur.morais93@outlook.com>, 2016.
# Enrico Nicoletto <liverig@gmail.com>, 2012, 2014, 2016.
#
# Rafael Fontenelle <rafaelff@gnome.org>, 2016.
msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-08-19 21:04+0000\n"
"PO-Revision-Date: 2016-08-22 18:04-0300\n"
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
"keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-07 08:16-0200\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.7.3\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navegação"
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Mover a janela para o espaço de trabalho 1"
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Mover a janela para o espaço de trabalho 2"
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Mover a janela para o espaço de trabalho 3"
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Mover a janela para o espaço de trabalho 4"
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Mover a janela para o último espaço de trabalho"
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Mover a janela um espaço de trabalho à esquerda"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Mover a janela um espaço de trabalho à direita"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Mover a janela um espaço de trabalho acima"
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Mover a janela um espaço de trabalho abaixo"
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Mover janela para o monitor da esquerda"
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Mover janela para o monitor da direita"
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Mover janela para o monitor acima"
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Mover janela para o monitor abaixo"
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Alternar aplicativos"
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Alternar para o aplicativo anterior"
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Alternar janelas"
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Alternar para a janela anterior"
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Alternar as janelas de um aplicativo"
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Alternar para a janela anterior de um aplicativo"
#: data/50-mutter-navigation.xml:76
#| msgid "Switch system controls directly"
msgid "Switch system controls"
msgstr "Alternar controles do sistema"
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Alternar para o controle de sistema anterior"
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Alternar as janelas diretamente"
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Alternar diretamente para a janela anterior"
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Alternar as janelas de um aplicativo diretamente"
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Alternar diretamente para a janela anterior de um aplicativo"
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Alternar os controles de sistema diretamente"
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Alternar diretamente para o controle de sistema anterior"
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Ocultar todas as janelas normais"
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Trocar para o espaço de trabalho 1"
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Trocar para o espaço de trabalho 2"
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Trocar para o espaço de trabalho 3"
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Trocar para o espaço de trabalho 4"
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Trocar para o último espaço de trabalho"
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Move para o espaço de trabalho à esquerda"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Move para o espaço de trabalho à direita"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Mover para o espaço de trabalho acima"
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Mover para o espaço de trabalho abaixo"
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Sistema"
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Mostrar o prompt de comando de execução"
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Mostrar o panorama de atividades"
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Janelas"
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Ativar o menu da janela"
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Alternar modo de tela inteira"
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Alternar estado de maximização"
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Maximizar a janela"
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Restaurar janela"
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Alternar estado sombreado"
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Fechar janela"
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Ocultar janela"
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Mover janela"
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Redimensionar janela"
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Alternar a janela em todos os espaços de trabalho ou em apenas um"
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Elevar a janela se estiver coberta; caso contrário, a abaixa"
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Elevar a janela para frente das outras"
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Colocar a janela atrás das outras"
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Maximizar a janela verticalmente"
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Maximizar a janela horizontalmente"
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Visualizar divisão à esquerda"
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Visualizar divisão à direita"
#: data/mutter.desktop.in:4
msgid "Mutter"
@ -403,187 +649,6 @@ msgstr ""
msgid "%s (on %s)"
msgstr "%s (em %s)"
#~ msgid "Navigation"
#~ msgstr "Navegação"
#~ msgid "Move window to workspace 1"
#~ msgstr "Mover a janela para o espaço de trabalho 1"
#~ msgid "Move window to workspace 2"
#~ msgstr "Mover a janela para o espaço de trabalho 2"
#~ msgid "Move window to workspace 3"
#~ msgstr "Mover a janela para o espaço de trabalho 3"
#~ msgid "Move window to workspace 4"
#~ msgstr "Mover a janela para o espaço de trabalho 4"
#~ msgid "Move window to last workspace"
#~ msgstr "Mover a janela para o último espaço de trabalho"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Mover a janela um espaço de trabalho à esquerda"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Mover a janela um espaço de trabalho à direita"
#~ msgid "Move window one workspace up"
#~ msgstr "Mover a janela um espaço de trabalho acima"
#~ msgid "Move window one workspace down"
#~ msgstr "Mover a janela um espaço de trabalho abaixo"
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
#~ msgid "Move window one monitor to the left"
#~ msgstr "Mover janela para o monitor da esquerda"
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
#~ msgid "Move window one monitor to the right"
#~ msgstr "Mover janela para o monitor da direita"
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
#~ msgid "Move window one monitor up"
#~ msgstr "Mover janela para o monitor acima"
# Em conformidade com a tradução do gsettings-desktop-schemas --Enrico
#~ msgid "Move window one monitor down"
#~ msgstr "Mover janela para o monitor abaixo"
#~ msgid "Switch applications"
#~ msgstr "Alternar aplicativos"
#~ msgid "Switch to previous application"
#~ msgstr "Alternar para o aplicativo anterior"
#~ msgid "Switch windows"
#~ msgstr "Alternar janelas"
#~ msgid "Switch to previous window"
#~ msgstr "Alternar para a janela anterior"
#~ msgid "Switch windows of an application"
#~ msgstr "Alternar as janelas de um aplicativo"
#~ msgid "Switch to previous window of an application"
#~ msgstr "Alternar para a janela anterior de um aplicativo"
#~ msgid "Switch to previous system control"
#~ msgstr "Alternar para o controle de sistema anterior"
#~ msgid "Switch windows directly"
#~ msgstr "Alternar as janelas diretamente"
#~ msgid "Switch directly to previous window"
#~ msgstr "Alternar diretamente para a janela anterior"
#~ msgid "Switch windows of an app directly"
#~ msgstr "Alternar as janelas de um aplicativo diretamente"
#~ msgid "Switch directly to previous window of an app"
#~ msgstr "Alternar diretamente para a janela anterior de um aplicativo"
#~ msgid "Switch system controls directly"
#~ msgstr "Alternar os controles de sistema diretamente"
#~ msgid "Switch directly to previous system control"
#~ msgstr "Alternar diretamente para o controle de sistema anterior"
#~ msgid "Hide all normal windows"
#~ msgstr "Ocultar todas as janelas normais"
#~ msgid "Switch to workspace 1"
#~ msgstr "Trocar para o espaço de trabalho 1"
#~ msgid "Switch to workspace 2"
#~ msgstr "Trocar para o espaço de trabalho 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "Trocar para o espaço de trabalho 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "Trocar para o espaço de trabalho 4"
#~ msgid "Switch to last workspace"
#~ msgstr "Trocar para o último espaço de trabalho"
#~ msgid "Move to workspace left"
#~ msgstr "Move para o espaço de trabalho à esquerda"
#~ msgid "Move to workspace right"
#~ msgstr "Move para o espaço de trabalho à direita"
#~ msgid "Move to workspace above"
#~ msgstr "Mover para o espaço de trabalho acima"
#~ msgid "Move to workspace below"
#~ msgstr "Mover para o espaço de trabalho abaixo"
#~ msgid "System"
#~ msgstr "Sistema"
#~ msgid "Show the run command prompt"
#~ msgstr "Mostrar o prompt de comando de execução"
#~ msgid "Show the activities overview"
#~ msgstr "Mostrar o panorama de atividades"
#~ msgid "Windows"
#~ msgstr "Janelas"
#~ msgid "Activate the window menu"
#~ msgstr "Ativar o menu da janela"
#~ msgid "Toggle fullscreen mode"
#~ msgstr "Alternar modo de tela inteira"
#~ msgid "Toggle maximization state"
#~ msgstr "Alternar estado de maximização"
#~ msgid "Maximize window"
#~ msgstr "Maximizar a janela"
#~ msgid "Restore window"
#~ msgstr "Restaurar janela"
#~ msgid "Toggle shaded state"
#~ msgstr "Alternar estado sombreado"
#~ msgid "Close window"
#~ msgstr "Fechar janela"
#~ msgid "Hide window"
#~ msgstr "Ocultar janela"
#~ msgid "Move window"
#~ msgstr "Mover janela"
#~ msgid "Resize window"
#~ msgstr "Redimensionar janela"
#~ msgid "Toggle window on all workspaces or one"
#~ msgstr "Alternar a janela em todos os espaços de trabalho ou em apenas um"
#~ msgid "Raise window if covered, otherwise lower it"
#~ msgstr "Elevar a janela se estiver coberta; caso contrário, a abaixa"
#~ msgid "Raise window above other windows"
#~ msgstr "Elevar a janela para frente das outras"
#~ msgid "Lower window below other windows"
#~ msgstr "Colocar a janela atrás das outras"
#~ msgid "Maximize window vertically"
#~ msgstr "Maximizar a janela verticalmente"
#~ msgid "Maximize window horizontally"
#~ msgstr "Maximizar a janela horizontalmente"
#~ msgid "View split on left"
#~ msgstr "Visualizar divisão à esquerda"
#~ msgid "View split on right"
#~ msgstr "Visualizar divisão à direita"
#~ msgid "background texture could not be created from file"
#~ msgstr "textura de plano de fundo não pôde ser criado de arquivo"

269
po/ru.po
View File

@ -16,8 +16,8 @@ msgstr ""
"Project-Id-Version: metacity ru\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-03 01:44+0000\n"
"PO-Revision-Date: 2016-03-03 13:51+0300\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-16 12:23+0300\n"
"Last-Translator: Stas Solovey <whats_up@tut.by>\n"
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
"Language: ru\n"
@ -28,256 +28,256 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Gtranslator 2.91.7\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Перемещение"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Переместить окно на рабочее место 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Переместить окно на рабочее место 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Переместить окно на рабочее место 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Переместить окно на рабочее место 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Переместить окно на последнее рабочее место"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Переместить окно на одно рабочее место влево"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Переместить окно на одно рабочее место вправо"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Переместить окно на одно рабочее место вверх"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Переместить окно на одно рабочее место вниз"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Переместить окно на один монитор влево"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Переместить окно на один монитор вправо"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Переместить окно на один монитор вверх"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Переместить окно на один монитор вниз"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Переключить приложения"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Переключить на предыдущее приложение"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Переключить окна"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Переключить на предыдущее окно"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Переключить окна приложения"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Переключить на окно приложения"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Переключить элементы управления"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Переключить на предыдущий элемент управления"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Немедленно переключить окна"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Немедленно переключить на предыдущее окно"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Немедленно переключить окна приложения"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Немедленно переключить на предыдущее окно приложения"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Немедленно переключить элементы управления"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Немедленно переключить на предыдущий элемент управления"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Скрыть все обычные окна"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Переключиться на рабочее место 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Переключиться на рабочее место 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Переключиться на рабочее место 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Переключиться на рабочее место 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Переключиться на последнее рабочее место"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Переместить на рабочее место влево"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Переместить на рабочее место вправо"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Переместить на рабочее место вверх"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Переместить на рабочее место вниз"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Система"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Показать командную строку"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Открыть обзор"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Окна"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Активировать меню окна"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Переключить полноэкранный режим"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Переключить состояние развёрнутости на весь экран"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Развернуть окно на весь экран"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Восстановить окно"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Переключить затенённое состояние"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Закрыть окно"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Скрыть окно"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Переместить окно"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Изменить размер окна"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Переключить окно на все рабочие места или на одно"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Поднять окно, если оно закрыто другими окнами, иначе — опустить его"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Поместить окно поверх всех окон"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Поместить окно под другими окнами"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Развернуть окно на весь экран вертикально"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Развернуть окно на весь экран горизонтально"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Разделитель слева"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Разделитель справа"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr ""
"Модификатор для использования дополнительных действий управления окнами"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -288,11 +288,11 @@ msgstr ""
"Для обычных ПК используется клавиша «Windows». Ожидается, что значение этой "
"привязки будет иметь значение по умолчанию или будет пустой строкой."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Прикреплять модальные диалоговые окна"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -302,11 +302,11 @@ msgstr ""
"окна будут прикрепляться к заголовку родительского окна и перемещаться "
"вместе с родительским окном."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Включить краевые фреймы при перемещении окон к границам экрана"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -317,11 +317,11 @@ msgstr ""
"покрывая половину доступного места. Перемещение окна к верхней части экрана "
"полностью разворачивает окно."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Рабочие места управляются динамически"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -331,11 +331,11 @@ msgstr ""
"рабочих место постоянно (количество задаётся ключом в org.gnome.desktop.wm."
"preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Рабочие места только на главном окне"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -343,11 +343,11 @@ msgstr ""
"Определяет, должно ли переключение рабочего места происходить для окон на "
"всех мониторах или только для окон на главном мониторе."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Без всплывающей табуляции"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -355,11 +355,11 @@ msgstr ""
"Определяет, нужно ли отключить использование всплывающей области для "
"циклического переключения окон."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Отложить переключение фокуса до тех пор, пока не остановится указатель"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -369,11 +369,11 @@ msgstr ""
"«sloppy» или «mouse», тогда фокус не будет меняться при переходе к другому "
"окну до тех пор, пока не остановится указатель."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Ширина рамки перетаскивания"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -381,11 +381,11 @@ msgstr ""
"Общая ширина рамок для перетаскивания. Если видимых рамок темы недостаточно, "
"то до этого значения будут добавлены невидимые рамки."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr "Автоматически увеличивать размеры окна до размеров монитора"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -393,11 +393,11 @@ msgstr ""
"Если включено, новые окна будут автоматически увеличены до максимального "
"размера."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Размещать новые окна в центре"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -405,161 +405,169 @@ msgstr ""
"Если выбрано, то новые окна всегда будут помещаться в центр активного экрана "
"монитора."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Выбор окна из всплывающей табуляции"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Отменить всплывающую табуляцию"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Переключиться на виртуальный терминал 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Переключиться на виртуальный терминал 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Переключиться на виртуальный терминал 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Переключиться на виртуальный терминал 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Переключиться на виртуальный терминал 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Переключиться на виртуальный терминал 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Переключиться на виртуальный терминал 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Переключиться на виртуальный терминал 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Переключиться на виртуальный терминал 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Переключиться на виртуальный терминал 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Переключиться на виртуальный терминал 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Переключиться на виртуальный терминал 12"
#: ../src/backends/meta-monitor-manager.c:518
#: src/backends/meta-input-settings.c:1707
#| msgid "Switch system controls"
msgid "Switch monitor"
msgstr "Переключить монитор"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Показать справку на экране"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Встроенный дисплей"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Неизвестный"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Неизвестный дисплей"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr "На экране %i дисплея «%s» уже запущен другой оконный менеджер."
#: ../src/core/bell.c:185
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Событие звонка"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "«%s» не отвечает."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Приложение не отвечает."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr "Можно немного подождать или принудительно завершить работу приложения."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Подождать"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "Завер_шить"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Не удалось открыть дисплей «%s» системы X Window\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Запретить подключение к менеджеру сеансов"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Заменить запущенный оконный менеджер"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Указать идентификатор управления сеансом"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Используемый дисплей X"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Инициализировать сеанс из сохранённого файла"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Сделать X-вызовы синхронными"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Запустить в качестве композитора wayland"
#: ../src/core/main.c:223
#| msgid "Run as a wayland compositor"
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Запустить в качестве встроенного композитора"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Запустить в качестве полноэкранного сервера вместо встроенного"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -576,20 +584,20 @@ msgstr ""
"потребительской стоимости и пригодности для выполнения каких бы то ни было "
"определённых задач.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Вывести версию"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Использовать модуль mutter"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Рабочее место %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -598,16 +606,21 @@ msgstr ""
"Дисплей «%s» уже использует менеджер окон; попробуйте использовать параметр "
"--replace, чтобы заменить текущий менеджер окон."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Недопустимый экран %d дисплея «%s»\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter собран без поддержки режима подробных сообщений\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Переключатель режима: режим %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -615,7 +628,7 @@ msgstr ""
"Эти окна не поддерживают команду «Сохранить текущие настройки». При "
"следующем входе в систему их придётся перезапустить вручную."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (на %s)"

274
po/sr.po
View File

@ -1,8 +1,7 @@
# Serbian translation of mutter.
# Courtesy of Prevod.org team (http://prevod.org/) -- 2003—2016.
# This file is distributed under the same license as the mutter package.
#
# Translators:
# Translators:
# Горан Ракић <grakic@devbase.net>
# Данило Шеган <danilo@prevod.org>, 2005.
# Милош Поповић <gpopac@gmail.com>, 2010.
@ -12,10 +11,10 @@ msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
"keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-09 01:41+0000\n"
"PO-Revision-Date: 2016-03-09 09:52+0200\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-11 08:39+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language-Team: српски <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -24,255 +23,256 @@ msgstr ""
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Навигација"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Премешта прозор на радни простор број 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Премешта прозор на радни простор број 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Премешта прозор на радни простор број 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Премешта прозор на радни простор број 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Премешта прозор на последњи радни простор"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Премешта прозор један радни простор на лево"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Премешта прозор један радни простор на десно"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Премешта прозор један радни простор на горе"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Премешта прозор један радни простор на доле"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Премешта прозор један монитор на лево"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Премешта прозор један монитор на десно"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Премешта прозор један монитор на горе"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Премешта прозор један монитор на доле"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Пребацује програме"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Пребацује на претходни програм"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Пребацује прозоре"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Пребацује на претходни прозор"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Пребацује прозоре програма"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Пребацује на претходни прозор програма"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
#| msgid "Switch system controls directly"
msgid "Switch system controls"
msgstr "Пребацује контроле система"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Пребацује на претходну контролу система"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Пребацује прозоре директно"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Пребацује непосредно на претходни прозор"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Пребацује прозоре програма директно"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Пребацује непосредно на претходни прозор програма"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Пребацује контроле система директно"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Пребацује непосредно на претходну контролу система"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Скрива све обичне прозоре"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Пребацује се на радни простор 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Пребацује се на радни простор 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Пребацује се на радни простор 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Пребацује се на радни простор 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Пребацује се на последњи радни простор"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Премешта на радни простор лево"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Премешта на радни простор десно"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Премешта на радни простор изнад"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Премешта на радни простор испод"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Систем"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Приказује промпт за покретање наредбе"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Приказује преглед активности"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Прозори"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Активира мени прозора"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Искључује/укључује приказ преко целог екрана"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Искључује/укључује стање увећања"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Увећава прозор"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Враћа величину прозора"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Искључује/укључује стање засенчености"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Затвара прозор"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Скрива прозор"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Премешта прозор"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Мења величину прозора"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Приказује прозор на свим радним просторима или само на једном"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Издиже прозор уколико га други прозор заклања, у противном га спушта"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Издиже прозор изнад осталих прозора"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Спушта прозор испод осталих прозора"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Увећава прозор вертикално"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Увећава прозор хоризонтално"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Прикажите поделу на лево"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Прикажите поделу на десно"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Матер"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Тастер који се користи за проширене радње управника прозорима"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -284,11 +284,11 @@ msgstr ""
"за компоненте рачунара. Очекује се да ово везује или подразумевани или низ "
"празних знакова."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Прилагање модалних прозорчића"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -298,12 +298,12 @@ msgstr ""
"појављују приложени на траку алата матичног прозора и бивају премештани "
"заједно са матичним прозором."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Укључује поплочавање ивице приликом отпуштања прозора на ивицама екрана"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -313,11 +313,11 @@ msgstr ""
"усправно и мења им величину водоравно да прекрију половину доступне области. "
"Отпуштање прозора на горњој ивици екрана увећава их у потпуности."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Радним просторима се управља динамички"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -327,11 +327,11 @@ msgstr ""
"стални број радних простора (одређен бројем радних простора у „org.gnome."
"desktop.wm.preferences“)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Радни простори само на примарне"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -339,11 +339,11 @@ msgstr ""
"Одређује да ли пребацивање радног простора треба да се деси за прозоре на "
"свим мониторима или само за прозоре на главном монитору."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Без искакања језичка"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -351,11 +351,11 @@ msgstr ""
"Одређује да ли ће употреба оквира искакања и истицања бити приказана за "
"кретање по прозорима."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Застој првог плана се мења док се показивач не заустави"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -365,11 +365,11 @@ msgstr ""
"план неће бити мењан одмах по уласку у прозор, већ само након што показивач "
"престане да се помера."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Ширина ивице за превлачење"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -377,11 +377,11 @@ msgstr ""
"Износ укупне ивице за превлачење. Ако видљиве ивице теме нису довољне, биће "
"додате невидљиве ивице за достизање ове вредности."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr "Сам увећава повећане прозоре најближег монитора"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -389,11 +389,11 @@ msgstr ""
"Ако је укључено, нови прозори који су почетно величине монитора самостално "
"бивају увећани."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Нови прозор у средиште"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -401,85 +401,93 @@ msgstr ""
"Ако је изабрано, нови прозори ће увек бити постављени на средину радног "
"екрана монитора."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Бира прозор из језичка искакања"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Отказивање језичка искакања"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Прелазак на ВТ 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Прелазак на ВТ 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Прелазак на ВТ 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Прелазак на ВТ 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Прелазак на ВТ 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Прелазак на ВТ 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Прелазак на ВТ 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Прелазак на ВТ 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Прелазак на ВТ 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Прелазак на ВТ 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Прелазак на ВТ 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Прелазак на ВТ 12"
#: ../src/backends/meta-monitor-manager.c:518
#: src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Промени монитор"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Прикажи помоћ на екрану"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Уграђени дисплеј"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Непознато"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Непознат дисплеј"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -487,20 +495,20 @@ msgid ""
msgstr ""
"Неки други композитни управник је већ покренут на приказу %i еркана „%s“."
#: ../src/core/bell.c:185
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Звонца"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ не даје одзив."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Програм не даје одзив."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -508,57 +516,56 @@ msgstr ""
"Можете мало сачекати док се програм не сабере или приморати програм да "
"комплетно прекине са радом."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Сачекај"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Приморај излаз"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Искључује везу са управником сесије"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Мења текућег управника прозорима"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Наводи ИБ управника сесије"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Икс екран који ће бити коришћен"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Покреће сесију из датотеке чувања"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Чини Икс позиве усклађеним"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Ради као вајландов саставник"
#: ../src/core/main.c:223
#| msgid "Run as a wayland compositor"
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Ради као угнеждени саставник"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Ради као пуни сервер приказа, уместо као угнеждени"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -573,20 +580,20 @@ msgstr ""
"НЕ постоји никаква гаранција; чак ни гаранција о ТРЖИШНОЈ ВРЕДНОСТИ или "
"ПРИЛАГОЂЕНОСТИ ОДРЕЂЕНОЈ НАМЕНИ.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Исписује издање"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Прикључци Матера за коришћење"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "%d. радни простор"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -595,16 +602,21 @@ msgstr ""
"Приказ „%s“ већ има управника прозора; пробајте да користите опцију „--"
"replace“ да замените тренутног управника прозора."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Приказ „%d“ на екрану „%s“ није исправан\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Матер је преведен без подршке за опширан режим\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Режим прекидача: Режим %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -612,7 +624,7 @@ msgstr ""
"Ови прозори не подржавају могућност „сачувај тренутна подешавања“ па ћете "
"морати ручно да их поново покренете када се следећи пут пријавите."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (на %s)"

View File

@ -1,8 +1,7 @@
# Serbian translation of mutter.
# Courtesy of Prevod.org team (http://prevod.org/) -- 2003—2016.
# This file is distributed under the same license as the mutter package.
#
# Translators:
# Translators:
# Goran Rakić <grakic@devbase.net>
# Danilo Šegan <danilo@prevod.org>, 2005.
# Miloš Popović <gpopac@gmail.com>, 2010.
@ -12,11 +11,11 @@ msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&"
"keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-09 01:41+0000\n"
"PO-Revision-Date: 2016-03-09 09:52+0200\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-11 08:39+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language: sr@latin\n"
"Language-Team: srpski <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -24,255 +23,256 @@ msgstr ""
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navigacija"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Premešta prozor na radni prostor broj 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Premešta prozor na radni prostor broj 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Premešta prozor na radni prostor broj 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Premešta prozor na radni prostor broj 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Premešta prozor na poslednji radni prostor"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Premešta prozor jedan radni prostor na levo"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Premešta prozor jedan radni prostor na desno"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Premešta prozor jedan radni prostor na gore"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Premešta prozor jedan radni prostor na dole"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Premešta prozor jedan monitor na levo"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Premešta prozor jedan monitor na desno"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Premešta prozor jedan monitor na gore"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Premešta prozor jedan monitor na dole"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Prebacuje programe"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Prebacuje na prethodni program"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Prebacuje prozore"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Prebacuje na prethodni prozor"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Prebacuje prozore programa"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Prebacuje na prethodni prozor programa"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
#| msgid "Switch system controls directly"
msgid "Switch system controls"
msgstr "Prebacuje kontrole sistema"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Prebacuje na prethodnu kontrolu sistema"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Prebacuje prozore direktno"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Prebacuje neposredno na prethodni prozor"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Prebacuje prozore programa direktno"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Prebacuje neposredno na prethodni prozor programa"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Prebacuje kontrole sistema direktno"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Prebacuje neposredno na prethodnu kontrolu sistema"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Skriva sve obične prozore"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Prebacuje se na radni prostor 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Prebacuje se na radni prostor 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Prebacuje se na radni prostor 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Prebacuje se na radni prostor 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Prebacuje se na poslednji radni prostor"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Premešta na radni prostor levo"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Premešta na radni prostor desno"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Premešta na radni prostor iznad"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Premešta na radni prostor ispod"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Sistem"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Prikazuje prompt za pokretanje naredbe"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Prikazuje pregled aktivnosti"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Prozori"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Aktivira meni prozora"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Isključuje/uključuje prikaz preko celog ekrana"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Isključuje/uključuje stanje uvećanja"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Uvećava prozor"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Vraća veličinu prozora"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Isključuje/uključuje stanje zasenčenosti"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Zatvara prozor"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Skriva prozor"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Premešta prozor"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Menja veličinu prozora"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Prikazuje prozor na svim radnim prostorima ili samo na jednom"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Izdiže prozor ukoliko ga drugi prozor zaklanja, u protivnom ga spušta"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Izdiže prozor iznad ostalih prozora"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Spušta prozor ispod ostalih prozora"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Uvećava prozor vertikalno"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Uvećava prozor horizontalno"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Prikažite podelu na levo"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Prikažite podelu na desno"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mater"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Taster koji se koristi za proširene radnje upravnika prozorima"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -284,11 +284,11 @@ msgstr ""
"za komponente računara. Očekuje se da ovo vezuje ili podrazumevani ili niz "
"praznih znakova."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Prilaganje modalnih prozorčića"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -298,12 +298,12 @@ msgstr ""
"pojavljuju priloženi na traku alata matičnog prozora i bivaju premeštani "
"zajedno sa matičnim prozorom."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Uključuje popločavanje ivice prilikom otpuštanja prozora na ivicama ekrana"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -313,11 +313,11 @@ msgstr ""
"uspravno i menja im veličinu vodoravno da prekriju polovinu dostupne oblasti. "
"Otpuštanje prozora na gornjoj ivici ekrana uvećava ih u potpunosti."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Radnim prostorima se upravlja dinamički"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -327,11 +327,11 @@ msgstr ""
"stalni broj radnih prostora (određen brojem radnih prostora u „org.gnome."
"desktop.wm.preferences“)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Radni prostori samo na primarne"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -339,11 +339,11 @@ msgstr ""
"Određuje da li prebacivanje radnog prostora treba da se desi za prozore na "
"svim monitorima ili samo za prozore na glavnom monitoru."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Bez iskakanja jezička"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -351,11 +351,11 @@ msgstr ""
"Određuje da li će upotreba okvira iskakanja i isticanja biti prikazana za "
"kretanje po prozorima."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Zastoj prvog plana se menja dok se pokazivač ne zaustavi"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -365,11 +365,11 @@ msgstr ""
"plan neće biti menjan odmah po ulasku u prozor, već samo nakon što pokazivač "
"prestane da se pomera."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Širina ivice za prevlačenje"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -377,11 +377,11 @@ msgstr ""
"Iznos ukupne ivice za prevlačenje. Ako vidljive ivice teme nisu dovoljne, biće "
"dodate nevidljive ivice za dostizanje ove vrednosti."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr "Sam uvećava povećane prozore najbližeg monitora"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -389,11 +389,11 @@ msgstr ""
"Ako je uključeno, novi prozori koji su početno veličine monitora samostalno "
"bivaju uvećani."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Novi prozor u središte"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -401,85 +401,93 @@ msgstr ""
"Ako je izabrano, novi prozori će uvek biti postavljeni na sredinu radnog "
"ekrana monitora."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Bira prozor iz jezička iskakanja"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Otkazivanje jezička iskakanja"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Prelazak na VT 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Prelazak na VT 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Prelazak na VT 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Prelazak na VT 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Prelazak na VT 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Prelazak na VT 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Prelazak na VT 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Prelazak na VT 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Prelazak na VT 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Prelazak na VT 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Prelazak na VT 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Prelazak na VT 12"
#: ../src/backends/meta-monitor-manager.c:518
#: src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Promeni monitor"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Prikaži pomoć na ekranu"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Ugrađeni displej"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Nepoznato"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Nepoznat displej"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -487,20 +495,20 @@ msgid ""
msgstr ""
"Neki drugi kompozitni upravnik je već pokrenut na prikazu %i erkana „%s“."
#: ../src/core/bell.c:185
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Zvonca"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ ne daje odziv."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Program ne daje odziv."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -508,57 +516,56 @@ msgstr ""
"Možete malo sačekati dok se program ne sabere ili primorati program da "
"kompletno prekine sa radom."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Sačekaj"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Primoraj izlaz"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Isključuje vezu sa upravnikom sesije"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Menja tekućeg upravnika prozorima"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Navodi IB upravnika sesije"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Iks ekran koji će biti korišćen"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Pokreće sesiju iz datoteke čuvanja"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Čini Iks pozive usklađenim"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Radi kao vajlandov sastavnik"
#: ../src/core/main.c:223
#| msgid "Run as a wayland compositor"
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Radi kao ugneždeni sastavnik"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Radi kao puni server prikaza, umesto kao ugneždeni"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -573,20 +580,20 @@ msgstr ""
"NE postoji nikakva garancija; čak ni garancija o TRŽIŠNOJ VREDNOSTI ili "
"PRILAGOĐENOSTI ODREĐENOJ NAMENI.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Ispisuje izdanje"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Priključci Matera za korišćenje"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "%d. radni prostor"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -595,16 +602,21 @@ msgstr ""
"Prikaz „%s“ već ima upravnika prozora; probajte da koristite opciju „--"
"replace“ da zamenite trenutnog upravnika prozora."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mater je preveden bez podrške za opširan režim\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Režim prekidača: Režim %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -612,7 +624,7 @@ msgstr ""
"Ovi prozori ne podržavaju mogućnost „sačuvaj trenutna podešavanja“ pa ćete "
"morati ručno da ih ponovo pokrenete kada se sledeći put prijavite."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (na %s)"

273
po/sv.po
View File

@ -3,7 +3,7 @@
# Christian Rose <menthos@menthos.com>, 2001, 2002, 2003, 2004, 2005.
# Daniel Nylander <po@danielnylander.se>, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
# Mattias Eriksson <snaggen@gmail.com>, 2014.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2016.
# Sebastian Rasmussen <sebras@gmail.com>, 2016.
#
msgid ""
@ -11,265 +11,265 @@ msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-05 13:41+0000\n"
"PO-Revision-Date: 2016-03-06 13:47+0100\n"
"Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
"POT-Creation-Date: 2016-09-07 09:27+0000\n"
"PO-Revision-Date: 2016-09-07 11:54+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.7.1\n"
"X-Generator: Poedit 1.8.8\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Navigation"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Flytta fönster till arbetsyta 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Flytta fönster till arbetsyta 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Flytta fönster till arbetsyta 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Flytta fönster till arbetsyta 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Flytta fönster till sista arbetsyta"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Flytta fönster en arbetsyta åt vänster"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Flytta fönster en arbetsyta åt höger"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Flytta fönster en arbetsyta uppåt"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Flytta fönster en arbetsyta nedåt"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Flytta fönster en skärm åt vänster"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Flytta fönster en skärm åt höger"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Flytta fönster en skärm uppåt"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Flytta fönster en skärm nedåt"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Växla program"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Växla till föregående program"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Växla fönster"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Växla till föregående fönster"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Växla fönster för ett program"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Växla till föregående fönster för ett program"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Växla systemkontroller"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Växla till föregående systemkontroll"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Växla fönster direkt"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Växla direkt till föregående fönster"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Växla fönster för ett program direkt"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Växla direkt till föregående fönster för ett program"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Växla systemkontroller direkt"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Växla direkt till föregående systemkontroll"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Dölj alla normala fönster"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Växla till arbetsyta 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Växla till arbetsyta 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Växla till arbetsyta 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Växla till arbetsyta 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Växla till sista arbetsyta"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Flytta till arbetsyta till vänster"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Flytta till arbetsyta till höger"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Flytta till arbetsyta ovanför"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Flytta till arbetsyta nedanför"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "System"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Visa Kör kommando-dialogen"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Visa aktivitetsöversikt"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Fönster"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Aktivera fönstermenyn"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Växla helskärmsläge"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Växla maximeringstillstånd"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Maximera fönster"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Återställ fönster"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Växla upprullat tillstånd"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Stäng fönster"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Dölj fönster"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Flytta fönster"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Ändra storlek på fönster"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Växla fönster på alla arbetsytor eller bara en"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Höj fönstret om det skyms av ett annat fönster, sänk det annars"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Höj fönstret över andra fönster"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Sänk fönster under andra fönster"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Maximera fönster vertikalt"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Maximera fönster horisontellt"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Vy delad till vänster"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Vy delad till höger"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Modifierare att använda för utökade fönsterhanteringsåtgärder"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -281,11 +281,11 @@ msgstr ""
"tangenten\" på PC-maskinvara. Det är förväntat att denna bindning antingen "
"är standard eller inställd till en tom sträng."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Bifoga modala dialogfönster"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -295,11 +295,11 @@ msgstr ""
"dialogfönster att visas anslutna till namnlisten i föräldrafönstret och "
"flyttas tillsammans med föräldrafönstret."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Aktivera kantframhävning när fönster släpps på skärmkanter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -309,11 +309,11 @@ msgstr ""
"dem vertikalt och storleksändra dem horisontellt till att täcka hälften av "
"den tillgängliga ytan. Släppa fönster på övre skärmkanten maximerar dem helt."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Arbetsytor hanteras dynamiskt"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@ -323,11 +323,11 @@ msgstr ""
"ett fast antal arbetsytor (bestäms av nyckeln num-workspaces i org.gnome."
"desktop.wm.preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Arbetsytor endast på primär"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@ -335,11 +335,11 @@ msgstr ""
"Bestämmer huruvida arbetsyteväxling ska hända för alla fönster på alla "
"skärmar eller endast för fönster på den primära skärmen."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Ingen flik-popup"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@ -347,11 +347,11 @@ msgstr ""
"Bestämmer huruvida användning av popup och framhävning av kontur ska "
"inaktiveras vid fönsterväxling."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Fördröj fokusändringar till muspekaren hålls still"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -361,11 +361,11 @@ msgstr ""
"kommer fokus inte att ändras omedelbart när muspekaren går in över ett "
"fönster, utan först efter att muspekaren slutar röra sig."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Dragbar rambredd"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -373,11 +373,11 @@ msgstr ""
"Mängd av totalt dragbara ramar. Om temats synliga ramar inte är tillräckliga "
"kommer osynliga ramar att läggas till för att möta detta värde."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr "Automatiskt maximera fönster vars storlek ligger nära skärmens storlek"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
@ -385,11 +385,11 @@ msgstr ""
"Om aktiverad kommer nya fönster med nästan samma storlek som skärmen att bli "
"automatiskt maximerade."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Placera nya fönster centrerat"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -397,105 +397,113 @@ msgstr ""
"När satt till \"true\", kommer nya fönster alltid att placeras centrerat på "
"den aktiva skärmen."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Välj fönster från flik-popup"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Avbryt flik-popup"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Växla till VT 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Växla till VT 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Växla till VT 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Växla till VT 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Växla till VT 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Växla till VT 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Växla till VT 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Växla till VT 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Växla till VT 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Växla till VT 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Växla till VT 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Växla till VT 12"
#: ../src/backends/meta-monitor-manager.c:518
#: src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Växla skärm"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Visa hjälp på skärmen"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Inbyggd display"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Okänd"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Okänd display"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr "En annan kompositionshanterare körs redan på skärm %i på display ”%s”."
#: ../src/core/bell.c:185
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Ljudsignalhändelse"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "”%s” svarar inte."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Programmet svarar inte."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -503,56 +511,56 @@ msgstr ""
"Du kan välja att vänta en kort stund på det för att fortsätta eller tvinga "
"programmet att helt avslutas."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Vänta"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Tvinga avslut"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Misslyckades med att öppna X Window System-displayen ”%s”\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Inaktivera anslutning till sessionshanteraren"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Ersätt körande fönsterhanteraren"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Ange sessionshanteringsid"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "X-display att använda"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Initiera session från sparandefil"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Gör X-anrop synkrona"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Kör som en wayland-kompositionshanterare"
#: ../src/core/main.c:223
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Kör som en nästlad kompositionshanterare"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Kör som en full display-tjänst, i stället för nästlad"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -567,20 +575,20 @@ msgstr ""
"Det finns INGA garantier; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT "
"SPECIELLT ÄNDAMÅL.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Skriv ut version"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Mutter-insticksmodul att använda"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Arbetsyta %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -589,16 +597,21 @@ msgstr ""
"Display ”%s” har redan en fönsterhanterare; försök med flaggan --replace för "
"att ersätta den aktuella fönsterhanteraren."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Skärm %d på display ”%s” är ogiltig\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter kompilerades utan stöd för utförligt läge\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Lägesväxel: Läge %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -606,7 +619,7 @@ msgstr ""
"Dessa fönster saknar stöd för &quot;spara nuvarande inställningar&quot; och "
"kommer att behöva startas om manuellt nästa gång du loggar in."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (på %s)"

322
po/vi.po
View File

@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: metacity master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-26 14:03+0000\n"
"PO-Revision-Date: 2016-03-27 07:22+0700\n"
"POT-Creation-Date: 2016-09-08 21:37+0000\n"
"PO-Revision-Date: 2016-09-09 08:14+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <gnome-vi-list@gnome.org>\n"
"Language: vi\n"
@ -21,255 +21,255 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Gtranslator 2.91.7\n"
#: ../data/50-mutter-navigation.xml.in.h:1
#: data/50-mutter-navigation.xml:6
msgid "Navigation"
msgstr "Điều hướng"
#: ../data/50-mutter-navigation.xml.in.h:2
#: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1"
msgstr "Chuyển cửa sổ sang vùng làm việc 1"
msgstr "Chuyển cửa sổ sang không gian làm việc 1"
#: ../data/50-mutter-navigation.xml.in.h:3
#: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2"
msgstr "Chuyển cửa sổ sang vùng làm việc 2"
msgstr "Chuyển cửa sổ sang không gian làm việc 2"
#: ../data/50-mutter-navigation.xml.in.h:4
#: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3"
msgstr "Chuyển cửa sổ sang vùng làm việc 3"
msgstr "Chuyển cửa sổ sang không gian làm việc 3"
#: ../data/50-mutter-navigation.xml.in.h:5
#: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4"
msgstr "Chuyển cửa sổ sang vùng làm việc 4"
msgstr "Chuyển cửa sổ sang không gian làm việc 4"
#: ../data/50-mutter-navigation.xml.in.h:6
#: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace"
msgstr "Chuyển cửa sổ sang vùng làm việc cuối"
msgstr "Chuyển cửa sổ sang không gian làm việc cuối"
#: ../data/50-mutter-navigation.xml.in.h:7
#: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Chuyển cửa sổ sang vùng làm việc bên trái"
msgstr "Chuyển cửa sổ sang không gian làm việc bên trái"
#: ../data/50-mutter-navigation.xml.in.h:8
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Chuyển cửa sổ sang vùng làm việc bên phải"
msgstr "Chuyển cửa sổ sang không gian làm việc bên phải"
#: ../data/50-mutter-navigation.xml.in.h:9
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up"
msgstr "Chuyển cửa sổ lên một vùng làm việc"
msgstr "Chuyển cửa sổ lên một không gian làm việc"
#: ../data/50-mutter-navigation.xml.in.h:10
#: data/50-mutter-navigation.xml:33
msgid "Move window one workspace down"
msgstr "Chuyển cửa sổ xuống vùng một làm việc"
#: ../data/50-mutter-navigation.xml.in.h:11
#: data/50-mutter-navigation.xml:36
msgid "Move window one monitor to the left"
msgstr "Chuyển cửa sổ sang trái một màn hình"
#: ../data/50-mutter-navigation.xml.in.h:12
#: data/50-mutter-navigation.xml:39
msgid "Move window one monitor to the right"
msgstr "Chuyển cửa sổ sang phải một màn hình"
#: ../data/50-mutter-navigation.xml.in.h:13
#: data/50-mutter-navigation.xml:42
msgid "Move window one monitor up"
msgstr "Chuyển cửa sổ lên một màn hình"
#: ../data/50-mutter-navigation.xml.in.h:14
#: data/50-mutter-navigation.xml:45
msgid "Move window one monitor down"
msgstr "Chuyển cửa sổ xuống một màn hình"
#: ../data/50-mutter-navigation.xml.in.h:15
#: data/50-mutter-navigation.xml:49
msgid "Switch applications"
msgstr "Chuyển ứng dụng"
#: ../data/50-mutter-navigation.xml.in.h:16
#: data/50-mutter-navigation.xml:54
msgid "Switch to previous application"
msgstr "Chuyển sang ứng dụng kế trước"
#: ../data/50-mutter-navigation.xml.in.h:17
#: data/50-mutter-navigation.xml:58
msgid "Switch windows"
msgstr "Chuyển cửa sổ"
#: ../data/50-mutter-navigation.xml.in.h:18
#: data/50-mutter-navigation.xml:63
msgid "Switch to previous window"
msgstr "Chuyển sang cửa sổ kế trước"
#: ../data/50-mutter-navigation.xml.in.h:19
#: data/50-mutter-navigation.xml:67
msgid "Switch windows of an application"
msgstr "Chuyển cửa sổ của một ứng dụng"
#: ../data/50-mutter-navigation.xml.in.h:20
#: data/50-mutter-navigation.xml:72
msgid "Switch to previous window of an application"
msgstr "Chuyển cửa sổ kế trước của một ứng dụng"
msgstr "Chuyển sang cửa sổ kế trước của một ứng dụng"
#: ../data/50-mutter-navigation.xml.in.h:21
#: data/50-mutter-navigation.xml:76
msgid "Switch system controls"
msgstr "Chuyển điều khiển hệ thống"
#: ../data/50-mutter-navigation.xml.in.h:22
#: data/50-mutter-navigation.xml:81
msgid "Switch to previous system control"
msgstr "Chuyển đến điều khiển hệ thống kế trước"
#: ../data/50-mutter-navigation.xml.in.h:23
#: data/50-mutter-navigation.xml:85
msgid "Switch windows directly"
msgstr "Chuyển cửa sổ trực tiếp"
#: ../data/50-mutter-navigation.xml.in.h:24
#: data/50-mutter-navigation.xml:90
msgid "Switch directly to previous window"
msgstr "Chuyển trực tiếp đến cửa sổ kế trước"
#: ../data/50-mutter-navigation.xml.in.h:25
#: data/50-mutter-navigation.xml:94
msgid "Switch windows of an app directly"
msgstr "Chuyển trực tiếp cửa sổ của một ứng dụng"
#: ../data/50-mutter-navigation.xml.in.h:26
#: data/50-mutter-navigation.xml:99
msgid "Switch directly to previous window of an app"
msgstr "Chuyển trực tiếp đến cửa sổ kế trước của một ứng dụng"
#: ../data/50-mutter-navigation.xml.in.h:27
#: data/50-mutter-navigation.xml:103
msgid "Switch system controls directly"
msgstr "Chuyển điều khiển hệ thống trực tiếp"
#: ../data/50-mutter-navigation.xml.in.h:28
#: data/50-mutter-navigation.xml:108
msgid "Switch directly to previous system control"
msgstr "Chuyển trực tiếp đến điều khiển hệ thống kế trước"
#: ../data/50-mutter-navigation.xml.in.h:29
#: data/50-mutter-navigation.xml:111
msgid "Hide all normal windows"
msgstr "Ẩn mọi cửa sổ thường"
#: ../data/50-mutter-navigation.xml.in.h:30
#: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 1"
msgstr "Chuyển sang vùng làm việc 1"
msgstr "Chuyển sang không gian làm việc 1"
#: ../data/50-mutter-navigation.xml.in.h:31
#: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 2"
msgstr "Chuyển sang vùng làm việc 2"
msgstr "Chuyển sang không gian làm việc 2"
#: ../data/50-mutter-navigation.xml.in.h:32
#: data/50-mutter-navigation.xml:120
msgid "Switch to workspace 3"
msgstr "Chuyển sang vùng làm việc 3"
msgstr "Chuyển sang không gian làm việc 3"
#: ../data/50-mutter-navigation.xml.in.h:33
#: data/50-mutter-navigation.xml:123
msgid "Switch to workspace 4"
msgstr "Chuyển sang vùng làm việc 4"
msgstr "Chuyển sang không gian làm việc 4"
#: ../data/50-mutter-navigation.xml.in.h:34
#: data/50-mutter-navigation.xml:126
msgid "Switch to last workspace"
msgstr "Chuyển sang vùng làm việc cuối"
msgstr "Chuyển sang không gian làm việc cuối"
#: ../data/50-mutter-navigation.xml.in.h:35
#: data/50-mutter-navigation.xml:129
msgid "Move to workspace left"
msgstr "Chuyển sang vùng làm việc trái"
msgstr "Chuyển sang không gian làm việc trái"
#: ../data/50-mutter-navigation.xml.in.h:36
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Chuyển sang vùng làm việc phải"
msgstr "Chuyển sang không gian làm việc phải"
#: ../data/50-mutter-navigation.xml.in.h:37
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above"
msgstr "Chuyển sang vùng làm việc trên"
msgstr "Chuyển sang không gian làm việc trên"
#: ../data/50-mutter-navigation.xml.in.h:38
#: data/50-mutter-navigation.xml:138
msgid "Move to workspace below"
msgstr "Chuyển sang vùng làm việc dưới"
msgstr "Chuyển sang không gian làm việc dưới"
#: ../data/50-mutter-system.xml.in.h:1
#: data/50-mutter-system.xml:6
msgid "System"
msgstr "Hệ thống"
#: ../data/50-mutter-system.xml.in.h:2
#: data/50-mutter-system.xml:8
msgid "Show the run command prompt"
msgstr "Hiện dấu nhắc dòng lệnh"
#: ../data/50-mutter-system.xml.in.h:3
#: data/50-mutter-system.xml:10
msgid "Show the activities overview"
msgstr "Hiện tổng quan hoạt động"
#: ../data/50-mutter-windows.xml.in.h:1
#: data/50-mutter-windows.xml:6
msgid "Windows"
msgstr "Cửa sổ"
#: ../data/50-mutter-windows.xml.in.h:2
#: data/50-mutter-windows.xml:8
msgid "Activate the window menu"
msgstr "Kích hoạt trình đơn cửa sổ"
#: ../data/50-mutter-windows.xml.in.h:3
#: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode"
msgstr "Bật/tắt toàn màn hình"
#: ../data/50-mutter-windows.xml.in.h:4
#: data/50-mutter-windows.xml:12
msgid "Toggle maximization state"
msgstr "Bật/tắt trạng thái to hết cỡ"
#: ../data/50-mutter-windows.xml.in.h:5
#: data/50-mutter-windows.xml:14
msgid "Maximize window"
msgstr "Phóng to cửa sổ hết cỡ"
#: ../data/50-mutter-windows.xml.in.h:6
#: data/50-mutter-windows.xml:16
msgid "Restore window"
msgstr "Phục hồi cửa sổ"
#: ../data/50-mutter-windows.xml.in.h:7
#: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Bật tắt trạng thái đánh bóng"
#: ../data/50-mutter-windows.xml.in.h:8
#: data/50-mutter-windows.xml:20
msgid "Close window"
msgstr "Đóng cửa sổ"
#: ../data/50-mutter-windows.xml.in.h:9
#: data/50-mutter-windows.xml:22
msgid "Hide window"
msgstr "Ẩn cửa sổ"
#: ../data/50-mutter-windows.xml.in.h:10
#: data/50-mutter-windows.xml:24
msgid "Move window"
msgstr "Di chuyển cửa sổ"
#: ../data/50-mutter-windows.xml.in.h:11
#: data/50-mutter-windows.xml:26
msgid "Resize window"
msgstr "Co giãn cửa sổ"
#: ../data/50-mutter-windows.xml.in.h:12
#: data/50-mutter-windows.xml:29
msgid "Toggle window on all workspaces or one"
msgstr "Dùng cửa sổ trên một/mọi vùng làm việc"
msgstr "Dùng cửa sổ trên một/mọi không gian làm việc"
#: ../data/50-mutter-windows.xml.in.h:13
#: data/50-mutter-windows.xml:31
msgid "Raise window if covered, otherwise lower it"
msgstr "Nâng cửa sổ nếu bị che, không thì hạ xuống"
#: ../data/50-mutter-windows.xml.in.h:14
#: data/50-mutter-windows.xml:33
msgid "Raise window above other windows"
msgstr "Nâng cửa sổ trên các cửa sổ khác"
#: ../data/50-mutter-windows.xml.in.h:15
#: data/50-mutter-windows.xml:35
msgid "Lower window below other windows"
msgstr "Hạ cửa sổ dưới các cửa sổ khác"
#: ../data/50-mutter-windows.xml.in.h:16
#: data/50-mutter-windows.xml:37
msgid "Maximize window vertically"
msgstr "Phóng to cửa sổ theo chiều dọc"
#: ../data/50-mutter-windows.xml.in.h:17
#: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally"
msgstr "Phóng to cửa sổ theo chiều ngang"
#: ../data/50-mutter-windows.xml.in.h:18
#: data/50-mutter-windows.xml:43
msgid "View split on left"
msgstr "Phân đôi bên trái"
#: ../data/50-mutter-windows.xml.in.h:19
#: data/50-mutter-windows.xml:47
msgid "View split on right"
msgstr "Phân đôi bên phải"
#: ../data/mutter.desktop.in.h:1
#: data/mutter.desktop.in:4
msgid "Mutter"
msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1
#: data/org.gnome.mutter.gschema.xml.in:7
msgid "Modifier to use for extended window management operations"
msgstr "Phím bổ trợ dùng cho chức năng quản lý cửa sổ mở rộng"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2
#: data/org.gnome.mutter.gschema.xml.in:8
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@ -280,11 +280,11 @@ msgstr ""
"ứng dụng. Mặc định là \"phím Windows\" trên phần cứng PC. Chứa một tổ hợp "
"phím, hoặc mặc định, hoặc chuỗi rỗng."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr "Gắn hộp thoại cách thức"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4
#: data/org.gnome.mutter.gschema.xml.in:21
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@ -294,11 +294,11 @@ msgstr ""
"xuất hiện gắn với thanh tiêu đề của cửa sổ cha và được di chuyển cùng với "
"cửa sổ cha."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5
#: data/org.gnome.mutter.gschema.xml.in:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Bật lợp cạnh khi thả cửa sổ trên cạnh màn hình"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6
#: data/org.gnome.mutter.gschema.xml.in:31
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@ -308,46 +308,47 @@ msgstr ""
"dọc và điều chỉnh chiều ngang phủ hết nửa màn hình. Thả cửa sổ trên đỉnh màn "
"hình sẽ phóng to toàn màn hình."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7
#: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically"
msgstr "Vùng làm việc được quản lý động"
msgstr "Không gian làm việc được quản lý động"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8
#: data/org.gnome.mutter.gschema.xml.in:41
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 ""
"Xác định vùng làm việc được quản lý động, hay cố định số vùng làm việc, xác "
"định bởi khóa num-workspaces trong org.gnome.desktop.wm.preferences."
"Xác định không gian làm việc được quản lý động, hay cố định số không gian "
"làm việc, xác định bởi khóa num-workspaces trong org.gnome.desktop.wm."
"preferences."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9
#: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary"
msgstr "Vùng làm việc chỉ trên màn hình chính"
msgstr "Không gian làm việc chỉ trên màn hình chính"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10
#: data/org.gnome.mutter.gschema.xml.in:51
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr ""
"Xác định chuyển vùng làm việc cho cửa sổ trên mọi màn hình hay chỉ trên màn "
"hình chính."
"Xác định chuyển không gian làm việc cho cửa sổ trên mọi màn hình hay chỉ "
"trên màn hình chính."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11
#: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup"
msgstr "Không tab popup"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12
#: data/org.gnome.mutter.gschema.xml.in:60
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr "Xác định có bỏ qua popup và khung tô sáng khi xoay vòng cửa sổ không."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13
#: data/org.gnome.mutter.gschema.xml.in:68
msgid "Delay focus changes until the pointer stops moving"
msgstr "Khoảng chờ con trỏ dừng di chuyển trước khi thay đổi tiêu điểm"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14
#: data/org.gnome.mutter.gschema.xml.in:69
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 "
@ -357,11 +358,11 @@ msgstr ""
"điểm sẽ được thay đổi tức thì khi vào cửa sổ, nhưng chỉ sau khi chuột ngừng "
"di chuyển."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15
#: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width"
msgstr "Độ rộng biên có thể kéo"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16
#: data/org.gnome.mutter.gschema.xml.in:80
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."
@ -369,21 +370,21 @@ msgstr ""
"Kích thước biên có thể kéo. Nếu biên thấy được của chủ đề không đủ, biên vô "
"hình sẽ được thêm vào để thỏa mãn giá trị này."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17
#: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows"
msgstr "Tự động phóng to cửa sổ gần bằng màn hình"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18
#: data/org.gnome.mutter.gschema.xml.in:90
msgid ""
"If enabled, new windows that are initially the size of the monitor "
"automatically get maximized."
msgstr "Nếu bật, sẽ tự động phóng to cửa sổ mới với kích thước tối đa."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19
#: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center"
msgstr "Đặt cửa sổ mới ở chính giữa"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20
#: data/org.gnome.mutter.gschema.xml.in:99
msgid ""
"When true, the new windows will always be put in the center of the active "
"screen of the monitor."
@ -391,85 +392,93 @@ msgstr ""
"Nếu đúng, các cửa sổ mới sẽ luôn được đặt tại trung tâm của màn hình đang "
"hoạt động của màn hình."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21
#: data/org.gnome.mutter.gschema.xml.in:120
msgid "Select window from tab popup"
msgstr "Chọn cửa sổ từ thanh nổi lên"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr "Hủy thanh nổi lên"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr "Chuyển sang VT 1"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:2
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr "Chuyển sang VT 2"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:3
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr "Chuyển sang VT 3"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:4
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr "Chuyển sang VT 4"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:5
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr "Chuyển sang VT 5"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:6
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr "Chuyển sang VT 6"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:7
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr "Chuyển sang VT 7"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:8
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr "Chuyển sang VT 8"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:9
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr "Chuyển sang VT 9"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:10
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr "Chuyển sang VT 10"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:11
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr "Chuyển sang VT 11"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:12
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr "Chuyển sang VT 12"
#: ../src/backends/meta-monitor-manager.c:518
#: src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Chuyển màn hình"
#: src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Hiển thị trợ giúp trên-màn-hình"
#: src/backends/meta-monitor-manager.c:514
msgid "Built-in display"
msgstr "Màn hình tích hợp"
#: ../src/backends/meta-monitor-manager.c:544
#: src/backends/meta-monitor-manager.c:537
msgid "Unknown"
msgstr "Không rõ"
#: ../src/backends/meta-monitor-manager.c:546
#: src/backends/meta-monitor-manager.c:539
msgid "Unknown Display"
msgstr "Không hiểu màn hình"
#. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"'
#.
#: ../src/backends/meta-monitor-manager.c:554
#: src/backends/meta-monitor-manager.c:547
#, c-format
msgid "%s %s"
msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456
#: src/compositor/compositor.c:463
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
@ -477,20 +486,20 @@ msgid ""
msgstr ""
"Bộ quản lý cửa sổ đã đang chạy trên Màn hình %i trên bộ trình bày \"%s\"."
#: ../src/core/bell.c:194
#: src/core/bell.c:194
msgid "Bell event"
msgstr "Sự kiện chuông"
#: ../src/core/delete.c:127
#: src/core/delete.c:127
#, c-format
msgid "“%s” is not responding."
msgstr "“%s” không trả lời."
#: ../src/core/delete.c:129
#: src/core/delete.c:129
msgid "Application is not responding."
msgstr "Ứng dụng không trả lời."
#: ../src/core/delete.c:134
#: src/core/delete.c:134
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@ -498,56 +507,56 @@ msgstr ""
"Bạn có thể chọn chờ một lúc cho nó tiếp tục hoặc buộc chấm dứt hoàn toàn ứng "
"dụng."
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Wait"
msgstr "_Chờ"
#: ../src/core/delete.c:141
#: src/core/delete.c:141
msgid "_Force Quit"
msgstr "_Buộc thoát"
#: ../src/core/display.c:555
#: src/core/display.c:590
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Gặp lỗi khi mở bộ trình bày Hệ thống Cửa sổ X \"%s\".\n"
#: ../src/core/main.c:181
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "Vô hiệu hóa kết nối với bộ quản lý phiên làm việc"
#: ../src/core/main.c:187
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "Thay thế bộ quản lý cửa sổ đang chạy"
#: ../src/core/main.c:193
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "Ghi rõ mã số quản lý phiên làm việc"
#: ../src/core/main.c:198
#: src/core/main.c:199
msgid "X Display to use"
msgstr "Bộ trình bày X cần dùng"
#: ../src/core/main.c:204
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "Khởi động phiên làm việc từ tập tin lưu"
#: ../src/core/main.c:210
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "Khiến các lời gọi X đồng bộ với nhau"
msgstr "Khiến các gọi X đồng bộ với nhau"
#: ../src/core/main.c:217
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "Chạy như là một “wayland compositor”"
#: ../src/core/main.c:223
#: src/core/main.c:224
msgid "Run as a nested compositor"
msgstr "Chạy như là một “nested compositor”"
#: ../src/core/main.c:231
#: src/core/main.c:232
msgid "Run as a full display server, rather than nested"
msgstr "Chạy như là một dịch vụ hiển thị đầy đủ, thay cho lồng nhau"
#: ../src/core/mutter.c:39
#: src/core/mutter.c:39
#, c-format
msgid ""
"mutter %s\n"
@ -563,20 +572,20 @@ msgstr ""
"KHÔNG CÓ BẢO HÀNH GÌ CẢ, THẬM CHÍ KHÔNG CÓ BẢO ĐẢM ĐƯỢC NGỤ Ý KHẢ NĂNG BÁN "
"HAY KHẢ NĂNG LÀM ĐƯỢC VIỆC DỨT KHOÁT.\n"
#: ../src/core/mutter.c:53
#: src/core/mutter.c:53
msgid "Print version"
msgstr "Hiển thị phiên bản"
#: ../src/core/mutter.c:59
#: src/core/mutter.c:59
msgid "Mutter plugin to use"
msgstr "Phần bổ sung Mutter cần dùng"
#: ../src/core/prefs.c:1997
#: src/core/prefs.c:1997
#, c-format
msgid "Workspace %d"
msgstr "Vùng làm việc %d"
msgstr "Không gian làm việc %d"
#: ../src/core/screen.c:521
#: src/core/screen.c:521
#, c-format
msgid ""
"Display \"%s\" already has a window manager; try using the --replace option "
@ -585,16 +594,21 @@ msgstr ""
"Màn hình \"%s\" đã có bộ quản lý cửa sổ rồi; hãy thử dùng tùy chọn “--"
"replace” để thay thế bộ quản lý cửa sổ đang dùng."
#: ../src/core/screen.c:603
#: src/core/screen.c:606
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Màn hình %d trên bộ trình bày \"%s\" không hợp lệ.\n"
#: ../src/core/util.c:121
#: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter đã được biên dịch không hỗ trợ chế độ chi tiết\n"
#: ../src/x11/session.c:1815
#: src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Chuyển chế độ: Chế độ %d"
#: src/x11/session.c:1815
msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
@ -602,7 +616,7 @@ msgstr ""
"Những cửa sổ này không hỗ trợ &quot;lưu cài đặt hiện thời&quot; và sẽ phải "
"khởi động lại bằng tay lần kế bạn đăng nhập."
#: ../src/x11/window-props.c:549
#: src/x11/window-props.c:548
#, c-format
msgid "%s (on %s)"
msgstr "%s (trên %s)"

View File

@ -61,8 +61,8 @@ mutter_built_sources += \
gtk-shell-server-protocol.h \
gtk-primary-selection-protocol.c \
gtk-primary-selection-server-protocol.h \
xdg-shell-unstable-v5-protocol.c \
xdg-shell-unstable-v5-server-protocol.h \
xdg-shell-unstable-v6-protocol.c \
xdg-shell-unstable-v6-server-protocol.h \
relative-pointer-unstable-v1-protocol.c \
relative-pointer-unstable-v1-server-protocol.h \
pointer-constraints-unstable-v1-protocol.c \
@ -291,6 +291,8 @@ libmutter_la_SOURCES += \
wayland/meta-wayland-data-device.c \
wayland/meta-wayland-data-device.h \
wayland/meta-wayland-data-device-private.h \
wayland/meta-wayland-input-device.c \
wayland/meta-wayland-input-device.h \
wayland/meta-wayland-pointer-gestures.c \
wayland/meta-wayland-pointer-gestures.h \
wayland/meta-wayland-pointer-gesture-swipe.c \
@ -347,6 +349,8 @@ libmutter_la_SOURCES += \
wayland/meta-wayland-xdg-shell.h \
wayland/meta-wayland-wl-shell.c \
wayland/meta-wayland-wl-shell.h \
wayland/meta-wayland-gtk-shell.c \
wayland/meta-wayland-gtk-shell.h \
$(NULL)
endif
@ -361,6 +365,7 @@ libmutter_la_SOURCES += \
backends/native/meta-clutter-backend-native.h \
backends/native/meta-cursor-renderer-native.c \
backends/native/meta-cursor-renderer-native.h \
backends/native/meta-default-modes.h \
backends/native/meta-idle-monitor-native.c \
backends/native/meta-idle-monitor-native.h \
backends/native/meta-input-settings-native.c \
@ -506,6 +511,7 @@ EXTRA_DIST += \
org.freedesktop.login1.xml \
org.gnome.Mutter.DisplayConfig.xml \
org.gnome.Mutter.IdleMonitor.xml \
backends/native/gen-default-modes.py \
$(NULL)
BUILT_SOURCES = \
@ -563,6 +569,12 @@ $(dbus_login1_built_sources) : Makefile.am org.freedesktop.login1.xml
--c-generate-autocleanup all \
$(srcdir)/org.freedesktop.login1.xml
backends/native/meta-default-modes.h: backends/native/gen-default-modes.py Makefile.am
@if test -n "$(CVT)"; then \
if $(AM_V_P); then PS4= set -x; else echo " GEN $@"; fi; \
python $< > $@; \
fi
.SECONDEXPANSION:
define protostability
@ -574,10 +586,10 @@ $(shell echo $1 | sed 's/\([a-z\-]\+\)-[a-z]\+-v[0-9]\+/\1/')
endef
%-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
$(AM_V_GEN)$(WAYLAND_SCANNER) code $< $@
%-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header $< $@
%-protocol.c : $(srcdir)/wayland/protocol/%.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
$(AM_V_GEN)$(WAYLAND_SCANNER) code $< $@
%-server-protocol.h : $(srcdir)/wayland/protocol/%.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header $< $@

View File

@ -103,6 +103,9 @@ struct _MetaBackendClass
double *dy,
double *dx_unaccel,
double *dy_unaccel);
void (* set_numlock) (MetaBackend *backend,
gboolean numlock_state);
};
void meta_init_backend (MetaBackendType backend_type);

View File

@ -542,6 +542,14 @@ meta_backend_lock_layout_group (MetaBackend *backend,
META_BACKEND_GET_CLASS (backend)->lock_layout_group (backend, idx);
}
void
meta_backend_set_numlock (MetaBackend *backend,
gboolean numlock_state)
{
META_BACKEND_GET_CLASS (backend)->set_numlock (backend, numlock_state);
}
/**
* meta_backend_get_stage:
* @backend: A #MetaBackend
@ -790,9 +798,9 @@ meta_is_stage_views_enabled (void)
mutter_stage_views = g_getenv ("MUTTER_STAGE_VIEWS");
if (!mutter_stage_views)
return FALSE;
return TRUE;
return strcmp (mutter_stage_views, "1") == 0;
return !g_str_equal (mutter_stage_views, "0");
}
MetaInputSettings *

View File

@ -42,11 +42,25 @@ struct _MetaCursorRendererPrivate
MetaCursorSprite *displayed_cursor;
MetaOverlay *stage_overlay;
gboolean handled_by_backend;
guint post_paint_func_id;
};
typedef struct _MetaCursorRendererPrivate MetaCursorRendererPrivate;
enum {
CURSOR_PAINTED,
LAST_SIGNAL
};
static guint signals[LAST_SIGNAL];
G_DEFINE_TYPE_WITH_PRIVATE (MetaCursorRenderer, meta_cursor_renderer, G_TYPE_OBJECT);
void
meta_cursor_renderer_emit_painted (MetaCursorRenderer *renderer,
MetaCursorSprite *cursor_sprite)
{
g_signal_emit (renderer, signals[CURSOR_PAINTED], 0, cursor_sprite);
}
static void
queue_redraw (MetaCursorRenderer *renderer,
MetaCursorSprite *cursor_sprite)
@ -76,6 +90,19 @@ queue_redraw (MetaCursorRenderer *renderer,
texture, &rect);
}
static gboolean
meta_cursor_renderer_post_paint (gpointer data)
{
MetaCursorRenderer *renderer = META_CURSOR_RENDERER (data);
MetaCursorRendererPrivate *priv =
meta_cursor_renderer_get_instance_private (renderer);
if (priv->displayed_cursor && !priv->handled_by_backend)
meta_cursor_renderer_emit_painted (renderer, priv->displayed_cursor);
return TRUE;
}
static gboolean
meta_cursor_renderer_real_update_cursor (MetaCursorRenderer *renderer,
MetaCursorSprite *cursor_sprite)
@ -97,6 +124,8 @@ meta_cursor_renderer_finalize (GObject *object)
if (priv->stage_overlay)
meta_stage_remove_cursor_overlay (META_STAGE (stage), priv->stage_overlay);
clutter_threads_remove_repaint_func (priv->post_paint_func_id);
G_OBJECT_CLASS (meta_cursor_renderer_parent_class)->finalize (object);
}
@ -107,11 +136,27 @@ meta_cursor_renderer_class_init (MetaCursorRendererClass *klass)
object_class->finalize = meta_cursor_renderer_finalize;
klass->update_cursor = meta_cursor_renderer_real_update_cursor;
signals[CURSOR_PAINTED] = g_signal_new ("cursor-painted",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 1,
G_TYPE_POINTER);
}
static void
meta_cursor_renderer_init (MetaCursorRenderer *renderer)
{
MetaCursorRendererPrivate *priv =
meta_cursor_renderer_get_instance_private (renderer);
priv->post_paint_func_id =
clutter_threads_add_repaint_func_full (CLUTTER_REPAINT_FLAGS_POST_PAINT,
meta_cursor_renderer_post_paint,
renderer,
NULL);
}
MetaRectangle

View File

@ -78,4 +78,7 @@ void meta_cursor_renderer_realize_cursor_from_xcursor (MetaCursorRenderer *rende
MetaCursorSprite *cursor_sprite,
XcursorImage *xc_image);
void meta_cursor_renderer_emit_painted (MetaCursorRenderer *renderer,
MetaCursorSprite *cursor_sprite);
#endif /* META_CURSOR_RENDERER_H */

View File

@ -52,6 +52,7 @@ struct _DeviceMappingInfo
MetaInputSettings *input_settings;
ClutterInputDevice *device;
GSettings *settings;
GSettings *gsd_settings;
#ifdef HAVE_LIBWACOM
WacomDevice *wacom_device;
#endif
@ -707,6 +708,19 @@ meta_input_settings_find_output (MetaInputSettings *input_settings,
return NULL;
}
static DeviceMappingInfo *
lookup_mapping_info (ClutterInputDevice *device)
{
MetaInputSettings *settings;
MetaInputSettingsPrivate *priv;
settings = meta_backend_get_input_settings (meta_get_backend ());
if (!settings)
return NULL;
priv = meta_input_settings_get_instance_private (settings);
return g_hash_table_lookup (priv->mappable_devices, device);
}
static void
update_tablet_keep_aspect (MetaInputSettings *input_settings,
GSettings *settings,
@ -737,8 +751,12 @@ update_tablet_keep_aspect (MetaInputSettings *input_settings,
if (clutter_input_device_get_mapping_mode (device) ==
CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
{
DeviceMappingInfo *info = NULL;
keep_aspect = g_settings_get_boolean (settings, "keep-aspect");
output = meta_input_settings_find_output (input_settings, settings, device);
info = lookup_mapping_info (device);
if (info)
output = meta_input_settings_find_output (input_settings, info->settings, device);
}
else
{
@ -791,6 +809,7 @@ update_tablet_mapping (MetaInputSettings *input_settings,
{
MetaInputSettingsClass *input_settings_class;
GDesktopTabletMapping mapping;
DeviceMappingInfo *info;
if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE)
return;
@ -809,7 +828,8 @@ update_tablet_mapping (MetaInputSettings *input_settings,
#endif
input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
mapping = g_settings_get_enum (settings, "mapping");
mapping = g_settings_get_boolean (settings, "is-absolute") ?
G_DESKTOP_TABLET_MAPPING_ABSOLUTE : G_DESKTOP_TABLET_MAPPING_RELATIVE;
settings_device_set_uint_setting (input_settings, device,
input_settings_class->set_tablet_mapping,
@ -817,7 +837,9 @@ update_tablet_mapping (MetaInputSettings *input_settings,
/* Relative mapping disables keep-aspect/display */
update_tablet_keep_aspect (input_settings, settings, device);
update_device_display (input_settings, settings, device);
info = lookup_mapping_info (device);
if (info)
update_device_display (input_settings, info->settings, device);
}
static void
@ -827,7 +849,7 @@ update_tablet_area (MetaInputSettings *input_settings,
{
MetaInputSettingsClass *input_settings_class;
GVariant *variant;
const gdouble *area;
const guint32 *area;
gsize n_elems;
if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE)
@ -850,7 +872,7 @@ update_tablet_area (MetaInputSettings *input_settings,
input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
variant = g_settings_get_value (settings, "area");
area = g_variant_get_fixed_array (variant, &n_elems, sizeof (gdouble));
area = g_variant_get_fixed_array (variant, &n_elems, sizeof (guint32));
if (n_elems == 4)
{
input_settings_class->set_tablet_area (input_settings, device,
@ -886,7 +908,7 @@ update_tablet_left_handed (MetaInputSettings *input_settings,
#endif
input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
enabled = g_settings_get_boolean (settings, "left-handed");
enabled = g_settings_get_enum (settings, "rotation") != 0;
settings_device_set_bool_setting (input_settings, device,
input_settings_class->set_left_handed,
@ -954,13 +976,20 @@ mapped_device_changed_cb (GSettings *settings,
{
if (strcmp (key, "display") == 0)
update_device_display (info->input_settings, settings, info->device);
else if (strcmp (key, "mapping") == 0)
}
static void
mapped_device_gsd_setting_changed_cb (GSettings *settings,
const gchar *key,
DeviceMappingInfo *info)
{
if (strcmp (key, "is-absolute") == 0)
update_tablet_mapping (info->input_settings, settings, info->device);
else if (strcmp (key, "area") == 0)
update_tablet_area (info->input_settings, settings, info->device);
else if (strcmp (key, "keep-aspect") == 0)
update_tablet_keep_aspect (info->input_settings, settings, info->device);
else if (strcmp (key, "left-handed") == 0)
else if (strcmp (key, "rotation") == 0)
update_tablet_left_handed (info->input_settings, settings, info->device);
}
@ -970,13 +999,14 @@ apply_mappable_device_settings (MetaInputSettings *input_settings,
{
update_device_display (input_settings, info->settings, info->device);
if (clutter_input_device_get_device_type (info->device) == CLUTTER_TABLET_DEVICE ||
clutter_input_device_get_device_type (info->device) == CLUTTER_PAD_DEVICE)
if (info->gsd_settings &&
(clutter_input_device_get_device_type (info->device) == CLUTTER_TABLET_DEVICE ||
clutter_input_device_get_device_type (info->device) == CLUTTER_PAD_DEVICE))
{
update_tablet_mapping (input_settings, info->settings, info->device);
update_tablet_area (input_settings, info->settings, info->device);
update_tablet_keep_aspect (input_settings, info->settings, info->device);
update_tablet_left_handed (input_settings, info->settings, info->device);
update_tablet_mapping (input_settings, info->gsd_settings, info->device);
update_tablet_area (input_settings, info->gsd_settings, info->device);
update_tablet_keep_aspect (input_settings, info->gsd_settings, info->device);
update_tablet_left_handed (input_settings, info->gsd_settings, info->device);
}
}
@ -1018,6 +1048,79 @@ lookup_device_settings (ClutterInputDevice *device)
return settings;
}
static gchar *
get_tablet_settings_id (ClutterInputDevice *device,
DeviceMappingInfo *info)
{
gchar *id = NULL, *machine_id;
gsize length;
if (!g_file_get_contents ("/etc/machine-id", &machine_id, &length, NULL))
return NULL;
machine_id = g_strstrip (machine_id);
#ifdef HAVE_LIBWACOM
if (info->wacom_device)
id = g_strdup_printf ("%s-%s", machine_id, libwacom_get_match (info->wacom_device));
#endif
if (!id)
id = g_strdup_printf ("%s-%s:%s", machine_id,
clutter_input_device_get_vendor_id (device),
clutter_input_device_get_product_id (device));
g_free (machine_id);
return id;
}
static gboolean
has_gsd_schemas (void)
{
GSettingsSchema *schema;
schema = g_settings_schema_source_lookup (g_settings_schema_source_get_default (),
"org.gnome.settings-daemon.peripherals.wacom",
TRUE);
if (!schema)
return FALSE;
g_settings_schema_unref (schema);
return TRUE;
}
static GSettings *
lookup_device_gsd_settings (ClutterInputDevice *device,
DeviceMappingInfo *info)
{
ClutterInputDeviceType type;
GSettings *settings = NULL;
type = clutter_input_device_get_device_type (device);
if (type == CLUTTER_TABLET_DEVICE ||
type == CLUTTER_PEN_DEVICE ||
type == CLUTTER_ERASER_DEVICE ||
type == CLUTTER_CURSOR_DEVICE ||
type == CLUTTER_PAD_DEVICE)
{
gchar *device_id, *path;
if (!has_gsd_schemas ())
return NULL;
device_id = get_tablet_settings_id (device, info);
path = g_strdup_printf ("/org/gnome/settings-daemon/peripherals/wacom/%s/",
device_id);
settings = g_settings_new_with_path ("org.gnome.settings-daemon.peripherals.wacom",
path);
g_free (device_id);
g_free (path);
}
return settings;
}
static void
tool_settings_cache_pressure_curve (ToolSettings *tool_settings)
{
@ -1025,11 +1128,7 @@ tool_settings_cache_pressure_curve (ToolSettings *tool_settings)
const gint32 *curve;
gsize n_elems;
if (clutter_input_device_tool_get_tool_type (tool_settings->tool) ==
CLUTTER_INPUT_DEVICE_TOOL_ERASER)
variant = g_settings_get_value (tool_settings->settings, "eraser-pressure-curve");
else
variant = g_settings_get_value (tool_settings->settings, "pressure-curve");
variant = g_settings_get_value (tool_settings->settings, "pressurecurve");
curve = g_variant_get_fixed_array (variant, &n_elems, sizeof (gint32));
if (n_elems == 4)
@ -1048,22 +1147,41 @@ tool_settings_cache_pressure_curve (ToolSettings *tool_settings)
g_variant_unref (variant);
}
static GDesktopStylusButtonAction
translate_stylus_button_action (guint32 button_number)
{
switch (button_number)
{
case 2:
return G_DESKTOP_STYLUS_BUTTON_ACTION_MIDDLE;
case 3:
return G_DESKTOP_STYLUS_BUTTON_ACTION_RIGHT;
case 8:
return G_DESKTOP_STYLUS_BUTTON_ACTION_BACK;
case 9:
return G_DESKTOP_STYLUS_BUTTON_ACTION_FORWARD;
default:
return G_DESKTOP_STYLUS_BUTTON_ACTION_DEFAULT;
}
}
static void
tool_settings_changed_cb (GSettings *settings,
const gchar *key,
ToolSettings *tool_settings)
{
if (strcmp (key, "button-action") == 0)
tool_settings->button_action = g_settings_get_enum (settings, "button-action");
else if (strcmp (key, "secondary-button-action") == 0)
tool_settings->secondary_button_action = g_settings_get_enum (settings, "secondary-button-action");
else if (strcmp (key, "pressure-curve") == 0 &&
clutter_input_device_tool_get_tool_type (tool_settings->tool) !=
CLUTTER_INPUT_DEVICE_TOOL_ERASER)
tool_settings_cache_pressure_curve (tool_settings);
else if (strcmp (key, "eraser-pressure-curve") == 0 &&
clutter_input_device_tool_get_tool_type (tool_settings->tool) ==
CLUTTER_INPUT_DEVICE_TOOL_ERASER)
if (strcmp (key, "buttonmapping") == 0)
{
GVariant *variant = g_settings_get_value (settings, "buttonmapping");
const guint32 *mapping;
gsize n_elems;
mapping = g_variant_get_fixed_array (variant, &n_elems, sizeof (guint32));
tool_settings->button_action = translate_stylus_button_action (mapping[2]);
tool_settings->secondary_button_action = translate_stylus_button_action (mapping[3]);
g_variant_unref (variant);
}
else if (strcmp (key, "pressurecurve") == 0)
tool_settings_cache_pressure_curve (tool_settings);
}
@ -1072,22 +1190,33 @@ tool_settings_new (ClutterInputDeviceTool *tool,
const gchar *schema_path)
{
ToolSettings *tool_settings;
GVariant *variant;
const guint32 *mapping;
gsize n_elems;
tool_settings = g_new0 (ToolSettings, 1);
tool_settings->tool = tool;
tool_settings->settings =
g_settings_new_with_path ("org.gnome.desktop.peripherals.tablet.stylus",
schema_path);
tool_settings->curve[0] = tool_settings->curve[1] = 0;
tool_settings->curve[2] = tool_settings->curve[3] = 1;
g_signal_connect (tool_settings->settings, "changed",
G_CALLBACK (tool_settings_changed_cb), tool_settings);
if (has_gsd_schemas ())
{
tool_settings->settings =
g_settings_new_with_path ("org.gnome.settings-daemon.peripherals.wacom.stylus",
schema_path);
/* Initialize values */
tool_settings->button_action =
g_settings_get_enum (tool_settings->settings, "button-action");
tool_settings->secondary_button_action =
g_settings_get_enum (tool_settings->settings, "secondary-button-action");
tool_settings_cache_pressure_curve (tool_settings);
g_signal_connect (tool_settings->settings, "changed",
G_CALLBACK (tool_settings_changed_cb), tool_settings);
/* Initialize values */
variant = g_settings_get_value (tool_settings->settings, "buttonmapping");
mapping = g_variant_get_fixed_array (variant, &n_elems, sizeof (guint32));
tool_settings->button_action = translate_stylus_button_action (mapping[2]);
tool_settings->secondary_button_action = translate_stylus_button_action (mapping[3]);
tool_settings_cache_pressure_curve (tool_settings);
g_variant_unref (variant);
}
return tool_settings;
}
@ -1104,26 +1233,17 @@ lookup_tool_settings (ClutterInputDeviceTool *tool,
ClutterInputDevice *device)
{
ToolSettings *tool_settings;
guint64 serial;
gchar *path;
guint64 tool_id;
gchar *device_id, *path;
tool_settings = g_object_get_qdata (G_OBJECT (tool), quark_tool_settings);
if (tool_settings)
return tool_settings;
serial = clutter_input_device_tool_get_serial (tool);
if (serial == 0)
{
path = g_strdup_printf ("/org/gnome/desktop/peripherals/stylus/default-%s:%s/",
clutter_input_device_get_vendor_id (device),
clutter_input_device_get_product_id (device));
}
else
{
path = g_strdup_printf ("/org/gnome/desktop/peripherals/stylus/%lx/", serial);
}
tool_id = clutter_input_device_tool_get_id (tool);
device_id = get_tablet_settings_id (device, lookup_mapping_info (device));
path = g_strdup_printf ("/org/gnome/settings-daemon/peripherals/wacom/%s/%lx/",
device_id, tool_id);
tool_settings = tool_settings_new (tool, path);
g_object_set_qdata_full (G_OBJECT (tool), quark_tool_settings, tool_settings,
(GDestroyNotify) tool_settings_free);
@ -1136,16 +1256,15 @@ static GSettings *
lookup_pad_button_settings (ClutterInputDevice *device,
guint button)
{
const gchar *vendor, *product;
GSettings *settings;
gchar *path;
gchar *device_id, *path;
vendor = clutter_input_device_get_vendor_id (device);
product = clutter_input_device_get_product_id (device);
path = g_strdup_printf ("/org/gnome/desktop/peripherals/tablets/%s:%s/button%c/",
vendor, product, 'A' + button);
settings = g_settings_new_with_path ("org.gnome.desktop.peripherals.tablet.pad-button",
device_id = get_tablet_settings_id (device, lookup_mapping_info (device));
path = g_strdup_printf ("/org/gnome/settings-daemon/peripherals/wacom/%s/button%c/",
device_id, 'A' + button);
settings = g_settings_new_with_path ("org.gnome.settings-daemon.peripherals.wacom.tablet-button",
path);
g_free (device_id);
g_free (path);
return settings;
@ -1176,6 +1295,7 @@ device_mapping_info_free (DeviceMappingInfo *info)
libwacom_destroy (info->wacom_device);
#endif
g_object_unref (info->settings);
g_clear_object (&info->gsd_settings);
g_slice_free (DeviceMappingInfo, info);
}
@ -1224,6 +1344,13 @@ check_add_mappable_device (MetaInputSettings *input_settings,
g_hash_table_insert (priv->mappable_devices, device, info);
info->gsd_settings = lookup_device_gsd_settings (device, info);
if (info->gsd_settings)
{
g_signal_connect (info->gsd_settings, "changed",
G_CALLBACK (mapped_device_gsd_setting_changed_cb), info);
}
apply_mappable_device_settings (input_settings, info);
return TRUE;
@ -1471,8 +1598,18 @@ meta_input_settings_get_pad_button_action (MetaInputSettings *input_settings,
ClutterInputDevice *pad,
guint button)
{
GDesktopPadButtonAction action;
/* GsdWacomActionType to GDesktopPadButtonAction map */
GDesktopPadButtonAction action_map[4] = {
G_DESKTOP_PAD_BUTTON_ACTION_NONE,
G_DESKTOP_PAD_BUTTON_ACTION_KEYBINDING,
G_DESKTOP_PAD_BUTTON_ACTION_SWITCH_MONITOR,
G_DESKTOP_PAD_BUTTON_ACTION_HELP
};
GSettings *settings;
guint32 action;
if (!has_gsd_schemas ())
return G_DESKTOP_PAD_BUTTON_ACTION_NONE;
g_return_val_if_fail (META_IS_INPUT_SETTINGS (input_settings),
G_DESKTOP_PAD_BUTTON_ACTION_NONE);
@ -1480,10 +1617,10 @@ meta_input_settings_get_pad_button_action (MetaInputSettings *input_settings,
G_DESKTOP_PAD_BUTTON_ACTION_NONE);
settings = lookup_pad_button_settings (pad, button);
action = g_settings_get_enum (settings, "action");
action = g_settings_get_enum (settings, "action-type");
g_object_unref (settings);
return action;
return action_map[action];
}
#ifdef HAVE_LIBWACOM
@ -1698,12 +1835,15 @@ meta_input_settings_get_pad_button_action_label (MetaInputSettings *input_setti
gchar *accel;
settings = lookup_pad_button_settings (pad, button);
accel = g_settings_get_string (settings, "keybinding");
accel = g_settings_get_string (settings, "custom-action");
g_object_unref (settings);
return accel;
}
case G_DESKTOP_PAD_BUTTON_ACTION_SWITCH_MONITOR:
/* TRANSLATORS: This string refers to an action, cycles drawing tablets'
* mapping through the available outputs.
*/
return g_strdup (_("Switch monitor"));
case G_DESKTOP_PAD_BUTTON_ACTION_HELP:
return g_strdup (_("Show on-screen help"));

View File

@ -0,0 +1,89 @@
# Copyright (C) 2016 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
import os
import sys
common_resolutions = [
# 4:3
(800, 600),
(1024, 768),
(1152, 864),
(1280, 960),
(1400, 1050),
(1440, 1080),
(1600, 1200),
(1920, 1440),
(2048, 1536),
# 16:10
(1280, 800),
(1440, 900),
(1680, 1050),
(1920, 1200),
(2560, 1600),
# 16:9
(1280, 720),
(1366, 768),
(1600, 900),
(1920, 1080),
(2048, 1152),
(2560, 1440),
(2880, 1620),
(3200, 1800),
(3840, 2160),
(4096, 2304),
(5120, 2880),
]
output_lines = [
"/* Generated by gen-default-modes.py */\n",
"const drmModeModeInfo meta_default_drm_mode_infos[] = {",
]
def sync_flags(hsync, vsync):
flags = "DRM_MODE_FLAG_"
flags += "NHSYNC" if hsync[0] is '-' else "PHSYNC"
flags += " | DRM_MODE_FLAG_"
flags += "NVSYNC" if vsync[0] is '-' else "PVSYNC"
return flags
def drm_mode_info_from_modeline(line):
sline = line.split()
return "{ %d, %d, %d, %d, %d, 0, %d, %d, %d, %d, 0, 0, %s, DRM_MODE_TYPE_DEFAULT, %s }," % \
(int(float(sline[2]) * 1000),
int(sline[3]),
int(sline[4]),
int(sline[5]),
int(sline[6]),
int(sline[7]),
int(sline[8]),
int(sline[9]),
int(sline[10]),
sync_flags(sline[11], sline[12]),
sline[1])
for resolution in common_resolutions:
cvt = os.popen("%s %s %s" % ('cvt', resolution[0], resolution[1]))
cvt.readline() # discard comment line
line = cvt.readline()
output_lines.append(drm_mode_info_from_modeline(line))
cvt.close()
output_lines.append("};")
for line in output_lines:
sys.stdout.write(line + "\n")
sys.stdout.flush()

View File

@ -368,6 +368,14 @@ meta_backend_native_lock_layout_group (MetaBackend *backend,
g_signal_emit_by_name (backend, "keymap-layout-group-changed", idx, 0);
}
static void
meta_backend_native_set_numlock (MetaBackend *backend,
gboolean numlock_state)
{
ClutterDeviceManager *manager = clutter_device_manager_get_default ();
clutter_evdev_set_keyboard_numlock (manager, numlock_state);
}
static gboolean
meta_backend_native_get_relative_motion_deltas (MetaBackend *backend,
const ClutterEvent *event,
@ -421,6 +429,7 @@ meta_backend_native_class_init (MetaBackendNativeClass *klass)
backend_class->lock_layout_group = meta_backend_native_lock_layout_group;
backend_class->get_relative_motion_deltas = meta_backend_native_get_relative_motion_deltas;
backend_class->update_screen_size = meta_backend_native_update_screen_size;
backend_class->set_numlock = meta_backend_native_set_numlock;
}
static void

View File

@ -216,6 +216,7 @@ update_hw_cursor (MetaCursorRendererNative *native,
MetaCRTC *crtcs;
unsigned int i, n_crtcs;
MetaRectangle rect;
gboolean painted = FALSE;
monitors = meta_monitor_manager_get ();
meta_monitor_manager_get_resources (monitors, NULL, NULL, &crtcs, &n_crtcs, NULL, NULL);
@ -247,8 +248,12 @@ update_hw_cursor (MetaCursorRendererNative *native,
drmModeMoveCursor (priv->drm_fd, crtcs[i].crtc_id,
rect.x - crtc_rect->x,
rect.y - crtc_rect->y);
painted = TRUE;
}
}
if (painted)
meta_cursor_renderer_emit_painted (renderer, cursor_sprite);
}
static gboolean

View File

@ -0,0 +1,29 @@
/* Generated by gen-default-modes.py */
const drmModeModeInfo meta_default_drm_mode_infos[] = {
{ 38250, 800, 832, 912, 1024, 0, 600, 603, 607, 624, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "800x600_60.00" },
{ 63500, 1024, 1072, 1176, 1328, 0, 768, 771, 775, 798, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1024x768_60.00" },
{ 81750, 1152, 1216, 1336, 1520, 0, 864, 867, 871, 897, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1152x864_60.00" },
{ 101250, 1280, 1360, 1488, 1696, 0, 960, 963, 967, 996, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x960_60.00" },
{ 121750, 1400, 1488, 1632, 1864, 0, 1050, 1053, 1057, 1089, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1400x1050_60.00" },
{ 129000, 1440, 1528, 1680, 1920, 0, 1080, 1083, 1087, 1120, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x1080_60.00" },
{ 161000, 1600, 1712, 1880, 2160, 0, 1200, 1203, 1207, 1245, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1600x1200_60.00" },
{ 233500, 1920, 2064, 2264, 2608, 0, 1440, 1443, 1447, 1493, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1440_60.00" },
{ 267250, 2048, 2208, 2424, 2800, 0, 1536, 1539, 1543, 1592, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2048x1536_60.00" },
{ 83500, 1280, 1352, 1480, 1680, 0, 800, 803, 809, 831, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x800_60.00" },
{ 106500, 1440, 1528, 1672, 1904, 0, 900, 903, 909, 934, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x900_60.00" },
{ 146250, 1680, 1784, 1960, 2240, 0, 1050, 1053, 1059, 1089, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1680x1050_60.00" },
{ 193250, 1920, 2056, 2256, 2592, 0, 1200, 1203, 1209, 1245, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1200_60.00" },
{ 348500, 2560, 2760, 3032, 3504, 0, 1600, 1603, 1609, 1658, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2560x1600_60.00" },
{ 74500, 1280, 1344, 1472, 1664, 0, 720, 723, 728, 748, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x720_60.00" },
{ 85250, 1368, 1440, 1576, 1784, 0, 768, 771, 781, 798, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1368x768_60.00" },
{ 118250, 1600, 1696, 1856, 2112, 0, 900, 903, 908, 934, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1600x900_60.00" },
{ 173000, 1920, 2048, 2248, 2576, 0, 1080, 1083, 1088, 1120, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1080_60.00" },
{ 197000, 2048, 2184, 2400, 2752, 0, 1152, 1155, 1160, 1195, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2048x1152_60.00" },
{ 312250, 2560, 2752, 3024, 3488, 0, 1440, 1443, 1448, 1493, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2560x1440_60.00" },
{ 396250, 2880, 3096, 3408, 3936, 0, 1620, 1623, 1628, 1679, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2880x1620_60.00" },
{ 492000, 3200, 3456, 3800, 4400, 0, 1800, 1803, 1808, 1865, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "3200x1800_60.00" },
{ 712750, 3840, 4160, 4576, 5312, 0, 2160, 2163, 2168, 2237, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "3840x2160_60.00" },
{ 813000, 4096, 4440, 4888, 5680, 0, 2304, 2307, 2312, 2386, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "4096x2304_60.00" },
{ 1276500, 5120, 5560, 6128, 7136, 0, 2880, 2883, 2888, 2982, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "5120x2880_60.00" },
};

View File

@ -45,8 +45,11 @@
#include <gudev/gudev.h>
#include "meta-default-modes.h"
#define ALL_TRANSFORMS (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)
#define ALL_TRANSFORMS_MASK ((1 << ALL_TRANSFORMS) - 1)
#define SYNC_TOLERANCE 0.01 /* 1 percent */
typedef struct {
drmModeConnector *connector;
@ -69,6 +72,8 @@ typedef struct {
int suggested_x;
int suggested_y;
uint32_t hotplug_mode_update;
gboolean has_scaling;
} MetaOutputKms;
typedef struct {
@ -137,18 +142,33 @@ static char *
make_output_name (drmModeConnector *connector)
{
static const char * const connector_type_names[] = {
"unknown", "VGA", "DVII", "DVID", "DVID", "Composite",
"SVIDEO", "LVDS", "Component", "9PinDIN", "DisplayPort",
"HDMIA", "HDMIB", "TV", "eDP", "Virtual", "DSI"
"None",
"VGA",
"DVI-I",
"DVI-D",
"DVI-A",
"Composite",
"SVIDEO",
"LVDS",
"Component",
"DIN",
"DP",
"HDMI",
"HDMI-B",
"TV",
"eDP",
"Virtual",
"DSI",
};
const char *connector_type_name;
if (connector->connector_type < G_N_ELEMENTS (connector_type_names))
connector_type_name = connector_type_names[connector->connector_type];
return g_strdup_printf ("%s-%d",
connector_type_names[connector->connector_type],
connector->connector_type_id);
else
connector_type_name = "unknown";
return g_strdup_printf ("%s%d", connector_type_name, connector->connector_id);
return g_strdup_printf ("Unknown%d-%d",
connector->connector_type,
connector->connector_type_id);
}
static void
@ -252,7 +272,9 @@ find_connector_properties (MetaMonitorManagerKms *manager_kms,
else if ((prop->flags & DRM_MODE_PROP_RANGE) &&
strcmp (prop->name, "hotplug_mode_update") == 0)
output_kms->hotplug_mode_update = output_kms->connector->prop_values[i];
else if (strcmp (prop->name, "scaling mode") == 0)
output_kms->has_scaling = TRUE;
drmModeFreeProperty (prop);
}
}
@ -374,33 +396,63 @@ find_meta_mode (MetaMonitorManager *manager,
return NULL;
}
static float
drm_mode_vrefresh (const drmModeModeInfo *mode)
{
float refresh = 0.0;
if (mode->vrefresh > 0.0)
return mode->vrefresh;
if (mode->htotal > 0 && mode->vtotal > 0)
{
/* Calculate refresh rate in milliHz first for extra precision. */
refresh = (mode->clock * 1000000LL) / mode->htotal;
refresh += (mode->vtotal / 2);
refresh /= mode->vtotal;
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
refresh *= 2;
if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
refresh /= 2;
if (mode->vscan > 1)
refresh /= mode->vscan;
refresh /= 1000.0;
}
return refresh;
}
static void
init_mode (MetaMonitorMode *mode,
drmModeModeInfo *drm_mode,
long mode_id)
init_mode (MetaMonitorMode *mode,
const drmModeModeInfo *drm_mode,
long mode_id)
{
mode->mode_id = mode_id;
mode->name = g_strndup (drm_mode->name, DRM_DISPLAY_MODE_LEN);
mode->width = drm_mode->hdisplay;
mode->height = drm_mode->vdisplay;
mode->flags = drm_mode->flags;
/* Calculate refresh rate in milliHz first for extra precision. */
mode->refresh_rate = (drm_mode->clock * 1000000LL) / drm_mode->htotal;
mode->refresh_rate += (drm_mode->vtotal / 2);
mode->refresh_rate /= drm_mode->vtotal;
if (drm_mode->flags & DRM_MODE_FLAG_INTERLACE)
mode->refresh_rate *= 2;
if (drm_mode->flags & DRM_MODE_FLAG_DBLSCAN)
mode->refresh_rate /= 2;
if (drm_mode->vscan > 1)
mode->refresh_rate /= drm_mode->vscan;
mode->refresh_rate /= 1000.0;
mode->refresh_rate = drm_mode_vrefresh (drm_mode);
mode->driver_private = g_slice_dup (drmModeModeInfo, drm_mode);
mode->driver_notify = (GDestroyNotify)meta_monitor_mode_destroy_notify;
}
static int
compare_modes (const void *one,
const void *two)
{
MetaMonitorMode *a = *(MetaMonitorMode **) one;
MetaMonitorMode *b = *(MetaMonitorMode **) two;
if (a->width != b->width)
return a->width > b->width ? -1 : 1;
if (a->height != b->height)
return a->height > b->height ? -1 : 1;
if (a->refresh_rate != b->refresh_rate)
return a->refresh_rate > b->refresh_rate ? -1 : 1;
return g_strcmp0 (b->name, a->name);
}
static MetaOutput *
find_output_by_id (MetaOutput *outputs,
unsigned n_outputs,
@ -613,6 +665,47 @@ init_crtc_rotations (MetaMonitorManager *manager,
drmModeFreePlaneResources (planes);
}
static void
add_common_modes (MetaMonitorManager *manager,
MetaOutput *output)
{
const drmModeModeInfo *mode;
GPtrArray *array;
unsigned i;
unsigned max_hdisplay = 0;
unsigned max_vdisplay = 0;
float max_vrefresh = 0.0;
for (i = 0; i < output->n_modes; i++)
{
mode = output->modes[i]->driver_private;
max_hdisplay = MAX (max_hdisplay, mode->hdisplay);
max_vdisplay = MAX (max_vdisplay, mode->vdisplay);
max_vrefresh = MAX (max_vrefresh, drm_mode_vrefresh (mode));
}
max_vrefresh = MAX (max_vrefresh, 60.0);
max_vrefresh *= (1 + SYNC_TOLERANCE);
array = g_ptr_array_new ();
for (i = 0; i < G_N_ELEMENTS (meta_default_drm_mode_infos); i++)
{
mode = &meta_default_drm_mode_infos[i];
if (mode->hdisplay > max_hdisplay ||
mode->vdisplay > max_vdisplay ||
drm_mode_vrefresh (mode) > max_vrefresh)
continue;
g_ptr_array_add (array, find_meta_mode (manager, mode));
}
output->modes = g_renew (MetaMonitorMode *, output->modes, output->n_modes + array->len);
memcpy (output->modes + output->n_modes, array->pdata, array->len * sizeof (MetaMonitorMode *));
output->n_modes += array->len;
g_ptr_array_free (array, TRUE);
}
static void
init_crtc (MetaCRTC *crtc,
MetaMonitorManager *manager,
@ -704,6 +797,17 @@ init_output (MetaOutput *output,
output->preferred_mode = output->modes[0];
output_kms->connector = connector;
find_connector_properties (manager_kms, output_kms);
/* FIXME: MSC feature bit? */
/* Presume that if the output supports scaling, then we have
* a panel fitter capable of adjusting any mode to suit.
*/
if (output_kms->has_scaling)
add_common_modes (manager, output);
qsort (output->modes, output->n_modes, sizeof (MetaMonitorMode *), compare_modes);
output_kms->n_encoders = connector->count_encoders;
output_kms->encoders = g_new0 (drmModeEncoderPtr, output_kms->n_encoders);
@ -767,7 +871,6 @@ init_output (MetaOutput *output,
output->is_presentation = FALSE;
}
find_connector_properties (manager_kms, output_kms);
output->suggested_x = output_kms->suggested_x;
output->suggested_y = output_kms->suggested_y;
output->hotplug_mode_update = output_kms->hotplug_mode_update;
@ -936,7 +1039,7 @@ init_modes (MetaMonitorManager *manager,
}
}
manager->n_modes = g_hash_table_size (modes);
manager->n_modes = g_hash_table_size (modes) + G_N_ELEMENTS (meta_default_drm_mode_infos);
manager->modes = g_new0 (MetaMonitorMode, manager->n_modes);
g_hash_table_iter_init (&iter, modes);
@ -952,6 +1055,16 @@ init_modes (MetaMonitorManager *manager,
}
g_hash_table_destroy (modes);
for (i = 0; i < G_N_ELEMENTS (meta_default_drm_mode_infos); i++)
{
MetaMonitorMode *mode;
mode = &manager->modes[mode_id];
init_mode (mode, &meta_default_drm_mode_infos[i], (long) mode_id);
mode_id++;
}
}
static void

View File

@ -805,6 +805,14 @@ meta_backend_x11_lock_layout_group (MetaBackend *backend,
XkbLockGroup (priv->xdisplay, XkbUseCoreKbd, idx);
}
static void
meta_backend_x11_set_numlock (MetaBackend *backend,
gboolean numlock_state)
{
/* TODO: Currently handled by gnome-settings-deamon */
}
static void
meta_backend_x11_update_screen_size (MetaBackend *backend,
int width, int height)
@ -897,6 +905,7 @@ meta_backend_x11_class_init (MetaBackendX11Class *klass)
backend_class->lock_layout_group = meta_backend_x11_lock_layout_group;
backend_class->update_screen_size = meta_backend_x11_update_screen_size;
backend_class->select_stage_events = meta_backend_x11_select_stage_events;
backend_class->set_numlock = meta_backend_x11_set_numlock;
}
static void

View File

@ -45,7 +45,6 @@ void meta_window_actor_set_unredirected (MetaWindowActor *self,
gboolean meta_window_actor_effect_in_progress (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);

View File

@ -349,6 +349,21 @@ meta_window_actor_freeze (MetaWindowActor *self)
priv->freeze_count ++;
}
static void
meta_window_actor_sync_thawed_state (MetaWindowActor *self)
{
MetaWindowActorPrivate *priv = self->priv;
if (priv->first_frame_state == INITIALLY_FROZEN)
priv->first_frame_state = DRAWING_FIRST_FRAME;
if (priv->surface)
meta_surface_actor_set_frozen (priv->surface, FALSE);
/* We sometimes ignore moves and resizes on frozen windows */
meta_window_actor_sync_actor_geometry (self, FALSE);
}
static void
meta_window_actor_thaw (MetaWindowActor *self)
{
@ -361,14 +376,11 @@ meta_window_actor_thaw (MetaWindowActor *self)
if (priv->freeze_count > 0)
return;
if (priv->first_frame_state == INITIALLY_FROZEN)
priv->first_frame_state = DRAWING_FIRST_FRAME;
/* We still might be frozen due to lack of a MetaSurfaceActor */
if (is_frozen (self))
return;
if (priv->surface)
meta_surface_actor_set_frozen (priv->surface, FALSE);
/* We sometimes ignore moves and resizes on frozen windows */
meta_window_actor_sync_actor_geometry (self, FALSE);
meta_window_actor_sync_thawed_state (self);
/* We do this now since we might be going right back into the
* frozen state */
@ -401,14 +413,12 @@ set_surface (MetaWindowActor *self,
G_CALLBACK (surface_size_changed), self);
clutter_actor_add_child (CLUTTER_ACTOR (self), CLUTTER_ACTOR (priv->surface));
/* If the previous surface actor was frozen, start out
* frozen as well... */
meta_surface_actor_set_frozen (priv->surface, priv->freeze_count > 0);
if (!is_frozen (self) && priv->first_frame_state == INITIALLY_FROZEN)
priv->first_frame_state = DRAWING_FIRST_FRAME;
meta_window_actor_update_shape (self);
if (is_frozen (self))
meta_surface_actor_set_frozen (priv->surface, TRUE);
else
meta_window_actor_sync_thawed_state (self);
}
}

View File

@ -102,6 +102,7 @@ typedef enum
PRIORITY_SIZE_HINTS_LIMITS = 3,
PRIORITY_TITLEBAR_VISIBLE = 4,
PRIORITY_PARTIALLY_VISIBLE_ON_WORKAREA = 4,
PRIORITY_CUSTOM_RULE = 4,
PRIORITY_MAXIMUM = 4 /* Dummy value used for loop end = max(all priorities) */
} ConstraintPriority;
@ -144,6 +145,10 @@ static gboolean do_screen_and_monitor_relative_constraints (MetaWindow *wind
GList *region_spanning_rectangles,
ConstraintInfo *info,
gboolean check_only);
static gboolean constrain_custom_rule (MetaWindow *window,
ConstraintInfo *info,
ConstraintPriority priority,
gboolean check_only);
static gboolean constrain_modal_dialog (MetaWindow *window,
ConstraintInfo *info,
ConstraintPriority priority,
@ -211,6 +216,7 @@ typedef struct {
} Constraint;
static const Constraint all_constraints[] = {
{constrain_custom_rule, "constrain_custom_rule"},
{constrain_modal_dialog, "constrain_modal_dialog"},
{constrain_maximization, "constrain_maximization"},
{constrain_tiling, "constrain_tiling"},
@ -641,6 +647,222 @@ get_size_limits (MetaWindow *window,
meta_window_client_rect_to_frame_rect (window, max_size, max_size);
}
static void
placement_rule_flip_horizontally (MetaPlacementRule *placement_rule)
{
if (placement_rule->anchor & META_PLACEMENT_ANCHOR_LEFT)
{
placement_rule->anchor &= ~META_PLACEMENT_ANCHOR_LEFT;
placement_rule->anchor |= META_PLACEMENT_ANCHOR_RIGHT;
}
else if (placement_rule->anchor & META_PLACEMENT_ANCHOR_RIGHT)
{
placement_rule->anchor &= ~META_PLACEMENT_ANCHOR_RIGHT;
placement_rule->anchor |= META_PLACEMENT_ANCHOR_LEFT;
}
if (placement_rule->gravity & META_PLACEMENT_GRAVITY_LEFT)
{
placement_rule->gravity &= ~META_PLACEMENT_GRAVITY_LEFT;
placement_rule->gravity |= META_PLACEMENT_GRAVITY_RIGHT;
}
else if (placement_rule->gravity & META_PLACEMENT_GRAVITY_RIGHT)
{
placement_rule->gravity &= ~META_PLACEMENT_GRAVITY_RIGHT;
placement_rule->gravity |= META_PLACEMENT_GRAVITY_LEFT;
}
}
static void
placement_rule_flip_vertically (MetaPlacementRule *placement_rule)
{
if (placement_rule->anchor & META_PLACEMENT_ANCHOR_TOP)
{
placement_rule->anchor &= ~META_PLACEMENT_ANCHOR_TOP;
placement_rule->anchor |= META_PLACEMENT_ANCHOR_BOTTOM;
}
else if (placement_rule->anchor & META_PLACEMENT_ANCHOR_BOTTOM)
{
placement_rule->anchor &= ~META_PLACEMENT_ANCHOR_BOTTOM;
placement_rule->anchor |= META_PLACEMENT_ANCHOR_TOP;
}
if (placement_rule->gravity & META_PLACEMENT_GRAVITY_TOP)
{
placement_rule->gravity &= ~META_PLACEMENT_GRAVITY_TOP;
placement_rule->gravity |= META_PLACEMENT_GRAVITY_BOTTOM;
}
else if (placement_rule->gravity & META_PLACEMENT_GRAVITY_BOTTOM)
{
placement_rule->gravity &= ~META_PLACEMENT_GRAVITY_BOTTOM;
placement_rule->gravity |= META_PLACEMENT_GRAVITY_TOP;
}
}
static void
try_flip_window_position (MetaWindow *window,
ConstraintInfo *info,
MetaPlacementRule *placement_rule,
MetaPlacementConstraintAdjustment constraint_adjustment,
MetaRectangle *rect,
MetaRectangle *intersection)
{
MetaPlacementRule flipped_rule = *placement_rule;;
MetaRectangle flipped_rect;
MetaRectangle flipped_intersection;
switch (constraint_adjustment)
{
case META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_X:
placement_rule_flip_horizontally (&flipped_rule);
break;
case META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_Y:
placement_rule_flip_vertically (&flipped_rule);
break;
default:
g_assert_not_reached ();
}
flipped_rect = info->current;
meta_window_process_placement (window, &flipped_rule,
&flipped_rect.x, &flipped_rect.y);
meta_rectangle_intersect (&flipped_rect, &info->work_area_monitor,
&flipped_intersection);
if ((constraint_adjustment == META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_X &&
flipped_intersection.width == flipped_rect.width) ||
(constraint_adjustment == META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_Y &&
flipped_intersection.height == flipped_rect.height))
{
*placement_rule = flipped_rule;
*rect = flipped_rect;
*intersection = flipped_intersection;
}
}
static gboolean
is_custom_rule_satisfied (ConstraintInfo *info,
MetaPlacementRule *placement_rule,
MetaRectangle *intersection)
{
uint32_t x_constrain_actions, y_constrain_actions;
x_constrain_actions = (META_PLACEMENT_CONSTRAINT_ADJUSTMENT_SLIDE_X |
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_X);
y_constrain_actions = (META_PLACEMENT_CONSTRAINT_ADJUSTMENT_SLIDE_Y |
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_Y);
if ((placement_rule->constraint_adjustment & x_constrain_actions &&
info->current.width != intersection->width) ||
(placement_rule->constraint_adjustment & y_constrain_actions &&
info->current.height != intersection->height))
return FALSE;
else
return TRUE;
}
static gboolean
constrain_custom_rule (MetaWindow *window,
ConstraintInfo *info,
ConstraintPriority priority,
gboolean check_only)
{
MetaPlacementRule *placement_rule;
MetaRectangle intersection;
gboolean constraint_satisfied;
MetaPlacementRule current_rule;
if (priority > PRIORITY_CUSTOM_RULE)
return TRUE;
placement_rule = meta_window_get_placement_rule (window);
if (!placement_rule)
return TRUE;
if (!meta_rectangle_could_fit_rect (&info->work_area_monitor,
&info->current))
return TRUE;
meta_rectangle_intersect (&info->current, &info->work_area_monitor,
&intersection);
constraint_satisfied = is_custom_rule_satisfied (info,
placement_rule,
&intersection);
if (constraint_satisfied || check_only)
return constraint_satisfied;
current_rule = *placement_rule;
if (info->current.width != intersection.width &&
(current_rule.constraint_adjustment &
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_X))
{
try_flip_window_position (window, info, &current_rule,
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_X,
&info->current, &intersection);
}
if (info->current.height != intersection.height &&
(current_rule.constraint_adjustment &
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_Y))
{
try_flip_window_position (window, info, &current_rule,
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_Y,
&info->current, &intersection);
}
meta_rectangle_intersect (&info->current, &info->work_area_monitor,
&intersection);
constraint_satisfied = is_custom_rule_satisfied (info,
placement_rule,
&intersection);
if (constraint_satisfied)
return TRUE;
if (current_rule.constraint_adjustment &
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_SLIDE_X)
{
if (info->current.x != intersection.x)
info->current.x = intersection.x;
else if (info->current.width != intersection.width)
info->current.x -= info->current.width - intersection.width;
}
if (current_rule.constraint_adjustment &
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_SLIDE_Y)
{
if (info->current.y != intersection.y)
info->current.y = intersection.y;
else if (info->current.height != intersection.height)
info->current.y -= info->current.height - intersection.height;
}
meta_rectangle_intersect (&info->current, &info->work_area_monitor,
&intersection);
constraint_satisfied = is_custom_rule_satisfied (info,
placement_rule,
&intersection);
if (constraint_satisfied)
return TRUE;
if (current_rule.constraint_adjustment &
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_RESIZE_X)
{
info->current.x = intersection.x;
info->current.width = intersection.width;
}
if (current_rule.constraint_adjustment &
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_RESIZE_Y)
{
info->current.y = intersection.y;
info->current.height = intersection.height;
}
return TRUE;
}
static gboolean
constrain_modal_dialog (MetaWindow *window,
ConstraintInfo *info,
@ -652,7 +874,8 @@ constrain_modal_dialog (MetaWindow *window,
MetaRectangle child_rect, parent_rect;
gboolean constraint_already_satisfied;
if (!meta_window_is_attached_dialog (window))
if (!meta_window_is_attached_dialog (window) ||
meta_window_get_placement_rule (window))
return TRUE;
/* We want to center the dialog on the parent, including the decorations
@ -1230,7 +1453,8 @@ constrain_to_single_monitor (MetaWindow *window,
window->screen->n_monitor_infos == 1 ||
!window->require_on_single_monitor ||
!window->frame ||
info->is_user_action)
info->is_user_action ||
meta_window_get_placement_rule (window))
return TRUE;
/* Have a helper function handle the constraint for us */
@ -1257,7 +1481,8 @@ constrain_fully_onscreen (MetaWindow *window,
window->type == META_WINDOW_DOCK ||
window->fullscreen ||
!window->require_fully_onscreen ||
info->is_user_action)
info->is_user_action ||
meta_window_get_placement_rule (window))
return TRUE;
/* Have a helper function handle the constraint for us */
@ -1296,7 +1521,8 @@ constrain_titlebar_visible (MetaWindow *window,
window->type == META_WINDOW_DOCK ||
window->fullscreen ||
!window->require_titlebar_visible ||
unconstrained_user_action)
unconstrained_user_action ||
meta_window_get_placement_rule (window))
return TRUE;
/* Determine how much offscreen things are allowed. We first need to
@ -1373,7 +1599,8 @@ constrain_partially_onscreen (MetaWindow *window,
* "onscreen" by their own strut).
*/
if (window->type == META_WINDOW_DESKTOP ||
window->type == META_WINDOW_DOCK)
window->type == META_WINDOW_DOCK ||
meta_window_get_placement_rule (window))
return TRUE;
/* Determine how much offscreen things are allowed. We first need to

View File

@ -505,7 +505,7 @@ meta_display_cancel_touch (MetaDisplay *display)
return;
compositor = meta_wayland_compositor_get_default ();
meta_wayland_touch_cancel (&compositor->seat->touch);
meta_wayland_touch_cancel (compositor->seat->touch);
#endif
}

View File

@ -47,6 +47,18 @@
(e)->type == CLUTTER_TOUCH_END || \
(e)->type == CLUTTER_TOUCH_CANCEL)
#define IS_KEY_EVENT(e) ((e)->type == CLUTTER_KEY_PRESS || \
(e)->type == CLUTTER_KEY_RELEASE)
static gboolean
stage_has_key_focus (void)
{
MetaBackend *backend = meta_get_backend ();
ClutterActor *stage = meta_backend_get_stage (backend);
return clutter_stage_get_key_focus (CLUTTER_STAGE (stage)) == stage;
}
static MetaWindow *
get_window_for_event (MetaDisplay *display,
const ClutterEvent *event)
@ -58,14 +70,8 @@ get_window_for_event (MetaDisplay *display,
ClutterActor *source;
/* Always use the key focused window for key events. */
switch (event->type)
{
case CLUTTER_KEY_PRESS:
case CLUTTER_KEY_RELEASE:
return display->focus_window;
default:
break;
}
if (IS_KEY_EVENT (event))
return stage_has_key_focus () ? display->focus_window : NULL;
source = clutter_event_get_source (event);
if (META_IS_SURFACE_ACTOR (source))
@ -299,6 +305,18 @@ meta_display_handle_event (MetaDisplay *display,
goto out;
}
/* Do not pass keyboard events to Wayland if key focus is not on the
* stage in normal mode (e.g. during keynav in the panel)
*/
if (display->event_route == META_EVENT_ROUTE_NORMAL)
{
if (IS_KEY_EVENT (event) && !stage_has_key_focus ())
{
bypass_wayland = TRUE;
goto out;
}
}
if (display->current_pad_osd)
{
bypass_wayland = TRUE;

View File

@ -598,6 +598,61 @@ find_first_fit (MetaWindow *window,
return retval;
}
void
meta_window_process_placement (MetaWindow *window,
MetaPlacementRule *placement_rule,
int *x,
int *y)
{
MetaWindow *parent = meta_window_get_transient_for (window);
MetaRectangle parent_rect;
MetaRectangle anchor_rect;
int window_width, window_height;
window_width = placement_rule->width;
window_height = placement_rule->height;
meta_window_get_frame_rect (parent, &parent_rect);
anchor_rect = (MetaRectangle) {
.x = parent_rect.x + placement_rule->anchor_rect.x,
.y = parent_rect.y + placement_rule->anchor_rect.y,
.width = placement_rule->anchor_rect.width,
.height = placement_rule->anchor_rect.height,
};
/* Place at anchor point. */
if (placement_rule->anchor & META_PLACEMENT_ANCHOR_LEFT)
*x = anchor_rect.x;
else if (placement_rule->anchor & META_PLACEMENT_ANCHOR_RIGHT)
*x = anchor_rect.x + anchor_rect.width;
else
*x = anchor_rect.x + (anchor_rect.width / 2);
if (placement_rule->anchor & META_PLACEMENT_ANCHOR_TOP)
*y = anchor_rect.y;
else if (placement_rule->anchor & META_PLACEMENT_ANCHOR_BOTTOM)
*y = anchor_rect.y + anchor_rect.height;
else
*y = anchor_rect.y + (anchor_rect.height / 2);
/* Shift according to gravity. */
if (placement_rule->gravity & META_PLACEMENT_GRAVITY_LEFT)
*x -= window_width;
else if (placement_rule->gravity & META_PLACEMENT_GRAVITY_RIGHT)
*x = *x;
else
*x -= window_width / 2;
if (placement_rule->gravity & META_PLACEMENT_GRAVITY_TOP)
*y -= window_height;
else if (placement_rule->gravity & META_PLACEMENT_GRAVITY_BOTTOM)
*y = *y;
else
*y -= window_height / 2;
/* Offset according to offset. */
*x += placement_rule->offset_x;
*y += placement_rule->offset_y;
}
void
meta_window_place (MetaWindow *window,
int x,
@ -610,6 +665,16 @@ meta_window_place (MetaWindow *window,
meta_topic (META_DEBUG_PLACEMENT, "Placing window %s\n", window->desc);
/* If the window has a custom placement rule, always run only that. */
if (window->placement_rule)
{
meta_window_process_placement (window,
window->placement_rule,
&x, &y);
goto done;
}
switch (window->type)
{
/* Run placement algorithm on these. */

View File

@ -25,6 +25,11 @@
#include "window-private.h"
#include "frame.h"
void meta_window_process_placement (MetaWindow *window,
MetaPlacementRule *placement_rule,
int *x,
int *y);
void meta_window_place (MetaWindow *window,
int x,
int y,

View File

@ -88,6 +88,47 @@ typedef enum
META_MOVE_RESIZE_RESULT_FRAME_SHAPE_CHANGED = 1 << 2,
} MetaMoveResizeResultFlags;
typedef enum
{
META_PLACEMENT_GRAVITY_NONE = 0,
META_PLACEMENT_GRAVITY_TOP = 1 << 0,
META_PLACEMENT_GRAVITY_BOTTOM = 1 << 1,
META_PLACEMENT_GRAVITY_LEFT = 1 << 2,
META_PLACEMENT_GRAVITY_RIGHT = 1 << 3,
} MetaPlacementGravity;
typedef enum
{
META_PLACEMENT_ANCHOR_NONE = 0,
META_PLACEMENT_ANCHOR_TOP = 1 << 0,
META_PLACEMENT_ANCHOR_BOTTOM = 1 << 1,
META_PLACEMENT_ANCHOR_LEFT = 1 << 2,
META_PLACEMENT_ANCHOR_RIGHT = 1 << 3,
} MetaPlacementAnchor;
typedef enum
{
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_NONE = 0,
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_SLIDE_X = 1 << 0,
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_SLIDE_Y = 1 << 1,
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_X = 1 << 2,
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_FLIP_Y = 1 << 3,
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_RESIZE_X = 1 << 4,
META_PLACEMENT_CONSTRAINT_ADJUSTMENT_RESIZE_Y = 1 << 5,
} MetaPlacementConstraintAdjustment;
typedef struct _MetaPlacementRule
{
MetaRectangle anchor_rect;
MetaPlacementGravity gravity;
MetaPlacementAnchor anchor;
MetaPlacementConstraintAdjustment constraint_adjustment;
int offset_x;
int offset_y;
int width;
int height;
} MetaPlacementRule;
struct _MetaWindow
{
GObject parent_instance;
@ -448,6 +489,8 @@ struct _MetaWindow
/* Bypass compositor hints */
guint bypass_compositor;
MetaPlacementRule *placement_rule;
};
struct _MetaWindowClass
@ -697,4 +740,8 @@ gboolean meta_window_has_pointer (MetaWindow *window);
void meta_window_emit_size_changed (MetaWindow *window);
MetaPlacementRule *meta_window_get_placement_rule (MetaWindow *window);
void meta_window_force_placement (MetaWindow *window);
#endif

View File

@ -84,8 +84,6 @@ static void set_net_wm_state (MetaWindow *window);
static void meta_window_set_above (MetaWindow *window,
gboolean new_value);
static void meta_window_force_placement (MetaWindow *window);
static void meta_window_show (MetaWindow *window);
static void meta_window_hide (MetaWindow *window);
@ -296,6 +294,7 @@ meta_window_finalize (GObject *object)
g_free (window->gtk_window_object_path);
g_free (window->gtk_app_menu_object_path);
g_free (window->gtk_menubar_object_path);
g_free (window->placement_rule);
G_OBJECT_CLASS (meta_window_parent_class)->finalize (object);
}
@ -2168,7 +2167,7 @@ window_would_be_covered (const MetaWindow *newbie)
return FALSE; /* none found */
}
static void
void
meta_window_force_placement (MetaWindow *window)
{
if (window->placed)
@ -4254,6 +4253,17 @@ get_modal_transient (MetaWindow *window)
return modal_transient;
}
static gboolean
meta_window_transient_can_focus (MetaWindow *window)
{
#ifdef HAVE_WAYLAND
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND)
return meta_wayland_surface_get_buffer (window->surface) != NULL;
#endif
return TRUE;
}
/* XXX META_EFFECT_FOCUS */
void
meta_window_focus (MetaWindow *window,
@ -4279,7 +4289,8 @@ meta_window_focus (MetaWindow *window,
modal_transient = get_modal_transient (window);
if (modal_transient != NULL &&
!modal_transient->unmanaging)
!modal_transient->unmanaging &&
meta_window_transient_can_focus (modal_transient))
{
meta_topic (META_DEBUG_FOCUS,
"%s has %s as a modal transient, so focusing it instead.\n",
@ -4301,6 +4312,13 @@ meta_window_focus (MetaWindow *window,
META_WINDOW_GET_CLASS (window)->focus (window, timestamp);
if (window->display->event_route == META_EVENT_ROUTE_NORMAL)
{
MetaBackend *backend = meta_get_backend ();
ClutterStage *stage = CLUTTER_STAGE (meta_backend_get_stage (backend));
clutter_stage_set_key_focus (stage, NULL);
}
if (window->wm_state_demands_attention)
meta_window_unset_demands_attention(window);
@ -7416,23 +7434,26 @@ meta_window_set_transient_for (MetaWindow *window,
/* may now be a dialog */
if (window->client_type == META_WINDOW_CLIENT_TYPE_X11)
meta_window_x11_recalc_window_type (window);
if (!window->constructing)
{
/* If the window attaches, detaches, or changes attached
* parents, we need to destroy the MetaWindow and let a new one
* be created (which happens as a side effect of
* meta_window_unmanage()). The condition below is correct
* because we know window->transient_for has changed.
*/
if (window->attached || meta_window_should_attach_to_parent (window))
{
guint32 timestamp;
meta_window_x11_recalc_window_type (window);
timestamp = meta_display_get_current_time_roundtrip (window->display);
meta_window_unmanage (window, timestamp);
return;
if (!window->constructing)
{
/* If the window attaches, detaches, or changes attached
* parents, we need to destroy the MetaWindow and let a new one
* be created (which happens as a side effect of
* meta_window_unmanage()). The condition below is correct
* because we know window->transient_for has changed.
*/
if (window->attached || meta_window_should_attach_to_parent (window))
{
guint32 timestamp;
timestamp =
meta_display_get_current_time_roundtrip (window->display);
meta_window_unmanage (window, timestamp);
return;
}
}
}
@ -7925,3 +7946,9 @@ meta_window_emit_size_changed (MetaWindow *window)
{
g_signal_emit (window, window_signals[SIZE_CHANGED], 0);
}
MetaPlacementRule *
meta_window_get_placement_rule (MetaWindow *window)
{
return window->placement_rule;
}

View File

@ -44,6 +44,9 @@ void meta_backend_set_keymap (MetaBackend *backend,
void meta_backend_lock_layout_group (MetaBackend *backend,
guint idx);
void meta_backend_set_numlock (MetaBackend *backend,
gboolean numlock_state);
ClutterActor *meta_backend_get_stage (MetaBackend *backend);
void meta_clutter_init (void);

View File

@ -60,6 +60,7 @@ GType meta_window_actor_get_type (void);
Window meta_window_actor_get_x_window (MetaWindowActor *self);
MetaWindow * meta_window_actor_get_meta_window (MetaWindowActor *self);
ClutterActor * meta_window_actor_get_texture (MetaWindowActor *self);
void meta_window_actor_sync_visibility (MetaWindowActor *self);
gboolean meta_window_actor_is_destroyed (MetaWindowActor *self);
typedef enum {

View File

@ -620,7 +620,7 @@ meta_pointer_confinement_wayland_maybe_warp (MetaPointerConfinementWayland *self
seat = meta_wayland_pointer_constraint_get_seat (self->constraint);
surface = meta_wayland_pointer_constraint_get_surface (self->constraint);
clutter_input_device_get_coords (seat->pointer.device, NULL, &point);
clutter_input_device_get_coords (seat->pointer->device, NULL, &point);
meta_wayland_surface_get_relative_coordinates (surface,
point.x, point.y,
&sx, &sy);

View File

@ -106,8 +106,10 @@ meta_wayland_buffer_ensure_texture (MetaWaylandBuffer *buffer)
if (!texture)
{
meta_warning ("Could not import pending buffer, ignoring commit: %s\n",
catch_error->message);
cogl_error_free (catch_error);
meta_fatal ("Could not import pending buffer, ignoring commit\n");
goto out;
}
buffer->texture = texture;

View File

@ -51,6 +51,8 @@ struct _MetaWaylandDataOffer
struct wl_resource *resource;
MetaWaylandDataSource *source;
struct wl_listener source_destroy_listener;
gboolean accepted;
gboolean action_sent;
uint32_t dnd_actions;
enum wl_data_device_manager_dnd_action preferred_dnd_action;
};
@ -169,7 +171,10 @@ data_offer_update_action (MetaWaylandDataOffer *offer)
if (!meta_wayland_source_get_in_ask (source) &&
wl_resource_get_version (offer->resource) >=
WL_DATA_OFFER_ACTION_SINCE_VERSION)
wl_data_offer_send_action (offer->resource, action);
{
wl_data_offer_send_action (offer->resource, action);
offer->action_sent = TRUE;
}
}
static void
@ -353,6 +358,8 @@ data_offer_accept (struct wl_client *client,
meta_wayland_data_source_set_has_target (offer->source,
mime_type != NULL);
}
offer->accepted = mime_type != NULL;
}
static void
@ -385,8 +392,7 @@ data_offer_finish (struct wl_client *client,
offer != meta_wayland_data_source_get_current_offer (offer->source))
return;
if (meta_wayland_data_source_get_seat (offer->source) ||
!meta_wayland_data_source_has_target (offer->source))
if (!offer->accepted || !offer->action_sent)
{
wl_resource_post_error (offer->resource,
WL_DATA_OFFER_ERROR_INVALID_FINISH,
@ -465,7 +471,7 @@ primary_offer_receive (struct wl_client *client, struct wl_resource *resource,
seat = meta_wayland_data_source_get_seat (source);
if (wl_resource_get_client (offer->resource) !=
meta_wayland_keyboard_get_focus_client (&seat->keyboard))
meta_wayland_keyboard_get_focus_client (seat->keyboard))
{
close (fd);
return;
@ -979,7 +985,7 @@ drag_grab_button (MetaWaylandPointerGrab *grab,
drag_grab->feedback_actor = NULL;
}
if (seat->pointer.button_count == 0 &&
if (seat->pointer->button_count == 0 &&
event_type == CLUTTER_BUTTON_RELEASE)
data_device_end_drag_grab (drag_grab);
}
@ -1073,10 +1079,10 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
data_device->current_grab = drag_grab = g_slice_new0 (MetaWaylandDragGrab);
drag_grab->generic.interface = funcs;
drag_grab->generic.pointer = &seat->pointer;
drag_grab->generic.pointer = seat->pointer;
drag_grab->keyboard_grab.interface = &keyboard_drag_grab_interface;
drag_grab->keyboard_grab.keyboard = &seat->keyboard;
drag_grab->keyboard_grab.keyboard = seat->keyboard;
drag_grab->drag_client = client;
drag_grab->seat = seat;
@ -1087,15 +1093,15 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
&drag_grab->drag_origin_listener);
clutter_actor_transform_stage_point (CLUTTER_ACTOR (meta_surface_actor_get_texture (surface->surface_actor)),
seat->pointer.grab_x,
seat->pointer.grab_y,
seat->pointer->grab_x,
seat->pointer->grab_y,
&surface_pos.x, &surface_pos.y);
drag_grab->drag_start_x = surface_pos.x;
drag_grab->drag_start_y = surface_pos.y;
drag_grab->need_initial_focus = TRUE;
modifiers = clutter_input_device_get_modifier_state (seat->pointer.device);
modifiers = clutter_input_device_get_modifier_state (seat->pointer->device);
drag_grab->buttons = modifiers &
(CLUTTER_BUTTON1_MASK | CLUTTER_BUTTON2_MASK | CLUTTER_BUTTON3_MASK |
CLUTTER_BUTTON4_MASK | CLUTTER_BUTTON5_MASK);
@ -1121,12 +1127,13 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
clutter_actor_add_child (drag_grab->feedback_actor,
CLUTTER_ACTOR (drag_grab->drag_surface->surface_actor));
clutter_input_device_get_coords (seat->pointer.device, NULL, &pos);
clutter_input_device_get_coords (seat->pointer->device, NULL, &pos);
meta_feedback_actor_set_position (META_FEEDBACK_ACTOR (drag_grab->feedback_actor),
pos.x, pos.y);
}
meta_wayland_pointer_start_grab (&seat->pointer, (MetaWaylandPointerGrab*) drag_grab);
meta_wayland_pointer_start_grab (seat->pointer,
(MetaWaylandPointerGrab*) drag_grab);
meta_wayland_data_source_set_seat (source, seat);
}
@ -1155,16 +1162,16 @@ data_device_start_drag (struct wl_client *client,
if (!surface)
return;
if (seat->pointer.button_count == 0 ||
seat->pointer.grab_serial != serial ||
!seat->pointer.focus_surface ||
seat->pointer.focus_surface != surface)
if (seat->pointer->button_count == 0 ||
seat->pointer->grab_serial != serial ||
!seat->pointer->focus_surface ||
seat->pointer->focus_surface != surface)
return;
/* FIXME: Check that the data source type array isn't empty. */
if (data_device->current_grab ||
seat->pointer.grab != &seat->pointer.default_grab)
seat->pointer->grab != &seat->pointer->default_grab)
return;
if (icon_resource)
@ -1174,7 +1181,8 @@ data_device_start_drag (struct wl_client *client,
if (icon_resource &&
!meta_wayland_surface_assign_role (icon_surface,
META_TYPE_WAYLAND_SURFACE_ROLE_DND))
META_TYPE_WAYLAND_SURFACE_ROLE_DND,
NULL))
{
wl_resource_post_error (resource, WL_DATA_DEVICE_ERROR_ROLE,
"wl_surface@%d already has a different role",
@ -1182,13 +1190,13 @@ data_device_start_drag (struct wl_client *client,
return;
}
meta_wayland_pointer_set_focus (&seat->pointer, NULL);
meta_wayland_pointer_set_focus (seat->pointer, NULL);
meta_wayland_data_device_start_drag (data_device, client,
&drag_grab_interface,
surface, drag_source, icon_surface);
meta_wayland_keyboard_set_focus (&seat->keyboard, NULL);
meta_wayland_keyboard_start_grab (&seat->keyboard,
meta_wayland_keyboard_set_focus (seat->keyboard, NULL);
meta_wayland_keyboard_start_grab (seat->keyboard,
&seat->data_device.current_grab->keyboard_grab);
}
@ -1202,7 +1210,7 @@ selection_data_source_destroyed (gpointer data, GObject *object_was_here)
data_device->selection_data_source = NULL;
focus_client = meta_wayland_keyboard_get_focus_client (&seat->keyboard);
focus_client = meta_wayland_keyboard_get_focus_client (seat->keyboard);
if (focus_client)
{
data_device_resource = wl_resource_find_for_client (&data_device->resource_list, focus_client);
@ -1528,7 +1536,7 @@ meta_wayland_data_device_set_selection (MetaWaylandDataDevice *data_device,
data_device->selection_data_source = source;
data_device->selection_serial = serial;
focus_client = meta_wayland_keyboard_get_focus_client (&seat->keyboard);
focus_client = meta_wayland_keyboard_get_focus_client (seat->keyboard);
if (focus_client)
{
data_device_resource = wl_resource_find_for_client (&data_device->resource_list, focus_client);
@ -1605,7 +1613,7 @@ primary_source_destroyed (gpointer data,
data_device->primary_data_source = NULL;
focus_client = meta_wayland_keyboard_get_focus_client (&seat->keyboard);
focus_client = meta_wayland_keyboard_get_focus_client (seat->keyboard);
if (focus_client)
{
struct wl_resource *data_device_resource;
@ -1634,7 +1642,7 @@ meta_wayland_data_device_set_primary (MetaWaylandDataDevice *data_device,
resource = META_WAYLAND_DATA_SOURCE_PRIMARY (source)->resource;
if (wl_resource_get_client (resource) !=
meta_wayland_keyboard_get_focus_client (&seat->keyboard))
meta_wayland_keyboard_get_focus_client (seat->keyboard))
return;
}
@ -1653,7 +1661,7 @@ meta_wayland_data_device_set_primary (MetaWaylandDataDevice *data_device,
data_device->primary_data_source = source;
data_device->primary_serial = serial;
focus_client = meta_wayland_keyboard_get_focus_client (&seat->keyboard);
focus_client = meta_wayland_keyboard_get_focus_client (seat->keyboard);
if (focus_client)
{
data_device_resource = wl_resource_find_for_client (&data_device->primary_resource_list, focus_client);
@ -1839,7 +1847,7 @@ meta_wayland_data_device_set_keyboard_focus (MetaWaylandDataDevice *data_device)
struct wl_resource *data_device_resource, *offer;
MetaWaylandDataSource *source;
focus_client = meta_wayland_keyboard_get_focus_client (&seat->keyboard);
focus_client = meta_wayland_keyboard_get_focus_client (seat->keyboard);
if (focus_client == data_device->focus_client)
return;

View File

@ -0,0 +1,289 @@
/*
* Wayland Support
*
* Copyright (C) 2012,2013 Intel Corporation
* 2013-2016 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
#include "config.h"
#include "wayland/meta-wayland-gtk-shell.h"
#include "core/bell.h"
#include "core/window-private.h"
#include "wayland/meta-wayland-private.h"
#include "wayland/meta-wayland-surface.h"
#include "wayland/meta-wayland-versions.h"
#include "wayland/meta-window-wayland.h"
#include "gtk-shell-server-protocol.h"
static GQuark quark_gtk_surface_data = 0;
typedef struct _MetaWaylandGtkSurface
{
struct wl_resource *resource;
MetaWaylandSurface *surface;
gboolean is_modal;
gulong configure_handler_id;
} MetaWaylandGtkSurface;
static void
gtk_surface_destructor (struct wl_resource *resource)
{
MetaWaylandGtkSurface *gtk_surface = wl_resource_get_user_data (resource);
if (gtk_surface->surface)
{
g_object_steal_qdata (G_OBJECT (gtk_surface->surface),
quark_gtk_surface_data);
g_signal_handler_disconnect (gtk_surface->surface,
gtk_surface->configure_handler_id);
}
g_free (gtk_surface);
}
static void
gtk_surface_set_dbus_properties (struct wl_client *client,
struct wl_resource *resource,
const char *application_id,
const char *app_menu_path,
const char *menubar_path,
const char *window_object_path,
const char *application_object_path,
const char *unique_bus_name)
{
MetaWaylandGtkSurface *gtk_surface = wl_resource_get_user_data (resource);
MetaWaylandSurface *surface = gtk_surface->surface;
/* Broken client, let it die instead of us */
if (!surface->window)
{
meta_warning ("meta-wayland-surface: set_dbus_properties called with invalid window!\n");
return;
}
meta_window_set_gtk_dbus_properties (surface->window,
application_id,
unique_bus_name,
app_menu_path,
menubar_path,
application_object_path,
window_object_path);
}
static void
gtk_surface_set_modal (struct wl_client *client,
struct wl_resource *resource)
{
MetaWaylandGtkSurface *gtk_surface = wl_resource_get_user_data (resource);
MetaWaylandSurface *surface = gtk_surface->surface;
if (gtk_surface->is_modal)
return;
gtk_surface->is_modal = TRUE;
meta_window_set_type (surface->window, META_WINDOW_MODAL_DIALOG);
}
static void
gtk_surface_unset_modal (struct wl_client *client,
struct wl_resource *resource)
{
MetaWaylandGtkSurface *gtk_surface = wl_resource_get_user_data (resource);
MetaWaylandSurface *surface = gtk_surface->surface;
if (!gtk_surface->is_modal)
return;
gtk_surface->is_modal = FALSE;
meta_window_set_type (surface->window, META_WINDOW_NORMAL);
}
static void
gtk_surface_present (struct wl_client *client,
struct wl_resource *resource,
uint32_t timestamp)
{
MetaWaylandGtkSurface *gtk_surface = wl_resource_get_user_data (resource);
MetaWaylandSurface *surface = gtk_surface->surface;
MetaWindow *window = surface->window;
if (!window)
return;
meta_window_activate_full (window, timestamp,
META_CLIENT_TYPE_APPLICATION, NULL);
}
static const struct gtk_surface1_interface meta_wayland_gtk_surface_interface = {
gtk_surface_set_dbus_properties,
gtk_surface_set_modal,
gtk_surface_unset_modal,
gtk_surface_present,
};
static void
gtk_surface_surface_destroyed (MetaWaylandGtkSurface *gtk_surface)
{
wl_resource_set_implementation (gtk_surface->resource,
NULL, NULL, NULL);
gtk_surface->surface = NULL;
}
static void
fill_states (struct wl_array *states,
MetaWindow *window)
{
uint32_t *s;
if (window->tile_mode == META_TILE_LEFT ||
window->tile_mode == META_TILE_RIGHT)
{
s = wl_array_add (states, sizeof *s);
*s = GTK_SURFACE1_STATE_TILED;
}
}
static void
on_configure (MetaWaylandSurface *surface,
MetaWaylandGtkSurface *gtk_surface)
{
struct wl_array states;
wl_array_init (&states);
fill_states (&states, surface->window);
gtk_surface1_send_configure (gtk_surface->resource, &states);
wl_array_release (&states);
}
static void
gtk_shell_get_gtk_surface (struct wl_client *client,
struct wl_resource *resource,
guint32 id,
struct wl_resource *surface_resource)
{
MetaWaylandSurface *surface = wl_resource_get_user_data (surface_resource);
MetaWaylandGtkSurface *gtk_surface;
gtk_surface = g_object_get_qdata (G_OBJECT (surface), quark_gtk_surface_data);
if (gtk_surface)
{
wl_resource_post_error (surface_resource,
WL_DISPLAY_ERROR_INVALID_OBJECT,
"gtk_shell::get_gtk_surface already requested");
return;
}
gtk_surface = g_new0 (MetaWaylandGtkSurface, 1);
gtk_surface->surface = surface;
gtk_surface->resource = wl_resource_create (client,
&gtk_surface1_interface,
wl_resource_get_version (resource),
id);
wl_resource_set_implementation (gtk_surface->resource,
&meta_wayland_gtk_surface_interface,
gtk_surface, gtk_surface_destructor);
gtk_surface->configure_handler_id = g_signal_connect (surface,
"configure",
G_CALLBACK (on_configure),
gtk_surface);
g_object_set_qdata_full (G_OBJECT (surface),
quark_gtk_surface_data,
gtk_surface,
(GDestroyNotify) gtk_surface_surface_destroyed);
}
static void
gtk_shell_set_startup_id (struct wl_client *client,
struct wl_resource *resource,
const char *startup_id)
{
MetaDisplay *display;
display = meta_get_display ();
meta_startup_notification_remove_sequence (display->startup_notification,
startup_id);
}
static void
gtk_shell_system_bell (struct wl_client *client,
struct wl_resource *resource,
struct wl_resource *gtk_surface_resource)
{
MetaDisplay *display = meta_get_display ();
if (gtk_surface_resource)
{
MetaWaylandGtkSurface *gtk_surface =
wl_resource_get_user_data (gtk_surface_resource);
MetaWaylandSurface *surface = gtk_surface->surface;
if (!surface->window)
return;
meta_bell_notify (display, surface->window);
}
else
{
meta_bell_notify (display, NULL);
}
}
static const struct gtk_shell1_interface meta_wayland_gtk_shell_interface = {
gtk_shell_get_gtk_surface,
gtk_shell_set_startup_id,
gtk_shell_system_bell,
};
static void
bind_gtk_shell (struct wl_client *client,
void *data,
guint32 version,
guint32 id)
{
struct wl_resource *resource;
uint32_t capabilities = 0;
resource = wl_resource_create (client, &gtk_shell1_interface, version, id);
wl_resource_set_implementation (resource, &meta_wayland_gtk_shell_interface,
data, NULL);
if (!meta_prefs_get_show_fallback_app_menu ())
capabilities = GTK_SHELL1_CAPABILITY_GLOBAL_APP_MENU;
gtk_shell1_send_capabilities (resource, capabilities);
}
void
meta_wayland_gtk_shell_init (MetaWaylandCompositor *compositor)
{
quark_gtk_surface_data =
g_quark_from_static_string ("-meta-wayland-gtk-shell-surface-data");
if (wl_global_create (compositor->wayland_display,
&gtk_shell1_interface,
META_GTK_SHELL1_VERSION,
compositor, bind_gtk_shell) == NULL)
g_error ("Failed to register a global gtk-shell object");
}

View File

@ -0,0 +1,27 @@
/*
* Copyright (C) 2016 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*/
#ifndef META_WAYLAND_GTK_SHELL_H
#define META_WAYLAND_GTK_SHELL_H
#include "wayland/meta-wayland.h"
void meta_wayland_gtk_shell_init (MetaWaylandCompositor *compositor);
#endif /* META_WAYLAND_GTK_SHELL_H */

View File

@ -0,0 +1,117 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2016 Red Hat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* Written by:
* Jonas Ådahl <jadahl@gmail.com>
*/
#include "config.h"
#include "wayland/meta-wayland-input-device.h"
enum
{
PROP_0,
PROP_SEAT
};
typedef struct _MetaWaylandInputDevicePrivate
{
MetaWaylandSeat *seat;
} MetaWaylandInputDevicePrivate;
G_DEFINE_TYPE_WITH_PRIVATE (MetaWaylandInputDevice,
meta_wayland_input_device,
G_TYPE_OBJECT)
MetaWaylandSeat *
meta_wayland_input_device_get_seat (MetaWaylandInputDevice *input_device)
{
MetaWaylandInputDevicePrivate *priv =
meta_wayland_input_device_get_instance_private (input_device);
return priv->seat;
}
static void
meta_wayland_input_device_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
MetaWaylandInputDevice *input_device = META_WAYLAND_INPUT_DEVICE (object);
MetaWaylandInputDevicePrivate *priv =
meta_wayland_input_device_get_instance_private (input_device);
switch (prop_id)
{
case PROP_SEAT:
priv->seat = g_value_get_pointer (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
meta_wayland_input_device_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
MetaWaylandInputDevice *input_device = META_WAYLAND_INPUT_DEVICE (object);
MetaWaylandInputDevicePrivate *priv =
meta_wayland_input_device_get_instance_private (input_device);
switch (prop_id)
{
case PROP_SEAT:
g_value_set_pointer (value, priv->seat);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
meta_wayland_input_device_init (MetaWaylandInputDevice *input_device)
{
}
static void
meta_wayland_input_device_class_init (MetaWaylandInputDeviceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GParamSpec *pspec;
object_class->set_property = meta_wayland_input_device_set_property;
object_class->get_property = meta_wayland_input_device_get_property;
pspec = g_param_spec_pointer ("seat",
"MetaWaylandSeat",
"The seat",
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (object_class, PROP_SEAT, pspec);
}

View File

@ -0,0 +1,45 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2016 Red Hat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* Written by:
* Jonas Ådahl <jadahl@gmail.com>
*/
#ifndef META_WAYLAND_INPUT_DEVICE_H
#define META_WAYLAND_INPUT_DEVICE_H
#include <glib-object.h>
#include "wayland/meta-wayland-types.h"
#define META_TYPE_WAYLAND_INPUT_DEVICE (meta_wayland_input_device_get_type ())
G_DECLARE_DERIVABLE_TYPE (MetaWaylandInputDevice,
meta_wayland_input_device,
META, WAYLAND_INPUT_DEVICE,
GObject)
struct _MetaWaylandInputDeviceClass
{
GObjectClass parent_class;
};
MetaWaylandSeat * meta_wayland_input_device_get_seat (MetaWaylandInputDevice *input_device);
#endif /* META_WAYLAND_INPUT_DEVICE_H */

View File

@ -65,7 +65,20 @@
#include "backends/native/meta-backend-native.h"
#endif
#define GSD_KEYBOARD_SCHEMA "org.gnome.settings-daemon.peripherals.keyboard"
typedef enum
{
GSD_KEYBOARD_NUM_LOCK_STATE_UNKNOWN,
GSD_KEYBOARD_NUM_LOCK_STATE_ON,
GSD_KEYBOARD_NUM_LOCK_STATE_OFF
} GsdKeyboardNumLockState;
G_DEFINE_TYPE (MetaWaylandKeyboard, meta_wayland_keyboard,
META_TYPE_WAYLAND_INPUT_DEVICE)
static void meta_wayland_keyboard_update_xkb_state (MetaWaylandKeyboard *keyboard);
static void meta_wayland_keyboard_set_numlock (MetaWaylandKeyboard *keyboard,
gboolean numlock_state);
static void notify_modifiers (MetaWaylandKeyboard *keyboard);
static guint evdev_code (const ClutterKeyEvent *event);
@ -338,11 +351,15 @@ meta_wayland_keyboard_broadcast_modifiers (MetaWaylandKeyboard *keyboard)
struct wl_resource *resource;
struct wl_list *l;
l = &keyboard->focus_resource_list;
if (!wl_list_empty (l))
{
uint32_t serial = wl_display_next_serial (keyboard->display);
MetaWaylandInputDevice *input_device =
META_WAYLAND_INPUT_DEVICE (keyboard);
MetaWaylandSeat *seat = meta_wayland_input_device_get_seat (input_device);
uint32_t serial;
serial = wl_display_next_serial (seat->wl_display);
wl_resource_for_each (resource, l)
keyboard_send_modifiers (keyboard, resource, serial);
@ -359,6 +376,107 @@ notify_modifiers (MetaWaylandKeyboard *keyboard)
xkb_state_serialize_mods (state, XKB_STATE_MODS_EFFECTIVE));
}
static void
numlock_set_xkb_state (MetaWaylandKeyboard *keyboard,
GsdKeyboardNumLockState state)
{
MetaBackend *backend = meta_get_backend ();
gboolean numlock_state;
if (state != GSD_KEYBOARD_NUM_LOCK_STATE_ON &&
state != GSD_KEYBOARD_NUM_LOCK_STATE_OFF)
return;
numlock_state = (state == GSD_KEYBOARD_NUM_LOCK_STATE_ON);
meta_verbose ("set numlock state %s\n", (numlock_state ? "ON" : "OFF"));
meta_backend_set_numlock (backend, numlock_state);
meta_wayland_keyboard_set_numlock (keyboard, numlock_state);
}
static void
maybe_restore_numlock_state (MetaWaylandKeyboard *keyboard)
{
gboolean remember_numlock;
if (!keyboard->gsd_settings)
return;
/* We are cheating for now, we use g-s-d settings... */
remember_numlock = g_settings_get_boolean (keyboard->gsd_settings,
"remember-numlock-state");
if (remember_numlock)
{
GsdKeyboardNumLockState state;
state = g_settings_get_enum (keyboard->gsd_settings, "numlock-state");
numlock_set_xkb_state (keyboard, state);
}
}
static void
maybe_save_numlock_state (MetaWaylandKeyboard *keyboard)
{
MetaWaylandXkbInfo *xkb_info = &keyboard->xkb_info;
GsdKeyboardNumLockState numlock_state;
int numlock_active;
if (!META_IS_BACKEND_NATIVE (meta_get_backend ()))
return;
if (!xkb_info->state)
return;
if (!keyboard->gsd_settings)
return;
if (!g_settings_get_boolean (keyboard->gsd_settings, "remember-numlock-state"))
return;
numlock_active = xkb_state_mod_name_is_active(xkb_info->state,
"Mod2",
XKB_STATE_MODS_LOCKED);
switch (numlock_active)
{
case -1:
numlock_state = GSD_KEYBOARD_NUM_LOCK_STATE_UNKNOWN;
break;
case 0:
numlock_state = GSD_KEYBOARD_NUM_LOCK_STATE_OFF;
break;
default:
numlock_state = GSD_KEYBOARD_NUM_LOCK_STATE_ON;
break;
}
g_settings_set_enum (keyboard->gsd_settings, "numlock-state", numlock_state);
}
static void
meta_wayland_keyboard_set_numlock (MetaWaylandKeyboard *keyboard,
gboolean numlock_state)
{
MetaWaylandXkbInfo *xkb_info = &keyboard->xkb_info;
xkb_mod_mask_t latched, locked, group, depressed;
xkb_mod_mask_t numlock;
meta_verbose ("backend numlock state %s\n", (numlock_state ? "ON" : "OFF"));
latched = xkb_state_serialize_mods (xkb_info->state, XKB_STATE_MODS_LATCHED);
locked = xkb_state_serialize_mods (xkb_info->state, XKB_STATE_MODS_LOCKED);
group = xkb_state_serialize_layout (xkb_info->state, XKB_STATE_LAYOUT_EFFECTIVE);
depressed = xkb_state_serialize_mods(xkb_info->state, XKB_STATE_DEPRESSED);
numlock = (1 << xkb_keymap_mod_get_index(xkb_info->keymap, "Mod2"));
if (numlock_state == TRUE)
locked |= numlock;
else
locked &= ~numlock;
xkb_state_update_mask (xkb_info->state, depressed, latched, locked, 0, 0, group);
notify_modifiers (keyboard);
}
static void
meta_wayland_keyboard_update_xkb_state (MetaWaylandKeyboard *keyboard)
{
@ -428,6 +546,16 @@ notify_key_repeat (MetaWaylandKeyboard *keyboard)
}
}
static void
remember_numlock_state_changed (GSettings *settings,
const char *key,
gpointer data)
{
MetaWaylandKeyboard *keyboard = data;
maybe_save_numlock_state (keyboard);
}
static void
settings_changed (GSettings *settings,
const char *key,
@ -478,14 +606,10 @@ static const MetaWaylandKeyboardGrabInterface default_keyboard_grab_interface =
};
void
meta_wayland_keyboard_init (MetaWaylandKeyboard *keyboard,
struct wl_display *display)
meta_wayland_keyboard_enable (MetaWaylandKeyboard *keyboard)
{
MetaBackend *backend = meta_get_backend ();
memset (keyboard, 0, sizeof *keyboard);
keyboard->display = display;
GSettingsSchema *schema;
wl_list_init (&keyboard->resource_list);
wl_list_init (&keyboard->focus_resource_list);
@ -502,27 +626,44 @@ meta_wayland_keyboard_init (MetaWaylandKeyboard *keyboard,
g_signal_connect (keyboard->settings, "changed",
G_CALLBACK (settings_changed), keyboard);
/* We are cheating for now, we use g-s-d settings... Check if available */
schema = g_settings_schema_source_lookup (g_settings_schema_source_get_default (),
GSD_KEYBOARD_SCHEMA,
TRUE);
if (schema)
{
keyboard->gsd_settings = g_settings_new_full (schema, NULL, NULL);
g_settings_schema_unref (schema);
g_signal_connect (keyboard->gsd_settings, "changed::remember-numlock-state",
G_CALLBACK (remember_numlock_state_changed), keyboard);
}
g_signal_connect (backend, "keymap-changed",
G_CALLBACK (on_keymap_changed), keyboard);
g_signal_connect (backend, "keymap-layout-group-changed",
G_CALLBACK (on_keymap_layout_group_changed), keyboard);
meta_wayland_keyboard_take_keymap (keyboard, meta_backend_get_keymap (backend));
maybe_restore_numlock_state (keyboard);
}
static void
meta_wayland_xkb_info_destroy (MetaWaylandXkbInfo *xkb_info)
{
xkb_keymap_unref (xkb_info->keymap);
xkb_state_unref (xkb_info->state);
g_clear_pointer (&xkb_info->keymap, xkb_keymap_unref);
g_clear_pointer (&xkb_info->state, xkb_state_unref);
if (xkb_info->keymap_area)
munmap (xkb_info->keymap_area, xkb_info->keymap_size);
{
munmap (xkb_info->keymap_area, xkb_info->keymap_size);
xkb_info->keymap_area = NULL;
}
if (xkb_info->keymap_fd >= 0)
close (xkb_info->keymap_fd);
}
void
meta_wayland_keyboard_release (MetaWaylandKeyboard *keyboard)
meta_wayland_keyboard_disable (MetaWaylandKeyboard *keyboard)
{
MetaBackend *backend = meta_get_backend ();
@ -534,9 +675,9 @@ meta_wayland_keyboard_release (MetaWaylandKeyboard *keyboard)
/* XXX: What about keyboard->resource_list? */
g_object_unref (keyboard->settings);
keyboard->display = NULL;
g_clear_object (&keyboard->settings);
if (keyboard->gsd_settings)
g_object_unref (keyboard->gsd_settings);
}
static guint
@ -590,6 +731,8 @@ meta_wayland_keyboard_handle_event (MetaWaylandKeyboard *keyboard,
if (keyboard->mods_changed != 0)
{
if (keyboard->mods_changed & XKB_STATE_MODS_LOCKED)
maybe_save_numlock_state (keyboard);
notify_modifiers (keyboard);
keyboard->mods_changed = 0;
}
@ -682,7 +825,10 @@ void
meta_wayland_keyboard_set_focus (MetaWaylandKeyboard *keyboard,
MetaWaylandSurface *surface)
{
if (keyboard->display == NULL)
MetaWaylandInputDevice *input_device = META_WAYLAND_INPUT_DEVICE (keyboard);
MetaWaylandSeat *seat = meta_wayland_input_device_get_seat (input_device);
if (!meta_wayland_seat_has_keyboard (seat))
return;
if (keyboard->focus_surface == surface)
@ -809,3 +955,13 @@ meta_wayland_keyboard_end_grab (MetaWaylandKeyboard *keyboard)
{
keyboard->grab = &keyboard->default_grab;
}
static void
meta_wayland_keyboard_init (MetaWaylandKeyboard *keyboard)
{
}
static void
meta_wayland_keyboard_class_init (MetaWaylandKeyboardClass *klass)
{
}

View File

@ -49,6 +49,13 @@
#include <wayland-server.h>
#include <xkbcommon/xkbcommon.h>
#include "wayland/meta-wayland-types.h"
#define META_TYPE_WAYLAND_KEYBOARD (meta_wayland_keyboard_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandKeyboard, meta_wayland_keyboard,
META, WAYLAND_KEYBOARD,
MetaWaylandInputDevice)
struct _MetaWaylandKeyboardGrabInterface
{
gboolean (*key) (MetaWaylandKeyboardGrab *grab,
@ -74,7 +81,7 @@ typedef struct
struct _MetaWaylandKeyboard
{
struct wl_display *display;
MetaWaylandInputDevice parent;
struct wl_list resource_list;
struct wl_list focus_resource_list;
@ -91,12 +98,12 @@ struct _MetaWaylandKeyboard
MetaWaylandKeyboardGrab default_grab;
GSettings *settings;
GSettings *gsd_settings;
};
void meta_wayland_keyboard_init (MetaWaylandKeyboard *keyboard,
struct wl_display *display);
void meta_wayland_keyboard_enable (MetaWaylandKeyboard *keyboard);
void meta_wayland_keyboard_release (MetaWaylandKeyboard *keyboard);
void meta_wayland_keyboard_disable (MetaWaylandKeyboard *keyboard);
void meta_wayland_keyboard_update (MetaWaylandKeyboard *keyboard,
const ClutterKeyEvent *event);

View File

@ -53,13 +53,6 @@ output_resource_destroy (struct wl_resource *res)
wayland_output->resources = g_list_remove (wayland_output->resources, res);
}
static inline enum wl_output_transform
wl_output_transform_from_meta_monitor_transform (MetaMonitorTransform transform)
{
/* The enums are the same. */
return (enum wl_output_transform) transform;
}
static void
send_output_events (struct wl_resource *resource,
MetaWaylandOutput *wayland_output,
@ -69,11 +62,9 @@ send_output_events (struct wl_resource *resource,
int version = wl_resource_get_version (resource);
MetaOutput *output = monitor_info->outputs[0];
enum wl_output_transform transform = wl_output_transform_from_meta_monitor_transform (output->crtc->transform);
guint mode_flags = WL_OUTPUT_MODE_CURRENT;
MetaMonitorInfo *old_monitor_info = wayland_output->monitor_info;
enum wl_output_transform old_transform = wayland_output->transform;
guint old_mode_flags = wayland_output->mode_flags;
gint old_scale = wayland_output->scale;
@ -81,9 +72,14 @@ send_output_events (struct wl_resource *resource,
if (need_all_events ||
old_monitor_info->rect.x != monitor_info->rect.x ||
old_monitor_info->rect.y != monitor_info->rect.y ||
old_transform != transform)
old_monitor_info->rect.y != monitor_info->rect.y)
{
/*
* TODO: When we support wl_surface.set_buffer_transform, pass along
* the correct transform here instead of always pretending its 'normal'.
* The reason for this is to try stopping clients from setting any buffer
* transform other than 'normal'.
*/
wl_output_send_geometry (resource,
(int)monitor_info->rect.x,
(int)monitor_info->rect.y,
@ -92,7 +88,7 @@ send_output_events (struct wl_resource *resource,
output->subpixel_order,
output->vendor,
output->product,
transform);
WL_OUTPUT_TRANSFORM_NORMAL);
need_done = TRUE;
}
@ -167,10 +163,8 @@ wayland_output_set_monitor_info (MetaWaylandOutput *wayland_output,
MetaMonitorInfo *monitor_info)
{
MetaOutput *output = monitor_info->outputs[0];
enum wl_output_transform transform = wl_output_transform_from_meta_monitor_transform (output->crtc->transform);
wayland_output->monitor_info = monitor_info;
wayland_output->transform = transform;
wayland_output->mode_flags = WL_OUTPUT_MODE_CURRENT;
if (output->crtc->current_mode == output->preferred_mode)
wayland_output->mode_flags |= WL_OUTPUT_MODE_PREFERRED;

View File

@ -28,14 +28,9 @@
#include "backends/meta-monitor-manager-private.h"
#include "meta-wayland-private.h"
#define META_TYPE_WAYLAND_OUTPUT (meta_wayland_output_get_type ())
#define META_WAYLAND_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_WAYLAND_OUTPUT, MetaWaylandOutput))
#define META_WAYLAND_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_WAYLAND_OUTPUT, MetaWaylandOutputClass))
#define META_IS_WAYLAND_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_WAYLAND_OUTPUT))
#define META_IS_WAYLAND_OUTPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_WAYLAND_OUTPUT))
#define META_WAYLAND_OUTPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_WAYLAND_OUTPUT, MetaWaylandOutputClass))
typedef struct _MetaWaylandOutputClass MetaWaylandOutputClass;
#define META_TYPE_WAYLAND_OUTPUT (meta_wayland_output_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandOutput, meta_wayland_output,
META, WAYLAND_OUTPUT, GObject)
struct _MetaWaylandOutput
{
@ -43,20 +38,12 @@ struct _MetaWaylandOutput
struct wl_global *global;
MetaMonitorInfo *monitor_info;
enum wl_output_transform transform;
guint mode_flags;
gint scale;
GList *resources;
};
struct _MetaWaylandOutputClass
{
GObjectClass parent_class;
};
GType meta_wayland_output_get_type (void) G_GNUC_CONST;
void meta_wayland_outputs_init (MetaWaylandCompositor *compositor);
#endif /* META_WAYLAND_OUTPUTS_H */

View File

@ -34,6 +34,7 @@
#include "meta-wayland-pointer.h"
#include "meta-wayland-surface.h"
#include "meta-wayland-region.h"
#include "meta-xwayland.h"
#include "meta-pointer-lock-wayland.h"
#include "meta-pointer-confinement-wayland.h"
#include "window-private.h"
@ -57,6 +58,7 @@ struct _MetaWaylandPointerConstraint
MetaWaylandPointerGrab grab;
MetaWaylandSeat *seat;
enum zwp_pointer_constraints_v1_lifetime lifetime;
gulong pointer_focus_surface_handler_id;
gboolean hint_set;
wl_fixed_t x_hint;
@ -67,8 +69,13 @@ struct _MetaWaylandPointerConstraint
typedef struct _MetaWaylandSurfacePointerConstraintsData
{
MetaWaylandSurface *surface;
GList *pointer_constraints;
MetaWindow *window;
gulong window_associated_handler_id;
gulong appears_changed_handler_id;
gulong raised_handler_id;
} MetaWaylandSurfacePointerConstraintsData;
@ -96,6 +103,9 @@ static const MetaWaylandPointerGrabInterface confined_pointer_grab_interface;
static void
meta_wayland_pointer_constraint_destroy (MetaWaylandPointerConstraint *constraint);
static void
meta_wayland_pointer_constraint_maybe_enable (MetaWaylandPointerConstraint *constraint);
static void
meta_wayland_pointer_constraint_maybe_enable_for_window (MetaWindow *window);
@ -121,9 +131,6 @@ appears_focused_changed (MetaWindow *window,
meta_wayland_pointer_constraint_maybe_remove_for_seat (wayland_compositor->seat,
window);
if (window->unmanaging)
return;
meta_wayland_pointer_constraint_maybe_enable_for_window (window);
}
@ -133,6 +140,34 @@ window_raised (MetaWindow *window)
meta_wayland_pointer_constraint_maybe_enable_for_window (window);
}
static void
connect_window (MetaWaylandSurfacePointerConstraintsData *data,
MetaWindow *window)
{
data->window = window;
g_object_add_weak_pointer (G_OBJECT (data->window),
(gpointer *) &data->window);
data->appears_changed_handler_id =
g_signal_connect (data->window, "notify::appears-focused",
G_CALLBACK (appears_focused_changed), NULL);
data->raised_handler_id =
g_signal_connect (data->window, "raised",
G_CALLBACK (window_raised), NULL);
}
static void
window_associated (MetaWaylandSurfaceRole *surface_role,
MetaWaylandSurfacePointerConstraintsData *data)
{
MetaWaylandSurface *surface = data->surface;
connect_window (data, surface->window);
g_signal_handler_disconnect (surface, data->window_associated_handler_id);
data->window_associated_handler_id = 0;
meta_wayland_pointer_constraint_maybe_enable_for_window (surface->window);
}
static MetaWaylandSurfacePointerConstraintsData *
surface_constraint_data_new (MetaWaylandSurface *surface)
{
@ -140,17 +175,18 @@ surface_constraint_data_new (MetaWaylandSurface *surface)
data = g_new0 (MetaWaylandSurfacePointerConstraintsData, 1);
data->surface = surface;
if (surface->window)
{
data->window = surface->window;
g_object_add_weak_pointer (G_OBJECT (data->window),
(gpointer *) &data->window);
data->appears_changed_handler_id =
g_signal_connect (data->window, "notify::appears-focused",
G_CALLBACK (appears_focused_changed), NULL);
data->raised_handler_id =
g_signal_connect (data->window, "raised",
G_CALLBACK (window_raised), NULL);
connect_window (data, surface->window);
}
else if (meta_xwayland_is_xwayland_surface (surface))
{
data->window_associated_handler_id =
g_signal_connect (surface->role, "window-associated",
G_CALLBACK (window_associated),
data);
}
else
{
@ -173,12 +209,24 @@ surface_constraint_data_free (MetaWaylandSurfacePointerConstraintsData *data)
g_object_remove_weak_pointer (G_OBJECT (data->window),
(gpointer *) &data->window);
}
else
{
g_signal_handler_disconnect (data->surface->role,
data->window_associated_handler_id);
}
g_list_free_full (data->pointer_constraints,
(GDestroyNotify) meta_wayland_pointer_constraint_destroy);
g_free (data);
}
static void
constrained_surface_destroyed (MetaWaylandSurface *surface,
MetaWaylandSurfacePointerConstraintsData *data)
{
surface_constraint_data_free (data);
}
static MetaWaylandSurfacePointerConstraintsData *
ensure_surface_constraints_data (MetaWaylandSurface *surface)
{
@ -188,10 +236,11 @@ ensure_surface_constraints_data (MetaWaylandSurface *surface)
if (!data)
{
data = surface_constraint_data_new (surface);
g_object_set_qdata_full (G_OBJECT (surface),
quark_surface_pointer_constraints_data,
data,
(GDestroyNotify) surface_constraint_data_free);
g_object_set_qdata (G_OBJECT (surface),
quark_surface_pointer_constraints_data,
data);
g_signal_connect (surface, "destroy",
G_CALLBACK (constrained_surface_destroyed), data);
}
return data;
@ -226,6 +275,22 @@ surface_remove_pointer_constraints (MetaWaylandSurface *surface,
}
}
static void
pointer_focus_surface_changed (MetaWaylandPointer *pointer,
MetaWaylandPointerConstraint *constraint)
{
MetaWindow *window = constraint->surface->window;
if (window)
{
MetaWaylandSeat *seat = meta_wayland_pointer_get_seat (pointer);
meta_wayland_pointer_constraint_maybe_remove_for_seat (seat, window);
}
meta_wayland_pointer_constraint_maybe_enable (constraint);
}
static MetaWaylandPointerConstraint *
meta_wayland_pointer_constraint_new (MetaWaylandSurface *surface,
MetaWaylandSeat *seat,
@ -256,6 +321,11 @@ meta_wayland_pointer_constraint_new (MetaWaylandSurface *su
constraint->region = NULL;
}
constraint->pointer_focus_surface_handler_id =
g_signal_connect (seat->pointer, "focus-surface-changed",
G_CALLBACK (pointer_focus_surface_changed),
constraint);
return constraint;
}
@ -329,7 +399,7 @@ meta_wayland_pointer_constraint_enable (MetaWaylandPointerConstraint *constraint
constraint->is_enabled = TRUE;
meta_wayland_pointer_constraint_notify_activated (constraint);
meta_wayland_pointer_start_grab (&constraint->seat->pointer,
meta_wayland_pointer_start_grab (constraint->seat->pointer,
&constraint->grab);
constraint->constraint =
@ -380,21 +450,58 @@ is_within_constraint_region (MetaWaylandPointerConstraint *constraint,
static void
meta_wayland_pointer_constraint_maybe_enable (MetaWaylandPointerConstraint *constraint)
{
MetaWindow *window;
wl_fixed_t sx, sy;
if (constraint->is_enabled)
return;
if (!constraint->surface->window)
if (constraint->seat->pointer->focus_surface != constraint->surface)
return;
window = constraint->surface->window;
if (!window)
{
g_warn_if_reached ();
/*
* Locks from Xwayland may come before we have had the opportunity to
* associate the X11 Window with the wl_surface.
*/
g_warn_if_fail (meta_xwayland_is_xwayland_surface (constraint->surface));
return;
}
if (!meta_window_appears_focused (constraint->surface->window))
if (window->unmanaging)
return;
meta_wayland_pointer_get_relative_coordinates (&constraint->seat->pointer,
if (meta_xwayland_is_xwayland_surface (constraint->surface))
{
MetaDisplay *display = meta_get_display ();
/*
* We need to handle Xwayland surfaces differently in order to allow
* Xwayland to be able to lock the pointer. For example, we cannot require
* the locked window to "appear focused" because the surface Xwayland
* locks might not be able to appear focused (for example it may be a
* override redirect window).
*
* Since we don't have any way to know what focused window an override
* redirect is associated with, nor have a way to know if the override
* redirect window even shares the same connection as a focused window,
* we simply can only really restrict it to enable the lock if any
* Xwayland window appears focused.
*/
if (display->focus_window &&
display->focus_window->client_type != META_WINDOW_CLIENT_TYPE_X11)
return;
}
else
{
if (!meta_window_appears_focused (window))
return;
}
meta_wayland_pointer_get_relative_coordinates (constraint->seat->pointer,
constraint->surface,
&sx, &sy);
if (!is_within_constraint_region (constraint, sx, sy))
@ -416,7 +523,7 @@ void
meta_wayland_pointer_constraint_maybe_remove_for_seat (MetaWaylandSeat *seat,
MetaWindow *window)
{
MetaWaylandPointer *pointer = &seat->pointer;
MetaWaylandPointer *pointer = seat->pointer;
MetaWaylandPointerConstraint *constraint;
if ((pointer->grab->interface != &confined_pointer_grab_interface &&
@ -454,6 +561,12 @@ meta_wayland_pointer_constraint_maybe_enable_for_window (MetaWindow *window)
MetaWaylandSurfacePointerConstraintsData *surface_data;
GList *l;
if (!surface)
{
g_warn_if_fail (window->client_type == META_WINDOW_CLIENT_TYPE_X11);
return;
}
surface_data = get_surface_constraints_data (surface);
if (!surface_data)
return;
@ -815,6 +928,7 @@ locked_pointer_grab_pointer_motion (MetaWaylandPointerGrab *grab,
const ClutterEvent *event)
{
meta_wayland_pointer_send_relative_motion (grab->pointer, event);
meta_wayland_pointer_broadcast_frame (grab->pointer);
}
static void
@ -966,6 +1080,18 @@ bind_pointer_constraints (struct wl_client *client,
NULL);
}
static void
meta_wayland_pointer_constraint_finalize (GObject *object)
{
MetaWaylandPointerConstraint *constraint =
META_WAYLAND_POINTER_CONSTRAINT (object);
g_signal_handler_disconnect (constraint->seat->pointer,
constraint->pointer_focus_surface_handler_id);
G_OBJECT_CLASS (meta_wayland_pointer_constraint_parent_class)->finalize (object);
}
void
meta_wayland_pointer_constraints_init (MetaWaylandCompositor *compositor)
{
@ -983,6 +1109,11 @@ meta_wayland_pointer_constraint_init (MetaWaylandPointerConstraint *constraint)
static void
meta_wayland_pointer_constraint_class_init (MetaWaylandPointerConstraintClass *klass)
{
GObjectClass *object_class;
object_class = G_OBJECT_CLASS (klass);
object_class->finalize = meta_wayland_pointer_constraint_finalize;
quark_pending_constraint_state =
g_quark_from_static_string ("-meta-wayland-pointer-constraint-pending_state");
quark_surface_pointer_constraints_data =

View File

@ -27,6 +27,7 @@
#include "meta-wayland-pointer-gesture-pinch.h"
#include "meta-wayland-pointer.h"
#include "meta-wayland-seat.h"
#include "meta-wayland-surface.h"
#include "pointer-gestures-unstable-v1-server-protocol.h"
@ -35,11 +36,13 @@ handle_pinch_begin (MetaWaylandPointer *pointer,
const ClutterEvent *event)
{
MetaWaylandPointerClient *pointer_client;
MetaWaylandSeat *seat;
struct wl_resource *resource;
uint32_t serial;
pointer_client = pointer->focus_client;
serial = wl_display_next_serial (pointer->display);
seat = meta_wayland_pointer_get_seat (pointer);
serial = wl_display_next_serial (seat->wl_display);
wl_resource_for_each (resource, &pointer_client->pinch_gesture_resources)
{
@ -79,12 +82,14 @@ handle_pinch_end (MetaWaylandPointer *pointer,
const ClutterEvent *event)
{
MetaWaylandPointerClient *pointer_client;
MetaWaylandSeat *seat;
struct wl_resource *resource;
gboolean cancelled = FALSE;
uint32_t serial;
pointer_client = pointer->focus_client;
serial = wl_display_next_serial (pointer->display);
seat = meta_wayland_pointer_get_seat (pointer);
serial = wl_display_next_serial (seat->wl_display);
if (event->touchpad_pinch.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
cancelled = TRUE;

View File

@ -27,6 +27,7 @@
#include "meta-wayland-pointer-gesture-swipe.h"
#include "meta-wayland-pointer.h"
#include "meta-wayland-seat.h"
#include "meta-wayland-surface.h"
#include "pointer-gestures-unstable-v1-server-protocol.h"
@ -35,11 +36,13 @@ handle_swipe_begin (MetaWaylandPointer *pointer,
const ClutterEvent *event)
{
MetaWaylandPointerClient *pointer_client;
MetaWaylandSeat *seat;
struct wl_resource *resource;
uint32_t serial, fingers;
pointer_client = pointer->focus_client;
serial = wl_display_next_serial (pointer->display);
seat = meta_wayland_pointer_get_seat (pointer);
serial = wl_display_next_serial (seat->wl_display);
fingers = clutter_event_get_gesture_swipe_finger_count (event);
wl_resource_for_each (resource, &pointer_client->swipe_gesture_resources)
@ -76,12 +79,14 @@ handle_swipe_end (MetaWaylandPointer *pointer,
const ClutterEvent *event)
{
MetaWaylandPointerClient *pointer_client;
MetaWaylandSeat *seat;
struct wl_resource *resource;
gboolean cancelled = FALSE;
uint32_t serial;
pointer_client = pointer->focus_client;
serial = wl_display_next_serial (pointer->display);
seat = meta_wayland_pointer_get_seat (pointer);
serial = wl_display_next_serial (seat->wl_display);
if (event->touchpad_swipe.phase == CLUTTER_TOUCHPAD_GESTURE_PHASE_CANCEL)
cancelled = TRUE;

View File

@ -52,6 +52,7 @@
#include "meta-wayland-pointer.h"
#include "meta-wayland-popup.h"
#include "meta-wayland-private.h"
#include "meta-wayland-seat.h"
#include "meta-wayland-surface.h"
#include "meta-wayland-buffer.h"
#include "meta-wayland-surface-role-cursor.h"
@ -74,6 +75,17 @@
#define DEFAULT_AXIS_STEP_DISTANCE wl_fixed_from_int (10)
enum {
FOCUS_SURFACE_CHANGED,
LAST_SIGNAL
};
static guint signals[LAST_SIGNAL];
G_DEFINE_TYPE (MetaWaylandPointer, meta_wayland_pointer,
META_TYPE_WAYLAND_INPUT_DEVICE)
static MetaWaylandPointerClient *
meta_wayland_pointer_client_new (void)
{
@ -244,7 +256,7 @@ meta_wayland_pointer_send_frame (MetaWaylandPointer *pointer,
wl_pointer_send_frame (resource);
}
static void
void
meta_wayland_pointer_broadcast_frame (MetaWaylandPointer *pointer)
{
struct wl_resource *resource;
@ -444,16 +456,11 @@ meta_wayland_pointer_on_cursor_changed (MetaCursorTracker *cursor_tracker,
}
void
meta_wayland_pointer_init (MetaWaylandPointer *pointer,
struct wl_display *display)
meta_wayland_pointer_enable (MetaWaylandPointer *pointer)
{
MetaCursorTracker *cursor_tracker = meta_cursor_tracker_get_for_screen (NULL);
ClutterDeviceManager *manager;
memset (pointer, 0, sizeof *pointer);
pointer->display = display;
pointer->pointer_clients =
g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) meta_wayland_pointer_client_free);
@ -462,10 +469,6 @@ meta_wayland_pointer_init (MetaWaylandPointer *pointer,
pointer->cursor_surface = NULL;
pointer->default_grab.interface = &default_pointer_grab_interface;
pointer->default_grab.pointer = pointer;
pointer->grab = &pointer->default_grab;
manager = clutter_device_manager_get_default ();
pointer->device = clutter_device_manager_get_core_device (manager, CLUTTER_POINTER_DEVICE);
@ -476,7 +479,7 @@ meta_wayland_pointer_init (MetaWaylandPointer *pointer,
}
void
meta_wayland_pointer_release (MetaWaylandPointer *pointer)
meta_wayland_pointer_disable (MetaWaylandPointer *pointer)
{
MetaCursorTracker *cursor_tracker = meta_cursor_tracker_get_for_screen (NULL);
@ -490,10 +493,9 @@ meta_wayland_pointer_release (MetaWaylandPointer *pointer)
pointer->cursor_surface_destroy_id);
}
meta_wayland_pointer_set_focus (pointer, NULL);
meta_wayland_pointer_end_grab (pointer);
g_clear_pointer (&pointer->pointer_clients, g_hash_table_unref);
pointer->display = NULL;
pointer->cursor_surface = NULL;
}
@ -579,7 +581,11 @@ handle_button_event (MetaWaylandPointer *pointer,
pointer->grab->interface->button (pointer->grab, event);
if (implicit_grab)
pointer->grab_serial = wl_display_get_serial (pointer->display);
{
MetaWaylandSeat *seat = meta_wayland_pointer_get_seat (pointer);
pointer->grab_serial = wl_display_get_serial (seat->wl_display);
}
}
static void
@ -786,7 +792,9 @@ void
meta_wayland_pointer_set_focus (MetaWaylandPointer *pointer,
MetaWaylandSurface *surface)
{
if (pointer->display == NULL)
MetaWaylandSeat *seat = meta_wayland_pointer_get_seat (pointer);
if (!meta_wayland_seat_has_pointer (seat))
return;
if (pointer->focus_surface == surface)
@ -842,6 +850,8 @@ meta_wayland_pointer_set_focus (MetaWaylandPointer *pointer,
}
meta_wayland_pointer_update_cursor_surface (pointer);
g_signal_emit (pointer, signals[FOCUS_SURFACE_CHANGED], 0);
}
void
@ -1005,7 +1015,8 @@ pointer_set_cursor (struct wl_client *client,
if (surface &&
!meta_wayland_surface_assign_role (surface,
META_TYPE_WAYLAND_SURFACE_ROLE_CURSOR))
META_TYPE_WAYLAND_SURFACE_ROLE_CURSOR,
NULL))
{
wl_resource_post_error (resource, WL_POINTER_ERROR_ROLE,
"wl_surface@%d already has a different role",
@ -1193,6 +1204,26 @@ meta_wayland_relative_pointer_init (MetaWaylandCompositor *compositor)
MetaWaylandSeat *
meta_wayland_pointer_get_seat (MetaWaylandPointer *pointer)
{
MetaWaylandSeat *seat = wl_container_of (pointer, seat, pointer);
return seat;
MetaWaylandInputDevice *input_device = META_WAYLAND_INPUT_DEVICE (pointer);
return meta_wayland_input_device_get_seat (input_device);
}
static void
meta_wayland_pointer_init (MetaWaylandPointer *pointer)
{
pointer->default_grab.interface = &default_pointer_grab_interface;
pointer->default_grab.pointer = pointer;
pointer->grab = &pointer->default_grab;
}
static void
meta_wayland_pointer_class_init (MetaWaylandPointerClass *klass)
{
signals[FOCUS_SURFACE_CHANGED] = g_signal_new ("focus-surface-changed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
}

View File

@ -25,6 +25,7 @@
#include <glib.h>
#include "meta-wayland-types.h"
#include "meta-wayland-seat.h"
#include "meta-wayland-pointer-gesture-swipe.h"
#include "meta-wayland-pointer-gesture-pinch.h"
#include "meta-wayland-surface.h"
@ -32,6 +33,11 @@
#include <meta/meta-cursor-tracker.h>
#define META_TYPE_WAYLAND_POINTER (meta_wayland_pointer_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandPointer, meta_wayland_pointer,
META, WAYLAND_POINTER,
MetaWaylandInputDevice)
struct _MetaWaylandPointerGrabInterface
{
void (*focus) (MetaWaylandPointerGrab *grab,
@ -58,7 +64,7 @@ struct _MetaWaylandPointerClient
struct _MetaWaylandPointer
{
struct wl_display *display;
MetaWaylandInputDevice parent;
MetaWaylandPointerClient *focus_client;
GHashTable *pointer_clients;
@ -84,10 +90,9 @@ struct _MetaWaylandPointer
guint32 button_count;
};
void meta_wayland_pointer_init (MetaWaylandPointer *pointer,
struct wl_display *display);
void meta_wayland_pointer_enable (MetaWaylandPointer *pointer);
void meta_wayland_pointer_release (MetaWaylandPointer *pointer);
void meta_wayland_pointer_disable (MetaWaylandPointer *pointer);
void meta_wayland_pointer_update (MetaWaylandPointer *pointer,
const ClutterEvent *event);
@ -104,6 +109,8 @@ void meta_wayland_pointer_send_relative_motion (MetaWaylandPointer *pointer,
void meta_wayland_pointer_send_button (MetaWaylandPointer *pointer,
const ClutterEvent *event);
void meta_wayland_pointer_broadcast_frame (MetaWaylandPointer *pointer);
void meta_wayland_pointer_set_focus (MetaWaylandPointer *pointer,
MetaWaylandSurface *surface);

View File

@ -242,7 +242,20 @@ meta_wayland_popup_dismiss (MetaWaylandPopup *popup)
meta_wayland_popup_destroy (popup);
if (wl_list_empty (&popup_grab->all_popups))
meta_wayland_pointer_end_popup_grab (popup_grab->generic.pointer);
{
meta_wayland_pointer_end_popup_grab (popup_grab->generic.pointer);
}
else
{
MetaWaylandSurface *top_popup_surface;
MetaWaylandSeat *seat;
MetaWaylandKeyboard *keyboard;
top_popup_surface = meta_wayland_popup_grab_get_top_popup (popup_grab);
seat = meta_wayland_pointer_get_seat (popup_grab->generic.pointer);
keyboard = seat->keyboard;
meta_wayland_keyboard_set_focus (keyboard, top_popup_surface);
}
}
MetaWaylandSurface *
@ -258,6 +271,8 @@ meta_wayland_popup_create (MetaWaylandPopupSurface *popup_surface,
MetaWaylandSurface *surface =
meta_wayland_popup_surface_get_surface (popup_surface);
MetaWaylandPopup *popup;
MetaWaylandSeat *seat;
MetaWaylandKeyboard *keyboard;
/* Don't allow creating popups if the grab has a different client. */
if (grab->grab_client != wl_resource_get_client (surface->resource))
@ -269,5 +284,9 @@ meta_wayland_popup_create (MetaWaylandPopupSurface *popup_surface,
wl_list_insert (&grab->all_popups, &popup->link);
seat = meta_wayland_pointer_get_seat (grab->generic.pointer);
keyboard = seat->keyboard;
meta_wayland_keyboard_set_focus (keyboard, surface);
return popup;
}

View File

@ -43,7 +43,7 @@ seat_get_pointer (struct wl_client *client,
uint32_t id)
{
MetaWaylandSeat *seat = wl_resource_get_user_data (resource);
MetaWaylandPointer *pointer = &seat->pointer;
MetaWaylandPointer *pointer = seat->pointer;
if ((seat->capabilities & WL_SEAT_CAPABILITY_POINTER) != 0)
meta_wayland_pointer_create_new_resource (pointer, client, resource, id);
@ -55,7 +55,7 @@ seat_get_keyboard (struct wl_client *client,
uint32_t id)
{
MetaWaylandSeat *seat = wl_resource_get_user_data (resource);
MetaWaylandKeyboard *keyboard = &seat->keyboard;
MetaWaylandKeyboard *keyboard = seat->keyboard;
if ((seat->capabilities & WL_SEAT_CAPABILITY_KEYBOARD) != 0)
meta_wayland_keyboard_create_new_resource (keyboard, client, resource, id);
@ -67,7 +67,7 @@ seat_get_touch (struct wl_client *client,
uint32_t id)
{
MetaWaylandSeat *seat = wl_resource_get_user_data (resource);
MetaWaylandTouch *touch = &seat->touch;
MetaWaylandTouch *touch = seat->touch;
if ((seat->capabilities & WL_SEAT_CAPABILITY_TOUCH) != 0)
meta_wayland_touch_create_new_resource (touch, client, resource, id);
@ -157,15 +157,15 @@ meta_wayland_seat_set_capabilities (MetaWaylandSeat *seat,
seat->capabilities = flags;
if (CAPABILITY_ENABLED (prev_flags, flags, WL_SEAT_CAPABILITY_POINTER))
meta_wayland_pointer_init (&seat->pointer, seat->wl_display);
meta_wayland_pointer_enable (seat->pointer);
else if (CAPABILITY_DISABLED (prev_flags, flags, WL_SEAT_CAPABILITY_POINTER))
meta_wayland_pointer_release (&seat->pointer);
meta_wayland_pointer_disable (seat->pointer);
if (CAPABILITY_ENABLED (prev_flags, flags, WL_SEAT_CAPABILITY_KEYBOARD))
{
MetaDisplay *display;
meta_wayland_keyboard_init (&seat->keyboard, seat->wl_display);
meta_wayland_keyboard_enable (seat->keyboard);
display = meta_get_display ();
/* Post-initialization, ensure the input focus is in sync */
@ -173,12 +173,12 @@ meta_wayland_seat_set_capabilities (MetaWaylandSeat *seat,
meta_display_sync_wayland_input_focus (display);
}
else if (CAPABILITY_DISABLED (prev_flags, flags, WL_SEAT_CAPABILITY_KEYBOARD))
meta_wayland_keyboard_release (&seat->keyboard);
meta_wayland_keyboard_disable (seat->keyboard);
if (CAPABILITY_ENABLED (prev_flags, flags, WL_SEAT_CAPABILITY_TOUCH))
meta_wayland_touch_init (&seat->touch, seat->wl_display);
meta_wayland_touch_enable (seat->touch);
else if (CAPABILITY_DISABLED (prev_flags, flags, WL_SEAT_CAPABILITY_TOUCH))
meta_wayland_touch_release (&seat->touch);
meta_wayland_touch_disable (seat->touch);
/* Broadcast capability changes */
wl_resource_for_each (resource, &seat->base_resource_list)
@ -215,6 +215,16 @@ meta_wayland_seat_new (MetaWaylandCompositor *compositor,
wl_list_init (&seat->base_resource_list);
seat->wl_display = display;
seat->pointer = g_object_new (META_TYPE_WAYLAND_POINTER,
"seat", seat,
NULL);
seat->keyboard = g_object_new (META_TYPE_WAYLAND_KEYBOARD,
"seat", seat,
NULL);
seat->touch = g_object_new (META_TYPE_WAYLAND_TOUCH,
"seat", seat,
NULL);
meta_wayland_data_device_init (&seat->data_device);
device_manager = clutter_device_manager_get_default ();
@ -247,6 +257,10 @@ meta_wayland_seat_free (MetaWaylandSeat *seat)
g_signal_handlers_disconnect_by_data (device_manager, seat);
meta_wayland_seat_set_capabilities (seat, 0);
g_object_unref (seat->pointer);
g_object_unref (seat->keyboard);
g_object_unref (seat->touch);
g_slice_free (MetaWaylandSeat, seat);
}
@ -305,18 +319,21 @@ meta_wayland_seat_update (MetaWaylandSeat *seat,
case CLUTTER_BUTTON_PRESS:
case CLUTTER_BUTTON_RELEASE:
case CLUTTER_SCROLL:
meta_wayland_pointer_update (&seat->pointer, event);
if (seat->capabilities & WL_SEAT_CAPABILITY_POINTER)
meta_wayland_pointer_update (seat->pointer, event);
break;
case CLUTTER_KEY_PRESS:
case CLUTTER_KEY_RELEASE:
meta_wayland_keyboard_update (&seat->keyboard, (const ClutterKeyEvent *) event);
if (seat->capabilities & WL_SEAT_CAPABILITY_KEYBOARD)
meta_wayland_keyboard_update (seat->keyboard, (const ClutterKeyEvent *) event);
break;
case CLUTTER_TOUCH_BEGIN:
case CLUTTER_TOUCH_UPDATE:
case CLUTTER_TOUCH_END:
meta_wayland_touch_update (&seat->touch, event);
if (seat->capabilities & WL_SEAT_CAPABILITY_TOUCH)
meta_wayland_touch_update (seat->touch, event);
break;
default:
@ -339,16 +356,19 @@ meta_wayland_seat_handle_event (MetaWaylandSeat *seat,
case CLUTTER_SCROLL:
case CLUTTER_TOUCHPAD_SWIPE:
case CLUTTER_TOUCHPAD_PINCH:
return meta_wayland_pointer_handle_event (&seat->pointer, event);
if (seat->capabilities & WL_SEAT_CAPABILITY_POINTER)
return meta_wayland_pointer_handle_event (seat->pointer, event);
case CLUTTER_KEY_PRESS:
case CLUTTER_KEY_RELEASE:
return meta_wayland_keyboard_handle_event (&seat->keyboard,
(const ClutterKeyEvent *) event);
if (seat->capabilities & WL_SEAT_CAPABILITY_KEYBOARD)
return meta_wayland_keyboard_handle_event (seat->keyboard,
(const ClutterKeyEvent *) event);
case CLUTTER_TOUCH_BEGIN:
case CLUTTER_TOUCH_UPDATE:
case CLUTTER_TOUCH_END:
return meta_wayland_touch_handle_event (&seat->touch, event);
if (seat->capabilities & WL_SEAT_CAPABILITY_TOUCH)
return meta_wayland_touch_handle_event (seat->touch, event);
default:
break;
@ -363,7 +383,7 @@ meta_wayland_seat_repick (MetaWaylandSeat *seat)
if ((seat->capabilities & WL_SEAT_CAPABILITY_POINTER) == 0)
return;
meta_wayland_pointer_repick (&seat->pointer);
meta_wayland_pointer_repick (seat->pointer);
}
void
@ -375,7 +395,7 @@ meta_wayland_seat_set_input_focus (MetaWaylandSeat *seat,
if ((seat->capabilities & WL_SEAT_CAPABILITY_KEYBOARD) != 0)
{
meta_wayland_keyboard_set_focus (&seat->keyboard, surface);
meta_wayland_keyboard_set_focus (seat->keyboard, surface);
meta_wayland_data_device_set_keyboard_focus (&seat->data_device);
}
@ -395,24 +415,28 @@ meta_wayland_seat_get_grab_info (MetaWaylandSeat *seat,
gboolean can_grab_surface = FALSE;
if ((seat->capabilities & WL_SEAT_CAPABILITY_TOUCH) != 0)
sequence = meta_wayland_touch_find_grab_sequence (&seat->touch, surface, serial);
sequence = meta_wayland_touch_find_grab_sequence (seat->touch,
surface,
serial);
if (sequence)
{
meta_wayland_touch_get_press_coords (&seat->touch, sequence, x, y);
meta_wayland_touch_get_press_coords (seat->touch, sequence, x, y);
}
else
{
if ((seat->capabilities & WL_SEAT_CAPABILITY_POINTER) != 0 &&
(!require_pressed || seat->pointer.button_count > 0))
can_grab_surface = meta_wayland_pointer_can_grab_surface (&seat->pointer, surface, serial);
(!require_pressed || seat->pointer->button_count > 0))
can_grab_surface = meta_wayland_pointer_can_grab_surface (seat->pointer,
surface,
serial);
if (can_grab_surface)
{
if (x)
*x = seat->pointer.grab_x;
*x = seat->pointer->grab_x;
if (y)
*y = seat->pointer.grab_y;
*y = seat->pointer->grab_y;
}
}
@ -423,7 +447,25 @@ gboolean
meta_wayland_seat_can_popup (MetaWaylandSeat *seat,
uint32_t serial)
{
return (meta_wayland_pointer_can_popup (&seat->pointer, serial) ||
meta_wayland_keyboard_can_popup (&seat->keyboard, serial) ||
meta_wayland_touch_can_popup (&seat->touch, serial));
return (meta_wayland_pointer_can_popup (seat->pointer, serial) ||
meta_wayland_keyboard_can_popup (seat->keyboard, serial) ||
meta_wayland_touch_can_popup (seat->touch, serial));
}
gboolean
meta_wayland_seat_has_keyboard (MetaWaylandSeat *seat)
{
return (seat->capabilities & WL_SEAT_CAPABILITY_KEYBOARD) != 0;
}
gboolean
meta_wayland_seat_has_pointer (MetaWaylandSeat *seat)
{
return (seat->capabilities & WL_SEAT_CAPABILITY_POINTER) != 0;
}
gboolean
meta_wayland_seat_has_touch (MetaWaylandSeat *seat)
{
return (seat->capabilities & WL_SEAT_CAPABILITY_TOUCH) != 0;
}

View File

@ -26,6 +26,7 @@
#include <clutter/clutter.h>
#include "meta-wayland-types.h"
#include "meta-wayland-input-device.h"
#include "meta-wayland-pointer.h"
#include "meta-wayland-keyboard.h"
#include "meta-wayland-touch.h"
@ -36,9 +37,10 @@ struct _MetaWaylandSeat
struct wl_list base_resource_list;
struct wl_display *wl_display;
MetaWaylandPointer pointer;
MetaWaylandKeyboard keyboard;
MetaWaylandTouch touch;
MetaWaylandPointer *pointer;
MetaWaylandKeyboard *keyboard;
MetaWaylandTouch *touch;
MetaWaylandDataDevice data_device;
guint capabilities;
@ -68,4 +70,10 @@ gboolean meta_wayland_seat_get_grab_info (MetaWaylandSeat *seat,
gboolean meta_wayland_seat_can_popup (MetaWaylandSeat *seat,
uint32_t serial);
gboolean meta_wayland_seat_has_keyboard (MetaWaylandSeat *seat);
gboolean meta_wayland_seat_has_pointer (MetaWaylandSeat *seat);
gboolean meta_wayland_seat_has_touch (MetaWaylandSeat *seat);
#endif /* META_WAYLAND_SEAT_H */

View File

@ -27,6 +27,7 @@
#include "meta-wayland-buffer.h"
#include "meta-xwayland.h"
#include "screen-private.h"
#include "meta-wayland-private.h"
typedef struct _MetaWaylandSurfaceRoleCursorPrivate MetaWaylandSurfaceRoleCursorPrivate;
@ -37,6 +38,8 @@ struct _MetaWaylandSurfaceRoleCursorPrivate
MetaCursorSprite *cursor_sprite;
MetaCursorRenderer *cursor_renderer;
MetaWaylandBuffer *buffer;
struct wl_list frame_callbacks;
gulong cursor_painted_handler_id;
};
G_DEFINE_TYPE_WITH_PRIVATE (MetaWaylandSurfaceRoleCursor,
@ -110,21 +113,16 @@ cursor_sprite_prepare_at (MetaCursorSprite *cursor_sprite,
static void
cursor_surface_role_assigned (MetaWaylandSurfaceRole *surface_role)
{
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandSurfaceRoleCursor *cursor_role =
META_WAYLAND_SURFACE_ROLE_CURSOR (surface_role);
MetaWaylandSurfaceRoleCursorPrivate *priv =
meta_wayland_surface_role_cursor_get_instance_private (cursor_role);
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandBuffer *buffer = meta_wayland_surface_get_buffer (surface);
if (buffer)
{
g_set_object (&priv->buffer, buffer);
meta_wayland_surface_ref_buffer_use_count (surface);
}
meta_wayland_surface_queue_pending_frame_callbacks (surface);
wl_list_insert_list (&priv->frame_callbacks,
&surface->pending_frame_callback_list);
wl_list_init (&surface->pending_frame_callback_list);
}
static void
@ -164,7 +162,9 @@ cursor_surface_role_commit (MetaWaylandSurfaceRole *surface_role,
meta_wayland_surface_ref_buffer_use_count (surface);
}
meta_wayland_surface_queue_pending_state_frame_callbacks (surface, pending);
wl_list_insert_list (&priv->frame_callbacks,
&pending->frame_callback_list);
wl_list_init (&pending->frame_callback_list);
if (pending->newly_attached)
update_cursor_sprite_texture (META_WAYLAND_SURFACE_ROLE_CURSOR (surface_role));
@ -196,6 +196,10 @@ cursor_surface_role_dispose (GObject *object)
meta_wayland_surface_role_cursor_get_instance_private (cursor_role);
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (META_WAYLAND_SURFACE_ROLE (object));
MetaWaylandFrameCallback *cb, *next;
wl_list_for_each_safe (cb, next, &priv->frame_callbacks, link)
wl_resource_destroy (cb->resource);
g_signal_handlers_disconnect_by_func (priv->cursor_sprite,
cursor_sprite_prepare_at, cursor_role);
@ -212,6 +216,30 @@ cursor_surface_role_dispose (GObject *object)
G_OBJECT_CLASS (meta_wayland_surface_role_cursor_parent_class)->dispose (object);
}
static void
cursor_surface_role_constructed (GObject *object)
{
MetaWaylandSurfaceRoleCursor *cursor_role =
META_WAYLAND_SURFACE_ROLE_CURSOR (object);
MetaWaylandSurfaceRoleCursorPrivate *priv =
meta_wayland_surface_role_cursor_get_instance_private (cursor_role);
MetaWaylandSurfaceRole *surface_role =
META_WAYLAND_SURFACE_ROLE (cursor_role);
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandBuffer *buffer;
buffer = meta_wayland_surface_get_buffer (surface);
g_warn_if_fail (!buffer || buffer->resource);
if (buffer && buffer->resource)
{
g_set_object (&priv->buffer, buffer);
meta_wayland_surface_ref_buffer_use_count (surface);
}
}
static void
meta_wayland_surface_role_cursor_init (MetaWaylandSurfaceRoleCursor *role)
{
@ -224,6 +252,7 @@ meta_wayland_surface_role_cursor_init (MetaWaylandSurfaceRoleCursor *role)
G_CALLBACK (cursor_sprite_prepare_at),
role,
0);
wl_list_init (&priv->frame_callbacks);
}
static void
@ -238,6 +267,7 @@ meta_wayland_surface_role_cursor_class_init (MetaWaylandSurfaceRoleCursorClass *
surface_role_class->commit = cursor_surface_role_commit;
surface_role_class->is_on_output = cursor_surface_role_is_on_output;
object_class->constructed = cursor_surface_role_constructed;
object_class->dispose = cursor_surface_role_dispose;
}
@ -281,6 +311,28 @@ meta_wayland_surface_role_cursor_get_hotspot (MetaWaylandSurfaceRoleCursor *curs
*hotspot_y = priv->hot_y;
}
static void
on_cursor_painted (MetaCursorRenderer *renderer,
MetaCursorSprite *displayed_sprite,
MetaWaylandSurfaceRoleCursor *cursor_role)
{
MetaWaylandSurfaceRoleCursorPrivate *priv =
meta_wayland_surface_role_cursor_get_instance_private (cursor_role);
guint32 time = (guint32) (g_get_monotonic_time () / 1000);
if (displayed_sprite != priv->cursor_sprite)
return;
while (!wl_list_empty (&priv->frame_callbacks))
{
MetaWaylandFrameCallback *callback =
wl_container_of (priv->frame_callbacks.next, callback, link);
wl_callback_send_done (callback->resource, time);
wl_resource_destroy (callback->resource);
}
}
void
meta_wayland_surface_role_cursor_set_renderer (MetaWaylandSurfaceRoleCursor *cursor_role,
MetaCursorRenderer *renderer)
@ -291,10 +343,20 @@ meta_wayland_surface_role_cursor_set_renderer (MetaWaylandSurfaceRoleCursor *cur
if (priv->cursor_renderer == renderer)
return;
if (renderer)
g_object_ref (renderer);
if (priv->cursor_renderer)
g_object_unref (priv->cursor_renderer);
{
g_signal_handler_disconnect (priv->cursor_renderer,
priv->cursor_painted_handler_id);
priv->cursor_painted_handler_id = 0;
g_object_unref (priv->cursor_renderer);
}
if (renderer)
{
priv->cursor_painted_handler_id =
g_signal_connect_object (renderer, "cursor-painted",
G_CALLBACK (on_cursor_painted), cursor_role, 0);
g_object_ref (renderer);
}
priv->cursor_renderer = renderer;
update_cursor_sprite_texture (cursor_role);

View File

@ -29,8 +29,8 @@
#include <clutter/wayland/clutter-wayland-surface.h>
#include <cogl/cogl-wayland-server.h>
#include <gobject/gvaluecollector.h>
#include <wayland-server.h>
#include "gtk-shell-server-protocol.h"
#include "meta-wayland-private.h"
#include "meta-xwayland-private.h"
@ -43,12 +43,12 @@
#include "meta-wayland-outputs.h"
#include "meta-wayland-xdg-shell.h"
#include "meta-wayland-wl-shell.h"
#include "meta-wayland-gtk-shell.h"
#include "meta-cursor-tracker-private.h"
#include "display-private.h"
#include "window-private.h"
#include "meta-window-wayland.h"
#include "bell.h"
#include "compositor/region-utils.h"
@ -62,6 +62,13 @@ enum {
PENDING_STATE_SIGNAL_LAST_SIGNAL
};
enum
{
SURFACE_ROLE_PROP_0,
SURFACE_ROLE_PROP_SURFACE,
};
static guint pending_state_signals[PENDING_STATE_SIGNAL_LAST_SIGNAL];
typedef struct _MetaWaylandSurfaceRolePrivate
@ -102,7 +109,7 @@ G_DEFINE_TYPE (MetaWaylandPendingState,
struct _MetaWaylandSurfaceRoleSubsurface
{
MetaWaylandSurfaceRole parent;
MetaWaylandSurfaceRoleActorSurface parent;
};
G_DEFINE_TYPE (MetaWaylandSurfaceRoleSubsurface,
@ -121,6 +128,7 @@ G_DEFINE_TYPE (MetaWaylandSurfaceRoleDND,
enum {
SURFACE_DESTROY,
SURFACE_UNMAPPED,
SURFACE_CONFIGURE,
N_SURFACE_SIGNALS
};
@ -146,6 +154,8 @@ meta_wayland_surface_role_get_toplevel (MetaWaylandSurfaceRole *surface_role);
static void
meta_wayland_surface_role_shell_surface_configure (MetaWaylandSurfaceRoleShellSurface *shell_surface_role,
int new_x,
int new_y,
int new_width,
int new_height,
MetaWaylandSerial *sent_serial);
@ -161,18 +171,92 @@ static void
meta_wayland_surface_role_shell_surface_managed (MetaWaylandSurfaceRoleShellSurface *shell_surface_role,
MetaWindow *window);
static void
unset_param_value (GParameter *param)
{
g_value_unset (&param->value);
}
static GArray *
role_assignment_valist_to_params (GType role_type,
const char *first_property_name,
va_list var_args)
{
GObjectClass *object_class;
const char *property_name = first_property_name;
GArray *params;
object_class = g_type_class_ref (role_type);
params = g_array_new (FALSE, FALSE, sizeof (GParameter));
g_array_set_clear_func (params, (GDestroyNotify) unset_param_value);
while (property_name)
{
GParameter param = {
.name = property_name,
.value = G_VALUE_INIT
};
GParamSpec *pspec;
GType ptype;
gchar *error = NULL;
pspec = g_object_class_find_property (object_class,
property_name);
g_assert (pspec);
ptype = G_PARAM_SPEC_VALUE_TYPE (pspec);
G_VALUE_COLLECT_INIT (&param.value, ptype, var_args, 0, &error);
g_assert (!error);
g_array_append_val (params, param);
property_name = va_arg (var_args, const char *);
}
g_type_class_unref (object_class);
return params;
}
gboolean
meta_wayland_surface_assign_role (MetaWaylandSurface *surface,
GType role_type)
GType role_type,
const char *first_property_name,
...)
{
va_list var_args;
if (!surface->role)
{
MetaWaylandSurfaceRolePrivate *role_priv;
if (first_property_name)
{
GArray *params;
GParameter param;
surface->role = g_object_new (role_type, NULL);
role_priv =
meta_wayland_surface_role_get_instance_private (surface->role);
role_priv->surface = surface;
va_start (var_args, first_property_name);
params = role_assignment_valist_to_params (role_type,
first_property_name,
var_args);
va_end (var_args);
param = (GParameter) {
.name = "surface",
.value = G_VALUE_INIT
};
g_value_init (&param.value, META_TYPE_WAYLAND_SURFACE);
g_value_set_object (&param.value, surface);
g_array_append_val (params, param);
surface->role = g_object_newv (role_type, params->len,
(GParameter *) params->data);
g_array_unref (params);
}
else
{
surface->role = g_object_new (role_type, "surface", surface, NULL);
}
meta_wayland_surface_role_assigned (surface->role);
@ -191,6 +275,13 @@ meta_wayland_surface_assign_role (MetaWaylandSurface *surface,
}
else
{
va_start (var_args, first_property_name);
g_object_set_valist (G_OBJECT (surface->role),
first_property_name, var_args);
va_end (var_args);
meta_wayland_surface_role_assigned (surface->role);
return TRUE;
}
}
@ -362,22 +453,6 @@ queue_surface_actor_frame_callbacks (MetaWaylandSurface *surface,
wl_list_init (&pending->frame_callback_list);
}
void
meta_wayland_surface_apply_window_state (MetaWaylandSurface *surface,
MetaWaylandPendingState *pending)
{
MetaSurfaceActorWayland *actor =
META_SURFACE_ACTOR_WAYLAND (surface->surface_actor);
MetaWindow *window = surface->window;
MetaWaylandBuffer *buffer = surface->buffer_ref.buffer;
CoglTexture *texture = buffer->texture;
double scale;
scale = meta_surface_actor_wayland_get_scale (actor);
window->buffer_rect.width = cogl_texture_get_width (texture) * scale;
window->buffer_rect.height = cogl_texture_get_height (texture) * scale;
}
static void
pending_buffer_resource_destroyed (MetaWaylandBuffer *buffer,
MetaWaylandPendingState *pending)
@ -404,6 +479,8 @@ pending_state_init (MetaWaylandPendingState *state)
wl_list_init (&state->frame_callback_list);
state->has_new_geometry = FALSE;
state->has_new_min_size = FALSE;
state->has_new_max_size = FALSE;
}
static void
@ -448,6 +525,12 @@ move_pending_state (MetaWaylandPendingState *from,
to->opaque_region_set = from->opaque_region_set;
to->new_geometry = from->new_geometry;
to->has_new_geometry = from->has_new_geometry;
to->has_new_min_size = from->has_new_min_size;
to->new_min_width = from->new_min_width;
to->new_min_height = from->new_min_height;
to->has_new_max_size = from->has_new_max_size;
to->new_max_width = from->new_max_width;
to->new_max_height = from->new_max_height;
wl_list_init (&to->frame_callback_list);
wl_list_insert_list (&to->frame_callback_list, &from->frame_callback_list);
@ -499,12 +582,15 @@ static void
subsurface_role_commit (MetaWaylandSurfaceRole *surface_role,
MetaWaylandPendingState *pending)
{
MetaWaylandSurfaceRoleClass *surface_role_class;
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaSurfaceActorWayland *surface_actor =
META_SURFACE_ACTOR_WAYLAND (surface->surface_actor);
queue_surface_actor_frame_callbacks (surface, pending);
surface_role_class =
META_WAYLAND_SURFACE_ROLE_CLASS (meta_wayland_surface_role_subsurface_parent_class);
surface_role_class->commit (surface_role, pending);
if (surface->buffer_ref.buffer != NULL)
clutter_actor_show (CLUTTER_ACTOR (surface_actor));
@ -519,7 +605,10 @@ subsurface_role_get_toplevel (MetaWaylandSurfaceRole *surface_role)
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandSurface *parent = surface->sub.parent;
return meta_wayland_surface_role_get_toplevel (parent->role);
if (parent->role)
return meta_wayland_surface_role_get_toplevel (parent->role);
else
return NULL;
}
/* A non-subsurface is always desynchronized.
@ -654,6 +743,14 @@ apply_pending_state (MetaWaylandSurface *surface,
CoglTexture *texture;
texture = meta_wayland_buffer_ensure_texture (pending->buffer);
if (!texture)
{
wl_resource_post_error (surface->resource, WL_DISPLAY_ERROR_NO_MEMORY,
"Failed to create a texture for surface %i",
wl_resource_get_id (surface->resource));
goto cleanup;
}
meta_surface_actor_wayland_set_texture (surface_actor_wayland,
texture);
}
@ -723,6 +820,7 @@ apply_pending_state (MetaWaylandSurface *surface,
}
}
cleanup:
/* If we have a buffer that we are not using, decrease the use count so it may
* be released if no-one else has a use-reference to it.
*/
@ -1118,6 +1216,8 @@ wl_surface_destructor (struct wl_resource *resource)
MetaWaylandCompositor *compositor = surface->compositor;
MetaWaylandFrameCallback *cb, *next;
g_signal_emit (surface, surface_signals[SURFACE_DESTROY], 0);
g_clear_object (&surface->role);
/* If we still have a window at the time of destruction, that means that
@ -1158,8 +1258,6 @@ wl_surface_destructor (struct wl_resource *resource)
if (surface->wl_subsurface)
wl_resource_destroy (surface->wl_subsurface);
if (surface->gtk_surface)
wl_resource_destroy (surface->gtk_surface);
g_object_unref (surface);
@ -1231,172 +1329,6 @@ meta_wayland_surface_begin_grab_op (MetaWaylandSurface *surface,
x, y);
}
static void
gtk_surface_destructor (struct wl_resource *resource)
{
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
surface->gtk_surface = NULL;
}
static void
gtk_surface_set_dbus_properties (struct wl_client *client,
struct wl_resource *resource,
const char *application_id,
const char *app_menu_path,
const char *menubar_path,
const char *window_object_path,
const char *application_object_path,
const char *unique_bus_name)
{
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
/* Broken client, let it die instead of us */
if (!surface->window)
{
meta_warning ("meta-wayland-surface: set_dbus_properties called with invalid window!\n");
return;
}
meta_window_set_gtk_dbus_properties (surface->window,
application_id,
unique_bus_name,
app_menu_path,
menubar_path,
application_object_path,
window_object_path);
}
static void
gtk_surface_set_modal (struct wl_client *client,
struct wl_resource *resource)
{
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
if (surface->is_modal)
return;
surface->is_modal = TRUE;
meta_window_set_type (surface->window, META_WINDOW_MODAL_DIALOG);
}
static void
gtk_surface_unset_modal (struct wl_client *client,
struct wl_resource *resource)
{
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
if (!surface->is_modal)
return;
surface->is_modal = FALSE;
meta_window_set_type (surface->window, META_WINDOW_NORMAL);
}
static void
gtk_surface_present (struct wl_client *client,
struct wl_resource *resource,
uint32_t timestamp)
{
MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
MetaWindow *window = surface->window;
if (!window)
return;
meta_window_activate_full (window, timestamp,
META_CLIENT_TYPE_APPLICATION, NULL);
}
static const struct gtk_surface1_interface meta_wayland_gtk_surface_interface = {
gtk_surface_set_dbus_properties,
gtk_surface_set_modal,
gtk_surface_unset_modal,
gtk_surface_present,
};
static void
gtk_shell_get_gtk_surface (struct wl_client *client,
struct wl_resource *resource,
guint32 id,
struct wl_resource *surface_resource)
{
MetaWaylandSurface *surface = wl_resource_get_user_data (surface_resource);
if (surface->gtk_surface != NULL)
{
wl_resource_post_error (surface_resource,
WL_DISPLAY_ERROR_INVALID_OBJECT,
"gtk_shell::get_gtk_surface already requested");
return;
}
surface->gtk_surface = wl_resource_create (client,
&gtk_surface1_interface,
wl_resource_get_version (resource),
id);
wl_resource_set_implementation (surface->gtk_surface, &meta_wayland_gtk_surface_interface, surface, gtk_surface_destructor);
}
static void
gtk_shell_set_startup_id (struct wl_client *client,
struct wl_resource *resource,
const char *startup_id)
{
MetaDisplay *display;
display = meta_get_display ();
meta_startup_notification_remove_sequence (display->startup_notification,
startup_id);
}
static void
gtk_shell_system_bell (struct wl_client *client,
struct wl_resource *resource,
struct wl_resource *gtk_surface_resource)
{
MetaDisplay *display = meta_get_display ();
if (gtk_surface_resource)
{
MetaWaylandSurface *surface =
wl_resource_get_user_data (gtk_surface_resource);
if (!surface->window)
return;
meta_bell_notify (display, surface->window);
}
else
{
meta_bell_notify (display, NULL);
}
}
static const struct gtk_shell1_interface meta_wayland_gtk_shell_interface = {
gtk_shell_get_gtk_surface,
gtk_shell_set_startup_id,
gtk_shell_system_bell,
};
static void
bind_gtk_shell (struct wl_client *client,
void *data,
guint32 version,
guint32 id)
{
struct wl_resource *resource;
uint32_t capabilities = 0;
resource = wl_resource_create (client, &gtk_shell1_interface, version, id);
wl_resource_set_implementation (resource, &meta_wayland_gtk_shell_interface, data, NULL);
if (!meta_prefs_get_show_fallback_app_menu ())
capabilities = GTK_SHELL1_CAPABILITY_GLOBAL_APP_MENU;
gtk_shell1_send_capabilities (resource, capabilities);
}
static void
unparent_actor (MetaWaylandSurface *surface)
{
@ -1597,7 +1529,8 @@ wl_subcompositor_get_subsurface (struct wl_client *client,
}
if (!meta_wayland_surface_assign_role (surface,
META_TYPE_WAYLAND_SURFACE_ROLE_SUBSURFACE))
META_TYPE_WAYLAND_SURFACE_ROLE_SUBSURFACE,
NULL))
{
/* FIXME: There is no subcompositor "role" error yet, so lets just use something
* similar until there is.
@ -1646,12 +1579,7 @@ meta_wayland_shell_init (MetaWaylandCompositor *compositor)
{
meta_wayland_xdg_shell_init (compositor);
meta_wayland_wl_shell_init (compositor);
if (wl_global_create (compositor->wayland_display,
&gtk_shell1_interface,
META_GTK_SHELL1_VERSION,
compositor, bind_gtk_shell) == NULL)
g_error ("Failed to register a global gtk-shell object");
meta_wayland_gtk_shell_init (compositor);
if (wl_global_create (compositor->wayland_display,
&wl_subcompositor_interface,
@ -1662,6 +1590,8 @@ meta_wayland_shell_init (MetaWaylandCompositor *compositor)
void
meta_wayland_surface_configure_notify (MetaWaylandSurface *surface,
int new_x,
int new_y,
int new_width,
int new_height,
MetaWaylandSerial *sent_serial)
@ -1669,7 +1599,10 @@ meta_wayland_surface_configure_notify (MetaWaylandSurface *surface,
MetaWaylandSurfaceRoleShellSurface *shell_surface_role =
META_WAYLAND_SURFACE_ROLE_SHELL_SURFACE (surface->role);
g_signal_emit (surface, surface_signals[SURFACE_CONFIGURE], 0);
meta_wayland_surface_role_shell_surface_configure (shell_surface_role,
new_x, new_y,
new_width, new_height,
sent_serial);
}
@ -1827,20 +1760,6 @@ meta_wayland_surface_get_absolute_coordinates (MetaWaylandSurface *surface,
*y = v.y;
}
static void
meta_wayland_surface_dispose (GObject *object)
{
MetaWaylandSurface *surface = META_WAYLAND_SURFACE (object);
if (!surface->destroying)
{
g_signal_emit (object, surface_signals[SURFACE_DESTROY], 0);
surface->destroying = TRUE;
}
G_OBJECT_CLASS (meta_wayland_surface_parent_class)->dispose (object);
}
static void
meta_wayland_surface_init (MetaWaylandSurface *surface)
{
@ -1852,8 +1771,6 @@ meta_wayland_surface_class_init (MetaWaylandSurfaceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = meta_wayland_surface_dispose;
surface_signals[SURFACE_DESTROY] =
g_signal_new ("destroy",
G_TYPE_FROM_CLASS (object_class),
@ -1869,6 +1786,56 @@ meta_wayland_surface_class_init (MetaWaylandSurfaceClass *klass)
0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
surface_signals[SURFACE_CONFIGURE] =
g_signal_new ("configure",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
}
static void
meta_wayland_surface_role_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
MetaWaylandSurfaceRole *surface_role = META_WAYLAND_SURFACE_ROLE (object);
MetaWaylandSurfaceRolePrivate *priv =
meta_wayland_surface_role_get_instance_private (surface_role);
switch (prop_id)
{
case SURFACE_ROLE_PROP_SURFACE:
priv->surface = g_value_get_object (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
meta_wayland_surface_role_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
MetaWaylandSurfaceRole *surface_role = META_WAYLAND_SURFACE_ROLE (object);
MetaWaylandSurfaceRolePrivate *priv =
meta_wayland_surface_role_get_instance_private (surface_role);
switch (prop_id)
{
case SURFACE_ROLE_PROP_SURFACE:
g_value_set_object (value, priv->surface);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
@ -1879,6 +1846,20 @@ meta_wayland_surface_role_init (MetaWaylandSurfaceRole *role)
static void
meta_wayland_surface_role_class_init (MetaWaylandSurfaceRoleClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->set_property = meta_wayland_surface_role_set_property;
object_class->get_property = meta_wayland_surface_role_get_property;
g_object_class_install_property (object_class,
SURFACE_ROLE_PROP_SURFACE,
g_param_spec_object ("surface",
"MetaWaylandSurface",
"The MetaWaylandSurface instance",
META_TYPE_WAYLAND_SURFACE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS));
}
static void
@ -1942,6 +1923,8 @@ meta_wayland_surface_role_get_surface (MetaWaylandSurfaceRole *role)
static void
meta_wayland_surface_role_shell_surface_configure (MetaWaylandSurfaceRoleShellSurface *shell_surface_role,
int new_x,
int new_y,
int new_width,
int new_height,
MetaWaylandSerial *sent_serial)
@ -1950,6 +1933,8 @@ meta_wayland_surface_role_shell_surface_configure (MetaWaylandSurfaceRoleShellSu
META_WAYLAND_SURFACE_ROLE_SHELL_SURFACE_GET_CLASS (shell_surface_role);
shell_surface_role_class->configure (shell_surface_role,
new_x,
new_y,
new_width,
new_height,
sent_serial);
@ -2020,11 +2005,16 @@ actor_surface_commit (MetaWaylandSurfaceRole *surface_role,
{
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandSurface *toplevel_surface;
queue_surface_actor_frame_callbacks (surface, pending);
toplevel_surface = meta_wayland_surface_get_toplevel (surface);
if (!toplevel_surface || !toplevel_surface->window)
return;
meta_surface_actor_wayland_sync_state (
META_SURFACE_ACTOR_WAYLAND (surface->surface_actor));
queue_surface_actor_frame_callbacks (surface, pending);
}
static void
@ -2043,6 +2033,39 @@ meta_wayland_surface_role_actor_surface_class_init (MetaWaylandSurfaceRoleActorS
surface_role_class->is_on_output = actor_surface_is_on_output;
}
static void
shell_surface_role_surface_commit (MetaWaylandSurfaceRole *surface_role,
MetaWaylandPendingState *pending)
{
MetaWaylandSurface *surface =
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandSurfaceRoleClass *surface_role_class;
MetaWindow *window;
MetaWaylandBuffer *buffer;
CoglTexture *texture;
MetaSurfaceActorWayland *actor;
double scale;
surface_role_class =
META_WAYLAND_SURFACE_ROLE_CLASS (meta_wayland_surface_role_shell_surface_parent_class);
surface_role_class->commit (surface_role, pending);
buffer = surface->buffer_ref.buffer;
if (!buffer)
return;
window = surface->window;
if (!window)
return;
actor = META_SURFACE_ACTOR_WAYLAND (surface->surface_actor);
scale = meta_surface_actor_wayland_get_scale (actor);
texture = buffer->texture;
window->buffer_rect.width = cogl_texture_get_width (texture) * scale;
window->buffer_rect.height = cogl_texture_get_height (texture) * scale;
}
static void
meta_wayland_surface_role_shell_surface_init (MetaWaylandSurfaceRoleShellSurface *role)
{
@ -2051,6 +2074,10 @@ meta_wayland_surface_role_shell_surface_init (MetaWaylandSurfaceRoleShellSurface
static void
meta_wayland_surface_role_shell_surface_class_init (MetaWaylandSurfaceRoleShellSurfaceClass *klass)
{
MetaWaylandSurfaceRoleClass *surface_role_class =
META_WAYLAND_SURFACE_ROLE_CLASS (klass);
surface_role_class->commit = shell_surface_role_surface_commit;
}
static void

View File

@ -92,6 +92,8 @@ struct _MetaWaylandSurfaceRoleShellSurfaceClass
MetaWaylandSurfaceRoleActorSurfaceClass parent_class;
void (*configure) (MetaWaylandSurfaceRoleShellSurface *shell_surface_role,
int new_x,
int new_y,
int new_width,
int new_height,
MetaWaylandSerial *sent_serial);
@ -140,6 +142,14 @@ struct _MetaWaylandPendingState
MetaRectangle new_geometry;
gboolean has_new_geometry;
/* pending min/max size in window geometry coordinates */
gboolean has_new_min_size;
int new_min_width;
int new_min_height;
gboolean has_new_max_size;
int new_max_width;
int new_max_height;
};
struct _MetaWaylandDragDestFuncs
@ -202,13 +212,8 @@ struct _MetaWaylandSurface
MetaWaylandPendingState *pending;
/* Extension resources. */
struct wl_resource *gtk_surface;
struct wl_resource *wl_subsurface;
/* gtk_surface stuff */
gboolean is_modal;
gboolean destroying;
/* wl_subsurface stuff. */
struct {
MetaWaylandSurface *parent;
@ -243,7 +248,9 @@ MetaWaylandSurface *meta_wayland_surface_create (MetaWaylandCompositor *composit
guint32 id);
gboolean meta_wayland_surface_assign_role (MetaWaylandSurface *surface,
GType role_type);
GType role_type,
const char *first_property_name,
...);
MetaWaylandBuffer *meta_wayland_surface_get_buffer (MetaWaylandSurface *surface);
@ -255,6 +262,8 @@ void meta_wayland_surface_set_window (MetaWaylandSurface *surface
MetaWindow *window);
void meta_wayland_surface_configure_notify (MetaWaylandSurface *surface,
int new_x,
int new_y,
int width,
int height,
MetaWaylandSerial *sent_serial);
@ -299,9 +308,6 @@ MetaWaylandSurface * meta_wayland_surface_role_get_surface (MetaWaylandSurfaceRo
cairo_region_t * meta_wayland_surface_calculate_input_region (MetaWaylandSurface *surface);
void meta_wayland_surface_apply_window_state (MetaWaylandSurface *surface,
MetaWaylandPendingState *pending);
void meta_wayland_surface_calculate_window_geometry (MetaWaylandSurface *surface,
MetaRectangle *total_geometry,
float parent_x,

View File

@ -204,7 +204,7 @@ static void
meta_wayland_tablet_seat_device_added (MetaWaylandTabletSeat *tablet_seat,
ClutterInputDevice *device)
{
MetaWaylandSurface *pad_focus = tablet_seat->seat->keyboard.focus_surface;
MetaWaylandSurface *pad_focus = tablet_seat->seat->keyboard->focus_surface;
if (is_tablet_device (device))
{

View File

@ -443,7 +443,8 @@ tool_set_cursor (struct wl_client *client,
if (surface &&
!meta_wayland_surface_assign_role (surface,
META_TYPE_WAYLAND_SURFACE_ROLE_TABLET_CURSOR))
META_TYPE_WAYLAND_SURFACE_ROLE_TABLET_CURSOR,
NULL))
{
wl_resource_post_error (resource, WL_POINTER_ERROR_ROLE,
"wl_surface@%d already has a different role",

View File

@ -34,6 +34,9 @@
#include "backends/native/meta-backend-native.h"
#endif
G_DEFINE_TYPE (MetaWaylandTouch, meta_wayland_touch,
META_TYPE_WAYLAND_INPUT_DEVICE)
struct _MetaWaylandTouchSurface
{
MetaWaylandSurface *surface;
@ -452,9 +455,11 @@ touch_info_free (MetaWaylandTouchInfo *touch_info)
void
meta_wayland_touch_cancel (MetaWaylandTouch *touch)
{
MetaWaylandInputDevice *input_device = META_WAYLAND_INPUT_DEVICE (touch);
MetaWaylandSeat *seat = meta_wayland_input_device_get_seat (input_device);
GList *surfaces, *s;
if (touch->display == NULL)
if (!meta_wayland_seat_has_touch (seat))
return;
surfaces = s = touch_get_surfaces (touch, FALSE);
@ -514,14 +519,10 @@ evdev_filter_func (struct libinput_event *event,
#endif
void
meta_wayland_touch_init (MetaWaylandTouch *touch,
struct wl_display *display)
meta_wayland_touch_enable (MetaWaylandTouch *touch)
{
ClutterDeviceManager *manager;
memset (touch, 0, sizeof *touch);
touch->display = display;
touch->touch_surfaces = g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) touch_surface_free);
touch->touches = g_hash_table_new_full (NULL, NULL, NULL,
@ -540,7 +541,7 @@ meta_wayland_touch_init (MetaWaylandTouch *touch,
}
void
meta_wayland_touch_release (MetaWaylandTouch *touch)
meta_wayland_touch_disable (MetaWaylandTouch *touch)
{
#ifdef HAVE_NATIVE_BACKEND
MetaBackend *backend = meta_get_backend ();
@ -550,7 +551,6 @@ meta_wayland_touch_release (MetaWaylandTouch *touch)
g_clear_pointer (&touch->touch_surfaces, (GDestroyNotify) g_hash_table_unref);
g_clear_pointer (&touch->touches, (GDestroyNotify) g_hash_table_unref);
touch->display = NULL;
}
void
@ -559,9 +559,10 @@ meta_wayland_touch_create_new_resource (MetaWaylandTouch *touch,
struct wl_resource *seat_resource,
uint32_t id)
{
MetaWaylandSeat *seat = wl_resource_get_user_data (seat_resource);
struct wl_resource *cr;
if (touch->display == NULL)
if (!meta_wayland_seat_has_touch (seat))
{
wl_resource_post_error (seat_resource, WL_DISPLAY_ERROR_INVALID_METHOD,
"Cannot retrieve touch interface without touch capability");
@ -641,3 +642,13 @@ meta_wayland_touch_get_press_coords (MetaWaylandTouch *touch,
return TRUE;
}
static void
meta_wayland_touch_init (MetaWaylandTouch *touch)
{
}
static void
meta_wayland_touch_class_init (MetaWaylandTouchClass *klass)
{
}

View File

@ -28,12 +28,18 @@
#include "meta-wayland-types.h"
#define META_TYPE_WAYLAND_TOUCH (meta_wayland_touch_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandTouch, meta_wayland_touch,
META, WAYLAND_TOUCH,
MetaWaylandInputDevice)
typedef struct _MetaWaylandTouchSurface MetaWaylandTouchSurface;
typedef struct _MetaWaylandTouchInfo MetaWaylandTouchInfo;
struct _MetaWaylandTouch
{
struct wl_display *display;
MetaWaylandInputDevice parent;
struct wl_list resource_list;
GHashTable *touch_surfaces; /* HT of MetaWaylandSurface->MetaWaylandTouchSurface */
@ -43,10 +49,9 @@ struct _MetaWaylandTouch
guint64 frame_slots;
};
void meta_wayland_touch_init (MetaWaylandTouch *touch,
struct wl_display *display);
void meta_wayland_touch_enable (MetaWaylandTouch *touch);
void meta_wayland_touch_release (MetaWaylandTouch *touch);
void meta_wayland_touch_disable (MetaWaylandTouch *touch);
void meta_wayland_touch_update (MetaWaylandTouch *touch,
const ClutterEvent *event);

View File

@ -23,6 +23,7 @@
typedef struct _MetaWaylandCompositor MetaWaylandCompositor;
typedef struct _MetaWaylandSeat MetaWaylandSeat;
typedef struct _MetaWaylandInputDevice MetaWaylandInputDevice;
typedef struct _MetaWaylandPointer MetaWaylandPointer;
typedef struct _MetaWaylandPointerGrab MetaWaylandPointerGrab;
typedef struct _MetaWaylandPointerGrabInterface MetaWaylandPointerGrabInterface;

View File

@ -324,7 +324,7 @@ meta_wayland_wl_shell_surface_create_popup (MetaWaylandWlShellSurface *wl_shell_
MetaWaylandSeat *seat = wl_shell_surface->popup_seat;
MetaWaylandPopup *popup;
popup = meta_wayland_pointer_start_popup_grab (&seat->pointer, popup_surface);
popup = meta_wayland_pointer_start_popup_grab (seat->pointer, popup_surface);
if (!popup)
{
wl_shell_surface_send_popup_done (wl_shell_surface->resource);
@ -518,7 +518,8 @@ wl_shell_get_shell_surface (struct wl_client *client,
}
if (!meta_wayland_surface_assign_role (surface,
META_TYPE_WAYLAND_WL_SHELL_SURFACE))
META_TYPE_WAYLAND_WL_SHELL_SURFACE,
NULL))
{
wl_resource_post_error (resource, WL_SHELL_ERROR_ROLE,
"wl_surface@%d already has a different role",
@ -594,7 +595,6 @@ wl_shell_surface_role_commit (MetaWaylandSurfaceRole *surface_role,
if (!pending->newly_attached)
return;
meta_wayland_surface_apply_window_state (surface, pending);
meta_wayland_surface_calculate_window_geometry (surface, &geom, 0, 0);
meta_window_wayland_move_resize (window,
NULL,
@ -616,6 +616,8 @@ wl_shell_surface_role_get_toplevel (MetaWaylandSurfaceRole *surface_role)
static void
wl_shell_surface_role_configure (MetaWaylandSurfaceRoleShellSurface *shell_surface_role,
int new_x,
int new_y,
int new_width,
int new_height,
MetaWaylandSerial *sent_serial)

File diff suppressed because it is too large Load Diff

View File

@ -23,16 +23,29 @@
#include "wayland/meta-wayland-surface.h"
#define META_TYPE_WAYLAND_XDG_SURFACE (meta_wayland_xdg_surface_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandXdgSurface,
meta_wayland_xdg_surface,
META, WAYLAND_XDG_SURFACE,
MetaWaylandSurfaceRoleShellSurface);
G_DECLARE_DERIVABLE_TYPE (MetaWaylandXdgSurface,
meta_wayland_xdg_surface,
META, WAYLAND_XDG_SURFACE,
MetaWaylandSurfaceRoleShellSurface);
struct _MetaWaylandXdgSurfaceClass
{
MetaWaylandSurfaceRoleShellSurfaceClass parent_class;
void (*shell_client_destroyed) (MetaWaylandXdgSurface *xdg_surface);
};
#define META_TYPE_WAYLAND_XDG_TOPLEVEL (meta_wayland_xdg_toplevel_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandXdgToplevel,
meta_wayland_xdg_toplevel,
META, WAYLAND_XDG_TOPLEVEL,
MetaWaylandXdgSurface);
#define META_TYPE_WAYLAND_XDG_POPUP (meta_wayland_xdg_popup_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandXdgPopup,
meta_wayland_xdg_popup,
META, WAYLAND_XDG_POPUP,
MetaWaylandSurfaceRoleShellSurface);
MetaWaylandXdgSurface);
void meta_wayland_xdg_shell_init (MetaWaylandCompositor *compositor);

View File

@ -226,7 +226,7 @@ meta_wayland_compositor_update_key_state (MetaWaylandCompositor *compositor,
int key_vector_len,
int offset)
{
meta_wayland_keyboard_update_key_state (&compositor->seat->keyboard,
meta_wayland_keyboard_update_key_state (compositor->seat->keyboard,
key_vector, key_vector_len, offset);
}

View File

@ -46,6 +46,8 @@ struct _MetaWindowWayland
int pending_move_x;
int pending_move_y;
int last_sent_x;
int last_sent_y;
int last_sent_width;
int last_sent_height;
};
@ -149,6 +151,8 @@ surface_state_changed (MetaWindow *window)
return;
meta_wayland_surface_configure_notify (window->surface,
wl_window->last_sent_x,
wl_window->last_sent_y,
wl_window->last_sent_width,
wl_window->last_sent_height,
&wl_window->pending_configure_serial);
@ -184,6 +188,8 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
{
MetaWindowWayland *wl_window = META_WINDOW_WAYLAND (window);
gboolean can_move_now;
int configured_x;
int configured_y;
int configured_width;
int configured_height;
int monitor_scale;
@ -194,6 +200,9 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
if (window->unmanaging)
return;
configured_x = constrained_rect.x;
configured_y = constrained_rect.y;
/* The scale the window is drawn in might change depending on what monitor it
* is mainly on. Scale the configured rectangle to be in logical pixel
* coordinate space so that we can have a scale independent size to pass
@ -256,6 +265,8 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
return;
meta_wayland_surface_configure_notify (window->surface,
configured_x,
configured_y,
configured_width,
configured_height,
&wl_window->pending_configure_serial);
@ -271,6 +282,8 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
}
}
wl_window->last_sent_x = configured_x;
wl_window->last_sent_y = configured_y;
wl_window->last_sent_width = configured_width;
wl_window->last_sent_height = configured_height;
@ -312,10 +325,28 @@ meta_window_wayland_move_resize_internal (MetaWindow *window,
}
static void
scale_rect_size (MetaRectangle *rect, float scale)
scale_size (int *width,
int *height,
float scale)
{
rect->width = (int)(rect->width * scale);
rect->height = (int)(rect->height * scale);
if (*width < G_MAXINT)
{
float new_width = (*width * scale);
*width = (int) MIN (new_width, G_MAXINT);
}
if (*height < G_MAXINT)
{
float new_height = (*height * scale);
*height = (int) MIN (new_height, G_MAXINT);
}
}
static void
scale_rect_size (MetaRectangle *rect,
float scale)
{
scale_size (&rect->width, &rect->height, scale);
}
static void
@ -386,6 +417,9 @@ meta_window_wayland_main_monitor_changed (MetaWindow *window,
scale_rect_size (&window->rect, scale_factor);
scale_rect_size (&window->unconstrained_rect, scale_factor);
scale_rect_size (&window->saved_rect, scale_factor);
scale_size (&window->size_hints.min_width, &window->size_hints.min_height, scale_factor);
scale_size (&window->size_hints.max_width, &window->size_hints.max_height, scale_factor);
/* Window geometry offset (XXX: Need a better place, see
* meta_window_wayland_move_resize). */
@ -624,3 +658,152 @@ meta_window_wayland_place_relative_to (MetaWindow *window,
other->buffer_rect.y + (y * monitor_scale));
window->placed = TRUE;
}
void
meta_window_place_with_placement_rule (MetaWindow *window,
MetaPlacementRule *placement_rule)
{
g_clear_pointer (&window->placement_rule, g_free);
window->placement_rule = g_new0 (MetaPlacementRule, 1);
*window->placement_rule = *placement_rule;
window->unconstrained_rect.width = placement_rule->width;
window->unconstrained_rect.height = placement_rule->height;
meta_window_force_placement (window);
}
void
meta_window_wayland_set_min_size (MetaWindow *window,
int width,
int height)
{
gint64 new_width, new_height;
float scale;
meta_topic (META_DEBUG_GEOMETRY, "Window %s sets min size %d x %d\n",
window->desc, width, height);
if (width == 0 && height == 0)
{
window->size_hints.min_width = 0;
window->size_hints.min_height = 0;
window->size_hints.flags &= ~PMinSize;
return;
}
scale = (float) meta_window_wayland_get_main_monitor_scale (window);
scale_size (&width, &height, scale);
new_width = width + (window->custom_frame_extents.left +
window->custom_frame_extents.right);
new_height = height + (window->custom_frame_extents.top +
window->custom_frame_extents.bottom);
window->size_hints.min_width = (int) MIN (new_width, G_MAXINT);
window->size_hints.min_height = (int) MIN (new_height, G_MAXINT);
window->size_hints.flags |= PMinSize;
}
void
meta_window_wayland_set_max_size (MetaWindow *window,
int width,
int height)
{
gint64 new_width, new_height;
float scale;
meta_topic (META_DEBUG_GEOMETRY, "Window %s sets max size %d x %d\n",
window->desc, width, height);
if (width == 0 && height == 0)
{
window->size_hints.max_width = G_MAXINT;
window->size_hints.max_height = G_MAXINT;
window->size_hints.flags &= ~PMaxSize;
return;
}
scale = (float) meta_window_wayland_get_main_monitor_scale (window);
scale_size (&width, &height, scale);
new_width = width + (window->custom_frame_extents.left +
window->custom_frame_extents.right);
new_height = height + (window->custom_frame_extents.top +
window->custom_frame_extents.bottom);
window->size_hints.max_width = (int) ((new_width > 0 && new_width < G_MAXINT) ?
new_width : G_MAXINT);
window->size_hints.max_height = (int) ((new_height > 0 && new_height < G_MAXINT) ?
new_height : G_MAXINT);
window->size_hints.flags |= PMaxSize;
}
void
meta_window_wayland_get_min_size (MetaWindow *window,
int *width,
int *height)
{
gint64 current_width, current_height;
float scale;
if (!(window->size_hints.flags & PMinSize))
{
/* Zero means unlimited */
*width = 0;
*height = 0;
return;
}
current_width = window->size_hints.min_width -
(window->custom_frame_extents.left +
window->custom_frame_extents.right);
current_height = window->size_hints.min_height -
(window->custom_frame_extents.top +
window->custom_frame_extents.bottom);
*width = MAX (current_width, 0);
*height = MAX (current_height, 0);
scale = 1.0 / (float) meta_window_wayland_get_main_monitor_scale (window);
scale_size (width, height, scale);
}
void
meta_window_wayland_get_max_size (MetaWindow *window,
int *width,
int *height)
{
gint64 current_width = 0;
gint64 current_height = 0;
float scale;
if (!(window->size_hints.flags & PMaxSize))
{
/* Zero means unlimited */
*width = 0;
*height = 0;
return;
}
if (window->size_hints.max_width < G_MAXINT)
current_width = window->size_hints.max_width -
(window->custom_frame_extents.left +
window->custom_frame_extents.right);
if (window->size_hints.max_height < G_MAXINT)
current_height = window->size_hints.max_height -
(window->custom_frame_extents.top +
window->custom_frame_extents.bottom);
*width = CLAMP (current_width, 0, G_MAXINT);
*height = CLAMP (current_height, 0, G_MAXINT);
scale = 1.0 / (float) meta_window_wayland_get_main_monitor_scale (window);
scale_size (width, height, scale);
}

View File

@ -25,6 +25,7 @@
#ifndef META_WINDOW_WAYLAND_H
#define META_WINDOW_WAYLAND_H
#include "core/window-private.h"
#include <meta/window.h>
#include "wayland/meta-wayland-types.h"
@ -57,4 +58,25 @@ void meta_window_wayland_place_relative_to (MetaWindow *window,
int x,
int y);
void meta_window_place_with_placement_rule (MetaWindow *window,
MetaPlacementRule *placement_rule);
void meta_window_wayland_set_min_size (MetaWindow *window,
int width,
int height);
void meta_window_wayland_set_max_size (MetaWindow *window,
int width,
int height);
void meta_window_wayland_get_min_size (MetaWindow *window,
int *width,
int *height);
void meta_window_wayland_get_max_size (MetaWindow *window,
int *width,
int *height);
#endif

View File

@ -33,7 +33,9 @@
#include <gdk/gdkx.h>
#include <X11/Xatom.h>
#include <X11/extensions/Xfixes.h>
#include <meta/errors.h>
#include "meta-xwayland.h"
#include "meta-xwayland-private.h"
#include "meta-xwayland-selection-private.h"
#include "meta-wayland-data-device.h"
@ -972,7 +974,7 @@ meta_x11_drag_dest_update (MetaWaylandDataDevice *data_device,
MetaWaylandSeat *seat = compositor->seat;
ClutterPoint pos;
clutter_input_device_get_coords (seat->pointer.device, NULL, &pos);
clutter_input_device_get_coords (seat->pointer->device, NULL, &pos);
xdnd_send_position (compositor->xwayland_manager.selection_data,
compositor->xwayland_manager.selection_data->dnd.dnd_dest,
clutter_get_current_event_time (),
@ -1378,7 +1380,7 @@ drag_xgrab_motion (MetaWaylandPointerGrab *grab,
event);
dnd->last_motion_time = clutter_event_get_time (event);
meta_wayland_pointer_send_motion (&seat->pointer, event);
meta_wayland_pointer_send_motion (seat->pointer, event);
}
static void
@ -1388,7 +1390,7 @@ drag_xgrab_button (MetaWaylandPointerGrab *grab,
MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default ();
MetaWaylandSeat *seat = compositor->seat;
meta_wayland_pointer_send_button (&seat->pointer, event);
meta_wayland_pointer_send_button (seat->pointer, event);
}
static const MetaWaylandPointerGrabInterface drag_xgrab_interface = {
@ -1499,10 +1501,10 @@ meta_xwayland_selection_handle_client_message (MetaWaylandCompositor *compositor
uint32_t action = 0;
motion = clutter_event_new (CLUTTER_MOTION);
clutter_input_device_get_coords (seat->pointer.device, NULL, &pos);
clutter_input_device_get_coords (seat->pointer->device, NULL, &pos);
clutter_event_set_coords (motion, pos.x, pos.y);
clutter_event_set_device (motion, seat->pointer.device);
clutter_event_set_source_device (motion, seat->pointer.device);
clutter_event_set_device (motion, seat->pointer->device);
clutter_event_set_source_device (motion, seat->pointer->device);
clutter_event_set_time (motion, dnd->last_motion_time);
action = atom_to_action ((Atom) event->data.l[4]);
@ -1584,14 +1586,14 @@ meta_xwayland_selection_handle_xfixes_selection_notify (MetaWaylandCompositor *c
{
MetaWaylandDataDevice *data_device = &compositor->seat->data_device;
MetaXWaylandSelection *selection_data = compositor->xwayland_manager.selection_data;
MetaWaylandSurface *focus;
selection->owner = event->owner;
focus = compositor->seat->pointer->focus_surface;
if (event->owner != None && event->owner != selection->window)
if (event->owner != None && event->owner != selection->window &&
focus && meta_xwayland_is_xwayland_surface (focus))
{
MetaWaylandSurface *focus;
focus = compositor->seat->pointer.focus_surface;
selection->source = meta_wayland_data_source_xwayland_new (selection);
meta_wayland_data_device_set_dnd_source (&compositor->seat->data_device,
selection->source);

View File

@ -34,6 +34,14 @@
#include "compositor/meta-surface-actor-wayland.h"
enum {
XWAYLAND_SURFACE_WINDOW_ASSOCIATED,
XWAYLAND_SURFACE_LAST_SIGNAL
};
guint xwayland_surface_signals[XWAYLAND_SURFACE_LAST_SIGNAL];
#define META_TYPE_WAYLAND_SURFACE_ROLE_XWAYLAND (meta_wayland_surface_role_xwayland_get_type ())
G_DECLARE_FINAL_TYPE (MetaWaylandSurfaceRoleXWayland,
meta_wayland_surface_role_xwayland,
@ -56,7 +64,8 @@ associate_window_with_surface (MetaWindow *window,
MetaDisplay *display = window->display;
if (!meta_wayland_surface_assign_role (surface,
META_TYPE_WAYLAND_SURFACE_ROLE_XWAYLAND))
META_TYPE_WAYLAND_SURFACE_ROLE_XWAYLAND,
NULL))
{
wl_resource_post_error (surface->resource,
WL_DISPLAY_ERROR_INVALID_OBJECT,
@ -65,8 +74,11 @@ associate_window_with_surface (MetaWindow *window,
return;
}
meta_wayland_surface_set_window (surface, window);
window->surface = surface;
meta_wayland_surface_set_window (surface, window);
g_signal_emit (surface->role,
xwayland_surface_signals[XWAYLAND_SURFACE_WINDOW_ASSOCIATED],
0);
meta_compositor_window_surface_changed (display->compositor, window);
@ -651,4 +663,12 @@ meta_wayland_surface_role_xwayland_class_init (MetaWaylandSurfaceRoleXWaylandCla
surface_role_class->assigned = xwayland_surface_assigned;
surface_role_class->commit = xwayland_surface_commit;
surface_role_class->get_toplevel = xwayland_surface_get_toplevel;
xwayland_surface_signals[XWAYLAND_SURFACE_WINDOW_ASSOCIATED] =
g_signal_new ("window-associated",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
}

View File

@ -46,6 +46,16 @@
<request name="present">
<arg name="time" type="uint"/>
</request>
<!-- Version 2 additions -->
<enum name="state">
<entry name="tiled" value="1"/>
</enum>
<event name="configure">
<arg name="states" type="array"/>
</event>
</interface>
</protocol>