Compare commits

...

165 Commits

Author SHA1 Message Date
Carlos Garnacho
255a7afe73 core: Avoid queueing resizes while changing workspace during window drag
We already have a user move/resize going on, so avoid botching it with
window resizes with flags & META_MOVE_RESIZE_USER_ACTION == 0 that will
trigger unintended constraints.

https://gitlab.gnome.org/GNOME/mutter/issues/192

Closes: #192
2018-06-14 21:10:05 +02:00
Carlos Garnacho
3649795108 wayland: Detach MetaWaylandActorSurface from its actor on dispose
And ensure the actor is no longer reactive even though it might live longer
because of close effects, GCs, and whatnot. This ensures the actor is not
eligible for pointer picking within the destruction of its surface.

Closes: #188
2018-06-14 14:05:10 +02:00
Yi-Jyun Pan
36b9551f92 Update Chinese (Taiwan) translation 2018-06-13 08:36:21 +00:00
Carlos Garnacho
6abe4703c7 core: Hide close dialog before destroying
The MetaCloseDialog implementation object may stay artifically alive
for a longer period. This was usually fine till gnome-shell commit
b03bcc85aad, as the check_alive() timeout will keep running even
though the window went unmanaged/destroyed, leading to crashes.

In order to fix this, forcibly hide the dialog if it is visible and
the window is being unmanaged, so the timeout is stopped in time.
2018-06-08 17:41:34 +02:00
Carlos Garnacho
69ca584168 wayland: Handle get_subsurface() with a role-less parent surface
The order of role creation is undetermined, so we can't account that
the parent surface will have a role (and an actor) at the time of
creating the wl_subsurface role for a child surface.

So we must do it both ways, add the subsurface as a child on
get_subsurface() if the parent already got a role, and lazily add
child subsurface actors to the current one if the parent surface got
it at a later point.

Related: #132
2018-06-08 17:31:25 +02:00
Jonas Ådahl
8ee14a7cb7 renderer/native: Also wrap flip closures for EGLStreams
When using the EGLStream backend, the MetaRendererNative passed a
GClosure to KMS when using EGLStreams, but KMS flip callback event
handler in meta-gpu-kms.c expected a closure wrapped in a closure
container, meaning it'd instead crash when using EGLStreams. Make the
flip handler get what it expects also when using EGLStreams by wrapping
the flip closure in the container before handing it over to EGL.

https://bugzilla.gnome.org/show_bug.cgi?id=790316
2018-06-07 22:14:05 +02:00
Jonas Ådahl
909dbafd67 settings: Remove confused comment
It got lost, lets help it find the way out.
2018-06-07 12:57:52 +00:00
Jonas Ådahl
d5203f170e Make screen cast and remote desktop non-experimental
It's time to make this feature more accessible by not requiring editing
an array in gsettings.
2018-06-07 12:57:51 +00:00
Corentin Noël
2a45b7de7c clutter-input-device-xi2: Check for null group_modes before unref 2018-06-07 12:54:56 +01:00
Daniel van Vugt
62c67be4c8 clutter-actor: Fix uninitialized matrix multiply
`modelview` is uninitialized and the `apply` function just multiplies it.
What we really want is to initialize `modelview` so replace `apply` with
`get`.

Who knows what bugs this may have caused...
2018-05-31 15:43:27 +08:00
Marco Trevisan (Treviño)
0332b7394e renderer-native: Don't crash if the FB surface can't be locked 2018-05-29 22:13:03 +00:00
Marco Trevisan (Treviño)
15f41c9f68 device-manager-evdev: Add main seat to seats by default
Treat the main seat as other seats, so we don't have to handle it differently
in specific places. This was already the case before when a real device
was plugged before the startup, but not applied when hotplugging a device.
2018-05-29 10:35:51 +00:00
Marco Trevisan (Treviño)
2a38601b42 device-manager-evdev: Free the main seat on finalize 2018-05-29 10:35:51 +00:00
Marco Trevisan (Treviño)
d7bdc1591f device-manager-evdev: Set and unset the stage for the main seat too
When no input devices are available on startup the device manager might be fast
enough to be constructed so that no default stage is set yet, and thus when
main seat virtual devices are created they won't have a proper stage set.
If then we plug a real device, the events that an input manager could generate
won't be associated to any stage and thus won't be processed.

We need then ensure that when we update the stage for the device manager we
(un)associate it also to the main seat devices.
2018-05-29 10:35:51 +00:00
Changwoo Ryu
bd36764b4d wayland: Don't reset input focus on text commit
Preedit text can be active even after text commit. Resetting the input
focus will lead to unintended commit of the preedit text.

https://gitlab.gnome.org/GNOME/mutter/issues/152

Closes: #152
2018-05-26 18:58:42 +09:00
Olivier Fourdan
473bf38753 frames: Allow for unknown mouse buttons
Commit 47131b1d ("frames: Handle touch events") introduced an assert to
make sure that all mouse button actions are handled in mutter.

However, mice can have a more than 5 buttons, so simply ignore the
"other" actions instead of aborting.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/160
2018-05-25 09:20:36 +00:00
Florian Müllner
f7747e4d4f Bump version to 3.29.2
Update NEWS.
2018-05-24 17:12:55 +02:00
Dz Chen
e8dc2acfca Update Chinese (China) translation 2018-05-21 16:18:26 +00:00
Georges Basile Stavracas Neto
cf734999fb wayland: Compare geometries after chaining up
After 20176d03, the Wayland backend only synchronizes with the
compositor after a geometry was set, and it was different from
the current geometry.

That commit was mistakenly comparing the geometry before chaining
up, which would yield a false negative on the case where the
client didn't call set_geometry() before commit().

Fix that by caching the old geometry locally, chain up (and thus
apply the new geometry rectangle), then comparing the old and
current geometry rectangles.

Fixes https://gitlab.gnome.org/GNOME/mutter/issues/150
2018-05-18 13:09:10 +00:00
Daniel van Vugt
c9c3283540 shaped-texture: Disable mipmapping during animation
This avoids overwhelming the GPU with trying to update mipmaps at a high
rate. Because doing so could easily cause a reduction in the compositor
frame rate and thus actually reduce visual quality.

In the case of a window that is constantly animating in the overview,
this reduces mutter's render time by around 20%-30%.
2018-05-18 16:45:26 +08:00
Marcos Lans
d2a8cdfd7c Update Galician translation 2018-05-15 22:33:40 +00:00
Marco Trevisan (Treviño)
3e85ac8131 clutter-device-evdev: Get devices from main seat if no real seat is set
In devices such as ARM boards there could be no input devices connected on
startup, leading to a crash when we try to process artificial events that
could be queued (as gnome-shell does when syncing pointer).

Those events still should refer to a device and, in case we don't have one
provided by libinput we should still return the core devices defined in the
main seat.
2018-05-15 12:09:59 +01:00
Marco Trevisan (Treviño)
5f83d9a5c8 clutter-seat-evdev: Add function to get device by id 2018-05-15 12:05:39 +01:00
Carlos Garnacho
ac20bf2000 frames: Handle touch events
This is just done on wayland as it'll break horribly on X11, we let
this happen through pointer emulated events in XISelectEvents evmask
instead.

Some things had to be made slightly more generic to accomodate touch
events. The MetaFrames shall lock onto a single touch at a time, we
don't allow crazy stuff like multi-window drag nor multi-edge resizes.

https://bugzilla.gnome.org/show_bug.cgi?id=770185
2018-05-14 17:11:57 +01:00
Carlos Garnacho
3561082aba frames: Make 1st button/motion handlers take generic events
This will ease handling of touch events through these same handlers.

https://bugzilla.gnome.org/show_bug.cgi?id=770185
2018-05-14 13:44:03 +01:00
Florian Müllner
e34c330f66 build: Adjust to filename changes
The meta-stage and meta-window-group headers got split into a public
and private part, but the Makefiles still reference the old files.
2018-05-07 22:41:01 +02:00
Florian Müllner
7655e09d00 build: Introspect some more types
While MetaStage, MetaWindowGroup and MetaDBusDisplayConfigSkeleton don't
appear explicitly in the public API, their gtypes are still exposed via
meta_get_stage_for_screen(), meta_get_*window_group_for_screen() and
MetaMonitorManager's parent type. Newer versions of gjs will warn about
undefined properties if it encounters a gtype without introspection
information, so expose those types to shut up the warnings.

https://bugzilla.gnome.org/show_bug.cgi?id=781471
2018-05-07 21:44:47 +02:00
Florian Müllner
be069fb8ae window-group: Remove undefined function declaration
Ever since the function has been made public, its name has been
meta_actor_is_untransformed() ...

https://bugzilla.gnome.org/show_bug.cgi?id=781471
2018-05-07 21:44:47 +02:00
Florian Müllner
a30166a547 clutter: Don't reference invalid pc in gir
Cally is built into clutter itself rather than exposed as a separate
library.

https://bugzilla.gnome.org/show_bug.cgi?id=781471
2018-05-07 21:44:47 +02:00
Jonas Ådahl
0f9c6aef99 screen-cast: Handle PipeWire errors more gracefully
Various code assumed PipeWire function calls would never fail. Some can
actually fail for real reasons, and some currently can only fail due to
OOM situations, but we should still not assume that will always be the
case.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/102
2018-05-07 19:24:47 +00:00
Jonas Ådahl
332d55f7f6 wayland/xdg-foreign: Fix child surface validation check
The role type should be either an xdg-shell toplevel, or a
xdg-shell unstable v6 toplevel.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/138
2018-05-07 19:16:40 +00:00
Jonas Ådahl
98d7024288 wayland/xdg-foreign: Send immediate destroy event to correct resource
The destroyed signal that was emitted if an imported surface was not
available when created, for example if the handle was invalid or
already unexported, was emitted on the wrong resource.
2018-05-07 19:16:39 +00:00
Florian Müllner
82564772dc build: Don't fail immediately when logind is missing
We require logind for the native backend, but the backend itself is
optional. However since commit 06c357d78, we will always throw an
error if neither logind nor elogind are available, even when the
backend is disabled.

As we still support "auto" - that is, whether the native backend is
enabled depends on whether its dependencies are available - the
easiest option is to make sure we always include either elogind or
libsystemd in the dependency check rather than erring out explicitly
if neither is found.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/96
2018-05-07 19:50:20 +02:00
Florian Müllner
33c2a38ff7 main: Fix typo 2018-05-04 20:15:33 +02:00
Olivier Fourdan
52fdd24467 wayland: avoid a crash in is_effectively_synchronized()
To check if a subsurface is effectively synchronized, we walk the
subsurface hierarchy to look for a non-subsurface parent or a subsurface
being synchronized.

However, when client is closing, the parent surface might already be
gone, in which case we end up with a surface being NULL which causes a
NULL pointer dereference and a crash.

Check if the parent surface is NULL to avoid the crash, and consider
it's already synchronized if it is NULL to avoid further updates.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/124
2018-05-03 11:39:33 +02:00
Florian Müllner
2319cd9c40 idle-monitor: Don't try to auto-start SessionManager
The interface is provided by gnome-session and not activatable.

https://gitlab.gnome.org/GNOME/mutter/issues/134
2018-04-30 13:55:41 +00:00
Daniel Șerbănescu
3b4319a87c Update Romanian translation 2018-04-30 05:56:32 +00:00
Georges Basile Stavracas Neto
20176d0395 wayland: Check if state and size changed before calling move_resize()
The current implementation of the XdgSurface v6 protocol does not check
if the window changed before calling meta_window_wayland_move_resize().

The problem with this approach is that calling this function is a costly
operation since we enter the compositor side. In GNOME Shell case, it is
in JavaScript, which triggers a GJS trampoline. Calling this function on
every mouse movement is naturally as terrible as it could be - and is
exactly what happens now.

This commit adds the necessary checks to only call move_resize() when
the window actually changed, or when it needs to be updated.

https://bugzilla.gnome.org/show_bug.cgi?id=780292
Issue: #78
2018-04-25 23:33:41 -03:00
Georges Basile Stavracas Neto
762a3f89a9 wayland: Add function to query if window needs move or resize
This will be used by the next commit to determine when a window
geometry change should be ignored or not. Normally, it would be
enough to just check if the position and sizes changed.

The position, in this case, is relative to the client buffer, not
the global position. But because it is not global, there is one,
admitedly unlikely, situation where the window state is updated
while the client size and relative positions don't change.

One can trigger this by e.g. tiling the window to the half-left of
the monitor, then immediately tile it to half-right. In this case,
the window didn't change, just it's state, but nonetheless we need
to notify the compositor and run the full move/resize routines.

When that case happens, though, the MetaWindowWayland is tracking
the pending state change or a move. And this is what we need to
expose.

https://bugzilla.gnome.org/show_bug.cgi?id=780292
Issue: #78
2018-04-25 21:55:05 -03:00
Georges Basile Stavracas Neto
822c2666f5 window: Let implementations finish state changes
In the old, synchronous X.org world, we could assume that
a state change always meant a synchronizing the window
geometry right after. After firing an operation that
would change the window state, such as maximizing or
tiling the window,

With Wayland, however, this is not valid anymore, since
Wayland is asynchronous. In this scenario, we call
meta_window_move_resize_internal() twice: when the user
executes an state-changing operation, and when the server
ACKs this operation. This breaks the previous assumptions,
and as a consequence, it breaks the GNOME Shell animations
in Wayland.

The solution is giving the MetaWindow control over the time
when the window geometry is synchronized with the compositor.
That is done by introducing a new result flag. Wayland asks
for a compositor sync after receiving an ACK from the server,
while X11 asks for it right away.

Fixes #78
2018-04-25 21:55:05 -03:00
Florian Müllner
b412e6c493 Bump version to 3.29.1
Update NEWS.
2018-04-25 20:25:43 +02:00
Jonas Ådahl
ae26cd0774 native: Restore previous EGL state after blitting onto secondary GPU
Before we just set it to "none", but this was not enough since various
calls will depend on not just the context being active, but the main
rendering surface.

Fixes https://gitlab.gnome.org/GNOME/mutter/issues/21
2018-04-25 17:22:24 +02:00
Marco Trevisan (Treviño)
3104d697c0 cogl: Do not unref a NULL object
Add return-if-fail statement to avoid deferencing NULL object
2018-04-25 09:03:58 +00:00
Jonas Ådahl
0b3a1c9c31 monitor-manager: Find active monitor when deriving global scale
When deriving the global scale directly from the current hardware state
(as done when using the X11 backend) we are inspecting the logical
state they had prior to the most recent hot plug. That means that a
primary monitor might have been disabled, and a new primary monitor may
not have been assigned yet.

Stop assuming a primary monitor has an active mode before having
reconstructed the logical state by finding some active monitor if the
old primary monitor was disabled. This avoids a crash when trying to
derive the global scale from a disabled monitor.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/130
2018-04-25 10:50:50 +02:00
Carlos Garnacho
423c5f8e77 wayland: Let IM events go through
These paths implicitly relied on the forwarded IM key events having
a source_device backed by a real HW device. This assumption is no
longer held true since commit b5328c977.

Explicitly check the INPUT_METHOD flag so they are handled as they
should despite not being "real HW" events.
2018-04-24 23:48:01 +02:00
Mario Sanchez Prada
3bbff94878 backend: Don't center the pointers on monitor changes
As a follow up to the patch from a95cbd0a, we need to make sure
that the pointer is out of the way as well when monitors changed,
since that's the event that will prevail in some cases. Besides,
this is also consistent with what the code before a95cbd0a was,
which initialized the pointer position in the same way both in
this case and in the real_post_init() function.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/157
2018-04-24 21:58:38 +01:00
Carlos Garnacho
4ef886f51e wayland: Avoid actor updates non actor_surface role wl_surface.commit
We used to maintain an actor for cursors, even though we would possibly
use hw overlays or even some other overlay actor for those. This happens
no more, so check whether we are dealing with an actor-backed surface role
before fiddling with it.
2018-04-23 21:31:19 +02:00
Carlos Garnacho
22485ba36f wayland: Refactor surface actor into MetaWaylandActorSurface
All surface roles that do need a backing actor inherit from this
class, it makes sense to move actor management there. This also
means the MetaWaylandActorSurface is in charge of emitting
::geometry-changed on the MetaWaylandSurface.
2018-04-23 21:31:19 +02:00
Carlos Garnacho
8df2a1452c wayland: Notify actively of xwayland window/surface associations
Instead of scheduling a meta_later, keep track of the unassociated
windows, and look for matches as soon as the MetaWaylandSurface is
created on our side.

This will ensure the surface is given the Xwayland role before receiving
the first wl_surface.commit.
2018-04-23 21:31:19 +02:00
Carlos Garnacho
b12c92e206 wayland: Add MetaWaylandSurface::geometry-changed signal
Abstract this instead of having callers connect to notify:: signals
on the surface actor.
2018-04-23 21:31:19 +02:00
Carlos Garnacho
70036429bd wayland: Abstract access to the actor corresponding to a wl_surface
The actor itself will be shuffled around, abstract all external
access to it behind a function to make that easier later on.
2018-04-23 12:24:46 +02:00
Carlos Garnacho
44502be560 wayland: Do not reset frame list when merging pending state
In the synchronized subsurface case, the destination list may
contain other elements from previous wl_surface.commit calls.
Resetting the list will leave those dangling frame callbacks
that will lead to invalid writes when those get to be destroyed
(eg. on client shutdown).
2018-04-22 00:52:48 +02:00
Carlos Garnacho
8cf42cd06c clutter: Plug minor leak
clutter_stage_manager_list_stages() returns a copied list, which
should be freed.
2018-04-22 00:52:19 +02:00
Carlos Garnacho
b5328c977e clutter: Set slave=master in IM forwarded key events
The fix is twofold. On one hand, it makes sense not to relate IM (nor
any other) generated events to a HW device. On the other hand, if we
are unfortunate that an IM event is in flight when we are switching
to another TTY, it may arrive at a time when the source device is no
longer existent.
2018-04-22 00:52:05 +02:00
Marco Trevisan (Treviño)
4339b23dd0 theme, frames: Use surface device scale instead of cairo_scale
Gtk now is caching the themed cairo surfaces, then as per
commit gtk@e36b629c the surface device scale is used to figure
out the current paint scaling.

Without this when using background-image's for window buttons
the -gtk-scaled icons isn't properly resized.

Fixes #99
2018-04-20 14:38:57 +00:00
Mario Sanchez Prada
a95cbd0aca backends: Don't center the pointer on initialization
Centering the pointer at startup causes undesired behaviour if
it ends up hovering over reactive elements, that might react
to that positioning, causing confusion. This is the case of
the login dialog when a list of different users is shown, as
centering the pointer at startup in that case will get the
user in the center of the screen pre-selected, which is not
the expected behaviour (i.e. pre-selecting the first one).

Fix this by simply moving the pointer out of the way, close
to the bottom-right corner, during initialization.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/157
2018-04-18 19:14:26 +00:00
Olivier Fourdan
6df2b7af55 clutter/evdev: Don't ignore CAPS lock as modifier
Mark CAPS lock as a modifier (as it should) so that when using XKB
options to change the default behaviour of CAPS lock, the new assigned
key can by used as a sticky key as well.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/112
2018-04-18 17:07:21 +02:00
Olivier Fourdan
c01b099dbd clutter/evdev: ignore injected events from IM
Input method can inject key events, which leads to multiple reported key
press/release events for a single user action.

Ignore those events as this confuses keyboard accessibility.
2018-04-18 17:07:21 +02:00
Ray Strode
2d80fd02e7 xwayland: Don't abort if Xwayland crashes
Right now if Xwayland crashes, we crash, too.

On some level that makes sense, since we're supposed to control the
lifecycle of Xwayland, and by it crashing we've lost that control.

But practically speaking, the knock-on crash adds noise to the logs,
bug trackers, and retrace servers that only makes debugging harder.
And the crash isn't something mutter can "fix", since it's
ultimately from a bug in Xwayland anyway.

This commit makes mutter exit instead of crash if Xwayland goes away
unexpectedly.
2018-04-17 11:14:00 -04:00
Ray Strode
bb65854065 xwayland: use g_autoptr for GError in xserver_died
Right now we explicitly g_clear_error any error we find, but that
makes it tricky to return early from the function, which a
subsequent commit will want to to do.

This commit switches GError to use g_autoptr so the error clearing
happens automatically.
2018-04-17 11:14:00 -04:00
Georges Basile Stavracas Neto
bc05e49eba gpu-kms: Return NULL, not FALSE
Another small mistake spotted while working on #77. This
function returns a pointer, thus we should return NULL,
not FALSE.

Issue: #77
2018-04-16 16:30:21 +02:00
Georges Basile Stavracas Neto
773b8384fa monitor-manager-kms: Don't add GPU if it fails
This is a small mistake spotted while working on a solution
for #77. When a GPU fails to initialize, we're adding them
anyway, which might have pretty bad consequences when trying
to use these NULL GPUs.

Issue: #77
2018-04-16 16:30:21 +02:00
Georges Basile Stavracas Neto
7fdac6d310 monitor-manager-kms: Use g_autoptr for error
A minor code cleanup.
2018-04-16 16:30:21 +02:00
Jonas Ådahl
f6cd87734d native: Disable the use of KMS modifiers by default
Make it re-enable:able by a hidden "experimental feature". To enable, add
"kms-modifiers" to the org.gnome.mutter.experimental-features GSettings entry.
2018-04-16 16:29:38 +02:00
Bastien Nocera
01a0fa9437 idle-monitor: Add ResetIdletime API, for testing purposes
The ResetIdletime API can be used instead of an "XTest" binary to
programmatically reset the idle time, as if the user pressed a button on
a keyboard.

This is necessary since we stopped using the XSync extension to monitor
idletimes, as it didn't consider inhibitors as busy, and mutter's
clutter code ignores "Core Events" as generated by XTest.

This patch will require minimal changes to gnome-settings-daemon's power
test suite so that "key press" idletime resets are triggered through
this D-Bus interface rather than through XTest and a roundtrip through
the X server.

https://bugzilla.gnome.org/show_bug.cgi?id=705942
2018-04-16 13:28:03 +02:00
Bastien Nocera
657417a578 backend: Reset idle when lid is opened or resuming from suspend
There's no particular reason for this code to only ever be triggered on
Wayland, and allows removing X11-specific work-arounds from
gnome-settings-daemon.

See https://bugs.freedesktop.org/show_bug.cgi?id=59576

https://bugzilla.gnome.org/show_bug.cgi?id=705942
2018-04-16 13:28:03 +02:00
Bastien Nocera
4af00ae296 idle-monitor: Take idle inhibition into account
Take idle inhibitions into account for when to fire idle watches as
requested by OS components.

This should stop gnome-session and gnome-settings-daemon considering
the session idle when they have been inhibited for longer than their
timeout, for example to avoid the screensaver activating, or the
computer suspending after watching a film.

https://bugzilla.gnome.org/show_bug.cgi?id=705942
2018-04-16 13:28:03 +02:00
Bastien Nocera
84e575be77 x11: Allow XTest and core events to reset idletime
Now that we've removed the X11 specific backend of the idle monitor,
add back a cut-down version of it for the explicit purpose of being
told about idle time resets when XTest events are used.

XTest events are usually used by test suites and remote display software
to inject events into an X11 session. We should consider somebody moving
the mouse remotely to be just as "active" as somebody moving it locally.

https://bugzilla.gnome.org/show_bug.cgi?id=705942
2018-04-16 13:28:03 +02:00
Bastien Nocera
7945ee5beb backends: Remove X11 idle-monitor backend
And use the old "native" backend for both X11 and Wayland. This will
allow us to share fixes between implementations without having to delve
into the XSync X11 extension code.

https://bugzilla.gnome.org/show_bug.cgi?id=705942
2018-04-16 13:28:03 +02:00
Carlos Garnacho
b6f5bab212 wayland: Plug surface pending state contents leak
When moving the pending state of an effectively synchronized subsurface
so it is applied together with the parent, perform a merge of the source
MetaWaylandPendingState into the destination one, instead of simply
overwriting the struct.

The other approach had 2 kind of leaks, one that would happen everytime
a wl_surface.commit happens on a sync subsurface (both surface/buffer
damage regions are leaked). The other more unlikely one would apply on
the rest of pending state data, happening whenever the compositor gets
>1 wl_surface.commit calls on the subsurface before the parent surface
gets its own.

The function has also been renamed to use the more descriptive "merge"
term.

Related: gnome-shell#64
2018-04-12 23:35:20 +02:00
Aleksandr Mezin
5ad34e0efb monitor-manager: fix output ids returned by GetResources
Output ID is set equal to 'i' later in the loop. But 'i' was never
incremented, so all outputs were getting the same ID (equal to
the number of CRTCs, because 'i' was reused from the previous loop).


(cherry picked from commit 23c3f8bb18)
2018-04-11 17:57:25 +00:00
Matej Urbančič
a1c34aad09 Updated Slovenian translation 2018-04-10 17:58:55 +02:00
Benjamin Otte
98dfd5b887 screen-cast: Fix compile error
Credit goes to gcc for finding this typo.
2018-04-10 13:02:51 +02:00
Olivier Fourdan
17a745bf81 wayland: update enter/leave output after effects
Compositor effects change the actor size and position, which can lead to
inconsistent output enter/leave notifications, leaving clients' surfaces
without any output set.

Update output enter/leave notifications after all compositor effects are
completed so that we give clients accurate output location.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/104
2018-04-09 10:19:26 +02:00
Olivier Fourdan
85bbd82ae8 window-actor: add new signal "effects-completed"
When using plugins, the effects will affect the MetaWindowActor size
and position.

Add a new signal "effects-completed" wired to the corresponding
MetaWindowActor which is emitted when all effects are completed so that
derived objects can be notified when all effects are completed and use
the actual size and position.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/104
2018-04-09 10:19:26 +02:00
Marco Trevisan (Treviño)
deda7a5235 theme: Scale titlebar spacing when computing x
The value is not scaled by default so it needs to be adjusted
depending on the window scaling, as it's done in other places.

Fixes: #87
2018-04-03 20:27:21 +00:00
Marco Trevisan (Treviño)
96141e28f9 theme: add ".appmenu" class to the appmenu button
So it does gtk headerbar, so mutter should do.
2018-04-03 20:16:15 +00:00
Daniel Stone
e6109cfc22 renderer-native: Fall back to non-modifier GBM surfaces
If we attempt GBM surface allocation with a set of modifiers but the
allocation fails, fall back to non-modifier allocations. This fixes
startup on Pineview-based Atom systems, where KMS provides us a set of
modifiers but the GBM implementation doesn't support modifier use.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/84
2018-04-03 18:17:04 +00:00
Carlos Garnacho
3684f6b0ac clutter: Apply input hints/purpose on ClutterTextInputFocus focus in
And make the ClutterText-level properties independent from the input
focus, as those properties can be set anytime, not just when the
ClutterText actor is focused.

https://gitlab.gnome.org/GNOME/mutter/issues/66

Closes: #66
2018-04-03 14:55:17 +00:00
Alberts Muktupāvels
31b5059068 input-settings: Fix a typo in tap-and-drag setting 2018-03-29 09:51:32 -05:00
Olivier Fourdan
ebff7fd7f4 cursor-renderer-native: take rotation into account
Rotating an output would show duplicate cursors when the pointer is
located over an area which would be within the output if not rotated.

Make sure to swap the width/height of the output when rotated.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/85
2018-03-29 06:34:37 +00:00
Daniel van Vugt
6e415353e3 renderer-native: Swap then await earlier flips.
Rendering the next frame (which mostly happens as part of the flush done
in swap buffers) is a task that the GPU can complete independently of
the CPU having to wait for previous page flips. So reverse their order
to get the GPU started earlier, with the aim of greater GPU-CPU
parallelism.
2018-03-29 13:35:59 +08:00
Olivier Fourdan
67917db45f wayland: Use cursor position in logical monitor
When using two monitors size by side with different scales, once the
cursor moves from one output to another one, its size changes based on
the scale of the given output.

Changing the size of the cursor can cause the cursor area to change
output again if the hotspot is not exactly at the top left corner of the
area, causing the texture of the cursor to change, which will trigger
another output change, so on and so forth causing continuous surface
enter/leave event which flood the clients and eventually kill them.

Change the logic to use only the actual cursor position to determine if
its on the given logical monitor, so that it remains immune to scale
changes induced by output scale differences.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/83
2018-03-23 15:12:37 +01:00
Yussuf Khalil
8286557a05 clutter: Avoid unnecessary relayouts in ClutterText
We can save an unnecessary relayout if the required size to fully draw the text
is equal to the currently allocated size after the underlying text buffer or
attributes that only affect the PangoLayout have changed.
2018-03-22 21:21:43 +01:00
Georges Basile Stavracas Neto
63e2c0329f window: Fix a small memory leak 2018-03-21 21:16:23 -03:00
Rasmus Thomsen
06c357d781 mutter: allow building with elogind
This commit allows building mutter with elogind, which is
systemd-logind extracted into a standalone package. This
allows using mutter with its native-backend ( and consequently
wayland ) enabled on distros which use init systems other than
systemd.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/46
2018-03-21 21:42:37 +01:00
Carlos Garnacho
2f260edf19 cogl: Read pixels as per the stored format
By the looks of it, commit 95e9fa10ef was taping over an Intel DRI bug
that would make it return post-swizzling pixel data on glReadPixels().
There's been reports over time of that commit resulting in wrong colors
on other drivers, and lately Mesa >17.3 started showing the same symptoms
on Intel.

But texture swizzling works by changing parameters before fragment shaders
and reading pixels from an already drawn FBO/texture doesn't involve those.
This should thus use pixel_format_to_gl_with_target(), which will result in
correctly requesting the same pixel format than the underlying texture,
while still considering it BGRA for the upper layers in the swizzling case.

https://gitlab.gnome.org/GNOME/mutter/issues/72

Closes: #72
2018-03-21 18:45:20 +00:00
Ting-Wei Lan
a5fd9a6e2f main: Fix build when native backend is disabled 2018-03-21 13:14:51 +00:00
Ting-Wei Lan
4e6114b14d configure: Don't declare functions in AC_TRY_LINK and AC_TRY_COMPILE
https://bugzilla.gnome.org/show_bug.cgi?id=792717
2018-03-21 13:14:50 +00:00
Ting-Wei Lan
65630d6310 build: Use portable sed syntax in src/Makefile.am
Replace non-portable \+ with \{, \} to avoid build failure on systems
not using GNU sed.

https://bugzilla.gnome.org/show_bug.cgi?id=792280
2018-03-21 13:14:50 +00:00
handsome-feng
b8a81128e0 Fix some spelling errors
https://gitlab.gnome.org/GNOME/mutter/merge_requests/45
2018-03-21 13:22:35 +08:00
Matej Urbančič
19e55b9a8c Added Slovenian translation 2018-03-20 22:39:36 +01:00
Dušan Kazik
9ea9352c93 Update Slovak translation 2018-03-17 20:53:06 +00:00
Carlos Garnacho
817a76a7f5 wayland: Add parentheses around logical AND
As "suggested" by gcc and -Werror. Introduced by commit cb40049ec.
2018-03-16 16:59:14 +01:00
Carlos Garnacho
cb40049ec1 wayland: Ignore IM/synthetic key events when updating XKB state
This state tracks hardware devices' state, thus shouldn't be triggered by
events that were emulated/forwarded by the IM. Those may include modifiers
and would result in xkb_state being doubly set, and possibly stuck.

https://gitlab.gnome.org/GNOME/mutter/issues/74

Closes: #74
2018-03-15 18:44:07 +01:00
Carlos Garnacho
481e87032c clutter: Give the ClutterTextInputFocus a first stab at handling key events
Actor keybindings were dispatched in an earlier return path, which means
the IM doesn't get to see certain key events. Flip the order around so the
IM has an opportunity to handle all keypresses.

https://gitlab.gnome.org/GNOME/mutter/issues/65

Closes: #65
2018-03-13 20:00:10 +00:00
Emin Tufan Çetin
bf5ac39d46 Update Turkish translation 2018-03-13 17:15:33 +00:00
Florian Müllner
47856d9701 Bump version to 3.28.0
Update NEWS.
2018-03-12 19:45:19 +01:00
Mart Raudsepp
06429b12e2 Update Estonian translation 2018-03-12 17:29:38 +00:00
Carlos Garnacho
419fb81d40 wayland: Fix wrong condition in xdg_exporter.export
Commit d714a94d9 added support for stable xdg-shell surfaces while
preserving old unstable zxdg-shell v6 ones, but committed a mistake
in checking for both in the xdg_exporter.export error condition
paths. We want to check that the surface is neither of both.

https://gitlab.gnome.org/GNOME/mutter/issues/63

Closes: #63
2018-03-12 17:15:07 +00:00
Anders Jonsson
f1bbe5c251 Update Swedish translation 2018-03-11 20:28:03 +00:00
Chao-Hsiung Liao
27fef44d48 Update Chinese (Taiwan) translation 2018-03-10 12:20:08 +00:00
Georges Basile Stavracas Neto
00b8ca7aeb Revert "window: Raise and lower tile match in tandem"
Raising and lowering windows in tandem without a proper grouping
mechanism ended up being more annoying than functional.

This reverts commit e76a0f564c.
2018-03-09 20:13:14 +01:00
Ask Hjorth Larsen
675d429ba0 Updated Danish translation 2018-03-07 22:37:47 +01:00
Marek Cernocky
f4d754c934 Updated Czech translation 2018-03-07 19:33:55 +01:00
Florian Müllner
8ae79182c1 Bump version to 3.27.92
Update NEWS.
2018-03-05 20:01:34 +01:00
Jonas Ådahl
712ec30cd9 renderer/native: Force EGL config pixel format
We just arbitrarily chose the first EGL config matching the passed
attributes, but we then assumed we always got GBM_FORMAT_XRGB8888. That
was not a correct assumption. Instead, make sure we always pick the
format we expect.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/2
2018-03-05 15:42:27 +00:00
Jonas Ådahl
7a41483ea0 egl: Fail first config choosing when no results
If there was no matching config, fail to find the first one.

https://gitlab.gnome.org/GNOME/mutter/issues/2
2018-03-05 15:42:27 +00:00
Jonas Ådahl
b4d642be52 egl: Rename EGL simple config chooser
It just picked the first config, so name it accordingly.

https://gitlab.gnome.org/GNOME/mutter/issues/2
2018-03-05 15:42:26 +00:00
Carlos Garnacho
0bf0e5780c clutter/x11: Communicate proper group/mode on pad events.
So we can trigger actions for the right mode.

https://gitlab.gnome.org/GNOME/mutter/issues/48

Closes: #48
2018-03-03 16:07:24 +00:00
Carlos Garnacho
d7c5e57134 clutter/x11: Implement missing ClutterInputDevice pad vmethods
Use libwacom to be able to find out modes, groups and button roles on
pad devices.

https://gitlab.gnome.org/GNOME/mutter/issues/48

Closes: #48
2018-03-03 16:07:23 +00:00
Egmont Koblinger
67bf936ef8 theme: Fix icon scaling
When painting the titlebar, button icons that aren't available in the
desired size need to be scaled. However the current code inverses the
scale factor, with the result that the adjusted icons are much worse
than the original icons, whoops.

This went unnoticed for a long time given that most icons are availa-
ble in the desired 16x16 size, and the most likely exceptions - window
icons - are not shown by default.

https://gitlab.gnome.org/GNOME/mutter/issues/23
2018-03-03 15:48:35 +00:00
Fran Dieguez
15b7b40ea8 Update Galician translation 2018-03-03 13:18:53 +00:00
Aurimas Černius
81bff3eba6 Updated Lithuanian translation 2018-03-03 13:37:54 +02:00
Claude Paroz
da3fd8f7fb Updated French translation 2018-03-03 11:19:13 +01:00
GNOME Translation Robot
6e125d9d04 Update Dutch translation 2018-03-01 18:56:38 +00:00
GNOME Translation Robot
80705018f9 Update Scottish Gaelic translation
(cherry picked from commit 543d031a55)
2018-03-01 10:46:47 +00:00
Mario Blättermann
f39dacd451 Update German translation 2018-02-27 20:02:50 +00:00
Carlos Garnacho
33c070cdd5 backends/x11: Plug a leak 2018-02-27 14:10:04 +01:00
Carlos Garnacho
8d2f794bd3 clutter/x11: Plug a leak 2018-02-27 14:09:48 +01:00
Bastien Nocera
1458dc394a build: Fix build with older versions of wayland-protocols
Instead of bailing out when a seemingly random file is missing, require
the version of wayland-protocols that includes the source to create that
built file.

Introduced in d714a94
2018-02-27 11:18:15 +01:00
Milo Casagrande
c93877abb5 Update Italian translation 2018-02-26 07:58:26 +00:00
Rūdolfs Mazurs
ef0efc9589 Update Latvian translation 2018-02-25 13:47:46 +00:00
Gwan-gyeong Mun
09cdf39b68 Update Korean translation 2018-02-24 08:05:34 +00:00
Balázs Úr
a6ccbbfe68 Update Hungarian translation 2018-02-23 22:54:11 +00:00
Jonas Ådahl
e502adfa04 remote-desktop, screen-cast: Add version number to D-Bus APIs
In order to let applications gracefully handle version mismatches, add
a version property to the APIs. Also add a warning on the APIs that
these are not meant for public consumption.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
8dd377da38 remote-desktop: Add support for discovering supported device types
This is so that application will not try to send touch events when
touch is not supported.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
03a12f9458 remote-desktop: Add touch screen event support 2018-02-23 19:33:31 +08:00
Jonas Ådahl
061f69f2a2 remote-desktop: Fix absolute pointer motion coordinates
If the coordinates was for a stream not at the stage position (0, 0),
they'd be incorrect. Fix this by correctly translating the coordinates
according to the stream position.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
4d5e1f690d screen-cast-stream: Add API to transform relative coordinates
Will be used to translate stream local coordinates to stage coordinates.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
f3203f0330 screen-cast-session: Add API to get stream from object path
Will be needed by the remote desktop session to translate stream local
input coordinates.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
d27e6921d6 remote-desktop: Add relative pointer motion event support
Relative pointer motions are assumed to be pre-accelerated.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
c459ad7932 remote-desktop: Add smooth scroll event support 2018-02-23 19:33:31 +08:00
Jonas Ådahl
5ee825c081 remote-desktop: Add keyboard keycode event support
Keyboard keycode events will act as a physical keyboard thus depend on
the active keyboard layout.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
1ead513b66 remote-desktop: Support multiple axis steps at once
Just call the corresponding clutter API once for each step.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
9ed236bd67 remote-desktop: Fix notify axis input validity check
The check was inverted; allowed axis are 0 and 1, not the other way
around.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
a1517cae1c clutter/device-manager: Add way to check virtual device support
This is needed so that mutter can let applications using the remote
desktop API to know whether touch screens are supported.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
542502be53 clutter/x11: Add pointer motion support to virtual devices
As the other virtual input event delivery mechanisms, this also uses
the XTEST protocol.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
203a0b37ed clutter: Add smooth scroll and touch API to virtual devices
So far only implemented on the evdev backend,as X11 doesn't support touch
devices nor smooth scrolling via XTEST.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
b6477a826d clutter/evdev: Don't treat device touch slots as seat slots
IF two touch devices have colliding touch point IDs they'd interfere on
the seat. To avoid this, always allocate a seat wide slot for each
device wide slot, but don't use device slots directly in the seat.
2018-02-23 19:33:31 +08:00
Jonas Ådahl
95adc45b71 clutter/evdev: Move touch notification to seat 2018-02-23 19:24:07 +08:00
Jonas Ådahl
f20daf567d clutter: Silence gtk-doc warning 2018-02-23 19:24:07 +08:00
Jonas Ådahl
4345906663 wayland: Define abstract role types as actually abstract
They should not be instantiated by themself, only as actual roles.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 19:07:49 +08:00
Jonas Ådahl
d714a94d97 wayland: Add support for stable xdg-shell
This commit adds support for xdg_shell (the stable version). This was
done by first copying the old xdg-shell unstable v6 implementation into
a separate .c .h file pair (including various symbol renaming) then
porting the old xdg-shell unstable v6 implementation to the new stable
version.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:53 +08:00
Jonas Ådahl
514c7028f4 wayland: Use helper to set shell surface window
The helper deals with updating the surface output state.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:50 +08:00
Jonas Ådahl
44624736c5 wayland: Push actor state instead of itself pulling
Make the Wayland objects push the state relevant to their role to the
MetaSurfaceActor instead of MetaSurfaceActorWayland pulling the state
from the associated surface.

This makes the relationship between the actor and the objects that
constructs it more clear; the actor is a drawable that the protocol
objects control, not the other way around.

This will make it easier to "detach" a surface actor from a surface,
which is necessary when unmapping a window while the underlying surface
is yet to be destroyed and potentially reused.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:47 +08:00
Jonas Ådahl
0162cdf8ef surface-actor/wayland: Minor style fixes
https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:45 +08:00
Jonas Ådahl
7e17dd0098 xwayland: Base Xwayland surface role object on the actor role
The Xwayland role uses a MetaSurfaceActorWayland just so lets share
logic related to it. As a side effect, wl_surface.enter/leave starts
working for Xwayland surfaces.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:42 +08:00
Jonas Ådahl
704b73b041 wayland: Restructure surface role building blocks code
This commit moves out non-core wl_surface related code into separate
code units, while renaming types to fit a common scheme. The changes
done are:

 * ClutterActor based surface roles built upon
   MetaWalyandSurfaceRoleActorSurface. This object has been renamed to
   MetaWaylandActorSurface and related functionality has moved into
   meta-wayland-actor-surface.c.

 * The code related to roles backed by a MetaWindow (i.e. built upon
   MetaWaylandShellSurface) was moved into meta-wayland-shell-surface.c

 * The majority of subsurface related code was moved into into
   meta-wayland-subsurface.c and the object was renamed
   MetaWaylandSubsurface.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:40 +08:00
Jonas Ådahl
bd5e36cf0e wayland/surface: Stop using deprecated g_object_newv
Replace it with g_object_new_with_properties. This fixes a warning
about using deprecated API.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:38 +08:00
Jonas Ådahl
dbf56e24cb wayland/xdg-shell: Minor cosmetic cleanups
https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:36 +08:00
Jonas Ådahl
0371897e22 wayland/xdg-shell: Standardize xdg_positioner Wayland vfunc naming
Use the convention [interface]_[request] (..) used elsewhere in the
file.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:34 +08:00
Jonas Ådahl
cc5fe05c4d wayland/xdg-shell: Standardize object class interface vfunc names
Follow the convention that MetaSomeObject's class vfuncs should be
named meta_some_object_said_vfunc.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:28 +08:00
Jonas Ådahl
d8f13f6b4c wayland: Shorten MetaWaylandSurfaceRoleShellSurface name
It was annoyingly long, so rename it to MetaWaylandShellSurface.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:25 +08:00
Jonas Ådahl
a2959510e5 .gitignore: Add more things to ignore
Various protocol files had not been added.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/5
https://bugzilla.gnome.org/show_bug.cgi?id=791938
2018-02-23 18:57:16 +08:00
Robert Mader
c8fbd4bee8 src/Makefile.am: Remove redundant generation rules
https://bugzilla.gnome.org/show_bug.cgi?id=792203
2018-02-23 18:52:58 +08:00
Fran Dieguez
d5631f793e Update Galician translation 2018-02-23 00:50:09 +00:00
Милош Поповић
d4d160a186 Update Serbian Latin translation 2018-02-22 13:03:55 +00:00
Марко Костић
4719c3f31e Update Serbian translation 2018-02-22 13:02:35 +00:00
Daniel Mustieles
1f5a2d6029 Updated Spanish translation 2018-02-22 12:40:22 +01:00
Olivier Fourdan
19bf4cf4f8 x11: Do not discard shape region for undecorated windows
mutter would discard the shape region set by the client if its matches
the entire client area in meta_window_x11_update_shape_region().

However, if the window is later resized (maximized or other), the
compositor will fail to update the shape region properly for undecorated
windows because the shape region was discarded, which causes black areas
to appear in place of the updated areas.

If the client window is undecorated, keep the shape region even if when
it matches the client area.

https://gitlab.gnome.org/GNOME/mutter/issues/27

Closes: #27
2018-02-22 08:02:01 +00:00
Louis-Francis Ratté-Boulianne
6f59e4858e renderer/native: Don't use modifiers to import linear DMA buffer
When the buffer modifier is DRM_FORMAT_MOD_LINEAR, we can use the
old code path. That means not specifying any modifier parameter.

It was an issue when the primary GPU was creating a linear GBM surface
and that a secondary GPU (not supporting modifiers) was trying to
import it. It was failing because the driver could not use the
import_modifiers extension even though it could in theory easily
import the buffer.

https://gitlab.gnome.org/GNOME/mutter/issues/18
2018-02-22 14:01:48 +08:00
Louis-Francis Ratté-Boulianne
aec85281ba native/renderer: Retrieve the right modifiers set for each GPU
We were retrieving the supported KMS modifiers for all GPUs even
though what we really need to intersect between these sets of
modifiers:

1) KMS supported modifiers for primary GPU if the GPU is used for
   scanout;

2) EGL supported modifiers for secondary GPUs (different than the
   primary GPU used for rendering);

3) GBM supported modifiers when creating the surface (already
   taken care of by gbm_surface_create_with_modifiers());

https://gitlab.gnome.org/GNOME/mutter/issues/18
2018-02-22 14:01:48 +08:00
Louis-Francis Ratté-Boulianne
b22875aae9 renderer/native: Use the right EGL image parameters for extra planes
There was a typo for modifier parameter of planes 1 & 2.

https://gitlab.gnome.org/GNOME/mutter/issues/18
2018-02-22 14:01:48 +08:00
Jonas Ådahl
962712ddc2 configure.ac: Bump API version number
Better late then never.

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/6
2018-02-21 23:52:32 +08:00
154 changed files with 11357 additions and 6153 deletions

8
.gitignore vendored
View File

@@ -92,6 +92,14 @@ src/xdg-output-unstable-v1-protocol.c
src/xdg-output-unstable-v1-server-protocol.h src/xdg-output-unstable-v1-server-protocol.h
src/xwayland-keyboard-grab-unstable-v1-protocol.c src/xwayland-keyboard-grab-unstable-v1-protocol.c
src/xwayland-keyboard-grab-unstable-v1-server-protocol.h src/xwayland-keyboard-grab-unstable-v1-server-protocol.h
src/tablet-unstable-v*-protocol.c
src/tablet-unstable-v*-server-protocol.h
src/keyboard-shortcuts-inhibit-unstable-v*-protocol.c
src/keyboard-shortcuts-inhibit-unstable-v*-server-protocol.h
src/linux-dmabuf-unstable-v*-protocol.c
src/linux-dmabuf-unstable-v*-server-protocol.h
src/xdg-shell-protocol.c
src/xdg-shell-server-protocol.h
src/meta/meta-version.h src/meta/meta-version.h
src/libmutter-*.pc src/libmutter-*.pc
doc/reference/*.args doc/reference/*.args

66
NEWS
View File

@@ -1,3 +1,69 @@
3.29.2
======
* Fix size change animations on wayland [Georges; #780292]
* Handle touch events on server-side titlebars [Carlos; #770185]
* Misc. bug fixes [Florian, Olivier, Jonas, Georges; #134, #124, !96, #138,
!102, #781471, #150]
Contributors:
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Florian Müllner,
Georges Basile Stavracas Neto, Marco Trevisan (Treviño), Daniel van Vugt
Translators:
Daniel Șerbănescu [ro], Marcos Lans [gl], Dz Chen [zh_CN]
3.29.1
======
* Fix various input-method regressions [Carlos, Olivier; #65, #74, #66, #112]
* Fix wayland build on FreeBSD [Ting-Wei; #792280, #792717]
* Fix swapped colors in screenshots (again) [Carlos; #72]
* Allow building with elogind [Rasmus; !46]
* Consider display rotation for cursor [Olivier; #85]
* Fall back to non-modifier GBM surfaces [Daniel; #84]
* Take inhibitors into account for monitoring idle [Bastien; #705942]
* Misc. bug fixes [handsome-feng, Olivier, Mario, Jonas; !45, #83, #104,
gnome-shell#157, #130, #21]
Contributors:
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, handsome-feng, Yussuf Khalil,
Ting-Wei Lan, Aleksandr Mezin, Alberts Muktupāvels,
Georges Basile Stavracas Neto, Bastien Nocera, Benjamin Otte,
Mario Sanchez Prada, Daniel Stone, Ray Strode, Rasmus Thomsen,
Marco Trevisan (Treviño), Daniel van Vugt
Translators:
Emin Tufan Çetin [tr], Dušan Kazik [sk], Matej Urbančič [sl]
3.28.0
======
* Fix xdg-foreign regression [Carlos; #63]
Contributors:
Carlos Garnacho, Georges Basile Stavracas Neto
Translators:
Marek Cernocky [cs], Ask Hjorth Larsen [da], Chao-Hsiung Liao [zh_TW],
Anders Jonsson [sv], Mart Raudsepp [et]
3.27.92
=======
* Fix use of modifiers with multi-GPU systems [Louis-Francis; #18]
* Add xdg-shell stable support [Jonas; #791938]
* Fix scaling of icons in titlebar buttons [Egmont; #23]
* Implement missing wacom functionality on X11 [Carlos; #48]
* Force 8-bit RGB config [Jonas; #2]
* Misc. bug fixes [Jonas, Olivier, Robert; #6, #27, #792203]
Contributors:
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Egmont Koblinger, Robert Mader,
Bastien Nocera, Louis-Francis Ratté-Boulianne
Translators:
Daniel Mustieles [es], Марко Костић [sr], Милош Поповић [sr@latin],
Fran Dieguez [gl], Balázs Úr [hu], Gwan-gyeong Mun [ko], Rūdolfs Mazurs [lv],
Milo Casagrande [it], Mario Blättermann [de], GNOME Translation Robot [gd,
nl], Claude Paroz [fr], Aurimas Černius [lt]
3.27.91 3.27.91
======= =======
* Fix handling of trackball settings on wayland [Carlos; #787804] * Fix handling of trackball settings on wayland [Carlos; #787804]

View File

@@ -692,7 +692,7 @@ Cally_@LIBMUTTER_API_VERSION@_gir_CFLAGS = $(AM_CPPFLAGS) $(CLUTTER_CFLAGS)
Cally_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \ Cally_@LIBMUTTER_API_VERSION@_gir_SCANNERFLAGS = \
--warn-all \ --warn-all \
--c-include='cally/cally.h' \ --c-include='cally/cally.h' \
--pkg-export=mutter-cally-@LIBMUTTER_API_VERSION@ \ --pkg-export=mutter-clutter-@LIBMUTTER_API_VERSION@ \
--include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir --include-uninstalled=$(top_builddir)/clutter/Clutter-@LIBMUTTER_API_VERSION@.gir
INTROSPECTION_GIRS += Cally-@LIBMUTTER_API_VERSION@.gir INTROSPECTION_GIRS += Cally-@LIBMUTTER_API_VERSION@.gir

View File

@@ -214,6 +214,8 @@ cally_util_simulate_snooper_install (void)
G_CALLBACK (cally_util_stage_added_cb), cally_key_snooper); G_CALLBACK (cally_util_stage_added_cb), cally_key_snooper);
g_signal_connect (G_OBJECT (stage_manager), "stage-removed", g_signal_connect (G_OBJECT (stage_manager), "stage-removed",
G_CALLBACK (cally_util_stage_removed_cb), cally_key_snooper); G_CALLBACK (cally_util_stage_removed_cb), cally_key_snooper);
g_slist_free (stage_list);
} }
static void static void

View File

@@ -2821,7 +2821,7 @@ _clutter_actor_fully_transform_vertices (ClutterActor *self,
/* Note: we pass NULL as the ancestor because we don't just want the modelview /* Note: we pass NULL as the ancestor because we don't just want the modelview
* that gets us to stage coordinates, we want to go all the way to eye * that gets us to stage coordinates, we want to go all the way to eye
* coordinates */ * coordinates */
_clutter_actor_apply_relative_transformation_matrix (self, NULL, &modelview); _clutter_actor_get_relative_transformation_matrix (self, NULL, &modelview);
/* Fetch the projection and viewport */ /* Fetch the projection and viewport */
_clutter_stage_get_projection_matrix (CLUTTER_STAGE (stage), &projection); _clutter_stage_get_projection_matrix (CLUTTER_STAGE (stage), &projection);

View File

@@ -324,7 +324,7 @@ _clutter_bezier_init (ClutterBezier *b,
* triggers, we need to change those two functions a bit. * triggers, we need to change those two functions a bit.
*/ */
if (b->ax > 0x1fff || b->bx > 0x1fff || b->cx > 0x1fff) if (b->ax > 0x1fff || b->bx > 0x1fff || b->cx > 0x1fff)
g_warning ("Calculated coefficents will result in multiplication " g_warning ("Calculated coefficients will result in multiplication "
"overflow in clutter_bezier_t2x and clutter_bezier_t2y."); "overflow in clutter_bezier_t2x and clutter_bezier_t2y.");
/* /*

View File

@@ -516,6 +516,21 @@ clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_man
device_type); device_type);
} }
/**
* clutter_device_manager_supported_virtua_device_types: (skip)
*/
ClutterVirtualDeviceType
clutter_device_manager_get_supported_virtual_device_types (ClutterDeviceManager *device_manager)
{
ClutterDeviceManagerClass *manager_class;
g_return_val_if_fail (CLUTTER_IS_DEVICE_MANAGER (device_manager),
CLUTTER_VIRTUAL_DEVICE_TYPE_NONE);
manager_class = CLUTTER_DEVICE_MANAGER_GET_CLASS (device_manager);
return manager_class->get_supported_virtual_device_types (device_manager);
}
void void
_clutter_device_manager_compress_motion (ClutterDeviceManager *device_manager, _clutter_device_manager_compress_motion (ClutterDeviceManager *device_manager,
ClutterEvent *event, ClutterEvent *event,

View File

@@ -44,6 +44,16 @@ typedef struct _ClutterDeviceManager ClutterDeviceManager;
typedef struct _ClutterDeviceManagerPrivate ClutterDeviceManagerPrivate; typedef struct _ClutterDeviceManagerPrivate ClutterDeviceManagerPrivate;
typedef struct _ClutterDeviceManagerClass ClutterDeviceManagerClass; typedef struct _ClutterDeviceManagerClass ClutterDeviceManagerClass;
/**
* ClutterVirtualDeviceType:
*/
typedef enum _ClutterVirtualDeviceType
{
CLUTTER_VIRTUAL_DEVICE_TYPE_NONE = 0,
CLUTTER_VIRTUAL_DEVICE_TYPE_KEYBOARD = 1 << 0,
CLUTTER_VIRTUAL_DEVICE_TYPE_POINTER = 1 << 1,
CLUTTER_VIRTUAL_DEVICE_TYPE_TOUCHSCREEN = 1 << 2,
} ClutterVirtualDeviceType;
/** /**
* ClutterKbdA11ySettings: * ClutterKbdA11ySettings:
@@ -104,6 +114,7 @@ struct _ClutterDeviceManagerClass
ClutterStage *stage); ClutterStage *stage);
ClutterVirtualInputDevice *(* create_virtual_device) (ClutterDeviceManager *device_manager, ClutterVirtualInputDevice *(* create_virtual_device) (ClutterDeviceManager *device_manager,
ClutterInputDeviceType device_type); ClutterInputDeviceType device_type);
ClutterVirtualDeviceType (* get_supported_virtual_device_types) (ClutterDeviceManager *device_manager);
void (* compress_motion) (ClutterDeviceManager *device_manger, void (* compress_motion) (ClutterDeviceManager *device_manger,
ClutterEvent *event, ClutterEvent *event,
const ClutterEvent *to_discard); const ClutterEvent *to_discard);
@@ -135,6 +146,9 @@ CLUTTER_AVAILABLE_IN_ALL
ClutterVirtualInputDevice *clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_manager, ClutterVirtualInputDevice *clutter_device_manager_create_virtual_device (ClutterDeviceManager *device_manager,
ClutterInputDeviceType device_type); ClutterInputDeviceType device_type);
CLUTTER_AVAILABLE_IN_ALL
ClutterVirtualDeviceType clutter_device_manager_get_supported_virtual_device_types (ClutterDeviceManager *device_manager);
CLUTTER_AVAILABLE_IN_ALL CLUTTER_AVAILABLE_IN_ALL
void clutter_device_manager_set_kbd_a11y_settings (ClutterDeviceManager *device_manager, void clutter_device_manager_set_kbd_a11y_settings (ClutterDeviceManager *device_manager,
ClutterKbdA11ySettings *settings); ClutterKbdA11ySettings *settings);

View File

@@ -318,8 +318,9 @@ clutter_input_method_request_surrounding (ClutterInputMethod *im)
/** /**
* clutter_input_method_set_preedit_text: * clutter_input_method_set_preedit_text:
* @method: a #ClutterInputMethod * @im: a #ClutterInputMethod
* @preedit: (nullable): the preedit text, or %NULL * @preedit: (nullable): the preedit text, or %NULL
* @cursor: the cursor
* *
* Sets the preedit text on the current input focus. * Sets the preedit text on the current input focus.
**/ **/
@@ -352,6 +353,7 @@ clutter_input_method_notify_key_event (ClutterInputMethod *im,
copy = clutter_event_copy (event); copy = clutter_event_copy (event);
clutter_event_set_flags (copy, clutter_event_get_flags (event) | clutter_event_set_flags (copy, clutter_event_get_flags (event) |
CLUTTER_EVENT_FLAG_INPUT_METHOD); CLUTTER_EVENT_FLAG_INPUT_METHOD);
clutter_event_set_source_device (copy, clutter_event_get_device (copy));
clutter_event_put (copy); clutter_event_put (copy);
clutter_event_free (copy); clutter_event_free (copy);
} }

View File

@@ -2224,6 +2224,11 @@ clutter_text_key_press (ClutterActor *actor,
pool = clutter_binding_pool_find (g_type_name (CLUTTER_TYPE_TEXT)); pool = clutter_binding_pool_find (g_type_name (CLUTTER_TYPE_TEXT));
g_assert (pool != NULL); g_assert (pool != NULL);
if (!(event->flags & CLUTTER_EVENT_FLAG_INPUT_METHOD) &&
clutter_input_focus_is_focused (priv->input_focus) &&
clutter_input_focus_filter_key_event (priv->input_focus, event))
return CLUTTER_EVENT_STOP;
/* we allow passing synthetic events that only contain /* we allow passing synthetic events that only contain
* the Unicode value and not the key symbol, unless they * the Unicode value and not the key symbol, unless they
* contain the input method flag. * contain the input method flag.
@@ -2247,10 +2252,6 @@ clutter_text_key_press (ClutterActor *actor,
{ {
gunichar key_unichar; gunichar key_unichar;
if (clutter_input_focus_is_focused (priv->input_focus) &&
clutter_input_focus_filter_key_event (priv->input_focus, event))
return CLUTTER_EVENT_STOP;
/* Skip keys when control is pressed */ /* Skip keys when control is pressed */
key_unichar = clutter_event_get_key_unicode ((ClutterEvent *) event); key_unichar = clutter_event_get_key_unicode ((ClutterEvent *) event);
@@ -2829,6 +2830,10 @@ clutter_text_key_focus_in (ClutterActor *actor)
if (method && priv->editable) if (method && priv->editable)
{ {
clutter_input_method_focus_in (method, priv->input_focus); clutter_input_method_focus_in (method, priv->input_focus);
clutter_input_focus_set_content_purpose (priv->input_focus,
priv->input_purpose);
clutter_input_focus_set_content_hints (priv->input_focus,
priv->input_hints);
update_cursor_location (CLUTTER_TEXT (actor)); update_cursor_location (CLUTTER_TEXT (actor));
} }
@@ -4510,6 +4515,27 @@ buffer_deleted_text (ClutterTextBuffer *buffer,
} }
} }
static void
clutter_text_queue_redraw_or_relayout (ClutterText *self)
{
ClutterActor *actor = CLUTTER_ACTOR (self);
gfloat preferred_width;
gfloat preferred_height;
clutter_text_dirty_cache (self);
/* we're using our private implementations here to avoid the caching done by ClutterActor */
clutter_text_get_preferred_width (actor, -1, NULL, &preferred_width);
clutter_text_get_preferred_height (actor, preferred_width, NULL, &preferred_height);
if (clutter_actor_has_allocation (actor) &&
(fabsf (preferred_width - clutter_actor_get_width (actor)) > 0.001 ||
fabsf (preferred_height - clutter_actor_get_height (actor)) > 0.001))
clutter_actor_queue_relayout (actor);
else
clutter_text_queue_redraw (actor);
}
static void static void
buffer_notify_text (ClutterTextBuffer *buffer, buffer_notify_text (ClutterTextBuffer *buffer,
GParamSpec *spec, GParamSpec *spec,
@@ -4517,9 +4543,7 @@ buffer_notify_text (ClutterTextBuffer *buffer,
{ {
g_object_freeze_notify (G_OBJECT (self)); g_object_freeze_notify (G_OBJECT (self));
clutter_text_dirty_cache (self); clutter_text_queue_redraw_or_relayout (self);
clutter_actor_queue_relayout (CLUTTER_ACTOR (self));
g_signal_emit (self, text_signals[TEXT_CHANGED], 0); g_signal_emit (self, text_signals[TEXT_CHANGED], 0);
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_TEXT]); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_TEXT]);
@@ -4871,8 +4895,7 @@ clutter_text_set_cursor_visible (ClutterText *self,
{ {
priv->cursor_visible = cursor_visible; priv->cursor_visible = cursor_visible;
clutter_text_dirty_cache (self); clutter_text_queue_redraw_or_relayout (self);
clutter_actor_queue_relayout (CLUTTER_ACTOR (self));
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_CURSOR_VISIBLE]); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_CURSOR_VISIBLE]);
} }
@@ -5773,9 +5796,7 @@ clutter_text_set_line_alignment (ClutterText *self,
{ {
priv->alignment = alignment; priv->alignment = alignment;
clutter_text_dirty_cache (self); clutter_text_queue_redraw_or_relayout (self);
clutter_actor_queue_relayout (CLUTTER_ACTOR (self));
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_LINE_ALIGNMENT]); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_LINE_ALIGNMENT]);
} }
@@ -5830,9 +5851,7 @@ clutter_text_set_use_markup (ClutterText *self,
if (setting) if (setting)
clutter_text_set_markup_internal (self, text); clutter_text_set_markup_internal (self, text);
clutter_text_dirty_cache (self); clutter_text_queue_redraw_or_relayout (self);
clutter_actor_queue_relayout (CLUTTER_ACTOR (self));
} }
/** /**
@@ -5879,9 +5898,7 @@ clutter_text_set_justify (ClutterText *self,
{ {
priv->justify = justify; priv->justify = justify;
clutter_text_dirty_cache (self); clutter_text_queue_redraw_or_relayout (self);
clutter_actor_queue_relayout (CLUTTER_ACTOR (self));
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_JUSTIFY]); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_JUSTIFY]);
} }
@@ -6448,8 +6465,7 @@ clutter_text_set_preedit_string (ClutterText *self,
priv->preedit_set = TRUE; priv->preedit_set = TRUE;
} }
clutter_text_dirty_cache (self); clutter_text_queue_redraw_or_relayout (self);
clutter_actor_queue_relayout (CLUTTER_ACTOR (self));
} }
@@ -6511,7 +6527,9 @@ clutter_text_set_input_hints (ClutterText *self,
g_return_if_fail (CLUTTER_IS_TEXT (self)); g_return_if_fail (CLUTTER_IS_TEXT (self));
self->priv->input_hints = hints; self->priv->input_hints = hints;
clutter_input_focus_set_content_hints (self->priv->input_focus, hints);
if (clutter_input_focus_is_focused (self->priv->input_focus))
clutter_input_focus_set_content_hints (self->priv->input_focus, hints);
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_INPUT_HINTS]); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_INPUT_HINTS]);
} }
@@ -6530,7 +6548,9 @@ clutter_text_set_input_purpose (ClutterText *self,
g_return_if_fail (CLUTTER_IS_TEXT (self)); g_return_if_fail (CLUTTER_IS_TEXT (self));
self->priv->input_purpose = purpose; self->priv->input_purpose = purpose;
clutter_input_focus_set_content_purpose (self->priv->input_focus, purpose);
if (clutter_input_focus_is_focused (self->priv->input_focus))
clutter_input_focus_set_content_purpose (self->priv->input_focus, purpose);
g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_INPUT_PURPOSE]); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_INPUT_PURPOSE]);
} }

View File

@@ -128,6 +128,61 @@ clutter_virtual_input_device_notify_discrete_scroll (ClutterVirtualInputDevice *
direction, scroll_source); direction, scroll_source);
} }
void
clutter_virtual_input_device_notify_scroll_continuous (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
double dx,
double dy,
ClutterScrollSource scroll_source,
ClutterScrollFinishFlags finish_flags)
{
ClutterVirtualInputDeviceClass *klass =
CLUTTER_VIRTUAL_INPUT_DEVICE_GET_CLASS (virtual_device);
klass->notify_scroll_continuous (virtual_device, time_us,
dx, dy, scroll_source, finish_flags);
}
void
clutter_virtual_input_device_notify_touch_down (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot,
double x,
double y)
{
ClutterVirtualInputDeviceClass *klass =
CLUTTER_VIRTUAL_INPUT_DEVICE_GET_CLASS (virtual_device);
klass->notify_touch_down (virtual_device, time_us,
slot, x, y);
}
void
clutter_virtual_input_device_notify_touch_motion (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot,
double x,
double y)
{
ClutterVirtualInputDeviceClass *klass =
CLUTTER_VIRTUAL_INPUT_DEVICE_GET_CLASS (virtual_device);
klass->notify_touch_motion (virtual_device, time_us,
slot, x, y);
}
void
clutter_virtual_input_device_notify_touch_up (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot)
{
ClutterVirtualInputDeviceClass *klass =
CLUTTER_VIRTUAL_INPUT_DEVICE_GET_CLASS (virtual_device);
klass->notify_touch_up (virtual_device, time_us,
slot);
}
/** /**
* clutter_virtual_input_device_get_manager: * clutter_virtual_input_device_get_manager:
* @virtual_device: a virtual device * @virtual_device: a virtual device

View File

@@ -81,6 +81,29 @@ struct _ClutterVirtualInputDeviceClass
uint64_t time_us, uint64_t time_us,
ClutterScrollDirection direction, ClutterScrollDirection direction,
ClutterScrollSource scroll_source); ClutterScrollSource scroll_source);
void (*notify_scroll_continuous) (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
double dx,
double dy,
ClutterScrollSource scroll_source,
ClutterScrollFinishFlags finish_flags);
void (*notify_touch_down) (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot,
double x,
double y);
void (*notify_touch_motion) (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot,
double x,
double y);
void (*notify_touch_up) (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot);
}; };
CLUTTER_AVAILABLE_IN_ALL CLUTTER_AVAILABLE_IN_ALL
@@ -119,6 +142,32 @@ void clutter_virtual_input_device_notify_discrete_scroll (ClutterVirtualInputDev
ClutterScrollDirection direction, ClutterScrollDirection direction,
ClutterScrollSource scroll_source); ClutterScrollSource scroll_source);
CLUTTER_AVAILABLE_IN_ALL
void clutter_virtual_input_device_notify_scroll_continuous (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
double dx,
double dy,
ClutterScrollSource scroll_source,
ClutterScrollFinishFlags finish_flags);
CLUTTER_AVAILABLE_IN_ALL
void clutter_virtual_input_device_notify_touch_down (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot,
double x,
double y);
CLUTTER_AVAILABLE_IN_ALL
void clutter_virtual_input_device_notify_touch_motion (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot,
double x,
double y);
CLUTTER_AVAILABLE_IN_ALL
void clutter_virtual_input_device_notify_touch_up (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int slot);
CLUTTER_AVAILABLE_IN_ALL CLUTTER_AVAILABLE_IN_ALL
ClutterDeviceManager * clutter_virtual_input_device_get_manager (ClutterVirtualInputDevice *virtual_device); ClutterDeviceManager * clutter_virtual_input_device_get_manager (ClutterVirtualInputDevice *virtual_device);

View File

@@ -397,54 +397,6 @@ notify_relative_tool_motion (ClutterInputDevice *input_device,
queue_event (event); queue_event (event);
} }
static void
notify_touch_event (ClutterInputDevice *input_device,
ClutterEventType evtype,
guint64 time_us,
gint32 slot,
gdouble x,
gdouble y)
{
ClutterInputDeviceEvdev *device_evdev;
ClutterSeatEvdev *seat;
ClutterStage *stage;
ClutterEvent *event = NULL;
/* We can drop the event on the floor if no stage has been
* associated with the device yet. */
stage = _clutter_input_device_get_stage (input_device);
if (stage == NULL)
return;
device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (input_device);
seat = _clutter_input_device_evdev_get_seat (device_evdev);
event = clutter_event_new (evtype);
_clutter_evdev_event_set_time_usec (event, time_us);
event->touch.time = us2ms (time_us);
event->touch.stage = CLUTTER_STAGE (stage);
event->touch.device = seat->core_pointer;
event->touch.x = x;
event->touch.y = y;
clutter_input_device_evdev_translate_coordinates (input_device, stage,
&event->touch.x,
&event->touch.y);
/* "NULL" sequences are special cased in clutter */
event->touch.sequence = GINT_TO_POINTER (MAX (1, slot + 1));
_clutter_xkb_translate_state (event, seat->xkb, seat->button_state);
if (evtype == CLUTTER_TOUCH_BEGIN ||
evtype == CLUTTER_TOUCH_UPDATE)
event->touch.modifier_state |= CLUTTER_BUTTON1_MASK;
clutter_event_set_device (event, seat->core_pointer);
clutter_event_set_source_device (event, input_device);
queue_event (event);
}
static void static void
notify_pinch_gesture_event (ClutterInputDevice *input_device, notify_pinch_gesture_event (ClutterInputDevice *input_device,
ClutterTouchpadGesturePhase phase, ClutterTouchpadGesturePhase phase,
@@ -841,10 +793,12 @@ evdev_add_device (ClutterDeviceManagerEvdev *manager_evdev,
if (priv->main_seat->libinput_seat == NULL) if (priv->main_seat->libinput_seat == NULL)
seat = priv->main_seat; seat = priv->main_seat;
else else
seat = clutter_seat_evdev_new (manager_evdev); {
seat = clutter_seat_evdev_new (manager_evdev);
priv->seats = g_slist_append (priv->seats, seat);
}
clutter_seat_evdev_set_libinput_seat (seat, libinput_seat); clutter_seat_evdev_set_libinput_seat (seat, libinput_seat);
priv->seats = g_slist_append (priv->seats, seat);
} }
device = _clutter_input_device_evdev_new (manager, seat, libinput_device); device = _clutter_input_device_evdev_new (manager, seat, libinput_device);
@@ -967,7 +921,6 @@ clutter_device_manager_evdev_get_device (ClutterDeviceManager *manager,
ClutterDeviceManagerEvdev *manager_evdev; ClutterDeviceManagerEvdev *manager_evdev;
ClutterDeviceManagerEvdevPrivate *priv; ClutterDeviceManagerEvdevPrivate *priv;
GSList *l; GSList *l;
GSList *device_it;
manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager); manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (manager);
priv = manager_evdev->priv; priv = manager_evdev->priv;
@@ -975,14 +928,10 @@ clutter_device_manager_evdev_get_device (ClutterDeviceManager *manager,
for (l = priv->seats; l; l = l->next) for (l = priv->seats; l; l = l->next)
{ {
ClutterSeatEvdev *seat = l->data; ClutterSeatEvdev *seat = l->data;
ClutterInputDevice *device = clutter_seat_evdev_get_device (seat, id);
for (device_it = seat->devices; device_it; device_it = device_it->next) if (device)
{ return device;
ClutterInputDevice *device = device_it->data;
if (clutter_input_device_get_device_id (device) == id)
return device;
}
} }
return NULL; return NULL;
@@ -1252,6 +1201,7 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
gboolean handled = TRUE; gboolean handled = TRUE;
struct libinput_device *libinput_device = libinput_event_get_device(event); struct libinput_device *libinput_device = libinput_event_get_device(event);
ClutterInputDevice *device; ClutterInputDevice *device;
ClutterInputDeviceEvdev *device_evdev;
switch (libinput_event_get_type (event)) switch (libinput_event_get_type (event))
{ {
@@ -1408,7 +1358,7 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
case LIBINPUT_EVENT_TOUCH_DOWN: case LIBINPUT_EVENT_TOUCH_DOWN:
{ {
gint32 slot; int device_slot;
guint64 time_us; guint64 time_us;
double x, y; double x, y;
gfloat stage_width, stage_height; gfloat stage_width, stage_height;
@@ -1419,7 +1369,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
libinput_event_get_touch_event (event); libinput_event_get_touch_event (event);
device = libinput_device_get_user_data (libinput_device); device = libinput_device_get_user_data (libinput_device);
seat = _clutter_input_device_evdev_get_seat (CLUTTER_INPUT_DEVICE_EVDEV (device)); device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device);
seat = _clutter_input_device_evdev_get_seat (device_evdev);
stage = _clutter_input_device_get_stage (device); stage = _clutter_input_device_get_stage (device);
if (stage == NULL) if (stage == NULL)
@@ -1428,25 +1379,31 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage)); stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage)); stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
slot = libinput_event_touch_get_slot (touch_event); device_slot = libinput_event_touch_get_slot (touch_event);
time_us = libinput_event_touch_get_time_usec (touch_event); time_us = libinput_event_touch_get_time_usec (touch_event);
x = libinput_event_touch_get_x_transformed (touch_event, x = libinput_event_touch_get_x_transformed (touch_event,
stage_width); stage_width);
y = libinput_event_touch_get_y_transformed (touch_event, y = libinput_event_touch_get_y_transformed (touch_event,
stage_height); stage_height);
touch_state = clutter_seat_evdev_add_touch (seat, slot); touch_state =
clutter_input_device_evdev_acquire_touch_state (device_evdev,
device_slot);
touch_state->coords.x = x; touch_state->coords.x = x;
touch_state->coords.y = y; touch_state->coords.y = y;
notify_touch_event (device, CLUTTER_TOUCH_BEGIN, time_us, slot, clutter_seat_evdev_notify_touch_event (seat, device,
touch_state->coords.x, touch_state->coords.y); CLUTTER_TOUCH_BEGIN,
time_us,
touch_state->seat_slot,
touch_state->coords.x,
touch_state->coords.y);
break; break;
} }
case LIBINPUT_EVENT_TOUCH_UP: case LIBINPUT_EVENT_TOUCH_UP:
{ {
gint32 slot; int device_slot;
guint64 time_us; guint64 time_us;
ClutterSeatEvdev *seat; ClutterSeatEvdev *seat;
ClutterTouchState *touch_state; ClutterTouchState *touch_state;
@@ -1454,24 +1411,30 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
libinput_event_get_touch_event (event); libinput_event_get_touch_event (event);
device = libinput_device_get_user_data (libinput_device); device = libinput_device_get_user_data (libinput_device);
seat = _clutter_input_device_evdev_get_seat (CLUTTER_INPUT_DEVICE_EVDEV (device)); device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device);
seat = _clutter_input_device_evdev_get_seat (device_evdev);
slot = libinput_event_touch_get_slot (touch_event); device_slot = libinput_event_touch_get_slot (touch_event);
time_us = libinput_event_touch_get_time_usec (touch_event); time_us = libinput_event_touch_get_time_usec (touch_event);
touch_state = clutter_seat_evdev_get_touch (seat, slot); touch_state =
clutter_input_device_evdev_lookup_touch_state (device_evdev,
device_slot);
if (!touch_state) if (!touch_state)
break; break;
notify_touch_event (device, CLUTTER_TOUCH_END, time_us, slot, clutter_seat_evdev_notify_touch_event (seat, device,
touch_state->coords.x, touch_state->coords.y); CLUTTER_TOUCH_END, time_us,
clutter_seat_evdev_remove_touch (seat, slot); touch_state->seat_slot,
touch_state->coords.x,
touch_state->coords.y);
clutter_input_device_evdev_release_touch_state (device_evdev,
touch_state);
break; break;
} }
case LIBINPUT_EVENT_TOUCH_MOTION: case LIBINPUT_EVENT_TOUCH_MOTION:
{ {
gint32 slot; int device_slot;
guint64 time_us; guint64 time_us;
double x, y; double x, y;
gfloat stage_width, stage_height; gfloat stage_width, stage_height;
@@ -1482,7 +1445,8 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
libinput_event_get_touch_event (event); libinput_event_get_touch_event (event);
device = libinput_device_get_user_data (libinput_device); device = libinput_device_get_user_data (libinput_device);
seat = _clutter_input_device_evdev_get_seat (CLUTTER_INPUT_DEVICE_EVDEV (device)); device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device);
seat = _clutter_input_device_evdev_get_seat (device_evdev);
stage = _clutter_input_device_get_stage (device); stage = _clutter_input_device_get_stage (device);
if (stage == NULL) if (stage == NULL)
@@ -1491,45 +1455,41 @@ process_device_event (ClutterDeviceManagerEvdev *manager_evdev,
stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage)); stage_width = clutter_actor_get_width (CLUTTER_ACTOR (stage));
stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage)); stage_height = clutter_actor_get_height (CLUTTER_ACTOR (stage));
slot = libinput_event_touch_get_slot (touch_event); device_slot = libinput_event_touch_get_slot (touch_event);
time_us = libinput_event_touch_get_time_usec (touch_event); time_us = libinput_event_touch_get_time_usec (touch_event);
x = libinput_event_touch_get_x_transformed (touch_event, x = libinput_event_touch_get_x_transformed (touch_event,
stage_width); stage_width);
y = libinput_event_touch_get_y_transformed (touch_event, y = libinput_event_touch_get_y_transformed (touch_event,
stage_height); stage_height);
touch_state = clutter_seat_evdev_get_touch (seat, slot); touch_state =
clutter_input_device_evdev_lookup_touch_state (device_evdev,
device_slot);
if (!touch_state) if (!touch_state)
break; break;
touch_state->coords.x = x; touch_state->coords.x = x;
touch_state->coords.y = y; touch_state->coords.y = y;
notify_touch_event (device, CLUTTER_TOUCH_UPDATE, time_us, slot, clutter_seat_evdev_notify_touch_event (seat, device,
touch_state->coords.x, touch_state->coords.y); CLUTTER_TOUCH_UPDATE,
time_us,
touch_state->seat_slot,
touch_state->coords.x,
touch_state->coords.y);
break; break;
} }
case LIBINPUT_EVENT_TOUCH_CANCEL: case LIBINPUT_EVENT_TOUCH_CANCEL:
{ {
ClutterTouchState *touch_state;
GHashTableIter iter;
guint64 time_us; guint64 time_us;
struct libinput_event_touch *touch_event = struct libinput_event_touch *touch_event =
libinput_event_get_touch_event (event); libinput_event_get_touch_event (event);
ClutterSeatEvdev *seat;
device = libinput_device_get_user_data (libinput_device); device = libinput_device_get_user_data (libinput_device);
device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device);
time_us = libinput_event_touch_get_time_usec (touch_event); time_us = libinput_event_touch_get_time_usec (touch_event);
seat = _clutter_input_device_evdev_get_seat (CLUTTER_INPUT_DEVICE_EVDEV (device));
g_hash_table_iter_init (&iter, seat->touches);
while (g_hash_table_iter_next (&iter, NULL, (gpointer*) &touch_state)) clutter_input_device_evdev_release_touch_slots (device_evdev, time_us);
{
notify_touch_event (device, CLUTTER_TOUCH_CANCEL,
time_us, touch_state->id,
touch_state->coords.x, touch_state->coords.y);
g_hash_table_iter_remove (&iter);
}
break; break;
} }
@@ -1903,6 +1863,14 @@ clutter_device_manager_evdev_create_virtual_device (ClutterDeviceManager *manag
NULL); NULL);
} }
static ClutterVirtualDeviceType
clutter_device_manager_evdev_get_supported_virtual_device_types (ClutterDeviceManager *device_manager)
{
return (CLUTTER_VIRTUAL_DEVICE_TYPE_KEYBOARD |
CLUTTER_VIRTUAL_DEVICE_TYPE_POINTER |
CLUTTER_VIRTUAL_DEVICE_TYPE_TOUCHSCREEN);
}
static void static void
clutter_device_manager_evdev_compress_motion (ClutterDeviceManager *device_manger, clutter_device_manager_evdev_compress_motion (ClutterDeviceManager *device_manger,
ClutterEvent *event, ClutterEvent *event,
@@ -1996,6 +1964,7 @@ clutter_device_manager_evdev_constructed (GObject *gobject)
xkb_context_unref (ctx); xkb_context_unref (ctx);
priv->main_seat = clutter_seat_evdev_new (manager_evdev); priv->main_seat = clutter_seat_evdev_new (manager_evdev);
priv->seats = g_slist_append (priv->seats, priv->main_seat);
dispatch_libinput (manager_evdev); dispatch_libinput (manager_evdev);
@@ -2081,6 +2050,7 @@ clutter_device_manager_evdev_class_init (ClutterDeviceManagerEvdevClass *klass)
manager_class->get_core_device = clutter_device_manager_evdev_get_core_device; manager_class->get_core_device = clutter_device_manager_evdev_get_core_device;
manager_class->get_device = clutter_device_manager_evdev_get_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->create_virtual_device = clutter_device_manager_evdev_create_virtual_device;
manager_class->get_supported_virtual_device_types = clutter_device_manager_evdev_get_supported_virtual_device_types;
manager_class->compress_motion = clutter_device_manager_evdev_compress_motion; manager_class->compress_motion = clutter_device_manager_evdev_compress_motion;
manager_class->apply_kbd_a11y_settings = clutter_device_manager_evdev_apply_kbd_a11y_settings; manager_class->apply_kbd_a11y_settings = clutter_device_manager_evdev_apply_kbd_a11y_settings;
} }

View File

@@ -81,6 +81,9 @@ clutter_input_device_evdev_finalize (GObject *object)
if (device_evdev->libinput_device) if (device_evdev->libinput_device)
libinput_device_unref (device_evdev->libinput_device); libinput_device_unref (device_evdev->libinput_device);
clutter_input_device_evdev_release_touch_slots (device_evdev,
g_get_monotonic_time ());
_clutter_device_manager_evdev_release_device_id (manager_evdev, device); _clutter_device_manager_evdev_release_device_id (manager_evdev, device);
clear_slow_keys (device_evdev); clear_slow_keys (device_evdev);
@@ -430,6 +433,8 @@ key_event_is_modifier (ClutterEvent *event)
case XKB_KEY_Super_R: case XKB_KEY_Super_R:
case XKB_KEY_Hyper_L: case XKB_KEY_Hyper_L:
case XKB_KEY_Hyper_R: case XKB_KEY_Hyper_R:
case XKB_KEY_Caps_Lock:
case XKB_KEY_Shift_Lock:
return TRUE; return TRUE;
default: default:
return FALSE; return FALSE;
@@ -581,6 +586,12 @@ handle_stickykeys_press (ClutterEvent *event,
} }
depressed_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_DEPRESSED); depressed_mods = xkb_state_serialize_mods (seat->xkb, XKB_STATE_MODS_DEPRESSED);
/* Ignore the lock modifier mask, that one cannot be sticky, yet the
* CAPS_LOCK key itself counts as a modifier as it might be remapped
* to some other modifier which can be sticky.
*/
depressed_mods &= ~CLUTTER_LOCK_MASK;
new_latched_mask = device->stickykeys_latched_mask; new_latched_mask = device->stickykeys_latched_mask;
new_locked_mask = device->stickykeys_locked_mask; new_locked_mask = device->stickykeys_locked_mask;
@@ -1119,6 +1130,10 @@ clutter_input_device_evdev_process_kbd_a11y_event (ClutterEvent *e
{ {
ClutterInputDeviceEvdev *device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device); ClutterInputDeviceEvdev *device_evdev = CLUTTER_INPUT_DEVICE_EVDEV (device);
/* Ignore key events injected from IM */
if (event->key.flags & CLUTTER_EVENT_FLAG_INPUT_METHOD)
goto emit_event;
if (!device_evdev->a11y_flags & CLUTTER_A11Y_KEYBOARD_ENABLED) if (!device_evdev->a11y_flags & CLUTTER_A11Y_KEYBOARD_ENABLED)
goto emit_event; goto emit_event;
@@ -1215,6 +1230,44 @@ clutter_input_device_evdev_apply_kbd_a11y_settings (ClutterInputDeviceEvdev *dev
device->a11y_flags = settings->controls; device->a11y_flags = settings->controls;
} }
static void
release_device_touch_slot (gpointer value)
{
ClutterTouchState *touch_state = value;
clutter_seat_evdev_release_touch_state (touch_state->seat, touch_state);
}
ClutterTouchState *
clutter_input_device_evdev_acquire_touch_state (ClutterInputDeviceEvdev *device,
int device_slot)
{
ClutterTouchState *touch_state;
touch_state = clutter_seat_evdev_acquire_touch_state (device->seat,
device_slot);
g_hash_table_insert (device->touches,
GINT_TO_POINTER (device_slot),
touch_state);
return touch_state;
}
ClutterTouchState *
clutter_input_device_evdev_lookup_touch_state (ClutterInputDeviceEvdev *device,
int device_slot)
{
return g_hash_table_lookup (device->touches, GINT_TO_POINTER (device_slot));
}
void
clutter_input_device_evdev_release_touch_state (ClutterInputDeviceEvdev *device,
ClutterTouchState *touch_state)
{
g_hash_table_remove (device->touches,
GINT_TO_POINTER (touch_state->device_slot));
}
static void static void
clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass) clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass)
{ {
@@ -1253,6 +1306,9 @@ clutter_input_device_evdev_init (ClutterInputDeviceEvdev *self)
cairo_matrix_init_identity (&self->device_matrix); cairo_matrix_init_identity (&self->device_matrix);
self->device_aspect_ratio = 0; self->device_aspect_ratio = 0;
self->output_ratio = 0; self->output_ratio = 0;
self->touches = g_hash_table_new_full (NULL, NULL,
NULL, release_device_touch_slot);
} }
/* /*
@@ -1349,6 +1405,9 @@ _clutter_input_device_evdev_new_virtual (ClutterDeviceManager *manager,
case CLUTTER_POINTER_DEVICE: case CLUTTER_POINTER_DEVICE:
name = "Virtual pointer device for seat"; name = "Virtual pointer device for seat";
break; break;
case CLUTTER_TOUCHSCREEN_DEVICE:
name = "Virtual touchscreen device for seat";
break;
default: default:
name = "Virtual device for seat"; name = "Virtual device for seat";
break; break;
@@ -1486,3 +1545,24 @@ clutter_input_device_evdev_translate_coordinates (ClutterInputDevice *device,
*x = CLAMP (x_d, MIN (min_x, max_x), MAX (min_x, max_x)) * stage_width; *x = CLAMP (x_d, MIN (min_x, max_x), MAX (min_x, max_x)) * stage_width;
*y = CLAMP (y_d, MIN (min_y, max_y), MAX (min_y, max_y)) * stage_height; *y = CLAMP (y_d, MIN (min_y, max_y), MAX (min_y, max_y)) * stage_height;
} }
void
clutter_input_device_evdev_release_touch_slots (ClutterInputDeviceEvdev *device_evdev,
uint64_t time_us)
{
GHashTableIter iter;
ClutterTouchState *touch_state;
g_hash_table_iter_init (&iter, device_evdev->touches);
while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &touch_state))
{
clutter_seat_evdev_notify_touch_event (touch_state->seat,
CLUTTER_INPUT_DEVICE (device_evdev),
CLUTTER_TOUCH_CANCEL,
time_us,
touch_state->seat_slot,
touch_state->coords.x,
touch_state->coords.y);
g_hash_table_iter_remove (&iter);
}
}

View File

@@ -71,6 +71,8 @@ struct _ClutterInputDeviceEvdev
gdouble device_aspect_ratio; /* w:h */ gdouble device_aspect_ratio; /* w:h */
gdouble output_ratio; /* w:h */ gdouble output_ratio; /* w:h */
GHashTable *touches;
/* Keyboard a11y */ /* Keyboard a11y */
ClutterKeyboardA11yFlags a11y_flags; ClutterKeyboardA11yFlags a11y_flags;
GList *slow_keys_list; GList *slow_keys_list;
@@ -137,6 +139,19 @@ void clutter_input_device_evdev_translate_coordinates (Clut
void clutter_input_device_evdev_apply_kbd_a11y_settings (ClutterInputDeviceEvdev *device, void clutter_input_device_evdev_apply_kbd_a11y_settings (ClutterInputDeviceEvdev *device,
ClutterKbdA11ySettings *settings); ClutterKbdA11ySettings *settings);
ClutterTouchState * clutter_input_device_evdev_acquire_touch_state (ClutterInputDeviceEvdev *device,
int device_slot);
ClutterTouchState * clutter_input_device_evdev_lookup_touch_state (ClutterInputDeviceEvdev *device,
int device_slot);
void clutter_input_device_evdev_release_touch_state (ClutterInputDeviceEvdev *device,
ClutterTouchState *touch_state);
void clutter_input_device_evdev_release_touch_slots (ClutterInputDeviceEvdev *device_evdev,
uint64_t time_us);
G_END_DECLS G_END_DECLS
#endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */ #endif /* __CLUTTER_INPUT_DEVICE_EVDEV_H__ */

View File

@@ -92,32 +92,57 @@ clutter_touch_state_free (ClutterTouchState *touch_state)
g_slice_free (ClutterTouchState, touch_state); g_slice_free (ClutterTouchState, touch_state);
} }
ClutterTouchState * static void
clutter_seat_evdev_add_touch (ClutterSeatEvdev *seat, ensure_seat_slot_allocated (ClutterSeatEvdev *seat,
guint32 id) int seat_slot)
{ {
ClutterTouchState *touch; if (seat_slot >= seat->n_alloc_touch_states)
{
const int size_increase = 5;
int i;
touch = g_slice_new0 (ClutterTouchState); seat->n_alloc_touch_states += size_increase;
touch->id = id; seat->touch_states = g_realloc_n (seat->touch_states,
seat->n_alloc_touch_states,
sizeof (ClutterTouchState *));
for (i = 0; i < size_increase; i++)
seat->touch_states[seat->n_alloc_touch_states - (i + 1)] = NULL;
}
}
g_hash_table_insert (seat->touches, GUINT_TO_POINTER (id), touch); ClutterTouchState *
clutter_seat_evdev_acquire_touch_state (ClutterSeatEvdev *seat,
int device_slot)
{
ClutterTouchState *touch_state;
int seat_slot;
return touch; for (seat_slot = 0; seat_slot < seat->n_alloc_touch_states; seat_slot++)
{
if (!seat->touch_states[seat_slot])
break;
}
ensure_seat_slot_allocated (seat, seat_slot);
touch_state = g_slice_new0 (ClutterTouchState);
*touch_state = (ClutterTouchState) {
.seat = seat,
.seat_slot = seat_slot,
.device_slot = device_slot,
};
seat->touch_states[seat_slot] = touch_state;
return touch_state;
} }
void void
clutter_seat_evdev_remove_touch (ClutterSeatEvdev *seat, clutter_seat_evdev_release_touch_state (ClutterSeatEvdev *seat,
guint32 id) ClutterTouchState *touch_state)
{ {
g_hash_table_remove (seat->touches, GUINT_TO_POINTER (id)); g_clear_pointer (&seat->touch_states[touch_state->seat_slot],
} (GDestroyNotify) clutter_touch_state_free);
ClutterTouchState *
clutter_seat_evdev_get_touch (ClutterSeatEvdev *seat,
guint32 id)
{
return g_hash_table_lookup (seat->touches, GUINT_TO_POINTER (id));
} }
ClutterSeatEvdev * ClutterSeatEvdev *
@@ -154,9 +179,6 @@ clutter_seat_evdev_new (ClutterDeviceManagerEvdev *manager_evdev)
_clutter_device_manager_add_device (manager, device); _clutter_device_manager_add_device (manager, device);
seat->core_keyboard = device; seat->core_keyboard = device;
seat->touches = g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) clutter_touch_state_free);
seat->repeat = TRUE; seat->repeat = TRUE;
seat->repeat_delay = 250; /* ms */ seat->repeat_delay = 250; /* ms */
seat->repeat_interval = 33; /* ms */ seat->repeat_interval = 33; /* ms */
@@ -768,6 +790,50 @@ clutter_seat_evdev_notify_discrete_scroll (ClutterSeatEvdev *seat,
} }
void
clutter_seat_evdev_notify_touch_event (ClutterSeatEvdev *seat,
ClutterInputDevice *input_device,
ClutterEventType evtype,
uint64_t time_us,
int slot,
double x,
double y)
{
ClutterStage *stage;
ClutterEvent *event = NULL;
/* We can drop the event on the floor if no stage has been
* associated with the device yet. */
stage = _clutter_input_device_get_stage (input_device);
if (stage == NULL)
return;
event = clutter_event_new (evtype);
_clutter_evdev_event_set_time_usec (event, time_us);
event->touch.time = us2ms (time_us);
event->touch.stage = CLUTTER_STAGE (stage);
event->touch.device = seat->core_pointer;
event->touch.x = x;
event->touch.y = y;
clutter_input_device_evdev_translate_coordinates (input_device, stage,
&event->touch.x,
&event->touch.y);
/* "NULL" sequences are special cased in clutter */
event->touch.sequence = GINT_TO_POINTER (MAX (1, slot + 1));
_clutter_xkb_translate_state (event, seat->xkb, seat->button_state);
if (evtype == CLUTTER_TOUCH_BEGIN ||
evtype == CLUTTER_TOUCH_UPDATE)
event->touch.modifier_state |= CLUTTER_BUTTON1_MASK;
clutter_event_set_device (event, seat->core_pointer);
clutter_event_set_source_device (event, input_device);
queue_event (event);
}
void void
clutter_seat_evdev_free (ClutterSeatEvdev *seat) clutter_seat_evdev_free (ClutterSeatEvdev *seat)
{ {
@@ -780,7 +846,7 @@ clutter_seat_evdev_free (ClutterSeatEvdev *seat)
g_object_unref (device); g_object_unref (device);
} }
g_slist_free (seat->devices); g_slist_free (seat->devices);
g_hash_table_unref (seat->touches); g_free (seat->touch_states);
xkb_state_unref (seat->xkb); xkb_state_unref (seat->xkb);
@@ -792,6 +858,24 @@ clutter_seat_evdev_free (ClutterSeatEvdev *seat)
g_free (seat); g_free (seat);
} }
ClutterInputDevice *
clutter_seat_evdev_get_device (ClutterSeatEvdev *seat,
gint id)
{
ClutterInputDevice *device;
GSList *l;
for (l = seat->devices; l; l = l->next)
{
device = l->data;
if (clutter_input_device_get_device_id (device) == id)
return device;
}
return NULL;
}
void void
clutter_seat_evdev_set_stage (ClutterSeatEvdev *seat, clutter_seat_evdev_set_stage (ClutterSeatEvdev *seat,
ClutterStage *stage) ClutterStage *stage)

View File

@@ -38,7 +38,10 @@ typedef struct _ClutterTouchState ClutterTouchState;
struct _ClutterTouchState struct _ClutterTouchState
{ {
guint32 id; ClutterSeatEvdev *seat;
int device_slot;
int seat_slot;
ClutterPoint coords; ClutterPoint coords;
}; };
@@ -52,7 +55,8 @@ struct _ClutterSeatEvdev
ClutterInputDevice *core_pointer; ClutterInputDevice *core_pointer;
ClutterInputDevice *core_keyboard; ClutterInputDevice *core_keyboard;
GHashTable *touches; ClutterTouchState **touch_states;
int n_alloc_touch_states;
struct xkb_state *xkb; struct xkb_state *xkb;
xkb_led_index_t caps_lock_led; xkb_led_index_t caps_lock_led;
@@ -122,16 +126,27 @@ void clutter_seat_evdev_notify_discrete_scroll (ClutterSeatEvdev *seat,
double discrete_dy, double discrete_dy,
ClutterScrollSource source); ClutterScrollSource source);
void clutter_seat_evdev_notify_touch_event (ClutterSeatEvdev *seat,
ClutterInputDevice *input_device,
ClutterEventType evtype,
uint64_t time_us,
int slot,
double x,
double y);
void clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev *seat, void clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev *seat,
struct libinput_seat *libinput_seat); struct libinput_seat *libinput_seat);
void clutter_seat_evdev_sync_leds (ClutterSeatEvdev *seat); void clutter_seat_evdev_sync_leds (ClutterSeatEvdev *seat);
ClutterTouchState * clutter_seat_evdev_add_touch (ClutterSeatEvdev *seat, ClutterInputDevice * clutter_seat_evdev_get_device (ClutterSeatEvdev *seat,
guint32 id); gint id);
void clutter_seat_evdev_remove_touch (ClutterSeatEvdev *seat, ClutterTouchState * clutter_seat_evdev_acquire_touch_state (ClutterSeatEvdev *seat,
guint32 id); int device_slot);
void clutter_seat_evdev_release_touch_state (ClutterSeatEvdev *seat,
ClutterTouchState *touch_state);
ClutterTouchState * clutter_seat_evdev_get_touch (ClutterSeatEvdev *seat, ClutterTouchState * clutter_seat_evdev_get_touch (ClutterSeatEvdev *seat,
guint32 id); guint32 id);

View File

@@ -448,6 +448,124 @@ clutter_virtual_input_device_evdev_notify_discrete_scroll (ClutterVirtualInputDe
scroll_source); scroll_source);
} }
static void
clutter_virtual_input_device_evdev_notify_scroll_continuous (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
double dx,
double dy,
ClutterScrollSource scroll_source,
ClutterScrollFinishFlags finish_flags)
{
ClutterVirtualInputDeviceEvdev *virtual_evdev =
CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device);
if (time_us == CLUTTER_CURRENT_TIME)
time_us = g_get_monotonic_time ();
clutter_seat_evdev_notify_scroll_continuous (virtual_evdev->seat,
virtual_evdev->device,
time_us,
dx, dy,
scroll_source,
CLUTTER_SCROLL_FINISHED_NONE);
}
static void
clutter_virtual_input_device_evdev_notify_touch_down (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int device_slot,
double x,
double y)
{
ClutterVirtualInputDeviceEvdev *virtual_evdev =
CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device);
ClutterInputDeviceEvdev *device_evdev =
CLUTTER_INPUT_DEVICE_EVDEV (virtual_evdev->device);
ClutterTouchState *touch_state;
if (time_us == CLUTTER_CURRENT_TIME)
time_us = g_get_monotonic_time ();
touch_state = clutter_input_device_evdev_acquire_touch_state (device_evdev,
device_slot);
if (!touch_state)
return;
touch_state->coords.x = x;
touch_state->coords.y = y;
clutter_seat_evdev_notify_touch_event (virtual_evdev->seat,
virtual_evdev->device,
CLUTTER_TOUCH_BEGIN,
time_us,
touch_state->seat_slot,
touch_state->coords.x,
touch_state->coords.y);
}
static void
clutter_virtual_input_device_evdev_notify_touch_motion (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int device_slot,
double x,
double y)
{
ClutterVirtualInputDeviceEvdev *virtual_evdev =
CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device);
ClutterInputDeviceEvdev *device_evdev =
CLUTTER_INPUT_DEVICE_EVDEV (virtual_evdev->device);
ClutterTouchState *touch_state;
if (time_us == CLUTTER_CURRENT_TIME)
time_us = g_get_monotonic_time ();
touch_state = clutter_input_device_evdev_lookup_touch_state (device_evdev,
device_slot);
if (!touch_state)
return;
touch_state->coords.x = x;
touch_state->coords.y = y;
clutter_seat_evdev_notify_touch_event (virtual_evdev->seat,
virtual_evdev->device,
CLUTTER_TOUCH_BEGIN,
time_us,
touch_state->seat_slot,
touch_state->coords.x,
touch_state->coords.y);
}
static void
clutter_virtual_input_device_evdev_notify_touch_up (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int device_slot)
{
ClutterVirtualInputDeviceEvdev *virtual_evdev =
CLUTTER_VIRTUAL_INPUT_DEVICE_EVDEV (virtual_device);
ClutterInputDeviceEvdev *device_evdev =
CLUTTER_INPUT_DEVICE_EVDEV (virtual_evdev->device);
ClutterTouchState *touch_state;
if (time_us == CLUTTER_CURRENT_TIME)
time_us = g_get_monotonic_time ();
touch_state = clutter_input_device_evdev_lookup_touch_state (device_evdev,
device_slot);
if (!touch_state)
return;
clutter_seat_evdev_notify_touch_event (virtual_evdev->seat,
virtual_evdev->device,
CLUTTER_TOUCH_BEGIN,
time_us,
touch_state->seat_slot,
touch_state->coords.x,
touch_state->coords.y);
clutter_input_device_evdev_release_touch_state (device_evdev, touch_state);
}
static void static void
clutter_virtual_input_device_evdev_get_property (GObject *object, clutter_virtual_input_device_evdev_get_property (GObject *object,
guint prop_id, guint prop_id,
@@ -552,6 +670,10 @@ clutter_virtual_input_device_evdev_class_init (ClutterVirtualInputDeviceEvdevCla
virtual_input_device_class->notify_key = clutter_virtual_input_device_evdev_notify_key; virtual_input_device_class->notify_key = clutter_virtual_input_device_evdev_notify_key;
virtual_input_device_class->notify_keyval = clutter_virtual_input_device_evdev_notify_keyval; virtual_input_device_class->notify_keyval = clutter_virtual_input_device_evdev_notify_keyval;
virtual_input_device_class->notify_discrete_scroll = clutter_virtual_input_device_evdev_notify_discrete_scroll; virtual_input_device_class->notify_discrete_scroll = clutter_virtual_input_device_evdev_notify_discrete_scroll;
virtual_input_device_class->notify_scroll_continuous = clutter_virtual_input_device_evdev_notify_scroll_continuous;
virtual_input_device_class->notify_touch_down = clutter_virtual_input_device_evdev_notify_touch_down;
virtual_input_device_class->notify_touch_motion = clutter_virtual_input_device_evdev_notify_touch_motion;
virtual_input_device_class->notify_touch_up = clutter_virtual_input_device_evdev_notify_touch_up;
obj_props[PROP_SEAT] = g_param_spec_pointer ("seat", obj_props[PROP_SEAT] = g_param_spec_pointer ("seat",
P_("ClutterSeatEvdev"), P_("ClutterSeatEvdev"),

View File

@@ -490,6 +490,13 @@ clutter_device_manager_x11_create_virtual_device (ClutterDeviceManager *device_
return g_object_new (CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE_X11, NULL); return g_object_new (CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE_X11, NULL);
} }
static ClutterVirtualDeviceType
clutter_device_manager_x11_get_supported_virtual_device_types (ClutterDeviceManager *device_manager)
{
return (CLUTTER_VIRTUAL_DEVICE_TYPE_KEYBOARD |
CLUTTER_VIRTUAL_DEVICE_TYPE_POINTER);
}
static void static void
clutter_device_manager_x11_set_property (GObject *gobject, clutter_device_manager_x11_set_property (GObject *gobject,
guint prop_id, guint prop_id,
@@ -537,6 +544,7 @@ clutter_device_manager_x11_class_init (ClutterDeviceManagerX11Class *klass)
manager_class->get_core_device = clutter_device_manager_x11_get_core_device; manager_class->get_core_device = clutter_device_manager_x11_get_core_device;
manager_class->get_device = clutter_device_manager_x11_get_device; manager_class->get_device = clutter_device_manager_x11_get_device;
manager_class->create_virtual_device = clutter_device_manager_x11_create_virtual_device; manager_class->create_virtual_device = clutter_device_manager_x11_create_virtual_device;
manager_class->get_supported_virtual_device_types = clutter_device_manager_x11_get_supported_virtual_device_types;
manager_class->apply_kbd_a11y_settings = clutter_device_manager_x11_apply_kbd_a11y_settings; manager_class->apply_kbd_a11y_settings = clutter_device_manager_x11_apply_kbd_a11y_settings;
} }

View File

@@ -495,13 +495,21 @@ create_device (ClutterDeviceManagerXI2 *manager_xi2,
"device-node", node_path, "device-node", node_path,
"n-rings", num_rings, "n-rings", num_rings,
"n-strips", num_strips, "n-strips", num_strips,
"n-mode-groups", MAX (num_rings, num_strips),
NULL); NULL);
translate_device_classes (backend_x11->xdpy, retval, translate_device_classes (backend_x11->xdpy, retval,
info->classes, info->classes,
info->num_classes); info->num_classes);
#ifdef HAVE_LIBWACOM
if (source == CLUTTER_PAD_DEVICE)
clutter_input_device_xi2_ensure_wacom_info (retval, manager_xi2->wacom_db);
#endif
g_free (vendor_id); g_free (vendor_id);
g_free (product_id); g_free (product_id);
g_free (node_path);
CLUTTER_NOTE (BACKEND, "Created device '%s' (id: %d, has-cursor: %s)", CLUTTER_NOTE (BACKEND, "Created device '%s' (id: %d, has-cursor: %s)",
info->name, info->name,
@@ -1126,7 +1134,7 @@ translate_pad_event (ClutterEvent *event,
ClutterInputDevice *device) ClutterInputDevice *device)
{ {
gdouble value; gdouble value;
guint number; guint number, mode = 0;
if (!translate_pad_axis (device, &xev->valuators, if (!translate_pad_axis (device, &xev->valuators,
&event->any.type, &event->any.type,
@@ -1140,15 +1148,21 @@ translate_pad_event (ClutterEvent *event,
if (xev->evtype == XI_Motion) if (xev->evtype == XI_Motion)
value = -1; value = -1;
#ifdef HAVE_LIBWACOM
mode = clutter_input_device_xi2_get_pad_group_mode (device, number);
#endif
if (event->any.type == CLUTTER_PAD_RING) if (event->any.type == CLUTTER_PAD_RING)
{ {
event->pad_ring.ring_number = number; event->pad_ring.ring_number = number;
event->pad_ring.angle = value; event->pad_ring.angle = value;
event->pad_ring.mode = mode;
} }
else else
{ {
event->pad_strip.strip_number = number; event->pad_strip.strip_number = number;
event->pad_strip.value = value; event->pad_strip.value = value;
event->pad_strip.mode = mode;
} }
event->any.time = xev->time; event->any.time = xev->time;
@@ -1375,6 +1389,13 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
/* Pad buttons are 0-indexed */ /* Pad buttons are 0-indexed */
event->pad_button.button = xev->detail - 1; event->pad_button.button = xev->detail - 1;
#ifdef HAVE_LIBWACOM
clutter_input_device_xi2_update_pad_state (device,
event->pad_button.button,
(xi_event->evtype == XI_ButtonPress),
&event->pad_button.group,
&event->pad_button.mode);
#endif
clutter_event_set_device (event, device); clutter_event_set_device (event, device);
clutter_event_set_source_device (event, source_device); clutter_event_set_source_device (event, source_device);
@@ -2024,6 +2045,13 @@ clutter_device_manager_xi2_create_virtual_device (ClutterDeviceManager *manage
NULL); NULL);
} }
static ClutterVirtualDeviceType
clutter_device_manager_xi2_get_supported_virtual_device_types (ClutterDeviceManager *device_manager)
{
return (CLUTTER_VIRTUAL_DEVICE_TYPE_KEYBOARD |
CLUTTER_VIRTUAL_DEVICE_TYPE_POINTER);
}
static void static void
clutter_device_manager_xi2_class_init (ClutterDeviceManagerXI2Class *klass) clutter_device_manager_xi2_class_init (ClutterDeviceManagerXI2Class *klass)
{ {
@@ -2052,6 +2080,7 @@ clutter_device_manager_xi2_class_init (ClutterDeviceManagerXI2Class *klass)
manager_class->get_device = clutter_device_manager_xi2_get_device; manager_class->get_device = clutter_device_manager_xi2_get_device;
manager_class->select_stage_events = clutter_device_manager_xi2_select_stage_events; manager_class->select_stage_events = clutter_device_manager_xi2_select_stage_events;
manager_class->create_virtual_device = clutter_device_manager_xi2_create_virtual_device; manager_class->create_virtual_device = clutter_device_manager_xi2_create_virtual_device;
manager_class->get_supported_virtual_device_types = clutter_device_manager_xi2_get_supported_virtual_device_types;
manager_class->apply_kbd_a11y_settings = clutter_device_manager_x11_apply_kbd_a11y_settings; manager_class->apply_kbd_a11y_settings = clutter_device_manager_x11_apply_kbd_a11y_settings;
} }
@@ -2063,4 +2092,8 @@ clutter_device_manager_xi2_init (ClutterDeviceManagerXI2 *self)
(GDestroyNotify) g_object_unref); (GDestroyNotify) g_object_unref);
self->tools_by_serial = g_hash_table_new_full (NULL, NULL, NULL, self->tools_by_serial = g_hash_table_new_full (NULL, NULL, NULL,
(GDestroyNotify) g_object_unref); (GDestroyNotify) g_object_unref);
#ifdef HAVE_LIBWACOM
self->wacom_db = libwacom_database_new ();
#endif
} }

View File

@@ -26,6 +26,10 @@
#include <clutter/clutter-device-manager.h> #include <clutter/clutter-device-manager.h>
#ifdef HAVE_LIBWACOM
#include <libwacom/libwacom.h>
#endif
G_BEGIN_DECLS G_BEGIN_DECLS
#define CLUTTER_TYPE_DEVICE_MANAGER_XI2 (_clutter_device_manager_xi2_get_type ()) #define CLUTTER_TYPE_DEVICE_MANAGER_XI2 (_clutter_device_manager_xi2_get_type ())
@@ -51,6 +55,10 @@ struct _ClutterDeviceManagerXI2
GList *slave_devices; GList *slave_devices;
int opcode; int opcode;
#ifdef HAVE_LIBWACOM
WacomDeviceDatabase *wacom_db;
#endif
}; };
struct _ClutterDeviceManagerXI2Class struct _ClutterDeviceManagerXI2Class

View File

@@ -45,6 +45,11 @@ struct _ClutterInputDeviceXI2
gint device_id; gint device_id;
ClutterInputDeviceTool *current_tool; ClutterInputDeviceTool *current_tool;
#ifdef HAVE_LIBWACOM
WacomDevice *wacom_device;
GArray *group_modes;
#endif
}; };
#define N_BUTTONS 5 #define N_BUTTONS 5
@@ -64,6 +69,15 @@ clutter_input_device_xi2_constructed (GObject *gobject)
if (G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->constructed) if (G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->constructed)
G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->constructed (gobject); G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->constructed (gobject);
#ifdef HAVE_LIBWACOM
if (clutter_input_device_get_device_type (CLUTTER_INPUT_DEVICE (gobject)) == CLUTTER_PAD_DEVICE)
{
device_xi2->group_modes = g_array_new (FALSE, TRUE, sizeof (guint));
g_array_set_size (device_xi2->group_modes,
clutter_input_device_get_n_mode_groups (CLUTTER_INPUT_DEVICE (gobject)));
}
#endif
} }
static gboolean static gboolean
@@ -87,6 +101,85 @@ clutter_input_device_xi2_is_grouped (ClutterInputDevice *device,
return FALSE; return FALSE;
} }
static void
clutter_input_device_xi2_finalize (GObject *object)
{
#ifdef HAVE_LIBWACOM
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (object);
if (device_xi2->wacom_device)
libwacom_destroy (device_xi2->wacom_device);
if (device_xi2->group_modes)
g_array_unref (device_xi2->group_modes);
#endif
G_OBJECT_CLASS (clutter_input_device_xi2_parent_class)->finalize (object);
}
static gint
clutter_input_device_xi2_get_group_n_modes (ClutterInputDevice *device,
gint group)
{
#ifdef HAVE_LIBWACOM
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device);
if (device_xi2->wacom_device)
{
if (group == 0)
{
if (libwacom_has_ring (device_xi2->wacom_device))
return libwacom_get_ring_num_modes (device_xi2->wacom_device);
else if (libwacom_get_num_strips (device_xi2->wacom_device) >= 1)
return libwacom_get_strips_num_modes (device_xi2->wacom_device);
}
else if (group == 1)
{
if (libwacom_has_ring2 (device_xi2->wacom_device))
return libwacom_get_ring2_num_modes (device_xi2->wacom_device);
else if (libwacom_get_num_strips (device_xi2->wacom_device) >= 2)
return libwacom_get_strips_num_modes (device_xi2->wacom_device);
}
}
#endif
return -1;
}
#ifdef HAVE_LIBWACOM
static int
clutter_input_device_xi2_get_button_group (ClutterInputDevice *device,
guint button)
{
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device);
if (device_xi2->wacom_device)
{
if (button >= libwacom_get_num_buttons (device_xi2->wacom_device))
return -1;
return libwacom_get_button_led_group (device_xi2->wacom_device,
'A' + button);
}
else
return -1;
}
#endif
static gboolean
clutter_input_device_xi2_is_mode_switch_button (ClutterInputDevice *device,
guint group,
guint button)
{
int button_group = -1;
#ifdef HAVE_LIBWACOM
button_group = clutter_input_device_xi2_get_button_group (device, button);
#endif
return button_group == (int) group;
}
static void static void
clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass) clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass)
{ {
@@ -94,9 +187,12 @@ clutter_input_device_xi2_class_init (ClutterInputDeviceXI2Class *klass)
ClutterInputDeviceClass *device_class = CLUTTER_INPUT_DEVICE_CLASS (klass); ClutterInputDeviceClass *device_class = CLUTTER_INPUT_DEVICE_CLASS (klass);
gobject_class->constructed = clutter_input_device_xi2_constructed; gobject_class->constructed = clutter_input_device_xi2_constructed;
gobject_class->finalize = clutter_input_device_xi2_finalize;
device_class->keycode_to_evdev = clutter_input_device_xi2_keycode_to_evdev; device_class->keycode_to_evdev = clutter_input_device_xi2_keycode_to_evdev;
device_class->is_grouped = clutter_input_device_xi2_is_grouped; device_class->is_grouped = clutter_input_device_xi2_is_grouped;
device_class->get_group_n_modes = clutter_input_device_xi2_get_group_n_modes;
device_class->is_mode_switch_button = clutter_input_device_xi2_is_mode_switch_button;
} }
static void static void
@@ -196,3 +292,66 @@ clutter_input_device_xi2_get_current_tool (ClutterInputDevice *device)
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device); ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device);
return device_xi2->current_tool; return device_xi2->current_tool;
} }
#ifdef HAVE_LIBWACOM
void
clutter_input_device_xi2_ensure_wacom_info (ClutterInputDevice *device,
WacomDeviceDatabase *wacom_db)
{
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device);
const gchar *node_path;
node_path = clutter_input_device_get_device_node (device);
device_xi2->wacom_device = libwacom_new_from_path (wacom_db, node_path,
WFALLBACK_NONE, NULL);
}
guint
clutter_input_device_xi2_get_pad_group_mode (ClutterInputDevice *device,
guint group)
{
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device);
if (group >= device_xi2->group_modes->len)
return 0;
return g_array_index (device_xi2->group_modes, guint, group);
}
void
clutter_input_device_xi2_update_pad_state (ClutterInputDevice *device,
guint button,
guint state,
guint *group,
guint *mode)
{
ClutterInputDeviceXI2 *device_xi2 = CLUTTER_INPUT_DEVICE_XI2 (device);
guint button_group, *group_mode;
gboolean is_mode_switch = FALSE;
button_group = clutter_input_device_xi2_get_button_group (device, button);
is_mode_switch = button_group >= 0;
/* Assign all non-mode-switch buttons to group 0 so far */
button_group = MAX (0, button_group);
if (button_group >= device_xi2->group_modes->len)
return;
group_mode = &g_array_index (device_xi2->group_modes, guint, button_group);
if (is_mode_switch && state)
{
guint next, n_modes;
n_modes = clutter_input_device_get_group_n_modes (device, button_group);
next = (*group_mode + 1) % n_modes;
*group_mode = next;
}
if (group)
*group = button_group;
if (mode)
*mode = *group_mode;
}
#endif

View File

@@ -27,6 +27,10 @@
#include <clutter/clutter-input-device.h> #include <clutter/clutter-input-device.h>
#include <X11/extensions/XInput2.h> #include <X11/extensions/XInput2.h>
#ifdef HAVE_LIBWACOM
#include <libwacom/libwacom.h>
#endif
G_BEGIN_DECLS G_BEGIN_DECLS
#define CLUTTER_TYPE_INPUT_DEVICE_XI2 (_clutter_input_device_xi2_get_type ()) #define CLUTTER_TYPE_INPUT_DEVICE_XI2 (_clutter_input_device_xi2_get_type ())
@@ -45,6 +49,21 @@ void clutter_input_device_xi2_update_tool (ClutterInputDevice *device,
ClutterInputDeviceTool *tool); ClutterInputDeviceTool *tool);
ClutterInputDeviceTool * clutter_input_device_xi2_get_current_tool (ClutterInputDevice *device); ClutterInputDeviceTool * clutter_input_device_xi2_get_current_tool (ClutterInputDevice *device);
#ifdef HAVE_LIBWACOM
void clutter_input_device_xi2_ensure_wacom_info (ClutterInputDevice *device,
WacomDeviceDatabase *wacom_db);
guint clutter_input_device_xi2_get_pad_group_mode (ClutterInputDevice *device,
guint group);
void clutter_input_device_xi2_update_pad_state (ClutterInputDevice *device,
guint button,
guint state,
guint *group,
guint *mode);
#endif
G_END_DECLS G_END_DECLS
#endif /* __CLUTTER_INPUT_DEVICE_XI2_H__ */ #endif /* __CLUTTER_INPUT_DEVICE_XI2_H__ */

View File

@@ -48,6 +48,10 @@ clutter_virtual_input_device_x11_notify_relative_motion (ClutterVirtualInputDevi
double dx, double dx,
double dy) double dy)
{ {
XTestFakeRelativeMotionEvent (clutter_x11_get_default_display (),
(int) dx,
(int) dy,
0);
} }
static void static void
@@ -56,6 +60,11 @@ clutter_virtual_input_device_x11_notify_absolute_motion (ClutterVirtualInputDevi
double x, double x,
double y) double y)
{ {
XTestFakeMotionEvent (clutter_x11_get_default_display (),
clutter_x11_get_default_screen (),
(int) x,
(int) y,
0);
} }
static void static void
@@ -68,6 +77,48 @@ clutter_virtual_input_device_x11_notify_button (ClutterVirtualInputDevice *virtu
button, button_state == CLUTTER_BUTTON_STATE_PRESSED, 0); button, button_state == CLUTTER_BUTTON_STATE_PRESSED, 0);
} }
static void
clutter_virtual_input_device_x11_notify_discrete_scroll (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
ClutterScrollDirection direction,
ClutterScrollSource scroll_source)
{
Display *xdisplay = clutter_x11_get_default_display ();
int button;
switch (direction)
{
case CLUTTER_SCROLL_UP:
button = 4;
break;
case CLUTTER_SCROLL_DOWN:
button = 5;
break;
case CLUTTER_SCROLL_LEFT:
button = 6;
break;
case CLUTTER_SCROLL_RIGHT:
button = 7;
break;
default:
g_warn_if_reached ();
return;
}
XTestFakeButtonEvent (xdisplay, button, True, 0);
XTestFakeButtonEvent (xdisplay, button, False, 0);
}
static void
clutter_virtual_input_device_x11_notify_scroll_continuous (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
double dx,
double dy,
ClutterScrollSource scroll_source,
ClutterScrollFinishFlags finish_flags)
{
}
static void static void
clutter_virtual_input_device_x11_notify_key (ClutterVirtualInputDevice *virtual_device, clutter_virtual_input_device_x11_notify_key (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us, uint64_t time_us,
@@ -91,6 +142,34 @@ clutter_virtual_input_device_x11_notify_keyval (ClutterVirtualInputDevice *virtu
keycode, key_state == CLUTTER_KEY_STATE_PRESSED, 0); keycode, key_state == CLUTTER_KEY_STATE_PRESSED, 0);
} }
static void
clutter_virtual_input_device_x11_notify_touch_down (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int device_slot,
double x,
double y)
{
g_warning ("Virtual touch motion not implemented under X11");
}
static void
clutter_virtual_input_device_x11_notify_touch_motion (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int device_slot,
double x,
double y)
{
g_warning ("Virtual touch motion not implemented under X11");
}
static void
clutter_virtual_input_device_x11_notify_touch_up (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
int device_slot)
{
g_warning ("Virtual touch motion not implemented under X11");
}
static void static void
clutter_virtual_input_device_x11_init (ClutterVirtualInputDeviceX11 *virtual_device_x11) clutter_virtual_input_device_x11_init (ClutterVirtualInputDeviceX11 *virtual_device_x11)
{ {
@@ -105,6 +184,11 @@ clutter_virtual_input_device_x11_class_init (ClutterVirtualInputDeviceX11Class *
virtual_input_device_class->notify_relative_motion = clutter_virtual_input_device_x11_notify_relative_motion; virtual_input_device_class->notify_relative_motion = clutter_virtual_input_device_x11_notify_relative_motion;
virtual_input_device_class->notify_absolute_motion = clutter_virtual_input_device_x11_notify_absolute_motion; virtual_input_device_class->notify_absolute_motion = clutter_virtual_input_device_x11_notify_absolute_motion;
virtual_input_device_class->notify_button = clutter_virtual_input_device_x11_notify_button; virtual_input_device_class->notify_button = clutter_virtual_input_device_x11_notify_button;
virtual_input_device_class->notify_discrete_scroll = clutter_virtual_input_device_x11_notify_discrete_scroll;
virtual_input_device_class->notify_scroll_continuous = clutter_virtual_input_device_x11_notify_scroll_continuous;
virtual_input_device_class->notify_key = clutter_virtual_input_device_x11_notify_key; virtual_input_device_class->notify_key = clutter_virtual_input_device_x11_notify_key;
virtual_input_device_class->notify_keyval = clutter_virtual_input_device_x11_notify_keyval; virtual_input_device_class->notify_keyval = clutter_virtual_input_device_x11_notify_keyval;
virtual_input_device_class->notify_touch_down = clutter_virtual_input_device_x11_notify_touch_down;
virtual_input_device_class->notify_touch_motion = clutter_virtual_input_device_x11_notify_touch_motion;
virtual_input_device_class->notify_touch_up = clutter_virtual_input_device_x11_notify_touch_up;
} }

View File

@@ -121,6 +121,7 @@ m4_define([xcomposite_req_version], [0.4])
m4_define([gdk_req_version], [3.3.18]) m4_define([gdk_req_version], [3.3.18])
m4_define([libinput_req_version], [1.4.0]) m4_define([libinput_req_version], [1.4.0])
m4_define([libudev_req_version], [136]) m4_define([libudev_req_version], [136])
m4_define([libwacom_req_version], [0.13])
AC_SUBST([GLIB_REQ_VERSION], [glib_req_version]) AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
AC_SUBST([COGL_REQ_VERSION], [cogl_req_version]) AC_SUBST([COGL_REQ_VERSION], [cogl_req_version])
@@ -133,6 +134,7 @@ AC_SUBST([XCOMPOSITE_REQ_VERSION], [xcomposite_req_version])
AC_SUBST([GDK_REQ_VERSION], [gdk_req_version]) AC_SUBST([GDK_REQ_VERSION], [gdk_req_version])
AC_SUBST([LIBINPUT_REQ_VERSION], [libinput_req_version]) AC_SUBST([LIBINPUT_REQ_VERSION], [libinput_req_version])
AC_SUBST([LIBUDEV_REQ_VERSION], [libudev_req_version]) AC_SUBST([LIBUDEV_REQ_VERSION], [libudev_req_version])
AC_SUBST([LIBWACOM_REQ_VERSION], [libwacom_req_version])
# Checks for typedefs, structures, and compiler characteristics. # Checks for typedefs, structures, and compiler characteristics.
AM_PATH_GLIB_2_0([glib_req_version], AM_PATH_GLIB_2_0([glib_req_version],
@@ -149,7 +151,7 @@ AC_ARG_ENABLE([Bsymbolic],
saved_LDFLAGS="${LDFLAGS}" saved_LDFLAGS="${LDFLAGS}"
AC_MSG_CHECKING([for -Bsymbolic-functions linker flag]) AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
LDFLAGS=-Wl,-Bsymbolic-functions LDFLAGS=-Wl,-Bsymbolic-functions
AC_TRY_LINK([], [int main (void) { return 0; }], AC_TRY_LINK([], [return 0],
[ [
AC_MSG_RESULT([yes]) AC_MSG_RESULT([yes])
enable_Bsymbolic=yes enable_Bsymbolic=yes
@@ -170,7 +172,7 @@ dnl on other compilers, check if we can do -fvisibility=hidden
SAVED_CFLAGS="${CFLAGS}" SAVED_CFLAGS="${CFLAGS}"
CFLAGS="-fvisibility=hidden" CFLAGS="-fvisibility=hidden"
AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
AC_TRY_COMPILE([], [int main (void) { return 0; }], AC_TRY_COMPILE([], [return 0],
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
enable_fvisibility_hidden=yes, enable_fvisibility_hidden=yes,
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
@@ -508,6 +510,32 @@ X11_EXTS=${X11_EXTS#* }
AC_CACHE_SAVE AC_CACHE_SAVE
dnl === Libwacom support for X11 ===============================================
AC_ARG_WITH(libwacom,
AC_HELP_STRING([--without-libwacom],
[disable the use of libwacom for advanced tablet management]),,
with_libwacom=auto)
have_libwacom=no
AC_MSG_CHECKING([libwacom])
if test x$with_libwacom = xno ; then
AC_MSG_RESULT([disabled])
else
if $PKG_CONFIG --exists libwacom '>=' $LIBWACOM_REQ_VERSION; then
have_libwacom=yes
AC_MSG_RESULT(yes)
PKG_CHECK_MODULES([LIBWACOM], [libwacom])
AC_SUBST(LIBWACOM_CFLAGS)
AC_SUBST(LIBWACOM_LIBS)
AC_DEFINE([HAVE_LIBWACOM], 1, [Building with libwacom for advanced tablet management])
else
AC_MSG_RESULT(no)
if test x$with_libwacom = xyes ; then
AC_MSG_ERROR([libwacom forced but not found])
fi
fi
fi
dnl === Enable GDK-Pixbuf in tests ============================================ dnl === Enable GDK-Pixbuf in tests ============================================
m4_define([pixbuf_default], [yes]) m4_define([pixbuf_default], [yes])
@@ -679,8 +707,8 @@ AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" = "x" && test "x$BACKEND_PC_FILES_
AC_SUBST(CLUTTER_REQUIRES) AC_SUBST(CLUTTER_REQUIRES)
AC_SUBST(CLUTTER_REQUIRES_PRIVATE) AC_SUBST(CLUTTER_REQUIRES_PRIVATE)
CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $GLIB_CFLAGS" CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $GLIB_CFLAGS $LIBWACOM_CFLAGS"
CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $GLIB_LIBS" CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $GLIB_LIBS $LIBWACOM_LIBS"
AC_SUBST(CLUTTER_CFLAGS) AC_SUBST(CLUTTER_CFLAGS)
AC_SUBST(CLUTTER_LIBS) AC_SUBST(CLUTTER_LIBS)

View File

@@ -452,7 +452,7 @@ libmutter_cogl_@LIBMUTTER_API_VERSION@_la_LDFLAGS = \
-avoid-version \ -avoid-version \
-export-dynamic \ -export-dynamic \
-rpath $(mutterlibdir) \ -rpath $(mutterlibdir) \
-export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_get_format|_cogl_texture_foreach_sub_texture_in_region|_cogl_texture_set_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_framebuffer_draw_primitive|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|_cogl_primitive_draw|test_|unit_test_|_cogl_winsys_glx_get_vtable|_cogl_winsys_egl_xlib_get_vtable|_cogl_winsys_egl_get_vtable|_cogl_closure_disconnect|_cogl_onscreen_notify_complete|_cogl_onscreen_notify_frame_sync|_cogl_winsys_egl_renderer_connect_common|_cogl_winsys_error_quark|_cogl_set_error|_cogl_poll_renderer_add_fd|_cogl_poll_renderer_add_idle|_cogl_framebuffer_winsys_update_size|_cogl_winsys_egl_make_current|_cogl_pixel_format_get_bytes_per_pixel).*" -export-symbols-regex "^(cogl|_cogl_debug_flags|_cogl_atlas_new|_cogl_atlas_add_reorganize_callback|_cogl_atlas_reserve_space|_cogl_callback|_cogl_util_get_eye_planes_for_screen_poly|_cogl_atlas_texture_remove_reorganize_callback|_cogl_atlas_texture_add_reorganize_callback|_cogl_texture_get_format|_cogl_texture_foreach_sub_texture_in_region|_cogl_texture_set_region|_cogl_profile_trace_message|_cogl_context_get_default|_cogl_framebuffer_get_stencil_bits|_cogl_clip_stack_push_rectangle|_cogl_framebuffer_get_modelview_stack|_cogl_object_default_unref|_cogl_pipeline_foreach_layer_internal|_cogl_clip_stack_push_primitive|_cogl_buffer_unmap_for_fill_or_fallback|_cogl_framebuffer_draw_primitive|_cogl_debug_instances|_cogl_framebuffer_get_projection_stack|_cogl_pipeline_layer_get_texture|_cogl_buffer_map_for_fill_or_fallback|_cogl_texture_can_hardware_repeat|_cogl_pipeline_prune_to_n_layers|_cogl_primitive_draw|test_|unit_test_|_cogl_winsys_glx_get_vtable|_cogl_winsys_egl_xlib_get_vtable|_cogl_winsys_egl_get_vtable|_cogl_closure_disconnect|_cogl_onscreen_notify_complete|_cogl_onscreen_notify_frame_sync|_cogl_winsys_egl_renderer_connect_common|_cogl_winsys_error_quark|_cogl_set_error|_cogl_poll_renderer_add_fd|_cogl_poll_renderer_add_idle|_cogl_framebuffer_winsys_update_size|_cogl_winsys_egl_make_current|_cogl_winsys_egl_ensure_current|_cogl_pixel_format_get_bytes_per_pixel).*"
libmutter_cogl_@LIBMUTTER_API_VERSION@_la_SOURCES = $(cogl_sources_c) libmutter_cogl_@LIBMUTTER_API_VERSION@_la_SOURCES = $(cogl_sources_c)
nodist_libmutter_cogl_@LIBMUTTER_API_VERSION@_la_SOURCES = $(BUILT_SOURCES) nodist_libmutter_cogl_@LIBMUTTER_API_VERSION@_la_SOURCES = $(BUILT_SOURCES)

View File

@@ -109,7 +109,11 @@ _cogl_object_default_unref (void *object)
void void
cogl_object_unref (void *obj) cogl_object_unref (void *obj)
{ {
void (* unref_func) (void *) = ((CoglObject *) obj)->klass->virt_unref; void (* unref_func) (void *);
_COGL_RETURN_IF_FAIL (obj != NULL);
unref_func = ((CoglObject *) obj)->klass->virt_unref;
unref_func (obj); unref_func (obj);
} }

View File

@@ -592,7 +592,7 @@ _cogl_rectangles_validate_layer_cb (CoglPipeline *pipeline,
if (!warning_seen) if (!warning_seen)
g_warning ("Skipping layer %d of your pipeline consisting of " g_warning ("Skipping layer %d of your pipeline consisting of "
"a sliced texture (unsuported for multi texturing)", "a sliced texture (unsupported for multi texturing)",
state->i); state->i);
warning_seen = TRUE; warning_seen = TRUE;

View File

@@ -1412,22 +1412,12 @@ _cogl_framebuffer_gl_read_pixels_into_bitmap (CoglFramebuffer *framebuffer,
if (!cogl_is_offscreen (framebuffer)) if (!cogl_is_offscreen (framebuffer))
y = framebuffer_height - y - height; y = framebuffer_height - y - height;
required_format = ctx->driver_vtable->pixel_format_to_gl (ctx, required_format = ctx->driver_vtable->pixel_format_to_gl_with_target (ctx,
format, framebuffer->internal_format,
&gl_intformat, format,
&gl_format, &gl_intformat,
&gl_type); &gl_format,
#if HAVE_COGL_GL &gl_type);
/* As we are reading pixels, we want to consider the bitmap according to
* its real pixel format, not the swizzled channels we pretend face to the
* pipeline.
*/
if ((ctx->driver == COGL_DRIVER_GL || ctx->driver == COGL_DRIVER_GL3) &&
(format == COGL_PIXEL_FORMAT_BGRA_8888 ||
format == COGL_PIXEL_FORMAT_BGRA_8888_PRE) &&
_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE))
gl_format = GL_BGRA;
#endif
/* NB: All offscreen rendering is done upside down so there is no need /* NB: All offscreen rendering is done upside down so there is no need
* to flip in this case... */ * to flip in this case... */

View File

@@ -90,6 +90,11 @@ typedef struct _CoglWinsysEGLVtable
(* add_config_attributes) (CoglDisplay *display, (* add_config_attributes) (CoglDisplay *display,
CoglFramebufferConfig *config, CoglFramebufferConfig *config,
EGLint *attributes); EGLint *attributes);
CoglBool
(* choose_config) (CoglDisplay *display,
EGLint *attributes,
EGLConfig *out_config,
CoglError **error);
} CoglWinsysEGLVtable; } CoglWinsysEGLVtable;
typedef enum _CoglEGLWinsysFeature typedef enum _CoglEGLWinsysFeature
@@ -176,6 +181,9 @@ _cogl_winsys_egl_make_current (CoglDisplay *display,
EGLSurface read, EGLSurface read,
EGLContext context); EGLContext context);
EGLBoolean
_cogl_winsys_egl_ensure_current (CoglDisplay *display);
#ifdef EGL_KHR_image_base #ifdef EGL_KHR_image_base
EGLImageKHR EGLImageKHR
_cogl_egl_create_image (CoglContext *ctx, _cogl_egl_create_image (CoglContext *ctx,

View File

@@ -336,6 +336,32 @@ _cogl_winsys_egl_add_config_attributes (CoglDisplay *display,
return i; return i;
} }
static CoglBool
_cogl_winsys_egl_choose_config (CoglDisplay *display,
EGLint *attributes,
EGLConfig *out_config,
CoglError **error)
{
CoglRenderer *renderer = display->renderer;
CoglRendererEGL *egl_renderer = renderer->winsys;
EGLint config_count = 0;
EGLBoolean status;
status = eglChooseConfig (egl_renderer->edpy,
attributes,
out_config, 1,
&config_count);
if (status != EGL_TRUE || config_count == 0)
{
_cogl_set_error (error, COGL_WINSYS_ERROR,
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"No compatible EGL configs found");
return FALSE;
}
return TRUE;
}
static CoglBool static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display, _cogl_winsys_egl_display_setup (CoglDisplay *display,
CoglError **error) CoglError **error)
@@ -841,6 +867,7 @@ static const CoglWinsysEGLVtable
_cogl_winsys_egl_vtable = _cogl_winsys_egl_vtable =
{ {
.add_config_attributes = _cogl_winsys_egl_add_config_attributes, .add_config_attributes = _cogl_winsys_egl_add_config_attributes,
.choose_config = _cogl_winsys_egl_choose_config,
.display_setup = _cogl_winsys_egl_display_setup, .display_setup = _cogl_winsys_egl_display_setup,
.display_destroy = _cogl_winsys_egl_display_destroy, .display_destroy = _cogl_winsys_egl_display_destroy,
.context_created = _cogl_winsys_egl_context_created, .context_created = _cogl_winsys_egl_context_created,

View File

@@ -309,6 +309,18 @@ _cogl_winsys_egl_make_current (CoglDisplay *display,
return ret; return ret;
} }
EGLBoolean
_cogl_winsys_egl_ensure_current (CoglDisplay *display)
{
CoglDisplayEGL *egl_display = display->winsys;
CoglRendererEGL *egl_renderer = display->renderer->winsys;
return eglMakeCurrent (egl_renderer->edpy,
egl_display->current_draw_surface,
egl_display->current_read_surface,
egl_display->current_context);
}
static void static void
cleanup_context (CoglDisplay *display) cleanup_context (CoglDisplay *display)
{ {
@@ -338,10 +350,9 @@ try_create_context (CoglDisplay *display,
CoglRendererEGL *egl_renderer = renderer->winsys; CoglRendererEGL *egl_renderer = renderer->winsys;
EGLDisplay edpy; EGLDisplay edpy;
EGLConfig config; EGLConfig config;
EGLint config_count = 0;
EGLBoolean status;
EGLint attribs[9]; EGLint attribs[9];
EGLint cfg_attribs[MAX_EGL_CONFIG_ATTRIBS]; EGLint cfg_attribs[MAX_EGL_CONFIG_ATTRIBS];
GError *config_error = NULL;
const char *error_message; const char *error_message;
_COGL_RETURN_VAL_IF_FAIL (egl_display->egl_context == NULL, TRUE); _COGL_RETURN_VAL_IF_FAIL (egl_display->egl_context == NULL, TRUE);
@@ -356,14 +367,16 @@ try_create_context (CoglDisplay *display,
edpy = egl_renderer->edpy; edpy = egl_renderer->edpy;
status = eglChooseConfig (edpy, if (!egl_renderer->platform_vtable->choose_config (display,
cfg_attribs, cfg_attribs,
&config, 1, &config,
&config_count); &config_error))
if (status != EGL_TRUE || config_count == 0)
{ {
error_message = "Unable to find a usable EGL configuration"; _cogl_set_error (error, COGL_WINSYS_ERROR,
goto fail; COGL_WINSYS_ERROR_CREATE_CONTEXT,
"Couldn't choose config: %s", config_error->message);
g_error_free (config_error);
goto err;
} }
egl_display->egl_config = config; egl_display->egl_config = config;
@@ -419,6 +432,7 @@ fail:
COGL_WINSYS_ERROR_CREATE_CONTEXT, COGL_WINSYS_ERROR_CREATE_CONTEXT,
"%s", error_message); "%s", error_message);
err:
cleanup_context (display); cleanup_context (display);
return FALSE; return FALSE;

View File

@@ -1,15 +1,15 @@
AC_PREREQ(2.62) AC_PREREQ(2.62)
m4_define([mutter_major_version], [3]) m4_define([mutter_major_version], [3])
m4_define([mutter_minor_version], [27]) m4_define([mutter_minor_version], [29])
m4_define([mutter_micro_version], [91]) m4_define([mutter_micro_version], [2])
m4_define([mutter_version], m4_define([mutter_version],
[mutter_major_version.mutter_minor_version.mutter_micro_version]) [mutter_major_version.mutter_minor_version.mutter_micro_version])
m4_define([mutter_plugin_api_version], [3]) m4_define([mutter_plugin_api_version], [3])
m4_define([libmutter_api_version], [1]) m4_define([libmutter_api_version], [2])
AC_INIT([mutter], [mutter_version], AC_INIT([mutter], [mutter_version],
[http://bugzilla.gnome.org/enter_bug.cgi?product=mutter]) [http://bugzilla.gnome.org/enter_bug.cgi?product=mutter])
@@ -262,7 +262,19 @@ AC_SUBST(XWAYLAND_PATH)
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES) PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
MUTTER_NATIVE_BACKEND_MODULES="libdrm >= 2.4.83 libsystemd libinput >= 1.4 gudev-1.0 gbm >= 17.1" PKG_CHECK_MODULES(ELOGIND, [libelogind], [have_elogind=yes], [have_elogind=no])
if test x$have_elogind = xyes; then
logind_provider="libelogind"
fi
PKG_CHECK_MODULES(SYSTEMD, [libsystemd], [have_systemd=yes], [have_systemd=no])
if test x$have_systemd = xyes -o -z "$logind_provider"; then
logind_provider="libsystemd"
fi
MUTTER_NATIVE_BACKEND_MODULES="libdrm $logind_provider libinput >= 1.4 gudev-1.0 gbm >= 10.3"
AC_ARG_ENABLE(native-backend, AC_ARG_ENABLE(native-backend,
AS_HELP_STRING([--disable-native-backend], [disable mutter native (KMS) backend]),, AS_HELP_STRING([--disable-native-backend], [disable mutter native (KMS) backend]),,
@@ -303,7 +315,7 @@ AS_IF([test "$have_wayland" = "yes"], [
AC_SUBST([WAYLAND_SCANNER]) AC_SUBST([WAYLAND_SCANNER])
AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support]) AC_DEFINE([HAVE_WAYLAND],[1],[Define if you want to enable Wayland support])
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.10], PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.12],
[ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`]) [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir) AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
]) ])

View File

@@ -120,10 +120,6 @@
framebuffers instead of window content, framebuffers instead of window content,
to manage HiDPI monitors. Does not to manage HiDPI monitors. Does not
require a restart. require a restart.
• “remote-desktop” — enables remote desktop support. To support
remote desktop with screen sharing,
“screen-cast” must also be enabled.
• “screen-cast” — enables screen cast support.
</description> </description>
</key> </key>

201
po/cs.po
View File

@@ -6,15 +6,14 @@
# Petr Tomeš <ptomes@gmail.com>, 2006. # Petr Tomeš <ptomes@gmail.com>, 2006.
# Jakub Friedl <jfriedl@suse.cz>, 2006, 2007. # Jakub Friedl <jfriedl@suse.cz>, 2006, 2007.
# Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014. # Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
# Marek Černocký <marek@manet.cz>, 2012, 2013, 2014, 2016, 2017. # Marek Černocký <marek@manet.cz>, 2012, 2013, 2014, 2016, 2017, 2018.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-03-01 10:47+0000\n"
"POT-Creation-Date: 2017-11-10 18:16+0000\n" "PO-Revision-Date: 2018-03-07 19:28+0100\n"
"PO-Revision-Date: 2017-11-15 13:31+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>\n" "Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
@@ -50,130 +49,114 @@ msgid "Move window to last workspace"
msgstr "Přesunout okno na poslední pracovní plochu" msgstr "Přesunout okno na poslední pracovní plochu"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Přesunout okno o jednu pracovní plochu doleva"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Přesunout okno o jednu pracovní plochu doprava"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Přesunout okno o jednu pracovní plochu nahoru" msgstr "Přesunout okno o jednu pracovní plochu nahoru"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Přesunout okno o jednu pracovní plochu dolů" msgstr "Přesunout okno o jednu pracovní plochu dolů"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Přesunout okno o jeden monitor doleva" msgstr "Přesunout okno o jeden monitor doleva"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Přesunout okno o jeden monitor doprava" msgstr "Přesunout okno o jeden monitor doprava"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Přesunout okno o jeden monitor nahoru" msgstr "Přesunout okno o jeden monitor nahoru"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Přesunout okno o jeden monitor dolů" msgstr "Přesunout okno o jeden monitor dolů"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Přepnout do jiné aplikace" msgstr "Přepnout do jiné aplikace"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Přepnout do předchozí aplikaci" msgstr "Přepnout do předchozí aplikaci"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Přepnout do jiného okna" msgstr "Přepnout do jiného okna"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Přepnout do minulého okna" msgstr "Přepnout do minulého okna"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Přepnout do jiného okna aplikace" msgstr "Přepnout do jiného okna aplikace"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Přepnout do předchozího okna aplikace" msgstr "Přepnout do předchozího okna aplikace"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Přepnout na systémový ovládací prvek" msgstr "Přepnout na systémový ovládací prvek"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Přepnout na minulý systémový ovládací prvek" msgstr "Přepnout na minulý systémový ovládací prvek"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Přepnout do minulého okna" msgstr "Přepnout do minulého okna"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Přepnout přímo na předchozí okno" msgstr "Přepnout přímo na předchozí okno"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Přepnout do jiného okna aplikace" msgstr "Přepnout do jiného okna aplikace"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Přepnout do předchozího okna aplikace" msgstr "Přepnout do předchozího okna aplikace"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Přepnout na minulý systémový ovládací prvek" msgstr "Přepnout na minulý systémový ovládací prvek"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Přepnout přímo na předchozí systémové ovládací prvky" msgstr "Přepnout přímo na předchozí systémové ovládací prvky"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Skrýt všechna běžná okna" msgstr "Skrýt všechna běžná okna"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Přepnout na plochu 1" msgstr "Přepnout na plochu 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Přepnout na plochu 2" msgstr "Přepnout na plochu 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Přepnout na plochu 3" msgstr "Přepnout na plochu 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Přepnout na plochu 4" msgstr "Přepnout na plochu 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Přepnout na poslední plochu" msgstr "Přepnout na poslední plochu"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Přesunout na plochu vlevo"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Přesunout na plochu vpravo"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Přesunout na plochu nad" msgstr "Přesunout na plochu nad"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Přesunout na plochu pod" msgstr "Přesunout na plochu pod"
@@ -218,54 +201,50 @@ msgid "Restore window"
msgstr "Obnovit velikost okna" msgstr "Obnovit velikost okna"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Přepnout stav svinutí"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Zavřít okno" msgstr "Zavřít okno"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Skrýt okno" msgstr "Skrýt okno"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Přesunout okno" msgstr "Přesunout okno"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Změnit velikost okna" msgstr "Změnit velikost okna"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Přepnout okno na všechny/jednu pracovní plochu" msgstr "Přepnout okno na všechny/jednu pracovní plochu"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Když je okno zakryté vynést jej do popředí, jinak odsunout do pozadí" msgstr "Když je okno zakryté vynést jej do popředí, jinak odsunout do pozadí"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Vynést okno do popředí nad ostatní okna" msgstr "Vynést okno do popředí nad ostatní okna"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Odsunout okno do pozadí za ostatní okna" msgstr "Odsunout okno do pozadí za ostatní okna"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Maximalizovat okno svisle" msgstr "Maximalizovat okno svisle"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Maximalizovat okno vodorovně" msgstr "Maximalizovat okno vodorovně"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Rozdělit okno přes levou půlku obrazovky" msgstr "Rozdělit okno přes levou půlku obrazovky"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Rozdělit okno přes pravou půlku obrazovky" msgstr "Rozdělit okno přes pravou půlku obrazovky"
@@ -503,10 +482,57 @@ msgstr "Přepnout na VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Znovu povolit klávesové zkratky" msgstr "Znovu povolit klávesové zkratky"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Povolit zachytávání pomocí Xwaylandu"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Povolit, aby bylo bráno v úvahu zachytávání kláves, o které se stará "
"aplikace X11 běžící v Xwaylandu. Aby bylo pod Waylandem zachytávání bráno v "
"úvahu, musí klient navíc buď poslat specifickou zprávu X11 ClientMessage do "
"kořenového okna, nebo být mezi aplikacemi na bílé listině v klíči „xwayland-"
"grab-access-rules“."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr ""
"Aplikace pod Xwaylandem mají povoleno se starat o zachytávání klávesnice"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Seznam názvů prostředků nebo tříd prostředků oken X11, které buď mají nebo "
"nemají povolené se starat o zachytávání klávesnice X11 pod Xwaylandem. Název "
"nebo třída prostředku daného okna X11 se dá zjistit pomocí příkazu „xprop "
"WM_CLASS“. V názvech jsou podporované divoké znaky „*“ a „?“. Hodnoty "
"začínající „!“ jsou na černé listině, což má přednost před bílou listinou, "
"aby se daly aplikace odvolat z výchozího systémového seznamu. Do výchozího "
"systémového seznamu patří následující aplikace: "
"„@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@“. Uživatel může přerušit existující "
"zachytávání pomocí speciální klávesové zkratky definované klíčem „restore-"
"shortcuts“."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2167 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Přepínač režimu (skupina %d)" msgstr "Přepínač režimu (skupina %d)"
@@ -514,11 +540,11 @@ msgstr "Přepínač režimu (skupina %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2190 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Přepnout monitor" msgstr "Přepnout monitor"
#: src/backends/meta-input-settings.c:2192 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Zobrazit nápovědu na obrazovce" msgstr "Zobrazit nápovědu na obrazovce"
@@ -544,7 +570,7 @@ msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -559,42 +585,46 @@ msgstr "Událost zvonku"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Nelze otevřít displej X Window System „%s“\n" msgstr "Nelze otevřít displej X Window System „%s“\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Zakáže připojení ke správci sezení" msgstr "Zakáže připojení ke správci sezení"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Nahradí běžícího správce oken" msgstr "Nahradí běžícího správce oken"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Určení ID správy sezení" msgstr "Určení ID správy sezení"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Displej X, který použije" msgstr "Displej X, který použije"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Spustí sezení z uloženého souboru" msgstr "Spustí sezení z uloženého souboru"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Provede volání X synchronně" msgstr "Provede volání X synchronně"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Spustit jako kompozitor protokolu Wayland" msgstr "Spustit jako kompozitor protokolu Wayland"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Spustit jako podkladový kompozitor" msgstr "Spustit jako podkladový kompozitor"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Spustit jako plnohodnotný server displeje, nikoliv vnořeně" msgstr "Spustit jako plnohodnotný server displeje, nikoliv vnořeně"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Spustit se serverem X11"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -668,12 +698,12 @@ msgstr "Obrazovka %d na displeji „%s“ je neplatná\n"
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter bylo přeloženo bez podpory podrobného režimu\n" msgstr "Mutter bylo přeloženo bez podpory podrobného režimu\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Přepínač režimu: režim %d" msgstr "Přepínač režimu: režim %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -685,3 +715,18 @@ msgstr ""
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (na %s)" msgstr "%s (na %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Přesunout okno o jednu pracovní plochu doleva"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Přesunout okno o jednu pracovní plochu doprava"
#~ msgid "Move to workspace left"
#~ msgstr "Přesunout na plochu vlevo"
#~ msgid "Move to workspace right"
#~ msgstr "Přesunout na plochu vpravo"
#~ msgid "Toggle shaded state"
#~ msgstr "Přepnout stav svinutí"

216
po/da.po
View File

@@ -1,5 +1,5 @@
# Danish translation of Mutter. # Danish translation of Mutter.
# Copyright (C) 2002-2009, 2012-2017. # Copyright (C) 2002-2009, 2012-2018.
# This file is distributed under the same license as the metacity package. # This file is distributed under the same license as the metacity package.
# Kjartan Maraas <kmaraas@gnome.org>, 2002 # Kjartan Maraas <kmaraas@gnome.org>, 2002
# Keld simonsen <keld@dkuug.dk>, 2002 # Keld simonsen <keld@dkuug.dk>, 2002
@@ -8,7 +8,7 @@
# Lasse Bang Mikkelsen <lbm@fatalerror.dk>, 2006. # Lasse Bang Mikkelsen <lbm@fatalerror.dk>, 2006.
# Kenneth Nielsen <k.nielsen81@gmail.com>, 2008. # Kenneth Nielsen <k.nielsen81@gmail.com>, 2008.
# Joe Hansen <joedalton2@yahoo.dk>, 2011. # Joe Hansen <joedalton2@yahoo.dk>, 2011.
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16, 17. # Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16, 17, 18.
# #
# Ordliste: # Ordliste:
# #
@@ -19,10 +19,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-06 04:14+0000\n"
"POT-Creation-Date: 2017-08-29 16:09+0000\n" "PO-Revision-Date: 2018-03-07 22:29+0100\n"
"PO-Revision-Date: 2017-09-03 20:29+0200\n"
"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n" "Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n" "Language: da\n"
@@ -55,134 +54,118 @@ msgid "Move window to last workspace"
msgstr "Flyt vindue til sidste arbejdsområde" msgstr "Flyt vindue til sidste arbejdsområde"
#: data/50-mutter-navigation.xml:24 #: 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:27
msgid "Move window one workspace to the right"
msgstr "Flyt vindue et arbejdsområde til højre"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Flyt vindue et arbejdsområde op" msgstr "Flyt vindue et arbejdsområde op"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Flyt vindue et arbejdsområde ned" msgstr "Flyt vindue et arbejdsområde ned"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Flyt vindue en skærm til venstre" msgstr "Flyt vindue en skærm til venstre"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Flyt vindue en skærm til højre" msgstr "Flyt vindue en skærm til højre"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Flyt vindue en skærm op" msgstr "Flyt vindue en skærm op"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Flyt vindue en skærm ned" msgstr "Flyt vindue en skærm ned"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Skift mellem programmer" msgstr "Skift mellem programmer"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Skift til forrige program" msgstr "Skift til forrige program"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Skift mellem vinduer" msgstr "Skift mellem vinduer"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Skift til forrige vindue" msgstr "Skift til forrige vindue"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Skift mellem vinduer i et program" msgstr "Skift mellem vinduer i et program"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Skift til forrige vindue af et program" msgstr "Skift til forrige vindue af et program"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Skift mellem systemkontroller" msgstr "Skift mellem systemkontroller"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Skift til forrige systemkontrol" msgstr "Skift til forrige systemkontrol"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Skift direkte mellem vinduer" msgstr "Skift direkte mellem vinduer"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Skift direkte til forrige vindue" msgstr "Skift direkte til forrige vindue"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Skift direkte mellem vinduer i et program" msgstr "Skift direkte mellem vinduer i et program"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Skift direkte til forrige vindue af et program" msgstr "Skift direkte til forrige vindue af et program"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Skift direkte mellem systemkontroller" msgstr "Skift direkte mellem systemkontroller"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Skift direkte til forrige systemkontrol" msgstr "Skift direkte til forrige systemkontrol"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Skjul alle normale vinduer" msgstr "Skjul alle normale vinduer"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Skift til arbejdsområde 1" msgstr "Skift til arbejdsområde 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Skift til arbejdsområde 2" msgstr "Skift til arbejdsområde 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Skift til arbejdsområde 3" msgstr "Skift til arbejdsområde 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Skift til arbejdsområde 4" msgstr "Skift til arbejdsområde 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Skift til sidste arbejdsområde" msgstr "Skift til sidste arbejdsområde"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Flyt til arbejdsområdet til venstre"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Flyt til arbejdsområdet til højre"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Flyt til arbejdsområdet ovenover" msgstr "Flyt til arbejdsområdet ovenover"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Flyt til arbejdsområdet nedenunder" msgstr "Flyt til arbejdsområdet nedenunder"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "System" msgstr "System"
@@ -194,6 +177,10 @@ msgstr "Vis “kør kommando”-prompten"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Vis aktivitetsoversigten" msgstr "Vis aktivitetsoversigten"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Gendan tastaturgenvejene"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Vinduer" msgstr "Vinduer"
@@ -219,54 +206,50 @@ msgid "Restore window"
msgstr "Gendan vindue" msgstr "Gendan vindue"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Slå vinduesoprulning til/fra"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Luk vindue" msgstr "Luk vindue"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Skjul vindue" msgstr "Skjul vindue"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Flyt vindue" msgstr "Flyt vindue"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Ændr vinduesstørrelse" msgstr "Ændr vinduesstørrelse"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Slå visning af vindue på alle arbejdsområder til/fra" msgstr "Slå visning af vindue på alle arbejdsområder til/fra"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Hæv vindue hvis det er dækket, ellers sænk det" msgstr "Hæv vindue hvis det er dækket, ellers sænk det"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Hæv vindue over andre vinduer" msgstr "Hæv vindue over andre vinduer"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Sænk vindue under andre vinduer" msgstr "Sænk vindue under andre vinduer"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Maksimér vindue lodret" msgstr "Maksimér vindue lodret"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Maksimér vindue vandret" msgstr "Maksimér vindue vandret"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Delt visning venstre" msgstr "Delt visning venstre"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Delt visning højre" msgstr "Delt visning højre"
@@ -424,7 +407,18 @@ msgid ""
"enables remote desktop support. To support remote desktop with screen " "enables remote desktop support. To support remote desktop with screen "
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables " "sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
"screen cast support." "screen cast support."
msgstr "For at slå eksperimentelle funktioner til, skal du tilføje funktionsnøgleordet til listen. Om funktionen kræver genstart af kompositoren afhænger af den givne funktion. Der er ingen garanti for at eksperimentelle funktion forbliver tilgængelige eller mulige at konfigurere. Forvent ikke at noget i denne indstilling nødvendigvis fungerer i fremtiden. Mulige nøgleord i øjeblikket: • “scale-monitor-framebuffer” — får mutter til som standard at arrangere logiske skærme i et logisk pixelkoordinatrum, mens skærmes framebuffere skaleres frem for vinduesindholdet for at håndtere HiDPI-skærme. Fjernskrivebord med skærmdeling understøttes hvis “screen-cast” også er aktiveret. • “screen-cast” — aktiverer understøttelse af skærmoptagelse." msgstr ""
"For at slå eksperimentelle funktioner til, skal du tilføje "
"funktionsnøgleordet til listen. Om funktionen kræver genstart af "
"kompositoren afhænger af den givne funktion. Der er ingen garanti for at "
"eksperimentelle funktion forbliver tilgængelige eller mulige at konfigurere. "
"Forvent ikke at noget i denne indstilling nødvendigvis fungerer i fremtiden. "
"Mulige nøgleord i øjeblikket: • “scale-monitor-framebuffer” — får mutter til "
"som standard at arrangere logiske skærme i et logisk pixelkoordinatrum, mens "
"skærmes framebuffere skaleres frem for vinduesindholdet for at håndtere "
"HiDPI-skærme. Fjernskrivebord med skærmdeling understøttes hvis “screen-"
"cast” også er aktiveret. • “screen-cast” — aktiverer understøttelse af "
"skærmoptagelse."
#: data/org.gnome.mutter.gschema.xml.in:145 #: data/org.gnome.mutter.gschema.xml.in:145
msgid "Select window from tab popup" msgid "Select window from tab popup"
@@ -495,10 +489,41 @@ msgstr "Skift til VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Genaktivér genveje" msgstr "Genaktivér genveje"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Tillad indfangelse med Xwayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr "Tillad tastaturindfangelse af X11-programmer, som kører i Xwayland. For at en X11-tastaturindfangelse behandles i Wayland, skal klienten også enten sende en specifik X11-ClientMessage til rodvinduet eller være blandt de godkendte programmer i nøglen “xwayland-grab-access-rules”."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Xwayland-programmer, som må indfange tastatur"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr "Anfør navne på ressourcer eller ressourceklasser for X11-vinduer som tillades eller ikke tillades at udføre X11-tastaturindfangelse under Xwayland. Ressourcenavnet eller ressourceklassen for et givent X11-vindue kan findes med kommandoen “xprop WM_CLASS”. Værdierne understøtter jokertegnene “*” og “?”. Værdier som begynder med “!” forbydes, hvilket har præcedens over godkendelse, og dette tillader at fjerne programmer som ellers findes i systemets standardliste. Denne liste inkluderer følgende programmer: “@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@”. Brugere kan afbryde en eksisterende indfangelse ved hjælp af den særlige tastaturgenvej defineret ved nøglen “restore-shortcuts”."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2151 #: src/backends/meta-input-settings.c:2260
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Tilstandsskift (Gruppe %d)" msgstr "Tilstandsskift (Gruppe %d)"
@@ -506,37 +531,37 @@ msgstr "Tilstandsskift (Gruppe %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2174 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Skift skærm" msgstr "Skift skærm"
#: src/backends/meta-input-settings.c:2176 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Vis integreret hjælp" msgstr "Vis integreret hjælp"
#: src/backends/meta-monitor-manager.c:903 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Indbygget terminal" msgstr "Indbygget terminal"
#: src/backends/meta-monitor-manager.c:926 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Ukendt" msgstr "Ukendt"
#: src/backends/meta-monitor-manager.c:928 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Ukendt terminal" msgstr "Ukendt terminal"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:936 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -552,42 +577,46 @@ msgstr "Bip-hændelse"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Kunne ikke åbne X Window System-terminalen “%s”\n" msgstr "Kunne ikke åbne X Window System-terminalen “%s”\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Deaktivér forbindelse til sessionshåndtering" msgstr "Deaktivér forbindelse til sessionshåndtering"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Erstat den kørende vindueshåndtering" msgstr "Erstat den kørende vindueshåndtering"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Angiv sessionhåndterings-id" msgstr "Angiv sessionhåndterings-id"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "X-terminal som bruges" msgstr "X-terminal som bruges"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Initialisér session fra gemt fil" msgstr "Initialisér session fra gemt fil"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Gør kald til X synkrone" msgstr "Gør kald til X synkrone"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Kør som en wayland-kompositor" msgstr "Kør som en wayland-kompositor"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Kør som en indlejret kompositor" msgstr "Kør som en indlejret kompositor"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Kør som fuld terminalserver, frem for indlejret" msgstr "Kør som fuld terminalserver, frem for indlejret"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Kør med X11-motor"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -642,7 +671,7 @@ msgstr "Mutter-udvidelsesmodul der skal bruges"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Arbejdsområde %d" msgstr "Arbejdsområde %d"
#: src/core/screen.c:580 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -651,7 +680,7 @@ msgstr ""
"Terminalen “%s” har allerede en vindueshåndtering; prøv tilvalget --replace " "Terminalen “%s” har allerede en vindueshåndtering; prøv tilvalget --replace "
"for at erstatte den aktuelle vindueshåndtering." "for at erstatte den aktuelle vindueshåndtering."
#: src/core/screen.c:665 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Skærm %d på terminal “%s” er ugyldig\n" msgstr "Skærm %d på terminal “%s” er ugyldig\n"
@@ -665,7 +694,7 @@ msgstr "Mutter blev kompileret uden understøttelse for uddybende tilstand\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Tilstandsskift: Tilstand %d" msgstr "Tilstandsskift: Tilstand %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -679,6 +708,21 @@ msgstr ""
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (på %s)" msgstr "%s (på %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Flyt vindue et arbejdsområde til venstre"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Flyt vindue et arbejdsområde til højre"
#~ msgid "Move to workspace left"
#~ msgstr "Flyt til arbejdsområdet til venstre"
#~ msgid "Move to workspace right"
#~ msgstr "Flyt til arbejdsområdet til højre"
#~ msgid "Toggle shaded state"
#~ msgstr "Slå vinduesoprulning til/fra"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "Kunne ikke skanne temamappe: %s\n" #~ msgstr "Kunne ikke skanne temamappe: %s\n"

205
po/de.po
View File

@@ -3,26 +3,26 @@
# Matthias Warkus <mawarkus@gnome.org>, 2002. # Matthias Warkus <mawarkus@gnome.org>, 2002.
# Christian Neumair <chris@gnome-de.org>, 2002-2004. # Christian Neumair <chris@gnome-de.org>, 2002-2004.
# Hendrik Richter <hendrikr@gnome.org>, 2005, 2006, 2007, 2008. # Hendrik Richter <hendrikr@gnome.org>, 2005, 2006, 2007, 2008.
# Mario Blättermann <mario.blaettermann@gmail.com>, 2010-2013, 2016-2017. # Mario Blättermann <mario.blaettermann@gmail.com>, 2010-2013, 2016-2018.
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2011, 2012. # Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2011, 2012.
# Wolfgang Stöggl <c72578@yahoo.de> 2011, 2017. # Wolfgang Stöggl <c72578@yahoo.de> 2011, 2017.
# Tobias Endrigkeit <tobiasendrigkeit@googlemail.com>, 2012. # Tobias Endrigkeit <tobiasendrigkeit@googlemail.com>, 2012.
# Tim Sabsch <timæsabsch.com>, 2018.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-26 07:59+0000\n"
"POT-Creation-Date: 2017-11-10 18:18+0000\n" "PO-Revision-Date: 2018-02-26 21:26+0100\n"
"PO-Revision-Date: 2017-11-11 17:57+0100\n" "Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.0.4\n" "X-Generator: Poedit 2.0.6\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -49,130 +49,114 @@ msgid "Move window to last workspace"
msgstr "Fenster auf letzte Arbeitsfläche verschieben" msgstr "Fenster auf letzte Arbeitsfläche verschieben"
#: data/50-mutter-navigation.xml:24 #: 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" msgid "Move window one workspace up"
msgstr "Fenster eine Arbeitsfläche nach oben verschieben" msgstr "Fenster eine Arbeitsfläche nach oben verschieben"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Fenster eine Arbeitsfläche nach unten verschieben" msgstr "Fenster eine Arbeitsfläche nach unten verschieben"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Fenster einen Bildschirm nach links verschieben" msgstr "Fenster einen Bildschirm nach links verschieben"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Fenster einen Bildschirm nach rechts verschieben" msgstr "Fenster einen Bildschirm nach rechts verschieben"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Fenster einen Bildschirm nach oben verschieben" msgstr "Fenster einen Bildschirm nach oben verschieben"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Fenster einen Bildschirm nach unten verschieben" msgstr "Fenster einen Bildschirm nach unten verschieben"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Anwendungen wechseln" msgstr "Anwendungen wechseln"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Zur vorherigen Anwendung wechseln" msgstr "Zur vorherigen Anwendung wechseln"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Fenster wechseln" msgstr "Fenster wechseln"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Zum vorherigen Fenster wechseln" msgstr "Zum vorherigen Fenster wechseln"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Zwischen den Fenstern einer Anwendung wechseln" msgstr "Zwischen den Fenstern einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Zum vorherigen Fenster einer Anwendung wechseln" msgstr "Zum vorherigen Fenster einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Systemsteuerungen umschalten" msgstr "Systemsteuerungen umschalten"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Zur vorherigen Systemsteuerungen wechseln" msgstr "Zur vorherigen Systemsteuerungen wechseln"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Fenster sofort wechseln" msgstr "Fenster sofort wechseln"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Direkt zum vorherigen Fenster wechseln" msgstr "Direkt zum vorherigen Fenster wechseln"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Sofort zwischen den Fenstern einer Anwendung wechseln" msgstr "Sofort zwischen den Fenstern einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Direkt zum vorherigen Fenster einer Anwendung wechseln" msgstr "Direkt zum vorherigen Fenster einer Anwendung wechseln"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Systemsteuerungen sofort umschalten" msgstr "Systemsteuerungen sofort umschalten"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Direkt zur vorherigen Systemsteuerungen wechseln" msgstr "Direkt zur vorherigen Systemsteuerungen wechseln"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Alle normalen Fenster verbergen" msgstr "Alle normalen Fenster verbergen"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Zur Arbeitsfläche 1 wechseln" msgstr "Zur Arbeitsfläche 1 wechseln"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Zur Arbeitsfläche 2 wechseln" msgstr "Zur Arbeitsfläche 2 wechseln"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Zur Arbeitsfläche 3 wechseln" msgstr "Zur Arbeitsfläche 3 wechseln"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Zur Arbeitsfläche 4 wechseln" msgstr "Zur Arbeitsfläche 4 wechseln"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Zur letzten Arbeitsfläche wechseln" msgstr "Zur letzten Arbeitsfläche wechseln"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
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" msgid "Move to workspace above"
msgstr "Auf Arbeitsfläche darüber verschieben" msgstr "Auf Arbeitsfläche darüber verschieben"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Auf Arbeitsfläche darunter verschieben" msgstr "Auf Arbeitsfläche darunter verschieben"
@@ -217,55 +201,51 @@ msgid "Restore window"
msgstr "Fenstergröße wiederherstellen" msgstr "Fenstergröße wiederherstellen"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Fenster ein-/ausrollen"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Fenster schließen" msgstr "Fenster schließen"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Fenster verbergen" msgstr "Fenster verbergen"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Fenster verschieben" msgstr "Fenster verschieben"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Fenstergröße ändern" msgstr "Fenstergröße ändern"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "" msgstr ""
"Festlegen, ob das Fenster auf allen oder nur einer Arbeitsfläche sichtbar ist" "Festlegen, ob das Fenster auf allen oder nur einer Arbeitsfläche sichtbar ist"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Fenster anheben, falls es verdeckt ist, andernfalls absenken" msgstr "Fenster anheben, falls es verdeckt ist, andernfalls absenken"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Fenster vor die anderen Fenster anheben" msgstr "Fenster vor die anderen Fenster anheben"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Fenster hinter die anderen Fenster absenken" msgstr "Fenster hinter die anderen Fenster absenken"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Fenster vertikal maximieren" msgstr "Fenster vertikal maximieren"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Fenster horizontal maximieren" msgstr "Fenster horizontal maximieren"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Ansicht links teilen" msgstr "Ansicht links teilen"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Ansicht rechts teilen" msgstr "Ansicht rechts teilen"
@@ -323,7 +303,7 @@ msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:40 #: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Arbeitsflächen sollen dynamisch verwaltet werden " msgstr "Arbeitsflächen sollen dynamisch verwaltet werden"
#: data/org.gnome.mutter.gschema.xml.in:41 #: data/org.gnome.mutter.gschema.xml.in:41
msgid "" msgid ""
@@ -409,7 +389,7 @@ msgid ""
"screen of the monitor." "screen of the monitor."
msgstr "" msgstr ""
"Falls wahr, so werden neue Fenster immer in der Mitte des aktiven " "Falls wahr, so werden neue Fenster immer in der Mitte des aktiven "
"Bildschirms platziert" "Bildschirms platziert."
#: data/org.gnome.mutter.gschema.xml.in:107 #: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features" msgid "Enable experimental features"
@@ -513,10 +493,59 @@ msgstr "Zum virtuellen Terminal 12 wechseln"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Tastenkombinationen erneut aktivieren" msgstr "Tastenkombinationen erneut aktivieren"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Tastatur-Kontrollübernahmen in Xwayland erlauben"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Erlauben, dass in Xwayland laufende X11-Anwendungen Kontrolle über die "
"Tastatur übernehmen dürfen. Damit eine X11-Kontrollübernahme unter Wayland "
"durchgeführt werden kann, muss der Client auch entweder eine spezifische X11-"
"ClientMessage an das Root-Fenster senden oder in den als »whitelisted« im "
"Schlüssel »xwayland-grab-access-rules« aufgelisteten Anwendungen enthalten "
"sein."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Xwayland-Anwendungen mit Erlaubnis zur Kontrollübernahme der Tastatur"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Listet die Ressourcennamen oder -klassen von X11-Fenstern auf, die unter "
"Xwayland X11-Tastatur-Kontrollübernahmen durchführen dürfen. Ressourcenname "
"oder -klasse eines bestimmten X11-Fensters kann mit dem Befehl »xprop "
"WM_CLASS« ermittelt werden. Dabei werden »*« als Platzhalter und »?« als "
"Joker in den Wertangaben unterstützt. Mit »!« beginnende Werte gelten als "
"»blacklisted« und werden gegenüber den als »whitelisted« markierten Werten "
"bevorzugt, um in der Standardliste des Systems aufgeführte Anwendungen außer "
"Kraft zu setzen. Die Standardliste des Systems enthält die folgenden "
"Anwendungen: »@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@« Benutzer können eine "
"existierende Kontrollübernahme unterbrechen, indem sie das spezifische "
"Tastenkürzel verwenden, wie es im Schlüssel »restore-shortcuts« angegeben "
"ist."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2167 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Moduswechsel (Gruppe %d)" msgstr "Moduswechsel (Gruppe %d)"
@@ -524,37 +553,37 @@ msgstr "Moduswechsel (Gruppe %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2190 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Bildschirm wechseln" msgstr "Bildschirm wechseln"
#: src/backends/meta-input-settings.c:2192 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Bildschirmhilfe anzeigen" msgstr "Bildschirmhilfe anzeigen"
#: src/backends/meta-monitor-manager.c:908 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Eingebaute Anzeige" msgstr "Eingebaute Anzeige"
#: src/backends/meta-monitor-manager.c:931 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Unbekannt" msgstr "Unbekannt"
#: src/backends/meta-monitor-manager.c:933 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Unbekannte Anzeige" msgstr "Unbekannte Anzeige"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:941 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -571,42 +600,46 @@ msgstr "Klangereignis"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "X-Window-Systemanzeige »%s« konnte nicht geöffnet werden\n" msgstr "X-Window-Systemanzeige »%s« konnte nicht geöffnet werden\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Verbindung zur Sitzungsverwaltung deaktivieren" msgstr "Verbindung zur Sitzungsverwaltung deaktivieren"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Den aktuellen Fensterverwalter ersetzen" msgstr "Den aktuellen Fensterverwalter ersetzen"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Kennung der Sitzungsverwaltung angeben" msgstr "Kennung der Sitzungsverwaltung angeben"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Zu verwendende X-Anzeige" msgstr "Zu verwendende X-Anzeige"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Sitzung anhand gespeicherter Datei starten" msgstr "Sitzung anhand gespeicherter Datei starten"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "X-Aufrufe abgleichen" msgstr "X-Aufrufe abgleichen"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Als Wayland-Compositor ausführen" msgstr "Als Wayland-Compositor ausführen"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Als eingebetteten Compositor ausführen" msgstr "Als eingebetteten Compositor ausführen"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Als vollwertigen Display-Server verwenden (nicht eingebettet)" msgstr "Als vollwertigen Display-Server verwenden (nicht eingebettet)"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Mit X11-Backend ausführen"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -682,12 +715,12 @@ msgstr "Bildschirm %d auf Anzeige »%s« ist ungültig\n"
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter wurde ohne Unterstützung für den redseligen Modus kompiliert\n" msgstr "Mutter wurde ohne Unterstützung für den redseligen Modus kompiliert\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Moduswechsel: Modus %d" msgstr "Moduswechsel: Modus %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."

191
po/es.po
View File

@@ -7,15 +7,14 @@
# Pablo Gonzalo del Campo <pablodc@bigfoot.com>,2002,2003. # Pablo Gonzalo del Campo <pablodc@bigfoot.com>,2002,2003.
# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2004, 2005, 2006. # Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2004, 2005, 2006.
# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011. # Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012, 2013, 2014, 2015, 2016, 2017. # Daniel Mustieles <daniel.mustieles@gmail.com>, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter.master\n" "Project-Id-Version: mutter.master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-07 18:39+0000\n"
"POT-Creation-Date: 2017-11-17 16:03+0000\n" "PO-Revision-Date: 2018-02-22 12:34+0100\n"
"PO-Revision-Date: 2017-12-14 13:02+0100\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n" "Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n" "Language: es\n"
@@ -50,130 +49,114 @@ msgid "Move window to last workspace"
msgstr "Mover la ventana a la última área de trabajo" msgstr "Mover la ventana a la última área de trabajo"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Mover la ventana un área de trabajo a la izquierda"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Mover la ventana un área de trabajo a la derecha"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Subir la ventana un área de trabajo" msgstr "Subir la ventana un área de trabajo"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Bajar la ventana un área de trabajo" msgstr "Bajar la ventana un área de trabajo"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Mover la ventana una pantalla a la izquierda" msgstr "Mover la ventana una pantalla a la izquierda"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Mover la ventana una pantalla a la derecha" msgstr "Mover la ventana una pantalla a la derecha"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Subir la ventana una pantalla" msgstr "Subir la ventana una pantalla"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Bajar la ventana una pantalla" msgstr "Bajar la ventana una pantalla"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Cambiar entre aplicaciones" msgstr "Cambiar entre aplicaciones"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Cambiar a la aplicación anterior" msgstr "Cambiar a la aplicación anterior"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Cambiar entre ventanas" msgstr "Cambiar entre ventanas"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Cambiar a la ventana anterior" msgstr "Cambiar a la ventana anterior"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Cambiar entre ventanas de una aplicación" msgstr "Cambiar entre ventanas de una aplicación"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Cambiar a la ventana anterior de una aplicación" msgstr "Cambiar a la ventana anterior de una aplicación"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Cambiar entre controles del sistema" msgstr "Cambiar entre controles del sistema"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Cambiar al control del sistema anterior" msgstr "Cambiar al control del sistema anterior"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Cambiar entre ventanas directamente" msgstr "Cambiar entre ventanas directamente"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Cambiar directamente a la ventana anterior" msgstr "Cambiar directamente a la ventana anterior"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Cambiar entre ventanas de una aplicación directamente" msgstr "Cambiar entre ventanas de una aplicación directamente"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Cambiar directamente a la ventana anterior de una aplicación" msgstr "Cambiar directamente a la ventana anterior de una aplicación"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Cambiar entre controles del sistema directamente" msgstr "Cambiar entre controles del sistema directamente"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Cambiar directamente al control del sistema anterior" msgstr "Cambiar directamente al control del sistema anterior"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Ocultar todas las ventanas normales" msgstr "Ocultar todas las ventanas normales"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Cambiar al área de trabajo 1" msgstr "Cambiar al área de trabajo 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Cambiar al área de trabajo 2" msgstr "Cambiar al área de trabajo 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Cambiar al área de trabajo 3" msgstr "Cambiar al área de trabajo 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Cambiar al área de trabajo 4" msgstr "Cambiar al área de trabajo 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Cambiar a la útima área de trabajo" msgstr "Cambiar a la útima área de trabajo"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Mover al área de trabajo de la izquierda"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Mover al área de trabajo de la derecha"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Mover al área de trabajo de la arriba" msgstr "Mover al área de trabajo de la arriba"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Mover al área de trabajo de abajo" msgstr "Mover al área de trabajo de abajo"
@@ -218,54 +201,50 @@ msgid "Restore window"
msgstr "Restaurar la ventana" msgstr "Restaurar la ventana"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Cambiar el estado de enrollado"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Cerrar la ventana" msgstr "Cerrar la ventana"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Ocultar la ventana" msgstr "Ocultar la ventana"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Mover la ventana" msgstr "Mover la ventana"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Redimensionar la ventana" msgstr "Redimensionar la ventana"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Conmutar la ventana en todas las áreas de trabajo o sólo en una" msgstr "Conmutar la ventana en todas las áreas de trabajo o sólo en una"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Elevar la ventana si está cubierta, de lo contrario, bajarla" msgstr "Elevar la ventana si está cubierta, de lo contrario, bajarla"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Elevar la ventana sobre las otras ventanas" msgstr "Elevar la ventana sobre las otras ventanas"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Bajar la ventana por debajo de otras ventanas" msgstr "Bajar la ventana por debajo de otras ventanas"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Maximizar la ventana verticalmente" msgstr "Maximizar la ventana verticalmente"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Maximizar la ventana horizontalmente" msgstr "Maximizar la ventana horizontalmente"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Ver división a la izquierda" msgstr "Ver división a la izquierda"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Ver división a la derecha" msgstr "Ver división a la derecha"
@@ -418,20 +397,6 @@ msgid "Enable experimental features"
msgstr "Activar las características experimentales" msgstr "Activar las características experimentales"
#: data/org.gnome.mutter.gschema.xml.in:108 #: data/org.gnome.mutter.gschema.xml.in:108
#| msgid ""
#| "To enable experimental features, add the feature keyword to the list. "
#| "Whether the feature requires restarting the compositor depends on the "
#| "given feature. Any experimental feature is not required to still be "
#| "available, or configurable. Dont expect adding anything in this setting "
#| "to be future proof. Currently possible keywords: • “monitor-config-"
#| "manager” — use the new monitor configuration system, aimed to replace the "
#| "old one. This enables a higher level configuration API to be used by "
#| "configuration applications, as well as the ability to configure per "
#| "logical monitor scale. • “scale-monitor-framebuffer” — makes mutter "
#| "default to layout logical monitors in a logical pixel coordinate space, "
#| "while scaling monitor framebuffers instead of window content, to manage "
#| "HiDPI monitors. Does not require a restart. Also enabling “monitor-config-"
#| "manager” is required for this feature to be enabled."
msgid "" msgid ""
"To enable experimental features, add the feature keyword to the list. " "To enable experimental features, add the feature keyword to the list. "
"Whether the feature requires restarting the compositor depends on the given " "Whether the feature requires restarting the compositor depends on the given "
@@ -526,6 +491,37 @@ msgstr "Cambiar al VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Volver a activar los atajos" msgstr "Volver a activar los atajos"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Permitir capturas con Xwayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Aplicaciones de Xwayland que pueden capturar el teclado"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
@@ -567,7 +563,7 @@ msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:479 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -584,42 +580,46 @@ msgstr "Evento de campana"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n" msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Desactivar conexión al gestor de sesión" msgstr "Desactivar conexión al gestor de sesión"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Reemplazar el gestor de ventanas en ejecución" msgstr "Reemplazar el gestor de ventanas en ejecución"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Especificar el ID se gestión de sesión" msgstr "Especificar el ID se gestión de sesión"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Pantalla X que usar" msgstr "Pantalla X que usar"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Inicializar sesión desde el archivo de salvaguarda" msgstr "Inicializar sesión desde el archivo de salvaguarda"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Hacer que las llamadas a las X sean síncronas" msgstr "Hacer que las llamadas a las X sean síncronas"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Ejecutar como compositor Wayland" msgstr "Ejecutar como compositor Wayland"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Ejecutar como compositor anidado" msgstr "Ejecutar como compositor anidado"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Ejecutar como servidor completo, en lugar de anidado" msgstr "Ejecutar como servidor completo, en lugar de anidado"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Ejecutar con «backend» de X11"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -698,7 +698,7 @@ msgstr "Mutter fue compilado sin soporte para modo prolijo\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Cambiar modo: modo %d" msgstr "Cambiar modo: modo %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -711,6 +711,21 @@ msgstr ""
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (on %s)" msgstr "%s (on %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Mover la ventana un área de trabajo a la izquierda"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Mover la ventana un área de trabajo a la derecha"
#~ msgid "Move to workspace left"
#~ msgstr "Mover al área de trabajo de la izquierda"
#~ msgid "Move to workspace right"
#~ msgstr "Mover al área de trabajo de la derecha"
#~ msgid "Toggle shaded state"
#~ msgstr "Cambiar el estado de enrollado"
#~ msgid "background texture could not be created from file" #~ msgid "background texture could not be created from file"
#~ msgstr "no se pudo crear la textura de fondo a partir de archivo" #~ msgstr "no se pudo crear la textura de fondo a partir de archivo"

1961
po/et.po

File diff suppressed because it is too large Load Diff

211
po/fr.po
View File

@@ -1,5 +1,5 @@
# French translation of mutter. # French translation of mutter.
# Copyright (C) 2002-2017 Free Software Foundation, Inc. # Copyright (C) 2002-2018 Free Software Foundation, Inc.
# This file is distributed under the same license as the metacity package. # This file is distributed under the same license as the metacity package.
# #
# Christophe Fergeau <teuf@users.sourceforge.net>, 2002. # Christophe Fergeau <teuf@users.sourceforge.net>, 2002.
@@ -11,7 +11,7 @@
# Cyprien Le Pannérer <cyplp@free.fr>, 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. # Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007.
# Claude Paroz <claude@2xlibre.net>, 2008-2017. # Claude Paroz <claude@2xlibre.net>, 2008-2018.
# Bruno Brouard <annoa.b@gmail.com>, 2011-12. # Bruno Brouard <annoa.b@gmail.com>, 2011-12.
# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2017. # Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2017.
# Charles Monzat <superboa@hotmail.fr>, 2016, 2017. # Charles Monzat <superboa@hotmail.fr>, 2016, 2017.
@@ -19,18 +19,16 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-06 04:14+0000\n"
"POT-Creation-Date: 2017-11-10 18:18+0000\n" "PO-Revision-Date: 2018-03-03 11:18+0100\n"
"PO-Revision-Date: 2017-11-10 23:07+0100\n" "Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"Last-Translator: Charles Monzat <superboa@hotmail.fr>\n"
"Language-Team: français <gnomefr@traduc.org>\n" "Language-Team: français <gnomefr@traduc.org>\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Gtranslator 2.91.7\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -57,130 +55,114 @@ msgid "Move window to last workspace"
msgstr "Déplacer la fenêtre vers le dernier espace de travail" msgstr "Déplacer la fenêtre vers le dernier espace de travail"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Déplacer la fenêtre dun espace de travail vers la gauche"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Déplacer la fenêtre dun espace de travail vers la droite"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Déplacer la fenêtre dun espace de travail vers le haut" msgstr "Déplacer la fenêtre dun espace de travail vers le haut"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Déplacer la fenêtre dun espace de travail vers le bas" msgstr "Déplacer la fenêtre dun espace de travail vers le bas"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Déplacer la fenêtre dun écran vers la gauche" msgstr "Déplacer la fenêtre dun écran vers la gauche"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Déplacer la fenêtre dun écran vers la droite" msgstr "Déplacer la fenêtre dun écran vers la droite"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Déplacer la fenêtre dun écran vers le haut" msgstr "Déplacer la fenêtre dun écran vers le haut"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Déplacer la fenêtre dun écran vers le bas" msgstr "Déplacer la fenêtre dun écran vers le bas"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Changer dapplication" msgstr "Changer dapplication"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Passer à lapplication précédente" msgstr "Passer à lapplication précédente"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Changer de fenêtre" msgstr "Changer de fenêtre"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Passer à la fenêtre précédente" msgstr "Passer à la fenêtre précédente"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Changer de fenêtre dune application" msgstr "Changer de fenêtre dune application"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Passer à la fenêtre précédente dune application" msgstr "Passer à la fenêtre précédente dune application"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Changer les contrôles système" msgstr "Changer les contrôles système"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Passer au contrôle système précédent" msgstr "Passer au contrôle système précédent"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Changer de fenêtre directement" msgstr "Changer de fenêtre directement"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Passer directement à la fenêtre précédente" msgstr "Passer directement à la fenêtre précédente"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Changer de fenêtre dune application directement" msgstr "Changer de fenêtre dune application directement"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Passer directement à la fenêtre précédente dune application" msgstr "Passer directement à la fenêtre précédente dune application"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Changer les contrôles système directement" msgstr "Changer les contrôles système directement"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Passer directement au contrôle système précédent" msgstr "Passer directement au contrôle système précédent"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Masquer toutes les fenêtres normales" msgstr "Masquer toutes les fenêtres normales"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Passer à lespace de travail 1" msgstr "Passer à lespace de travail 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Passer à lespace de travail 2" msgstr "Passer à lespace de travail 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Passer à lespace de travail 3" msgstr "Passer à lespace de travail 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Passer à lespace de travail 4" msgstr "Passer à lespace de travail 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Passer au dernier espace de travail" msgstr "Passer au dernier espace de travail"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Déplacer vers lespace de travail de gauche"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Déplacer vers lespace de travail de droite"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Déplacer vers lespace de travail du dessus" msgstr "Déplacer vers lespace de travail du dessus"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Déplacer vers lespace de travail du dessous" msgstr "Déplacer vers lespace de travail du dessous"
@@ -225,55 +207,51 @@ msgid "Restore window"
msgstr "Restaurer la fenêtre" msgstr "Restaurer la fenêtre"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Basculer létat de repli"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Fermer la fenêtre" msgstr "Fermer la fenêtre"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Masquer la fenêtre" msgstr "Masquer la fenêtre"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Déplacer la fenêtre" msgstr "Déplacer la fenêtre"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Redimensionner la fenêtre" msgstr "Redimensionner la fenêtre"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Placer la fenêtre sur tous les espaces de travail, ou sur un seul" msgstr "Placer la fenêtre sur tous les espaces de travail, ou sur un seul"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "" msgstr ""
"Mettre la fenêtre au premier plan si elle est cachée, sinon à larrière-plan" "Mettre la fenêtre au premier plan si elle est cachée, sinon à larrière-plan"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Mettre la fenêtre au premier plan" msgstr "Mettre la fenêtre au premier plan"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Mettre la fenêtre sous les autres fenêtres" msgstr "Mettre la fenêtre sous les autres fenêtres"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Maximiser la fenêtre verticalement" msgstr "Maximiser la fenêtre verticalement"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Maximiser la fenêtre horizontalement" msgstr "Maximiser la fenêtre horizontalement"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Vue divisée sur la gauche" msgstr "Vue divisée sur la gauche"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Vue divisée sur la droite" msgstr "Vue divisée sur la droite"
@@ -520,10 +498,56 @@ msgstr "Passer à lémulateur de terminal 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Réactiver les raccourcis" msgstr "Réactiver les raccourcis"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Autoriser les captures clavier avec Xwayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Permettre aux captures de clavier émises par les applications X11 tournant "
"dans Xwayland dêtre prises en compte. Pour que ceci puisse arriver, le "
"client doit aussi soit envoyer un ClientMessage X11 spécifique à la "
"fenêtre racine, soit figurer dans les applications autorisées dans la clé "
 xwayland-access-rules »."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Applications Xwayland autorisées à émettre des captures clavier"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Liste de noms de ressources ou de classes de ressources de fenêtres X11 "
"autorisées ou non à émettre des captures clavier sous Xwayland. Le nom ou "
"la classe de ressource dune fenêtre X11 donnée peut être obtenue à laide "
"de la commande « xprop WM_CLASS ». Les caractères joker « * » et « ? » sont "
"acceptées dans les valeurs. Les valeurs commençant pas « ! » sont en liste "
"noire, qui a priorité sur la liste blanche, pour révoquer les applications "
"de la liste système par défaut. Celle-ci contient les applications suivantes : "
"« @XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@ ». Les utilisateurs peuvent casser une "
"capture existante en utilisant le raccourci clavier spécifique défini par "
"la combinaison de touches « restore-shortcuts »."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2167 #: src/backends/meta-input-settings.c:2260
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Changement de mode (groupe %d)" msgstr "Changement de mode (groupe %d)"
@@ -531,37 +555,37 @@ msgstr "Changement de mode (groupe %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2190 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Changer de moniteur" msgstr "Changer de moniteur"
#: src/backends/meta-input-settings.c:2192 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Afficher laide à lécran" msgstr "Afficher laide à lécran"
#: src/backends/meta-monitor-manager.c:908 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Affichage intégré" msgstr "Affichage intégré"
#: src/backends/meta-monitor-manager.c:931 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Inconnu" msgstr "Inconnu"
#: src/backends/meta-monitor-manager.c:933 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Affichage inconnu" msgstr "Affichage inconnu"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:941 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -578,42 +602,46 @@ msgstr "Évènement sonore"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Impossible douvrir laffichage « %s » du système X Window\n" msgstr "Impossible douvrir laffichage « %s » du système X Window\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Désactiver la connexion au gestionnaire de sessions" msgstr "Désactiver la connexion au gestionnaire de sessions"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement" msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Indiquer lID de gestion de sessions" msgstr "Indiquer lID de gestion de sessions"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Affichage X à utiliser" msgstr "Affichage X à utiliser"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Initialiser la session depuis le fichier de sauvegarde" msgstr "Initialiser la session depuis le fichier de sauvegarde"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Rendre synchrones les appels à X" msgstr "Rendre synchrones les appels à X"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Lancer comme un compositeur wayland" msgstr "Lancer comme un compositeur wayland"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Lancer comme un compositeur imbriqué" msgstr "Lancer comme un compositeur imbriqué"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Lancer comme un serveur daffichage complet, plutôt quimbriqué" msgstr "Lancer comme un serveur daffichage complet, plutôt quimbriqué"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Lancer avec le moteur X11"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -692,7 +720,7 @@ msgstr "Mutter a été compilé sans la prise en charge du mode bavard\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Changement de mode : mode %d" msgstr "Changement de mode : mode %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -705,3 +733,18 @@ msgstr ""
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (sur %s)" msgstr "%s (sur %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Déplacer la fenêtre dun espace de travail vers la gauche"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Déplacer la fenêtre dun espace de travail vers la droite"
#~ msgid "Move to workspace left"
#~ msgstr "Déplacer vers lespace de travail de gauche"
#~ msgid "Move to workspace right"
#~ msgstr "Déplacer vers lespace de travail de droite"
#~ msgid "Toggle shaded state"
#~ msgstr "Basculer létat de repli"

335
po/gd.po
View File

@@ -1,14 +1,13 @@
# Scottish Gaelic translation for mutter. # Scottish Gaelic translation for mutter.
# Copyright (C) 2016 mutter's COPYRIGHT HOLDER # Copyright (C) 2016 mutter's COPYRIGHT HOLDER
# This file is distributed under the same license as the mutter package. # This file is distributed under the same license as the mutter package.
# GunChleoc <fios@foramnagaidhlig.net>, 2016, 2017. # GunChleoc <fios@foramnagaidhlig.net>, 2016, 2017, 2018.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutte" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"r&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-01-27 08:02+0000\n"
"POT-Creation-Date: 2017-03-02 11:37+0000\n" "PO-Revision-Date: 2018-03-01 10:45+0100\n"
"PO-Revision-Date: 2017-03-07 11:59+0100\n"
"Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n" "Last-Translator: GunChleoc <fios@foramnagaidhlig.net>\n"
"Language-Team: Fòram na Gàidhlig\n" "Language-Team: Fòram na Gàidhlig\n"
"Language: gd\n" "Language: gd\n"
@@ -18,6 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " "Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
"(n > 2 && n < 20) ? 2 : 3;\n" "(n > 2 && n < 20) ? 2 : 3;\n"
"X-Generator: Virtaal 0.7.1\n" "X-Generator: Virtaal 0.7.1\n"
"(n > 2 && n < 20) ? 2: 3;\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
@@ -166,13 +166,13 @@ msgstr "Gluais dhan rum-obrach air an taobh deas"
#: data/50-mutter-navigation.xml:135 #: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Gluais dhan rum-obrach aig a' bharr" msgstr "Gluais dhan rum-obrach aig a bharr"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:138
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Gluais dhan rum-obrach aig a' bhonn" msgstr "Gluais dhan rum-obrach aig a bhonn"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "An siostam" msgstr "An siostam"
@@ -184,6 +184,10 @@ msgstr ""
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Foir-shealladh air na gnìomhachdan" msgstr "Foir-shealladh air na gnìomhachdan"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Aisig ath-ghoiridean a mheur-chlàir"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Uinneagan" msgstr "Uinneagan"
@@ -250,7 +254,7 @@ msgstr "Làn-mheudaich an uinneag gu h-ingearach"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:39
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Làn-mheudaich an uinneag air a' chòmhnard" msgstr "Làn-mheudaich an uinneag air a chòmhnard"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:43
msgid "View split on left" msgid "View split on left"
@@ -262,284 +266,135 @@ msgstr "Sgoilt an t-sealladh air an taobh deas"
#: data/mutter.desktop.in:4 #: data/mutter.desktop.in:4
msgid "Mutter" msgid "Mutter"
msgstr "" msgstr "Mutter"
#: data/org.gnome.mutter.gschema.xml.in:7 #: data/org.gnome.mutter.gschema.xml.in:155
msgid "Modifier to use for extended window management operations" #| msgid "Switch monitor"
msgstr "" msgid "Switch monitor configurations"
msgstr "Gearr leum eadar rèiteachaidhean monatair"
#: data/org.gnome.mutter.gschema.xml.in:8 #. TRANSLATORS: This string refers to a button that switches between
msgid "" #. * different modes.
"This key will initiate the \"overlay\", which is a combination window " #.
"overview and application launching system. The default is intended to be the " #: src/backends/meta-input-settings.c:2167
"\"Windows key\" on PC hardware. It's expected that this binding either the " #, c-format
"default or set to the empty string." #| msgid "Mode Switch: Mode %d"
msgstr "" msgid "Mode Switch (Group %d)"
msgstr "Suidse nam modh (Buidheann %d)"
#: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs"
msgstr ""
#: 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:30
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
#: 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:40
msgid "Workspaces are managed dynamically"
msgstr ""
#: 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:50
msgid "Workspaces only on primary"
msgstr ""
#: 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:59
msgid "No tab popup"
msgstr ""
#: 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:68
msgid "Delay focus changes until the pointer stops moving"
msgstr ""
#: 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:79
msgid "Draggable border width"
msgstr ""
#: 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:89
msgid "Auto maximize nearly monitor sized windows"
msgstr ""
#: 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:98
msgid "Place new windows in the center"
msgstr ""
#: 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:120
msgid "Select window from tab popup"
msgstr ""
#: data/org.gnome.mutter.gschema.xml.in:125
msgid "Cancel tab popup"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:10
msgid "Switch to VT 2"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:14
msgid "Switch to VT 3"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:18
msgid "Switch to VT 4"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:22
msgid "Switch to VT 5"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:26
msgid "Switch to VT 6"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:30
msgid "Switch to VT 7"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:34
msgid "Switch to VT 8"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:38
msgid "Switch to VT 9"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:42
msgid "Switch to VT 10"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:46
msgid "Switch to VT 11"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:50
msgid "Switch to VT 12"
msgstr ""
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:1913 #: src/backends/meta-input-settings.c:2190
#| msgid "Switch system controls"
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Gearr leum gu monatair eile" msgstr "Gearr leum gu monatair eile"
#: src/backends/meta-input-settings.c:1915 #: src/backends/meta-input-settings.c:2192
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Seall a' chobhair air an sgrìn" msgstr "Seall a chobhair air an sgrìn"
#: src/backends/meta-monitor-manager.c:515 #: src/backends/meta-monitor-manager.c:908
msgid "Built-in display" msgid "Built-in display"
msgstr "Uidheam-taisbeanaidh 'na broinn" msgstr "Uidheam-taisbeanaidh na broinn"
#: src/backends/meta-monitor-manager.c:538 #: src/backends/meta-monitor-manager.c:931
msgid "Unknown" msgid "Unknown"
msgstr "Chan eil fhios" msgstr "Chan eil fhios"
#: src/backends/meta-monitor-manager.c:540 #: src/backends/meta-monitor-manager.c:933
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Uidheam-taisbeanaidh nach aithne dhuinn" msgstr "Uidheam-taisbeanaidh nach aithne dhuinn"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:548 #: src/backends/meta-monitor-manager.c:941
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:471 #: src/compositor/compositor.c:479
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display \"%s" "Another compositing manager is already running on screen %i on display “%s”."
"\"."
msgstr "" msgstr ""
#: src/core/bell.c:194 #: src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "" msgstr ""
#: src/core/delete.c:127 #: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr ""
#: src/core/main.c:189
msgid "Disable connection to session manager"
msgstr ""
#: src/core/main.c:195
msgid "Replace the running window manager"
msgstr ""
#: src/core/main.c:201
msgid "Specify session management ID"
msgstr ""
#: src/core/main.c:206
msgid "X Display to use"
msgstr ""
#: src/core/main.c:212
msgid "Initialize session from savefile"
msgstr ""
#: src/core/main.c:218
msgid "Make X calls synchronous"
msgstr ""
#: src/core/main.c:225
msgid "Run as a wayland compositor"
msgstr ""
#: src/core/main.c:231
msgid "Run as a nested compositor"
msgstr ""
#: src/core/main.c:239
msgid "Run as a full display server, rather than nested"
msgstr ""
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "" msgstr ""
#: src/core/delete.c:129 #: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding." msgid "Application is not responding."
msgstr "" msgstr ""
#: src/core/delete.c:134 #: src/core/meta-close-dialog-default.c:154
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
msgstr "" msgstr ""
#: src/core/delete.c:141 #: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Fuirich"
#: src/core/delete.c:141
msgid "_Force Quit" msgid "_Force Quit"
msgstr "Sparr _fàgail air" msgstr "Sparr _fàgail air"
#: src/core/display.c:590 #: src/core/meta-close-dialog-default.c:161
#, c-format msgid "_Wait"
msgid "Failed to open X Window System display '%s'\n" msgstr "_Fuirich"
msgstr ""
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr ""
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr ""
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr ""
#: src/core/main.c:199
msgid "X Display to use"
msgstr ""
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr ""
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr ""
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr ""
#: 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 #, c-format
msgid "" msgid ""
"mutter %s\n" "mutter %s\n"
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"This is free software; see the source for copying conditions.\n" "This is free software; see the source for copying conditions.\n"
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
"PARTICULAR PURPOSE.\n" "PARTICULAR PURPOSE.\n"
@@ -558,34 +413,34 @@ msgstr ""
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Rum-obrach %d" msgstr "Rum-obrach %d"
#: src/core/screen.c:521 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display \"%s\" already has a window manager; try using the --replace option " "Display “%s” already has a window manager; try using the --replace option to "
"to replace the current window manager." "replace the current window manager."
msgstr "" msgstr ""
#: src/core/screen.c:606 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display %s is invalid\n"
msgstr "" msgstr ""
#: src/core/util.c:120 #: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "" msgstr ""
#: src/wayland/meta-wayland-tablet-pad.c:595 #: src/wayland/meta-wayland-tablet-pad.c:563
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Suidse nam modh: Modh %d" msgstr "Suidse nam modh: Modh %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1815
msgid "" msgid ""
"These windows do not support &quot;save current setup&quot; and will have to " "These windows do not support save current setup and will have to be "
"be restarted manually next time you log in." "restarted manually next time you log in."
msgstr "" msgstr ""
#: src/x11/window-props.c:548 #: src/x11/window-props.c:559
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (air %s)" msgstr "%s (air %s)"

View File

@@ -14,16 +14,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gl\n" "Project-Id-Version: gl\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2018-02-06 04:14+0000\n" "POT-Creation-Date: 2018-03-03 13:19+0000\n"
"PO-Revision-Date: 2018-02-14 23:45+0200\n" "PO-Revision-Date: 2018-05-07 19:37+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n" "Last-Translator: marcos <marcoslansgarza@gmail.com>\n"
"Language-Team: Galician\n" "Language-Team: Galician\n"
"Language: gl\n" "Language: gl\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Virtaal 0.7.1\n" "X-Generator: Poedit 2.0.6\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
@@ -100,7 +100,7 @@ msgstr "Cambia á xanela anterior dun aplicativo"
#: data/50-mutter-navigation.xml:70 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Cambiar entre os controles do sistema" msgstr "Cambiar entre os controis do sistema"
#: data/50-mutter-navigation.xml:75 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
@@ -124,7 +124,7 @@ msgstr "Cambia directamente á xanela anterior do aplicativo"
#: data/50-mutter-navigation.xml:97 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Cambiar entre os controles do sistema directamente" msgstr "Cambiar entre os controis do sistema directamente"
#: data/50-mutter-navigation.xml:102 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
@@ -491,7 +491,7 @@ msgstr "Reactivar os atallos"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64 #: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland" msgid "Allow grabs with Xwayland"
msgstr "" msgstr "Permitir capturas con Xwayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65 #: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid "" msgid ""
@@ -501,10 +501,15 @@ msgid ""
"window or be among the applications white-listed in key “xwayland-grab-" "window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”." "access-rules”."
msgstr "" msgstr ""
"Permitir que se teña en conta a captura do teclado desde aplicativos X11 "
"executándose en Xwayland. Para que a captura X11 se teña en conta baixo "
"Wayland, o cliente debe enviar un ClientMessage de X11 específico á xanela "
"principal ou estar entre os aplicatios na lista blanca da chave «xwayland-"
"grab-access-rules»."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77 #: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs" msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "" msgstr "Aplicaciones de Xwayland que poden capturar o teclado"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78 #: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid "" msgid ""
@@ -519,11 +524,21 @@ msgid ""
"using the specific keyboard shortcut defined by the keybinding key “restore-" "using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”." "shortcuts”."
msgstr "" msgstr ""
"Lista de nomes de recursos ou clases de recursos para as xanelas X11 tanto "
"permitidas como non permitidas para a captura do teclado en X11 baixo "
"Xwayland. O nome do recurso ou a clase do recurso da xanela X11 dada pode "
"obterse usando a orde «xprop WM_CLASS». Admítense os comodíns «*» e os "
"jokers \"?\" nos valores. Os valores comezando con «!» incluiranse na lista "
"negra, que ten precedencia sobre a lista branca, para revogar aplicativos "
"desde a lista por omisión do sistema. A lista por omisión do sitema inclúe "
"os seguintes aplicativos “@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Os usuarios "
"poden romper unha captura existente usando un atallo de teclado específico "
"definido na chave de atallo «restore-shortcuts»."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2260 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Modo conmutador (Grupo %d)" msgstr "Modo conmutador (Grupo %d)"
@@ -531,11 +546,11 @@ msgstr "Modo conmutador (Grupo %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2283 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Cambiar monitor" msgstr "Cambiar monitor"
#: src/backends/meta-input-settings.c:2285 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Mostrar axuda en pantalla" msgstr "Mostrar axuda en pantalla"
@@ -690,7 +705,7 @@ msgstr "A pantalla %d na visualización «%s» non é válida\n"
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter foi compilado sen compatibilidade para o modo detallado\n" msgstr "Mutter foi compilado sen compatibilidade para o modo detallado\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Modo conmutador: Modo %d" msgstr "Modo conmutador: Modo %d"

View File

@@ -11,8 +11,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2018-01-24 21:11+0000\n" "POT-Creation-Date: 2018-02-07 18:39+0000\n"
"PO-Revision-Date: 2018-01-26 21:46+0100\n" "PO-Revision-Date: 2018-02-23 23:53+0100\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n" "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n" "Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
"Language: hu\n" "Language: hu\n"
@@ -523,15 +523,15 @@ msgstr ""
"WM_CLASS” paranccsal kérhető le. Az értékekben a „*” vagy „?” helyettesítő " "WM_CLASS” paranccsal kérhető le. Az értékekben a „*” vagy „?” helyettesítő "
"karakterek támogatottak. A „!” karakterrel kezdődő értékek feketelistára " "karakterek támogatottak. A „!” karakterrel kezdődő értékek feketelistára "
"kerülnek, és a fehérlista előtt lesznek figyelembe véve, így felülbírálva az " "kerülnek, és a fehérlista előtt lesznek figyelembe véve, így felülbírálva az "
"alapértelmezett rendszerlistát. Az alapértelmezett rendszerlistán a következő " "alapértelmezett rendszerlistát. Az alapértelmezett rendszerlistán a "
"alkalmazások szerepelnek: „@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@”. A " "következő alkalmazások szerepelnek: „@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@”. "
"felhasználók megszakíthatják a létező megragadásokat a „restore-shortcuts” " "A felhasználók megszakíthatják a létező megragadásokat a „restore-shortcuts” "
"kulcsban megadott gyorsbillentyűvel." "kulcsban megadott gyorsbillentyűvel."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2259 #: src/backends/meta-input-settings.c:2260
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Módkapcsoló (%d. csoport)" msgstr "Módkapcsoló (%d. csoport)"
@@ -539,11 +539,11 @@ msgstr "Módkapcsoló (%d. csoport)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2282 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Monitorváltás" msgstr "Monitorváltás"
#: src/backends/meta-input-settings.c:2284 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Képernyősúgó megjelenítése" msgstr "Képernyősúgó megjelenítése"
@@ -586,43 +586,47 @@ msgstr "Csengetés esemény"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Nem sikerült megnyitni a(z) „%s” X Window rendszer képernyőt\n" msgstr "Nem sikerült megnyitni a(z) „%s” X Window rendszer képernyőt\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "A munkamenet-kezelőhöz való csatlakozás tiltása" msgstr "A munkamenet-kezelőhöz való csatlakozás tiltása"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "A futó ablakkezelő helyettesítése" msgstr "A futó ablakkezelő helyettesítése"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "A munkamenet-kezelő azonosítójának megadása" msgstr "A munkamenet-kezelő azonosítójának megadása"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "A használandó X megjelenítő" msgstr "A használandó X megjelenítő"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "A munkamenet előkészítése a mentési fájlból" msgstr "A munkamenet előkészítése a mentési fájlból"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Az X-hívások szinkronná tétele" msgstr "Az X-hívások szinkronná tétele"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Futtatás wayland betűszedőként" msgstr "Futtatás wayland betűszedőként"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Futtatás beágyazott betűszedőként" msgstr "Futtatás beágyazott betűszedőként"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "" msgstr ""
"Futtatás teljes megjelenítő kiszolgálóként az egymásba ágyazott helyett" "Futtatás teljes megjelenítő kiszolgálóként az egymásba ágyazott helyett"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Futtatás X11 háttérprogrammal"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -700,7 +704,7 @@ msgstr "A Mutter ablakkezelőt a részletes mód támogatása nélkül fordítot
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Módkapcsoló: %d. mód" msgstr "Módkapcsoló: %d. mód"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."

208
po/it.po
View File

@@ -2,18 +2,18 @@
# Based on Italian translation for Metacity # Based on Italian translation for Metacity
# This file is distributed under the same license as metacity package # This file is distributed under the same license as metacity package
# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Free Software Foundation, Inc. # Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Free Software Foundation, Inc.
# Copyright (C) 2018 Free Software Foundation, Inc.
# Pier Luigi Fiorini <plfiorini@libero.it>, 2002. # Pier Luigi Fiorini <plfiorini@libero.it>, 2002.
# Lapo Calamandrei <lapo.calamandrei@virgilio.it>, 2003. # Lapo Calamandrei <lapo.calamandrei@virgilio.it>, 2003.
# Luca Ferretti <lferrett@gnome.org>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012. # Luca Ferretti <lferrett@gnome.org>, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
# Milo Casagrande <milo@milo.name>, 2012, 2013, 2014, 2015, 2016, 2017. # Milo Casagrande <milo@milo.name>, 2012, 2013, 2014, 2015, 2016, 2017, 2018.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-06 04:14+0000\n"
"POT-Creation-Date: 2017-11-10 18:18+0000\n" "PO-Revision-Date: 2018-02-09 16:49+0100\n"
"PO-Revision-Date: 2017-11-17 14:30+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n" "Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italian <tp@lists.linux.it>\n" "Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n" "Language: it\n"
@@ -48,130 +48,114 @@ msgid "Move window to last workspace"
msgstr "Sposta la finestra sull'ultimo spazio di lavoro" msgstr "Sposta la finestra sull'ultimo spazio di lavoro"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Sposta la finestra sullo spazio di lavoro a sinistra"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Sposta la finestra sullo spazio di lavoro a destra"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Sposta la finestra sullo spazio di lavoro in alto" msgstr "Sposta la finestra sullo spazio di lavoro in alto"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Sposta la finestra sullo spazio di lavoro in basso" msgstr "Sposta la finestra sullo spazio di lavoro in basso"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Sposta la finestra un monitor a sinistra" msgstr "Sposta la finestra un monitor a sinistra"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Sposta la finestra un monitor a destra" msgstr "Sposta la finestra un monitor a destra"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Sposta la finestra un monitor in su" msgstr "Sposta la finestra un monitor in su"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Sposta la finestra un monitor in giù" msgstr "Sposta la finestra un monitor in giù"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Evidenzia le applicazioni" msgstr "Evidenzia le applicazioni"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Evidenzia l'applicazione precedente" msgstr "Evidenzia l'applicazione precedente"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Evidenzia direttamente le finestre" msgstr "Evidenzia direttamente le finestre"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Evidenzia la finestra precedente" msgstr "Evidenzia la finestra precedente"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Evidenzia le finestre di un'applicazione" msgstr "Evidenzia le finestre di un'applicazione"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Evidenzia la finestra precedente di un'applicazione" msgstr "Evidenzia la finestra precedente di un'applicazione"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Evidenzia i controlli di sistema" msgstr "Evidenzia i controlli di sistema"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Evidenzia i controlli di sistema precedenti" msgstr "Evidenzia i controlli di sistema precedenti"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Evidenzia direttamente le finestre" msgstr "Evidenzia direttamente le finestre"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Evidenzia direttamente la finestra precedente" msgstr "Evidenzia direttamente la finestra precedente"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Evidenzia direttamente le finestre di una applicazione" msgstr "Evidenzia direttamente le finestre di una applicazione"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Evidenzia direttamente la finestra precedente di un'applicazione" msgstr "Evidenzia direttamente la finestra precedente di un'applicazione"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Evidenzia direttamente i controlli di sistema" msgstr "Evidenzia direttamente i controlli di sistema"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Evidenzia direttamente i controlli di sistema precedenti" msgstr "Evidenzia direttamente i controlli di sistema precedenti"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Nasconde tutte le finestre normali" msgstr "Nasconde tutte le finestre normali"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Passa allo spazio di lavoro 1" msgstr "Passa allo spazio di lavoro 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Passa allo spazio di lavoro 2" msgstr "Passa allo spazio di lavoro 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Passa allo spazio di lavoro 3" msgstr "Passa allo spazio di lavoro 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Passa allo spazio di lavoro 4" msgstr "Passa allo spazio di lavoro 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Passa all'ultimo spazio di lavoro" msgstr "Passa all'ultimo spazio di lavoro"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Sposta su spazio di lavoro a sinistra"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Sposta su spazio di lavoro a destra"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Sposta su spazio di lavoro in alto" msgstr "Sposta su spazio di lavoro in alto"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Sposta su spazio di lavoro in basso" msgstr "Sposta su spazio di lavoro in basso"
@@ -216,58 +200,54 @@ msgid "Restore window"
msgstr "Ripristina la finestra" msgstr "Ripristina la finestra"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Attiva/Disattiva lo stato arrotolato"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Chiudi la finestra" msgstr "Chiudi la finestra"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Ridimensiona la finestra" msgstr "Ridimensiona la finestra"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Muovi la finestra" msgstr "Muovi la finestra"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Ridimensiona la finestra" msgstr "Ridimensiona la finestra"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "" msgstr ""
"Attiva/Disattiva la stato «su tutti gli spazi di lavoro» per la finestra" "Attiva/Disattiva la stato «su tutti gli spazi di lavoro» per la finestra"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Solleva la finestra se è coperta, in caso contrario l'abbassa" msgstr "Solleva la finestra se è coperta, in caso contrario l'abbassa"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Solleva la finestra sopra le altre" msgstr "Solleva la finestra sopra le altre"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Abbassa la finestra sotto le altre" msgstr "Abbassa la finestra sotto le altre"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Massimizza verticalmente la finestra" msgstr "Massimizza verticalmente la finestra"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Massimizza orizzontalmente la finestra" msgstr "Massimizza orizzontalmente la finestra"
# scorciatoia per mettere la finestra a mezzo schermo intero sulla sinistra # scorciatoia per mettere la finestra a mezzo schermo intero sulla sinistra
# #
# traduzione infedele, ma "frazionamento della vista a sn/ds" mi pare peggio # traduzione infedele, ma "frazionamento della vista a sn/ds" mi pare peggio
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Massimizza a sinistra" msgstr "Massimizza a sinistra"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Massimizza a destra" msgstr "Massimizza a destra"
@@ -514,10 +494,57 @@ msgstr "Passa al VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Riabilita scorciatoie" msgstr "Riabilita scorciatoie"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Consente la cattura con Xwayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Consente la cattura della tastiera da applicazioni X11 in esecuzione su "
"Xwayland. Affinché la cattura X11 venga considerata da Wayland, il client "
"deve inviare uno specifico messaggio ClientMessage X11 alla finestra "
"principale o essere nell'elenco di applicazioni autorizzate tramite la "
"chiave \"xwayland-grab-access-rules\"."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr ""
"Applicazioni Xwayland autorizzare a inizializzare catture della tastiera"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Lista di nomi o classi delle risorse di finestre X11 autorizzate o meno a "
"inizializzare la cattura della tastiera X11 su Xwayland. Per ottenere i nomi "
"o le classi delle risorse di una finestra X11 è possibile utilizzare il "
"comando \"xprop WM_CLASS\". Sono consentiti i caratteri \"*\" e \"?"
"\" (asterisco e punto di domanda) nei valori. Valori che iniziano con \"!\" "
"indicano una risorsa da escludere che ha priorità più alta rispetto alle "
"applicazioni autorizzate. La lista predefinita di sistema include le "
"seguenti applicazioni: \"@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@\" Gli utenti "
"possono interrompere una cattura esistente utilizzando la scorciatoia "
"definita nella chiave \"restore-shortcuts\"."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2167 #: src/backends/meta-input-settings.c:2260
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Cambio modalità (gruppo %d)" msgstr "Cambio modalità (gruppo %d)"
@@ -525,37 +552,37 @@ msgstr "Cambio modalità (gruppo %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2190 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Cambia monitor" msgstr "Cambia monitor"
#: src/backends/meta-input-settings.c:2192 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Mostra aiuto sullo schermo" msgstr "Mostra aiuto sullo schermo"
#: src/backends/meta-monitor-manager.c:908 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Display integrato" msgstr "Display integrato"
#: src/backends/meta-monitor-manager.c:931 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Sconosciuto" msgstr "Sconosciuto"
#: src/backends/meta-monitor-manager.c:933 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Display sconosciuto" msgstr "Display sconosciuto"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:941 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -572,42 +599,46 @@ msgstr "Evento campanella"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Apertura del display «%s» di X Window System non riuscita\n" msgstr "Apertura del display «%s» di X Window System non riuscita\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Disabilita la connessione al gestore di sessione" msgstr "Disabilita la connessione al gestore di sessione"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Sostituisce il window manager in esecuzione" msgstr "Sostituisce il window manager in esecuzione"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Specifica l'ID di gestione sessione" msgstr "Specifica l'ID di gestione sessione"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Display X da usare" msgstr "Display X da usare"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Inizializza la sessione da file salvato" msgstr "Inizializza la sessione da file salvato"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Rende le chiamate X sincrone" msgstr "Rende le chiamate X sincrone"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Esegui come compositor Wayland" msgstr "Esegui come compositor Wayland"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Esegui come compositor annidato" msgstr "Esegui come compositor annidato"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Esegui come display server invece che annidato" msgstr "Esegui come display server invece che annidato"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Esegui con sistema X11"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -686,7 +717,7 @@ msgstr ""
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Cambio modalità: modalità %d" msgstr "Cambio modalità: modalità %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -698,3 +729,18 @@ msgstr ""
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (su %s)" msgstr "%s (su %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Sposta la finestra sullo spazio di lavoro a sinistra"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Sposta la finestra sullo spazio di lavoro a destra"
#~ msgid "Move to workspace left"
#~ msgstr "Sposta su spazio di lavoro a sinistra"
#~ msgid "Move to workspace right"
#~ msgstr "Sposta su spazio di lavoro a destra"
#~ msgid "Toggle shaded state"
#~ msgstr "Attiva/Disattiva lo stato arrotolato"

226
po/ko.po
View File

@@ -7,6 +7,7 @@
# #
# Updated in mutter: # Updated in mutter:
# Changwoo Ryu <cwryu@debian.org>, 2011-2017. # Changwoo Ryu <cwryu@debian.org>, 2011-2017.
# Gwan-gyeong Mun <elongbug@gmail.com>, 2018.
# #
# #
# 주의: # 주의:
@@ -16,11 +17,10 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-06 04:14+0000\n"
"POT-Creation-Date: 2017-08-29 16:09+0000\n" "PO-Revision-Date: 2018-02-24 16:14+0900\n"
"PO-Revision-Date: 2017-09-02 12:57+0900\n" "Last-Translator: Gwan-gyeong Mun <elongbug@gmail.com>\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n" "Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
"Language: ko\n" "Language: ko\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -53,134 +53,118 @@ msgid "Move window to last workspace"
msgstr "창을 최근 작업 공간으로 옮기기" msgstr "창을 최근 작업 공간으로 옮기기"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "창을 한칸 왼쪽 작업 공간으로 옮기기"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "창을 한칸 오른쪽 작업 공간으로 옮기기"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "창을 한칸 위 작업 공간으로 옮기기" msgstr "창을 한칸 위 작업 공간으로 옮기기"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "창을 한칸 아래 작업 공간으로 옮기기" msgstr "창을 한칸 아래 작업 공간으로 옮기기"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "창을 한칸 왼쪽 모니터로 옮기기" msgstr "창을 한칸 왼쪽 모니터로 옮기기"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "창을 한칸 오른쪽 모니터로 옮기기" msgstr "창을 한칸 오른쪽 모니터로 옮기기"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "창을 한칸 위 모니터로 옮기기" msgstr "창을 한칸 위 모니터로 옮기기"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "창을 한칸 아래 모니터로 옮기기" msgstr "창을 한칸 아래 모니터로 옮기기"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr " 전환" msgstr "프로그램 전환"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "이전 으로 전환" msgstr "이전 프로그램으로 전환"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "창 전환" msgstr "창 전환"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "이전 창으로 전환" msgstr "이전 창으로 전환"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "한 의 창 전환" msgstr "한 프로그램의 창 전환"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "한 의 이전 창으로 전환" msgstr "한 프로그램의 이전 창으로 전환"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "시스템 조작 전환" msgstr "시스템 조작 전환"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "이전 시스템 조작으로 전환" msgstr "이전 시스템 조작으로 전환"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "직접 창 전환" msgstr "직접 창 전환"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "직접 이전 창으로 전환" msgstr "직접 이전 창으로 전환"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "직접 한 앱의 창 전환" msgstr "직접 한 앱의 창 전환"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "직접 한 앱의 이전 창으로 전환" msgstr "직접 한 앱의 이전 창으로 전환"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "직접 시스템 조작 전환" msgstr "직접 시스템 조작 전환"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "직접 이전 시스템 조작으로 전환" msgstr "직접 이전 시스템 조작으로 전환"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "모든 일반 창 감추기" msgstr "모든 일반 창 감추기"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "작업 공간 1로 이동" msgstr "작업 공간 1로 이동"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "작업 공간 2로 이동" msgstr "작업 공간 2로 이동"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "작업 공간 3으로 이동" msgstr "작업 공간 3으로 이동"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "작업 공간 4로 이동" msgstr "작업 공간 4로 이동"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "최근 작업 공간으로 이동" msgstr "최근 작업 공간으로 이동"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "왼쪽 작업 공간으로 옮기기"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "오른쪽 작업 공간으로 옮기기"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "위 작업 공간으로 옮기기" msgstr "위 작업 공간으로 옮기기"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "아래 작업 공간으로 옮기기" msgstr "아래 작업 공간으로 옮기기"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "시스템" msgstr "시스템"
@@ -192,6 +176,10 @@ msgstr "실행 명령 프롬프트 보이기"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "현재 활동 보이기" msgstr "현재 활동 보이기"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "키보드 바로 가기 복구"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "창" msgstr "창"
@@ -217,54 +205,50 @@ msgid "Restore window"
msgstr "창 복구" msgstr "창 복구"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "그림자 상태 토글"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "창 닫기" msgstr "창 닫기"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "창 감추기" msgstr "창 감추기"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "창 옮기기" msgstr "창 옮기기"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "창 크기 조정" msgstr "창 크기 조정"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "창을 모든/하나의 작업 공간에 두기 토글" msgstr "창을 모든/하나의 작업 공간에 두기 토글"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "창이 가려 있으면 올리고 아니면 내리기" msgstr "창이 가려 있으면 올리고 아니면 내리기"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "창을 다른 창 위로 올리기" msgstr "창을 다른 창 위로 올리기"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "창을 다른 창 아래로 내리기" msgstr "창을 다른 창 아래로 내리기"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "창을 세로 방향으로 최대화" msgstr "창을 세로 방향으로 최대화"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "창을 가로 방향으로 최대화" msgstr "창을 가로 방향으로 최대화"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "왼쪽 나눔창 보기" msgstr "왼쪽 나눔창 보기"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "오른쪽 나눔창 보기" msgstr "오른쪽 나눔창 보기"
@@ -493,10 +477,53 @@ msgstr "가상 터미널 12로 이동"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "바로 가기 다시 사용하기" msgstr "바로 가기 다시 사용하기"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "X웨일랜드에서 잡기 허용"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"X웨일랜드 환경에서 실행하는 X11 프로그램의 키보드 잡기 허용을 고려합니다. 웨"
"일랜드에서 X11 잡기를 고려하려면, 클라이언트는 특정 X11 클라이언트메시지를 루"
"트 창에 보내거나 \"xwayland-grab-access-rules\"의 허용 목록에 있는 프로그램 "
"중 하나여야 합니다."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "X웨일랜드 프로그램에서 키보드 잡기 허용"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"X웨일랜드에서 X11 키보드 잡기를 허용하거나 허용하지 않는 X11 창의 리소스 이"
"름 또는 리소스 클래스를 나열하세요. X11 창의 리소스 이름 또는 리소스 클래스"
"는 “xprop WM_CLASS\" 명령을 사용하여 얻을 수 있습니다. 와일드카드 \"*\"와 \"?"
"\"를 값에서 사용할 수 있습니다. \"!\"로 시작하는 값은 허용 목록보다 높은 우선"
"순위로 블랙리스트 처리되어, 프로그램이 기본 시스템 목록에서 빠지게 됩니다. 기"
"본 시스템 목록에 포함된 프로그램: “@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” 사용"
"자는 “restore-shortcuts” 키 바인딩에 정의된 특정 키보드 바로 가기를 사용하여 "
"기존 잡기를 중단할 수 있습니다."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2151 #: src/backends/meta-input-settings.c:2260
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "모드 전환 (그룹 %d)" msgstr "모드 전환 (그룹 %d)"
@@ -504,37 +531,37 @@ msgstr "모드 전환 (그룹 %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2174 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "모니터 전환" msgstr "모니터 전환"
#: src/backends/meta-input-settings.c:2176 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "화면 도움말 표시" msgstr "화면 도움말 표시"
#: src/backends/meta-monitor-manager.c:903 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "내장 디스플레이" msgstr "내장 디스플레이"
#: src/backends/meta-monitor-manager.c:926 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "알 수 없음" msgstr "알 수 없음"
#: src/backends/meta-monitor-manager.c:928 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "알 수 없는 디스플레이" msgstr "알 수 없는 디스플레이"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:936 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -551,41 +578,45 @@ msgstr "삑소리 이벤트"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "X 윈도 시스템 디스플레이 “%s”을(를) 여는데 실패하였습니다\n" msgstr "X 윈도 시스템 디스플레이 “%s”을(를) 여는데 실패하였습니다\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "세션 관리자와 연결 하지 않습니다" msgstr "세션 관리자와 연결 하지 않습니다"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "실행 중인 창 관리자를 바꿉니다" msgstr "실행 중인 창 관리자를 바꿉니다"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "세션 관리 ID를 지정합니다" msgstr "세션 관리 ID를 지정합니다"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "사용할 X 디스플레이" msgstr "사용할 X 디스플레이"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "저장 파일에서 세션을 초기화 합니다" msgstr "저장 파일에서 세션을 초기화 합니다"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "동기 X 호출을 합니다" msgstr "동기 X 호출을 합니다"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "웨일랜드 컴포지터로 실행합니다" msgstr "웨일랜드 컴포지터로 실행합니다"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "내장 컴포지터로 실행합니다" msgstr "중첩 컴포지터로 실행합니다"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "전체 디스플레이 서버로 실행, 내장 프로그램 아님" msgstr "전체 디스플레이 서버로 실행, 중첩 컴포지터가 아님"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "X11 백 엔드로 실행 합니다"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
@@ -639,7 +670,7 @@ msgstr "사용할 머터 플러그인"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "작업 공간 %d" msgstr "작업 공간 %d"
#: src/core/screen.c:580 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -648,7 +679,7 @@ msgstr ""
"디스플레이 “%s”에 이미 창 관리자가 있습니다. 현재 창 관리자를 바꾸려면 --" "디스플레이 “%s”에 이미 창 관리자가 있습니다. 현재 창 관리자를 바꾸려면 --"
"replace 옵션을 써보십시오." "replace 옵션을 써보십시오."
#: src/core/screen.c:665 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "디스플레이 “%2$s”의 화면 %1$d은(는) 잘못되었습니다\n" msgstr "디스플레이 “%2$s”의 화면 %1$d은(는) 잘못되었습니다\n"
@@ -662,7 +693,7 @@ msgstr "머터가 자세한 모드 지원 없이 컴파일 되었습니다\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "모드 전환: 모드 %d" msgstr "모드 전환: 모드 %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -675,3 +706,18 @@ msgstr ""
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (%s에서)" msgstr "%s (%s에서)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "창을 한칸 왼쪽 작업 공간으로 옮기기"
#~ msgid "Move window one workspace to the right"
#~ msgstr "창을 한칸 오른쪽 작업 공간으로 옮기기"
#~ msgid "Move to workspace left"
#~ msgstr "왼쪽 작업 공간으로 옮기기"
#~ msgid "Move to workspace right"
#~ msgstr "오른쪽 작업 공간으로 옮기기"
#~ msgid "Toggle shaded state"
#~ msgstr "그림자 상태 토글"

228
po/lt.po
View File

@@ -6,15 +6,14 @@
# Tomas Kuliavas <tokul@users.sourceforge.net>, 2003. # Tomas Kuliavas <tokul@users.sourceforge.net>, 2003.
# Žygimantas Beručka <zygis@gnome.org>, 2004-2007. # Žygimantas Beručka <zygis@gnome.org>, 2004-2007.
# Gintautas Miliauskas <gintautas@miliauskas.lt>, 2007-2009, 2010. # Gintautas Miliauskas <gintautas@miliauskas.lt>, 2007-2009, 2010.
# Aurimas Černius <aurisc4@gmail.com>, 2013, 2014, 2015, 2016, 2017. # Aurimas Černius <aurisc4@gmail.com>, 2013, 2014, 2015, 2016, 2017, 2018.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: lt\n" "Project-Id-Version: lt\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-03-01 18:57+0000\n"
"POT-Creation-Date: 2017-08-29 06:41+0000\n" "PO-Revision-Date: 2018-03-03 13:37+0200\n"
"PO-Revision-Date: 2017-08-29 15:57+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n" "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n" "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n" "Language: lt\n"
@@ -50,134 +49,118 @@ msgid "Move window to last workspace"
msgstr "Perkelti langą į pastarąją darbo sritį" msgstr "Perkelti langą į pastarąją darbo sritį"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Perkelti langą į kairiau esančią darbo sritį"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Perkelti langą į dešiniau esančią darbo sritį"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Perkelti langą į aukščiau esančią darbo sritį" msgstr "Perkelti langą į aukščiau esančią darbo sritį"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Perkelti langą į žemiau esančią darbo sritį" msgstr "Perkelti langą į žemiau esančią darbo sritį"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Perkelti langą į kairiau esantį monitorių" msgstr "Perkelti langą į kairiau esantį monitorių"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Perkelti langą į dešiniau esantį monitorių" msgstr "Perkelti langą į dešiniau esantį monitorių"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Perkelti langą į aukščiau esantį monitorių" msgstr "Perkelti langą į aukščiau esantį monitorių"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Perkelti langą į žemiau esantį monitorių" msgstr "Perkelti langą į žemiau esantį monitorių"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Pereiti tarp programų" msgstr "Pereiti tarp programų"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Pereiti į ankstesnę programą" msgstr "Pereiti į ankstesnę programą"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Pereiti tarp langų" msgstr "Pereiti tarp langų"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Pereiti į ankstesnį langą" msgstr "Pereiti į ankstesnį langą"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Pereiti tarp programos langų" msgstr "Pereiti tarp programos langų"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Pereiti į ankstesnį programos langą" msgstr "Pereiti į ankstesnį programos langą"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Pereiti tarp sistemos valdiklių" msgstr "Pereiti tarp sistemos valdiklių"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Pereiti prie ankstesnio sistemos valdiklio" msgstr "Pereiti prie ankstesnio sistemos valdiklio"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Tiesiogiai pereiti tarp langų" msgstr "Tiesiogiai pereiti tarp langų"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Tiesiogiai pereiti į ankstesnį langą" msgstr "Tiesiogiai pereiti į ankstesnį langą"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Tiesiogiai pereiti tarp programos langų" msgstr "Tiesiogiai pereiti tarp programos langų"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Tiesiogiai pereiti prie ankstesnio programos lango" msgstr "Tiesiogiai pereiti prie ankstesnio programos lango"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Tiesiogiai pereiti tarp sistemos valdiklių" msgstr "Tiesiogiai pereiti tarp sistemos valdiklių"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Tiesiogiai pereiti prie ankstesnio sistemos valdiklio" msgstr "Tiesiogiai pereiti prie ankstesnio sistemos valdiklio"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Paslėpti visus įprastinius langus" msgstr "Paslėpti visus įprastinius langus"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Persijungti į darbo sritį Nr.1" msgstr "Persijungti į darbo sritį Nr.1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Persijungti į darbo sritį Nr.2" msgstr "Persijungti į darbo sritį Nr.2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Persijungti į darbo sritį Nr.3" msgstr "Persijungti į darbo sritį Nr.3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Persijungti į darbo sritį Nr.4" msgstr "Persijungti į darbo sritį Nr.4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Persijungti į pastarąją darbo sritį" msgstr "Persijungti į pastarąją darbo sritį"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Perkelti į darbo sritį kairėje"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Perkelti į darbo sritį dešinėje"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Perkelti į darbo sritį viršuje" msgstr "Perkelti į darbo sritį viršuje"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Perkelti į darbo sritį apačioje" msgstr "Perkelti į darbo sritį apačioje"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
@@ -189,6 +172,10 @@ msgstr "Rodyti komandų paleidimo langelį"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Rodyti veiklų apžvalgą" msgstr "Rodyti veiklų apžvalgą"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Atkurti klaviatūros trumpinius"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Langai" msgstr "Langai"
@@ -214,55 +201,51 @@ msgid "Restore window"
msgstr "Atkurti lango dydį" msgstr "Atkurti lango dydį"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Perjungti lango sutraukimo būseną"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Užverti langą" msgstr "Užverti langą"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Slėpti langą" msgstr "Slėpti langą"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Perkelti langą" msgstr "Perkelti langą"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Keisti lango dydį" msgstr "Keisti lango dydį"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Perjungti lango buvimo visose darbo srityse būseną" msgstr "Perjungti lango buvimo visose darbo srityse būseną"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "" msgstr ""
"Iškelti langą, jei jis uždengtas kito lango, priešingu atveju jį nuleisti" "Iškelti langą, jei jis uždengtas kito lango, priešingu atveju jį nuleisti"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Iškelti langą virš kitų langų" msgstr "Iškelti langą virš kitų langų"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Nuleisti langą žemiau kitų langų" msgstr "Nuleisti langą žemiau kitų langų"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Išdidinti langą vertikaliai" msgstr "Išdidinti langą vertikaliai"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Išdidinti langą horizontaliai" msgstr "Išdidinti langą horizontaliai"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Rodyti skyrimą kairėje" msgstr "Rodyti skyrimą kairėje"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Rodyti skyrimą dešinėje" msgstr "Rodyti skyrimą dešinėje"
@@ -406,16 +389,6 @@ msgid "Enable experimental features"
msgstr "Įjungti eksperimentines savybes" msgstr "Įjungti eksperimentines savybes"
#: data/org.gnome.mutter.gschema.xml.in:108 #: data/org.gnome.mutter.gschema.xml.in:108
#| msgid ""
#| "To enable experimental features, add the feature keyword to the list. "
#| "Whether the feature requires restarting the compositor depends on the "
#| "given feature. Any experimental feature is not required to still be "
#| "available, or configurable. Dont expect adding anything in this setting "
#| "to be future proof. Currently possible keywords: • “scale-monitor-"
#| "framebuffer” — makes mutter default to layout logical monitors in a "
#| "logical pixel coordinate space, while scaling monitor framebuffers "
#| "instead of window content, to manage HiDPI monitors. Does not require a "
#| "restart."
msgid "" msgid ""
"To enable experimental features, add the feature keyword to the list. " "To enable experimental features, add the feature keyword to the list. "
"Whether the feature requires restarting the compositor depends on the given " "Whether the feature requires restarting the compositor depends on the given "
@@ -510,10 +483,56 @@ msgstr "Persijungti į VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Iš naujo įjungti trumpinius" msgstr "Iš naujo įjungti trumpinius"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Leisti pagriebimus su XWayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Leisti turėti omenyje X11 programų, veikiančių Xwayland, išduotus "
"klaviatūros pagriebimus. Tam, kad X11 pagriebimas būtų turimas omenyje "
"naudojant Wayland, klientas privalo arba siųsti tam tikrą X11 ClientMessage "
"į šakninį langą arba būti tarp programų, esančių rakto „xwayland-grab-access-"
"rules“ baltajame sąraše."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Xwayland programos, kurioms leidžiama išduoti klaviatūros pagriebimus"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Išvardyti X11 langų, kuriems naudojant Wayland leidžiama ar neleidžiama "
"išduoti X11 klaviatūros pagriebimus, išteklių pavadinimus ar išteklių "
"klases. Nurodyto lango ištekliaus pavadinimas ar ištekliaus klasė gali būti "
"gauta naudojant komandą „xprop WM_CLASS“. Reikšmėse yra palaikomi pakaitos "
"simboliai „*“ ir „?“. Reikšmės prasidedančios „!“ yra įtraukiamos į juodąjį "
"sąrašą (tam, kad būtų panaikintos iš numatytojo sistemos sąrašo) ir turi "
"pirmumo teisę baltojo sąrašo atžvilgiu. Į numatytąjį sistemos sąrašą įeina "
"šios programos: „@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@“. Naudotojai gali "
"panaikinti esamą pagriebimą, naudodami tam tikrą klaviatūros trumpinį, kuris "
"apibrėžtas rakto susiejimo raktu „restore-shortcuts“."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2151 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Veiksenos perjungimas (Grupė %d)" msgstr "Veiksenos perjungimas (Grupė %d)"
@@ -521,37 +540,37 @@ msgstr "Veiksenos perjungimas (Grupė %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2174 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Perjungti monitorių" msgstr "Perjungti monitorių"
#: src/backends/meta-input-settings.c:2176 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Rodyti pagalbą ekrane" msgstr "Rodyti pagalbą ekrane"
#: src/backends/meta-monitor-manager.c:903 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Integruotas vaizduoklis" msgstr "Integruotas vaizduoklis"
#: src/backends/meta-monitor-manager.c:926 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Nežinomas" msgstr "Nežinomas"
#: src/backends/meta-monitor-manager.c:928 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Nežinomas vaizduoklis" msgstr "Nežinomas vaizduoklis"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:936 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -566,42 +585,46 @@ msgstr "Skambučio įvykis"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Nepavyko atverti X Window sistemos vaizduoklio „%s“\n" msgstr "Nepavyko atverti X Window sistemos vaizduoklio „%s“\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Išjungti susijungimą su sesijos tvarkytuve" msgstr "Išjungti susijungimą su sesijos tvarkytuve"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Pakeisti veikiančią langų tvarkytuvę" msgstr "Pakeisti veikiančią langų tvarkytuvę"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Nurodyti sesijos tvarkymo ID" msgstr "Nurodyti sesijos tvarkymo ID"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Naudotinas X ekranas" msgstr "Naudotinas X ekranas"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Inicializuoti sesiją iš išsaugojimo failo" msgstr "Inicializuoti sesiją iš išsaugojimo failo"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Sinchronizuoti X iškvietimus" msgstr "Sinchronizuoti X iškvietimus"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Vykdyti kaip wayland kompozitorių" msgstr "Vykdyti kaip wayland kompozitorių"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Vykdyti kaip įdėtinį kompozitorių" msgstr "Vykdyti kaip įdėtinį kompozitorių"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Vykdyti kaip visą vaizduoklio serverį, o ne įdėtinį" msgstr "Vykdyti kaip visą vaizduoklio serverį, o ne įdėtinį"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Paleisti su X11 realizacija"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -655,7 +678,7 @@ msgstr "Naudojamas Mutter įskiepis"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Darbo sritis %d" msgstr "Darbo sritis %d"
#: src/core/screen.c:580 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -664,7 +687,7 @@ msgstr ""
"Vaizduoklis „%s“ jau turi langų tvarkytuvę; pabandykite pakeisti esamą langų " "Vaizduoklis „%s“ jau turi langų tvarkytuvę; pabandykite pakeisti esamą langų "
"tvarkytuvę, naudodami parametrą --replace." "tvarkytuvę, naudodami parametrą --replace."
#: src/core/screen.c:665 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Ekranas %d vaizduoklyje „%s“ yra netinkamas\n" msgstr "Ekranas %d vaizduoklyje „%s“ yra netinkamas\n"
@@ -673,12 +696,12 @@ msgstr "Ekranas %d vaizduoklyje „%s“ yra netinkamas\n"
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter buvo sukompiliuota be išsamaus veikimo veiksenos\n" msgstr "Mutter buvo sukompiliuota be išsamaus veikimo veiksenos\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Veiksenos perjungimas: veiksena %d" msgstr "Veiksenos perjungimas: veiksena %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -691,6 +714,21 @@ msgstr ""
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (kompiuteryje %s)" msgstr "%s (kompiuteryje %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Perkelti langą į kairiau esančią darbo sritį"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Perkelti langą į dešiniau esančią darbo sritį"
#~ msgid "Move to workspace left"
#~ msgstr "Perkelti į darbo sritį kairėje"
#~ msgid "Move to workspace right"
#~ msgstr "Perkelti į darbo sritį dešinėje"
#~ msgid "Toggle shaded state"
#~ msgstr "Perjungti lango sutraukimo būseną"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "Nepavyko nuskanuoti temų aplanko: %s\n" #~ msgstr "Nepavyko nuskanuoti temų aplanko: %s\n"

220
po/lv.po
View File

@@ -7,14 +7,13 @@
# Raivis Dejus <orvils@gmail.com>, 2006, 2007, 2009. # Raivis Dejus <orvils@gmail.com>, 2006, 2007, 2009.
# Rudolfs <rudolfs.mazurs@gmail.com>, 2011. # Rudolfs <rudolfs.mazurs@gmail.com>, 2011.
# Rūdofls Mazurs <rudolfs.mazurs@gmail.com>, 2011, 2012. # Rūdofls Mazurs <rudolfs.mazurs@gmail.com>, 2011, 2012.
# Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2012, 2013, 2014, 2015, 2016, 2017. # Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2012, 2013, 2014, 2015, 2016, 2017, 2018.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: lv\n" "Project-Id-Version: lv\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=mutter" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-06 04:14+0000\n"
"POT-Creation-Date: 2017-08-29 16:09+0000\n" "PO-Revision-Date: 2018-02-25 15:45+0200\n"
"PO-Revision-Date: 2017-09-03 19:25+0200\n"
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n" "Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n" "Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"Language: lv\n" "Language: lv\n"
@@ -50,134 +49,118 @@ msgid "Move window to last workspace"
msgstr "Pārvietot logu uz pēdējo darbvietu" msgstr "Pārvietot logu uz pēdējo darbvietu"
#: data/50-mutter-navigation.xml:24 #: 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:27
msgid "Move window one workspace to the right"
msgstr "Pārvietot logu uz darbvietu pa labi"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Pārvietot logu uz darbvietu augšup" msgstr "Pārvietot logu uz darbvietu augšup"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Pārvietot logu uz darbvietu lejup" msgstr "Pārvietot logu uz darbvietu lejup"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Pārvietot logu uz monitoru pa kreisi" msgstr "Pārvietot logu uz monitoru pa kreisi"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Pārvietot logu uz monitoru pa labi" msgstr "Pārvietot logu uz monitoru pa labi"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Pārvietot logu uz monitoru augšup" msgstr "Pārvietot logu uz monitoru augšup"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Pārvietot logu uz monitoru lejup" msgstr "Pārvietot logu uz monitoru lejup"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Pārslēgt lietotnes" msgstr "Pārslēgt lietotnes"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Pārslēgties uz iepriekšējo lietotni" msgstr "Pārslēgties uz iepriekšējo lietotni"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Pārslēgt logus" msgstr "Pārslēgt logus"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Pārslēgties uz iepriekšējo logu" msgstr "Pārslēgties uz iepriekšējo logu"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Pārslēgt vienas lietotnes logus" msgstr "Pārslēgt vienas lietotnes logus"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Pārslēgties uz lietotnes iepriekšējo logu" msgstr "Pārslēgties uz lietotnes iepriekšējo logu"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Pārslēgt sistēmas vadīklas" msgstr "Pārslēgt sistēmas vadīklas"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Pārslēgties uz iepriekšējo sistēmas vadīklu" msgstr "Pārslēgties uz iepriekšējo sistēmas vadīklu"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Pārslēgties starp logiem tieši" msgstr "Pārslēgties starp logiem tieši"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Pārslēgties tieši uz iepriekšējo logu" msgstr "Pārslēgties tieši uz iepriekšējo logu"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Pārslēgties starp lietotnes logiem tieši" msgstr "Pārslēgties starp lietotnes logiem tieši"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Pārslēgties tieši uz iepriekšējo lietotnes logu" msgstr "Pārslēgties tieši uz iepriekšējo lietotnes logu"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Pārslēgt sistēmas vadīklas tieši" msgstr "Pārslēgt sistēmas vadīklas tieši"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Pārslēgties tieši uz iepriekšējo sistēmas vadīklu" msgstr "Pārslēgties tieši uz iepriekšējo sistēmas vadīklu"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Slēpt visus parastos logus" msgstr "Slēpt visus parastos logus"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Pārslēgties uz 1. darbvietu" msgstr "Pārslēgties uz 1. darbvietu"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Pārslēgties uz 2. darbvietu" msgstr "Pārslēgties uz 2. darbvietu"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Pārslēgties uz 3. darbvietu" msgstr "Pārslēgties uz 3. darbvietu"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Pārslēgties uz 4. darbvietu" msgstr "Pārslēgties uz 4. darbvietu"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Pārslēgties uz pēdējo darbvietu" msgstr "Pārslēgties uz pēdējo darbvietu"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Pāriet uz darbvietu pa kreisi"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Pāriet uz darbvietu pa labi"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Pāriet uz darbvietu augšup" msgstr "Pāriet uz darbvietu augšup"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Pāriet uz darbvietu lejup" msgstr "Pāriet uz darbvietu lejup"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "Sistēma" msgstr "Sistēma"
@@ -189,6 +172,10 @@ msgstr "Rādīt palaišanas komandrindu"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Rādīt aktivitāšu pārskatu" msgstr "Rādīt aktivitāšu pārskatu"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Atjaunot tastatūras saīsnes"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Logi" msgstr "Logi"
@@ -214,54 +201,50 @@ msgid "Restore window"
msgstr "Atjaunot loga izmēru" msgstr "Atjaunot loga izmēru"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Pārslēgt ēnoto stāvokli"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Aizvērt logu" msgstr "Aizvērt logu"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Paslēpt logu" msgstr "Paslēpt logu"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Pārvietot logu" msgstr "Pārvietot logu"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Mainīt loga izmēru" msgstr "Mainīt loga izmēru"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Pārslēgt, vai logam jābūt visās darbvietās vai vienā" msgstr "Pārslēgt, vai logam jābūt visās darbvietās vai vienā"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Pacelt logu, ja to aizsedz, citādi pazemināt" msgstr "Pacelt logu, ja to aizsedz, citādi pazemināt"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Pacelt logu virs citiem logiem" msgstr "Pacelt logu virs citiem logiem"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Pazemināt logu zem citiem logiem" msgstr "Pazemināt logu zem citiem logiem"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Maksimizēt logu vertikāli" msgstr "Maksimizēt logu vertikāli"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Maksimizēt logu horizontāli" msgstr "Maksimizēt logu horizontāli"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Izvietot kreisajā ekrāna pusē" msgstr "Izvietot kreisajā ekrāna pusē"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Izvietot labajā ekrāna pusē" msgstr "Izvietot labajā ekrāna pusē"
@@ -405,16 +388,6 @@ msgid "Enable experimental features"
msgstr "Ieslēgt eksperimentālās iespējas" msgstr "Ieslēgt eksperimentālās iespējas"
#: data/org.gnome.mutter.gschema.xml.in:108 #: data/org.gnome.mutter.gschema.xml.in:108
#| msgid ""
#| "To enable experimental features, add the feature keyword to the list. "
#| "Whether the feature requires restarting the compositor depends on the "
#| "given feature. Any experimental feature is not required to still be "
#| "available, or configurable. Dont expect adding anything in this setting "
#| "to be future proof. Currently possible keywords: • “scale-monitor-"
#| "framebuffer” — makes mutter default to layout logical monitors in a "
#| "logical pixel coordinate space, while scaling monitor framebuffers "
#| "instead of window content, to manage HiDPI monitors. Does not require a "
#| "restart."
msgid "" msgid ""
"To enable experimental features, add the feature keyword to the list. " "To enable experimental features, add the feature keyword to the list. "
"Whether the feature requires restarting the compositor depends on the given " "Whether the feature requires restarting the compositor depends on the given "
@@ -435,11 +408,10 @@ msgstr ""
"nākotnē strādās. Pašlaik pieejamie atslēgvārdi: • “scale-monitor-" "nākotnē strādās. Pašlaik pieejamie atslēgvārdi: • “scale-monitor-"
"framebuffer” — liek mutter pēc noklusējuma izkārtot loģiskos monitorus " "framebuffer” — liek mutter pēc noklusējuma izkārtot loģiskos monitorus "
"loģisko pikseļu koordināšu telpā, kamēr mērogo monitora kadru buferus, nevis " "loģisko pikseļu koordināšu telpā, kamēr mērogo monitora kadru buferus, nevis "
"loga saturu, lai pārvaldītu HiDPI monitorus. Pārstartēšana nav nepieciešama." "loga saturu, lai pārvaldītu HiDPI monitorus. Pārstartēšana nav nepieciešama. "
" • “remote-desktop” — " "• “remote-desktop” — ieslēdz attālinātās darbvirsmas atbalstu. Lai "
"ieslēdz attālinātās darbvirsmas atbalstu. Lai atbalstītu attālināto" "atbalstītu attālināto darbvirsmu ar ekrāna koplietošanu, jābūt arī ieslēgtam "
" darbvirsmu ar ekrāna koplietošanu, jābūt arī ieslēgtam “screen-cast”. •" "“screen-cast”. • “screen-cast” — ieslēdz ekrānraides atbalstu."
" “screen-cast” — ieslēdz ekrānraides atbalstu."
#: data/org.gnome.mutter.gschema.xml.in:145 #: data/org.gnome.mutter.gschema.xml.in:145
msgid "Select window from tab popup" msgid "Select window from tab popup"
@@ -509,10 +481,55 @@ msgstr "Pārslēgties uz VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Atkal ieslēdz saīsnes" msgstr "Atkal ieslēdz saīsnes"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Atļaut Xwayland satvērienus"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Atļaut ņemt vērā tastatūras satveršanu, ko pieprasa X11 lietotnes, kas"
" darbojas Xwayland vidē. Lai ņemtu vērā X11 tvērienus Wayland vidē, klientam"
" arī jāsūta specifisks X11 ClientMessage uz root (saknes) logu, vai arī jābūt"
" lietotņu baltajā sarakstā atslēgā “xwayland-grab-access-rules”."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Xwayland lietotnes, kuras drīkst pieprasīt tastatūras satveršanu"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Saraksts ar resursu nosaukumiem vai resursu klasi X11 logiem, kuri vai nu"
" drīkst, vai nedrīkst pieprasīt X11 tastatūras satveršanu zem Xwayland."
" Resursa nosaukumu vai resursa klasi dotajam X11 logam var iegūt, izmantojot"
" komandu “xprop WM_CLASS”. Vērtībās ir atbalstītas aizstājējzīmes “*” un “?”."
" Vērtības, ka sākas ar “!”, ir melnajā sarakstā, kam ir prioritāte pār balto"
" sarakstu, kad atsauc lietotnes no noklusējuma sistēmas saraksta. Noklusējuma"
" sistēmas sarakstā iekļauj sekojošās lietotnes: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Lietotāji var pārtraukt esošo"
" tvērienu, izmantojot noteiktus tastatūras īsinājumtaustiņus, kas ir noteikti"
" “restore-shortcuts” atslēgā."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2151 #: src/backends/meta-input-settings.c:2260
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Režīma slēdzis (grupa %d)" msgstr "Režīma slēdzis (grupa %d)"
@@ -520,37 +537,37 @@ msgstr "Režīma slēdzis (grupa %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2174 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Pārslēgt monitoru" msgstr "Pārslēgt monitoru"
#: src/backends/meta-input-settings.c:2176 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Rādīt palīdzību uz ekrāna" msgstr "Rādīt palīdzību uz ekrāna"
#: src/backends/meta-monitor-manager.c:903 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Iebūvēts displejs" msgstr "Iebūvēts displejs"
#: src/backends/meta-monitor-manager.c:926 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Nezināms" msgstr "Nezināms"
#: src/backends/meta-monitor-manager.c:928 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Nezināms displejs" msgstr "Nezināms displejs"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:936 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -565,42 +582,46 @@ msgstr "Zvana notikums"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Neizdevās atvērt X logu sistēmas displeju “%s”\n" msgstr "Neizdevās atvērt X logu sistēmas displeju “%s”\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Deaktivēt savienojumu ar sesiju pārvaldnieku" msgstr "Deaktivēt savienojumu ar sesiju pārvaldnieku"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Aizvietot darbojošos logu pārvaldnieku" msgstr "Aizvietot darbojošos logu pārvaldnieku"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Norādiet sesiju pārvaldības ID" msgstr "Norādiet sesiju pārvaldības ID"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Lietojamais X displejs" msgstr "Lietojamais X displejs"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Inicializēt sesiju no saglabātās datnes" msgstr "Inicializēt sesiju no saglabātās datnes"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Padarīt X izsaukumus sinhronus" msgstr "Padarīt X izsaukumus sinhronus"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Palaist kā wayland kompozitoru" msgstr "Palaist kā wayland kompozitoru"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Palaist kā ligzdotu kompozitoru" msgstr "Palaist kā ligzdotu kompozitoru"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Palaist kā pilnu attēlošanas serveri, nevis iegultu" msgstr "Palaist kā pilnu attēlošanas serveri, nevis iegultu"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Palaist ar X11 aizmuguri"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -655,7 +676,7 @@ msgstr "Izmantojamais mutter spraudnis"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Darbvieta %d" msgstr "Darbvieta %d"
#: src/core/screen.c:580 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -664,7 +685,7 @@ msgstr ""
"Displejam “%s” jau ir logu pārvaldnieks; mēģiniet lietot --replace iespēju, " "Displejam “%s” jau ir logu pārvaldnieks; mēģiniet lietot --replace iespēju, "
"lai aizvietotu pašreizējo logu pārvaldnieku." "lai aizvietotu pašreizējo logu pārvaldnieku."
#: src/core/screen.c:665 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Ekrāna %d displejs “%s“ nav derīgs\n" msgstr "Ekrāna %d displejs “%s“ nav derīgs\n"
@@ -678,7 +699,7 @@ msgstr "Mutter tika kompilēts bez detalizētas izvades režīma atbalsta\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Režīma slēdzis: režīms %d" msgstr "Režīma slēdzis: režīms %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -690,4 +711,3 @@ msgstr ""
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (uz %s)" msgstr "%s (uz %s)"

516
po/nl.po
View File

@@ -5,13 +5,14 @@
# Michiel Sikkes <michiels@gnome.org>, 2005. # Michiel Sikkes <michiels@gnome.org>, 2005.
# Wouter Bolsterlee <wbolster@gnome.org>, 20062012. # Wouter Bolsterlee <wbolster@gnome.org>, 20062012.
# Hannie Dumoleyn <hannie@ubuntu-nl.org>, 2016. # Hannie Dumoleyn <hannie@ubuntu-nl.org>, 2016.
# Nathan Follens <nthn@unseen.is>, 2017.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2016-03-23 22:41+0100\n" "POT-Creation-Date: 2018-02-26 07:59+0000\n"
"PO-Revision-Date: 2016-10-17 18:24+0200\n" "PO-Revision-Date: 2018-02-26 22:05+0100\n"
"Last-Translator: Hannie Dumoleyn <hannie@ubuntu-nl.org>\n" "Last-Translator: Justin van Steijn <jvs@fsfe.org>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n" "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n" "Language: nl\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -19,273 +20,257 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
"X-Generator: Lokalize 1.5\n" "X-Generator: Poedit 1.8.11\n"
#: ../data/50-mutter-navigation.xml.in.h:1 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
msgstr "Navigatie" msgstr "Navigatie"
#: ../data/50-mutter-navigation.xml.in.h:2 #: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1" msgid "Move window to workspace 1"
msgstr "Venster verplaatsen naar werkblad 1" msgstr "Venster verplaatsen naar werkblad 1"
#: ../data/50-mutter-navigation.xml.in.h:3 #: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2" msgid "Move window to workspace 2"
msgstr "Venster verplaatsen naar werkblad 2" msgstr "Venster verplaatsen naar werkblad 2"
#: ../data/50-mutter-navigation.xml.in.h:4 #: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3" msgid "Move window to workspace 3"
msgstr "Venster verplaatsen naar werkblad 3" msgstr "Venster verplaatsen naar werkblad 3"
#: ../data/50-mutter-navigation.xml.in.h:5 #: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4" msgid "Move window to workspace 4"
msgstr "Venster verplaatsen naar werkblad 4" msgstr "Venster verplaatsen naar werkblad 4"
#: ../data/50-mutter-navigation.xml.in.h:6 #: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace" msgid "Move window to last workspace"
msgstr "Venster verplaatsen naar laatste werkblad" msgstr "Venster verplaatsen naar laatste werkblad"
#: ../data/50-mutter-navigation.xml.in.h:7 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Venster één werkblad naar links verplaatsen"
#: ../data/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace to the right"
msgstr "Venster één werkblad naar rechts verplaatsen"
#: ../data/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Venster één werkblad naar boven verplaatsen" msgstr "Venster één werkblad naar boven verplaatsen"
#: ../data/50-mutter-navigation.xml.in.h:10 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Venster één werkblad naar beneden verplaatsen" msgstr "Venster één werkblad naar beneden verplaatsen"
#: ../data/50-mutter-navigation.xml.in.h:11 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Venster één monitor naar links verplaatsen" msgstr "Venster één monitor naar links verplaatsen"
#: ../data/50-mutter-navigation.xml.in.h:12 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Venster één monitor naar rechts verplaatsen" msgstr "Venster één monitor naar rechts verplaatsen"
#: ../data/50-mutter-navigation.xml.in.h:13 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Venster één monitor naar boven verplaatsen" msgstr "Venster één monitor naar boven verplaatsen"
#: ../data/50-mutter-navigation.xml.in.h:14 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Venster één monitor naar beneden verplaatsen" msgstr "Venster één monitor naar beneden verplaatsen"
#: ../data/50-mutter-navigation.xml.in.h:15 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Tussen toepassingen schakelen" msgstr "Tussen toepassingen schakelen"
#: ../data/50-mutter-navigation.xml.in.h:16 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Schakelen naar vorige toepassing" msgstr "Schakelen naar vorige toepassing"
#: ../data/50-mutter-navigation.xml.in.h:17 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Tussen vensters schakelen" msgstr "Tussen vensters schakelen"
#: ../data/50-mutter-navigation.xml.in.h:18 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Schakelen naar vorig venster" msgstr "Schakelen naar vorig venster"
#: ../data/50-mutter-navigation.xml.in.h:19 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Wisselen van venster binnen een toepassing" msgstr "Wisselen van venster binnen een toepassing"
#: ../data/50-mutter-navigation.xml.in.h:20 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Wisselen naar vorig gebruikte venster van een toepassing" msgstr "Wisselen naar vorig gebruikte venster van een toepassing"
#: ../data/50-mutter-navigation.xml.in.h:21 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Systeemschermen wisselen" msgstr "Systeemschermen wisselen"
#: ../data/50-mutter-navigation.xml.in.h:22 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Schakelen naar vorige systeemregelaar" msgstr "Schakelen naar vorige systeemregelaar"
#: ../data/50-mutter-navigation.xml.in.h:23 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Direct tussen vensters schakelen" msgstr "Direct tussen vensters schakelen"
#: ../data/50-mutter-navigation.xml.in.h:24 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Schakel direct naar vorig venster" msgstr "Schakel direct naar vorig venster"
#: ../data/50-mutter-navigation.xml.in.h:25 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Direct wisselen van venster binnen een toepassing" msgstr "Direct wisselen van venster binnen een toepassing"
#: ../data/50-mutter-navigation.xml.in.h:26 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Direct wisselen naar vorig venster van een toepassing" msgstr "Direct wisselen naar vorig venster van een toepassing"
#: ../data/50-mutter-navigation.xml.in.h:27 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Direct tussen systeemschermen wisselen" msgstr "Direct tussen systeemschermen wisselen"
#: ../data/50-mutter-navigation.xml.in.h:28 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Direct schakelen naar vorige systeemregelaar" msgstr "Direct schakelen naar vorige systeemregelaar"
#: ../data/50-mutter-navigation.xml.in.h:29 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Alle normale vensters verbergen" msgstr "Alle normale vensters verbergen"
#: ../data/50-mutter-navigation.xml.in.h:30 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Schakelen naar werkblad 1" msgstr "Schakelen naar werkblad 1"
#: ../data/50-mutter-navigation.xml.in.h:31 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Schakelen naar werkblad 2" msgstr "Schakelen naar werkblad 2"
#: ../data/50-mutter-navigation.xml.in.h:32 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Schakelen naar werkblad 3" msgstr "Schakelen naar werkblad 3"
#: ../data/50-mutter-navigation.xml.in.h:33 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Schakelen naar werkblad 4" msgstr "Schakelen naar werkblad 4"
#: ../data/50-mutter-navigation.xml.in.h:34 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Overschakelen naar laatste werkblad" msgstr "Overschakelen naar laatste werkblad"
#: ../data/50-mutter-navigation.xml.in.h:35 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Verplaatsen naar werkblad links"
#: ../data/50-mutter-navigation.xml.in.h:36
msgid "Move to workspace right"
msgstr "Verplaatsen naar werkblad rechts"
#: ../data/50-mutter-navigation.xml.in.h:37
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Verplaatsen naar werkblad hierboven" msgstr "Verplaatsen naar werkblad hierboven"
#: ../data/50-mutter-navigation.xml.in.h:38 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Verplaatsen naar werkblad hieronder" msgstr "Verplaatsen naar werkblad hieronder"
#: ../data/50-mutter-system.xml.in.h:1 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "Systeem" msgstr "Systeem"
#: ../data/50-mutter-system.xml.in.h:2 #: data/50-mutter-system.xml:8
msgid "Show the run command prompt" msgid "Show the run command prompt"
msgstr "Het opdrachtregelvenster tonen" msgstr "Het opdrachtregelvenster tonen"
#: ../data/50-mutter-system.xml.in.h:3 #: data/50-mutter-system.xml:10
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Het activiteitenoverzicht tonen" msgstr "Het activiteitenoverzicht tonen"
#: ../data/50-mutter-windows.xml.in.h:1 #: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Sneltoetsen opnieuw instellen"
#: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Vensters" msgstr "Vensters"
#: ../data/50-mutter-windows.xml.in.h:2 #: data/50-mutter-windows.xml:8
msgid "Activate the window menu" msgid "Activate the window menu"
msgstr "Venstermenu activeren" msgstr "Venstermenu activeren"
#: ../data/50-mutter-windows.xml.in.h:3 #: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode" msgid "Toggle fullscreen mode"
msgstr "Volledig-schermmodus omschakelen" msgstr "Volledig-schermmodus omschakelen"
#: ../data/50-mutter-windows.xml.in.h:4 #: data/50-mutter-windows.xml:12
msgid "Toggle maximization state" msgid "Toggle maximization state"
msgstr "Maximalisatie in- of uitschakelen" msgstr "Maximalisatie in- of uitschakelen"
#: ../data/50-mutter-windows.xml.in.h:5 #: data/50-mutter-windows.xml:14
msgid "Maximize window" msgid "Maximize window"
msgstr "Venster maximaliseren" msgstr "Venster maximaliseren"
#: ../data/50-mutter-windows.xml.in.h:6 #: data/50-mutter-windows.xml:16
msgid "Restore window" msgid "Restore window"
msgstr "Venster herstellen" msgstr "Venster herstellen"
#: ../data/50-mutter-windows.xml.in.h:7 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Oprollen in- of uitschakelen"
#: ../data/50-mutter-windows.xml.in.h:8
msgid "Close window" msgid "Close window"
msgstr "Venster sluiten" msgstr "Venster sluiten"
#: ../data/50-mutter-windows.xml.in.h:9 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Venster verbergen" msgstr "Venster verbergen"
#: ../data/50-mutter-windows.xml.in.h:10 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Venster verplaatsen" msgstr "Venster verplaatsen"
#: ../data/50-mutter-windows.xml.in.h:11 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Vensterafmetingen veranderen" msgstr "Vensterafmetingen veranderen"
#: ../data/50-mutter-windows.xml.in.h:12 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Schakelen tussen venster op alle werkbladen zichtbaar of op één" msgstr "Schakelen tussen venster op alle werkbladen zichtbaar of op één"
#: ../data/50-mutter-windows.xml.in.h:13 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Vensters naar voren halen indien bedekt of anders naar achter brengen" msgstr "Vensters naar voren halen indien bedekt of anders naar achter brengen"
#: ../data/50-mutter-windows.xml.in.h:14 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Venster voor andere vensters halen" msgstr "Venster voor andere vensters halen"
#: ../data/50-mutter-windows.xml.in.h:15 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Venster achter andere vensters brengen" msgstr "Venster achter andere vensters brengen"
#: ../data/50-mutter-windows.xml.in.h:16 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Venster verticaal maximaliseren" msgstr "Venster verticaal maximaliseren"
#: ../data/50-mutter-windows.xml.in.h:17 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Venster horizontaal maximaliseren" msgstr "Venster horizontaal maximaliseren"
#: ../data/50-mutter-windows.xml.in.h:18 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Weergave gesplitst op links" msgstr "Weergave gesplitst op links"
#: ../data/50-mutter-windows.xml.in.h:19 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Weergave gesplitst op rechts" msgstr "Weergave gesplitst op rechts"
#: ../data/mutter.desktop.in.h:1 #: data/mutter.desktop.in:4
msgid "Mutter" msgid "Mutter"
msgstr "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" msgid "Modifier to use for extended window management operations"
msgstr "Controletoets voor uitgebreide vensterbeheerfunctionaliteit" msgstr "Controletoets voor uitgebreide vensterbeheerfunctionaliteit"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2 #: data/org.gnome.mutter.gschema.xml.in:8
msgid "" msgid ""
"This key will initiate the \"overlay\", which is a combination window " "This key will initiate the overlay, which is a combination window overview "
"overview and application launching system. The default is intended to be the " "and application launching system. The default is intended to be the “Windows "
"\"Windows key\" on PC hardware. It's expected that this binding either the " "key on PC hardware. Its expected that this binding either the default or "
"default or set to the empty string." "set to the empty string."
msgstr "" msgstr ""
"Deze sleutel activeert de overlay, een combinatie van een vensteroverzicht " "Deze sleutel activeert de overlay, een combinatie van een vensteroverzicht "
"en een systeem om toepassingen te starten. Standaard is dit de Windows-" "en een systeem om toepassingen te starten. Standaard is dit de Windows-"
"toets en de bedoeling is dat deze sneltoets ofwel de standaardwaarde bevat " "toets en de bedoeling is dat deze sneltoets ofwel de standaardwaarde bevat "
"ofwel leeggemaakt is." "ofwel leeggemaakt is."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3 #: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs" msgid "Attach modal dialogs"
msgstr "Blokkerende dialoogvensters vastmaken" msgstr "Blokkerende dialoogvensters vastmaken"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4 #: data/org.gnome.mutter.gschema.xml.in:21
msgid "" msgid ""
"When true, instead of having independent titlebars, modal dialogs appear " "When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with " "attached to the titlebar of the parent window and are moved together with "
@@ -295,28 +280,28 @@ msgstr ""
"maar vastgekoppeld aan het achterliggende venster en bewegen daardoor ook " "maar vastgekoppeld aan het achterliggende venster en bewegen daardoor ook "
"mee met het achterliggende venster." "mee met het achterliggende venster."
#: ../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" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Randtegels inschakelen bij het slepen van vensters naar schermranden" msgstr "Randtegels inschakelen bij het slepen van vensters naar schermranden"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6 #: data/org.gnome.mutter.gschema.xml.in:31
msgid "" msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them " "If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available " "vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely." "area. Dropping windows on the top screen edge maximizes them completely."
msgstr "" msgstr ""
"Indien ingeschakeld dan zal het laten vallen van vensters op verticale " "Indien ingeschakeld, zal het laten vallen van vensters op verticale "
"schermranden ze verticaal maximaliseren en horizontaal op halve " "schermranden ze verticaal maximaliseren en horizontaal op halve "
"schermgrootte brengen. Het laten vallen van vensters op de bovenrand van het " "schermgrootte brengen. Het laten vallen van vensters op de bovenrand van het "
"scherm maximaliseert ze helemaal. " "scherm maximaliseert ze helemaal."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7 #: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Werkbladen worden dynamisch beheerd" msgstr "Werkbladen worden dynamisch beheerd"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8 #: data/org.gnome.mutter.gschema.xml.in:41
msgid "" msgid ""
"Determines whether workspaces are managed dynamically or whether there's a " "Determines whether workspaces are managed dynamically or whether theres a "
"static number of workspaces (determined by the num-workspaces key in org." "static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)." "gnome.desktop.wm.preferences)."
msgstr "" msgstr ""
@@ -324,11 +309,11 @@ msgstr ""
"werkbladen is (gegeven door de sleutel num-workspaces in org.gnome.desktop." "werkbladen is (gegeven door de sleutel num-workspaces in org.gnome.desktop."
"wm.preferences)." "wm.preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9 #: data/org.gnome.mutter.gschema.xml.in:50
msgid "Workspaces only on primary" msgid "Workspaces only on primary"
msgstr "Werkbladen alleen voor primaire venster" msgstr "Werkbladen alleen voor primaire venster"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10 #: data/org.gnome.mutter.gschema.xml.in:51
msgid "" msgid ""
"Determines whether workspace switching should happen for windows on all " "Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor." "monitors or only for windows on the primary monitor."
@@ -336,11 +321,11 @@ msgstr ""
"Geeft aan of wisselen van werkblad voor vensters op alle schermen of alleen " "Geeft aan of wisselen van werkblad voor vensters op alle schermen of alleen "
"voor vensters op het hoofdscherm moet gebeuren." "voor vensters op het hoofdscherm moet gebeuren."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11 #: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup" msgid "No tab popup"
msgstr "Geen tab-pop-up" msgstr "Geen tab-pop-up"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12 #: data/org.gnome.mutter.gschema.xml.in:60
msgid "" msgid ""
"Determines whether the use of popup and highlight frame should be disabled " "Determines whether the use of popup and highlight frame should be disabled "
"for window cycling." "for window cycling."
@@ -348,38 +333,38 @@ msgstr ""
"Bepaalt of het gebruik van pop-up en markering van het kader uitgeschakeld " "Bepaalt of het gebruik van pop-up en markering van het kader uitgeschakeld "
"wordt voor het vensterbladeren." "wordt voor het vensterbladeren."
#: ../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" msgid "Delay focus changes until the pointer stops moving"
msgstr "Aandacht vertragen totdat de muispijl stopt met bewegen" msgstr "Aandacht vertragen totdat de muispijl stopt met bewegen"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14 #: data/org.gnome.mutter.gschema.xml.in:69
msgid "" msgid ""
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " "If set to true, and the focus mode is either sloppy or mouse then the "
"the focus will not be changed immediately when entering a window, but only " "focus will not be changed immediately when entering a window, but only after "
"after the pointer stops moving." "the pointer stops moving."
msgstr "" msgstr ""
"Indien op true ingesteld en de aandachtsmodus is ofwel sloppy of " "Indien op true ingesteld en de aandachtsmodus is ofwel sloppy of "
"mouse, dan zal de aandacht niet direct veranderd worden bij het binnengaan " "mouse, dan zal de aandacht niet direct veranderd worden bij het binnengaan "
"van een venster, maar slechts wanneer de muispijl stopt met bewegen." "van een venster, maar slechts wanneer de muispijl stopt met bewegen."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15 #: data/org.gnome.mutter.gschema.xml.in:79
msgid "Draggable border width" msgid "Draggable border width"
msgstr "Sleepbare randbreedte" msgstr "Sleepbare randbreedte"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16 #: data/org.gnome.mutter.gschema.xml.in:80
msgid "" msgid ""
"The amount of total draggable borders. If the theme's visible borders are " "The amount of total draggable borders. If the themes visible borders are "
"not enough, invisible borders will be added to meet this value." "not enough, invisible borders will be added to meet this value."
msgstr "" msgstr ""
"Het totaal aantal sleepbare randen. Als de zichtbare randen in het thema " "Het totaal aantal sleepbare randen. Als de zichtbare randen in het thema "
"onvoldoende zijn, worden onzichtbare randen toegevoegd om deze waarde te " "onvoldoende zijn, worden onzichtbare randen toegevoegd om deze waarde te "
"bereiken." "bereiken."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17 #: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows" msgid "Auto maximize nearly monitor sized windows"
msgstr "Vensters van bijna-monitorformaat auto-maximaliseren" msgstr "Vensters van bijna-monitorformaat auto-maximaliseren"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18 #: data/org.gnome.mutter.gschema.xml.in:90
msgid "" msgid ""
"If enabled, new windows that are initially the size of the monitor " "If enabled, new windows that are initially the size of the monitor "
"automatically get maximized." "automatically get maximized."
@@ -387,11 +372,11 @@ msgstr ""
"Indien ingeschakeld, worden vensters die initieel ongeveer even groot zijn " "Indien ingeschakeld, worden vensters die initieel ongeveer even groot zijn "
"als de monitor automatisch gemaximaliseerd." "als de monitor automatisch gemaximaliseerd."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19 #: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center" msgid "Place new windows in the center"
msgstr "Plaats nieuwe vensters in het midden" msgstr "Plaats nieuwe vensters in het midden"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20 #: data/org.gnome.mutter.gschema.xml.in:99
msgid "" msgid ""
"When true, the new windows will always be put in the center of the active " "When true, the new windows will always be put in the center of the active "
"screen of the monitor." "screen of the monitor."
@@ -399,107 +384,251 @@ msgstr ""
"Indien waar zullen nieuwe vensters steeds in het midden van het actieve " "Indien waar zullen nieuwe vensters steeds in het midden van het actieve "
"scherm van de monitor geplaatst worden." "scherm van de monitor geplaatst worden."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21 #: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Experimentele functies inschakelen"
#: data/org.gnome.mutter.gschema.xml.in:108
msgid ""
"To enable experimental features, add the feature keyword to the list. "
"Whether the feature requires restarting the compositor depends on the given "
"feature. Any experimental feature is not required to still be available, or "
"configurable. Dont expect adding anything in this setting to be future "
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
"mutter default to layout logical monitors in a logical pixel coordinate "
"space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
"enables remote desktop support. To support remote desktop with screen "
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
"screen cast support."
msgstr ""
"Voeg het sleutelwoord van een experimentele functie toe aan de lijst om deze "
"in te schakelen. Of de compositor herstart moet worden vooraleer de functie "
"gebruikt kan worden is afhankelijk van de functie. Experimentele functies "
"die u aan deze lijst toevoegt kunnen op een later moment weer verwijderd of "
"op een andere manier ingesteld worden, waardoor het mogelijk is dat ze dan "
"niet meer werken. Momenteel bruikbare sleutelwoorden: • scale-monitor-"
"framebuffer — zorgt dat mutter standaard logische beeldschermen indeelt in "
"een logische pixelcoördinaatruimte, en beeldschermframebuffers schaalt in "
"plaats van vensterinhoud, om HiDPI-beeldschermen te beheren. Hiervoor is "
"opnieuw opstarten niet vereist. • remote-desktop — schakelt ondersteuning "
"voor bureaubladen op afstand in. Om extern bureaublad met scherm delen in te "
"schakelen, moet screen-cast ook ingeschakeld zijn. • screen-cast — "
"schakelt ondersteuning voor casten van scherm in."
#: data/org.gnome.mutter.gschema.xml.in:145
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "Venster selecteren uit tab-pop-up" msgstr "Venster selecteren uit tab-pop-up"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22 #: data/org.gnome.mutter.gschema.xml.in:150
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "Tab-pop-up annuleren" msgstr "Tab-pop-up annuleren"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 #: data/org.gnome.mutter.gschema.xml.in:155
msgid "Switch monitor configurations"
msgstr "Tussen beeldschermconfiguraties schakelen"
#: data/org.gnome.mutter.gschema.xml.in:160
msgid "Rotates the built-in monitor configuration"
msgstr "Roteert de ingebouwde beeldschermconfiguratie"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1" msgid "Switch to VT 1"
msgstr "Schakelen naar VT 1" msgstr "Schakelen naar 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" msgid "Switch to VT 2"
msgstr "Schakelen naar VT 2" msgstr "Schakelen naar 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" msgid "Switch to VT 3"
msgstr "Schakelen naar VT 3" msgstr "Schakelen naar 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" msgid "Switch to VT 4"
msgstr "Schakelen naar VT 4" msgstr "Schakelen naar 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" msgid "Switch to VT 5"
msgstr "Schakelen naar VT 5" msgstr "Schakelen naar 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" msgid "Switch to VT 6"
msgstr "Schakelen naar VT 6" msgstr "Schakelen naar 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" msgid "Switch to VT 7"
msgstr "Schakelen naar VT 7" msgstr "Schakelen naar 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" msgid "Switch to VT 8"
msgstr "Schakelen naar VT 8" msgstr "Schakelen naar 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" msgid "Switch to VT 9"
msgstr "Schakelen naar VT 9" msgstr "Schakelen naar 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" msgid "Switch to VT 10"
msgstr "Schakelen naar VT 10" msgstr "Schakelen naar 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" msgid "Switch to VT 11"
msgstr "Schakelen naar VT 11" msgstr "Schakelen naar 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" msgid "Switch to VT 12"
msgstr "Schakelen naar VT 12" msgstr "Schakelen naar VT 12"
#: ../src/backends/meta-monitor-manager.c:518 #: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Sneltoetsen opnieuw inschakelen"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Grabs met Xwayland toestaan"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Toestaan dat rekening wordt gehouden met toetsenbord-grabs door X11-"
"toepassingen die in Xwayland draaien. Om rekening te houden met een X11-grab "
"onder Wayland, moet de client ook: óf een specifieke X11-ClientMessage naar "
"het root-venster sturen, óf vermeld staan in de witte lijst van toepassingen "
"in de sleutel xwayland-grab-access-rules."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Xwayland-toepassingen mogen toetsenbord-grabs doen"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2325
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Moduswisselaar (groep %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2348
msgid "Switch monitor"
msgstr "Van beeldscherm wisselen"
#: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help"
msgstr "Hulptekst op scherm tonen"
#: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Ingebouwd beeldscherm" msgstr "Ingebouwd beeldscherm"
#: ../src/backends/meta-monitor-manager.c:544 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Onbekend" msgstr "Onbekend"
#: ../src/backends/meta-monitor-manager.c:546 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Onbekend beeldscherm" msgstr "Onbekend beeldscherm"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: ../src/backends/meta-monitor-manager.c:554 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display \"%s" "Another compositing manager is already running on screen %i on display “%s”."
"\"."
msgstr "" msgstr ""
"Er is al een andere compositing manager actief op scherm %i van " "Er is al een andere compositing manager actief op scherm %i van "
"beeldscherm %s." "beeldscherm %s."
#: ../src/core/bell.c:194 #: src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "Bel-gebeurtenis" msgstr "Bel-gebeurtenis"
#: ../src/core/delete.c:127 #: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Openen van X Window System display %s mislukt\n"
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Schakel de verbinding met het sessiebeheer uit"
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "De huidige toepassing voor vensterbeheer vervangen"
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Specificeer de ID van het sessiebeheer"
#: src/core/main.c:207
msgid "X Display to use"
msgstr "De te gebruiken X-weergave"
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Initialiseer de sessie middels een opslagbestand"
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "X-aanroepen synchroon maken"
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Uitvoeren als een wayland compositor"
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Uitvoeren als een geneste compositor"
#: src/core/main.c:240
msgid "Run as a full display server, rather than nested"
msgstr "Uitvoeren als een volledige displayserver, in plaats van genest"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Uitvoeren met X11-backend"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "%s reageert niet." msgstr "%s reageert niet."
#: ../src/core/delete.c:129 #: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding." msgid "Application is not responding."
msgstr "De toepassing reageert niet." msgstr "De toepassing reageert niet."
#: ../src/core/delete.c:134 #: src/core/meta-close-dialog-default.c:154
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -507,60 +636,19 @@ msgstr ""
"U kunt ervoor kiezen even te wachten totdat het doorgaat of de toepassing " "U kunt ervoor kiezen even te wachten totdat het doorgaat of de toepassing "
"dwingen om helemaal af te sluiten." "dwingen om helemaal af te sluiten."
#: ../src/core/delete.c:141 #: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Wachten"
#: ../src/core/delete.c:141
msgid "_Force Quit" msgid "_Force Quit"
msgstr "Ge_forceerd afsluiten" msgstr "Ge_forceerd afsluiten"
#: ../src/core/display.c:555 #: src/core/meta-close-dialog-default.c:161
#, c-format msgid "_Wait"
msgid "Failed to open X Window System display '%s'\n" msgstr "_Wachten"
msgstr "Openen van X Window System display '%s' mislukt\n"
#: ../src/core/main.c:181 #: src/core/mutter.c:39
msgid "Disable connection to session manager"
msgstr "Schakel de verbinding met het sessiebeheer uit"
#: ../src/core/main.c:187
msgid "Replace the running window manager"
msgstr "De huidige toepassing voor vensterbeheer vervangen"
#: ../src/core/main.c:193
msgid "Specify session management ID"
msgstr "Specificeer de ID van het sessiebeheer"
#: ../src/core/main.c:198
msgid "X Display to use"
msgstr "De te gebruiken X-weergave"
#: ../src/core/main.c:204
msgid "Initialize session from savefile"
msgstr "Initialiseer de sessie middels een opslagbestand"
#: ../src/core/main.c:210
msgid "Make X calls synchronous"
msgstr "X-aanroepen synchroon maken"
#: ../src/core/main.c:217
msgid "Run as a wayland compositor"
msgstr "Uitvoeren als een wayland compositor"
#: ../src/core/main.c:223
msgid "Run as a nested compositor"
msgstr "Uitvoeren als een geneste compositor"
#: ../src/core/main.c:231
msgid "Run as a full display server, rather than nested"
msgstr "Uitvoeren als een volledige display server, in plaats van genest"
#: ../src/core/mutter.c:39
#, c-format #, c-format
msgid "" msgid ""
"mutter %s\n" "mutter %s\n"
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"This is free software; see the source for copying conditions.\n" "This is free software; see the source for copying conditions.\n"
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
"PARTICULAR PURPOSE.\n" "PARTICULAR PURPOSE.\n"
@@ -571,50 +659,70 @@ msgstr ""
"Er is GEEN garantie; zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID VOOR " "Er is GEEN garantie; zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID VOOR "
"EEN BEPAALD DOEL.\n" "EEN BEPAALD DOEL.\n"
#: ../src/core/mutter.c:53 #: src/core/mutter.c:53
msgid "Print version" msgid "Print version"
msgstr "Versie-informatie tonen" msgstr "Versie-informatie tonen"
#: ../src/core/mutter.c:59 #: src/core/mutter.c:59
msgid "Mutter plugin to use" msgid "Mutter plugin to use"
msgstr "Te gebruiken Mutter-plug-in" msgstr "Te gebruiken Mutter-plug-in"
#: ../src/core/prefs.c:1997 #: src/core/prefs.c:1997
#, c-format #, c-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Werkblad %d" msgstr "Werkblad %d"
#: ../src/core/screen.c:521 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display \"%s\" already has a window manager; try using the --replace option " "Display “%s” already has a window manager; try using the --replace option to "
"to replace the current window manager." "replace the current window manager."
msgstr "" msgstr ""
"Beeldscherm %s heeft al een window manager; probeer de optie: --replace te " "Beeldscherm %s heeft al een vensterbeheerder; probeer de optie: --replace "
"gebruiken om de huidige window manager te vervangen." "te gebruiken om de huidige vensterbeheerder te vervangen."
#: ../src/core/screen.c:603 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display %s is invalid\n"
msgstr "Scherm %d op beeldscherm '%s' is ongeldig\n" msgstr "Scherm %d op beeldscherm %s is ongeldig\n"
#: ../src/core/util.c:121 #: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter is gecompileerd zonder ondersteuning voor verbose-mode\n" msgstr "Mutter is gecompileerd zonder ondersteuning voor verbose-mode\n"
#: ../src/x11/session.c:1815 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Moduswisselaar: modus %d"
#: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support &quot;save current setup&quot; and will have to " "These windows do not support save current setup and will have to be "
"be restarted manually next time you log in." "restarted manually next time you log in."
msgstr "" msgstr ""
"Deze vensters ondersteunen het opslaan van de huidige instellingen niet en " "Deze vensters ondersteunen het opslaan van de huidige instellingen niet en "
"zullen bij een volgende sessie opnieuw moeten worden opgestart." "zullen bij een volgende sessie opnieuw moeten worden opgestart."
#: ../src/x11/window-props.c:549 #: src/x11/window-props.c:559
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (op %s)" msgstr "%s (op %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Venster één werkblad naar links verplaatsen"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Venster één werkblad naar rechts verplaatsen"
#~ msgid "Move to workspace left"
#~ msgstr "Verplaatsen naar werkblad links"
#~ msgid "Move to workspace right"
#~ msgstr "Verplaatsen naar werkblad rechts"
#~ msgid "Toggle shaded state"
#~ msgstr "Oprollen in- of uitschakelen"
#~ msgid "background texture could not be created from file" #~ msgid "background texture could not be created from file"
#~ msgstr "aanmaken achtergrondstructuur uit bestand mislukt" #~ msgstr "aanmaken achtergrondstructuur uit bestand mislukt"

554
po/ro.po
View File

@@ -4,14 +4,13 @@
# Mugurel Tudor <mugurelu@gnome.ro>, 2002-2004, 2005, 2006, 2007. # Mugurel Tudor <mugurelu@gnome.ro>, 2002-2004, 2005, 2006, 2007.
# Adi Roiban https://launchpad.net/~adiroiban, 2008, 2009 # Adi Roiban https://launchpad.net/~adiroiban, 2008, 2009
# Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2011. # Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2011.
# Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>, 2015. # Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>, 2015, 2018.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: metacity.HEAD.ro\n" "Project-Id-Version: metacity.HEAD.ro\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-04-26 07:32+0000\n"
"POT-Creation-Date: 2015-10-21 11:43+0000\n" "PO-Revision-Date: 2018-04-30 07:54+0200\n"
"PO-Revision-Date: 2015-10-22 19:10+0200\n"
"Last-Translator: Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>\n" "Last-Translator: Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>\n"
"Language-Team: Gnome Romanian Translation Team\n" "Language-Team: Gnome Romanian Translation Team\n"
"Language: ro\n" "Language: ro\n"
@@ -23,272 +22,256 @@ msgstr ""
"X-Generator: Virtaal 0.7.1\n" "X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: ../data/50-mutter-navigation.xml.in.h:1 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
msgstr "Navigare" msgstr "Navigare"
#: ../data/50-mutter-navigation.xml.in.h:2 #: data/50-mutter-navigation.xml:9
msgid "Move window to workspace 1" msgid "Move window to workspace 1"
msgstr "Mută fereastra pe spațiul de lucru 1" msgstr "Mută fereastra pe spațiul de lucru 1"
#: ../data/50-mutter-navigation.xml.in.h:3 #: data/50-mutter-navigation.xml:12
msgid "Move window to workspace 2" msgid "Move window to workspace 2"
msgstr "Mută fereastra pe spațiul de lucru 2" msgstr "Mută fereastra pe spațiul de lucru 2"
#: ../data/50-mutter-navigation.xml.in.h:4 #: data/50-mutter-navigation.xml:15
msgid "Move window to workspace 3" msgid "Move window to workspace 3"
msgstr "Mută fereastra pe spațiul de lucru 3" msgstr "Mută fereastra pe spațiul de lucru 3"
#: ../data/50-mutter-navigation.xml.in.h:5 #: data/50-mutter-navigation.xml:18
msgid "Move window to workspace 4" msgid "Move window to workspace 4"
msgstr "Mută fereastra pe spațiul de lucru 4" msgstr "Mută fereastra pe spațiul de lucru 4"
#: ../data/50-mutter-navigation.xml.in.h:6 #: data/50-mutter-navigation.xml:21
msgid "Move window to last workspace" msgid "Move window to last workspace"
msgstr "Mută fereastra pe spațiul de lucru anterior" msgstr "Mută fereastra pe spațiul de lucru anterior"
#: ../data/50-mutter-navigation.xml.in.h:7 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Mută fereastra pe spațiul de lucru de la stânga"
#: ../data/50-mutter-navigation.xml.in.h:8
msgid "Move window one workspace to the right"
msgstr "Mută fereastra pe spațiul de lucru de la dreapta"
#: ../data/50-mutter-navigation.xml.in.h:9
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Mută fereastra pe spațiul de lucru de mai sus" msgstr "Mută fereastra pe spațiul de lucru de mai sus"
#: ../data/50-mutter-navigation.xml.in.h:10 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Mută fereastra pe spațiul de lucru de mai jos" msgstr "Mută fereastra pe spațiul de lucru de mai jos"
#: ../data/50-mutter-navigation.xml.in.h:11 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Mută fereastra cu un monitor la stânga" msgstr "Mută fereastra cu un monitor la stânga"
#: ../data/50-mutter-navigation.xml.in.h:12 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Mută fereastra un monitor la dreapta" msgstr "Mută fereastra un monitor la dreapta"
#: ../data/50-mutter-navigation.xml.in.h:13 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Mută fereastra cu un monitor mai sus" msgstr "Mută fereastra cu un monitor mai sus"
#: ../data/50-mutter-navigation.xml.in.h:14 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Mută fereastra cu un monitor mai jos" msgstr "Mută fereastra cu un monitor mai jos"
#: ../data/50-mutter-navigation.xml.in.h:15 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Comută aplicațiile" msgstr "Comută aplicațiile"
#: ../data/50-mutter-navigation.xml.in.h:16 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Schimbă la aplicația anterioară" msgstr "Schimbă la aplicația anterioară"
#: ../data/50-mutter-navigation.xml.in.h:17 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Schimbă ferestre" msgstr "Schimbă ferestre"
#: ../data/50-mutter-navigation.xml.in.h:18 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Schimbă la fereastra anterioară" msgstr "Schimbă la fereastra anterioară"
#: ../data/50-mutter-navigation.xml.in.h:19 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Schimbă ferestrele unei aplicații" msgstr "Schimbă ferestrele unei aplicații"
#: ../data/50-mutter-navigation.xml.in.h:20 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Schimbă la fereastra anterioară a unei aplicații" msgstr "Schimbă la fereastra anterioară a unei aplicații"
#: ../data/50-mutter-navigation.xml.in.h:21 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Schimbă comenzile de sistem" msgstr "Schimbă comenzile de sistem"
#: ../data/50-mutter-navigation.xml.in.h:22 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Schimbă la comanda de control anterioară" msgstr "Schimbă la comanda de control anterioară"
#: ../data/50-mutter-navigation.xml.in.h:23 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Schimbă ferestrele în mod direct" msgstr "Schimbă ferestrele în mod direct"
#: ../data/50-mutter-navigation.xml.in.h:24 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Schimbă la fereastra anterioară în mod direct" msgstr "Schimbă la fereastra anterioară în mod direct"
#: ../data/50-mutter-navigation.xml.in.h:25 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Schimbă în mod direct ferestrele uneui aplicații " msgstr "Comută direct ferestrele unei aplicații"
#: ../data/50-mutter-navigation.xml.in.h:26 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Schimbă în mod direct la fereastra anterioară a unei aplicații" msgstr "Schimbă în mod direct la fereastra anterioară a unei aplicații"
#: ../data/50-mutter-navigation.xml.in.h:27 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Schimbă comenzile de sistem în mod direct" msgstr "Schimbă comenzile de sistem în mod direct"
#: ../data/50-mutter-navigation.xml.in.h:28 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Schimbă în mod direct la o comandă de sistem anterioară" msgstr "Schimbă în mod direct la o comandă de sistem anterioară"
#: ../data/50-mutter-navigation.xml.in.h:29 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Ascunde toate ferestrele normale " msgstr "Ascunde toate ferestrele normale"
#: ../data/50-mutter-navigation.xml.in.h:30 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Comută la spațiul de lucru 1" msgstr "Comută la spațiul de lucru 1"
#: ../data/50-mutter-navigation.xml.in.h:31 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Comută la spațiul de lucru 2" msgstr "Comută la spațiul de lucru 2"
#: ../data/50-mutter-navigation.xml.in.h:32 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Comută la spațiul de lucru 3" msgstr "Comută la spațiul de lucru 3"
#: ../data/50-mutter-navigation.xml.in.h:33 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Comută la spațiul de lucru 4" msgstr "Comută la spațiul de lucru 4"
#: ../data/50-mutter-navigation.xml.in.h:34 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Comută la ultimul spațiu de lucru " msgstr "Comută la ultimul spațiu de lucru"
#: ../data/50-mutter-navigation.xml.in.h:35 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Mută pe spațiul de lucru din stânga"
#: ../data/50-mutter-navigation.xml.in.h:36
msgid "Move to workspace right"
msgstr "Mută pe spațiul de lucru din dreapta"
#: ../data/50-mutter-navigation.xml.in.h:37
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Mută pe spațiul de lucru deasupra" msgstr "Mută pe spațiul de lucru deasupra"
#: ../data/50-mutter-navigation.xml.in.h:38 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Mută pe spațiul de lucru de jos" msgstr "Mută pe spațiul de lucru de jos"
#: ../data/50-mutter-system.xml.in.h:1 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "Sistem" msgstr "Sistem"
#: ../data/50-mutter-system.xml.in.h:2 #: data/50-mutter-system.xml:8
msgid "Show the run command prompt" msgid "Show the run command prompt"
msgstr "Arată prompterul de comandă al comenzii run (rulează)" msgstr "Arată prompterul de comandă al comenzii run (rulează)"
#: ../data/50-mutter-system.xml.in.h:3 #: data/50-mutter-system.xml:10
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Arată prezentarea generală a activităților" msgstr "Arată prezentarea generală a activităților"
#: ../data/50-mutter-windows.xml.in.h:1 #: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Restaurează scurtăturile de tastatură"
#: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Ferestre" msgstr "Ferestre"
#: ../data/50-mutter-windows.xml.in.h:2 #: data/50-mutter-windows.xml:8
msgid "Activate the window menu" msgid "Activate the window menu"
msgstr "Activează meniul ferestrei" msgstr "Activează meniul ferestrei"
#: ../data/50-mutter-windows.xml.in.h:3 #: data/50-mutter-windows.xml:10
msgid "Toggle fullscreen mode" msgid "Toggle fullscreen mode"
msgstr "Comută modul pe tot ecranul" msgstr "Comută modul pe tot ecranul"
#: ../data/50-mutter-windows.xml.in.h:4 #: data/50-mutter-windows.xml:12
msgid "Toggle maximization state" msgid "Toggle maximization state"
msgstr "Comută starea de maximizare" msgstr "Comută starea de maximizare"
#: ../data/50-mutter-windows.xml.in.h:5 #: data/50-mutter-windows.xml:14
msgid "Maximize window" msgid "Maximize window"
msgstr "Maximizează fereastra" msgstr "Maximizează fereastra"
#: ../data/50-mutter-windows.xml.in.h:6 #: data/50-mutter-windows.xml:16
msgid "Restore window" msgid "Restore window"
msgstr "Restabilește fereastra" msgstr "Restabilește fereastra"
#: ../data/50-mutter-windows.xml.in.h:7 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Comută starea de umbrire"
#: ../data/50-mutter-windows.xml.in.h:8
msgid "Close window" msgid "Close window"
msgstr "Închide fereastra" msgstr "Închide fereastra"
#: ../data/50-mutter-windows.xml.in.h:9 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Ascunde fereastra" msgstr "Ascunde fereastra"
#: ../data/50-mutter-windows.xml.in.h:10 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Mută fereastra" msgstr "Mută fereastra"
#: ../data/50-mutter-windows.xml.in.h:11 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Redimensionează fereastra" msgstr "Redimensionează fereastra"
#: ../data/50-mutter-windows.xml.in.h:12 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Comută fereastra pe toate spațiile de lucru sau doar pe unul" msgstr "Comută fereastra pe toate spațiile de lucru sau doar pe unul"
#: ../data/50-mutter-windows.xml.in.h:13 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Ridică fereastra dacă este acoperită, altfel, coboar-o" msgstr "Ridică fereastra dacă este acoperită, altfel, coboar-o"
#: ../data/50-mutter-windows.xml.in.h:14 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Ridică fereastra deasupra celorlalte ferestre" msgstr "Ridică fereastra deasupra celorlalte ferestre"
#: ../data/50-mutter-windows.xml.in.h:15 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Coboară fereastra sub alte ferestre" msgstr "Coboară fereastra sub alte ferestre"
#: ../data/50-mutter-windows.xml.in.h:16 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Maximizează fereastra pe verticală" msgstr "Maximizează fereastra pe verticală"
#: ../data/50-mutter-windows.xml.in.h:17 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Maximizează fereastra pe orizontală" msgstr "Maximizează fereastra pe orizontală"
#: ../data/50-mutter-windows.xml.in.h:18 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Împarte în stânga" msgstr "Împarte în stânga"
#: ../data/50-mutter-windows.xml.in.h:19 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Împarte în dreapta" msgstr "Împarte în dreapta"
#: ../data/mutter.desktop.in.h:1 #: data/mutter.desktop.in:4
msgid "Mutter" msgid "Mutter"
msgstr "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" msgid "Modifier to use for extended window management operations"
msgstr "" msgstr ""
"Modificatorul folosit pentru operațiile extinse de management al ferestrelor" "Modificatorul folosit pentru operațiile extinse de management al ferestrelor"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2 #: data/org.gnome.mutter.gschema.xml.in:8
msgid "" msgid ""
"This key will initiate the \"overlay\", which is a combination window " "This key will initiate the overlay, which is a combination window overview "
"overview and application launching system. The default is intended to be the " "and application launching system. The default is intended to be the “Windows "
"\"Windows key\" on PC hardware. It's expected that this binding either the " "key on PC hardware. Its expected that this binding either the default or "
"default or set to the empty string." "set to the empty string."
msgstr "" msgstr ""
"Această cheie va iniția „overlay”-ul, care este o combinație între o privire " "Această cheie va iniția „suprapunerea”, care este o combinație între o "
"de ansamblu a ferestrelor și un sistemul de lansare de aplicații. Implicit " "privire de ansamblu a ferestrelor și un sistem de lansare de aplicații. "
"este testa „Windows” pe hardware PC. Este de așteptat ca această cheie să " "Implicit este tasta „Windows” pe hardware PC. Este de așteptat ca această "
"fie sau implicit sau setat la șirul vid." "legătură să fie ori stabilită la implicit sau la șirul vid."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3 #: data/org.gnome.mutter.gschema.xml.in:20
msgid "Attach modal dialogs" msgid "Attach modal dialogs"
msgstr "Atașează dialogurile modale" msgstr "Atașează dialogurile modale"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4 #: data/org.gnome.mutter.gschema.xml.in:21
msgid "" msgid ""
"When true, instead of having independent titlebars, modal dialogs appear " "When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with " "attached to the titlebar of the parent window and are moved together with "
@@ -298,13 +281,12 @@ msgstr ""
"modale apar atașate la bara de titlu a ferestrei părinte și sunt mutate " "modale apar atașate la bara de titlu a ferestrei părinte și sunt mutate "
"împreună cu fereastra părinte." "împreună cu fereastra părinte."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5 #: data/org.gnome.mutter.gschema.xml.in:30
#, fuzzy
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Activează mozaicul lateral la plasarea ferestrelor pe marginile ecranului" "Activează mozaicul de margine la plasarea ferestrelor pe marginile ecranului"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6 #: data/org.gnome.mutter.gschema.xml.in:31
msgid "" msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them " "If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available " "vertically and resizes them horizontally to cover half of the available "
@@ -315,25 +297,25 @@ msgstr ""
"pentru a acoperi jumătate din suprafața disponibilă. Plasarea ferestrelor pe " "pentru a acoperi jumătate din suprafața disponibilă. Plasarea ferestrelor pe "
"marginea de sus a ecranului le maximizează complet." "marginea de sus a ecranului le maximizează complet."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7 #: data/org.gnome.mutter.gschema.xml.in:40
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
msgstr "Spațiile de lucru sunt gestionate în mod dinamic" msgstr "Spațiile de lucru sunt gestionate în mod dinamic"
#: ../data/org.gnome.mutter.gschema.xml.in.h:8 #: data/org.gnome.mutter.gschema.xml.in:41
msgid "" msgid ""
"Determines whether workspaces are managed dynamically or whether there's a " "Determines whether workspaces are managed dynamically or whether theres a "
"static number of workspaces (determined by the num-workspaces key in org." "static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)." "gnome.desktop.wm.preferences)."
msgstr "" msgstr ""
"Determină dacă spațiile de lucru sunt gestionate în mod dinamic sau dacă " "Determină dacă spațiile de lucru sunt administrate dinamic sau dacă există "
"există un număr static de spații de lucru (determinată de cheia num-" "un număr static de spații de lucru (determinat de cheia num-workspaces din "
"workspaces” din ”org.gnome.desktop.wm.preferences)" "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" msgid "Workspaces only on primary"
msgstr "Spații de lucru doar pe ecranul principal" msgstr "Spații de lucru doar pe ecranul principal"
#: ../data/org.gnome.mutter.gschema.xml.in.h:10 #: data/org.gnome.mutter.gschema.xml.in:51
msgid "" msgid ""
"Determines whether workspace switching should happen for windows on all " "Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor." "monitors or only for windows on the primary monitor."
@@ -342,11 +324,11 @@ msgstr ""
"ferestrele de pe toate monitoarele sau doar pentru ferestrele de pe " "ferestrele de pe toate monitoarele sau doar pentru ferestrele de pe "
"monitorul principal." "monitorul principal."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11 #: data/org.gnome.mutter.gschema.xml.in:59
msgid "No tab popup" msgid "No tab popup"
msgstr "Fără popup pentru tab" msgstr "Fără popup pentru tab"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12 #: data/org.gnome.mutter.gschema.xml.in:60
msgid "" msgid ""
"Determines whether the use of popup and highlight frame should be disabled " "Determines whether the use of popup and highlight frame should be disabled "
"for window cycling." "for window cycling."
@@ -354,42 +336,40 @@ msgstr ""
"Determină dacă utilizarea unui popup sau a unui cadrul evidențiat ar trebui " "Determină dacă utilizarea unui popup sau a unui cadrul evidențiat ar trebui "
"să fie dezactivată pentru rotirea ferestrelor." "să fie dezactivată pentru rotirea ferestrelor."
#: ../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" msgid "Delay focus changes until the pointer stops moving"
msgstr "" msgstr ""
"Întârzie schimbările de focalizare până când cursorul încetează să se miște" "Întârzie schimbările de focalizare până când cursorul încetează să se miște"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14 #: data/org.gnome.mutter.gschema.xml.in:69
msgid "" msgid ""
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " "If set to true, and the focus mode is either sloppy or mouse then the "
"the focus will not be changed immediately when entering a window, but only " "focus will not be changed immediately when entering a window, but only after "
"after the pointer stops moving." "the pointer stops moving."
msgstr "" msgstr ""
"Dacă este activat iar modul de focalizare este „alunecos” sau „maus”, " "Dacă este stabilit ca adevărat, iar modul de focalizare este ori „neglijent” "
"focalizarea nu va fi schimbată imediat după intrarea în câmpul unei " "ori „maus”, atunci focalizarea nu va fi schimbată imediat la intrarea într-o "
"ferestre, ci doar după ce pointerul încetează să se miște." "fereastră, ci doar după ce indicatorul nu se mai miș."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15 #: data/org.gnome.mutter.gschema.xml.in:79
#, fuzzy
msgid "Draggable border width" msgid "Draggable border width"
msgstr "Lățimea margini ce poate fi acționată" msgstr "Lățimea marginii ce poate fi plasată"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16 #: data/org.gnome.mutter.gschema.xml.in:80
#, fuzzy
msgid "" msgid ""
"The amount of total draggable borders. If the theme's visible borders are " "The amount of total draggable borders. If the themes visible borders are "
"not enough, invisible borders will be added to meet this value." "not enough, invisible borders will be added to meet this value."
msgstr "" msgstr ""
"Numărul marginilor ce pot fi acționate. Dacă marginile vizibile ale temei " "Numărul total de margini ce pot fi plasate. Dacă marginile vizibile ale "
"sunt insuficiente vor fi adăugate margini invizibile pentru a completa " "temei nu sunt suficiente, vor fi adăugate margini invizibile pentru a "
"aceast număr." "respecta această valoare."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17 #: data/org.gnome.mutter.gschema.xml.in:89
msgid "Auto maximize nearly monitor sized windows" msgid "Auto maximize nearly monitor sized windows"
msgstr "" msgstr ""
"Maximizează automat ferestrele de dimensiune apropiată de cea a monitorului" "Maximizează automat ferestrele de dimensiune apropiată de cea a monitorului"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18 #: data/org.gnome.mutter.gschema.xml.in:90
msgid "" msgid ""
"If enabled, new windows that are initially the size of the monitor " "If enabled, new windows that are initially the size of the monitor "
"automatically get maximized." "automatically get maximized."
@@ -397,11 +377,11 @@ msgstr ""
"Dacă este activată, ferestrele noi care sunt inițial de mărimea monitorului " "Dacă este activată, ferestrele noi care sunt inițial de mărimea monitorului "
"sunt maximizate în mod automat." "sunt maximizate în mod automat."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19 #: data/org.gnome.mutter.gschema.xml.in:98
msgid "Place new windows in the center" msgid "Place new windows in the center"
msgstr "Plasează ferestre noi în centru" msgstr "Plasează ferestre noi în centru"
#: ../data/org.gnome.mutter.gschema.xml.in.h:20 #: data/org.gnome.mutter.gschema.xml.in:99
msgid "" msgid ""
"When true, the new windows will always be put in the center of the active " "When true, the new windows will always be put in the center of the active "
"screen of the monitor." "screen of the monitor."
@@ -409,107 +389,262 @@ msgstr ""
"Când este adevărat, ferestrele noi vor fi plasate în centrul ecranului activ " "Când este adevărat, ferestrele noi vor fi plasate în centrul ecranului activ "
"al monitorului." "al monitorului."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21 #: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "Activează funcționalitățile experimentale"
#: data/org.gnome.mutter.gschema.xml.in:108
msgid ""
"To enable experimental features, add the feature keyword to the list. "
"Whether the feature requires restarting the compositor depends on the given "
"feature. Any experimental feature is not required to still be available, or "
"configurable. Dont expect adding anything in this setting to be future "
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
"mutter default to layout logical monitors in a logical pixel coordinate "
"space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
"enables remote desktop support. To support remote desktop with screen "
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
"screen cast support."
msgstr ""
"Pentru a activa funcționalitățile experimentale, adăugați cuvântul cheie al "
"funcționalității la listă. Dacă funcționalitatea necesită sau nu repornirea "
"compunătorului depinde de funcționalitatea dată. Nu este necesar ca "
"funcționalitatea experimentală să fie încă disponibilă, sau configurabilă. "
"Nu vă așteptați să adăugați ceva la această configurare care va rezista "
"timpului. Cuvintele cheie posibile în mod curent: • “scale-monitor-"
"framebuffer” — face ca mutter să treacă implicit la aranjarea monitoarelor "
"logice într-un spațiu logic de coordonate pixel, în timpul scalării de "
"framebuffer-uri de monitor în locul conținutului ferestrei, pentru a "
"gestiona monitoare HiDPI. Nu necesită o repornire. • “remote-desktop” — "
"activează suportul pentru desktop la distanță. Pentru a suporta desktop la "
"distanță cu partajarea ecranului, trebuie să fie activat și „screen-cast”. • "
"“screen-cast” — activează suportul pentru înregistrarea ecranului."
#: data/org.gnome.mutter.gschema.xml.in:145
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "Selectează fereastra din popup-ul tabului" msgstr "Selectează fereastra din popup-ul tabului"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22 #: data/org.gnome.mutter.gschema.xml.in:150
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "Elimină popup-ul pentru tab" msgstr "Elimină popup-ul pentru tab"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 #: data/org.gnome.mutter.gschema.xml.in:155
msgid "Switch monitor configurations"
msgstr "Comută configurațiile de monitor"
#: data/org.gnome.mutter.gschema.xml.in:160
msgid "Rotates the built-in monitor configuration"
msgstr "Rotește configurarea de monitor integrat"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1" msgid "Switch to VT 1"
msgstr "Comută la terminalul virtual 1" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 2"
msgstr "Comută la terminalul virtual 2" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 3"
msgstr "Comută la terminalul virtual 3" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 4"
msgstr "Comută la terminalul virtual 4" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 5"
msgstr "Comută la terminalul virtual 5" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 6"
msgstr "Comută la terminalul virtual 6" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 7"
msgstr "Comută la terminalul virtual 7" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 8"
msgstr "Comută la terminalul virtual 8" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 9"
msgstr "Comută la terminalul virtual 9" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 10"
msgstr "Comută la terminalul virtual 10" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 11"
msgstr "Comută la terminalul virtual 11" msgstr "Comută la terminalul virtual 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" msgid "Switch to VT 12"
msgstr "Comută la terminalul virtual 12" msgstr "Comută la terminalul virtual 12"
#: ../src/backends/meta-monitor-manager.c:500 #: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "Reactivează scurtăturile"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Permite capturi de tastatură cu Xwayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Permite capturile de tastatură emise de aplicațiile X11 care rulează în "
"Xwayland să fie luate în considerare. Pentru ca o captură X11 să fie luată "
"în considerare în Wayland, clientul trebuie ori să trimită un mesaj specific "
"ClientMessage X11 la fereastra root ori să se numere printre aplicațiile "
"permise în cheia „xwayland-grab-access-rules”."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Aplicațiile Xwayland sunt permise de a emite capturi de tastatură"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Listează numele resurselor sau clasa resurselor ale ferestrelor X11 permise "
"sau nepermise să emită capturi de tastatură X11 în Xwayland. Numele resursei "
"sau clasa resursei a unei ferestre X11 date pot fi obținute utilizând "
"comanda „xprop WM_CLASS*. Metacaracterele „*” și jokerii „?” în valori sunt "
"suportați. Valorile care încep cu „!” sunt adăugate în lista de interziceri, "
"care are prioritate peste lista de permisiuni, pentru a revoca aplicații din "
"lista de sistem implicită. Lista de sistem implicită include următoarele "
"aplicații: „@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Utilizatorii pot să "
"întrerupă o captură existentă prin utilizarea scurtăturii de tastatură "
"specifice definite de tasta de stabilire a combinațiilor de taste „restore-"
"shortcuts”."
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2325
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Comutator de mod (grupul %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2348
msgid "Switch monitor"
msgstr "Comută monitorul"
#: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help"
msgstr "Arată ajutorul virtual"
#: src/backends/meta-monitor-manager.c:903
msgid "Built-in display" msgid "Built-in display"
msgstr "Afișaj integrat" msgstr "Afișaj integrat"
#: ../src/backends/meta-monitor-manager.c:526 #: src/backends/meta-monitor-manager.c:926
msgid "Unknown" msgid "Unknown"
msgstr "Necunoscut" msgstr "Necunoscut"
#: ../src/backends/meta-monitor-manager.c:528 #: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Afișaj necunoscut" msgstr "Afișaj necunoscut"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: ../src/backends/meta-monitor-manager.c:536 #: src/backends/meta-monitor-manager.c:936
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: ../src/compositor/compositor.c:456 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display \"%s" "Another compositing manager is already running on screen %i on display “%s”."
"\"."
msgstr "" msgstr ""
"Un alt administrator de ferestre compozit rulează deja pe ecranul %i pe " "Un alt administrator de ferestre de compunere rulează deja pe ecranul %i pe "
"afișajul „%s”." "afișajul „%s”."
#: ../src/core/bell.c:185 #: src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "Eveniment sonor" msgstr "Eveniment sonor"
#: ../src/core/delete.c:127 #: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Nu s-a putut deschide afișajul sistemului de ferestre X „%s”\n"
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "Dezactivează conexiunea la administratorul de sesiune"
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "Înlocuiește administratorul de ferestre curent"
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "Specifică ID-ul administrării de sesiune"
#: src/core/main.c:207
msgid "X Display to use"
msgstr "Ecranul X ce va fi folosit"
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "Inițializează sesiunea din fișierul salvat"
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "Realizează apelurile X sincron"
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "Rulează ca un compunător wayland"
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "Rulează ca un compunător imbricat"
#: src/core/main.c:240
msgid "Run as a full display server, rather than nested"
msgstr "Rulează ca server de afișare și nu ca server imbricat"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Rulează cu backend X11"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "„%s” nu răspunde." msgstr "„%s” nu răspunde."
#: ../src/core/delete.c:129 #: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding." msgid "Application is not responding."
msgstr "Aplicația nu răspunde." msgstr "Aplicația nu răspunde."
#: ../src/core/delete.c:134 #: src/core/meta-close-dialog-default.c:154
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
@@ -517,112 +652,95 @@ msgstr ""
"Puteți alege între a aștepta pentru câteva secunde ca aplicația să continue " "Puteți alege între a aștepta pentru câteva secunde ca aplicația să continue "
"sau a forța terminarea aplicației." "sau a forța terminarea aplicației."
#: ../src/core/delete.c:141 #: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "_Așteaptă"
#: ../src/core/delete.c:141
msgid "_Force Quit" msgid "_Force Quit"
msgstr "_Forțează închiderea" msgstr "_Forțează închiderea"
#: ../src/core/display.c:563 #: src/core/meta-close-dialog-default.c:161
#, c-format msgid "_Wait"
msgid "Failed to open X Window System display '%s'\n" msgstr "_Așteaptă"
msgstr "Nu s-a putut deschide afișajul X Window System „%s”\n"
#: ../src/core/main.c:176 #: src/core/mutter.c:39
msgid "Disable connection to session manager"
msgstr "Dezactivează conexiunea la administratorul de sesiune"
#: ../src/core/main.c:182
msgid "Replace the running window manager"
msgstr "Înlocuiește administratorul de ferestre curent"
#: ../src/core/main.c:188
msgid "Specify session management ID"
msgstr "Specifică ID-ul administrării de sesiune"
#: ../src/core/main.c:193
msgid "X Display to use"
msgstr "Ecranul X ce va fi folosit"
#: ../src/core/main.c:199
msgid "Initialize session from savefile"
msgstr "Inițializează sesiunea din fișierul salvat"
#: ../src/core/main.c:205
msgid "Make X calls synchronous"
msgstr "Realizează apelurile X sincron"
#: ../src/core/main.c:212
msgid "Run as a wayland compositor"
msgstr "Rulează ca compozitor wayland"
#: ../src/core/main.c:220
msgid "Run as a full display server, rather than nested"
msgstr "Rulează ca server de afișare și nu ca server imbricat"
#: ../src/core/mutter.c:39
#, c-format #, c-format
msgid "" msgid ""
"mutter %s\n" "mutter %s\n"
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"This is free software; see the source for copying conditions.\n" "This is free software; see the source for copying conditions.\n"
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
"PARTICULAR PURPOSE.\n" "PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
"mutter %s\n" "mutter %s\n"
"Drepturi de autor (C) 2001--%d Havoc Pennington, Red Hat, Inc., și alții\n" "Drepturi de autor (C) 2001-%d Havoc Pennington, Red Hat, Inc., și alții\n"
"Acesta este software liber; consultați codul sursă pentru condițiile de " "Acesta este software liber; consultați codul sursă pentru condițiile de "
"copiere.\n" "copiere.\n"
"Nu există NICI O garanție; nici pentru COMERCIALIZARE sau UTILIZAREA ÎNTR-UN " "Nu există NICIO garanție; nici pentru COMERCIALIZARE sau UTILIZAREA ÎNTR-UN "
"SCOP ANUME.\n" "SCOP ANUME.\n"
#: ../src/core/mutter.c:53 #: src/core/mutter.c:53
msgid "Print version" msgid "Print version"
msgstr "Afișează versiunea" msgstr "Afișează versiunea"
#: ../src/core/mutter.c:59 #: src/core/mutter.c:59
msgid "Mutter plugin to use" msgid "Mutter plugin to use"
msgstr "Modul Mutter de utilizat" msgstr "Modul Mutter de utilizat"
#: ../src/core/prefs.c:2050 #: src/core/prefs.c:1997
#, c-format #, c-format
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Spațiu de lucru %d" msgstr "Spațiu de lucru %d"
#: ../src/core/screen.c:526 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display \"%s\" already has a window manager; try using the --replace option " "Display “%s” already has a window manager; try using the --replace option to "
"to replace the current window manager." "replace the current window manager."
msgstr "" msgstr ""
"Afișajul „%s” are deja un administrator de ferestre; încercați să folosiți " "Afișajul „%s” are deja un administrator de ferestre; încercați să utilizați "
"opțiunea --replace (înlocuiește) pentru a înlocui administratorul de " "opțiunea --replace (înlocuiește) pentru a înlocui administratorul de "
"ferestre actual." "ferestre curent."
#: ../src/core/screen.c:608 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display %s is invalid\n"
msgstr "Ecranul %d pe afișajul „%s” este invalid\n" msgstr "Ecranul %d de pe afișajul „%s” nu este valid\n"
#: ../src/core/util.c:118 #: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter a fost compilat fără suport pentru modul detaliat\n" msgstr "Mutter a fost compilat fără suport pentru modul detaliat\n"
#: ../src/x11/session.c:1815 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Comutator de mod: modul %d"
#: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support &quot;save current setup&quot; and will have to " "These windows do not support save current setup and will have to be "
"be restarted manually next time you log in." "restarted manually next time you log in."
msgstr "" msgstr ""
"Aceste ferestre nu suportă „salvează configurarea curentă” și vor trebui " "Aceste ferestre nu suportă „salvează configurarea curentă” și vor trebui "
"repornite manual următoarea dată când vă veți autentifica." "repornite manual următoarea dată când vă veți autentifica."
#: ../src/x11/window-props.c:549 #: src/x11/window-props.c:559
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (pe %s)" msgstr "%s (pe %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Mută fereastra pe spațiul de lucru de la stânga"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Mută fereastra pe spațiul de lucru de la dreapta"
#~ msgid "Move to workspace left"
#~ msgstr "Mută pe spațiul de lucru din stânga"
#~ msgid "Move to workspace right"
#~ msgstr "Mută pe spațiul de lucru din dreapta"
#~ msgid "Toggle shaded state"
#~ msgstr "Comută starea de umbrire"
#~ msgid "Switch to workspace on the left of the current workspace" #~ msgid "Switch to workspace on the left of the current workspace"
#~ msgstr "Schimbă cu spațiul de lucru din stânga celui actual" #~ msgstr "Schimbă cu spațiul de lucru din stânga celui actual"

224
po/sk.po
View File

@@ -12,10 +12,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-06 04:14+0000\n"
"POT-Creation-Date: 2017-08-21 04:46+0000\n" "PO-Revision-Date: 2018-03-17 21:52+0100\n"
"PO-Revision-Date: 2017-08-23 19:50+0200\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n" "Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n" "Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
"Language: sk\n" "Language: sk\n"
@@ -23,7 +22,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
"X-Generator: Poedit 2.0.3\n" "X-Generator: Poedit 2.0.6\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -56,167 +55,147 @@ msgstr "Presunúť okno na posledný pracovný priestor"
# description # description
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Presunúť okno o jeden pracovný priestor vľavo"
# description
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Presunúť okno o jeden pracovný priestor vpravo"
# description
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Presunúť okno o jeden pracovný priestor hore" msgstr "Presunúť okno o jeden pracovný priestor hore"
# description # description
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Presunúť okno o jeden pracovný priestor dolu" msgstr "Presunúť okno o jeden pracovný priestor dolu"
# description # description
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Presunúť okno o jeden monitor vľavo" msgstr "Presunúť okno o jeden monitor vľavo"
# description # description
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Presunúť okno o jeden monitor vpravo" msgstr "Presunúť okno o jeden monitor vpravo"
# description # description
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Presunúť okno o jeden monitor hore" msgstr "Presunúť okno o jeden monitor hore"
# description # description
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Presunúť okno o jeden monitor dolu" msgstr "Presunúť okno o jeden monitor dolu"
# description # description
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Prepnúť aplikácie" msgstr "Prepnúť aplikácie"
# description # description
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Prepnúť na predchádzajúcu aplikáciu" msgstr "Prepnúť na predchádzajúcu aplikáciu"
# description # description
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Prepnúť okná" msgstr "Prepnúť okná"
# description # description
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Prepnúť na predchádzajúce okno" msgstr "Prepnúť na predchádzajúce okno"
# description # description
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Prepnúť okná aplikácie" msgstr "Prepnúť okná aplikácie"
# description # description
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Prepnúť na predchádzajúce okno aplikácie" msgstr "Prepnúť na predchádzajúce okno aplikácie"
# PK: predpokladam ze to prepisane medzi tlacidlami # PK: predpokladam ze to prepisane medzi tlacidlami
# description # description
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Prepnúť medzi ovládacími prvkami systému" msgstr "Prepnúť medzi ovládacími prvkami systému"
# PK: predpokladam ze to prepisane medzi tlacidlami # PK: predpokladam ze to prepisane medzi tlacidlami
# description # description
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Prepnúť na predchádzajúci ovládací prvok systému" msgstr "Prepnúť na predchádzajúci ovládací prvok systému"
# description # description
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Prepnúť okná priamo" msgstr "Prepnúť okná priamo"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Priamo prepnúť na predchádzajúce okno" msgstr "Priamo prepnúť na predchádzajúce okno"
# description # description
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Prepnúť okná aplikácie priamo" msgstr "Prepnúť okná aplikácie priamo"
# description # description
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Priamo prepnúť na predchádzajúce okno aplikácie" msgstr "Priamo prepnúť na predchádzajúce okno aplikácie"
# description # description
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Prepnúť medzi ovládacími prvkami systému priamo" msgstr "Prepnúť medzi ovládacími prvkami systému priamo"
# PK: predpokladam ze to prepisane medzi tlacidlami # PK: predpokladam ze to prepisane medzi tlacidlami
# description # description
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Priamo prepnúť na predchádzajúci ovládací prvok systému" msgstr "Priamo prepnúť na predchádzajúci ovládací prvok systému"
# description # description
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Skryť všetky normálne okná" msgstr "Skryť všetky normálne okná"
# description # description
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Prepnúť na pracovný priestor č. 1" msgstr "Prepnúť na pracovný priestor č. 1"
# description # description
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Prepnúť na pracovný priestor č. 2" msgstr "Prepnúť na pracovný priestor č. 2"
# description # description
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Prepnúť na pracovný priestor č. 3" msgstr "Prepnúť na pracovný priestor č. 3"
# description # description
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Prepnúť na pracovný priestor č. 4" msgstr "Prepnúť na pracovný priestor č. 4"
# description # description
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Prepnúť na posledný pracovný priestor" msgstr "Prepnúť na posledný pracovný priestor"
# description # description
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Presunúť na pracovný priestor vľavo"
# description
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Presunúť na pracovný priestor vpravo"
# description
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Presunúť na pracovný priestor hore" msgstr "Presunúť na pracovný priestor hore"
# description # description
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Presunúť na pracovný priestor dole" msgstr "Presunúť na pracovný priestor dole"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "Systém" msgstr "Systém"
@@ -230,6 +209,10 @@ msgstr "Zobraziť riadok pre spustenie príkazu"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Zobraziť prehľad aktivít" msgstr "Zobraziť prehľad aktivít"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Obnoviť klávesové skratky"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Okná" msgstr "Okná"
@@ -261,66 +244,61 @@ msgstr "Obnoviť okno"
# description # description
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Prepnúť stav zatienenia"
# description
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Zatvoriť okno" msgstr "Zatvoriť okno"
# description # description
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Skryť okno" msgstr "Skryť okno"
# description # description
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Presunúť okno" msgstr "Presunúť okno"
# description # description
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Zmeniť veľkosť okna" msgstr "Zmeniť veľkosť okna"
# description # description
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Prepnúť okno na všetky pracovné priestory alebo len na jeden" msgstr "Prepnúť okno na všetky pracovné priestory alebo len na jeden"
# description # description
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Presunúť okno dopredu ak je zakryté, inak presunúť dozadu" msgstr "Presunúť okno dopredu ak je zakryté, inak presunúť dozadu"
# description # description
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Presunúť okno nad ostatné okná" msgstr "Presunúť okno nad ostatné okná"
# description # description
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Presunúť okno pod ostatné okná" msgstr "Presunúť okno pod ostatné okná"
# description # description
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Maximalizovať okno zvisle" msgstr "Maximalizovať okno zvisle"
# description # description
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Maximalizovať okno vodorovne" msgstr "Maximalizovať okno vodorovne"
# Description # Description
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Zobraziť rozdelenie naľavo" msgstr "Zobraziť rozdelenie naľavo"
# Description # Description
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Zobraziť rozdelenie napravo" msgstr "Zobraziť rozdelenie napravo"
@@ -490,26 +468,29 @@ msgid ""
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes " "proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
"mutter default to layout logical monitors in a logical pixel coordinate " "mutter default to layout logical monitors in a logical pixel coordinate "
"space, while scaling monitor framebuffers instead of window content, to " "space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart." "manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
"enables remote desktop support. To support remote desktop with screen "
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
"screen cast support."
msgstr "" msgstr ""
# summary # summary
#: data/org.gnome.mutter.gschema.xml.in:141 #: data/org.gnome.mutter.gschema.xml.in:145
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "Vybrať okno z rozbaľovacej ponuky tabulátora" msgstr "Vybrať okno z rozbaľovacej ponuky tabulátora"
# summary # summary
#: data/org.gnome.mutter.gschema.xml.in:146 #: data/org.gnome.mutter.gschema.xml.in:150
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "Zrušit rozbaľovaciu ponuku tabulátora" msgstr "Zrušit rozbaľovaciu ponuku tabulátora"
# PK: predpokladam ze to prepisane medzi tlacidlami # PK: predpokladam ze to prepisane medzi tlacidlami
# description # description
#: data/org.gnome.mutter.gschema.xml.in:151 #: data/org.gnome.mutter.gschema.xml.in:155
msgid "Switch monitor configurations" msgid "Switch monitor configurations"
msgstr "Prepnúť nastavenia monitorov" msgstr "Prepnúť nastavenia monitorov"
#: data/org.gnome.mutter.gschema.xml.in:156 #: data/org.gnome.mutter.gschema.xml.in:160
msgid "Rotates the built-in monitor configuration" msgid "Rotates the built-in monitor configuration"
msgstr "Otočí nastavenie vstavaného monitora" msgstr "Otočí nastavenie vstavaného monitora"
@@ -572,10 +553,41 @@ msgstr "Prepnúť na VT č. 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Znovu povoliť klávesové skratky" msgstr "Znovu povoliť klávesové skratky"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr ""
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2151 #: src/backends/meta-input-settings.c:2260
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Prepínač režimu (skupina č. %d)" msgstr "Prepínač režimu (skupina č. %d)"
@@ -585,37 +597,37 @@ msgstr "Prepínač režimu (skupina č. %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2174 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Prepnúť monitor" msgstr "Prepnúť monitor"
#: src/backends/meta-input-settings.c:2176 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Zobraziť pomocníka na obrazovke" msgstr "Zobraziť pomocníka na obrazovke"
#: src/backends/meta-monitor-manager.c:903 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Vstavaný displej" msgstr "Vstavaný displej"
#: src/backends/meta-monitor-manager.c:926 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Neznámy" msgstr "Neznámy"
#: src/backends/meta-monitor-manager.c:928 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Neznámy displej" msgstr "Neznámy displej"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:936 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -633,48 +645,52 @@ msgid "Failed to open X Window System display “%s”\n"
msgstr "Zlyhalo otvorenie displeja systému na správu okien X „%s“\n" msgstr "Zlyhalo otvorenie displeja systému na správu okien X „%s“\n"
# cmd desc # cmd desc
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Zakáže pripojenia k správcovi relácií" msgstr "Zakáže pripojenia k správcovi relácií"
# cmd desc # cmd desc
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Nahradí bežiaceho správcu okien" msgstr "Nahradí bežiaceho správcu okien"
# cmd desc # cmd desc
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Zadá identifikátor správy relácií" msgstr "Zadá identifikátor správy relácií"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "X displej, ktorý bude použitý" msgstr "X displej, ktorý bude použitý"
# cmd desc # cmd desc
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Inicializuje reláciu z uloženého súboru" msgstr "Inicializuje reláciu z uloženého súboru"
# cmd desc # cmd desc
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Použije synchrónne volania X" msgstr "Použije synchrónne volania X"
# cmd desc # cmd desc
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Spustí ako kompozitor protokolu wayland" msgstr "Spustí ako kompozitor protokolu wayland"
# cmd desc # cmd desc
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Spustí ako kompozitor s vnoreným režimom" msgstr "Spustí ako kompozitor s vnoreným režimom"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Spustí ako plnohodnotný zobrazovací server, namiesto vnoreného režimu" msgstr "Spustí ako plnohodnotný zobrazovací server, namiesto vnoreného režimu"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Spustí s obslužným programom X11"
# %s is a window title # %s is a window title
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
@@ -731,7 +747,7 @@ msgstr "Použije zásuvný modul Mutter"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Pracovný priestor č. %d" msgstr "Pracovný priestor č. %d"
#: src/core/screen.c:580 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -740,7 +756,7 @@ msgstr ""
"Displej „%s“ už má správcu okien. Skúste použiť prepínač --replace, aby sa " "Displej „%s“ už má správcu okien. Skúste použiť prepínač --replace, aby sa "
"aktuálny správca nahradil." "aktuálny správca nahradil."
#: src/core/screen.c:665 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Obrazovka č. %d na displeji „%s“ nie je platná\n" msgstr "Obrazovka č. %d na displeji „%s“ nie je platná\n"
@@ -754,7 +770,7 @@ msgstr "Mutter bol skompilovaný bez výpisu podrobností pri behu\n"
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Prepínač režimu: Režim č. %d" msgstr "Prepínač režimu: Režim č. %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -768,6 +784,26 @@ msgstr ""
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (na %s)" msgstr "%s (na %s)"
# description
#~ msgid "Move window one workspace to the left"
#~ msgstr "Presunúť okno o jeden pracovný priestor vľavo"
# description
#~ msgid "Move window one workspace to the right"
#~ msgstr "Presunúť okno o jeden pracovný priestor vpravo"
# description
#~ msgid "Move to workspace left"
#~ msgstr "Presunúť na pracovný priestor vľavo"
# description
#~ msgid "Move to workspace right"
#~ msgstr "Presunúť na pracovný priestor vpravo"
# description
#~ msgid "Toggle shaded state"
#~ msgstr "Prepnúť stav zatienenia"
#~ msgid "background texture could not be created from file" #~ msgid "background texture could not be created from file"
#~ msgstr "nepodarilo sa vytvoriť textúru pozadia zo súboru" #~ msgstr "nepodarilo sa vytvoriť textúru pozadia zo súboru"

218
po/sl.po
View File

@@ -4,15 +4,14 @@
# #
# Andraž Tori <andraz.tori1@guest.arnes.si>, 2000. # Andraž Tori <andraz.tori1@guest.arnes.si>, 2000.
# Matjaž Horvat <m@owca.info>, 2006. # Matjaž Horvat <m@owca.info>, 2006.
# Matej Urbančič <mateju@svn.gnome.org>, 20072017. # Matej Urbančič <mateju@svn.gnome.org>, 20072018.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-04-03 20:43+0000\n"
"POT-Creation-Date: 2017-09-08 11:30+0200\n" "PO-Revision-Date: 2018-04-09 20:28+0200\n"
"PO-Revision-Date: 2017-09-08 11:36+0200\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl_SI\n" "Language: sl_SI\n"
@@ -22,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n" "%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 2.0.1\n" "X-Generator: Poedit 2.0.6\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -49,134 +48,118 @@ msgid "Move window to last workspace"
msgstr "Premakni okno na zadnjo delovno površino" msgstr "Premakni okno na zadnjo delovno površino"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Premakni okno eno delovno površino levo"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Premakni okno eno delovno površino desno"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Premakni okno eno delovno površino navzgor" msgstr "Premakni okno eno delovno površino navzgor"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Prestavi okno eno delovno površino navzdol" msgstr "Prestavi okno eno delovno površino navzdol"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Premakni okno en zaslon levo" msgstr "Premakni okno en zaslon levo"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Premakni okno en zaslon desno" msgstr "Premakni okno en zaslon desno"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Premakni okno en zaslon navzgor" msgstr "Premakni okno en zaslon navzgor"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Prestavi okno en zaslon navzdol" msgstr "Prestavi okno en zaslon navzdol"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Preklopi programe" msgstr "Preklopi programe"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Preklopi na prejšnji program" msgstr "Preklopi na prejšnji program"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Preklopi okna" msgstr "Preklopi okna"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Preklopi na prejšnje okno" msgstr "Preklopi na prejšnje okno"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Preklopi okna programa" msgstr "Preklopi okna programa"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Preklopi na predhodno okno programa" msgstr "Preklopi na predhodno okno programa"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Preklopi tipkovne bližnjice" msgstr "Preklopi tipkovne bližnjice"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Preklopi na predhodno sistemsko okno" msgstr "Preklopi na predhodno sistemsko okno"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Preklopi okna neposredno" msgstr "Preklopi okna neposredno"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Preklopi na predhodno okno" msgstr "Preklopi na predhodno okno"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Preklopi okna programa neposredno" msgstr "Preklopi okna programa neposredno"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Preklopi na predhodno okno programa" msgstr "Preklopi na predhodno okno programa"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Preklopi tipkovne bližnjice neposredno" msgstr "Preklopi tipkovne bližnjice neposredno"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Preklopi na predhodno sistemsko okno" msgstr "Preklopi na predhodno sistemsko okno"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Skrij vsa običajna okna" msgstr "Skrij vsa običajna okna"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Preklopi na delovno površino 1" msgstr "Preklopi na delovno površino 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Preklopi na delovno površino 2" msgstr "Preklopi na delovno površino 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Preklopi na delovno površino 3" msgstr "Preklopi na delovno površino 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Preklopi na delovno površino 4" msgstr "Preklopi na delovno površino 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Preklopi na zadnjo delovno površino" msgstr "Preklopi na zadnjo delovno površino"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Premakni na levo delovno površino"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Premakni na desno delovno površino"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Premakni na zgornjo delovno površino" msgstr "Premakni na zgornjo delovno površino"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Premakni na spodnjo delovno površino" msgstr "Premakni na spodnjo delovno površino"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "Sistem" msgstr "Sistem"
@@ -188,6 +171,10 @@ msgstr "Pokaži možnost zagona ukazne vrstice"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Pokaži okno pregleda dejavnosti" msgstr "Pokaži okno pregleda dejavnosti"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Obnovi tipkovne bližnjice"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Okna" msgstr "Okna"
@@ -214,54 +201,50 @@ msgid "Restore window"
msgstr "Obnovi okno" msgstr "Obnovi okno"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Preklopi stanje senčenja"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Zapri okno" msgstr "Zapri okno"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Skrij okno" msgstr "Skrij okno"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Premakni okno" msgstr "Premakni okno"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Spremeni velikost okna" msgstr "Spremeni velikost okna"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Preklopi okno na vse delovne površine oziroma le na eno" msgstr "Preklopi okno na vse delovne površine oziroma le na eno"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Dvigni okno, če ga prekriva drugo okno, sicer ga spusti" msgstr "Dvigni okno, če ga prekriva drugo okno, sicer ga spusti"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Dvigni okno nad druga okna" msgstr "Dvigni okno nad druga okna"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Spusti okno pod druga" msgstr "Spusti okno pod druga"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Razpni okno navpično" msgstr "Razpni okno navpično"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Razpni okno vodoravno" msgstr "Razpni okno vodoravno"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Poglej razdelek na levi" msgstr "Poglej razdelek na levi"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Poglej razdelek na desni" msgstr "Poglej razdelek na desni"
@@ -496,10 +479,54 @@ msgstr "Preklopi na VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Ponovno omogoči tipkovne bližnjice" msgstr "Ponovno omogoči tipkovne bližnjice"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Dovoli zajemanje z XWayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Upošteva zajeme s tipkovnico, ki jih sprožijo programi X11, zagnani v okolju "
"Xwayland. Če naj se programski zajem upošteva, mora odjemalec ali poslati "
"specifično sporočilo X11 na korensko okno ali pa mora biti zaveden na "
"seznamu programov v ključu »xwayland-garb-access-rules«."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Program XWayland ima dovoljenje za zajemanje s tipkovnico"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Seznam imen ali razredov virov oken X11, ki lahko sprožijo zajeme v okolju "
"Xwayland. Ime oziroma razred vira podanega okna X11 je mogoče pridobiti z "
"ukazom »xprop WM_CLASS«. Uporaba pomožnih znakov » * « in » ? « je podprta. "
"Vrednosti, ki se začnejo z znakom » ! « so uvrščeni na črni seznam. Ta "
"seznam je obravnavan prednostno pred belim seznamom in prekliče zajeme na "
"seznamu sistema. Privzeti seznam vključuje ključ: "
"»@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@« Uporabniki lahko prekinejo obstoječi "
"zajem z uporabo posebne tipkovne bližnjice, določene s tipkovnim ključem "
"»restore-shortcuts«."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2151 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Preklop načina (skupina %d)" msgstr "Preklop načina (skupina %d)"
@@ -507,37 +534,37 @@ msgstr "Preklop načina (skupina %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2174 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Nadzornik preklopa" msgstr "Nadzornik preklopa"
#: src/backends/meta-input-settings.c:2176 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Pokaži zaslonsko pomoč" msgstr "Pokaži zaslonsko pomoč"
#: src/backends/meta-monitor-manager.c:903 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Vgrajen zaslon" msgstr "Vgrajen zaslon"
#: src/backends/meta-monitor-manager.c:926 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Neznano" msgstr "Neznano"
#: src/backends/meta-monitor-manager.c:928 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Neznan zaslon" msgstr "Neznan zaslon"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:936 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -553,42 +580,46 @@ msgstr "Dogodek zvonjenja"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Odpiranje zaslona »%s« okenskega sistema X je spodletelo\n" msgstr "Odpiranje zaslona »%s« okenskega sistema X je spodletelo\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Onemogoči povezavo z upravljalnikom sej" msgstr "Onemogoči povezavo z upravljalnikom sej"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Zamenjaj trenutni upravljalnik oken" msgstr "Zamenjaj trenutni upravljalnik oken"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Navedite ID upravljanja seje" msgstr "Navedite ID upravljanja seje"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Zaslon X za uporabo" msgstr "Zaslon X za uporabo"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Začni sejo iz shranjene datoteke" msgstr "Začni sejo iz shranjene datoteke"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Uskladi klice X" msgstr "Uskladi klice X"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Zaženi izbirnik wayland" msgstr "Zaženi izbirnik wayland"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Zaženi kot gnezden vpisovalnik" msgstr "Zaženi kot gnezden vpisovalnik"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Zaženi kot polni strežnik zaslona in ne vstavljeno" msgstr "Zaženi kot polni strežnik zaslona in ne vstavljeno"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Zaženi z zaledjem X11"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -643,7 +674,7 @@ msgstr "Vstavek Mutter za uporabo"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "Delovna površina %d" msgstr "Delovna površina %d"
#: src/core/screen.c:580 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -652,7 +683,7 @@ msgstr ""
"Zaslon »%s« že ima določen upravljalnik oken; poskušajte uporabiti možnost --" "Zaslon »%s« že ima določen upravljalnik oken; poskušajte uporabiti možnost --"
"replace za zamenjavo trenutnega upravljalnika zaslona." "replace za zamenjavo trenutnega upravljalnika zaslona."
#: src/core/screen.c:665 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Zaslon %d na prikazu »%s« ni veljaven\n" msgstr "Zaslon %d na prikazu »%s« ni veljaven\n"
@@ -662,13 +693,13 @@ msgid "Mutter was compiled without support for verbose mode\n"
msgstr "" msgstr ""
"Program Mutter je kodno preveden brez podpore za podrobni način izpisovanja\n" "Program Mutter je kodno preveden brez podpore za podrobni način izpisovanja\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Način preklopa: način %d" msgstr "Način preklopa: način %d"
# G:2 K:6 O:0 # G:2 K:6 O:0
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -681,6 +712,21 @@ msgstr ""
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (na %s)" msgstr "%s (na %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Premakni okno eno delovno površino levo"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Premakni okno eno delovno površino desno"
#~ msgid "Move to workspace left"
#~ msgstr "Premakni na levo delovno površino"
#~ msgid "Move to workspace right"
#~ msgstr "Premakni na desno delovno površino"
#~ msgid "Toggle shaded state"
#~ msgstr "Preklopi stanje senčenja"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "Ni mogoče preiskati mape tem: %s\n" #~ msgstr "Ni mogoče preiskati mape tem: %s\n"

215
po/sr.po
View File

@@ -9,10 +9,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-06 04:14+0000\n"
"POT-Creation-Date: 2017-08-29 16:09+0000\n" "PO-Revision-Date: 2018-02-21 21:58+0100\n"
"PO-Revision-Date: 2017-08-29 20:46+0200\n"
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n" "Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
"Language-Team: српски <gnome-sr@googlegroups.org>\n" "Language-Team: српски <gnome-sr@googlegroups.org>\n"
"Language: sr\n" "Language: sr\n"
@@ -22,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
"X-Generator: Poedit 2.0.3\n" "X-Generator: Poedit 2.0.6\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -49,134 +48,118 @@ msgid "Move window to last workspace"
msgstr "Премешта прозор на последњи радни простор" msgstr "Премешта прозор на последњи радни простор"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Премешта прозор један радни простор на лево"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Премешта прозор један радни простор на десно"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Премешта прозор један радни простор на горе" msgstr "Премешта прозор један радни простор на горе"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Премешта прозор један радни простор на доле" msgstr "Премешта прозор један радни простор на доле"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Премешта прозор један монитор на лево" msgstr "Премешта прозор један монитор на лево"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Премешта прозор један монитор на десно" msgstr "Премешта прозор један монитор на десно"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Премешта прозор један монитор на горе" msgstr "Премешта прозор један монитор на горе"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Премешта прозор један монитор на доле" msgstr "Премешта прозор један монитор на доле"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Пребацује програме" msgstr "Пребацује програме"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Пребацује на претходни програм" msgstr "Пребацује на претходни програм"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Пребацује прозоре" msgstr "Пребацује прозоре"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Пребацује на претходни прозор" msgstr "Пребацује на претходни прозор"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Пребацује прозоре програма" msgstr "Пребацује прозоре програма"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Пребацује на претходни прозор програма" msgstr "Пребацује на претходни прозор програма"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Пребацује контроле система" msgstr "Пребацује контроле система"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Пребацује на претходну контролу система" msgstr "Пребацује на претходну контролу система"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Пребацује прозоре директно" msgstr "Пребацује прозоре директно"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Пребацује непосредно на претходни прозор" msgstr "Пребацује непосредно на претходни прозор"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Пребацује прозоре програма директно" msgstr "Пребацује прозоре програма директно"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Пребацује непосредно на претходни прозор програма" msgstr "Пребацује непосредно на претходни прозор програма"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Пребацује контроле система директно" msgstr "Пребацује контроле система директно"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Пребацује непосредно на претходну контролу система" msgstr "Пребацује непосредно на претходну контролу система"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Скрива све обичне прозоре" msgstr "Скрива све обичне прозоре"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Пребацује се на радни простор 1" msgstr "Пребацује се на радни простор 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Пребацује се на радни простор 2" msgstr "Пребацује се на радни простор 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Пребацује се на радни простор 3" msgstr "Пребацује се на радни простор 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Пребацује се на радни простор 4" msgstr "Пребацује се на радни простор 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Пребацује се на последњи радни простор" msgstr "Пребацује се на последњи радни простор"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Премешта на радни простор лево"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Премешта на радни простор десно"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Премешта на радни простор изнад" msgstr "Премешта на радни простор изнад"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Премешта на радни простор испод" msgstr "Премешта на радни простор испод"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "Систем" msgstr "Систем"
@@ -188,6 +171,10 @@ msgstr "Приказује упит за извршавање наредбе"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Приказује преглед активности" msgstr "Приказује преглед активности"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Поврати пречице на тастатури"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Прозори" msgstr "Прозори"
@@ -213,54 +200,50 @@ msgid "Restore window"
msgstr "Враћа величину прозора" msgstr "Враћа величину прозора"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Искључује или укључује стање засенчености"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Затвара прозор" msgstr "Затвара прозор"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Скрива прозор" msgstr "Скрива прозор"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Премешта прозор" msgstr "Премешта прозор"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Мења величину прозора" msgstr "Мења величину прозора"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Приказује прозор на свим радним просторима или само на једном" msgstr "Приказује прозор на свим радним просторима или само на једном"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Издиже прозор уколико га други прозор заклања, у противном га спушта" msgstr "Издиже прозор уколико га други прозор заклања, у противном га спушта"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Издиже прозор изнад осталих прозора" msgstr "Издиже прозор изнад осталих прозора"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Спушта прозор испод осталих прозора" msgstr "Спушта прозор испод осталих прозора"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Увећава прозор вертикално" msgstr "Увећава прозор вертикално"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Увећава прозор хоризонтално" msgstr "Увећава прозор хоризонтално"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Прикажите поделу на лево" msgstr "Прикажите поделу на лево"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Прикажите поделу на десно" msgstr "Прикажите поделу на десно"
@@ -500,10 +483,55 @@ msgstr "Прелазак на ВТ 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Поново укључивање пречица" msgstr "Поново укључивање пречица"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Дозволи грабљење на Икс-вејленду"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Дозволи да се узму у обзир грабљења од стране Икс11 програма унутар Икс-"
"вејленда. Да би се Икс11 грабљење узело у обзир под Вејлендом, клијент мора "
"такође послати специфичну Икс11 клијентску поруку ка кореном прозору или "
"мора бити на белом списку програма у кључу „xwayland-grab-access-rules“."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Икс-вејленд програми којима је дозвољено да раде грабљења на тастатури"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Списак назива ресурса или класи ресурса Икс11 прозора којима је дозвољено "
"или забрањено да раде грабљења на тастатури под Икс-вејлендом. Назив ресурса "
"или класа ресурса датог Икс11 прозора се може наћи преко наредбе \"xprop "
"WM_CLASS\". Џокер знакови „*“ и „?“ унутар вредности су подржани. Вредности "
"које почињу са „!“ се стављају на црни списак, који има предност у односу на "
"бели списак, за опозив програма за подразумеваног системског списка. "
"Подразумевани системски списак садржи следеће програме: "
"\"@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@\" Корисници могу сломити постојеће "
"грабљење тако што ће употребити посебну пречицу на тастатури која је "
"наведена у кључу за везивање тастера са називом \"restore-shortcuts\"."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2151 #: src/backends/meta-input-settings.c:2260
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Режим прекидача (група %d)" msgstr "Режим прекидача (група %d)"
@@ -511,37 +539,37 @@ msgstr "Режим прекидача (група %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2174 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Промени монитор" msgstr "Промени монитор"
#: src/backends/meta-input-settings.c:2176 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Прикажи помоћ на екрану" msgstr "Прикажи помоћ на екрану"
#: src/backends/meta-monitor-manager.c:903 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Уграђени дисплеј" msgstr "Уграђени дисплеј"
#: src/backends/meta-monitor-manager.c:926 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Непознато" msgstr "Непознато"
#: src/backends/meta-monitor-manager.c:928 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Непознат дисплеј" msgstr "Непознат дисплеј"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:936 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -557,42 +585,46 @@ msgstr "Звонца"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n" msgstr "Нисам успео да отворим екран „%s“ Икс система прозора\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Искључује везу са управником сесије" msgstr "Искључује везу са управником сесије"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Мења текућег управника прозорима" msgstr "Мења текућег управника прозорима"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Наводи ИБ управника сесије" msgstr "Наводи ИБ управника сесије"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Икс екран који ће бити коришћен" msgstr "Икс екран који ће бити коришћен"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Покреће сесију из датотеке чувања" msgstr "Покреће сесију из датотеке чувања"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Чини Икс позиве усклађеним" msgstr "Чини Икс позиве усклађеним"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Ради као вајландов саставник" msgstr "Ради као вајландов саставник"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Ради као угнеждени саставник" msgstr "Ради као угнеждени саставник"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Ради као пуни сервер приказа, уместо као угнеждени" msgstr "Ради као пуни сервер приказа, уместо као угнеждени"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Покрени на Икс11 позадинцу"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -647,7 +679,7 @@ msgstr "Прикључци Матера за коришћење"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "%d. радни простор" msgstr "%d. радни простор"
#: src/core/screen.c:580 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -656,7 +688,7 @@ msgstr ""
"Приказ „%s“ већ има управника прозора; пробајте да користите опцију „--" "Приказ „%s“ већ има управника прозора; пробајте да користите опцију „--"
"replace“ да замените тренутног управника прозора." "replace“ да замените тренутног управника прозора."
#: src/core/screen.c:665 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Приказ „%d“ на екрану „%s“ није исправан\n" msgstr "Приказ „%d“ на екрану „%s“ није исправан\n"
@@ -670,7 +702,7 @@ msgstr "Матер је преведен без подршке за опшира
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Режим прекидача: Режим %d" msgstr "Режим прекидача: Режим %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -683,6 +715,21 @@ msgstr ""
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (на %s)" msgstr "%s (на %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Премешта прозор један радни простор на лево"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Премешта прозор један радни простор на десно"
#~ msgid "Move to workspace left"
#~ msgstr "Премешта на радни простор лево"
#~ msgid "Move to workspace right"
#~ msgstr "Премешта на радни простор десно"
#~ msgid "Toggle shaded state"
#~ msgstr "Искључује или укључује стање засенчености"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "Нисам успео да прочитам директоријум тема: %s\n" #~ msgstr "Нисам успео да прочитам директоријум тема: %s\n"

View File

@@ -9,10 +9,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-21 15:53+0000\n"
"POT-Creation-Date: 2017-08-29 16:15+0000\n" "PO-Revision-Date: 2018-02-21 21:58+0100\n"
"PO-Revision-Date: 2017-08-29 20:46+0200\n"
"Last-Translator: Marko M. Kostić <marko.m.kostic@gmail.com>\n" "Last-Translator: Marko M. Kostić <marko.m.kostic@gmail.com>\n"
"Language-Team: srpski <gnome-sr@googlegroups.org>\n" "Language-Team: srpski <gnome-sr@googlegroups.org>\n"
"Language: sr\n" "Language: sr\n"
@@ -22,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
"X-Generator: Poedit 2.0.3\n" "X-Generator: Poedit 2.0.6\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -49,134 +48,118 @@ msgid "Move window to last workspace"
msgstr "Premešta prozor na poslednji radni prostor" msgstr "Premešta prozor na poslednji radni prostor"
#: data/50-mutter-navigation.xml:24 #: 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:27
msgid "Move window one workspace to the right"
msgstr "Premešta prozor jedan radni prostor na desno"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Premešta prozor jedan radni prostor na gore" msgstr "Premešta prozor jedan radni prostor na gore"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Premešta prozor jedan radni prostor na dole" msgstr "Premešta prozor jedan radni prostor na dole"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Premešta prozor jedan monitor na levo" msgstr "Premešta prozor jedan monitor na levo"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Premešta prozor jedan monitor na desno" msgstr "Premešta prozor jedan monitor na desno"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Premešta prozor jedan monitor na gore" msgstr "Premešta prozor jedan monitor na gore"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Premešta prozor jedan monitor na dole" msgstr "Premešta prozor jedan monitor na dole"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Prebacuje programe" msgstr "Prebacuje programe"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Prebacuje na prethodni program" msgstr "Prebacuje na prethodni program"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Prebacuje prozore" msgstr "Prebacuje prozore"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Prebacuje na prethodni prozor" msgstr "Prebacuje na prethodni prozor"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Prebacuje prozore programa" msgstr "Prebacuje prozore programa"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Prebacuje na prethodni prozor programa" msgstr "Prebacuje na prethodni prozor programa"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Prebacuje kontrole sistema" msgstr "Prebacuje kontrole sistema"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Prebacuje na prethodnu kontrolu sistema" msgstr "Prebacuje na prethodnu kontrolu sistema"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Prebacuje prozore direktno" msgstr "Prebacuje prozore direktno"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Prebacuje neposredno na prethodni prozor" msgstr "Prebacuje neposredno na prethodni prozor"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Prebacuje prozore programa direktno" msgstr "Prebacuje prozore programa direktno"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Prebacuje neposredno na prethodni prozor programa" msgstr "Prebacuje neposredno na prethodni prozor programa"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Prebacuje kontrole sistema direktno" msgstr "Prebacuje kontrole sistema direktno"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Prebacuje neposredno na prethodnu kontrolu sistema" msgstr "Prebacuje neposredno na prethodnu kontrolu sistema"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Skriva sve obične prozore" msgstr "Skriva sve obične prozore"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Prebacuje se na radni prostor 1" msgstr "Prebacuje se na radni prostor 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Prebacuje se na radni prostor 2" msgstr "Prebacuje se na radni prostor 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Prebacuje se na radni prostor 3" msgstr "Prebacuje se na radni prostor 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Prebacuje se na radni prostor 4" msgstr "Prebacuje se na radni prostor 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Prebacuje se na poslednji radni prostor" msgstr "Prebacuje se na poslednji radni prostor"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Premešta na radni prostor levo"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Premešta na radni prostor desno"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Premešta na radni prostor iznad" msgstr "Premešta na radni prostor iznad"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Premešta na radni prostor ispod" msgstr "Premešta na radni prostor ispod"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "Sistem" msgstr "Sistem"
@@ -188,6 +171,10 @@ msgstr "Prikazuje upit za izvršavanje naredbe"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "Prikazuje pregled aktivnosti" msgstr "Prikazuje pregled aktivnosti"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "Povrati prečice na tastaturi"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "Prozori" msgstr "Prozori"
@@ -213,54 +200,50 @@ msgid "Restore window"
msgstr "Vraća veličinu prozora" msgstr "Vraća veličinu prozora"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Isključuje ili uključuje stanje zasenčenosti"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Zatvara prozor" msgstr "Zatvara prozor"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Skriva prozor" msgstr "Skriva prozor"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Premešta prozor" msgstr "Premešta prozor"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Menja veličinu prozora" msgstr "Menja veličinu prozora"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Prikazuje prozor na svim radnim prostorima ili samo na jednom" msgstr "Prikazuje prozor na svim radnim prostorima ili samo na jednom"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Izdiže prozor ukoliko ga drugi prozor zaklanja, u protivnom ga spušta" msgstr "Izdiže prozor ukoliko ga drugi prozor zaklanja, u protivnom ga spušta"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Izdiže prozor iznad ostalih prozora" msgstr "Izdiže prozor iznad ostalih prozora"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Spušta prozor ispod ostalih prozora" msgstr "Spušta prozor ispod ostalih prozora"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Uvećava prozor vertikalno" msgstr "Uvećava prozor vertikalno"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Uvećava prozor horizontalno" msgstr "Uvećava prozor horizontalno"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Prikažite podelu na levo" msgstr "Prikažite podelu na levo"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Prikažite podelu na desno" msgstr "Prikažite podelu na desno"
@@ -500,10 +483,55 @@ msgstr "Prelazak na VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Ponovo uključivanje prečica" msgstr "Ponovo uključivanje prečica"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Dozvoli grabljenje na Iks-vejlendu"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Dozvoli da se uzmu u obzir grabljenja od strane Iks11 programa unutar Iks-"
"vejlenda. Da bi se Iks11 grabljenje uzelo u obzir pod Vejlendom, klijent mora "
"takođe poslati specifičnu Iks11 klijentsku poruku ka korenom prozoru ili "
"mora biti na belom spisku programa u ključu „xwayland-grab-access-rules“."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Iks-vejlend programi kojima je dozvoljeno da rade grabljenja na tastaturi"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Spisak naziva resursa ili klasi resursa Iks11 prozora kojima je dozvoljeno "
"ili zabranjeno da rade grabljenja na tastaturi pod Iks-vejlendom. Naziv resursa "
"ili klasa resursa datog Iks11 prozora se može naći preko naredbe \"xprop "
"WM_CLASS\". Džoker znakovi „*“ i „?“ unutar vrednosti su podržani. Vrednosti "
"koje počinju sa „!“ se stavljaju na crni spisak, koji ima prednost u odnosu na "
"beli spisak, za opoziv programa za podrazumevanog sistemskog spiska. "
"Podrazumevani sistemski spisak sadrži sledeće programe: "
"\"@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@\" Korisnici mogu slomiti postojeće "
"grabljenje tako što će upotrebiti posebnu prečicu na tastaturi koja je "
"navedena u ključu za vezivanje tastera sa nazivom \"restore-shortcuts\"."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2151 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Režim prekidača (grupa %d)" msgstr "Režim prekidača (grupa %d)"
@@ -511,37 +539,37 @@ msgstr "Režim prekidača (grupa %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2174 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Promeni monitor" msgstr "Promeni monitor"
#: src/backends/meta-input-settings.c:2176 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Prikaži pomoć na ekranu" msgstr "Prikaži pomoć na ekranu"
#: src/backends/meta-monitor-manager.c:903 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Ugrađeni displej" msgstr "Ugrađeni displej"
#: src/backends/meta-monitor-manager.c:926 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Nepoznato" msgstr "Nepoznato"
#: src/backends/meta-monitor-manager.c:928 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Nepoznat displej" msgstr "Nepoznat displej"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:936 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -557,42 +585,46 @@ msgstr "Zvonca"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n" msgstr "Nisam uspeo da otvorim ekran „%s“ Iks sistema prozora\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Isključuje vezu sa upravnikom sesije" msgstr "Isključuje vezu sa upravnikom sesije"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Menja tekućeg upravnika prozorima" msgstr "Menja tekućeg upravnika prozorima"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Navodi IB upravnika sesije" msgstr "Navodi IB upravnika sesije"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Iks ekran koji će biti korišćen" msgstr "Iks ekran koji će biti korišćen"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Pokreće sesiju iz datoteke čuvanja" msgstr "Pokreće sesiju iz datoteke čuvanja"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Čini Iks pozive usklađenim" msgstr "Čini Iks pozive usklađenim"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Radi kao vajlandov sastavnik" msgstr "Radi kao vajlandov sastavnik"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Radi kao ugneždeni sastavnik" msgstr "Radi kao ugneždeni sastavnik"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Radi kao puni server prikaza, umesto kao ugneždeni" msgstr "Radi kao puni server prikaza, umesto kao ugneždeni"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Pokreni na Iks11 pozadincu"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -647,7 +679,7 @@ msgstr "Priključci Matera za korišćenje"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "%d. radni prostor" msgstr "%d. radni prostor"
#: src/core/screen.c:580 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -656,7 +688,7 @@ msgstr ""
"Prikaz „%s“ već ima upravnika prozora; probajte da koristite opciju „--" "Prikaz „%s“ već ima upravnika prozora; probajte da koristite opciju „--"
"replace“ da zamenite trenutnog upravnika prozora." "replace“ da zamenite trenutnog upravnika prozora."
#: src/core/screen.c:665 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n" msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n"
@@ -665,12 +697,12 @@ msgstr "Prikaz „%d“ na ekranu „%s“ nije ispravan\n"
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mater je preveden bez podrške za opširan režim\n" msgstr "Mater je preveden bez podrške za opširan režim\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Režim prekidača: Režim %d" msgstr "Režim prekidača: Režim %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -683,6 +715,21 @@ msgstr ""
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (na %s)" msgstr "%s (na %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Premešta prozor jedan radni prostor na levo"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Premešta prozor jedan radni prostor na desno"
#~ msgid "Move to workspace left"
#~ msgstr "Premešta na radni prostor levo"
#~ msgid "Move to workspace right"
#~ msgstr "Premešta na radni prostor desno"
#~ msgid "Toggle shaded state"
#~ msgstr "Isključuje ili uključuje stanje zasenčenosti"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "Nisam uspeo da pročitam direktorijum tema: %s\n" #~ msgstr "Nisam uspeo da pročitam direktorijum tema: %s\n"

212
po/sv.po
View File

@@ -1,25 +1,24 @@
# Swedish messages for mutter. # Swedish messages for mutter.
# Copyright © 2001-2017 Free Software Foundation, Inc. # Copyright © 2001-2018 Free Software Foundation, Inc.
# Christian Rose <menthos@menthos.com>, 2001, 2002, 2003, 2004, 2005. # Christian Rose <menthos@menthos.com>, 2001, 2002, 2003, 2004, 2005.
# Daniel Nylander <po@danielnylander.se>, 2006, 2007, 2008, 2009, 2010, 2011, 2012. # Daniel Nylander <po@danielnylander.se>, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
# Mattias Eriksson <snaggen@gmail.com>, 2014. # Mattias Eriksson <snaggen@gmail.com>, 2014.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2016, 2017. # Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2016, 2017, 2018.
# Sebastian Rasmussen <sebras@gmail.com>, 2016. # Sebastian Rasmussen <sebras@gmail.com>, 2016.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-20 20:33+0000\n"
"POT-Creation-Date: 2017-11-10 18:18+0000\n" "PO-Revision-Date: 2018-02-22 15:54+0100\n"
"PO-Revision-Date: 2017-11-14 00:43+0100\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n" "Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n" "Language: sv\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.4\n" "X-Generator: Poedit 2.0.6\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -46,130 +45,114 @@ msgid "Move window to last workspace"
msgstr "Flytta fönster till sista arbetsyta" msgstr "Flytta fönster till sista arbetsyta"
#: data/50-mutter-navigation.xml:24 #: 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:27
msgid "Move window one workspace to the right"
msgstr "Flytta fönster en arbetsyta åt höger"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Flytta fönster en arbetsyta uppåt" msgstr "Flytta fönster en arbetsyta uppåt"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Flytta fönster en arbetsyta nedåt" msgstr "Flytta fönster en arbetsyta nedåt"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Flytta fönster en skärm åt vänster" msgstr "Flytta fönster en skärm åt vänster"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Flytta fönster en skärm åt höger" msgstr "Flytta fönster en skärm åt höger"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Flytta fönster en skärm uppåt" msgstr "Flytta fönster en skärm uppåt"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Flytta fönster en skärm nedåt" msgstr "Flytta fönster en skärm nedåt"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Växla program" msgstr "Växla program"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Växla till föregående program" msgstr "Växla till föregående program"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Växla fönster" msgstr "Växla fönster"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Växla till föregående fönster" msgstr "Växla till föregående fönster"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Växla fönster för ett program" msgstr "Växla fönster för ett program"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Växla till föregående fönster för ett program" msgstr "Växla till föregående fönster för ett program"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Växla systemkontroller" msgstr "Växla systemkontroller"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Växla till föregående systemkontroll" msgstr "Växla till föregående systemkontroll"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Växla fönster direkt" msgstr "Växla fönster direkt"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Växla direkt till föregående fönster" msgstr "Växla direkt till föregående fönster"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Växla fönster för ett program direkt" msgstr "Växla fönster för ett program direkt"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Växla direkt till föregående fönster för ett program" msgstr "Växla direkt till föregående fönster för ett program"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Växla systemkontroller direkt" msgstr "Växla systemkontroller direkt"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Växla direkt till föregående systemkontroll" msgstr "Växla direkt till föregående systemkontroll"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Dölj alla normala fönster" msgstr "Dölj alla normala fönster"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Växla till arbetsyta 1" msgstr "Växla till arbetsyta 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Växla till arbetsyta 2" msgstr "Växla till arbetsyta 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Växla till arbetsyta 3" msgstr "Växla till arbetsyta 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Växla till arbetsyta 4" msgstr "Växla till arbetsyta 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Växla till sista arbetsyta" msgstr "Växla till sista arbetsyta"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Flytta till arbetsyta till vänster"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Flytta till arbetsyta till höger"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Flytta till arbetsyta ovanför" msgstr "Flytta till arbetsyta ovanför"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Flytta till arbetsyta nedanför" msgstr "Flytta till arbetsyta nedanför"
@@ -214,54 +197,50 @@ msgid "Restore window"
msgstr "Återställ fönster" msgstr "Återställ fönster"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Växla upprullat tillstånd"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Stäng fönster" msgstr "Stäng fönster"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Dölj fönster" msgstr "Dölj fönster"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Flytta fönster" msgstr "Flytta fönster"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Ändra storlek på fönster" msgstr "Ändra storlek på fönster"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "Växla fönster på alla arbetsytor eller bara en" msgstr "Växla fönster på alla arbetsytor eller bara en"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" 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" msgstr "Höj fönstret om det skyms av ett annat fönster, sänk det annars"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Höj fönstret över andra fönster" msgstr "Höj fönstret över andra fönster"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Sänk fönster under andra fönster" msgstr "Sänk fönster under andra fönster"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Maximera fönster vertikalt" msgstr "Maximera fönster vertikalt"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Maximera fönster horisontellt" msgstr "Maximera fönster horisontellt"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Vy delad till vänster" msgstr "Vy delad till vänster"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Vy delad till höger" msgstr "Vy delad till höger"
@@ -501,10 +480,56 @@ msgstr "Växla till VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Återaktivera genvägar" msgstr "Återaktivera genvägar"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Tillåt fångster med Xwayland"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Tillåt tangentbordsfångster utfärdade av X11-program som körs i Xwayland att "
"tas i beräkning. För att en X11-fångst ska tas i beräkning under Wayland "
"måste klienten också antingen sända ett specifikt X11-ClientMessage till "
"root-fönstret eller finnas bland programmen som vitlistats i nyckeln "
"”xwayland-grab-access-rules”."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Xwayland-program tillåts utfärda tangentbordsfångster"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Lista resursnamnen eller resursklassen för X11-fönster som antingen tillåts "
"eller inte tillåts att utfärda X11-tangentbordsfångster under Xwayland. "
"Resursnamnet eller resursklassen för ett givet X11-fönster kan erhållas "
"genom att använda kommandot ”xprop WM_CLASS”. Stöd finns för att använda "
"jokertecknen ”*” och ”?” i värdena. Värden som startar med ”!” svartlistas, "
"vilket företräde över vitlistan, för att upphäva program i "
"standardsystemlistan. Standardsystemlistan innehåller följande program: "
"”@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Användare kan bryta en befintlig "
"fångst genom att använda den specifika tangentbordsgenvägen som definieras "
"av tangentbindningsnyckeln ”restore-shortcuts”."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2167 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Lägesväxel (grupp %d)" msgstr "Lägesväxel (grupp %d)"
@@ -512,37 +537,37 @@ msgstr "Lägesväxel (grupp %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2190 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Växla skärm" msgstr "Växla skärm"
#: src/backends/meta-input-settings.c:2192 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Visa hjälp på skärmen" msgstr "Visa hjälp på skärmen"
#: src/backends/meta-monitor-manager.c:908 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Inbyggd display" msgstr "Inbyggd display"
#: src/backends/meta-monitor-manager.c:931 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Okänd" msgstr "Okänd"
#: src/backends/meta-monitor-manager.c:933 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Okänd display" msgstr "Okänd display"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:941 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -557,42 +582,46 @@ msgstr "Ljudsignalhändelse"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "Misslyckades med att öppna X Window System-displayen ”%s”\n" msgstr "Misslyckades med att öppna X Window System-displayen ”%s”\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Inaktivera anslutning till sessionshanteraren" msgstr "Inaktivera anslutning till sessionshanteraren"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Ersätt körande fönsterhanteraren" msgstr "Ersätt körande fönsterhanteraren"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Ange sessionshanteringsid" msgstr "Ange sessionshanteringsid"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "X-display att använda" msgstr "X-display att använda"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Initiera session från sparandefil" msgstr "Initiera session från sparandefil"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Gör X-anrop synkrona" msgstr "Gör X-anrop synkrona"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Kör som en wayland-kompositionshanterare" msgstr "Kör som en wayland-kompositionshanterare"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Kör som en nästlad kompositionshanterare" msgstr "Kör som en nästlad kompositionshanterare"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" 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" msgstr "Kör som en full display-tjänst, i stället för nästlad"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "Kör med X11-gränssnitt"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -665,12 +694,12 @@ msgstr "Skärm %d på display ”%s” är ogiltig\n"
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter kompilerades utan stöd för utförligt läge\n" msgstr "Mutter kompilerades utan stöd för utförligt läge\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Lägesväxel: Läge %d" msgstr "Lägesväxel: Läge %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -682,3 +711,18 @@ msgstr ""
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (på %s)" msgstr "%s (på %s)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Flytta fönster en arbetsyta åt vänster"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Flytta fönster en arbetsyta åt höger"
#~ msgid "Move to workspace left"
#~ msgstr "Flytta till arbetsyta till vänster"
#~ msgid "Move to workspace right"
#~ msgstr "Flytta till arbetsyta till höger"
#~ msgid "Toggle shaded state"
#~ msgstr "Växla upprullat tillstånd"

210
po/tr.po
View File

@@ -7,17 +7,16 @@
# İlker DAĞLI <ilker@ilkerdagli.info>, 2011. # İlker DAĞLI <ilker@ilkerdagli.info>, 2011.
# Muhammed EKEN <gnome@m-eken.com>, 2011. # Muhammed EKEN <gnome@m-eken.com>, 2011.
# Furkan Ahmet Kara <furkanahmetkara.fk@gmail.com>, 2017. # Furkan Ahmet Kara <furkanahmetkara.fk@gmail.com>, 2017.
# Emin Tufan Çetin <etcetin@gmail.com>, 2017.
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015, 2016, 2017. # Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2014, 2015, 2016, 2017.
# Emin Tufan Çetin <etcetin@gmail.com>, 2017, 2018.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-06 04:14+0000\n"
"POT-Creation-Date: 2017-11-10 18:18+0000\n" "PO-Revision-Date: 2018-03-13 10:53+0300\n"
"PO-Revision-Date: 2017-11-15 23:49+0300\n" "Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
"Language-Team: Türkçe <gnome-turk@gnome.org>\n" "Language-Team: Türkçe <gnome-turk@gnome.org>\n"
"Language: tr\n" "Language: tr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -52,130 +51,114 @@ msgid "Move window to last workspace"
msgstr "Pencereyi son çalışma alanına taşı" msgstr "Pencereyi son çalışma alanına taşı"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "Pencereyi soldaki çalışma alanına taşı"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "Pencereyi sağdaki çalışma alanına taşı"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "Pencereyi üstteki çalışma alanına taşı" msgstr "Pencereyi üstteki çalışma alanına taşı"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "Pencereyi alttaki çalışma alanına taşı" msgstr "Pencereyi alttaki çalışma alanına taşı"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "Pencereyi soldaki monitöre taşı" msgstr "Pencereyi soldaki monitöre taşı"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "Pencereyi sağdaki monitöre taşı" msgstr "Pencereyi sağdaki monitöre taşı"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "Pencereyi üstteki monitöre taşı" msgstr "Pencereyi üstteki monitöre taşı"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "Pencereyi alttaki monitöre taşı" msgstr "Pencereyi alttaki monitöre taşı"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "Uygulamalar arasında geçiş yap" msgstr "Uygulamalar arasında geçiş yap"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "Önceki uygulamaya geç" msgstr "Önceki uygulamaya geç"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "Pencereler arasında geçiş yap" msgstr "Pencereler arasında geçiş yap"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "Önceki pencereye geç" msgstr "Önceki pencereye geç"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "Uygulamanın pencereleri arasında geçiş yap" msgstr "Uygulamanın pencereleri arasında geçiş yap"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "Uygulamanın bir önceki penceresine geç" msgstr "Uygulamanın bir önceki penceresine geç"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "Sistem denetimleri arasında geçiş yap" msgstr "Sistem denetimleri arasında geçiş yap"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "Önceki sistem denetimine geç" msgstr "Önceki sistem denetimine geç"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "Pencereler arasında doğrudan geçiş yap" msgstr "Pencereler arasında doğrudan geçiş yap"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "Önceki pencereye doğrudan geç" msgstr "Önceki pencereye doğrudan geç"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "Uygulamanın pencereleri arasında anında geçiş yap" msgstr "Uygulamanın pencereleri arasında anında geçiş yap"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "Bir uygulamanın önceki penceresine doğrudan geç" msgstr "Bir uygulamanın önceki penceresine doğrudan geç"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "Sistem denetimleri arasında doğrudan geçiş yap" msgstr "Sistem denetimleri arasında doğrudan geçiş yap"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "Önceki sistem denetimine doğrudan geç" msgstr "Önceki sistem denetimine doğrudan geç"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "Tüm normal pencereleri gizle" msgstr "Tüm normal pencereleri gizle"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "Çalışma alanı 1e geç" msgstr "Çalışma alanı 1e geç"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "Çalışma alanı 2ye geç" msgstr "Çalışma alanı 2ye geç"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "Çalışma alanı 3e geç" msgstr "Çalışma alanı 3e geç"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "Çalışma alanı 4e geç" msgstr "Çalışma alanı 4e geç"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "Son çalışma alanına geç" msgstr "Son çalışma alanına geç"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "Soldaki çalışma alanına taşı"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "Sağdaki çalışma alanına taşı"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "Üstteki çalışma alanına taşı" msgstr "Üstteki çalışma alanına taşı"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "Alttaki çalışma alanına taşı" msgstr "Alttaki çalışma alanına taşı"
@@ -220,56 +203,52 @@ msgid "Restore window"
msgstr "Pencereyi eski haline getir" msgstr "Pencereyi eski haline getir"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "Toplanmış durumu değiştir"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "Pencereyi kapat" msgstr "Pencereyi kapat"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "Pencereyi gizle" msgstr "Pencereyi gizle"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "Pencere taşı" msgstr "Pencere taşı"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "Pencereyi yeniden boyutlandır" msgstr "Pencereyi yeniden boyutlandır"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "" msgstr ""
"Pencerenin tüm çalışma alanlarında veya yalnızca bir tanesi üzerinde " "Pencerenin tüm çalışma alanlarında veya yalnızca bir tanesi üzerinde "
"olmasını seç" "olmasını seç"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "Pencere altta kalmışsa yükselt, aksi halde alçalt" msgstr "Pencere altta kalmışsa yükselt, aksi halde alçalt"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "Pencereyi diğerlerinin üstüne çıkar" msgstr "Pencereyi diğerlerinin üstüne çıkar"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "Pencereyi diğerlerinin altına gönder" msgstr "Pencereyi diğerlerinin altına gönder"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "Pencereyi dikey olarak büyült" msgstr "Pencereyi dikey olarak büyült"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "Pencereyi yatay olarak büyült" msgstr "Pencereyi yatay olarak büyült"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "Solda bölünmüş olarak göster" msgstr "Solda bölünmüş olarak göster"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "Sağda bölünmüş olarak göster" msgstr "Sağda bölünmüş olarak göster"
@@ -516,10 +495,56 @@ msgstr "VT 12ye geç"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "Kısayolları yeniden etkinleştir" msgstr "Kısayolları yeniden etkinleştir"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "Xwayland ile yakalamalara izin ver"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"XWaylandde çalışan X11 uygulamaları tarafından yapılacak klavye "
"yakalamalarına izin ver. X11 yakalamasının Wayland altında hesaba katılması "
"için istemci ya kök pencereye özel X11 ClientMessageı göndermeli ya da "
"“xwayland-grab-access-rules” anahtarında beyaz listeye alınmış uygulamalar "
"içinde yer almalıdır."
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Klavye yakalamaları yapabilen Xwayland uygulamaları"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Xwayland altında X11 klavye yakalamaları yapmak için izin verilsin veya "
"verilmesin tüm X11 pencerelerinin kaynak adlarını veya kaynak sınıfını "
"listele. Verilen bir X11 penceresinin kaynak adı veya kaynak sınıfı “xprop "
"WM_CLASS” komutuyla elde edilebilir. Değerlerde “*” joker karakteri ve “?” "
"değiştirilebilir damga kullanımı desteklenmektedir. “!” ile başlayan "
"değerler, uygulamaları öntanımlı sistem listesinden feshetmek için beyaz "
"listeden önceliği olan kara listeye alınmıştır. Öntanımlı sistem listesi şu "
"uygulamaları içerir: “@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Kullanıcılar, "
"“restore-shortcuts” anahtar bağlama anahtarıyla tanımlanmış özel klavye "
"kısayolunu kullanarak var olan yakalamayı kırabilir."
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2167 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "Kip anahtarı (Group %d)" msgstr "Kip anahtarı (Group %d)"
@@ -527,37 +552,37 @@ msgstr "Kip anahtarı (Group %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2190 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "Monitör değiştir" msgstr "Monitör değiştir"
#: src/backends/meta-input-settings.c:2192 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "Ekranda yardımı göster" msgstr "Ekranda yardımı göster"
#: src/backends/meta-monitor-manager.c:908 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "Yerleşik ekran" msgstr "Yerleşik ekran"
#: src/backends/meta-monitor-manager.c:931 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "Bilinmiyor" msgstr "Bilinmiyor"
#: src/backends/meta-monitor-manager.c:933 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Bilinmeyen Ekran" msgstr "Bilinmeyen Ekran"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:941 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -574,42 +599,46 @@ msgstr "Etkinlik zili"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "X Pencere Sistemi “%s” ekranıılamadı\n" msgstr "X Pencere Sistemi “%s” ekranıılamadı\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Ortam yöneticisine olan bağlantıyı kapat" msgstr "Ortam yöneticisine olan bağlantıyı kapat"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Çalışan pencere yöneticisinin yerini al" msgstr "Çalışan pencere yöneticisinin yerini al"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Ortam yönetim IDsini belirt" msgstr "Ortam yönetim IDsini belirt"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "Kullanılacak X Ekranı" msgstr "Kullanılacak X Ekranı"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Ortamı kayıtlı dosyadan başlat" msgstr "Ortamı kayıtlı dosyadan başlat"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "X çağrılarını eşazamanlı yap" msgstr "X çağrılarını eşazamanlı yap"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Bir wayland dizgicisi olarak çalıştır" msgstr "Bir wayland dizgicisi olarak çalıştır"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Yuvalanmış dizgici olarak çalıştır" msgstr "Yuvalanmış dizgici olarak çalıştır"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "İç içe değil tam ekran sunucusu olarak çalıştır" msgstr "İç içe değil tam ekran sunucusu olarak çalıştır"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "X11 arkayüzüyle çalıştır"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -683,12 +712,12 @@ msgstr "“%2$s” monitöründeki %1$d ekranı geçersiz\n"
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter, ayrıntılı kip desteği olmadan derlenmiş\n" msgstr "Mutter, ayrıntılı kip desteği olmadan derlenmiş\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "Kip Anahtarı: Kip %d" msgstr "Kip Anahtarı: Kip %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -701,6 +730,21 @@ msgstr ""
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (%s üzerinde)" msgstr "%s (%s üzerinde)"
#~ msgid "Move window one workspace to the left"
#~ msgstr "Pencereyi soldaki çalışma alanına taşı"
#~ msgid "Move window one workspace to the right"
#~ msgstr "Pencereyi sağdaki çalışma alanına taşı"
#~ msgid "Move to workspace left"
#~ msgstr "Soldaki çalışma alanına taşı"
#~ msgid "Move to workspace right"
#~ msgstr "Sağdaki çalışma alanına taşı"
#~ msgid "Toggle shaded state"
#~ msgstr "Toplanmış durumu değiştir"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "Tema dizini taranırken hata oluştu: %s\n" #~ msgstr "Tema dizini taranırken hata oluştu: %s\n"

View File

@@ -1,6 +1,6 @@
# translation of mutter.po to zh_CN
# Simplified Chinese translation of mutter. # Simplified Chinese translation of mutter.
# Copyright (C) 2002, 2003, 2004, 2009, 2010 Free Software Foundation, Inc. # Copyright (C) 2012-2018 mutter's COPYRIGHT HOLDER
# This file is distributed under the same license as the mutter package.
# Sun G11n <gnome_int_l10n@ireland.sun.com>, 2002. # Sun G11n <gnome_int_l10n@ireland.sun.com>, 2002.
# He Qiangqiang <carton@linux.net.cn>, 2002 # He Qiangqiang <carton@linux.net.cn>, 2002
# Xiong Jiang <jxiong@offtopic.org>, 2003 # Xiong Jiang <jxiong@offtopic.org>, 2003
@@ -11,22 +11,24 @@
# Lele Long <schemacs@gmail.com>, 2011. # Lele Long <schemacs@gmail.com>, 2011.
# YunQiang Su <wzssyqa@gmail.com>, 2011, 2012. # YunQiang Su <wzssyqa@gmail.com>, 2011, 2012.
# Tong Hui <tonghuix@gmail.com>, 2014. # Tong Hui <tonghuix@gmail.com>, 2014.
# Mandy Wang <wangmychn@gmail.com>, 2017.
# Mingcong Bai <jeffbai@aosc.xyz>, 2017.
# Dingzhong Chen <wsxy162@gmail.com>, 2017, 2018.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter master\n" "Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-02-09 13:01+0000\n"
"POT-Creation-Date: 2017-02-03 10:06+0000\n" "PO-Revision-Date: 2018-02-16 22:22+0800\n"
"PO-Revision-Date: 2017-01-04 21:52+0800\n" "Last-Translator: Dingzhong Chen <wsxy162@gmail.com>\n"
"Last-Translator: Mandy Wang <wangmychn@gmail.com>\n" "Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n" "Language: zh_CN\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.8.7.1\n" "X-Generator: Gtranslator 2.91.7\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -53,134 +55,118 @@ msgid "Move window to last workspace"
msgstr "将窗口移到最后一个工作区" msgstr "将窗口移到最后一个工作区"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "将窗口左移一个工作区"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "将窗口右移一个工作区"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "将窗口上移一个工作区" msgstr "将窗口上移一个工作区"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "将窗口下移一个工作区" msgstr "将窗口下移一个工作区"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "将窗口左移一个显示器" msgstr "将窗口左移一个显示器"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "将窗口右移一个显示器" msgstr "将窗口右移一个显示器"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "将窗口上移一个显示器" msgstr "将窗口上移一个显示器"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "将窗口下移一个显示器" msgstr "将窗口下移一个显示器"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "切换应用程序" msgstr "切换应用程序"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "切换到前一个应用程序" msgstr "切换到前一个应用程序"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "切换窗口" msgstr "切换窗口"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "切换到前一个窗口" msgstr "切换到前一个窗口"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "在应用程序的窗口之间切换窗口" msgstr "在应用程序的窗口之间切换窗口"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "切换到一个应用程序的前一个窗口" msgstr "切换到一个应用程序的前一个窗口"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "切换系统控制" msgstr "切换系统控制"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "切换到前一个系统控制" msgstr "切换到前一个系统控制"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "直接切换窗口" msgstr "直接切换窗口"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "直接切换到前一个窗口" msgstr "直接切换到前一个窗口"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "在应用程序窗口间直接移动焦点" msgstr "在应用程序窗口间直接移动焦点"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "直接切换到一个应用程序的前一个窗口" msgstr "直接切换到一个应用程序的前一个窗口"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "直接切换系统控制" msgstr "直接切换系统控制"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "直接切换到前一个系统控制" msgstr "直接切换到前一个系统控制"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "隐藏所有正常窗口" msgstr "隐藏所有正常窗口"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "切换到工作区 1" msgstr "切换到工作区 1"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "切换到工作区 2" msgstr "切换到工作区 2"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "切换到工作区 3" msgstr "切换到工作区 3"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "切换到工作区 4" msgstr "切换到工作区 4"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "切换到最后一个工作区" msgstr "切换到最后一个工作区"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "移动到左侧工作区"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "移动到右侧工作区"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "移动到上层工作区" msgstr "移动到上层工作区"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "移动到下层工作区" msgstr "移动到下层工作区"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "系统" msgstr "系统"
@@ -190,7 +176,11 @@ msgstr "显示运行命令提示符"
#: data/50-mutter-system.xml:10 #: data/50-mutter-system.xml:10
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "显示活动大纲" msgstr "显示活动视图"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "还原键盘快捷键"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
@@ -217,54 +207,50 @@ msgid "Restore window"
msgstr "恢复窗口" msgstr "恢复窗口"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "切换卷起状态"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "关闭窗口" msgstr "关闭窗口"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "隐藏窗口" msgstr "隐藏窗口"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "移动窗口" msgstr "移动窗口"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "改变窗口大小" msgstr "改变窗口大小"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "在位于所有或仅一个工作区的窗口间切换" msgstr "在位于所有或仅一个工作区的窗口间切换"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "如果窗口被其他窗口遮盖,则提升它,否则降低它" msgstr "如果窗口被其他窗口遮盖,则提升它,否则降低它"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "将窗口提升到其它窗口之上" msgstr "将窗口提升到其它窗口之上"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "将窗口降低到其它窗口之下" msgstr "将窗口降低到其它窗口之下"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "垂直最大化窗口" msgstr "垂直最大化窗口"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "水平最大化窗口" msgstr "水平最大化窗口"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "在左侧查看分割" msgstr "在左侧查看分割"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "在右侧查看分割" msgstr "在右侧查看分割"
@@ -278,10 +264,10 @@ msgstr "用于修改窗口点击动作的修饰键 met"
#: data/org.gnome.mutter.gschema.xml.in:8 #: data/org.gnome.mutter.gschema.xml.in:8
msgid "" msgid ""
"This key will initiate the \"overlay\", which is a combination window " "This key will initiate the overlay, which is a combination window overview "
"overview and application launching system. The default is intended to be the " "and application launching system. The default is intended to be the “Windows "
"\"Windows key\" on PC hardware. It's expected that this binding either the " "key on PC hardware. Its expected that this binding either the default or "
"default or set to the empty string." "set to the empty string."
msgstr "" msgstr ""
"这个键指出的“覆盖”是一种混合窗口概述和应用程序运行的系统。默认要求使用 " "这个键指出的“覆盖”是一种混合窗口概述和应用程序运行的系统。默认要求使用 "
"“Super 键”。可能使用默认或者空白。" "“Super 键”。可能使用默认或者空白。"
@@ -318,12 +304,12 @@ msgstr "动态管理工作区"
#: data/org.gnome.mutter.gschema.xml.in:41 #: data/org.gnome.mutter.gschema.xml.in:41
msgid "" msgid ""
"Determines whether workspaces are managed dynamically or whether there's a " "Determines whether workspaces are managed dynamically or whether theres a "
"static number of workspaces (determined by the num-workspaces key in org." "static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)." "gnome.desktop.wm.preferences)."
msgstr "" msgstr ""
"决定工作区动态管理还是静态数量的工作区(由 org.gnome.desktop.wm.preferences " "决定工作区动态管理还是静态数量的工作区由 org.gnome.desktop.wm.preferences "
"的 num-workspaces 键确定)。" "的 num-workspaces 键确定。"
# 或者 只在主显示器上显示工作区 # 或者 只在主显示器上显示工作区
#: data/org.gnome.mutter.gschema.xml.in:50 #: data/org.gnome.mutter.gschema.xml.in:50
@@ -353,9 +339,9 @@ msgstr "将焦点改变推迟到光标停止移动之后"
#: data/org.gnome.mutter.gschema.xml.in:69 #: data/org.gnome.mutter.gschema.xml.in:69
msgid "" msgid ""
"If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then " "If set to true, and the focus mode is either sloppy or mouse then the "
"the focus will not be changed immediately when entering a window, but only " "focus will not be changed immediately when entering a window, but only after "
"after the pointer stops moving." "the pointer stops moving."
msgstr "" msgstr ""
"如果为 true而聚焦模式为“sloppy”或“mouse”那么进入某个窗口时焦点将不会立即" "如果为 true而聚焦模式为“sloppy”或“mouse”那么进入某个窗口时焦点将不会立即"
"改变,而是等到光标停止移动之后。" "改变,而是等到光标停止移动之后。"
@@ -366,7 +352,7 @@ msgstr "可拖拽的边界宽度"
#: data/org.gnome.mutter.gschema.xml.in:80 #: data/org.gnome.mutter.gschema.xml.in:80
msgid "" msgid ""
"The amount of total draggable borders. If the theme's visible borders are " "The amount of total draggable borders. If the themes visible borders are "
"not enough, invisible borders will be added to meet this value." "not enough, invisible borders will be added to meet this value."
msgstr "" msgstr ""
"可拖拽的边界总数。如果主题的可见边界不足,将添加不可见的边界来满足此值。" "可拖拽的边界总数。如果主题的可见边界不足,将添加不可见的边界来满足此值。"
@@ -391,14 +377,50 @@ msgid ""
"screen of the monitor." "screen of the monitor."
msgstr "为 true 时,新窗口将总是置于此显示器已激活屏幕的中央。" msgstr "为 true 时,新窗口将总是置于此显示器已激活屏幕的中央。"
#: data/org.gnome.mutter.gschema.xml.in:120 #: data/org.gnome.mutter.gschema.xml.in:107
msgid "Enable experimental features"
msgstr "开启实验性特性"
#: data/org.gnome.mutter.gschema.xml.in:108
msgid ""
"To enable experimental features, add the feature keyword to the list. "
"Whether the feature requires restarting the compositor depends on the given "
"feature. Any experimental feature is not required to still be available, or "
"configurable. Dont expect adding anything in this setting to be future "
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
"mutter default to layout logical monitors in a logical pixel coordinate "
"space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — "
"enables remote desktop support. To support remote desktop with screen "
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
"screen cast support."
msgstr ""
"要启用实验性特性,请将如下特性关键字添加到列表中。特性是否要求重启合成器取决"
"于特性本身。实验性特性不需启用即可配置和使用。请不要将实验性特性作为未来保障"
"的基础。当前可用的关键字:• “monitor-config-manager” — 使用新的监视器配置系"
"统,用于替代老的系统。启用此特性将打开一个上级配置 API 以用于配置应用程序,并"
"可提供基于每屏幕的逻辑缩放功能。• “scale-monitor-framebuffer” — 让 Mutter 默"
"认基于像素座标排布多屏幕,并同时缩放监视器帧缓冲器而不是窗口内容,以便管理 "
"HiDPI 监视器。该特性不需要重启来生效。• “remote-desktop” — 启用远程桌面支持。"
"要支持远程桌面共享还需要设置“screen-cast”。 • “screen-cast” — 启用屏幕广播"
"支持。"
#: data/org.gnome.mutter.gschema.xml.in:145
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "从 Tab 轮换弹出界面选择窗口" msgstr "从 Tab 轮换弹出界面选择窗口"
#: data/org.gnome.mutter.gschema.xml.in:125 #: data/org.gnome.mutter.gschema.xml.in:150
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "取消 Tab 轮换弹出" msgstr "取消 Tab 轮换弹出"
#: data/org.gnome.mutter.gschema.xml.in:155
msgid "Switch monitor configurations"
msgstr "切换显示器配置"
#: data/org.gnome.mutter.gschema.xml.in:160
msgid "Rotates the built-in monitor configuration"
msgstr "旋转内置显示器配置"
#: data/org.gnome.mutter.wayland.gschema.xml.in:6 #: data/org.gnome.mutter.wayland.gschema.xml.in:6
msgid "Switch to VT 1" msgid "Switch to VT 1"
msgstr "切换到 VT 1" msgstr "切换到 VT 1"
@@ -447,127 +469,183 @@ msgstr "切换到 VT 11"
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "切换到 VT 12" msgstr "切换到 VT 12"
#: data/org.gnome.mutter.wayland.gschema.xml.in:54
msgid "Re-enable shortcuts"
msgstr "重新启用快捷键"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "允许用 Xwayland 捕获"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"允许考虑运行在 Xwayland 中的 X11 应用程序发起的键盘捕获。在 Wayland 下,为了"
"将 X11 捕获考虑在内,客户端也必须发送一个指定的 X11 ClientMessage 到根窗口,"
"或是包含进“xwayland-grab-access-rules”键成为其中一个白名单应用程序。"
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "允许发起键盘捕获的 Xwayland 应用程序"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"Xwayland 下允许或不允许发起 X11 键盘捕获的 X11 窗口,其资源名或资源类的列表。"
"给定 X11 窗口的资源名或资源类可以使用“xprop WM_CLASS”命令获取。支持在键值中使"
"用通配符“*”和“?”。以“!”开头的键值会列入黑名单,它们的优先级高于白名单,用来撤"
"销默认系统列表中的应用程序。默认系统列表包含了下列应用程"
"序:“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” 用户可以使用键绑定键“restore-"
"shortcuts”定义的键盘快捷键来中断进行中的捕获。"
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2260
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "模式切换(组别 %d"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:1861 #: src/backends/meta-input-settings.c:2283
msgid "Switch monitor" msgid "Switch monitor"
msgstr "切换显示器" msgstr "切换显示器"
#: src/backends/meta-input-settings.c:1863 #: src/backends/meta-input-settings.c:2285
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "显示在屏帮助" msgstr "显示在屏帮助"
#: src/backends/meta-monitor-manager.c:515 #: src/backends/meta-monitor-manager.c:900
msgid "Built-in display" msgid "Built-in display"
msgstr "内置显示器" msgstr "内置显示器"
#: src/backends/meta-monitor-manager.c:538 #: src/backends/meta-monitor-manager.c:923
msgid "Unknown" msgid "Unknown"
msgstr "未知" msgstr "未知"
#: src/backends/meta-monitor-manager.c:540 #: src/backends/meta-monitor-manager.c:925
msgid "Unknown Display" msgid "Unknown Display"
msgstr "未知的 Display" msgstr "未知的 Display"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:548 #: src/backends/meta-monitor-manager.c:933
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:471 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display \"%s" "Another compositing manager is already running on screen %i on display “%s”."
"\"."
msgstr "显示器 %2$s 的屏幕 %1$i 上已有另外一个混成窗口管理器正在运行。" msgstr "显示器 %2$s 的屏幕 %1$i 上已有另外一个混成窗口管理器正在运行。"
#: src/core/bell.c:194 #: src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "响铃事件" msgstr "响铃事件"
#: src/core/delete.c:127 #: src/core/display.c:608
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "无法打开 X Window System 显示器“%s”\n"
#: src/core/main.c:190
msgid "Disable connection to session manager"
msgstr "禁止连接到会话管理器"
#: src/core/main.c:196
msgid "Replace the running window manager"
msgstr "替换正在运行的窗口管理器"
#: src/core/main.c:202
msgid "Specify session management ID"
msgstr "指定会话管理 ID"
#: src/core/main.c:207
msgid "X Display to use"
msgstr "要使用的 X Display"
#: src/core/main.c:213
msgid "Initialize session from savefile"
msgstr "从保存文件中初始化会话"
#: src/core/main.c:219
msgid "Make X calls synchronous"
msgstr "使 X 调用同步"
#: src/core/main.c:226
msgid "Run as a wayland compositor"
msgstr "作为 wayland 混成管理器运行"
#: src/core/main.c:232
msgid "Run as a nested compositor"
msgstr "作为嵌套混成器运行"
#: src/core/main.c:240
msgid "Run as a full display server, rather than nested"
msgstr "以完整显示服务器方式运行,而不是以嵌套方式"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "以 X11 后端运行"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
msgid "“%s” is not responding." msgid "“%s” is not responding."
msgstr "“%s” 未响应。" msgstr "“%s” 未响应。"
#: src/core/delete.c:129 #: src/core/meta-close-dialog-default.c:149
msgid "Application is not responding." msgid "Application is not responding."
msgstr "应用程序未响应。" msgstr "应用程序未响应。"
#: src/core/delete.c:134 #: src/core/meta-close-dialog-default.c:154
msgid "" msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
msgstr "您可以选择稍等一会儿,或者强制退出该应用程序。" msgstr "您可以选择稍等一会儿,或者强制退出该应用程序。"
#: src/core/delete.c:141 #: src/core/meta-close-dialog-default.c:161
msgid "_Wait"
msgstr "等待(_W)"
#: src/core/delete.c:141
msgid "_Force Quit" msgid "_Force Quit"
msgstr "强制退出(_F)" msgstr "强制退出(_F)"
#: src/core/display.c:590 #: src/core/meta-close-dialog-default.c:161
#, c-format msgid "_Wait"
msgid "Failed to open X Window System display '%s'\n" msgstr "等待(_W)"
msgstr "无法打开 X Window System 显示器“%s”\n"
#: src/core/main.c:182
msgid "Disable connection to session manager"
msgstr "禁止连接到会话管理器"
#: src/core/main.c:188
msgid "Replace the running window manager"
msgstr "替换正在运行的窗口管理器"
#: src/core/main.c:194
msgid "Specify session management ID"
msgstr "指定会话管理 ID"
#: src/core/main.c:199
msgid "X Display to use"
msgstr "要使用的 X Display"
#: src/core/main.c:205
msgid "Initialize session from savefile"
msgstr "从保存文件中初始化会话"
#: src/core/main.c:211
msgid "Make X calls synchronous"
msgstr "使 X 调用同步"
#: src/core/main.c:218
msgid "Run as a wayland compositor"
msgstr "作为 wayland 混成管理器运行"
#: 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 #, c-format
msgid "" msgid ""
"mutter %s\n" "mutter %s\n"
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n" "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
"This is free software; see the source for copying conditions.\n" "This is free software; see the source for copying conditions.\n"
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A " "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
"PARTICULAR PURPOSE.\n" "PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
"mutter %s\n" "mutter %s\n"
"版权所有 (C) 2001-%d Havoc Pennington, Red Hat, Inc., 以及其他\n" "Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., 以及其他\n"
"本软件为自由软件版权条款请参见源码\n" "本软件为自由软件版权条款请参见源码\n"
"不存在任何保证即便是对商业性或者特定目的的适应性也不作保证。\n" "不存在任何保证即便是对商业性或者特定目的的适应性也不作保证。\n"
#: src/core/mutter.c:53 #: src/core/mutter.c:53
msgid "Print version" msgid "Print version"
@@ -582,41 +660,54 @@ msgstr "要使用的 Mutter 插件"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "工作区 %d" msgstr "工作区 %d"
#: src/core/screen.c:521 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display \"%s\" already has a window manager; try using the --replace option " "Display “%s” already has a window manager; try using the --replace option to "
"to replace the current window manager." "replace the current window manager."
msgstr "" msgstr ""
"Display“%s”已经有一个窗口管理器请尝试使用 --replace 选项替换当前的窗口管理" "Display“%s”已经有一个窗口管理器请尝试使用 --replace 选项替换当前的窗口管理"
"器。" "器。"
#: src/core/screen.c:606 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display %s is invalid\n"
msgstr "显示“%2$s”上的屏幕 %1$d 无效\n" msgstr "显示“%2$s”上的屏幕 %1$d 无效\n"
#: src/core/util.c:120 #: src/core/util.c:120
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter 编译的时候没有加入详细模式的支持\n" msgstr "Mutter 编译的时候没有加入详细模式的支持\n"
#: src/wayland/meta-wayland-tablet-pad.c:595 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "模式切换:%d 模式" msgstr "模式切换:%d 模式"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support &quot;save current setup&quot; and will have to " "These windows do not support save current setup and will have to be "
"be restarted manually next time you log in." "restarted manually next time you log in."
msgstr "" msgstr "这些窗口不支持“保存当前设置”,并且在您下次登录时,必须手动重启它们。"
"这些窗口不支持 &quot;保存当前设置 &quot; 您在下次登录时,必须手动重启动它"
"们。"
#: src/x11/window-props.c:548 #: src/x11/window-props.c:559
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (于 %s)" msgstr "%s于 %s"
#~ msgid "Move window one workspace to the left"
#~ msgstr "将窗口左移一个工作区"
#~ msgid "Move window one workspace to the right"
#~ msgstr "将窗口右移一个工作区"
#~ msgid "Move to workspace left"
#~ msgstr "移动到左侧工作区"
#~ msgid "Move to workspace right"
#~ msgstr "移动到右侧工作区"
#~ msgid "Toggle shaded state"
#~ msgstr "切换卷起状态"
#~ msgid "Failed to scan themes directory: %s\n" #~ msgid "Failed to scan themes directory: %s\n"
#~ msgstr "扫描主题目录失败:%s\n" #~ msgstr "扫描主题目录失败:%s\n"

View File

@@ -8,10 +8,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: metacity 3.3.4\n" "Project-Id-Version: metacity 3.3.4\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"product=mutter&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2018-06-07 13:00+0000\n"
"POT-Creation-Date: 2017-09-29 14:36+0000\n" "PO-Revision-Date: 2018-06-09 11:26+0800\n"
"PO-Revision-Date: 2017-10-01 22:57+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n" "Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n" "Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
"Language: zh_TW\n" "Language: zh_TW\n"
@@ -19,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.0.3\n" "X-Generator: Poedit 2.0.8\n"
#: data/50-mutter-navigation.xml:6 #: data/50-mutter-navigation.xml:6
msgid "Navigation" msgid "Navigation"
@@ -46,134 +45,118 @@ msgid "Move window to last workspace"
msgstr "將視窗移至上一個工作區" msgstr "將視窗移至上一個工作區"
#: data/50-mutter-navigation.xml:24 #: data/50-mutter-navigation.xml:24
msgid "Move window one workspace to the left"
msgstr "將視窗移至左方的工作區"
#: data/50-mutter-navigation.xml:27
msgid "Move window one workspace to the right"
msgstr "將視窗移至右方的工作區"
#: data/50-mutter-navigation.xml:30
msgid "Move window one workspace up" msgid "Move window one workspace up"
msgstr "將視窗移至上方的工作區" msgstr "將視窗移至上方的工作區"
#: data/50-mutter-navigation.xml:33 #: data/50-mutter-navigation.xml:27
msgid "Move window one workspace down" msgid "Move window one workspace down"
msgstr "將視窗移至下方的工作區" msgstr "將視窗移至下方的工作區"
#: data/50-mutter-navigation.xml:36 #: data/50-mutter-navigation.xml:30
msgid "Move window one monitor to the left" msgid "Move window one monitor to the left"
msgstr "將視窗移至左方的螢幕" msgstr "將視窗移至左方的螢幕"
#: data/50-mutter-navigation.xml:39 #: data/50-mutter-navigation.xml:33
msgid "Move window one monitor to the right" msgid "Move window one monitor to the right"
msgstr "將視窗移至右方的螢幕" msgstr "將視窗移至右方的螢幕"
#: data/50-mutter-navigation.xml:42 #: data/50-mutter-navigation.xml:36
msgid "Move window one monitor up" msgid "Move window one monitor up"
msgstr "將視窗移至上方的螢幕" msgstr "將視窗移至上方的螢幕"
#: data/50-mutter-navigation.xml:45 #: data/50-mutter-navigation.xml:39
msgid "Move window one monitor down" msgid "Move window one monitor down"
msgstr "將視窗移至下方的螢幕" msgstr "將視窗移至下方的螢幕"
#: data/50-mutter-navigation.xml:49 #: data/50-mutter-navigation.xml:43
msgid "Switch applications" msgid "Switch applications"
msgstr "切換程式" msgstr "切換程式"
#: data/50-mutter-navigation.xml:54 #: data/50-mutter-navigation.xml:48
msgid "Switch to previous application" msgid "Switch to previous application"
msgstr "切換至上一個應用程式" msgstr "切換至上一個應用程式"
#: data/50-mutter-navigation.xml:58 #: data/50-mutter-navigation.xml:52
msgid "Switch windows" msgid "Switch windows"
msgstr "切換視窗" msgstr "切換視窗"
#: data/50-mutter-navigation.xml:63 #: data/50-mutter-navigation.xml:57
msgid "Switch to previous window" msgid "Switch to previous window"
msgstr "切換至上一個視窗" msgstr "切換至上一個視窗"
#: data/50-mutter-navigation.xml:67 #: data/50-mutter-navigation.xml:61
msgid "Switch windows of an application" msgid "Switch windows of an application"
msgstr "切換程式的視窗" msgstr "切換程式的視窗"
#: data/50-mutter-navigation.xml:72 #: data/50-mutter-navigation.xml:66
msgid "Switch to previous window of an application" msgid "Switch to previous window of an application"
msgstr "切換至上一個應用程式的視窗" msgstr "切換至上一個應用程式的視窗"
#: data/50-mutter-navigation.xml:76 #: data/50-mutter-navigation.xml:70
msgid "Switch system controls" msgid "Switch system controls"
msgstr "切換系統控制" msgstr "切換系統控制"
#: data/50-mutter-navigation.xml:81 #: data/50-mutter-navigation.xml:75
msgid "Switch to previous system control" msgid "Switch to previous system control"
msgstr "切換至上一個系統控制" msgstr "切換至上一個系統控制"
#: data/50-mutter-navigation.xml:85 #: data/50-mutter-navigation.xml:79
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "直接切換視窗" msgstr "直接切換視窗"
#: data/50-mutter-navigation.xml:90 #: data/50-mutter-navigation.xml:84
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "直接切換至上一個視窗" msgstr "直接切換至上一個視窗"
#: data/50-mutter-navigation.xml:94 #: data/50-mutter-navigation.xml:88
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "直接切換程式的視窗" msgstr "直接切換程式的視窗"
#: data/50-mutter-navigation.xml:99 #: data/50-mutter-navigation.xml:93
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "直接切換至上一個程式視窗" msgstr "直接切換至上一個程式視窗"
#: data/50-mutter-navigation.xml:103 #: data/50-mutter-navigation.xml:97
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "直接切換系統控制" msgstr "直接切換系統控制"
#: data/50-mutter-navigation.xml:108 #: data/50-mutter-navigation.xml:102
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "直接切換至上一個系統控制" msgstr "直接切換至上一個系統控制"
#: data/50-mutter-navigation.xml:111 #: data/50-mutter-navigation.xml:105
msgid "Hide all normal windows" msgid "Hide all normal windows"
msgstr "隱藏所有一般視窗" msgstr "隱藏所有一般視窗"
#: data/50-mutter-navigation.xml:114 #: data/50-mutter-navigation.xml:108
msgid "Switch to workspace 1" msgid "Switch to workspace 1"
msgstr "切換至第 1 個工作區" msgstr "切換至第 1 個工作區"
#: data/50-mutter-navigation.xml:117 #: data/50-mutter-navigation.xml:111
msgid "Switch to workspace 2" msgid "Switch to workspace 2"
msgstr "切換至第 2 個工作區" msgstr "切換至第 2 個工作區"
#: data/50-mutter-navigation.xml:120 #: data/50-mutter-navigation.xml:114
msgid "Switch to workspace 3" msgid "Switch to workspace 3"
msgstr "切換至第 3 個工作區" msgstr "切換至第 3 個工作區"
#: data/50-mutter-navigation.xml:123 #: data/50-mutter-navigation.xml:117
msgid "Switch to workspace 4" msgid "Switch to workspace 4"
msgstr "切換至第 4 個工作區" msgstr "切換至第 4 個工作區"
#: data/50-mutter-navigation.xml:126 #: data/50-mutter-navigation.xml:120
msgid "Switch to last workspace" msgid "Switch to last workspace"
msgstr "切換至上一個工作區" msgstr "切換至上一個工作區"
#: data/50-mutter-navigation.xml:129 #: data/50-mutter-navigation.xml:123
msgid "Move to workspace left"
msgstr "移至左方的工作區"
#: data/50-mutter-navigation.xml:132
msgid "Move to workspace right"
msgstr "移至右方的工作區"
#: data/50-mutter-navigation.xml:135
msgid "Move to workspace above" msgid "Move to workspace above"
msgstr "移至上方的工作區" msgstr "移至上方的工作區"
#: data/50-mutter-navigation.xml:138 #: data/50-mutter-navigation.xml:126
msgid "Move to workspace below" msgid "Move to workspace below"
msgstr "移至下方的工作區" msgstr "移至下方的工作區"
#: data/50-mutter-system.xml:6 #: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
msgid "System" msgid "System"
msgstr "系統" msgstr "系統"
@@ -185,6 +168,10 @@ msgstr "顯示執行指令提示"
msgid "Show the activities overview" msgid "Show the activities overview"
msgstr "顯示活動概覽" msgstr "顯示活動概覽"
#: data/50-mutter-wayland.xml:8
msgid "Restore the keyboard shortcuts"
msgstr "重設鍵盤快捷鍵"
#: data/50-mutter-windows.xml:6 #: data/50-mutter-windows.xml:6
msgid "Windows" msgid "Windows"
msgstr "視窗" msgstr "視窗"
@@ -210,54 +197,50 @@ msgid "Restore window"
msgstr "還原視窗" msgstr "還原視窗"
#: data/50-mutter-windows.xml:18 #: data/50-mutter-windows.xml:18
msgid "Toggle shaded state"
msgstr "切換視窗捲起/放下狀態"
#: data/50-mutter-windows.xml:20
msgid "Close window" msgid "Close window"
msgstr "關閉視窗" msgstr "關閉視窗"
#: data/50-mutter-windows.xml:22 #: data/50-mutter-windows.xml:20
msgid "Hide window" msgid "Hide window"
msgstr "隱藏視窗" msgstr "隱藏視窗"
#: data/50-mutter-windows.xml:24 #: data/50-mutter-windows.xml:22
msgid "Move window" msgid "Move window"
msgstr "移動視窗" msgstr "移動視窗"
#: data/50-mutter-windows.xml:26 #: data/50-mutter-windows.xml:24
msgid "Resize window" msgid "Resize window"
msgstr "調整視窗大小" msgstr "調整視窗大小"
#: data/50-mutter-windows.xml:29 #: data/50-mutter-windows.xml:27
msgid "Toggle window on all workspaces or one" msgid "Toggle window on all workspaces or one"
msgstr "切換視窗顯示在所有工作區或是只顯示於其中之一" msgstr "切換視窗顯示在所有工作區或是只顯示於其中之一"
#: data/50-mutter-windows.xml:31 #: data/50-mutter-windows.xml:29
msgid "Raise window if covered, otherwise lower it" msgid "Raise window if covered, otherwise lower it"
msgstr "若被其他視窗遮蔽就抬升它,否則將它降下" msgstr "若被其他視窗遮蔽就抬升它,否則將它降下"
#: data/50-mutter-windows.xml:33 #: data/50-mutter-windows.xml:31
msgid "Raise window above other windows" msgid "Raise window above other windows"
msgstr "令某個視窗覆蓋其它視窗" msgstr "令某個視窗覆蓋其它視窗"
#: data/50-mutter-windows.xml:35 #: data/50-mutter-windows.xml:33
msgid "Lower window below other windows" msgid "Lower window below other windows"
msgstr "遮蔽某個視窗" msgstr "遮蔽某個視窗"
#: data/50-mutter-windows.xml:37 #: data/50-mutter-windows.xml:35
msgid "Maximize window vertically" msgid "Maximize window vertically"
msgstr "將視窗縱向最大化" msgstr "將視窗縱向最大化"
#: data/50-mutter-windows.xml:39 #: data/50-mutter-windows.xml:37
msgid "Maximize window horizontally" msgid "Maximize window horizontally"
msgstr "將視窗橫向最大化" msgstr "將視窗橫向最大化"
#: data/50-mutter-windows.xml:43 #: data/50-mutter-windows.xml:41
msgid "View split on left" msgid "View split on left"
msgstr "檢視分割於左側" msgstr "檢視分割於左側"
#: data/50-mutter-windows.xml:47 #: data/50-mutter-windows.xml:45
msgid "View split on right" msgid "View split on right"
msgstr "檢視分割於右側" msgstr "檢視分割於右側"
@@ -396,32 +379,27 @@ msgid ""
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes " "proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
"mutter default to layout logical monitors in a logical pixel coordinate " "mutter default to layout logical monitors in a logical pixel coordinate "
"space, while scaling monitor framebuffers instead of window content, to " "space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart. • “remote-desktop” — " "manage HiDPI monitors. Does not require a restart."
"enables remote desktop support. To support remote desktop with screen "
"sharing, “screen-cast” must also be enabled. • “screen-cast” — enables "
"screen cast support."
msgstr "" msgstr ""
"若要啟用實驗性功能,請將功能關鍵字加入列表中。置於該功能是否須要重新啟動混成" "若要啟用實驗性功能,請將功能關鍵字加入列表中。置於該功能是否須要重新啟動混成"
"器則視給予的功能而定。任何實驗性功能不一定能用、或是可以調整設定。請不要預期" "器則視給予的功能而定。任何實驗性功能不一定能用、或是可以調整設定。請不要預期"
"在此設定中加入的任何東西未來都能存在。目前可用的關鍵字有: • “scale-monitor-" "在此設定中加入的任何東西未來都能存在。目前可用的關鍵字有: • “scale-monitor-"
"framebuffer” — 讓 mutter 預設採用邏輯像素座標空間的配置邏輯螢幕,而縮放螢幕 " "framebuffer” — 讓 mutter 預設採用邏輯像素座標空間的配置邏輯螢幕,而縮放螢幕 "
"framebuffer 則取代視窗內容以管理 HiDPI 螢幕。不須要重新啟動。 • “remote-" "framebuffer 則取代視窗內容以管理 HiDPI 螢幕。不須要重新啟動。"
"desktop” — 啟用遠端桌面支援。若要支援遠端桌面的螢幕分享則必須也啟用“screen-"
"cast”。• “screen-cast” — 啟用螢幕投放支援。"
#: data/org.gnome.mutter.gschema.xml.in:145 #: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "從分頁彈出項選擇視窗" msgstr "從分頁彈出項選擇視窗"
#: data/org.gnome.mutter.gschema.xml.in:150 #: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "取消分頁彈出項" msgstr "取消分頁彈出項"
#: data/org.gnome.mutter.gschema.xml.in:155 #: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations" msgid "Switch monitor configurations"
msgstr "切換螢幕組態" msgstr "切換螢幕組態"
#: data/org.gnome.mutter.gschema.xml.in:160 #: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration" msgid "Rotates the built-in monitor configuration"
msgstr "旋轉切換內建螢幕組態" msgstr "旋轉切換內建螢幕組態"
@@ -477,10 +455,51 @@ msgstr "切換至 VT 12"
msgid "Re-enable shortcuts" msgid "Re-enable shortcuts"
msgstr "重新啟用快捷鍵" msgstr "重新啟用快捷鍵"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow grabs with Xwayland"
msgstr "在 Xwayland 允許抓取"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"考慮到在 Xwayland 中執行的 X11 應用程序發出的鍵盤抓取。對於在 Wayland 下考慮"
"的 X11 抓取,客戶端也必須送出一個特定的 X11 ClientMessage 到 root 視窗或者在 "
"xwayland-grab-access-rules 鍵白名單其中的應用程式。"
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr "Xwayland 應用程式允許發出鍵盤抓取"
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
"resource class of a given X11 window can be obtained using the command "
"“xprop WM_CLASS”. Wildcards “*” and jokers “?” in the values are supported. "
"Values starting with “!” are blacklisted, which has precedence over the "
"whitelist, to revoke applications from the default system list. The default "
"system list includes the following applications: "
"“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@” Users can break an existing grab by "
"using the specific keyboard shortcut defined by the keybinding key “restore-"
"shortcuts”."
msgstr ""
"列出在 X11 視窗中的這些資源名稱或資源 class 允許或不允許在 Xwayland 底下發出 "
"X11 鍵盤抓取。在已提供的 X11 視窗中的資源名稱或資源 class 可以獲得,只要使用"
"這個指令 xprop WM_CLASS。在數值內的 Wildcard \"*\" 或 joker \"?\" 是受支援"
"的。開始於 \"!\" 的數值會被加入黑名單,優先於白名單,去取消授權來自預設系統清"
"單的應用程式。這個預設的系統清單包含了以下的應用程"
"序:“@XWAYLAND_GRAB_DEFAULT_ACCESS_RULES@”,用戶可以取消一個存在的抓取,透過"
"使用一個具體的鍵盤快捷鍵定義透過這個綁定鍵 restore-shortcuts。"
#. TRANSLATORS: This string refers to a button that switches between #. TRANSLATORS: This string refers to a button that switches between
#. * different modes. #. * different modes.
#. #.
#: src/backends/meta-input-settings.c:2157 #: src/backends/meta-input-settings.c:2325
#, c-format #, c-format
msgid "Mode Switch (Group %d)" msgid "Mode Switch (Group %d)"
msgstr "模式切換( 群組 %d)" msgstr "模式切換( 群組 %d)"
@@ -488,30 +507,30 @@ msgstr "模式切換( 群組 %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets' #. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs. #. * mapping through the available outputs.
#. #.
#: src/backends/meta-input-settings.c:2180 #: src/backends/meta-input-settings.c:2348
msgid "Switch monitor" msgid "Switch monitor"
msgstr "切換螢幕" msgstr "切換螢幕"
#: src/backends/meta-input-settings.c:2182 #: src/backends/meta-input-settings.c:2350
msgid "Show on-screen help" msgid "Show on-screen help"
msgstr "顯示螢幕求助" msgstr "顯示螢幕求助"
#: src/backends/meta-monitor-manager.c:894 #: src/backends/meta-monitor-manager.c:903
msgid "Built-in display" msgid "Built-in display"
msgstr "內建顯示" msgstr "內建顯示"
#: src/backends/meta-monitor-manager.c:917 #: src/backends/meta-monitor-manager.c:926
msgid "Unknown" msgid "Unknown"
msgstr "不明" msgstr "不明"
#: src/backends/meta-monitor-manager.c:919 #: src/backends/meta-monitor-manager.c:928
msgid "Unknown Display" msgid "Unknown Display"
msgstr "不明的顯示器" msgstr "不明的顯示器"
#. TRANSLATORS: this is a monitor vendor name, followed by a #. TRANSLATORS: this is a monitor vendor name, followed by a
#. * size in inches, like 'Dell 15"' #. * size in inches, like 'Dell 15"'
#. #.
#: src/backends/meta-monitor-manager.c:927 #: src/backends/meta-monitor-manager.c:936
#, c-format #, c-format
msgid "%s %s" msgid "%s %s"
msgstr "%s %s" msgstr "%s %s"
@@ -519,7 +538,7 @@ msgstr "%s %s"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel # FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#. This probably means that a non-WM compositor like xcompmgr is running; #. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit #. * we have no way to get it to exit
#: src/compositor/compositor.c:476 #: src/compositor/compositor.c:481
#, c-format #, c-format
msgid "" msgid ""
"Another compositing manager is already running on screen %i on display “%s”." "Another compositing manager is already running on screen %i on display “%s”."
@@ -534,42 +553,46 @@ msgstr "響鈴事件"
msgid "Failed to open X Window System display “%s”\n" msgid "Failed to open X Window System display “%s”\n"
msgstr "無法開啟 X Window 系統畫面「%s」\n" msgstr "無法開啟 X Window 系統畫面「%s」\n"
#: src/core/main.c:189 #: src/core/main.c:190
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "停用到作業階段管理員的連線" msgstr "停用到作業階段管理員的連線"
#: src/core/main.c:195 #: src/core/main.c:196
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "取代執行中的視窗管理員" msgstr "取代執行中的視窗管理員"
#: src/core/main.c:201 #: src/core/main.c:202
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "指定作業階段管理 ID" msgstr "指定作業階段管理 ID"
#: src/core/main.c:206 #: src/core/main.c:207
msgid "X Display to use" msgid "X Display to use"
msgstr "使用的 X 畫面" msgstr "使用的 X 畫面"
#: src/core/main.c:212 #: src/core/main.c:213
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "以 savefile 初始化作業階段" msgstr "以 savefile 初始化作業階段"
#: src/core/main.c:218 #: src/core/main.c:219
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "使用同步方式調用 X 函式" msgstr "使用同步方式調用 X 函式"
#: src/core/main.c:225 #: src/core/main.c:226
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "以 wayland 組合器執行" msgstr "以 wayland 組合器執行"
#: src/core/main.c:231 #: src/core/main.c:232
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "以巢狀組合器執行" msgstr "以巢狀組合器執行"
#: src/core/main.c:239 #: src/core/main.c:240
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "以完全顯示伺服器執行,而非巢狀" msgstr "以完全顯示伺服器執行,而非巢狀"
#: src/core/main.c:246
msgid "Run with X11 backend"
msgstr "透過 X11 後端執行"
#. Translators: %s is a window title #. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:147 #: src/core/meta-close-dialog-default.c:147
#, c-format #, c-format
@@ -622,7 +645,7 @@ msgstr "要使用的 Mutter 外掛程式"
msgid "Workspace %d" msgid "Workspace %d"
msgstr "工作區 %d" msgstr "工作區 %d"
#: src/core/screen.c:582 #: src/core/screen.c:583
#, c-format #, c-format
msgid "" msgid ""
"Display “%s” already has a window manager; try using the --replace option to " "Display “%s” already has a window manager; try using the --replace option to "
@@ -631,7 +654,7 @@ msgstr ""
"畫面「%s」已經有了視窗管理員請嘗試使用 --replace 選項來替換目前的視窗管理" "畫面「%s」已經有了視窗管理員請嘗試使用 --replace 選項來替換目前的視窗管理"
"員。" "員。"
#: src/core/screen.c:667 #: src/core/screen.c:668
#, c-format #, c-format
msgid "Screen %d on display “%s” is invalid\n" msgid "Screen %d on display “%s” is invalid\n"
msgstr "畫面「%2$s」中的第 %1$d 個螢幕無效\n" msgstr "畫面「%2$s」中的第 %1$d 個螢幕無效\n"
@@ -640,12 +663,12 @@ msgstr "畫面「%2$s」中的第 %1$d 個螢幕無效\n"
msgid "Mutter was compiled without support for verbose mode\n" msgid "Mutter was compiled without support for verbose mode\n"
msgstr "編譯 Mutter 時並沒有加入詳細偵錯模式的支援\n" msgstr "編譯 Mutter 時並沒有加入詳細偵錯模式的支援\n"
#: src/wayland/meta-wayland-tablet-pad.c:563 #: src/wayland/meta-wayland-tablet-pad.c:567
#, c-format #, c-format
msgid "Mode Switch: Mode %d" msgid "Mode Switch: Mode %d"
msgstr "模式切換:模式 %d" msgstr "模式切換:模式 %d"
#: src/x11/session.c:1815 #: src/x11/session.c:1818
msgid "" msgid ""
"These windows do not support “save current setup” and will have to be " "These windows do not support “save current setup” and will have to be "
"restarted manually next time you log in." "restarted manually next time you log in."
@@ -656,6 +679,21 @@ msgstr "這些視窗不支援「儲存目前的設定」,必須在下次登入
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s在 %s" msgstr "%s在 %s"
#~ msgid "Move window one workspace to the left"
#~ msgstr "將視窗移至左方的工作區"
#~ msgid "Move window one workspace to the right"
#~ msgstr "將視窗移至右方的工作區"
#~ msgid "Move to workspace left"
#~ msgstr "移至左方的工作區"
#~ msgid "Move to workspace right"
#~ msgstr "移至右方的工作區"
#~ msgid "Toggle shaded state"
#~ msgstr "切換視窗捲起/放下狀態"
#~ msgid "background texture could not be created from file" #~ msgid "background texture could not be created from file"
#~ msgstr "背景材質無法從檔案建立" #~ msgstr "背景材質無法從檔案建立"

View File

@@ -68,6 +68,8 @@ mutter_built_sources += \
gtk-shell-server-protocol.h \ gtk-shell-server-protocol.h \
gtk-primary-selection-protocol.c \ gtk-primary-selection-protocol.c \
gtk-primary-selection-server-protocol.h \ gtk-primary-selection-server-protocol.h \
xdg-shell-protocol.c \
xdg-shell-server-protocol.h \
xdg-shell-unstable-v6-protocol.c \ xdg-shell-unstable-v6-protocol.c \
xdg-shell-unstable-v6-server-protocol.h \ xdg-shell-unstable-v6-server-protocol.h \
relative-pointer-unstable-v1-protocol.c \ relative-pointer-unstable-v1-protocol.c \
@@ -151,7 +153,7 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
backends/meta-pointer-constraint.h \ backends/meta-pointer-constraint.h \
backends/meta-settings.c \ backends/meta-settings.c \
backends/meta-settings-private.h \ backends/meta-settings-private.h \
backends/meta-stage.h \ backends/meta-stage-private.h \
backends/meta-stage.c \ backends/meta-stage.c \
backends/meta-renderer.c \ backends/meta-renderer.c \
backends/meta-renderer.h \ backends/meta-renderer.h \
@@ -159,6 +161,7 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
backends/meta-renderer-view.h \ backends/meta-renderer-view.h \
backends/edid-parse.c \ backends/edid-parse.c \
backends/edid.h \ backends/edid.h \
backends/gsm-inhibitor-flag.h \
backends/x11/meta-backend-x11.c \ backends/x11/meta-backend-x11.c \
backends/x11/meta-backend-x11.h \ backends/x11/meta-backend-x11.h \
backends/x11/meta-barrier-x11.c \ backends/x11/meta-barrier-x11.c \
@@ -181,8 +184,6 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
backends/x11/nested/meta-cursor-renderer-x11-nested.h \ backends/x11/nested/meta-cursor-renderer-x11-nested.h \
backends/x11/nested/meta-renderer-x11-nested.c \ backends/x11/nested/meta-renderer-x11-nested.c \
backends/x11/nested/meta-renderer-x11-nested.h \ backends/x11/nested/meta-renderer-x11-nested.h \
backends/x11/meta-idle-monitor-xsync.c \
backends/x11/meta-idle-monitor-xsync.h \
backends/x11/meta-input-settings-x11.c \ backends/x11/meta-input-settings-x11.c \
backends/x11/meta-input-settings-x11.h \ backends/x11/meta-input-settings-x11.h \
backends/x11/meta-monitor-manager-xrandr.c \ backends/x11/meta-monitor-manager-xrandr.c \
@@ -245,7 +246,7 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES = \
compositor/meta-window-actor.c \ compositor/meta-window-actor.c \
compositor/meta-window-actor-private.h \ compositor/meta-window-actor-private.h \
compositor/meta-window-group.c \ compositor/meta-window-group.c \
compositor/meta-window-group.h \ compositor/meta-window-group-private.h \
compositor/meta-window-shape.c \ compositor/meta-window-shape.c \
compositor/region-utils.c \ compositor/region-utils.c \
compositor/region-utils.h \ compositor/region-utils.h \
@@ -434,6 +435,12 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
wayland/meta-wayland-surface-role-cursor.h \ wayland/meta-wayland-surface-role-cursor.h \
wayland/meta-wayland-surface-role-tablet-cursor.c \ wayland/meta-wayland-surface-role-tablet-cursor.c \
wayland/meta-wayland-surface-role-tablet-cursor.h \ wayland/meta-wayland-surface-role-tablet-cursor.h \
wayland/meta-wayland-actor-surface.c \
wayland/meta-wayland-actor-surface.h \
wayland/meta-wayland-subsurface.c \
wayland/meta-wayland-subsurface.h \
wayland/meta-wayland-shell-surface.c \
wayland/meta-wayland-shell-surface.h \
wayland/meta-wayland-text-input.c \ wayland/meta-wayland-text-input.c \
wayland/meta-wayland-text-input.h \ wayland/meta-wayland-text-input.h \
wayland/meta-wayland-types.h \ wayland/meta-wayland-types.h \
@@ -448,6 +455,8 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
wayland/meta-window-xwayland.h \ wayland/meta-window-xwayland.h \
wayland/meta-wayland-xdg-shell.c \ wayland/meta-wayland-xdg-shell.c \
wayland/meta-wayland-xdg-shell.h \ wayland/meta-wayland-xdg-shell.h \
wayland/meta-wayland-legacy-xdg-shell.c \
wayland/meta-wayland-legacy-xdg-shell.h \
wayland/meta-wayland-wl-shell.c \ wayland/meta-wayland-wl-shell.c \
wayland/meta-wayland-wl-shell.h \ wayland/meta-wayland-wl-shell.h \
wayland/meta-wayland-gtk-shell.c \ wayland/meta-wayland-gtk-shell.c \
@@ -477,8 +486,6 @@ libmutter_@LIBMUTTER_API_VERSION@_la_SOURCES += \
backends/native/meta-default-modes.h \ backends/native/meta-default-modes.h \
backends/native/meta-gpu-kms.c \ backends/native/meta-gpu-kms.c \
backends/native/meta-gpu-kms.h \ backends/native/meta-gpu-kms.h \
backends/native/meta-idle-monitor-native.c \
backends/native/meta-idle-monitor-native.h \
backends/native/meta-input-settings-native.c \ backends/native/meta-input-settings-native.c \
backends/native/meta-input-settings-native.h \ backends/native/meta-input-settings-native.h \
backends/native/meta-monitor-manager-kms.c \ backends/native/meta-monitor-manager-kms.c \
@@ -536,7 +543,9 @@ libmutterinclude_headers = \
meta/meta-settings.h \ meta/meta-settings.h \
meta/meta-shaped-texture.h \ meta/meta-shaped-texture.h \
meta/meta-shadow-factory.h \ meta/meta-shadow-factory.h \
meta/meta-stage.h \
meta/meta-window-actor.h \ meta/meta-window-actor.h \
meta/meta-window-group.h \
meta/meta-window-shape.h \ meta/meta-window-shape.h \
meta/prefs.h \ meta/prefs.h \
meta/screen.h \ meta/screen.h \
@@ -736,11 +745,11 @@ backends/native/meta-default-modes.h: backends/native/gen-default-modes.py Makef
.SECONDEXPANSION: .SECONDEXPANSION:
define protostability define protostability
$(shell echo $1 | sed 's/.*\(\<unstable\>\|\<stable\>\).*/\1/') $(if $(findstring unstable,$1),unstable,stable)
endef endef
define protoname define protoname
$(shell echo $1 | sed 's/\([a-z\-]\+\)-[a-z]\+-v[0-9]\+/\1/') $(shell echo $1 | sed 's/\([a-z\-]\{1,\}\)-[a-z]\{1,\}-v[0-9]\{1,\}/\1/')
endef endef
%-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml %-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
@@ -751,14 +760,3 @@ endef
$(AM_V_GEN)$(WAYLAND_SCANNER) code $< $@ $(AM_V_GEN)$(WAYLAND_SCANNER) code $< $@
%-server-protocol.h : $(srcdir)/wayland/protocol/%.xml %-server-protocol.h : $(srcdir)/wayland/protocol/%.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header $< $@ $(AM_V_GEN)$(WAYLAND_SCANNER) server-header $< $@
keyboard-shortcuts-inhibit-unstable-v1-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
keyboard-shortcuts-inhibit-unstable-v1-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@
xdg-output-unstable-v1-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/xdg-output/xdg-output-unstable-v1.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
xdg-output-unstable-v1-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/xdg-output/xdg-output-unstable-v1.xml
xwayland-keyboard-grab-unstable-v1-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@
xwayland-keyboard-grab-unstable-v1-server-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml
$(AM_V_GEN)$(WAYLAND_SCANNER) server-header < $< > $@

View File

@@ -0,0 +1,36 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
*
* Copyright (C) 2008 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GSM_INHIBITOR_FLAG_H__
#define __GSM_INHIBITOR_FLAG_H__
#include <glib-object.h>
G_BEGIN_DECLS
typedef enum {
GSM_INHIBITOR_FLAG_LOGOUT = 1 << 0,
GSM_INHIBITOR_FLAG_SWITCH_USER = 1 << 1,
GSM_INHIBITOR_FLAG_SUSPEND = 1 << 2,
GSM_INHIBITOR_FLAG_IDLE = 1 << 3,
GSM_INHIBITOR_FLAG_AUTOMOUNT = 1 << 4
} GsmInhibitorFlag;
G_END_DECLS
#endif /* __GSM_INHIBITOR_FLAG_H__ */

View File

@@ -59,8 +59,6 @@ struct _MetaBackendClass
void (* post_init) (MetaBackend *backend); void (* post_init) (MetaBackend *backend);
MetaIdleMonitor * (* create_idle_monitor) (MetaBackend *backend,
int device_id);
MetaMonitorManager * (* create_monitor_manager) (MetaBackend *backend, MetaMonitorManager * (* create_monitor_manager) (MetaBackend *backend,
GError **error); GError **error);
MetaCursorRenderer * (* create_cursor_renderer) (MetaBackend *backend); MetaCursorRenderer * (* create_cursor_renderer) (MetaBackend *backend);

View File

@@ -34,7 +34,7 @@
#include "meta-input-settings-private.h" #include "meta-input-settings-private.h"
#include "backends/x11/meta-backend-x11.h" #include "backends/x11/meta-backend-x11.h"
#include "meta-cursor-tracker-private.h" #include "meta-cursor-tracker-private.h"
#include "meta-stage.h" #include "meta-stage-private.h"
#ifdef HAVE_REMOTE_DESKTOP #ifdef HAVE_REMOTE_DESKTOP
#include "backends/meta-dbus-session-watcher.h" #include "backends/meta-dbus-session-watcher.h"
@@ -110,6 +110,11 @@ struct _MetaBackendPrivate
MetaPointerConstraint *client_pointer_constraint; MetaPointerConstraint *client_pointer_constraint;
MetaDnd *dnd; MetaDnd *dnd;
UpClient *up_client;
guint sleep_signal_id;
GCancellable *cancellable;
GDBusConnection *system_bus;
}; };
typedef struct _MetaBackendPrivate MetaBackendPrivate; typedef struct _MetaBackendPrivate MetaBackendPrivate;
@@ -136,6 +141,13 @@ meta_backend_finalize (GObject *object)
g_clear_object (&priv->dbus_session_watcher); g_clear_object (&priv->dbus_session_watcher);
#endif #endif
g_object_unref (priv->up_client);
if (priv->sleep_signal_id)
g_dbus_connection_signal_unsubscribe (priv->system_bus, priv->sleep_signal_id);
g_cancellable_cancel (priv->cancellable);
g_clear_object (&priv->cancellable);
g_clear_object (&priv->system_bus);
if (priv->device_update_idle_id) if (priv->device_update_idle_id)
g_source_remove (priv->device_update_idle_id); g_source_remove (priv->device_update_idle_id);
@@ -158,7 +170,7 @@ meta_backend_sync_screen_size (MetaBackend *backend)
} }
static void static void
center_pointer (MetaBackend *backend) reset_pointer_position (MetaBackend *backend)
{ {
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
MetaMonitorManager *monitor_manager = priv->monitor_manager; MetaMonitorManager *monitor_manager = priv->monitor_manager;
@@ -167,9 +179,11 @@ center_pointer (MetaBackend *backend)
primary = primary =
meta_monitor_manager_get_primary_logical_monitor (monitor_manager); meta_monitor_manager_get_primary_logical_monitor (monitor_manager);
/* Move the pointer out of the way to avoid hovering over reactive
* elements (e.g. users list at login) causing undesired behaviour. */
meta_backend_warp_pointer (backend, meta_backend_warp_pointer (backend,
primary->rect.x + primary->rect.width / 2, primary->rect.x + primary->rect.width * 0.9,
primary->rect.y + primary->rect.height / 2); primary->rect.y + primary->rect.height * 0.9);
} }
void void
@@ -192,7 +206,7 @@ meta_backend_monitors_changed (MetaBackend *backend)
!priv->is_pointer_position_initialized) && !priv->is_pointer_position_initialized) &&
!meta_monitor_manager_is_headless (monitor_manager)) !meta_monitor_manager_is_headless (monitor_manager))
{ {
center_pointer (backend); reset_pointer_position (backend);
priv->is_pointer_position_initialized = TRUE; priv->is_pointer_position_initialized = TRUE;
} }
} }
@@ -222,7 +236,9 @@ static MetaIdleMonitor *
meta_backend_create_idle_monitor (MetaBackend *backend, meta_backend_create_idle_monitor (MetaBackend *backend,
int device_id) int device_id)
{ {
return META_BACKEND_GET_CLASS (backend)->create_idle_monitor (backend, device_id); return g_object_new (META_TYPE_IDLE_MONITOR,
"device-id", device_id,
NULL);
} }
static void static void
@@ -402,28 +418,6 @@ meta_backend_create_input_settings (MetaBackend *backend)
return META_BACKEND_GET_CLASS (backend)->create_input_settings (backend); return META_BACKEND_GET_CLASS (backend)->create_input_settings (backend);
} }
#ifdef HAVE_REMOTE_DESKTOP
static gboolean
is_screen_cast_enabled (MetaBackend *backend)
{
MetaSettings *settings = meta_backend_get_settings (backend);
return meta_settings_is_experimental_feature_enabled (
settings,
META_EXPERIMENTAL_FEATURE_SCREEN_CAST);
}
static gboolean
is_remote_desktop_enabled (MetaBackend *backend)
{
MetaSettings *settings = meta_backend_get_settings (backend);
return meta_settings_is_experimental_feature_enabled (
settings,
META_EXPERIMENTAL_FEATURE_REMOTE_DESKTOP);
}
#endif /* HAVE_REMOTE_DESKTOP */
static void static void
meta_backend_real_post_init (MetaBackend *backend) meta_backend_real_post_init (MetaBackend *backend)
{ {
@@ -457,15 +451,13 @@ meta_backend_real_post_init (MetaBackend *backend)
#ifdef HAVE_REMOTE_DESKTOP #ifdef HAVE_REMOTE_DESKTOP
priv->dbus_session_watcher = g_object_new (META_TYPE_DBUS_SESSION_WATCHER, NULL); priv->dbus_session_watcher = g_object_new (META_TYPE_DBUS_SESSION_WATCHER, NULL);
if (is_screen_cast_enabled (backend)) priv->screen_cast = meta_screen_cast_new (priv->dbus_session_watcher);
priv->screen_cast = meta_screen_cast_new (priv->dbus_session_watcher); priv->remote_desktop = meta_remote_desktop_new (priv->dbus_session_watcher);
if (is_remote_desktop_enabled (backend))
priv->remote_desktop = meta_remote_desktop_new (priv->dbus_session_watcher);
#endif /* HAVE_REMOTE_DESKTOP */ #endif /* HAVE_REMOTE_DESKTOP */
if (!meta_monitor_manager_is_headless (priv->monitor_manager)) if (!meta_monitor_manager_is_headless (priv->monitor_manager))
{ {
center_pointer (backend); reset_pointer_position (backend);
priv->is_pointer_position_initialized = TRUE; priv->is_pointer_position_initialized = TRUE;
} }
} }
@@ -552,26 +544,6 @@ meta_backend_class_init (MetaBackendClass *klass)
stage_views_disabled = g_strcmp0 (mutter_stage_views, "0") == 0; stage_views_disabled = g_strcmp0 (mutter_stage_views, "0") == 0;
} }
static void
experimental_features_changed (MetaSettings *settings,
MetaExperimentalFeature old_experimental_features,
MetaBackend *backend)
{
#ifdef HAVE_REMOTE_DESKTOP
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
if (is_screen_cast_enabled (backend) && !priv->screen_cast)
priv->screen_cast = meta_screen_cast_new (priv->dbus_session_watcher);
else if (!is_screen_cast_enabled (backend))
g_clear_object (&priv->screen_cast);
if (is_remote_desktop_enabled (backend) && !priv->remote_desktop)
priv->remote_desktop = meta_remote_desktop_new (priv->dbus_session_watcher);
else if (!is_remote_desktop_enabled (backend))
g_clear_object (&priv->remote_desktop);
#endif /* HAVE_REMOTE_DESKTOP */
}
static MetaMonitorManager * static MetaMonitorManager *
meta_backend_create_monitor_manager (MetaBackend *backend, meta_backend_create_monitor_manager (MetaBackend *backend,
GError **error) GError **error)
@@ -590,6 +562,61 @@ meta_backend_create_renderer (MetaBackend *backend,
return META_BACKEND_GET_CLASS (backend)->create_renderer (backend, error); return META_BACKEND_GET_CLASS (backend)->create_renderer (backend, error);
} }
static void
lid_is_closed_changed_cb (UpClient *client,
GParamSpec *pspec,
gpointer user_data)
{
if (up_client_get_lid_is_closed (client))
return;
meta_idle_monitor_reset_idletime (meta_idle_monitor_get_core ());
}
static void
prepare_for_sleep_cb (GDBusConnection *connection,
const gchar *sender_name,
const gchar *object_path,
const gchar *interface_name,
const gchar *signal_name,
GVariant *parameters,
gpointer user_data)
{
gboolean suspending;
g_variant_get (parameters, "(b)", &suspending);
if (suspending)
return;
meta_idle_monitor_reset_idletime (meta_idle_monitor_get_core ());
}
static void
system_bus_gotten_cb (GObject *object,
GAsyncResult *res,
gpointer user_data)
{
MetaBackendPrivate *priv;
GDBusConnection *bus;
bus = g_bus_get_finish (res, NULL);
if (!bus)
return;
priv = meta_backend_get_instance_private (user_data);
priv->system_bus = bus;
priv->sleep_signal_id =
g_dbus_connection_signal_subscribe (priv->system_bus,
"org.freedesktop.login1",
"org.freedesktop.login1.Manager",
"PrepareForSleep",
"/org/freedesktop/login1",
NULL,
G_DBUS_SIGNAL_FLAGS_NONE,
prepare_for_sleep_cb,
NULL,
NULL);
}
static gboolean static gboolean
meta_backend_initable_init (GInitable *initable, meta_backend_initable_init (GInitable *initable,
GCancellable *cancellable, GCancellable *cancellable,
@@ -599,9 +626,6 @@ meta_backend_initable_init (GInitable *initable,
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
priv->settings = meta_settings_new (backend); priv->settings = meta_settings_new (backend);
g_signal_connect (priv->settings, "experimental-features-changed",
G_CALLBACK (experimental_features_changed),
backend);
priv->egl = g_object_new (META_TYPE_EGL, NULL); priv->egl = g_object_new (META_TYPE_EGL, NULL);
@@ -619,6 +643,16 @@ meta_backend_initable_init (GInitable *initable,
priv->dnd = g_object_new (META_TYPE_DND, NULL); priv->dnd = g_object_new (META_TYPE_DND, NULL);
priv->up_client = up_client_new ();
g_signal_connect (priv->up_client, "notify::lid-is-closed",
G_CALLBACK (lid_is_closed_changed_cb), NULL);
priv->cancellable = g_cancellable_new ();
g_bus_get (G_BUS_TYPE_SYSTEM,
priv->cancellable,
system_bus_gotten_cb,
backend);
return TRUE; return TRUE;
} }

View File

@@ -33,7 +33,7 @@
#include <cogl/cogl.h> #include <cogl/cogl.h>
#include <clutter/clutter.h> #include <clutter/clutter.h>
#include "meta-stage.h" #include "meta-stage-private.h"
struct _MetaCursorRendererPrivate struct _MetaCursorRendererPrivate
{ {
@@ -264,6 +264,18 @@ meta_cursor_renderer_set_position (MetaCursorRenderer *renderer,
update_cursor (renderer, priv->displayed_cursor); update_cursor (renderer, priv->displayed_cursor);
} }
ClutterPoint
meta_cursor_renderer_get_position (MetaCursorRenderer *renderer)
{
MetaCursorRendererPrivate *priv =
meta_cursor_renderer_get_instance_private (renderer);
return (ClutterPoint) {
.x = priv->current_x,
.y = priv->current_y
};
}
MetaCursorSprite * MetaCursorSprite *
meta_cursor_renderer_get_cursor (MetaCursorRenderer *renderer) meta_cursor_renderer_get_cursor (MetaCursorRenderer *renderer)
{ {

View File

@@ -62,6 +62,7 @@ void meta_cursor_renderer_set_cursor (MetaCursorRenderer *renderer,
void meta_cursor_renderer_set_position (MetaCursorRenderer *renderer, void meta_cursor_renderer_set_position (MetaCursorRenderer *renderer,
float x, float x,
float y); float y);
ClutterPoint meta_cursor_renderer_get_position (MetaCursorRenderer *renderer);
void meta_cursor_renderer_force_update (MetaCursorRenderer *renderer); void meta_cursor_renderer_force_update (MetaCursorRenderer *renderer);
MetaCursorSprite * meta_cursor_renderer_get_cursor (MetaCursorRenderer *renderer); MetaCursorSprite * meta_cursor_renderer_get_cursor (MetaCursorRenderer *renderer);

View File

@@ -266,11 +266,31 @@ meta_egl_get_proc_address (MetaEgl *egl,
} }
gboolean gboolean
meta_egl_choose_config (MetaEgl *egl, meta_egl_get_config_attrib (MetaEgl *egl,
EGLDisplay display, EGLDisplay display,
const EGLint *attrib_list, EGLConfig config,
EGLConfig *chosen_config, EGLint attribute,
GError **error) EGLint *value,
GError **error)
{
if (!eglGetConfigAttrib (display,
config,
attribute,
value))
{
set_egl_error (error);
return FALSE;
}
return TRUE;
}
EGLConfig *
meta_egl_choose_all_configs (MetaEgl *egl,
EGLDisplay display,
const EGLint *attrib_list,
EGLint *out_num_configs,
GError **error)
{ {
EGLint num_configs; EGLint num_configs;
EGLConfig *configs; EGLConfig *configs;
@@ -299,6 +319,60 @@ meta_egl_choose_config (MetaEgl *egl,
return FALSE; return FALSE;
} }
if (num_matches == 0)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"No matching EGL configs");
g_free (configs);
return NULL;
}
*out_num_configs = num_configs;
return configs;
}
gboolean
meta_egl_choose_first_config (MetaEgl *egl,
EGLDisplay display,
const EGLint *attrib_list,
EGLConfig *chosen_config,
GError **error)
{
EGLint num_configs;
EGLConfig *configs;
EGLint num_matches;
if (!eglGetConfigs (display, NULL, 0, &num_configs))
{
set_egl_error (error);
return FALSE;
}
if (num_configs < 1)
{
g_set_error (error, G_IO_ERROR,
G_IO_ERROR_FAILED,
"No EGL configurations available");
return FALSE;
}
configs = g_new0 (EGLConfig, num_configs);
if (!eglChooseConfig (display, attrib_list, configs, num_configs, &num_matches))
{
g_free (configs);
set_egl_error (error);
return FALSE;
}
if (num_matches == 0)
{
g_free (configs);
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"No matching EGLConfig found");
return FALSE;
}
/* /*
* We don't have any preference specified yet, so lets choose the first one. * We don't have any preference specified yet, so lets choose the first one.
*/ */

View File

@@ -56,11 +56,24 @@ gpointer meta_egl_get_proc_address (MetaEgl *egl,
const char *procname, const char *procname,
GError **error); GError **error);
gboolean meta_egl_choose_config (MetaEgl *egl, gboolean meta_egl_choose_first_config (MetaEgl *egl,
EGLDisplay display, EGLDisplay display,
const EGLint *attrib_list, const EGLint *attrib_list,
EGLConfig *chosen_config, EGLConfig *chosen_config,
GError **error); GError **error);
gboolean meta_egl_get_config_attrib (MetaEgl *egl,
EGLDisplay display,
EGLConfig config,
EGLint attribute,
EGLint *value,
GError **error);
EGLConfig * meta_egl_choose_all_configs (MetaEgl *egl,
EGLDisplay display,
const EGLint *attrib_list,
EGLint *out_num_configs,
GError **error);
EGLContext meta_egl_create_context (MetaEgl *egl, EGLContext meta_egl_create_context (MetaEgl *egl,
EGLDisplay display, EGLDisplay display,

View File

@@ -24,6 +24,7 @@
#include "meta-idle-monitor-dbus.h" #include "meta-idle-monitor-dbus.h"
#include <meta/meta-idle-monitor.h> #include <meta/meta-idle-monitor.h>
#include <backends/meta-idle-monitor-private.h>
#include "meta-dbus-idle-monitor.h" #include "meta-dbus-idle-monitor.h"
#include <clutter/clutter.h> #include <clutter/clutter.h>
@@ -43,6 +44,26 @@ handle_get_idletime (MetaDBusIdleMonitor *skeleton,
return TRUE; return TRUE;
} }
static gboolean
handle_reset_idletime (MetaDBusIdleMonitor *skeleton,
GDBusMethodInvocation *invocation,
MetaIdleMonitor *monitor)
{
if (!g_getenv ("MUTTER_DEBUG_RESET_IDLETIME"))
{
g_dbus_method_invocation_return_error_literal (invocation,
G_DBUS_ERROR,
G_DBUS_ERROR_UNKNOWN_METHOD,
"No such method");
return FALSE;
}
meta_idle_monitor_reset_idletime (meta_idle_monitor_get_core ());
meta_dbus_idle_monitor_complete_reset_idletime (skeleton, invocation);
return TRUE;
}
typedef struct { typedef struct {
MetaDBusIdleMonitor *dbus_monitor; MetaDBusIdleMonitor *dbus_monitor;
MetaIdleMonitor *monitor; MetaIdleMonitor *monitor;
@@ -173,6 +194,8 @@ create_monitor_skeleton (GDBusObjectManagerServer *manager,
G_CALLBACK (handle_add_user_active_watch), monitor, 0); G_CALLBACK (handle_add_user_active_watch), monitor, 0);
g_signal_connect_object (skeleton, "handle-remove-watch", g_signal_connect_object (skeleton, "handle-remove-watch",
G_CALLBACK (handle_remove_watch), monitor, 0); G_CALLBACK (handle_remove_watch), monitor, 0);
g_signal_connect_object (skeleton, "handle-reset-idletime",
G_CALLBACK (handle_reset_idletime), monitor, 0);
g_signal_connect_object (skeleton, "handle-get-idletime", g_signal_connect_object (skeleton, "handle-get-idletime",
G_CALLBACK (handle_get_idletime), monitor, 0); G_CALLBACK (handle_get_idletime), monitor, 0);

View File

@@ -26,9 +26,6 @@
#include <meta/meta-idle-monitor.h> #include <meta/meta-idle-monitor.h>
#include "display-private.h" #include "display-private.h"
#include <X11/Xlib.h>
#include <X11/extensions/sync.h>
typedef struct typedef struct
{ {
MetaIdleMonitor *monitor; MetaIdleMonitor *monitor;
@@ -38,28 +35,26 @@ typedef struct
GDestroyNotify notify; GDestroyNotify notify;
guint64 timeout_msec; guint64 timeout_msec;
int idle_source_id; int idle_source_id;
GSource *timeout_source;
} MetaIdleMonitorWatch; } MetaIdleMonitorWatch;
struct _MetaIdleMonitor struct _MetaIdleMonitor
{ {
GObject parent_instance; GObject parent_instance;
GDBusProxy *session_proxy;
gboolean inhibited;
GHashTable *watches; GHashTable *watches;
int device_id; int device_id;
guint64 last_event_time;
}; };
struct _MetaIdleMonitorClass struct _MetaIdleMonitorClass
{ {
GObjectClass parent_class; GObjectClass parent_class;
gint64 (*get_idletime) (MetaIdleMonitor *monitor);
MetaIdleMonitorWatch * (*make_watch) (MetaIdleMonitor *monitor,
guint64 timeout_msec,
MetaIdleMonitorWatchFunc callback,
gpointer user_data,
GDestroyNotify notify);
}; };
void _meta_idle_monitor_watch_fire (MetaIdleMonitorWatch *watch); void _meta_idle_monitor_watch_fire (MetaIdleMonitorWatch *watch);
void meta_idle_monitor_reset_idletime (MetaIdleMonitor *monitor);
#endif /* META_IDLE_MONITOR_PRIVATE_H */ #endif /* META_IDLE_MONITOR_PRIVATE_H */

View File

@@ -36,6 +36,7 @@
#include <meta/util.h> #include <meta/util.h>
#include <meta/main.h> #include <meta/main.h>
#include <meta/meta-idle-monitor.h> #include <meta/meta-idle-monitor.h>
#include "gsm-inhibitor-flag.h"
#include "meta-idle-monitor-private.h" #include "meta-idle-monitor-private.h"
#include "meta-idle-monitor-dbus.h" #include "meta-idle-monitor-dbus.h"
#include "meta-backend-private.h" #include "meta-backend-private.h"
@@ -87,6 +88,7 @@ meta_idle_monitor_dispose (GObject *object)
MetaIdleMonitor *monitor = META_IDLE_MONITOR (object); MetaIdleMonitor *monitor = META_IDLE_MONITOR (object);
g_clear_pointer (&monitor->watches, g_hash_table_destroy); g_clear_pointer (&monitor->watches, g_hash_table_destroy);
g_clear_object (&monitor->session_proxy);
G_OBJECT_CLASS (meta_idle_monitor_parent_class)->dispose (object); G_OBJECT_CLASS (meta_idle_monitor_parent_class)->dispose (object);
} }
@@ -151,9 +153,118 @@ meta_idle_monitor_class_init (MetaIdleMonitorClass *klass)
g_object_class_install_property (object_class, PROP_DEVICE_ID, obj_props[PROP_DEVICE_ID]); g_object_class_install_property (object_class, PROP_DEVICE_ID, obj_props[PROP_DEVICE_ID]);
} }
static void
free_watch (gpointer data)
{
MetaIdleMonitorWatch *watch = (MetaIdleMonitorWatch *) data;
MetaIdleMonitor *monitor = watch->monitor;
g_object_ref (monitor);
if (watch->idle_source_id)
{
g_source_remove (watch->idle_source_id);
watch->idle_source_id = 0;
}
if (watch->notify != NULL)
watch->notify (watch->user_data);
if (watch->timeout_source != NULL)
g_source_destroy (watch->timeout_source);
g_object_unref (monitor);
g_slice_free (MetaIdleMonitorWatch, watch);
}
static void
update_inhibited_watch (gpointer key,
gpointer value,
gpointer user_data)
{
MetaIdleMonitor *monitor = user_data;
MetaIdleMonitorWatch *watch = value;
if (!watch->timeout_source)
return;
if (monitor->inhibited)
{
g_source_set_ready_time (watch->timeout_source, -1);
}
else
{
g_source_set_ready_time (watch->timeout_source,
monitor->last_event_time +
watch->timeout_msec * 1000);
}
}
static void
update_inhibited (MetaIdleMonitor *monitor,
gboolean inhibited)
{
if (inhibited == monitor->inhibited)
return;
g_hash_table_foreach (monitor->watches,
update_inhibited_watch,
monitor);
}
static void
meta_idle_monitor_inhibited_actions_changed (GDBusProxy *session,
GVariant *changed,
char **invalidated,
gpointer user_data)
{
MetaIdleMonitor *monitor = user_data;
GVariant *v;
v = g_variant_lookup_value (changed, "InhibitedActions", G_VARIANT_TYPE_UINT32);
if (v)
{
gboolean inhibited;
inhibited = g_variant_get_uint32 (v) & GSM_INHIBITOR_FLAG_IDLE;
g_variant_unref (v);
if (!inhibited)
monitor->last_event_time = g_get_monotonic_time ();
update_inhibited (monitor, inhibited);
}
}
static void static void
meta_idle_monitor_init (MetaIdleMonitor *monitor) meta_idle_monitor_init (MetaIdleMonitor *monitor)
{ {
GVariant *v;
monitor->watches = g_hash_table_new_full (NULL, NULL, NULL, free_watch);
monitor->last_event_time = g_get_monotonic_time ();
/* Monitor inhibitors */
monitor->session_proxy =
g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS |
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
NULL,
"org.gnome.SessionManager",
"/org/gnome/SessionManager",
"org.gnome.SessionManager",
NULL,
NULL);
if (!monitor->session_proxy)
return;
g_signal_connect (monitor->session_proxy, "g-properties-changed",
G_CALLBACK (meta_idle_monitor_inhibited_actions_changed),
monitor);
v = g_dbus_proxy_get_cached_property (monitor->session_proxy,
"InhibitedActions");
monitor->inhibited = g_variant_get_uint32 (v) & GSM_INHIBITOR_FLAG_IDLE;
g_variant_unref (v);
} }
/** /**
@@ -185,6 +296,36 @@ meta_idle_monitor_get_for_device (int device_id)
return meta_backend_get_idle_monitor (backend, device_id); return meta_backend_get_idle_monitor (backend, device_id);
} }
static guint32
get_next_watch_serial (void)
{
static guint32 serial = 0;
g_atomic_int_inc (&serial);
return serial;
}
static gboolean
idle_monitor_dispatch_timeout (GSource *source,
GSourceFunc callback,
gpointer user_data)
{
MetaIdleMonitorWatch *watch = (MetaIdleMonitorWatch *) user_data;
_meta_idle_monitor_watch_fire (watch);
g_source_set_ready_time (watch->timeout_source, -1);
return TRUE;
}
static GSourceFuncs idle_monitor_source_funcs = {
.prepare = NULL,
.check = NULL,
.dispatch = idle_monitor_dispatch_timeout,
.finalize = NULL,
};
static MetaIdleMonitorWatch * static MetaIdleMonitorWatch *
make_watch (MetaIdleMonitor *monitor, make_watch (MetaIdleMonitor *monitor,
guint64 timeout_msec, guint64 timeout_msec,
@@ -194,11 +335,32 @@ make_watch (MetaIdleMonitor *monitor,
{ {
MetaIdleMonitorWatch *watch; MetaIdleMonitorWatch *watch;
watch = META_IDLE_MONITOR_GET_CLASS (monitor)->make_watch (monitor, watch = g_slice_new0 (MetaIdleMonitorWatch);
timeout_msec,
callback, watch->monitor = monitor;
user_data, watch->id = get_next_watch_serial ();
notify); watch->callback = callback;
watch->user_data = user_data;
watch->notify = notify;
watch->timeout_msec = timeout_msec;
if (timeout_msec != 0)
{
GSource *source = g_source_new (&idle_monitor_source_funcs,
sizeof (GSource));
g_source_set_callback (source, NULL, watch, NULL);
if (!monitor->inhibited)
{
g_source_set_ready_time (source,
monitor->last_event_time +
timeout_msec * 1000);
}
g_source_attach (source, NULL);
g_source_unref (source);
watch->timeout_source = source;
}
g_hash_table_insert (monitor->watches, g_hash_table_insert (monitor->watches,
GUINT_TO_POINTER (watch->id), GUINT_TO_POINTER (watch->id),
@@ -314,5 +476,39 @@ meta_idle_monitor_remove_watch (MetaIdleMonitor *monitor,
gint64 gint64
meta_idle_monitor_get_idletime (MetaIdleMonitor *monitor) meta_idle_monitor_get_idletime (MetaIdleMonitor *monitor)
{ {
return META_IDLE_MONITOR_GET_CLASS (monitor)->get_idletime (monitor); return (g_get_monotonic_time () - monitor->last_event_time) / 1000;
}
void
meta_idle_monitor_reset_idletime (MetaIdleMonitor *monitor)
{
GList *node, *watch_ids;
monitor->last_event_time = g_get_monotonic_time ();
watch_ids = g_hash_table_get_keys (monitor->watches);
for (node = watch_ids; node != NULL; node = node->next)
{
guint watch_id = GPOINTER_TO_UINT (node->data);
MetaIdleMonitorWatch *watch;
watch = g_hash_table_lookup (monitor->watches,
GUINT_TO_POINTER (watch_id));
if (!watch)
continue;
if (watch->timeout_msec == 0)
{
_meta_idle_monitor_watch_fire ((MetaIdleMonitorWatch *) watch);
}
else
{
g_source_set_ready_time (watch->timeout_source,
monitor->last_event_time +
watch->timeout_msec * 1000);
}
}
g_list_free (watch_ids);
} }

View File

@@ -1088,7 +1088,7 @@ meta_input_settings_changed_cb (GSettings *settings,
update_device_natural_scroll (input_settings, NULL); update_device_natural_scroll (input_settings, NULL);
else if (strcmp (key, "tap-to-click") == 0) else if (strcmp (key, "tap-to-click") == 0)
update_touchpad_tap_enabled (input_settings, NULL); update_touchpad_tap_enabled (input_settings, NULL);
else if (strcmp (key, "tap-and_drag") == 0) else if (strcmp (key, "tap-and-drag") == 0)
update_touchpad_tap_and_drag_enabled (input_settings, NULL); update_touchpad_tap_and_drag_enabled (input_settings, NULL);
else if (strcmp(key, "disable-while-typing") == 0) else if (strcmp(key, "disable-while-typing") == 0)
update_touchpad_disable_while_typing (input_settings, NULL); update_touchpad_disable_while_typing (input_settings, NULL);

View File

@@ -89,6 +89,9 @@ static gboolean
meta_monitor_manager_is_config_complete (MetaMonitorManager *manager, meta_monitor_manager_is_config_complete (MetaMonitorManager *manager,
MetaMonitorsConfig *config); MetaMonitorsConfig *config);
static MetaMonitor *
meta_monitor_manager_get_active_monitor (MetaMonitorManager *manager);
MetaBackend * MetaBackend *
meta_monitor_manager_get_backend (MetaMonitorManager *manager) meta_monitor_manager_get_backend (MetaMonitorManager *manager)
{ {
@@ -198,13 +201,17 @@ calculate_monitor_scale (MetaMonitorManager *manager,
static float static float
derive_calculated_global_scale (MetaMonitorManager *manager) derive_calculated_global_scale (MetaMonitorManager *manager)
{ {
MetaMonitor *primary_monitor; MetaMonitor *monitor = NULL;
primary_monitor = meta_monitor_manager_get_primary_monitor (manager); monitor = meta_monitor_manager_get_primary_monitor (manager);
if (!primary_monitor)
if (!monitor || !meta_monitor_is_active (monitor))
monitor = meta_monitor_manager_get_active_monitor (manager);
if (!monitor)
return 1.0; return 1.0;
return calculate_monitor_scale (manager, primary_monitor); return calculate_monitor_scale (manager, monitor);
} }
static float static float
@@ -578,8 +585,6 @@ meta_monitor_manager_ensure_configured (MetaMonitorManager *manager)
&error)) &error))
{ {
g_clear_object (&config); g_clear_object (&config);
g_warning ("Failed to use linear monitor configuration: %s",
error->message);
g_clear_error (&error); g_clear_error (&error);
} }
else else
@@ -597,8 +602,6 @@ meta_monitor_manager_ensure_configured (MetaMonitorManager *manager)
&error)) &error))
{ {
g_clear_object (&config); g_clear_object (&config);
g_warning ("Failed to use fallback monitor configuration: %s",
error->message);
g_clear_error (&error); g_clear_error (&error);
} }
else else
@@ -1032,7 +1035,7 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
NULL /* properties */); NULL /* properties */);
} }
for (l = combined_outputs; l; l = l->next) for (l = combined_outputs, i = 0; l; l = l->next, i++)
{ {
MetaOutput *output = l->data; MetaOutput *output = l->data;
GVariantBuilder crtcs, modes, clones, properties; GVariantBuilder crtcs, modes, clones, properties;
@@ -2382,6 +2385,12 @@ meta_monitor_manager_get_laptop_panel (MetaMonitorManager *manager)
return find_monitor (manager, meta_monitor_is_laptop_panel); return find_monitor (manager, meta_monitor_is_laptop_panel);
} }
static MetaMonitor *
meta_monitor_manager_get_active_monitor (MetaMonitorManager *manager)
{
return find_monitor (manager, meta_monitor_is_active);
}
MetaMonitor * MetaMonitor *
meta_monitor_manager_get_monitor_from_connector (MetaMonitorManager *manager, meta_monitor_manager_get_monitor_from_connector (MetaMonitorManager *manager,
const char *connector) const char *connector)

View File

@@ -26,6 +26,7 @@
#include <linux/input.h> #include <linux/input.h>
#include <xkbcommon/xkbcommon.h> #include <xkbcommon/xkbcommon.h>
#include <stdlib.h>
#include "backends/meta-dbus-session-watcher.h" #include "backends/meta-dbus-session-watcher.h"
#include "backends/meta-screen-cast-session.h" #include "backends/meta-screen-cast-session.h"
@@ -38,6 +39,11 @@
#define META_REMOTE_DESKTOP_SESSION_DBUS_PATH "/org/gnome/Mutter/RemoteDesktop/Session" #define META_REMOTE_DESKTOP_SESSION_DBUS_PATH "/org/gnome/Mutter/RemoteDesktop/Session"
enum _MetaRemoteDesktopNotifyAxisFlags
{
META_REMOTE_DESKTOP_NOTIFY_AXIS_FLAGS_FINISH = 1 << 0,
} MetaRemoteDesktopNotifyAxisFlags;
struct _MetaRemoteDesktopSession struct _MetaRemoteDesktopSession
{ {
MetaDBusRemoteDesktopSessionSkeleton parent; MetaDBusRemoteDesktopSessionSkeleton parent;
@@ -52,6 +58,7 @@ struct _MetaRemoteDesktopSession
ClutterVirtualInputDevice *virtual_pointer; ClutterVirtualInputDevice *virtual_pointer;
ClutterVirtualInputDevice *virtual_keyboard; ClutterVirtualInputDevice *virtual_keyboard;
ClutterVirtualInputDevice *virtual_touchscreen;
}; };
static void static void
@@ -96,6 +103,10 @@ meta_remote_desktop_session_start (MetaRemoteDesktopSession *session,
clutter_device_manager_create_virtual_device (device_manager, clutter_device_manager_create_virtual_device (device_manager,
CLUTTER_KEYBOARD_DEVICE); CLUTTER_KEYBOARD_DEVICE);
session->virtual_touchscreen =
clutter_device_manager_create_virtual_device (device_manager,
CLUTTER_TOUCHSCREEN_DEVICE);
return TRUE; return TRUE;
} }
@@ -254,6 +265,38 @@ handle_stop (MetaDBusRemoteDesktopSession *skeleton,
return TRUE; return TRUE;
} }
static gboolean
handle_notify_keyboard_keycode (MetaDBusRemoteDesktopSession *skeleton,
GDBusMethodInvocation *invocation,
unsigned int keycode,
gboolean pressed)
{
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
ClutterKeyState state;
if (!check_permission (session, invocation))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"Permission denied");
return TRUE;
}
if (pressed)
state = CLUTTER_KEY_STATE_PRESSED;
else
state = CLUTTER_KEY_STATE_RELEASED;
clutter_virtual_input_device_notify_key (session->virtual_keyboard,
CLUTTER_CURRENT_TIME,
keycode,
state);
meta_dbus_remote_desktop_session_complete_notify_keyboard_keycode (skeleton,
invocation);
return TRUE;
}
static gboolean static gboolean
handle_notify_keyboard_keysym (MetaDBusRemoteDesktopSession *skeleton, handle_notify_keyboard_keysym (MetaDBusRemoteDesktopSession *skeleton,
GDBusMethodInvocation *invocation, GDBusMethodInvocation *invocation,
@@ -343,6 +386,42 @@ handle_notify_pointer_button (MetaDBusRemoteDesktopSession *skeleton,
return TRUE; return TRUE;
} }
static gboolean
handle_notify_pointer_axis (MetaDBusRemoteDesktopSession *skeleton,
GDBusMethodInvocation *invocation,
double dx,
double dy,
uint32_t flags)
{
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
ClutterScrollFinishFlags finish_flags = CLUTTER_SCROLL_FINISHED_NONE;
if (!check_permission (session, invocation))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"Permission denied");
return TRUE;
}
if (flags & META_REMOTE_DESKTOP_NOTIFY_AXIS_FLAGS_FINISH)
{
finish_flags |= (CLUTTER_SCROLL_FINISHED_HORIZONTAL |
CLUTTER_SCROLL_FINISHED_VERTICAL);
}
clutter_virtual_input_device_notify_scroll_continuous (session->virtual_pointer,
CLUTTER_CURRENT_TIME,
dx, dy,
CLUTTER_SCROLL_SOURCE_FINGER,
finish_flags);
meta_dbus_remote_desktop_session_complete_notify_pointer_axis (skeleton,
invocation);
return TRUE;
}
static ClutterScrollDirection static ClutterScrollDirection
discrete_steps_to_scroll_direction (unsigned int axis, discrete_steps_to_scroll_direction (unsigned int axis,
int steps) int steps)
@@ -367,6 +446,7 @@ handle_notify_pointer_axis_discrete (MetaDBusRemoteDesktopSession *skeleton,
{ {
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton); MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
ClutterScrollDirection direction; ClutterScrollDirection direction;
int step_count;
if (!check_permission (session, invocation)) if (!check_permission (session, invocation))
{ {
@@ -376,7 +456,7 @@ handle_notify_pointer_axis_discrete (MetaDBusRemoteDesktopSession *skeleton,
return TRUE; return TRUE;
} }
if (axis <= 1) if (axis > 1)
{ {
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_FAILED, G_DBUS_ERROR_FAILED,
@@ -392,19 +472,18 @@ handle_notify_pointer_axis_discrete (MetaDBusRemoteDesktopSession *skeleton,
return TRUE; return TRUE;
} }
if (steps != -1 && steps != 1)
g_warning ("Multiple steps at at once not yet implemented, treating as one.");
/* /*
* We don't have the actual scroll source, but only know they should be * We don't have the actual scroll source, but only know they should be
* considered as discrete steps. The device that produces such scroll events * considered as discrete steps. The device that produces such scroll events
* is the scroll wheel, so pretend that is the scroll source. * is the scroll wheel, so pretend that is the scroll source.
*/ */
direction = discrete_steps_to_scroll_direction (axis, steps); direction = discrete_steps_to_scroll_direction (axis, steps);
clutter_virtual_input_device_notify_discrete_scroll (session->virtual_pointer,
CLUTTER_CURRENT_TIME, for (step_count = 0; step_count < abs (steps); step_count++)
direction, clutter_virtual_input_device_notify_discrete_scroll (session->virtual_pointer,
CLUTTER_SCROLL_SOURCE_WHEEL); CLUTTER_CURRENT_TIME,
direction,
CLUTTER_SCROLL_SOURCE_WHEEL);
meta_dbus_remote_desktop_session_complete_notify_pointer_axis_discrete (skeleton, meta_dbus_remote_desktop_session_complete_notify_pointer_axis_discrete (skeleton,
invocation); invocation);
@@ -412,6 +491,32 @@ handle_notify_pointer_axis_discrete (MetaDBusRemoteDesktopSession *skeleton,
return TRUE; return TRUE;
} }
static gboolean
handle_notify_pointer_motion_relative (MetaDBusRemoteDesktopSession *skeleton,
GDBusMethodInvocation *invocation,
double dx,
double dy)
{
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
if (!check_permission (session, invocation))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"Permission denied");
return TRUE;
}
clutter_virtual_input_device_notify_relative_motion (session->virtual_pointer,
CLUTTER_CURRENT_TIME,
dx, dy);
meta_dbus_remote_desktop_session_complete_notify_pointer_motion_relative (skeleton,
invocation);
return TRUE;
}
static gboolean static gboolean
handle_notify_pointer_motion_absolute (MetaDBusRemoteDesktopSession *skeleton, handle_notify_pointer_motion_absolute (MetaDBusRemoteDesktopSession *skeleton,
GDBusMethodInvocation *invocation, GDBusMethodInvocation *invocation,
@@ -420,6 +525,8 @@ handle_notify_pointer_motion_absolute (MetaDBusRemoteDesktopSession *skeleton,
double y) double y)
{ {
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton); MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
MetaScreenCastStream *stream;
double abs_x, abs_y;
if (!check_permission (session, invocation)) if (!check_permission (session, invocation))
{ {
@@ -429,9 +536,29 @@ handle_notify_pointer_motion_absolute (MetaDBusRemoteDesktopSession *skeleton,
return TRUE; return TRUE;
} }
if (!session->screen_cast_session)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_FAILED,
"No screen cast active");
return TRUE;
}
stream = meta_screen_cast_session_get_stream (session->screen_cast_session,
stream_path);
if (!stream)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_FAILED,
"Unknown stream");
return TRUE;
}
meta_screen_cast_stream_transform_position (stream, x, y, &abs_x, &abs_y);
clutter_virtual_input_device_notify_absolute_motion (session->virtual_pointer, clutter_virtual_input_device_notify_absolute_motion (session->virtual_pointer,
CLUTTER_CURRENT_TIME, CLUTTER_CURRENT_TIME,
x, y); abs_x, abs_y);
meta_dbus_remote_desktop_session_complete_notify_pointer_motion_absolute (skeleton, meta_dbus_remote_desktop_session_complete_notify_pointer_motion_absolute (skeleton,
invocation); invocation);
@@ -439,15 +566,148 @@ handle_notify_pointer_motion_absolute (MetaDBusRemoteDesktopSession *skeleton,
return TRUE; return TRUE;
} }
static gboolean
handle_notify_touch_down (MetaDBusRemoteDesktopSession *skeleton,
GDBusMethodInvocation *invocation,
const char *stream_path,
unsigned int slot,
double x,
double y)
{
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
MetaScreenCastStream *stream;
double abs_x, abs_y;
if (!check_permission (session, invocation))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"Permission denied");
return TRUE;
}
if (!session->screen_cast_session)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_FAILED,
"No screen cast active");
return TRUE;
}
stream = meta_screen_cast_session_get_stream (session->screen_cast_session,
stream_path);
if (!stream)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_FAILED,
"Unknown stream");
return TRUE;
}
meta_screen_cast_stream_transform_position (stream, x, y, &abs_x, &abs_y);
clutter_virtual_input_device_notify_touch_down (session->virtual_touchscreen,
CLUTTER_CURRENT_TIME,
slot,
abs_x, abs_y);
meta_dbus_remote_desktop_session_complete_notify_touch_down (skeleton,
invocation);
return TRUE;
}
static gboolean
handle_notify_touch_motion (MetaDBusRemoteDesktopSession *skeleton,
GDBusMethodInvocation *invocation,
const char *stream_path,
unsigned int slot,
double x,
double y)
{
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
MetaScreenCastStream *stream;
double abs_x, abs_y;
if (!check_permission (session, invocation))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"Permission denied");
return TRUE;
}
if (!session->screen_cast_session)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_FAILED,
"No screen cast active");
return TRUE;
}
stream = meta_screen_cast_session_get_stream (session->screen_cast_session,
stream_path);
if (!stream)
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_FAILED,
"Unknown stream");
return TRUE;
}
meta_screen_cast_stream_transform_position (stream, x, y, &abs_x, &abs_y);
clutter_virtual_input_device_notify_touch_motion (session->virtual_touchscreen,
CLUTTER_CURRENT_TIME,
slot,
abs_x, abs_y);
meta_dbus_remote_desktop_session_complete_notify_touch_motion (skeleton,
invocation);
return TRUE;
}
static gboolean
handle_notify_touch_up (MetaDBusRemoteDesktopSession *skeleton,
GDBusMethodInvocation *invocation,
unsigned int slot)
{
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
if (!check_permission (session, invocation))
{
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
G_DBUS_ERROR_ACCESS_DENIED,
"Permission denied");
return TRUE;
}
clutter_virtual_input_device_notify_touch_up (session->virtual_touchscreen,
CLUTTER_CURRENT_TIME,
slot);
meta_dbus_remote_desktop_session_complete_notify_touch_up (skeleton,
invocation);
return TRUE;
}
static void static void
meta_remote_desktop_session_init_iface (MetaDBusRemoteDesktopSessionIface *iface) meta_remote_desktop_session_init_iface (MetaDBusRemoteDesktopSessionIface *iface)
{ {
iface->handle_start = handle_start; iface->handle_start = handle_start;
iface->handle_stop = handle_stop; iface->handle_stop = handle_stop;
iface->handle_notify_keyboard_keycode = handle_notify_keyboard_keycode;
iface->handle_notify_keyboard_keysym = handle_notify_keyboard_keysym; iface->handle_notify_keyboard_keysym = handle_notify_keyboard_keysym;
iface->handle_notify_pointer_button = handle_notify_pointer_button; iface->handle_notify_pointer_button = handle_notify_pointer_button;
iface->handle_notify_pointer_axis = handle_notify_pointer_axis;
iface->handle_notify_pointer_axis_discrete = handle_notify_pointer_axis_discrete; iface->handle_notify_pointer_axis_discrete = handle_notify_pointer_axis_discrete;
iface->handle_notify_pointer_motion_relative = handle_notify_pointer_motion_relative;
iface->handle_notify_pointer_motion_absolute = handle_notify_pointer_motion_absolute; iface->handle_notify_pointer_motion_absolute = handle_notify_pointer_motion_absolute;
iface->handle_notify_touch_down = handle_notify_touch_down;
iface->handle_notify_touch_motion = handle_notify_touch_motion;
iface->handle_notify_touch_up = handle_notify_touch_up;
} }
static void static void

View File

@@ -42,6 +42,15 @@
#define META_REMOTE_DESKTOP_DBUS_SERVICE "org.gnome.Mutter.RemoteDesktop" #define META_REMOTE_DESKTOP_DBUS_SERVICE "org.gnome.Mutter.RemoteDesktop"
#define META_REMOTE_DESKTOP_DBUS_PATH "/org/gnome/Mutter/RemoteDesktop" #define META_REMOTE_DESKTOP_DBUS_PATH "/org/gnome/Mutter/RemoteDesktop"
#define META_REMOTE_DESKTOP_API_VERSION 1
typedef enum _MetaRemoteDesktopDeviceTypes
{
META_REMOTE_DESKTOP_DEVICE_TYPE_NONE = 0,
META_REMOTE_DESKTOP_DEVICE_TYPE_KEYBOARD = 1 << 0,
META_REMOTE_DESKTOP_DEVICE_TYPE_POINTER = 1 << 1,
META_REMOTE_DESKTOP_DEVICE_TYPE_TOUCHSCREEN = 1 << 2,
} MetaRemoteDesktopDeviceTypes;
struct _MetaRemoteDesktop struct _MetaRemoteDesktop
{ {
@@ -224,10 +233,39 @@ meta_remote_desktop_new (MetaDbusSessionWatcher *session_watcher)
return remote_desktop; return remote_desktop;
} }
static MetaRemoteDesktopDeviceTypes
calculate_supported_device_types (void)
{
ClutterDeviceManager *device_manager =
clutter_device_manager_get_default ();
ClutterVirtualDeviceType device_types;
MetaRemoteDesktopDeviceTypes supported_devices =
META_REMOTE_DESKTOP_DEVICE_TYPE_NONE;
device_types =
clutter_device_manager_get_supported_virtual_device_types (device_manager);
if (device_types & CLUTTER_VIRTUAL_DEVICE_TYPE_KEYBOARD)
supported_devices |= META_REMOTE_DESKTOP_DEVICE_TYPE_KEYBOARD;
if (device_types & CLUTTER_VIRTUAL_DEVICE_TYPE_POINTER)
supported_devices |= META_REMOTE_DESKTOP_DEVICE_TYPE_POINTER;
if (device_types & CLUTTER_VIRTUAL_DEVICE_TYPE_TOUCHSCREEN)
supported_devices |= META_REMOTE_DESKTOP_DEVICE_TYPE_TOUCHSCREEN;
return supported_devices;
}
static void static void
meta_remote_desktop_init (MetaRemoteDesktop *remote_desktop) meta_remote_desktop_init (MetaRemoteDesktop *remote_desktop)
{ {
remote_desktop->sessions = g_hash_table_new (g_str_hash, g_str_equal); remote_desktop->sessions = g_hash_table_new (g_str_hash, g_str_equal);
meta_dbus_remote_desktop_set_supported_device_types (
META_DBUS_REMOTE_DESKTOP (remote_desktop),
calculate_supported_device_types ());
meta_dbus_remote_desktop_set_version (
META_DBUS_REMOTE_DESKTOP (remote_desktop),
META_REMOTE_DESKTOP_API_VERSION);
} }
static void static void

View File

@@ -176,6 +176,24 @@ meta_screen_cast_monitor_stream_set_parameters (MetaScreenCastStream *stream,
logical_monitor_layout.height)); logical_monitor_layout.height));
} }
static void
meta_screen_cast_monitor_stream_transform_position (MetaScreenCastStream *stream,
double stream_x,
double stream_y,
double *x,
double *y)
{
MetaScreenCastMonitorStream *monitor_stream =
META_SCREEN_CAST_MONITOR_STREAM (stream);
MetaRectangle logical_monitor_layout;
logical_monitor_layout =
meta_logical_monitor_get_layout (monitor_stream->logical_monitor);
*x = logical_monitor_layout.x + stream_x;
*y = logical_monitor_layout.y + stream_y;
}
static void static void
meta_screen_cast_monitor_stream_set_property (GObject *object, meta_screen_cast_monitor_stream_set_property (GObject *object,
guint prop_id, guint prop_id,
@@ -247,6 +265,7 @@ meta_screen_cast_monitor_stream_class_init (MetaScreenCastMonitorStreamClass *kl
stream_class->create_src = meta_screen_cast_monitor_stream_create_src; stream_class->create_src = meta_screen_cast_monitor_stream_create_src;
stream_class->set_parameters = meta_screen_cast_monitor_stream_set_parameters; stream_class->set_parameters = meta_screen_cast_monitor_stream_set_parameters;
stream_class->transform_position = meta_screen_cast_monitor_stream_transform_position;
g_object_class_install_property (object_class, g_object_class_install_property (object_class,
PROP_MONITOR, PROP_MONITOR,

View File

@@ -97,6 +97,24 @@ meta_screen_cast_session_close (MetaScreenCastSession *session)
g_object_unref (session); g_object_unref (session);
} }
MetaScreenCastStream *
meta_screen_cast_session_get_stream (MetaScreenCastSession *session,
const char *path)
{
GList *l;
for (l = session->streams; l; l = l->next)
{
MetaScreenCastStream *stream = l->data;
if (g_strcmp0 (meta_screen_cast_stream_get_object_path (stream),
path) == 0)
return stream;
}
return NULL;
}
char * char *
meta_screen_cast_session_get_object_path (MetaScreenCastSession *session) meta_screen_cast_session_get_object_path (MetaScreenCastSession *session)
{ {

View File

@@ -25,6 +25,8 @@
#include "backends/meta-screen-cast.h" #include "backends/meta-screen-cast.h"
#include "backends/meta-screen-cast-stream.h"
typedef enum _MetaScreenCastSessionType typedef enum _MetaScreenCastSessionType
{ {
META_SCREEN_CAST_SESSION_TYPE_NORMAL, META_SCREEN_CAST_SESSION_TYPE_NORMAL,
@@ -48,4 +50,7 @@ gboolean meta_screen_cast_session_start (MetaScreenCastSession *session,
void meta_screen_cast_session_close (MetaScreenCastSession *session); void meta_screen_cast_session_close (MetaScreenCastSession *session);
MetaScreenCastStream * meta_screen_cast_session_get_stream (MetaScreenCastSession *session,
const char *path);
#endif /* META_SCREEN_CAST_SESSION_H */ #endif /* META_SCREEN_CAST_SESSION_H */

View File

@@ -153,6 +153,11 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src)
return; return;
buffer = pw_stream_peek_buffer (priv->pipewire_stream, buffer_id); buffer = pw_stream_peek_buffer (priv->pipewire_stream, buffer_id);
if (!buffer)
{
g_warning ("Failed to peek at PipeWire buffer");
return;
}
if (buffer->datas[0].type == priv->pipewire_type->data.MemFd) if (buffer->datas[0].type == priv->pipewire_type->data.MemFd)
{ {
@@ -327,10 +332,18 @@ create_pipewire_stream (MetaScreenCastStreamSrc *src,
struct spa_fraction max_framerate; struct spa_fraction max_framerate;
struct spa_fraction min_framerate; struct spa_fraction min_framerate;
const struct spa_pod *params[1]; const struct spa_pod *params[1];
int result;
pipewire_stream = pw_stream_new (priv->pipewire_remote, pipewire_stream = pw_stream_new (priv->pipewire_remote,
"meta-screen-cast-src", "meta-screen-cast-src",
NULL); NULL);
if (!pipewire_stream)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Failed to create PipeWire stream: %s",
strerror (errno));
return NULL;
}
meta_screen_cast_stream_src_get_specs (src, &width, &height, &frame_rate); meta_screen_cast_stream_src_get_specs (src, &width, &height, &frame_rate);
frame_rate_fraction = meta_fraction_from_double (frame_rate); frame_rate_fraction = meta_fraction_from_double (frame_rate);
@@ -356,14 +369,15 @@ create_pipewire_stream (MetaScreenCastStreamSrc *src,
&stream_events, &stream_events,
src); src);
if (pw_stream_connect (pipewire_stream, result = pw_stream_connect (pipewire_stream,
PW_DIRECTION_OUTPUT, PW_DIRECTION_OUTPUT,
NULL, NULL,
PW_STREAM_FLAG_NONE, PW_STREAM_FLAG_NONE,
params, G_N_ELEMENTS (&params)) != 0) params, G_N_ELEMENTS (params));
if (result != 0)
{ {
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Could not connect"); "Could not connect: %s", spa_strerror (result));
return NULL; return NULL;
} }
@@ -466,6 +480,12 @@ create_pipewire_source (void)
(MetaPipeWireSource *) g_source_new (&pipewire_source_funcs, (MetaPipeWireSource *) g_source_new (&pipewire_source_funcs,
sizeof (MetaPipeWireSource)); sizeof (MetaPipeWireSource));
pipewire_source->pipewire_loop = pw_loop_new (NULL); pipewire_source->pipewire_loop = pw_loop_new (NULL);
if (!pipewire_source->pipewire_loop)
{
g_source_destroy ((GSource *) pipewire_source);
return NULL;
}
g_source_add_unix_fd (&pipewire_source->base, g_source_add_unix_fd (&pipewire_source->base,
pw_loop_get_fd (pipewire_source->pipewire_loop), pw_loop_get_fd (pipewire_source->pipewire_loop),
G_IO_IN | G_IO_ERR); G_IO_IN | G_IO_ERR);
@@ -491,6 +511,13 @@ meta_screen_cast_stream_src_initable_init (GInitable *initable,
meta_screen_cast_stream_src_get_instance_private (src); meta_screen_cast_stream_src_get_instance_private (src);
priv->pipewire_source = create_pipewire_source (); priv->pipewire_source = create_pipewire_source ();
if (!priv->pipewire_source)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Failed to create PipeWire source");
return FALSE;
}
priv->pipewire_core = pw_core_new (priv->pipewire_source->pipewire_loop, priv->pipewire_core = pw_core_new (priv->pipewire_source->pipewire_loop,
NULL); NULL);
if (!priv->pipewire_core) if (!priv->pipewire_core)

View File

@@ -136,6 +136,20 @@ meta_screen_cast_stream_get_object_path (MetaScreenCastStream *stream)
return priv->object_path; return priv->object_path;
} }
void
meta_screen_cast_stream_transform_position (MetaScreenCastStream *stream,
double stream_x,
double stream_y,
double *x,
double *y)
{
META_SCREEN_CAST_STREAM_GET_CLASS (stream)->transform_position (stream,
stream_x,
stream_y,
x,
y);
}
static void static void
meta_screen_cast_stream_set_property (GObject *object, meta_screen_cast_stream_set_property (GObject *object,
guint prop_id, guint prop_id,

View File

@@ -41,6 +41,11 @@ struct _MetaScreenCastStreamClass
GError **error); GError **error);
void (* set_parameters) (MetaScreenCastStream *stream, void (* set_parameters) (MetaScreenCastStream *stream,
GVariantBuilder *parameters_builder); GVariantBuilder *parameters_builder);
void (* transform_position) (MetaScreenCastStream *stream,
double stream_x,
double stream_y,
double *x,
double *y);
}; };
gboolean meta_screen_cast_stream_start (MetaScreenCastStream *stream, gboolean meta_screen_cast_stream_start (MetaScreenCastStream *stream,
@@ -50,4 +55,10 @@ void meta_screen_cast_stream_close (MetaScreenCastStream *stream);
char * meta_screen_cast_stream_get_object_path (MetaScreenCastStream *stream); char * meta_screen_cast_stream_get_object_path (MetaScreenCastStream *stream);
void meta_screen_cast_stream_transform_position (MetaScreenCastStream *stream,
double stream_x,
double stream_y,
double *x,
double *y);
#endif /* META_SCREEN_CAST_STREAM_H */ #endif /* META_SCREEN_CAST_STREAM_H */

View File

@@ -32,6 +32,7 @@
#define META_SCREEN_CAST_DBUS_SERVICE "org.gnome.Mutter.ScreenCast" #define META_SCREEN_CAST_DBUS_SERVICE "org.gnome.Mutter.ScreenCast"
#define META_SCREEN_CAST_DBUS_PATH "/org/gnome/Mutter/ScreenCast" #define META_SCREEN_CAST_DBUS_PATH "/org/gnome/Mutter/ScreenCast"
#define META_SCREEN_CAST_API_VERSION 1
struct _MetaScreenCast struct _MetaScreenCast
{ {
@@ -264,6 +265,9 @@ meta_screen_cast_init (MetaScreenCast *screen_cast)
pw_init (NULL, NULL); pw_init (NULL, NULL);
is_pipewire_initialized = TRUE; is_pipewire_initialized = TRUE;
} }
meta_dbus_screen_cast_set_version (META_DBUS_SCREEN_CAST (screen_cast),
META_SCREEN_CAST_API_VERSION);
} }
static void static void

View File

@@ -31,8 +31,7 @@ typedef enum _MetaExperimentalFeature
{ {
META_EXPERIMENTAL_FEATURE_NONE = 0, META_EXPERIMENTAL_FEATURE_NONE = 0,
META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER = (1 << 0), META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER = (1 << 0),
META_EXPERIMENTAL_FEATURE_SCREEN_CAST = (1 << 1), META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS = (1 << 1),
META_EXPERIMENTAL_FEATURE_REMOTE_DESKTOP = (1 << 2),
} MetaExperimentalFeature; } MetaExperimentalFeature;
#define META_TYPE_SETTINGS (meta_settings_get_type ()) #define META_TYPE_SETTINGS (meta_settings_get_type ())

View File

@@ -260,13 +260,10 @@ experimental_features_handler (GVariant *features_variant,
g_variant_iter_init (&features_iter, features_variant); g_variant_iter_init (&features_iter, features_variant);
while (g_variant_iter_loop (&features_iter, "s", &feature)) while (g_variant_iter_loop (&features_iter, "s", &feature))
{ {
/* So far no experimental features defined. */
if (g_str_equal (feature, "scale-monitor-framebuffer")) if (g_str_equal (feature, "scale-monitor-framebuffer"))
features |= META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER; features |= META_EXPERIMENTAL_FEATURE_SCALE_MONITOR_FRAMEBUFFER;
else if (g_str_equal (feature, "screen-cast")) else if (g_str_equal (feature, "kms-modifiers"))
features |= META_EXPERIMENTAL_FEATURE_SCREEN_CAST; features |= META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS;
else if (g_str_equal (feature, "remote-desktop"))
features |= META_EXPERIMENTAL_FEATURE_REMOTE_DESKTOP;
else else
g_info ("Unknown experimental feature '%s'\n", feature); g_info ("Unknown experimental feature '%s'\n", feature);
} }

View File

@@ -17,39 +17,23 @@
* 02111-1307, USA. * 02111-1307, USA.
*/ */
#ifndef META_STAGE_H #ifndef META_STAGE_PRIVATE_H
#define META_STAGE_H #define META_STAGE_PRIVATE_H
#include <clutter/clutter.h> #include <meta/meta-stage.h>
#include "meta-cursor.h" #include "meta-cursor.h"
#include <meta/boxes.h> #include <meta/boxes.h>
G_BEGIN_DECLS G_BEGIN_DECLS
#define META_TYPE_STAGE (meta_stage_get_type ())
#define META_STAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_STAGE, MetaStage))
#define META_STAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_STAGE, MetaStageClass))
#define META_IS_STAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_STAGE))
#define META_IS_STAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_STAGE))
#define META_STAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_STAGE, MetaStageClass))
typedef struct _MetaStage MetaStage;
typedef struct _MetaStageClass MetaStageClass;
typedef struct _MetaOverlay MetaOverlay; typedef struct _MetaOverlay MetaOverlay;
struct _MetaStageClass
{
ClutterStageClass parent_class;
};
struct _MetaStage struct _MetaStage
{ {
ClutterStage parent; ClutterStage parent;
}; };
GType meta_stage_get_type (void) G_GNUC_CONST;
ClutterActor *meta_stage_new (void); ClutterActor *meta_stage_new (void);
MetaOverlay *meta_stage_create_cursor_overlay (MetaStage *stage); MetaOverlay *meta_stage_create_cursor_overlay (MetaStage *stage);
@@ -68,4 +52,4 @@ void meta_stage_update_view_layout (MetaStage *stage);
G_END_DECLS G_END_DECLS
#endif /* META_STAGE_H */ #endif /* META_STAGE_PRIVATE_H */

View File

@@ -22,7 +22,7 @@
#include <config.h> #include <config.h>
#include "meta-stage.h" #include "meta-stage-private.h"
#include <meta/meta-backend.h> #include <meta/meta-backend.h>
#include <meta/meta-monitor-manager.h> #include <meta/meta-monitor-manager.h>

View File

@@ -35,15 +35,15 @@
#include "clutter/evdev/clutter-evdev.h" #include "clutter/evdev/clutter-evdev.h"
#include "meta-barrier-native.h" #include "meta-barrier-native.h"
#include "meta-border.h" #include "meta-border.h"
#include "meta-idle-monitor-native.h"
#include "meta-monitor-manager-kms.h" #include "meta-monitor-manager-kms.h"
#include "meta-cursor-renderer-native.h" #include "meta-cursor-renderer-native.h"
#include "meta-launcher.h" #include "meta-launcher.h"
#include "backends/meta-cursor-tracker-private.h" #include "backends/meta-cursor-tracker-private.h"
#include "backends/meta-idle-monitor-private.h"
#include "backends/meta-logical-monitor.h" #include "backends/meta-logical-monitor.h"
#include "backends/meta-monitor-manager-private.h" #include "backends/meta-monitor-manager-private.h"
#include "backends/meta-pointer-constraint.h" #include "backends/meta-pointer-constraint.h"
#include "backends/meta-stage.h" #include "backends/meta-stage-private.h"
#include "backends/native/meta-clutter-backend-native.h" #include "backends/native/meta-clutter-backend-native.h"
#include "backends/native/meta-input-settings-native.h" #include "backends/native/meta-input-settings-native.h"
#include "backends/native/meta-renderer-native.h" #include "backends/native/meta-renderer-native.h"
@@ -60,10 +60,6 @@ struct _MetaBackendNativePrivate
{ {
MetaLauncher *launcher; MetaLauncher *launcher;
MetaBarrierManagerNative *barrier_manager; MetaBarrierManagerNative *barrier_manager;
UpClient *up_client;
guint sleep_signal_id;
GCancellable *cancellable;
GDBusConnection *system_bus;
}; };
typedef struct _MetaBackendNativePrivate MetaBackendNativePrivate; typedef struct _MetaBackendNativePrivate MetaBackendNativePrivate;
@@ -85,69 +81,9 @@ meta_backend_native_finalize (GObject *object)
meta_launcher_free (priv->launcher); meta_launcher_free (priv->launcher);
g_object_unref (priv->up_client);
if (priv->sleep_signal_id)
g_dbus_connection_signal_unsubscribe (priv->system_bus, priv->sleep_signal_id);
g_cancellable_cancel (priv->cancellable);
g_clear_object (&priv->cancellable);
g_clear_object (&priv->system_bus);
G_OBJECT_CLASS (meta_backend_native_parent_class)->finalize (object); G_OBJECT_CLASS (meta_backend_native_parent_class)->finalize (object);
} }
static void
prepare_for_sleep_cb (GDBusConnection *connection,
const gchar *sender_name,
const gchar *object_path,
const gchar *interface_name,
const gchar *signal_name,
GVariant *parameters,
gpointer user_data)
{
gboolean suspending;
g_variant_get (parameters, "(b)", &suspending);
if (suspending)
return;
meta_idle_monitor_native_reset_idletime (meta_idle_monitor_get_core ());
}
static void
system_bus_gotten_cb (GObject *object,
GAsyncResult *res,
gpointer user_data)
{
MetaBackendNativePrivate *priv;
GDBusConnection *bus;
bus = g_bus_get_finish (res, NULL);
if (!bus)
return;
priv = meta_backend_native_get_instance_private (META_BACKEND_NATIVE (user_data));
priv->system_bus = bus;
priv->sleep_signal_id = g_dbus_connection_signal_subscribe (priv->system_bus,
"org.freedesktop.login1",
"org.freedesktop.login1.Manager",
"PrepareForSleep",
"/org/freedesktop/login1",
NULL,
G_DBUS_SIGNAL_FLAGS_NONE,
prepare_for_sleep_cb,
NULL,
NULL);
}
static void
lid_is_closed_changed_cb (UpClient *client,
GParamSpec *pspec,
gpointer user_data)
{
if (up_client_get_lid_is_closed (client))
return;
meta_idle_monitor_native_reset_idletime (meta_idle_monitor_get_core ());
}
static void static void
constrain_to_barriers (ClutterInputDevice *device, constrain_to_barriers (ClutterInputDevice *device,
guint32 time, guint32 time,
@@ -398,15 +334,6 @@ meta_backend_native_post_init (MetaBackend *backend)
meta_backend_get_monitor_manager (backend)); meta_backend_get_monitor_manager (backend));
} }
static MetaIdleMonitor *
meta_backend_native_create_idle_monitor (MetaBackend *backend,
int device_id)
{
return g_object_new (META_TYPE_IDLE_MONITOR_NATIVE,
"device-id", device_id,
NULL);
}
static MetaMonitorManager * static MetaMonitorManager *
meta_backend_native_create_monitor_manager (MetaBackend *backend, meta_backend_native_create_monitor_manager (MetaBackend *backend,
GError **error) GError **error)
@@ -604,7 +531,6 @@ meta_backend_native_class_init (MetaBackendNativeClass *klass)
backend_class->post_init = meta_backend_native_post_init; backend_class->post_init = meta_backend_native_post_init;
backend_class->create_idle_monitor = meta_backend_native_create_idle_monitor;
backend_class->create_monitor_manager = meta_backend_native_create_monitor_manager; backend_class->create_monitor_manager = meta_backend_native_create_monitor_manager;
backend_class->create_cursor_renderer = meta_backend_native_create_cursor_renderer; backend_class->create_cursor_renderer = meta_backend_native_create_cursor_renderer;
backend_class->create_renderer = meta_backend_native_create_renderer; backend_class->create_renderer = meta_backend_native_create_renderer;
@@ -637,16 +563,6 @@ meta_backend_native_init (MetaBackendNative *native)
} }
priv->barrier_manager = meta_barrier_manager_native_new (); priv->barrier_manager = meta_barrier_manager_native_new ();
priv->up_client = up_client_new ();
g_signal_connect (priv->up_client, "notify::lid-is-closed",
G_CALLBACK (lid_is_closed_changed_cb), NULL);
priv->cancellable = g_cancellable_new ();
g_bus_get (G_BUS_TYPE_SYSTEM,
priv->cancellable,
system_bus_gotten_cb,
native);
} }
MetaLauncher * MetaLauncher *
@@ -747,5 +663,5 @@ void meta_backend_native_resume (MetaBackendNative *native)
meta_cursor_renderer_native_force_update (cursor_renderer_native); meta_cursor_renderer_native_force_update (cursor_renderer_native);
idle_monitor = meta_backend_get_idle_monitor (backend, 0); idle_monitor = meta_backend_get_idle_monitor (backend, 0);
meta_idle_monitor_native_reset_idletime (idle_monitor); meta_idle_monitor_reset_idletime (idle_monitor);
} }

View File

@@ -291,9 +291,11 @@ update_monitor_crtc_cursor (MetaMonitor *monitor,
data->in_cursor_renderer_native; data->in_cursor_renderer_native;
MetaCursorRendererNativePrivate *priv = MetaCursorRendererNativePrivate *priv =
meta_cursor_renderer_native_get_instance_private (cursor_renderer_native); meta_cursor_renderer_native_get_instance_private (cursor_renderer_native);
MetaMonitorTransform transform;
ClutterRect scaled_crtc_rect; ClutterRect scaled_crtc_rect;
float scale; float scale;
int crtc_x, crtc_y; int crtc_x, crtc_y;
int crtc_width, crtc_height;
if (meta_is_stage_views_scaled ()) if (meta_is_stage_views_scaled ())
scale = meta_logical_monitor_get_scale (data->in_logical_monitor); scale = meta_logical_monitor_get_scale (data->in_logical_monitor);
@@ -305,14 +307,26 @@ update_monitor_crtc_cursor (MetaMonitor *monitor,
META_MONITOR_TRANSFORM_NORMAL, META_MONITOR_TRANSFORM_NORMAL,
&crtc_x, &crtc_y); &crtc_x, &crtc_y);
transform = meta_logical_monitor_get_transform (data->in_logical_monitor);
if (meta_monitor_transform_is_rotated (transform))
{
crtc_width = monitor_crtc_mode->crtc_mode->height;
crtc_height = monitor_crtc_mode->crtc_mode->width;
}
else
{
crtc_width = monitor_crtc_mode->crtc_mode->width;
crtc_height = monitor_crtc_mode->crtc_mode->height;
}
scaled_crtc_rect = (ClutterRect) { scaled_crtc_rect = (ClutterRect) {
.origin = { .origin = {
.x = crtc_x / scale, .x = crtc_x / scale,
.y = crtc_y / scale .y = crtc_y / scale
}, },
.size = { .size = {
.width = monitor_crtc_mode->crtc_mode->width / scale, .width = crtc_width / scale,
.height = monitor_crtc_mode->crtc_mode->height / scale .height = crtc_height / scale
}, },
}; };

View File

@@ -47,6 +47,12 @@ typedef struct _MetaKmsSource
MetaGpuKms *gpu_kms; MetaGpuKms *gpu_kms;
} MetaKmsSource; } MetaKmsSource;
typedef struct _MetaGpuKmsFlipClosureContainer
{
GClosure *flip_closure;
MetaGpuKms *gpu_kms;
} MetaGpuKmsFlipClosureContainer;
struct _MetaGpuKms struct _MetaGpuKms
{ {
MetaGpu parent; MetaGpu parent;
@@ -199,11 +205,26 @@ meta_gpu_kms_is_crtc_active (MetaGpuKms *gpu_kms,
return TRUE; return TRUE;
} }
typedef struct _GpuClosureContainer MetaGpuKmsFlipClosureContainer *
meta_gpu_kms_wrap_flip_closure (MetaGpuKms *gpu_kms,
GClosure *flip_closure)
{ {
GClosure *flip_closure; MetaGpuKmsFlipClosureContainer *closure_container;
MetaGpuKms *gpu_kms;
} GpuClosureContainer; closure_container = g_new0 (MetaGpuKmsFlipClosureContainer, 1);
*closure_container = (MetaGpuKmsFlipClosureContainer) {
.flip_closure = flip_closure,
.gpu_kms = gpu_kms
};
return closure_container;
}
void
meta_gpu_kms_flip_closure_container_free (MetaGpuKmsFlipClosureContainer *closure_container)
{
g_free (closure_container);
}
gboolean gboolean
meta_gpu_kms_flip_crtc (MetaGpuKms *gpu_kms, meta_gpu_kms_flip_crtc (MetaGpuKms *gpu_kms,
@@ -229,14 +250,11 @@ meta_gpu_kms_flip_crtc (MetaGpuKms *gpu_kms,
if (!gpu_kms->page_flips_not_supported) if (!gpu_kms->page_flips_not_supported)
{ {
GpuClosureContainer *closure_container; MetaGpuKmsFlipClosureContainer *closure_container;
int kms_fd = meta_gpu_kms_get_fd (gpu_kms); int kms_fd = meta_gpu_kms_get_fd (gpu_kms);
closure_container = g_new0 (GpuClosureContainer, 1); closure_container = meta_gpu_kms_wrap_flip_closure (gpu_kms,
*closure_container = (GpuClosureContainer) { flip_closure);
.flip_closure = flip_closure,
.gpu_kms = gpu_kms
};
ret = drmModePageFlip (kms_fd, ret = drmModePageFlip (kms_fd,
crtc->crtc_id, crtc->crtc_id,
@@ -245,7 +263,7 @@ meta_gpu_kms_flip_crtc (MetaGpuKms *gpu_kms,
closure_container); closure_container);
if (ret != 0 && ret != -EACCES) if (ret != 0 && ret != -EACCES)
{ {
g_free (closure_container); meta_gpu_kms_flip_closure_container_free (closure_container);
g_warning ("Failed to flip: %s", strerror (-ret)); g_warning ("Failed to flip: %s", strerror (-ret));
gpu_kms->page_flips_not_supported = TRUE; gpu_kms->page_flips_not_supported = TRUE;
} }
@@ -276,12 +294,12 @@ page_flip_handler (int fd,
unsigned int usec, unsigned int usec,
void *user_data) void *user_data)
{ {
GpuClosureContainer *closure_container = user_data; MetaGpuKmsFlipClosureContainer *closure_container = user_data;
GClosure *flip_closure = closure_container->flip_closure; GClosure *flip_closure = closure_container->flip_closure;
MetaGpuKms *gpu_kms = closure_container->gpu_kms; MetaGpuKms *gpu_kms = closure_container->gpu_kms;
invoke_flip_closure (flip_closure, gpu_kms); invoke_flip_closure (flip_closure, gpu_kms);
g_free (closure_container); meta_gpu_kms_flip_closure_container_free (closure_container);
} }
gboolean gboolean
@@ -778,7 +796,7 @@ meta_gpu_kms_new (MetaMonitorManagerKms *monitor_manager_kms,
kms_fd = meta_launcher_open_restricted (launcher, kms_file_path, error); kms_fd = meta_launcher_open_restricted (launcher, kms_file_path, error);
if (kms_fd == -1) if (kms_fd == -1)
return FALSE; return NULL;
gpu_kms = g_object_new (META_TYPE_GPU_KMS, gpu_kms = g_object_new (META_TYPE_GPU_KMS,
"monitor-manager", monitor_manager_kms, "monitor-manager", monitor_manager_kms,

View File

@@ -32,6 +32,8 @@
#define META_TYPE_GPU_KMS (meta_gpu_kms_get_type ()) #define META_TYPE_GPU_KMS (meta_gpu_kms_get_type ())
G_DECLARE_FINAL_TYPE (MetaGpuKms, meta_gpu_kms, META, GPU_KMS, MetaGpu) G_DECLARE_FINAL_TYPE (MetaGpuKms, meta_gpu_kms, META, GPU_KMS, MetaGpu)
typedef struct _MetaGpuKmsFlipClosureContainer MetaGpuKmsFlipClosureContainer;
typedef struct _MetaKmsResources typedef struct _MetaKmsResources
{ {
drmModeRes *resources; drmModeRes *resources;
@@ -84,4 +86,9 @@ gboolean meta_drm_mode_equal (const drmModeModeInfo *one,
float meta_calculate_drm_mode_refresh_rate (const drmModeModeInfo *mode); float meta_calculate_drm_mode_refresh_rate (const drmModeModeInfo *mode);
MetaGpuKmsFlipClosureContainer * meta_gpu_kms_wrap_flip_closure (MetaGpuKms *gpu_kms,
GClosure *flip_closure);
void meta_gpu_kms_flip_closure_container_free (MetaGpuKmsFlipClosureContainer *closure_container);
#endif /* META_GPU_KMS_H */ #endif /* META_GPU_KMS_H */

View File

@@ -1,200 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright 2013 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, see <http://www.gnu.org/licenses/>.
*
* Adapted from gnome-session/gnome-session/gs-idle-monitor.c and
* from gnome-desktop/libgnome-desktop/gnome-idle-monitor.c
*/
#include "config.h"
#include "meta-idle-monitor-native.h"
#include "meta-idle-monitor-private.h"
#include <meta/util.h>
#include "display-private.h"
#include <string.h>
struct _MetaIdleMonitorNative
{
MetaIdleMonitor parent;
guint64 last_event_time;
};
struct _MetaIdleMonitorNativeClass
{
MetaIdleMonitorClass parent_class;
};
typedef struct {
MetaIdleMonitorWatch base;
GSource *timeout_source;
} MetaIdleMonitorWatchNative;
G_DEFINE_TYPE (MetaIdleMonitorNative, meta_idle_monitor_native, META_TYPE_IDLE_MONITOR)
static gint64
meta_idle_monitor_native_get_idletime (MetaIdleMonitor *monitor)
{
MetaIdleMonitorNative *monitor_native = META_IDLE_MONITOR_NATIVE (monitor);
return (g_get_monotonic_time () - monitor_native->last_event_time) / 1000;
}
static guint32
get_next_watch_serial (void)
{
static guint32 serial = 0;
g_atomic_int_inc (&serial);
return serial;
}
static gboolean
native_dispatch_timeout (GSource *source,
GSourceFunc callback,
gpointer user_data)
{
MetaIdleMonitorWatchNative *watch_native = user_data;
MetaIdleMonitorWatch *watch = (MetaIdleMonitorWatch *) watch_native;
_meta_idle_monitor_watch_fire (watch);
g_source_set_ready_time (watch_native->timeout_source, -1);
return TRUE;
}
static GSourceFuncs native_source_funcs = {
NULL, /* prepare */
NULL, /* check */
native_dispatch_timeout,
NULL, /* finalize */
};
static void
free_watch (gpointer data)
{
MetaIdleMonitorWatchNative *watch_native = data;
MetaIdleMonitorWatch *watch = (MetaIdleMonitorWatch *) watch_native;
MetaIdleMonitor *monitor = watch->monitor;
g_object_ref (monitor);
if (watch->idle_source_id)
{
g_source_remove (watch->idle_source_id);
watch->idle_source_id = 0;
}
if (watch->notify != NULL)
watch->notify (watch->user_data);
if (watch_native->timeout_source != NULL)
g_source_destroy (watch_native->timeout_source);
g_object_unref (monitor);
g_slice_free (MetaIdleMonitorWatchNative, watch_native);
}
static MetaIdleMonitorWatch *
meta_idle_monitor_native_make_watch (MetaIdleMonitor *monitor,
guint64 timeout_msec,
MetaIdleMonitorWatchFunc callback,
gpointer user_data,
GDestroyNotify notify)
{
MetaIdleMonitorWatchNative *watch_native;
MetaIdleMonitorWatch *watch;
MetaIdleMonitorNative *monitor_native = META_IDLE_MONITOR_NATIVE (monitor);
watch_native = g_slice_new0 (MetaIdleMonitorWatchNative);
watch = (MetaIdleMonitorWatch *) watch_native;
watch->monitor = monitor;
watch->id = get_next_watch_serial ();
watch->callback = callback;
watch->user_data = user_data;
watch->notify = notify;
watch->timeout_msec = timeout_msec;
if (timeout_msec != 0)
{
GSource *source = g_source_new (&native_source_funcs, sizeof (GSource));
g_source_set_callback (source, NULL, watch, NULL);
g_source_set_ready_time (source, monitor_native->last_event_time + timeout_msec * 1000);
g_source_attach (source, NULL);
g_source_unref (source);
watch_native->timeout_source = source;
}
return watch;
}
static void
meta_idle_monitor_native_class_init (MetaIdleMonitorNativeClass *klass)
{
MetaIdleMonitorClass *idle_monitor_class = META_IDLE_MONITOR_CLASS (klass);
idle_monitor_class->get_idletime = meta_idle_monitor_native_get_idletime;
idle_monitor_class->make_watch = meta_idle_monitor_native_make_watch;
}
static void
meta_idle_monitor_native_init (MetaIdleMonitorNative *monitor_native)
{
MetaIdleMonitor *monitor = META_IDLE_MONITOR (monitor_native);
monitor->watches = g_hash_table_new_full (NULL, NULL, NULL, free_watch);
monitor_native->last_event_time = g_get_monotonic_time ();
}
void
meta_idle_monitor_native_reset_idletime (MetaIdleMonitor *monitor)
{
MetaIdleMonitorNative *monitor_native = META_IDLE_MONITOR_NATIVE (monitor);
GList *node, *watch_ids;
monitor_native->last_event_time = g_get_monotonic_time ();
watch_ids = g_hash_table_get_keys (monitor->watches);
for (node = watch_ids; node != NULL; node = node->next)
{
guint watch_id = GPOINTER_TO_UINT (node->data);
MetaIdleMonitorWatchNative *watch;
watch = g_hash_table_lookup (monitor->watches, GUINT_TO_POINTER (watch_id));
if (!watch)
continue;
if (watch->base.timeout_msec == 0)
{
_meta_idle_monitor_watch_fire ((MetaIdleMonitorWatch *) watch);
}
else
{
g_source_set_ready_time (watch->timeout_source,
monitor_native->last_event_time +
watch->base.timeout_msec * 1000);
}
}
g_list_free (watch_ids);
}

View File

@@ -1,43 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright 2013 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, see <http://www.gnu.org/licenses/>.
*
* Adapted from gnome-session/gnome-session/gs-idle-monitor.c and
* from gnome-desktop/libgnome-desktop/gnome-idle-monitor.c
*/
#ifndef META_IDLE_MONITOR_NATIVE_H
#define META_IDLE_MONITOR_NATIVE_H
#include <glib-object.h>
#include <meta/meta-idle-monitor.h>
#define META_TYPE_IDLE_MONITOR_NATIVE (meta_idle_monitor_native_get_type ())
#define META_IDLE_MONITOR_NATIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_IDLE_MONITOR_NATIVE, MetaIdleMonitorNative))
#define META_IDLE_MONITOR_NATIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_IDLE_MONITOR_NATIVE, MetaIdleMonitorNativeClass))
#define META_IS_IDLE_MONITOR_NATIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_IDLE_MONITOR_NATIVE))
#define META_IS_IDLE_MONITOR_NATIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_IDLE_MONITOR_NATIVE))
#define META_IDLE_MONITOR_NATIVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_IDLE_MONITOR_NATIVE, MetaIdleMonitorNativeClass))
typedef struct _MetaIdleMonitorNative MetaIdleMonitorNative;
typedef struct _MetaIdleMonitorNativeClass MetaIdleMonitorNativeClass;
GType meta_idle_monitor_native_get_type (void);
void meta_idle_monitor_native_reset_idletime (MetaIdleMonitor *monitor);
#endif /* META_IDLE_MONITOR_NATIVE_H */

View File

@@ -44,7 +44,6 @@
#include "backends/meta-backend-private.h" #include "backends/meta-backend-private.h"
#include "backends/native/meta-backend-native.h" #include "backends/native/meta-backend-native.h"
#include "meta-cursor-renderer-native.h" #include "meta-cursor-renderer-native.h"
#include "meta-idle-monitor-native.h"
#include "meta-renderer-native.h" #include "meta-renderer-native.h"
struct _MetaLauncher struct _MetaLauncher

View File

@@ -674,7 +674,7 @@ meta_monitor_manager_kms_initable_init (GInitable *initable,
gpu_paths = get_gpu_paths (manager_kms, GPU_TYPE_SECONDARY, primary_gpu_path); gpu_paths = get_gpu_paths (manager_kms, GPU_TYPE_SECONDARY, primary_gpu_path);
for (l = gpu_paths; l; l = l->next) for (l = gpu_paths; l; l = l->next)
{ {
GError *secondary_error = NULL; g_autoptr (GError) secondary_error = NULL;
char *gpu_path = l->data; char *gpu_path = l->data;
MetaGpuKms *gpu_kms; MetaGpuKms *gpu_kms;
@@ -683,7 +683,7 @@ meta_monitor_manager_kms_initable_init (GInitable *initable,
{ {
g_warning ("Failed to open secondary gpu '%s': %s", g_warning ("Failed to open secondary gpu '%s': %s",
gpu_path, secondary_error->message); gpu_path, secondary_error->message);
g_error_free (secondary_error); continue;
} }
meta_monitor_manager_add_gpu (META_MONITOR_MANAGER (manager_kms), meta_monitor_manager_add_gpu (META_MONITOR_MANAGER (manager_kms),

View File

@@ -77,7 +77,8 @@ create_egl_image (MetaEgl *egl,
attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT; attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
attribs[atti++] = format; attribs[atti++] = format;
has_modifier = (modifiers[0] != DRM_FORMAT_MOD_INVALID); has_modifier = (modifiers[0] != DRM_FORMAT_MOD_INVALID &&
modifiers[0] != DRM_FORMAT_MOD_LINEAR);
if (n_planes > 0) if (n_planes > 0)
{ {
@@ -106,9 +107,9 @@ create_egl_image (MetaEgl *egl,
attribs[atti++] = strides[1]; attribs[atti++] = strides[1];
if (has_modifier) if (has_modifier)
{ {
attribs[atti++] = EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT; attribs[atti++] = EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT;
attribs[atti++] = modifiers[1] & 0xFFFFFFFF; attribs[atti++] = modifiers[1] & 0xFFFFFFFF;
attribs[atti++] = EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT; attribs[atti++] = EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT;
attribs[atti++] = modifiers[1] >> 32; attribs[atti++] = modifiers[1] >> 32;
} }
} }
@@ -123,9 +124,9 @@ create_egl_image (MetaEgl *egl,
attribs[atti++] = strides[2]; attribs[atti++] = strides[2];
if (has_modifier) if (has_modifier)
{ {
attribs[atti++] = EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT; attribs[atti++] = EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT;
attribs[atti++] = modifiers[2] & 0xFFFFFFFF; attribs[atti++] = modifiers[2] & 0xFFFFFFFF;
attribs[atti++] = EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT; attribs[atti++] = EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT;
attribs[atti++] = modifiers[2] >> 32; attribs[atti++] = modifiers[2] >> 32;
} }
} }
@@ -190,9 +191,9 @@ meta_renderer_native_gles3_blit_shared_bo (MetaEgl *egl,
unsigned int width; unsigned int width;
unsigned int height; unsigned int height;
uint32_t i, n_planes; uint32_t i, n_planes;
uint32_t strides[4] = { 0, }; uint32_t strides[4] = { 0 };
uint32_t offsets[4] = { 0, }; uint32_t offsets[4] = { 0 };
uint64_t modifiers[4] = { 0, }; uint64_t modifiers[4] = { 0 };
uint32_t format; uint32_t format;
EGLImageKHR egl_image; EGLImageKHR egl_image;

View File

@@ -193,6 +193,8 @@ struct _MetaRendererNative
MetaMonitorManagerKms *monitor_manager_kms; MetaMonitorManagerKms *monitor_manager_kms;
MetaGles3 *gles3; MetaGles3 *gles3;
gboolean use_modifiers;
GHashTable *gpu_datas; GHashTable *gpu_datas;
CoglClosure *swap_notify_idle; CoglClosure *swap_notify_idle;
@@ -310,6 +312,247 @@ meta_onscreen_native_get_egl (MetaOnscreenNative *onscreen_native)
return meta_renderer_native_get_egl (onscreen_native->renderer_native); return meta_renderer_native_get_egl (onscreen_native->renderer_native);
} }
static GArray *
get_supported_kms_modifiers (CoglOnscreen *onscreen,
MetaGpu *gpu,
uint32_t format)
{
CoglOnscreenEGL *onscreen_egl = onscreen->winsys;
MetaOnscreenNative *onscreen_native = onscreen_egl->platform;
MetaLogicalMonitor *logical_monitor = onscreen_native->logical_monitor;
GArray *modifiers;
GArray *base_mods;
GList *l_crtc;
MetaCrtc *base_crtc = NULL;
GList *other_crtcs = NULL;
unsigned int i;
if (!logical_monitor)
return NULL;
/* Find our base CRTC to intersect against. */
for (l_crtc = meta_gpu_get_crtcs (gpu); l_crtc; l_crtc = l_crtc->next)
{
MetaCrtc *crtc = l_crtc->data;
if (crtc->logical_monitor != logical_monitor)
continue;
if (!base_crtc)
base_crtc = crtc;
else if (crtc == base_crtc)
continue;
else if (g_list_index (other_crtcs, crtc) == -1)
other_crtcs = g_list_append (other_crtcs, crtc);
}
if (!base_crtc)
goto out;
base_mods = meta_crtc_kms_get_modifiers (base_crtc, format);
if (!base_mods)
goto out;
/*
* If this is the only CRTC we have, we don't need to intersect the sets of
* modifiers.
*/
if (other_crtcs == NULL)
{
modifiers = g_array_sized_new (FALSE, FALSE, sizeof (uint64_t),
base_mods->len);
g_array_append_vals (modifiers, base_mods->data, base_mods->len);
return modifiers;
}
modifiers = g_array_new (FALSE, FALSE, sizeof (uint64_t));
/*
* For each modifier from base_crtc, check if it's available on all other
* CRTCs.
*/
for (i = 0; i < base_mods->len; i++)
{
uint64_t modifier = g_array_index (base_mods, uint64_t, i);
gboolean found_everywhere = TRUE;
GList *k;
/* Check if we have the same modifier available for all CRTCs. */
for (k = other_crtcs; k; k = k->next)
{
MetaCrtc *crtc = k->data;
GArray *crtc_mods;
unsigned int m;
gboolean found_here = FALSE;
if (crtc->logical_monitor != logical_monitor)
continue;
crtc_mods = meta_crtc_kms_get_modifiers (crtc, format);
if (!crtc_mods)
{
g_array_free (modifiers, TRUE);
goto out;
}
for (m = 0; m < crtc_mods->len; m++)
{
uint64_t local_mod = g_array_index (crtc_mods, uint64_t, m);
if (local_mod == modifier)
{
found_here = TRUE;
break;
}
}
if (!found_here)
{
found_everywhere = FALSE;
break;
}
}
if (found_everywhere)
g_array_append_val (modifiers, modifier);
}
if (modifiers->len == 0)
{
g_array_free (modifiers, TRUE);
goto out;
}
return modifiers;
out:
g_list_free (other_crtcs);
return NULL;
}
static GArray *
get_supported_egl_modifiers (CoglOnscreen *onscreen,
MetaGpu *gpu,
uint32_t format)
{
CoglOnscreenEGL *onscreen_egl = onscreen->winsys;
MetaOnscreenNative *onscreen_native = onscreen_egl->platform;
MetaRendererNative *renderer_native = onscreen_native->renderer_native;
MetaEgl *egl = meta_onscreen_native_get_egl (onscreen_native);
MetaRendererNativeGpuData *renderer_gpu_data;
EGLint num_modifiers;
GArray *modifiers;
GError *error = NULL;
gboolean ret;
renderer_gpu_data = meta_renderer_native_get_gpu_data (renderer_native,
META_GPU_KMS (gpu));
if (!meta_egl_has_extensions (egl, renderer_gpu_data->egl_display, NULL,
"EGL_EXT_image_dma_buf_import_modifiers",
NULL))
return NULL;
ret = meta_egl_query_dma_buf_modifiers (egl, renderer_gpu_data->egl_display,
format, 0, NULL, NULL,
&num_modifiers, NULL);
if (!ret || num_modifiers == 0)
return NULL;
modifiers = g_array_sized_new (FALSE, FALSE, sizeof (uint64_t),
num_modifiers);
ret = meta_egl_query_dma_buf_modifiers (egl, renderer_gpu_data->egl_display,
format, num_modifiers,
(EGLuint64KHR *) modifiers->data, NULL,
&num_modifiers, &error);
if (!ret)
{
g_warning ("Failed to query DMABUF modifiers: %s", error->message);
g_error_free (error);
g_array_free (modifiers, TRUE);
return NULL;
}
return modifiers;
}
static GArray *
get_supported_modifiers (CoglOnscreen *onscreen,
uint32_t format)
{
CoglOnscreenEGL *onscreen_egl = onscreen->winsys;
MetaOnscreenNative *onscreen_native = onscreen_egl->platform;
MetaLogicalMonitor *logical_monitor = onscreen_native->logical_monitor;
GArray *modifiers = NULL;
GArray *gpu_mods;
GList *l_monitor;
unsigned int i;
if (!logical_monitor)
return NULL;
/* Find our base CRTC to intersect against. */
for (l_monitor = meta_logical_monitor_get_monitors (logical_monitor);
l_monitor;
l_monitor = l_monitor->next)
{
MetaMonitor *monitor = l_monitor->data;
MetaGpu *gpu = meta_monitor_get_gpu (monitor);
if (gpu == META_GPU (onscreen_native->render_gpu))
gpu_mods = get_supported_kms_modifiers (onscreen, gpu, format);
else
gpu_mods = get_supported_egl_modifiers (onscreen, gpu, format);
if (!gpu_mods)
{
g_array_free (modifiers, TRUE);
return NULL;
}
if (!modifiers)
{
modifiers = gpu_mods;
continue;
}
for (i = 0; i < modifiers->len; i++)
{
uint64_t modifier = g_array_index (modifiers, uint64_t, i);
gboolean found = FALSE;
unsigned int m;
for (m = 0; m < gpu_mods->len; m++)
{
uint64_t gpu_mod = g_array_index (gpu_mods, uint64_t, m);
if (gpu_mod == modifier)
{
found = TRUE;
break;
}
}
if (!found)
{
g_array_remove_index_fast (modifiers, i);
i--;
}
}
g_array_free (gpu_mods, TRUE);
}
if (modifiers && modifiers->len == 0)
{
g_array_free (modifiers, TRUE);
return NULL;
}
return modifiers;
}
static gboolean static gboolean
init_secondary_gpu_state_gpu_copy_mode (MetaRendererNative *renderer_native, init_secondary_gpu_state_gpu_copy_mode (MetaRendererNative *renderer_native,
CoglOnscreen *onscreen, CoglOnscreen *onscreen,
@@ -693,6 +936,73 @@ meta_renderer_native_add_egl_config_attributes (CoglDisplay *cogl_disp
return i; return i;
} }
static gboolean
choose_egl_config_from_gbm_format (MetaEgl *egl,
EGLDisplay egl_display,
const EGLint *attributes,
uint32_t gbm_format,
EGLConfig *out_config,
GError **error)
{
EGLConfig *egl_configs;
EGLint n_configs;
EGLint i;
egl_configs = meta_egl_choose_all_configs (egl, egl_display,
attributes,
&n_configs,
error);
if (!egl_configs)
return FALSE;
for (i = 0; i < n_configs; i++)
{
EGLint visual_id;
if (!meta_egl_get_config_attrib (egl, egl_display,
egl_configs[i],
EGL_NATIVE_VISUAL_ID,
&visual_id,
error))
{
g_free (egl_configs);
return FALSE;
}
if ((uint32_t) visual_id == gbm_format)
{
*out_config = egl_configs[i];
g_free (egl_configs);
return TRUE;
}
}
g_free (egl_configs);
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"No EGL config matching supported GBM format found");
return FALSE;
}
static gboolean
meta_renderer_native_choose_egl_config (CoglDisplay *cogl_display,
EGLint *attributes,
EGLConfig *out_config,
GError **error)
{
CoglRenderer *cogl_renderer = cogl_display->renderer;
CoglRendererEGL *cogl_renderer_egl = cogl_renderer->winsys;
MetaBackend *backend = meta_get_backend ();
MetaEgl *egl = meta_backend_get_egl (backend);
EGLDisplay egl_display = cogl_renderer_egl->edpy;
return choose_egl_config_from_gbm_format (egl,
egl_display,
attributes,
GBM_FORMAT_XRGB8888,
out_config,
error);
}
static gboolean static gboolean
meta_renderer_native_setup_egl_display (CoglDisplay *cogl_display, meta_renderer_native_setup_egl_display (CoglDisplay *cogl_display,
GError **error) GError **error)
@@ -739,8 +1049,8 @@ create_dummy_pbuffer_surface (EGLDisplay egl_display,
EGL_NONE EGL_NONE
}; };
if (!meta_egl_choose_config (egl, egl_display, pbuffer_config_attribs, if (!meta_egl_choose_first_config (egl, egl_display, pbuffer_config_attribs,
&pbuffer_config, error)) &pbuffer_config, error))
return EGL_NO_SURFACE; return EGL_NO_SURFACE;
return meta_egl_create_pbuffer_surface (egl, egl_display, return meta_egl_create_pbuffer_surface (egl, egl_display,
@@ -961,6 +1271,7 @@ flip_egl_stream (MetaOnscreenNative *onscreen_native,
MetaRendererNativeGpuData *renderer_gpu_data; MetaRendererNativeGpuData *renderer_gpu_data;
EGLDisplay *egl_display; EGLDisplay *egl_display;
MetaEgl *egl = meta_onscreen_native_get_egl (onscreen_native); MetaEgl *egl = meta_onscreen_native_get_egl (onscreen_native);
MetaGpuKmsFlipClosureContainer *closure_container;
EGLAttrib *acquire_attribs; EGLAttrib *acquire_attribs;
GError *error = NULL; GError *error = NULL;
@@ -970,9 +1281,12 @@ flip_egl_stream (MetaOnscreenNative *onscreen_native,
if (renderer_gpu_data->egl.no_egl_output_drm_flip_event) if (renderer_gpu_data->egl.no_egl_output_drm_flip_event)
return FALSE; return FALSE;
closure_container =
meta_gpu_kms_wrap_flip_closure (onscreen_native->render_gpu, flip_closure);
acquire_attribs = (EGLAttrib[]) { acquire_attribs = (EGLAttrib[]) {
EGL_DRM_FLIP_EVENT_DATA_NV, EGL_DRM_FLIP_EVENT_DATA_NV,
(EGLAttrib) flip_closure, (EGLAttrib) closure_container,
EGL_NONE EGL_NONE
}; };
@@ -991,6 +1305,7 @@ flip_egl_stream (MetaOnscreenNative *onscreen_native,
renderer_gpu_data->egl.no_egl_output_drm_flip_event = TRUE; renderer_gpu_data->egl.no_egl_output_drm_flip_event = TRUE;
} }
g_error_free (error); g_error_free (error);
meta_gpu_kms_flip_closure_container_free (closure_container);
return FALSE; return FALSE;
} }
@@ -1278,6 +1593,7 @@ gbm_get_next_fb_id (MetaGpuKms *gpu_kms,
struct gbm_bo **out_next_bo, struct gbm_bo **out_next_bo,
uint32_t *out_next_fb_id) uint32_t *out_next_fb_id)
{ {
MetaRendererNative *renderer_native = meta_renderer_native_from_gpu (gpu_kms);
struct gbm_bo *next_bo; struct gbm_bo *next_bo;
uint32_t next_fb_id; uint32_t next_fb_id;
int kms_fd; int kms_fd;
@@ -1290,6 +1606,12 @@ gbm_get_next_fb_id (MetaGpuKms *gpu_kms,
/* Now we need to set the CRTC to whatever is the front buffer */ /* Now we need to set the CRTC to whatever is the front buffer */
next_bo = gbm_surface_lock_front_buffer (gbm_surface); next_bo = gbm_surface_lock_front_buffer (gbm_surface);
if (!next_bo)
{
g_error ("Impossible to lock surface front buffer: %m");
return FALSE;
}
for (i = 0; i < gbm_bo_get_plane_count (next_bo); i++) for (i = 0; i < gbm_bo_get_plane_count (next_bo); i++)
{ {
strides[i] = gbm_bo_get_stride_for_plane (next_bo, i); strides[i] = gbm_bo_get_stride_for_plane (next_bo, i);
@@ -1300,7 +1622,8 @@ gbm_get_next_fb_id (MetaGpuKms *gpu_kms,
kms_fd = meta_gpu_kms_get_fd (gpu_kms); kms_fd = meta_gpu_kms_get_fd (gpu_kms);
if (modifiers[0] != DRM_FORMAT_MOD_INVALID) if (renderer_native->use_modifiers &&
modifiers[0] != DRM_FORMAT_MOD_INVALID)
{ {
if (drmModeAddFB2WithModifiers (kms_fd, if (drmModeAddFB2WithModifiers (kms_fd,
gbm_bo_get_width (next_bo), gbm_bo_get_width (next_bo),
@@ -1546,18 +1869,18 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
frame_info = g_queue_peek_tail (&onscreen->pending_frame_infos); frame_info = g_queue_peek_tail (&onscreen->pending_frame_infos);
frame_info->global_frame_counter = renderer_native->frame_counter; frame_info->global_frame_counter = renderer_native->frame_counter;
/*
* Wait for the flip callback before continuing, as we might have started the
* animation earlier due to the animation being driven by some other monitor.
*/
wait_for_pending_flips (onscreen);
update_secondary_gpu_state_pre_swap_buffers (onscreen); update_secondary_gpu_state_pre_swap_buffers (onscreen);
parent_vtable->onscreen_swap_buffers_with_damage (onscreen, parent_vtable->onscreen_swap_buffers_with_damage (onscreen,
rectangles, rectangles,
n_rectangles); n_rectangles);
/*
* Wait for the flip callback before continuing, as we might have started the
* animation earlier due to the animation being driven by some other monitor.
*/
wait_for_pending_flips (onscreen);
renderer_gpu_data = meta_renderer_native_get_gpu_data (renderer_native, renderer_gpu_data = meta_renderer_native_get_gpu_data (renderer_native,
render_gpu); render_gpu);
switch (renderer_gpu_data->mode) switch (renderer_gpu_data->mode)
@@ -1599,12 +1922,7 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
* context. * context.
*/ */
if (egl_context_changed) if (egl_context_changed)
{ _cogl_winsys_egl_ensure_current (cogl_display);
_cogl_winsys_egl_make_current (cogl_display,
EGL_NO_SURFACE,
EGL_NO_SURFACE,
EGL_NO_CONTEXT);
}
} }
static gboolean static gboolean
@@ -1639,146 +1957,6 @@ meta_renderer_native_init_egl_context (CoglContext *cogl_context,
return TRUE; return TRUE;
} }
static GArray *
get_supported_modifiers (CoglOnscreen *onscreen,
uint32_t format)
{
CoglOnscreenEGL *onscreen_egl = onscreen->winsys;
MetaOnscreenNative *onscreen_native = onscreen_egl->platform;
MetaRendererNative *renderer_native = onscreen_native->renderer_native;
MetaLogicalMonitor *logical_monitor = onscreen_native->logical_monitor;
MetaEgl *egl = meta_onscreen_native_get_egl (onscreen_native);
CoglContext *cogl_context = COGL_FRAMEBUFFER (onscreen)->context;
CoglRenderer *cogl_renderer = cogl_context->display->renderer;
CoglRendererEGL *cogl_renderer_egl = cogl_renderer->winsys;
GArray *modifiers;
GArray *base_mods;
GList *l_crtc, *l_monitor;
MetaCrtc *base_crtc = NULL;
GList *other_crtcs = NULL;
unsigned int i;
if (!logical_monitor)
return NULL;
/* Find our base CRTC to intersect against. */
for (l_monitor = meta_logical_monitor_get_monitors (logical_monitor);
l_monitor;
l_monitor = l_monitor->next)
{
MetaMonitor *monitor = l_monitor->data;
MetaGpu *gpu = meta_monitor_get_gpu (monitor);
MetaRendererNativeGpuData *renderer_gpu_data;
/* All secondary GPUs need to be able to import DMA BUF with modifiers */
renderer_gpu_data = meta_renderer_native_get_gpu_data (renderer_native,
META_GPU_KMS (gpu));
if (cogl_renderer_egl->platform != renderer_gpu_data &&
!meta_egl_has_extensions (egl, renderer_gpu_data->egl_display, NULL,
"EGL_EXT_image_dma_buf_import_modifiers",
NULL))
goto out;
for (l_crtc = meta_gpu_get_crtcs (gpu); l_crtc; l_crtc = l_crtc->next)
{
MetaCrtc *crtc = l_crtc->data;
if (crtc->logical_monitor != logical_monitor)
continue;
if (!base_crtc)
base_crtc = crtc;
else if (crtc == base_crtc)
continue;
else if (g_list_index (other_crtcs, crtc) == -1)
other_crtcs = g_list_append (other_crtcs, crtc);
}
}
if (!base_crtc)
goto out;
base_mods = meta_crtc_kms_get_modifiers (base_crtc, format);
if (!base_mods)
goto out;
/*
* If this is the only CRTC we have, we don't need to intersect the sets of
* modifiers.
*/
if (other_crtcs == NULL)
{
modifiers = g_array_sized_new (FALSE, FALSE, sizeof (uint64_t),
base_mods->len);
g_array_append_vals (modifiers, base_mods->data, base_mods->len);
return modifiers;
}
modifiers = g_array_new (FALSE, FALSE, sizeof (uint64_t));
/*
* For each modifier from base_crtc, check if it's available on all other
* CRTCs.
*/
for (i = 0; i < base_mods->len; i++)
{
uint64_t modifier = g_array_index (base_mods, uint64_t, i);
gboolean found_everywhere = TRUE;
GList *k;
/* Check if we have the same modifier available for all CRTCs. */
for (k = other_crtcs; k; k = k->next)
{
MetaCrtc *crtc = k->data;
GArray *crtc_mods;
unsigned int m;
gboolean found_here = FALSE;
if (crtc->logical_monitor != logical_monitor)
continue;
crtc_mods = meta_crtc_kms_get_modifiers (crtc, format);
if (!crtc_mods)
{
g_array_free (modifiers, TRUE);
goto out;
}
for (m = 0; m < crtc_mods->len; m++)
{
uint64_t local_mod = g_array_index (crtc_mods, uint64_t, m);
if (local_mod == modifier)
{
found_here = TRUE;
break;
}
}
if (!found_here)
{
found_everywhere = FALSE;
break;
}
}
if (found_everywhere)
g_array_append_val (modifiers, modifier);
}
if (modifiers->len == 0)
{
g_array_free (modifiers, TRUE);
goto out;
}
return modifiers;
out:
g_list_free (other_crtcs);
return NULL;
}
static gboolean static gboolean
should_surface_be_sharable (CoglOnscreen *onscreen) should_surface_be_sharable (CoglOnscreen *onscreen)
{ {
@@ -1828,7 +2006,7 @@ meta_renderer_native_create_surface_gbm (CoglOnscreen *onscreen,
CoglRenderer *cogl_renderer = cogl_display->renderer; CoglRenderer *cogl_renderer = cogl_display->renderer;
CoglRendererEGL *cogl_renderer_egl = cogl_renderer->winsys; CoglRendererEGL *cogl_renderer_egl = cogl_renderer->winsys;
MetaRendererNativeGpuData *renderer_gpu_data = cogl_renderer_egl->platform; MetaRendererNativeGpuData *renderer_gpu_data = cogl_renderer_egl->platform;
struct gbm_surface *new_gbm_surface; struct gbm_surface *new_gbm_surface = NULL;
EGLNativeWindowType egl_native_window; EGLNativeWindowType egl_native_window;
EGLSurface new_egl_surface; EGLSurface new_egl_surface;
uint32_t format = GBM_FORMAT_XRGB8888; uint32_t format = GBM_FORMAT_XRGB8888;
@@ -1838,7 +2016,10 @@ meta_renderer_native_create_surface_gbm (CoglOnscreen *onscreen,
meta_renderer_native_get_gpu_data (renderer_native, meta_renderer_native_get_gpu_data (renderer_native,
onscreen_native->render_gpu); onscreen_native->render_gpu);
modifiers = get_supported_modifiers (onscreen, format); if (renderer_native->use_modifiers)
modifiers = get_supported_modifiers (onscreen, format);
else
modifiers = NULL;
if (modifiers) if (modifiers)
{ {
@@ -1849,7 +2030,8 @@ meta_renderer_native_create_surface_gbm (CoglOnscreen *onscreen,
modifiers->len); modifiers->len);
g_array_free (modifiers, TRUE); g_array_free (modifiers, TRUE);
} }
else
if (!new_gbm_surface)
{ {
uint32_t flags = GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING; uint32_t flags = GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING;
@@ -2307,6 +2489,7 @@ meta_renderer_native_release_onscreen (CoglOnscreen *onscreen)
static const CoglWinsysEGLVtable static const CoglWinsysEGLVtable
_cogl_winsys_egl_vtable = { _cogl_winsys_egl_vtable = {
.add_config_attributes = meta_renderer_native_add_egl_config_attributes, .add_config_attributes = meta_renderer_native_add_egl_config_attributes,
.choose_config = meta_renderer_native_choose_egl_config,
.display_setup = meta_renderer_native_setup_egl_display, .display_setup = meta_renderer_native_setup_egl_display,
.display_destroy = meta_renderer_native_destroy_egl_display, .display_destroy = meta_renderer_native_destroy_egl_display,
.context_created = meta_renderer_native_egl_context_created, .context_created = meta_renderer_native_egl_context_created,
@@ -2745,11 +2928,12 @@ create_secondary_egl_config (MetaEgl *egl,
EGL_NONE EGL_NONE
}; };
return meta_egl_choose_config (egl, return choose_egl_config_from_gbm_format (egl,
egl_display, egl_display,
attributes, attributes,
egl_config, GBM_FORMAT_XRGB8888,
error); egl_config,
error);
} }
static EGLContext static EGLContext
@@ -3219,6 +3403,22 @@ meta_renderer_native_finalize (GObject *object)
G_OBJECT_CLASS (meta_renderer_native_parent_class)->finalize (object); G_OBJECT_CLASS (meta_renderer_native_parent_class)->finalize (object);
} }
static void
meta_renderer_native_constructed (GObject *object)
{
MetaRendererNative *renderer_native = META_RENDERER_NATIVE (object);
MetaMonitorManager *monitor_manager =
META_MONITOR_MANAGER (renderer_native->monitor_manager_kms);
MetaBackend *backend = meta_monitor_manager_get_backend (monitor_manager);
MetaSettings *settings = meta_backend_get_settings (backend);
if (meta_settings_is_experimental_feature_enabled (
settings, META_EXPERIMENTAL_FEATURE_KMS_MODIFIERS))
renderer_native->use_modifiers = TRUE;
G_OBJECT_CLASS (meta_renderer_native_parent_class)->constructed (object);
}
static void static void
meta_renderer_native_init (MetaRendererNative *renderer_native) meta_renderer_native_init (MetaRendererNative *renderer_native)
{ {
@@ -3237,6 +3437,7 @@ meta_renderer_native_class_init (MetaRendererNativeClass *klass)
object_class->get_property = meta_renderer_native_get_property; object_class->get_property = meta_renderer_native_get_property;
object_class->set_property = meta_renderer_native_set_property; object_class->set_property = meta_renderer_native_set_property;
object_class->finalize = meta_renderer_native_finalize; object_class->finalize = meta_renderer_native_finalize;
object_class->constructed = meta_renderer_native_constructed;
renderer_class->create_cogl_renderer = meta_renderer_native_create_cogl_renderer; renderer_class->create_cogl_renderer = meta_renderer_native_create_cogl_renderer;
renderer_class->create_view = meta_renderer_native_create_view; renderer_class->create_view = meta_renderer_native_create_view;

View File

@@ -37,8 +37,7 @@
#include <X11/Xlib-xcb.h> #include <X11/Xlib-xcb.h>
#include <xkbcommon/xkbcommon-x11.h> #include <xkbcommon/xkbcommon-x11.h>
#include "meta-idle-monitor-xsync.h" #include "backends/meta-stage-private.h"
#include "backends/meta-stage.h"
#include "backends/x11/meta-clutter-backend-x11.h" #include "backends/x11/meta-clutter-backend-x11.h"
#include "backends/x11/meta-renderer-x11.h" #include "backends/x11/meta-renderer-x11.h"
#include "meta/meta-cursor-tracker.h" #include "meta/meta-cursor-tracker.h"
@@ -47,6 +46,7 @@
#include "display-private.h" #include "display-private.h"
#include "compositor/compositor-private.h" #include "compositor/compositor-private.h"
#include "backends/meta-dnd-private.h" #include "backends/meta-dnd-private.h"
#include "backends/meta-idle-monitor-private.h"
struct _MetaBackendX11Private struct _MetaBackendX11Private
{ {
@@ -57,6 +57,8 @@ struct _MetaBackendX11Private
int xsync_event_base; int xsync_event_base;
int xsync_error_base; int xsync_error_base;
XSyncAlarm user_active_alarm;
XSyncCounter counter;
int xinput_opcode; int xinput_opcode;
int xinput_event_base; int xinput_event_base;
@@ -83,13 +85,77 @@ G_DEFINE_TYPE_WITH_CODE (MetaBackendX11, meta_backend_x11, META_TYPE_BACKEND,
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
initable_iface_init)); initable_iface_init));
static void static void
handle_alarm_notify (MetaBackend *backend, uint64_to_xsync_value (uint64_t value,
XEvent *event) XSyncValue *xsync_value)
{ {
meta_backend_foreach_device_monitor (backend, XSyncIntsToValue (xsync_value, value & 0xffffffff, value >> 32);
(GFunc) meta_idle_monitor_xsync_handle_xevent, }
event);
static XSyncAlarm
xsync_user_active_alarm_set (MetaBackendX11Private *priv)
{
XSyncAlarmAttributes attr;
XSyncValue delta;
unsigned long flags;
flags = (XSyncCACounter | XSyncCAValueType | XSyncCATestType |
XSyncCAValue | XSyncCADelta | XSyncCAEvents);
XSyncIntToValue (&delta, 0);
attr.trigger.counter = priv->counter;
attr.trigger.value_type = XSyncAbsolute;
attr.delta = delta;
attr.events = TRUE;
uint64_to_xsync_value (1, &attr.trigger.wait_value);
attr.trigger.test_type = XSyncNegativeTransition;
return XSyncCreateAlarm (priv->xdisplay, flags, &attr);
}
static XSyncCounter
find_idletime_counter (MetaBackendX11Private *priv)
{
int i;
int n_counters;
XSyncSystemCounter *counters;
XSyncCounter counter = None;
counters = XSyncListSystemCounters (priv->xdisplay, &n_counters);
for (i = 0; i < n_counters; i++)
{
if (g_strcmp0 (counters[i].name, "IDLETIME") == 0)
{
counter = counters[i].counter;
break;
}
}
XSyncFreeSystemCounterList (counters);
return counter;
}
static void
handle_alarm_notify (MetaBackend *backend,
XSyncAlarmNotifyEvent *alarm_event)
{
MetaBackendX11 *x11 = META_BACKEND_X11 (backend);
MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
MetaIdleMonitor *idle_monitor;
XSyncAlarmAttributes attr;
if (alarm_event->state != XSyncAlarmActive ||
alarm_event->alarm != priv->user_active_alarm)
return;
attr.events = TRUE;
XSyncChangeAlarm (priv->xdisplay, priv->user_active_alarm,
XSyncCAEvents, &attr);
idle_monitor = meta_backend_get_idle_monitor (backend, 0);
meta_idle_monitor_reset_idletime (idle_monitor);
} }
static void static void
@@ -275,7 +341,7 @@ handle_host_xevent (MetaBackend *backend,
bypass_clutter); bypass_clutter);
if (event->type == (priv->xsync_event_base + XSyncAlarmNotify)) if (event->type == (priv->xsync_event_base + XSyncAlarmNotify))
handle_alarm_notify (backend, event); handle_alarm_notify (backend, (XSyncAlarmNotifyEvent *) event);
if (event->type == priv->xkb_event_base) if (event->type == priv->xkb_event_base)
{ {
@@ -423,6 +489,12 @@ meta_backend_x11_post_init (MetaBackend *backend)
!XSyncInitialize (priv->xdisplay, &major, &minor)) !XSyncInitialize (priv->xdisplay, &major, &minor))
meta_fatal ("Could not initialize XSync"); meta_fatal ("Could not initialize XSync");
priv->counter = find_idletime_counter (priv);
if (priv->counter == None)
meta_fatal ("Could not initialize XSync counter");
priv->user_active_alarm = xsync_user_active_alarm_set (priv);
if (XQueryExtension (priv->xdisplay, if (XQueryExtension (priv->xdisplay,
"XInputExtension", "XInputExtension",
&priv->xinput_opcode, &priv->xinput_opcode,
@@ -464,15 +536,6 @@ meta_backend_x11_create_clutter_backend (MetaBackend *backend)
return g_object_new (META_TYPE_CLUTTER_BACKEND_X11, NULL); return g_object_new (META_TYPE_CLUTTER_BACKEND_X11, NULL);
} }
static MetaIdleMonitor *
meta_backend_x11_create_idle_monitor (MetaBackend *backend,
int device_id)
{
return g_object_new (META_TYPE_IDLE_MONITOR_XSYNC,
"device-id", device_id,
NULL);
}
static gboolean static gboolean
meta_backend_x11_grab_device (MetaBackend *backend, meta_backend_x11_grab_device (MetaBackend *backend,
int device_id, int device_id,
@@ -679,14 +742,30 @@ initable_iface_init (GInitableIface *initable_iface)
initable_iface->init = meta_backend_x11_initable_init; initable_iface->init = meta_backend_x11_initable_init;
} }
static void
meta_backend_x11_finalize (GObject *object)
{
MetaBackendX11 *x11 = META_BACKEND_X11 (object);
MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
if (priv->user_active_alarm != None)
{
XSyncDestroyAlarm (priv->xdisplay, priv->user_active_alarm);
priv->user_active_alarm = None;
}
G_OBJECT_CLASS (meta_backend_x11_parent_class)->finalize (object);
}
static void static void
meta_backend_x11_class_init (MetaBackendX11Class *klass) meta_backend_x11_class_init (MetaBackendX11Class *klass)
{ {
MetaBackendClass *backend_class = META_BACKEND_CLASS (klass); MetaBackendClass *backend_class = META_BACKEND_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = meta_backend_x11_finalize;
backend_class->create_clutter_backend = meta_backend_x11_create_clutter_backend; backend_class->create_clutter_backend = meta_backend_x11_create_clutter_backend;
backend_class->post_init = meta_backend_x11_post_init; backend_class->post_init = meta_backend_x11_post_init;
backend_class->create_idle_monitor = meta_backend_x11_create_idle_monitor;
backend_class->grab_device = meta_backend_x11_grab_device; backend_class->grab_device = meta_backend_x11_grab_device;
backend_class->ungrab_device = meta_backend_x11_ungrab_device; backend_class->ungrab_device = meta_backend_x11_ungrab_device;
backend_class->warp_pointer = meta_backend_x11_warp_pointer; backend_class->warp_pointer = meta_backend_x11_warp_pointer;

View File

@@ -29,7 +29,7 @@
#include <X11/extensions/Xfixes.h> #include <X11/extensions/Xfixes.h>
#include "meta-backend-x11.h" #include "meta-backend-x11.h"
#include "meta-stage.h" #include "meta-stage-private.h"
struct _MetaCursorRendererX11Private struct _MetaCursorRendererX11Private
{ {

View File

@@ -1,373 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright 2013 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, see <http://www.gnu.org/licenses/>.
*
* Adapted from gnome-session/gnome-session/gs-idle-monitor.c and
* from gnome-desktop/libgnome-desktop/gnome-idle-monitor.c
*/
#include "config.h"
#include "meta-idle-monitor-xsync.h"
#include "meta-idle-monitor-private.h"
#include "meta-backend-x11.h"
#include <string.h>
struct _MetaIdleMonitorXSync
{
MetaIdleMonitor parent;
GHashTable *alarms;
Display *display;
XSyncCounter counter;
XSyncAlarm user_active_alarm;
};
struct _MetaIdleMonitorXSyncClass
{
MetaIdleMonitorClass parent_class;
};
typedef struct {
MetaIdleMonitorWatch base;
XSyncAlarm xalarm;
} MetaIdleMonitorWatchXSync;
G_DEFINE_TYPE (MetaIdleMonitorXSync, meta_idle_monitor_xsync, META_TYPE_IDLE_MONITOR)
static gint64
_xsyncvalue_to_int64 (XSyncValue value)
{
return ((guint64) XSyncValueHigh32 (value)) << 32
| (guint64) XSyncValueLow32 (value);
}
#define GUINT64_TO_XSYNCVALUE(value, ret) XSyncIntsToValue (ret, (value) & 0xFFFFFFFF, ((guint64)(value)) >> 32)
static XSyncAlarm
_xsync_alarm_set (MetaIdleMonitorXSync *monitor_xsync,
XSyncTestType test_type,
guint64 interval,
gboolean want_events)
{
XSyncAlarmAttributes attr;
XSyncValue delta;
guint flags;
flags = XSyncCACounter | XSyncCAValueType | XSyncCATestType |
XSyncCAValue | XSyncCADelta | XSyncCAEvents;
XSyncIntToValue (&delta, 0);
attr.trigger.counter = monitor_xsync->counter;
attr.trigger.value_type = XSyncAbsolute;
attr.delta = delta;
attr.events = want_events;
GUINT64_TO_XSYNCVALUE (interval, &attr.trigger.wait_value);
attr.trigger.test_type = test_type;
return XSyncCreateAlarm (monitor_xsync->display, flags, &attr);
}
static void
ensure_alarm_rescheduled (Display *dpy,
XSyncAlarm alarm)
{
XSyncAlarmAttributes attr;
/* Some versions of Xorg have an issue where alarms aren't
* always rescheduled. Calling XSyncChangeAlarm, even
* without any attributes, will reschedule the alarm. */
XSyncChangeAlarm (dpy, alarm, 0, &attr);
}
static void
set_alarm_enabled (Display *dpy,
XSyncAlarm alarm,
gboolean enabled)
{
XSyncAlarmAttributes attr;
attr.events = enabled;
XSyncChangeAlarm (dpy, alarm, XSyncCAEvents, &attr);
}
static char *
counter_name_for_device (int device_id)
{
if (device_id > 0)
return g_strdup_printf ("DEVICEIDLETIME %d", device_id);
return g_strdup ("IDLETIME");
}
static XSyncCounter
find_idletime_counter (MetaIdleMonitorXSync *monitor_xsync)
{
MetaIdleMonitor *monitor = META_IDLE_MONITOR (monitor_xsync);
int i;
int ncounters;
XSyncSystemCounter *counters;
XSyncCounter counter = None;
char *counter_name;
counter_name = counter_name_for_device (monitor->device_id);
counters = XSyncListSystemCounters (monitor_xsync->display, &ncounters);
for (i = 0; i < ncounters; i++)
{
if (counters[i].name != NULL && strcmp (counters[i].name, counter_name) == 0)
{
counter = counters[i].counter;
break;
}
}
XSyncFreeSystemCounterList (counters);
g_free (counter_name);
return counter;
}
static void
init_xsync (MetaIdleMonitorXSync *monitor_xsync)
{
monitor_xsync->counter = find_idletime_counter (monitor_xsync);
/* IDLETIME counter not found? */
if (monitor_xsync->counter == None)
{
g_warning ("IDLETIME counter not found\n");
return;
}
monitor_xsync->user_active_alarm = _xsync_alarm_set (monitor_xsync, XSyncNegativeTransition, 1, FALSE);
}
static void
meta_idle_monitor_xsync_dispose (GObject *object)
{
MetaIdleMonitorXSync *monitor_xsync = META_IDLE_MONITOR_XSYNC (object);
if (monitor_xsync->user_active_alarm != None)
{
XSyncDestroyAlarm (monitor_xsync->display, monitor_xsync->user_active_alarm);
monitor_xsync->user_active_alarm = None;
}
g_clear_pointer (&monitor_xsync->alarms, g_hash_table_destroy);
G_OBJECT_CLASS (meta_idle_monitor_xsync_parent_class)->dispose (object);
}
static void
meta_idle_monitor_xsync_constructed (GObject *object)
{
MetaIdleMonitorXSync *monitor_xsync = META_IDLE_MONITOR_XSYNC (object);
MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
monitor_xsync->display = meta_backend_x11_get_xdisplay (backend);
init_xsync (monitor_xsync);
G_OBJECT_CLASS (meta_idle_monitor_xsync_parent_class)->constructed (object);
}
static gint64
meta_idle_monitor_xsync_get_idletime (MetaIdleMonitor *monitor)
{
MetaIdleMonitorXSync *monitor_xsync = META_IDLE_MONITOR_XSYNC (monitor);
XSyncValue value;
if (!XSyncQueryCounter (monitor_xsync->display, monitor_xsync->counter, &value))
return -1;
return _xsyncvalue_to_int64 (value);
}
static gboolean
fire_watch_idle (gpointer data)
{
MetaIdleMonitorWatch *watch = data;
watch->idle_source_id = 0;
_meta_idle_monitor_watch_fire (watch);
return FALSE;
}
static guint32
get_next_watch_serial (void)
{
static guint32 serial = 0;
g_atomic_int_inc (&serial);
return serial;
}
static void
free_watch (gpointer data)
{
MetaIdleMonitorWatchXSync *watch_xsync = data;
MetaIdleMonitorWatch *watch = (MetaIdleMonitorWatch *) watch_xsync;
MetaIdleMonitor *monitor = watch->monitor;
MetaIdleMonitorXSync *monitor_xsync = META_IDLE_MONITOR_XSYNC (monitor);
g_object_ref (monitor);
if (watch->idle_source_id)
{
g_source_remove (watch->idle_source_id);
watch->idle_source_id = 0;
}
if (watch->notify != NULL)
watch->notify (watch->user_data);
if (watch_xsync->xalarm != monitor_xsync->user_active_alarm &&
watch_xsync->xalarm != None)
{
XSyncDestroyAlarm (monitor_xsync->display, watch_xsync->xalarm);
g_hash_table_remove (monitor_xsync->alarms, (gpointer) watch_xsync->xalarm);
}
g_object_unref (monitor);
g_slice_free (MetaIdleMonitorWatchXSync, watch_xsync);
}
static MetaIdleMonitorWatch *
meta_idle_monitor_xsync_make_watch (MetaIdleMonitor *monitor,
guint64 timeout_msec,
MetaIdleMonitorWatchFunc callback,
gpointer user_data,
GDestroyNotify notify)
{
MetaIdleMonitorXSync *monitor_xsync = META_IDLE_MONITOR_XSYNC (monitor);
MetaIdleMonitorWatchXSync *watch_xsync;
MetaIdleMonitorWatch *watch;
watch_xsync = g_slice_new0 (MetaIdleMonitorWatchXSync);
watch = (MetaIdleMonitorWatch *) watch_xsync;
watch->monitor = monitor;
watch->id = get_next_watch_serial ();
watch->callback = callback;
watch->user_data = user_data;
watch->notify = notify;
watch->timeout_msec = timeout_msec;
if (monitor_xsync->user_active_alarm != None)
{
if (timeout_msec != 0)
{
watch_xsync->xalarm = _xsync_alarm_set (monitor_xsync, XSyncPositiveTransition, timeout_msec, TRUE);
g_hash_table_add (monitor_xsync->alarms, (gpointer) watch_xsync->xalarm);
if (meta_idle_monitor_get_idletime (monitor) > (gint64)timeout_msec)
{
watch->idle_source_id = g_idle_add (fire_watch_idle, watch);
g_source_set_name_by_id (watch->idle_source_id, "[mutter] fire_watch_idle");
}
}
else
{
watch_xsync->xalarm = monitor_xsync->user_active_alarm;
set_alarm_enabled (monitor_xsync->display, monitor_xsync->user_active_alarm, TRUE);
}
}
return watch;
}
static void
meta_idle_monitor_xsync_class_init (MetaIdleMonitorXSyncClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
MetaIdleMonitorClass *idle_monitor_class = META_IDLE_MONITOR_CLASS (klass);
object_class->dispose = meta_idle_monitor_xsync_dispose;
object_class->constructed = meta_idle_monitor_xsync_constructed;
idle_monitor_class->get_idletime = meta_idle_monitor_xsync_get_idletime;
idle_monitor_class->make_watch = meta_idle_monitor_xsync_make_watch;
}
static void
meta_idle_monitor_xsync_init (MetaIdleMonitorXSync *monitor_xsync)
{
MetaIdleMonitor *monitor = META_IDLE_MONITOR (monitor_xsync);
monitor->watches = g_hash_table_new_full (NULL, NULL, NULL, free_watch);
monitor_xsync->alarms = g_hash_table_new (NULL, NULL);
}
static void
check_x11_watches (MetaIdleMonitor *monitor,
XSyncAlarm alarm)
{
GList *node, *watch_ids;
/* we get the keys and do explicit look ups in case
* an early iteration of the loop ends up leading
* to watches from later iterations getting invalidated
*/
watch_ids = g_hash_table_get_keys (monitor->watches);
for (node = watch_ids; node != NULL; node = node->next)
{
guint watch_id = GPOINTER_TO_UINT (node->data);
MetaIdleMonitorWatchXSync *watch;
watch = g_hash_table_lookup (monitor->watches, GUINT_TO_POINTER (watch_id));
if (watch && watch->xalarm == alarm)
_meta_idle_monitor_watch_fire ((MetaIdleMonitorWatch *) watch);
}
g_list_free (watch_ids);
}
void
meta_idle_monitor_xsync_handle_xevent (MetaIdleMonitor *monitor,
XSyncAlarmNotifyEvent *alarm_event)
{
MetaIdleMonitorXSync *monitor_xsync = META_IDLE_MONITOR_XSYNC (monitor);
XSyncAlarm alarm;
gboolean has_alarm;
if (alarm_event->state != XSyncAlarmActive)
return;
alarm = alarm_event->alarm;
has_alarm = FALSE;
if (alarm == monitor_xsync->user_active_alarm)
{
set_alarm_enabled (monitor_xsync->display,
alarm,
FALSE);
has_alarm = TRUE;
}
else if (g_hash_table_contains (monitor_xsync->alarms, (gpointer) alarm))
{
ensure_alarm_rescheduled (monitor_xsync->display,
alarm);
has_alarm = TRUE;
}
if (has_alarm)
check_x11_watches (monitor, alarm);
}

View File

@@ -1,47 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright 2013 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, see <http://www.gnu.org/licenses/>.
*
* Adapted from gnome-session/gnome-session/gs-idle-monitor.c and
* from gnome-desktop/libgnome-desktop/gnome-idle-monitor.c
*/
#ifndef META_IDLE_MONITOR_XSYNC_H
#define META_IDLE_MONITOR_XSYNC_H
#include <glib-object.h>
#include <meta/meta-idle-monitor.h>
#include <X11/Xlib.h>
#include <X11/extensions/sync.h>
#define META_TYPE_IDLE_MONITOR_XSYNC (meta_idle_monitor_xsync_get_type ())
#define META_IDLE_MONITOR_XSYNC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), META_TYPE_IDLE_MONITOR_XSYNC, MetaIdleMonitorXSync))
#define META_IDLE_MONITOR_XSYNC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), META_TYPE_IDLE_MONITOR_XSYNC, MetaIdleMonitorXSyncClass))
#define META_IS_IDLE_MONITOR_XSYNC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), META_TYPE_IDLE_MONITOR_XSYNC))
#define META_IS_IDLE_MONITOR_XSYNC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), META_TYPE_IDLE_MONITOR_XSYNC))
#define META_IDLE_MONITOR_XSYNC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), META_TYPE_IDLE_MONITOR_XSYNC, MetaIdleMonitorXSyncClass))
typedef struct _MetaIdleMonitorXSync MetaIdleMonitorXSync;
typedef struct _MetaIdleMonitorXSyncClass MetaIdleMonitorXSyncClass;
GType meta_idle_monitor_xsync_get_type (void);
void meta_idle_monitor_xsync_handle_xevent (MetaIdleMonitor *monitor,
XSyncAlarmNotifyEvent *xevent);
#endif /* META_IDLE_MONITOR_XSYNC_H */

View File

@@ -909,6 +909,7 @@ ensure_supported_monitor_scales (MetaMonitorManager *manager)
for (i = 0; i < n_monitor_scales; i++) for (i = 0; i < n_monitor_scales; i++)
add_supported_scale (supported_scales, monitor_scales[i]); add_supported_scale (supported_scales, monitor_scales[i]);
g_array_sort (supported_scales, compare_scales); g_array_sort (supported_scales, compare_scales);
g_free (monitor_scales);
} }
manager_xrandr->supported_scales = (float *) supported_scales->data; manager_xrandr->supported_scales = (float *) supported_scales->data;

View File

@@ -67,7 +67,7 @@
#include <meta/meta-background-group.h> #include <meta/meta-background-group.h>
#include <meta/meta-shadow-factory.h> #include <meta/meta-shadow-factory.h>
#include "meta-window-actor-private.h" #include "meta-window-actor-private.h"
#include "meta-window-group.h" #include "meta-window-group-private.h"
#include "window-private.h" /* to check window->hidden */ #include "window-private.h" /* to check window->hidden */
#include "display-private.h" /* for meta_display_lookup_x_window() and meta_display_cancel_touch() */ #include "display-private.h" /* for meta_display_lookup_x_window() and meta_display_cancel_touch() */
#include "util-private.h" #include "util-private.h"

View File

@@ -38,6 +38,20 @@
#include "meta-cullable.h" #include "meta-cullable.h"
/* MAX_MIPMAPPING_FPS needs to be as small as possible for the best GPU
* performance, but higher than the refresh rate of commonly slow updating
* windows like top or a blinking cursor, so that such windows do get
* mipmapped.
*/
#define MAX_MIPMAPPING_FPS 5
#define MIN_MIPMAP_AGE_USEC (G_USEC_PER_SEC / MAX_MIPMAPPING_FPS)
/* MIN_FAST_UPDATES_BEFORE_UNMIPMAP allows windows to update themselves
* occasionally without causing mipmapping to be disabled, so long as such
* an update takes fewer update_area calls than:
*/
#define MIN_FAST_UPDATES_BEFORE_UNMIPMAP 20
static void meta_shaped_texture_dispose (GObject *object); static void meta_shaped_texture_dispose (GObject *object);
static void meta_shaped_texture_paint (ClutterActor *actor); static void meta_shaped_texture_paint (ClutterActor *actor);
@@ -95,6 +109,11 @@ struct _MetaShapedTexturePrivate
guint tex_width, tex_height; guint tex_width, tex_height;
guint fallback_width, fallback_height; guint fallback_width, fallback_height;
gint64 prev_invalidation, last_invalidation;
guint fast_updates;
guint remipmap_timeout_id;
gint64 earliest_remipmap;
guint create_mipmaps : 1; guint create_mipmaps : 1;
}; };
@@ -191,6 +210,12 @@ meta_shaped_texture_dispose (GObject *object)
MetaShapedTexture *self = (MetaShapedTexture *) object; MetaShapedTexture *self = (MetaShapedTexture *) object;
MetaShapedTexturePrivate *priv = self->priv; MetaShapedTexturePrivate *priv = self->priv;
if (priv->remipmap_timeout_id)
{
g_source_remove (priv->remipmap_timeout_id);
priv->remipmap_timeout_id = 0;
}
if (priv->paint_tower) if (priv->paint_tower)
meta_texture_tower_free (priv->paint_tower); meta_texture_tower_free (priv->paint_tower);
priv->paint_tower = NULL; priv->paint_tower = NULL;
@@ -372,6 +397,21 @@ set_cogl_texture (MetaShapedTexture *stex,
meta_texture_tower_set_base_texture (priv->paint_tower, cogl_tex); meta_texture_tower_set_base_texture (priv->paint_tower, cogl_tex);
} }
static gboolean
texture_is_idle_and_not_mipmapped (gpointer user_data)
{
MetaShapedTexture *stex = META_SHAPED_TEXTURE (user_data);
MetaShapedTexturePrivate *priv = stex->priv;
if ((g_get_monotonic_time () - priv->earliest_remipmap) < 0)
return G_SOURCE_CONTINUE;
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
priv->remipmap_timeout_id = 0;
return G_SOURCE_REMOVE;
}
static void static void
meta_shaped_texture_paint (ClutterActor *actor) meta_shaped_texture_paint (ClutterActor *actor)
{ {
@@ -381,9 +421,10 @@ meta_shaped_texture_paint (ClutterActor *actor)
guchar opacity; guchar opacity;
CoglContext *ctx; CoglContext *ctx;
CoglFramebuffer *fb; CoglFramebuffer *fb;
CoglTexture *paint_tex; CoglTexture *paint_tex = NULL;
ClutterActorBox alloc; ClutterActorBox alloc;
CoglPipelineFilter filter; CoglPipelineFilter filter;
gint64 now = g_get_monotonic_time ();
if (priv->clip_region && cairo_region_is_empty (priv->clip_region)) if (priv->clip_region && cairo_region_is_empty (priv->clip_region))
return; return;
@@ -406,13 +447,34 @@ meta_shaped_texture_paint (ClutterActor *actor)
* Setting the texture quality to high without SGIS_generate_mipmap * Setting the texture quality to high without SGIS_generate_mipmap
* support for TFP textures will result in fallbacks to XGetImage. * support for TFP textures will result in fallbacks to XGetImage.
*/ */
if (priv->create_mipmaps) if (priv->create_mipmaps && priv->last_invalidation)
paint_tex = meta_texture_tower_get_paint_texture (priv->paint_tower); {
else gint64 age = now - priv->last_invalidation;
paint_tex = COGL_TEXTURE (priv->texture);
if (age >= MIN_MIPMAP_AGE_USEC ||
priv->fast_updates < MIN_FAST_UPDATES_BEFORE_UNMIPMAP)
paint_tex = meta_texture_tower_get_paint_texture (priv->paint_tower);
}
if (paint_tex == NULL) if (paint_tex == NULL)
return; {
paint_tex = COGL_TEXTURE (priv->texture);
if (paint_tex == NULL)
return;
if (priv->create_mipmaps)
{
/* Minus 1000 to ensure we don't fail the age test in timeout */
priv->earliest_remipmap = now + MIN_MIPMAP_AGE_USEC - 1000;
if (!priv->remipmap_timeout_id)
priv->remipmap_timeout_id =
g_timeout_add (MIN_MIPMAP_AGE_USEC / 1000,
texture_is_idle_and_not_mipmapped,
stex);
}
}
tex_width = priv->tex_width; tex_width = priv->tex_width;
tex_height = priv->tex_height; tex_height = priv->tex_height;
@@ -758,6 +820,20 @@ meta_shaped_texture_update_area (MetaShapedTexture *stex,
meta_texture_tower_update_area (priv->paint_tower, x, y, width, height); meta_texture_tower_update_area (priv->paint_tower, x, y, width, height);
priv->prev_invalidation = priv->last_invalidation;
priv->last_invalidation = g_get_monotonic_time ();
if (priv->prev_invalidation)
{
gint64 interval = priv->last_invalidation - priv->prev_invalidation;
gboolean fast_update = interval < MIN_MIPMAP_AGE_USEC;
if (!fast_update)
priv->fast_updates = 0;
else if (priv->fast_updates < MIN_FAST_UPDATES_BEFORE_UNMIPMAP)
priv->fast_updates++;
}
unobscured_region = effective_unobscured_region (stex); unobscured_region = effective_unobscured_region (stex);
if (unobscured_region) if (unobscured_region)
{ {

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