Compare commits

..

47 Commits

Author SHA1 Message Date
Florian Müllner
ea08ed7dc4 Bump version to 3.21.90
Update NEWS.
2016-08-19 12:41:06 +02:00
Florian Müllner
3248c6852c build: Say good-bye to intltool
intltool is unmaintained nowadays while upstream gettext gained
support for formats like GSettings schemas and .desktop files,
and offers a mechanism to teach it about other XML formats not
yet supported out of the box which we can use for the rest.
So there's nothing stopping us, just make the switch ...

https://bugzilla.gnome.org/show_bug.cgi?id=769073
2016-08-19 11:04:48 +02:00
Matej Urbančič
5649734100 Updated Slovenian translation 2016-08-18 23:16:28 +02:00
Jonas Ådahl
c55943d753 cogl: Fix a few GISCAN warnings
We tried to resolve non-introspected types; lets skip those. We didn't
have a vfunc scope on a for-each loop; declared it synchronous.

https://bugzilla.gnome.org/show_bug.cgi?id=769800
2016-08-18 11:32:33 +08:00
Marek Černocký
19e02b3bbe Updated Czech translation 2016-08-17 13:15:56 +02:00
Simon McVittie
eb7f33265a META_PLUGIN_DECLARE: don't emit an old-style definition
An empty argument list means "unspecified arguments", and not
"no arguments" like it does in C++. If an implementer of Mutter
plugins uses gcc -Wold-style-definition, as configured by
AX_COMPILER_FLAGS_CFLAGS, they will get warnings about this.

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Florian Müllner <fmuellner@gnome.org>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=769971
2016-08-16 13:01:17 +01:00
Jonas Ådahl
9f6f778589 MetaMonitorManagerKms: Set output scale when assigning crtc
The scale will have been set to 1 no matter what when initializing the
MetaOutput since it at the time didn't have an CRTC assigned to it.
Now, when we assign the CRTC to the output, we need to update the scale.

https://bugzilla.gnome.org/show_bug.cgi?id=769505
2016-08-12 14:58:39 +08:00
Jonas Ådahl
1f657d2c81 monitor-manager: Always set the monitor info scale
https://bugzilla.gnome.org/show_bug.cgi?id=769505
2016-08-12 14:58:39 +08:00
Jonas Ådahl
6940169f46 MetaMonitorManagerKms: Split up read_current() into logical chunks
Instead of reading all the different state in one huge function, split
it up into logical chunks, making it easier to read.

https://bugzilla.gnome.org/show_bug.cgi?id=769505
2016-08-12 14:58:39 +08:00
Piotr Drąg
4678c24d83 Updated POTFILES.skip 2016-08-10 17:21:05 +02:00
Carlos Garnacho
1ca57e0923 backends: Prepare for virtual devices
Those have no backing libinput_device, and configuration does not
apply to those.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 11:36:42 +02:00
Carlos Garnacho
b53b94e6f2 clutter/evdev: Implement ClutterVirtualInputDevice::notify_keyval
This is somewhat gross at the moment, because we're after all mimicking
real keyboard events, we can only lookup keycodes that are available
in the current map, and the control of levels is rather limited.

Eventually, we want to implement the text_input protocol, handle these
events separately to MetaWaylandKeyboard, so event->key.keyval is
is guaranteed to be the final result. Until then, this is the farthest
we can get.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 11:36:42 +02:00
Carlos Garnacho
4abd31d863 clutter: Add ClutterVirtualInputDevice vmethod to notify keysyms
Evcodes don't cut it when we have something already specifying the
character to be printed, despite the current group/level. This API
allows some more control on the intended output.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 11:03:18 +02:00
Carlos Garnacho
3c8b1462bc clutter: Make ClutterVirtualInputDevice public
This includes adding documentation and introspection annotations,
and marking the functions as extern.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 11:03:18 +02:00
Carlos Garnacho
27a77fa115 clutter/evdev: Allow specifying the ClutterInputMode of virtual devices
The seat core keyboard/pointer will be "master", the ones created through
ClutterVirtualInputDevice will be "slaves".

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 11:03:18 +02:00
Jonas Ådahl
0992b5c53e ClutterVirtualInputDeviceEvdev: Forward button and key presses
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 11:03:18 +02:00
Jonas Ådahl
e928370bf0 ClutterSeatEvdev: Keep track of button count
libinput does it for us, but only for physical devices. When we add
virtual devices to the same seat, we need to track button press count
ourself.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:24 +02:00
Jonas Ådahl
d2b05f0305 ClutterVirtualInputDeviceEvdev: Forward motion events
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:24 +02:00
Jonas Ådahl
bd326d38ac ClutterVirtualInputDeviceEvdev: Create associated ClutterInputDevice
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:24 +02:00
Jonas Ådahl
8e335ce183 ClutterVirtualInputDeviceEvdev: Construct with a specific seat
We are still single seated, so until we are properly multi seated its
always the main seat.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:24 +02:00
Jonas Ådahl
364b184f41 ClutterVirtualInputDevice: Store the device type
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:24 +02:00
Jonas Ådahl
94016f7257 clutter/evdev: Move keyboard and pointer notification into seat
We notify per seat; so lets move the logic there. Touch and tablets to
follow later.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:24 +02:00
Jonas Ådahl
e38a8363e4 ClutterVirtualInputDevice: Keep track of the device manager
https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:24 +02:00
Jonas Ådahl
76eb27e786 ClutterDeviceManagerEvdev: Split out seat into a separate file
Split out ClutterSeatEvdev functionality into a separate file.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:24 +02:00
Jonas Ådahl
5db2be414b clutter: Add virtual input device API
Virtual input devices aim to enable injecting input events as if they
came from hardware events. This is useful for things such as remote
controlling, for example via a remote desktop session.

The API so far only consists of stumps.

https://bugzilla.gnome.org/show_bug.cgi?id=765009
2016-08-10 10:39:19 +02:00
Fabio Tomat
61bfe04b7b Updated Friulian translation 2016-08-07 16:19:13 +00:00
Yosef Or Boczko
1931d0ef51 Updated Hebrew translation 2016-08-07 15:13:49 +03:00
Fabio Tomat
46f1dcaecc Updated Friulian translation 2016-08-07 10:39:25 +00:00
Carlos Garnacho
5c9a2c54c4 xwayland: Avoid late errno checks
We do some things when binding to a socket fails (closing the fd,
logging, unlinking files, ...) those might affect errno in some
or other way, so it might no longer be EADDRINUSE even if we later
try to make those non fatal.

It seems better to check errno soon after the failure, and don't
rely on it in any way at a later point. All error paths in
bind_to_abstract_socket() also have early logging, which also might
help figure out better the point of failure when the socket fails
to be created.

https://bugzilla.gnome.org/show_bug.cgi?id=769578
2016-08-06 17:14:52 +02:00
Carlos Garnacho
dd549604e2 xwayland: Fix typo
Check the unix_fd, which is the one just created, the abstract_fd
is already checked above.
2016-08-06 16:42:25 +02:00
Balázs Úr
8913cbb06d Updated Hungarian translation 2016-08-04 22:07:32 +00:00
Fabio Tomat
96790276c5 Updated Friulian translation 2016-08-04 15:51:56 +00:00
Dušan Kazik
84eeebe32f Updated Slovak translation 2016-08-04 13:28:48 +00:00
Aurimas Černius
01f1de704d Updated Lithuanian translation 2016-08-03 22:15:56 +03:00
Jonas Ådahl
6894563667 MetaRendererView: Fix GObject parent
Set ClutterStageViewCogl as parent of MetaRendererView, since that is
the actual parent.

https://bugzilla.gnome.org/show_bug.cgi?id=768976
2016-08-03 11:20:55 +08:00
Jonas Ådahl
9b4e8695f3 MetaRendererX11: Allocate offscreen framebuffers up front
Allocate the offscreen stage view framebuffers up front; otherwise they
may get allocated after the viewport calculated by the stage is set,
which would cause the viewport to be incorrect until recalculated.

https://bugzilla.gnome.org/show_bug.cgi?id=768976
2016-08-03 11:20:55 +08:00
Jonas Ådahl
adcd0fe9b4 ClutterStageView: Initialize viewport/projection as dirty
Initially the viewport and projection is not calculated and should thus
be marked as dirty.

https://bugzilla.gnome.org/show_bug.cgi?id=768976
2016-08-03 11:20:55 +08:00
Jonas Ådahl
cc4a65fe94 x11/nested: Only paint monitor stage views when enabled
Only paint the per monitor stage views when enabled, otherwise bad
things happen.

https://bugzilla.gnome.org/show_bug.cgi?id=768976
2016-08-03 11:19:24 +08:00
Jonas Ådahl
53061c7005 MetaInputSettings: Initialize the accel-profile setting
Shouldn't just update them when they change; they also need to be
set when initializing.

https://bugzilla.gnome.org/show_bug.cgi?id=769179
2016-08-03 10:49:22 +08:00
Jonas Ådahl
53e3d0df64 MetaInputSettings: Don't initialize the same setting twice
Two settings were set twice on the same device. Now instead group the
generic update functions together, removing the redundant calls.

https://bugzilla.gnome.org/show_bug.cgi?id=769179
2016-08-03 10:49:22 +08:00
Bastien Nocera
97d180ee59 build: Fix KMS backend summary printout
If have_native_backend is not set, we might end up with:
	Native (KMS) backend:
instead of:
	Native (KMS) backend:     no

in the configure summary

https://bugzilla.gnome.org/show_bug.cgi?id=769305
2016-07-29 16:48:29 +02:00
Florian Müllner
740748af3e clutter: Fix typo in assert 2016-07-29 11:35:31 +02:00
Alberts Muktupāvels
38d61f30dc monitor-config: add missing chain-up for finalize 2016-07-28 19:57:42 +03:00
Jonas Ådahl
23c4ac6c7f settings: Support mouse and trackball accel profile
Support changing the mouse and trackball acceleration profile. This
makes it possible to for example disable pointer acceleration by
choosing the 'flat' profile.

This adds an optional dependency on gudev. Gudev is used by the X11
backend to detect whether a device is a mouse or not. Without gudev
support, the accel profile settings has have effect for mouse devices.

Trackball still uses the "strstr" approach, since udev doesn't support
tagging devices as trackball devices yet.

https://bugzilla.gnome.org/show_bug.cgi?id=769179
2016-07-28 20:13:08 +08:00
Bastien Nocera
cfe5d7429a backends/x11: Add enum for scroll methods
This way the "libinput Scroll Method Enabled" property manipulation
is made clearer.
2016-07-27 19:42:14 +02:00
Bastien Nocera
36cd7177fd backends: Re-add support for edge scrolling with some touchpads
Add support for setting edge-scrolling separately from two-finger
scrolling. We now have 2 separate boolean settings for those, with the
Mouse panel in gnome-control-center allowing to set only one of those at
a time, but nothing precludes both being set in the configuration.

We need to handle:
- two-finger-scrolling-enabled and edge-scrolling-enabled settings both
  being set.
- those 2 settings being change out-of-order
- two-finger-scrolling being set on a device that doesn't support it
- edge-scrolling-enabled on a device that doesn't support it

And the combinations of one touchpad supporting just one of edge
scrolling and two-finger scrolling and another vice-versa.

https://bugzilla.gnome.org/show_bug.cgi?id=768245
2016-07-27 17:17:25 +02:00
Carlos Garnacho
2e4eb86340 configure: Require libinput 1.4
We use API recently added in that version.
2016-07-27 13:32:38 +02:00
41 changed files with 1608 additions and 732 deletions

6
.gitignore vendored
View File

@@ -41,8 +41,14 @@ stamp-h1
*~ *~
stamp-it stamp-it
.intltool-merge-cache .intltool-merge-cache
ABOUT-NLS
POTFILES POTFILES
Makevars.template
po/*.header
po/*.pot po/*.pot
po/*.sed
po/*.sin
Rules-quot
libmutter.pc libmutter.pc
mutter mutter
mutter-restart-helper mutter-restart-helper

21
NEWS
View File

@@ -1,3 +1,24 @@
3.21.90
=======
* Consider XDG_SESSION_TYPE when determining session type [Jouke; #759388]
* Re-add support for edge scrolling on some touchpads [Bastien; #768245]
* Support mouse and trackball acceleration profile [Jonas; #769179]
* Draw monitor contentn to individual framebuffer [Jonas; #768976]
* Support virtual input devices [Jonas, Carlos; #765009]
* Set correct output scale on hotplug [Jonas; #769505]
* Misc. bug fixes and cleanups [Florian, Jonas, Thomas, Bastien, Carlos;
#769014, #769024, #769054, #769070, #769036, #769305, #769578, #769800,
#769073]
Contributors:
Jonas Ådahl, Carlos Garnacho, Thomas Hindoe Paaboel Andersen, Simon McVittie,
Alberts Muktupāvels, Florian Müllner, Bastien Nocera, Jouke Witteveen
Translations:
Daniel Mustieles [es], Aurimas Černius [lt], Dušan Kazik [sk],
Fabio Tomat [fur], Balázs Úr [hu], Yosef Or Boczko [he], Marek Černocký [cs],
Matej Urbančič [sl]
3.21.4 3.21.4
====== ======
* Fix missing frame border around GTK+ dialogs [Florian; #745060] * Fix missing frame border around GTK+ dialogs [Florian; #745060]

View File

@@ -401,7 +401,7 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
gboolean res; gboolean res;
cairo_t *cr; cairo_t *cr;
g_assert (priv->width > 0 && priv->width > 0); g_assert (priv->height > 0 && priv->width > 0);
priv->dirty = TRUE; priv->dirty = TRUE;

View File

@@ -157,6 +157,11 @@ clutter_stage_view_dispose (GObject *object)
static void static void
clutter_stage_view_init (ClutterStageView *view) clutter_stage_view_init (ClutterStageView *view)
{ {
ClutterStageViewPrivate *priv =
clutter_stage_view_get_instance_private (view);
priv->dirty_viewport = TRUE;
priv->dirty_projection = TRUE;
} }
static void static void

View File

@@ -909,13 +909,9 @@ evdev_add_device (ClutterDeviceManagerEvdev *manager_evdev,
* which are located on the main seat. Make whatever seat comes first the * which are located on the main seat. Make whatever seat comes first the
* main seat. */ * main seat. */
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);
}
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); priv->seats = g_slist_append (priv->seats, seat);

View File

@@ -71,17 +71,9 @@ update_button_count (ClutterVirtualInputDeviceEvdev *virtual_evdev,
uint32_t state) uint32_t state)
{ {
if (state) if (state)
{ return ++virtual_evdev->button_count[button];
return ++virtual_evdev->button_count[button];
}
else else
{ return --virtual_evdev->button_count[button];
/* Handle cases where we newer saw the initial pressed event. */
if (virtual_evdev->button_count[button] == 0)
return 0;
return --virtual_evdev->button_count[button];
}
} }
static EvdevButtonType static EvdevButtonType
@@ -132,6 +124,9 @@ release_pressed_buttons (ClutterVirtualInputDevice *virtual_device)
for (code = 0; code < G_N_ELEMENTS (virtual_evdev->button_count); code++) for (code = 0; code < G_N_ELEMENTS (virtual_evdev->button_count); code++)
{ {
if (virtual_evdev->button_count[code] == 0)
continue;
switch (get_button_type (code)) switch (get_button_type (code))
{ {
case EVDEV_BUTTON_TYPE_KEY: case EVDEV_BUTTON_TYPE_KEY:
@@ -202,10 +197,11 @@ clutter_virtual_input_device_evdev_notify_button (ClutterVirtualInputDevice *vir
} }
button_count = update_button_count (virtual_evdev, button, button_state); button_count = update_button_count (virtual_evdev, button, button_state);
if (button_count > 1) if (button_count < 0 || button_count > 1)
{ {
g_warning ("Received multiple virtual 0x%x button presses (ignoring)", g_warning ("Received multiple virtual 0x%x button %s (ignoring)", button,
button); button_state == CLUTTER_BUTTON_STATE_PRESSED ? "presses" : "releases");
update_button_count (virtual_evdev, button, 1 - button_state);
return; return;
} }
@@ -233,10 +229,11 @@ clutter_virtual_input_device_evdev_notify_key (ClutterVirtualInputDevice *virtua
} }
key_count = update_button_count (virtual_evdev, key, key_state); key_count = update_button_count (virtual_evdev, key, key_state);
if (key_count > 1) if (key_count < 0 || key_count > 1)
{ {
g_warning ("Received multiple virtual 0x%x key presses (ignoring)", g_warning ("Received multiple virtual 0x%x key %s (ignoring)", key,
key); key_state == CLUTTER_KEY_STATE_PRESSED ? "presses" : "releases");
update_button_count (virtual_evdev, key, 1 - key_state);
return; return;
} }
@@ -363,10 +360,11 @@ clutter_virtual_input_device_evdev_notify_keyval (ClutterVirtualInputDevice *vir
} }
key_count = update_button_count (virtual_evdev, evcode, key_state); key_count = update_button_count (virtual_evdev, evcode, key_state);
if (key_count > 1) if (key_count < 0 || key_count > 1)
{ {
g_warning ("Received multiple virtual 0x%x key presses (ignoring)", g_warning ("Received multiple virtual 0x%x key %s (ignoring)", keycode,
keycode); key_state == CLUTTER_KEY_STATE_PRESSED ? "presses" : "releases");
update_button_count (virtual_evdev, evcode, 1 - key_state);
return; return;
} }

View File

@@ -116,7 +116,7 @@ m4_define([pango_req_version], [1.30])
m4_define([gi_req_version], [1.39.0]) m4_define([gi_req_version], [1.39.0])
m4_define([xcomposite_req_version], [0.4]) 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], [0.19.0]) m4_define([libinput_req_version], [1.4.0])
m4_define([libudev_req_version], [136]) m4_define([libudev_req_version], [136])
AC_SUBST([GLIB_REQ_VERSION], [glib_req_version]) AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])

View File

@@ -180,7 +180,7 @@ XVisualInfo *
cogl_xlib_renderer_get_visual_info (CoglRenderer *renderer); cogl_xlib_renderer_get_visual_info (CoglRenderer *renderer);
/** /**
* cogl_xlib_renderer_request_reset_on_video_memory_purge: * cogl_xlib_renderer_request_reset_on_video_memory_purge: (skip)
* @renderer: a #CoglRenderer * @renderer: a #CoglRenderer
* @enable: The new value * @enable: The new value
* *

View File

@@ -1307,7 +1307,7 @@ CoglMaterialWrapMode
cogl_material_layer_get_wrap_mode_p (CoglMaterialLayer *layer); cogl_material_layer_get_wrap_mode_p (CoglMaterialLayer *layer);
/** /**
* cogl_material_set_depth_state: * cogl_material_set_depth_state: (skip)
* @material: A #CoglMaterial object * @material: A #CoglMaterial object
* @state: A #CoglDepthState struct * @state: A #CoglDepthState struct
* @error: A #CoglError to report failures to setup the given @state. * @error: A #CoglError to report failures to setup the given @state.
@@ -1334,7 +1334,7 @@ cogl_material_set_depth_state (CoglMaterial *material,
CoglError **error); CoglError **error);
/** /**
* cogl_material_get_depth_state: * cogl_material_get_depth_state: (skip)
* @material: A #CoglMaterial object * @material: A #CoglMaterial object
* @state_out: A destination #CoglDepthState struct * @state_out: A destination #CoglDepthState struct
* *
@@ -1370,8 +1370,8 @@ typedef CoglBool (*CoglMaterialLayerCallback) (CoglMaterial *material,
/** /**
* cogl_material_foreach_layer: * cogl_material_foreach_layer:
* @material: A #CoglMaterial object * @material: A #CoglMaterial object
* @callback: A #CoglMaterialLayerCallback to be called for each layer * @callback: (scope call): A #CoglMaterialLayerCallback to be called for each
* index * layer index
* @user_data: Private data that will be passed to the callback * @user_data: Private data that will be passed to the callback
* *
* Iterates all the layer indices of the given @material. * Iterates all the layer indices of the given @material.

View File

@@ -2,7 +2,7 @@ AC_PREREQ(2.62)
m4_define([mutter_major_version], [3]) m4_define([mutter_major_version], [3])
m4_define([mutter_minor_version], [21]) m4_define([mutter_minor_version], [21])
m4_define([mutter_micro_version], [4]) m4_define([mutter_micro_version], [90])
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])
@@ -43,9 +43,11 @@ GETTEXT_PACKAGE=mutter
AC_SUBST(GETTEXT_PACKAGE) AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain]) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
AM_GNU_GETTEXT_VERSION([0.19.6])
AM_GNU_GETTEXT([external])
LT_PREREQ([2.2.6]) LT_PREREQ([2.2.6])
LT_INIT([disable-static]) LT_INIT([disable-static])
IT_PROG_INTLTOOL([0.41])
AC_PROG_CC AC_PROG_CC
AC_PROG_CC_C_O AC_PROG_CC_C_O
AC_PROG_INSTALL AC_PROG_INSTALL
@@ -116,6 +118,11 @@ AC_ARG_WITH(libwacom,
[disable the use of libwacom for advanced tablet management]),, [disable the use of libwacom for advanced tablet management]),,
with_libwacom=auto) with_libwacom=auto)
AC_ARG_WITH(gudev,
AC_HELP_STRING([--without-gudev],
[disable the use of gudev for device type detection]),,
with_gudev=auto)
AC_ARG_WITH([xwayland-path], AC_ARG_WITH([xwayland-path],
[AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])], [AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])],
[XWAYLAND_PATH="$withval"], [XWAYLAND_PATH="$withval"],
@@ -195,6 +202,24 @@ else
fi fi
fi fi
have_gudev=no
AC_MSG_CHECKING([gudev])
if test x$with_gudev = xno ; then
AC_MSG_RESULT([disabled])
else
if $PKG_CONFIG --exists gudev-1.0; then
have_gudev=yes
AC_MSG_RESULT(yes)
MUTTER_PC_MODULES="$MUTTER_PC_MODULES gudev-1.0"
AC_DEFINE([HAVE_LIBGUDEV], 1, [Building with gudev for device type detection])
else
AC_MSG_RESULT(no)
if test x$with_gudev = xyes ; then
AC_MSG_ERROR([gudev forced but not found])
fi
fi
fi
INTROSPECTION_VERSION=0.9.5 INTROSPECTION_VERSION=0.9.5
GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_VERSION]) GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_VERSION])
@@ -214,12 +239,13 @@ AC_SUBST(XWAYLAND_PATH)
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES) PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
MUTTER_NATIVE_BACKEND_MODULES="libdrm libsystemd libinput gudev-1.0 gbm >= 10.3" MUTTER_NATIVE_BACKEND_MODULES="libdrm libsystemd 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]),,
enable_native_backend=auto enable_native_backend=auto
) )
have_native_backend="no"
AS_IF([test "$enable_native_backend" = "yes"], [have_native_backend=yes], AS_IF([test "$enable_native_backend" = "yes"], [have_native_backend=yes],
[test "$enable_native_backend" = "auto"], PKG_CHECK_EXISTS([$MUTTER_NATIVE_BACKEND_MODULES], [have_native_backend=yes])) [test "$enable_native_backend" = "auto"], PKG_CHECK_EXISTS([$MUTTER_NATIVE_BACKEND_MODULES], [have_native_backend=yes]))
@@ -449,6 +475,7 @@ mutter-$VERSION
Startup notification: ${have_startup_notification} Startup notification: ${have_startup_notification}
libcanberra: ${have_libcanberra} libcanberra: ${have_libcanberra}
libwacom: ${have_libwacom} libwacom: ${have_libwacom}
gudev ${have_gudev}
Introspection: ${found_introspection} Introspection: ${found_introspection}
Session management: ${found_sm} Session management: ${found_sm}
Wayland: ${have_wayland} Wayland: ${have_wayland}

View File

@@ -1,140 +1,140 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.desktop.wm.keybindings" <KeyListEntries schema="org.gnome.desktop.wm.keybindings"
group="system" group="system"
_name="Navigation" name="Navigation"
wm_name="Mutter" wm_name="Mutter"
package="mutter"> package="mutter">
<KeyListEntry name="move-to-workspace-1" <KeyListEntry name="move-to-workspace-1"
_description="Move window to workspace 1" /> description="Move window to workspace 1" />
<KeyListEntry name="move-to-workspace-2" <KeyListEntry name="move-to-workspace-2"
_description="Move window to workspace 2" /> description="Move window to workspace 2" />
<KeyListEntry name="move-to-workspace-3" <KeyListEntry name="move-to-workspace-3"
_description="Move window to workspace 3" /> description="Move window to workspace 3" />
<KeyListEntry name="move-to-workspace-4" <KeyListEntry name="move-to-workspace-4"
_description="Move window to workspace 4" /> description="Move window to workspace 4" />
<KeyListEntry name="move-to-workspace-last" <KeyListEntry name="move-to-workspace-last"
_description="Move window to last workspace" /> description="Move window to last workspace" />
<KeyListEntry name="move-to-workspace-left" <KeyListEntry name="move-to-workspace-left"
_description="Move window one workspace to the left" /> description="Move window one workspace to the left" />
<KeyListEntry name="move-to-workspace-right" <KeyListEntry name="move-to-workspace-right"
_description="Move window one workspace to the right" /> description="Move window one workspace to the right" />
<KeyListEntry name="move-to-workspace-up" <KeyListEntry name="move-to-workspace-up"
_description="Move window one workspace up" /> description="Move window one workspace up" />
<KeyListEntry name="move-to-workspace-down" <KeyListEntry name="move-to-workspace-down"
_description="Move window one workspace down" /> description="Move window one workspace down" />
<KeyListEntry name="move-to-monitor-left" <KeyListEntry name="move-to-monitor-left"
_description="Move window one monitor to the left" /> description="Move window one monitor to the left" />
<KeyListEntry name="move-to-monitor-right" <KeyListEntry name="move-to-monitor-right"
_description="Move window one monitor to the right" /> description="Move window one monitor to the right" />
<KeyListEntry name="move-to-monitor-up" <KeyListEntry name="move-to-monitor-up"
_description="Move window one monitor up" /> description="Move window one monitor up" />
<KeyListEntry name="move-to-monitor-down" <KeyListEntry name="move-to-monitor-down"
_description="Move window one monitor down" /> description="Move window one monitor down" />
<KeyListEntry name="switch-applications" <KeyListEntry name="switch-applications"
reverse-entry="switch-applications-backward" reverse-entry="switch-applications-backward"
_description="Switch applications"/> description="Switch applications"/>
<KeyListEntry name="switch-applications-backward" <KeyListEntry name="switch-applications-backward"
reverse-entry="switch-applications" reverse-entry="switch-applications"
hidden="true" hidden="true"
_description="Switch to previous application"/> description="Switch to previous application"/>
<KeyListEntry name="switch-windows" <KeyListEntry name="switch-windows"
reverse-entry="switch-windows-backward" reverse-entry="switch-windows-backward"
_description="Switch windows"/> description="Switch windows"/>
<KeyListEntry name="switch-windows-backward" <KeyListEntry name="switch-windows-backward"
reverse-entry="switch-windows" reverse-entry="switch-windows"
hidden="true" hidden="true"
_description="Switch to previous window"/> description="Switch to previous window"/>
<KeyListEntry name="switch-group" <KeyListEntry name="switch-group"
reverse-entry="switch-group-backward" reverse-entry="switch-group-backward"
_description="Switch windows of an application"/> description="Switch windows of an application"/>
<KeyListEntry name="switch-group-backward" <KeyListEntry name="switch-group-backward"
reverse-entry="switch-group" reverse-entry="switch-group"
hidden="true" hidden="true"
_description="Switch to previous window of an application"/> description="Switch to previous window of an application"/>
<KeyListEntry name="switch-panels" <KeyListEntry name="switch-panels"
reverse-entry="switch-panels-backward" reverse-entry="switch-panels-backward"
_description="Switch system controls"/> description="Switch system controls"/>
<KeyListEntry name="switch-panels-backward" <KeyListEntry name="switch-panels-backward"
reverse-entry="switch-panels" reverse-entry="switch-panels"
hidden="true" hidden="true"
_description="Switch to previous system control"/> description="Switch to previous system control"/>
<KeyListEntry name="cycle-windows" <KeyListEntry name="cycle-windows"
reverse-entry="cycle-windows-backward" reverse-entry="cycle-windows-backward"
_description="Switch windows directly"/> description="Switch windows directly"/>
<KeyListEntry name="cycle-windows-backward" <KeyListEntry name="cycle-windows-backward"
reverse-entry="cycle-windows" reverse-entry="cycle-windows"
hidden="true" hidden="true"
_description="Switch directly to previous window"/> description="Switch directly to previous window"/>
<KeyListEntry name="cycle-group" <KeyListEntry name="cycle-group"
reverse-entry="cycle-group-backward" reverse-entry="cycle-group-backward"
_description="Switch windows of an app directly"/> description="Switch windows of an app directly"/>
<KeyListEntry name="cycle-group-backward" <KeyListEntry name="cycle-group-backward"
reverse-entry="cycle-group" reverse-entry="cycle-group"
hidden="true" hidden="true"
_description="Switch directly to previous window of an app"/> description="Switch directly to previous window of an app"/>
<KeyListEntry name="cycle-panels" <KeyListEntry name="cycle-panels"
reverse-entry="cycle-panels-backward" reverse-entry="cycle-panels-backward"
_description="Switch system controls directly"/> description="Switch system controls directly"/>
<KeyListEntry name="cycle-panels-backward" <KeyListEntry name="cycle-panels-backward"
reverse-entry="cycle-panels" reverse-entry="cycle-panels"
hidden="true" hidden="true"
_description="Switch directly to previous system control"/> description="Switch directly to previous system control"/>
<KeyListEntry name="show-desktop" <KeyListEntry name="show-desktop"
_description="Hide all normal windows"/> description="Hide all normal windows"/>
<KeyListEntry name="switch-to-workspace-1" <KeyListEntry name="switch-to-workspace-1"
_description="Switch to workspace 1" /> description="Switch to workspace 1" />
<KeyListEntry name="switch-to-workspace-2" <KeyListEntry name="switch-to-workspace-2"
_description="Switch to workspace 2" /> description="Switch to workspace 2" />
<KeyListEntry name="switch-to-workspace-3" <KeyListEntry name="switch-to-workspace-3"
_description="Switch to workspace 3" /> description="Switch to workspace 3" />
<KeyListEntry name="switch-to-workspace-4" <KeyListEntry name="switch-to-workspace-4"
_description="Switch to workspace 4" /> description="Switch to workspace 4" />
<KeyListEntry name="switch-to-workspace-last" <KeyListEntry name="switch-to-workspace-last"
_description="Switch to last workspace" /> description="Switch to last workspace" />
<KeyListEntry name="switch-to-workspace-left" <KeyListEntry name="switch-to-workspace-left"
_description="Move to workspace left" /> description="Move to workspace left" />
<KeyListEntry name="switch-to-workspace-right" <KeyListEntry name="switch-to-workspace-right"
_description="Move to workspace right" /> description="Move to workspace right" />
<KeyListEntry name="switch-to-workspace-up" <KeyListEntry name="switch-to-workspace-up"
_description="Move to workspace above" /> description="Move to workspace above" />
<KeyListEntry name="switch-to-workspace-down" <KeyListEntry name="switch-to-workspace-down"
_description="Move to workspace below" /> description="Move to workspace below" />
</KeyListEntries> </KeyListEntries>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.desktop.wm.keybindings" <KeyListEntries schema="org.gnome.desktop.wm.keybindings"
group="system" group="system"
_name="System" name="System"
wm_name="Mutter" wm_name="Mutter"
package="mutter"> package="mutter">
<KeyListEntry name="panel-run-dialog" _description="Show the run command prompt"/> <KeyListEntry name="panel-run-dialog" description="Show the run command prompt"/>
<KeyListEntry name="panel-main-menu" _description="Show the activities overview"/> <KeyListEntry name="panel-main-menu" description="Show the activities overview"/>
</KeyListEntries> </KeyListEntries>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.desktop.wm.keybindings"
group="system"
name="Windows"
wm_name="Mutter"
package="mutter">
<KeyListEntry name="activate-window-menu" description="Activate the window menu"/>
<KeyListEntry name="toggle-fullscreen" description="Toggle fullscreen mode"/>
<KeyListEntry name="toggle-maximized" description="Toggle maximization state"/>
<KeyListEntry name="maximize" description="Maximize window"/>
<KeyListEntry name="unmaximize" description="Restore window"/>
<KeyListEntry name="toggle-shaded" description="Toggle shaded state"/>
<KeyListEntry name="close" description="Close window"/>
<KeyListEntry name="minimize" description="Hide window"/>
<KeyListEntry name="begin-move" description="Move window"/>
<KeyListEntry name="begin-resize" description="Resize window"/>
<KeyListEntry name="toggle-on-all-workspaces"
description="Toggle window on all workspaces or one"/>
<KeyListEntry name="raise-or-lower" description="Raise window if covered, otherwise lower it"/>
<KeyListEntry name="raise" description="Raise window above other windows"/>
<KeyListEntry name="lower" description="Lower window below other windows"/>
<KeyListEntry name="maximize-vertically" description="Maximize window vertically"/>
<KeyListEntry name="maximize-horizontally" description="Maximize window horizontally"/>
<KeyListEntry name="toggle-tiled-left"
schema="org.gnome.mutter.keybindings"
description="View split on left"/>
<KeyListEntry name="toggle-tiled-right"
schema="org.gnome.mutter.keybindings"
description="View split on right"/>
</KeyListEntries>

View File

@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<KeyListEntries schema="org.gnome.desktop.wm.keybindings"
group="system"
_name="Windows"
wm_name="Mutter"
package="mutter">
<KeyListEntry name="activate-window-menu" _description="Activate the window menu"/>
<KeyListEntry name="toggle-fullscreen" _description="Toggle fullscreen mode"/>
<KeyListEntry name="toggle-maximized" _description="Toggle maximization state"/>
<KeyListEntry name="maximize" _description="Maximize window"/>
<KeyListEntry name="unmaximize" _description="Restore window"/>
<KeyListEntry name="toggle-shaded" _description="Toggle shaded state"/>
<KeyListEntry name="close" _description="Close window"/>
<KeyListEntry name="minimize" _description="Hide window"/>
<KeyListEntry name="begin-move" _description="Move window"/>
<KeyListEntry name="begin-resize" _description="Resize window"/>
<KeyListEntry name="toggle-on-all-workspaces"
_description="Toggle window on all workspaces or one"/>
<KeyListEntry name="raise-or-lower" _description="Raise window if covered, otherwise lower it"/>
<KeyListEntry name="raise" _description="Raise window above other windows"/>
<KeyListEntry name="lower" _description="Lower window below other windows"/>
<KeyListEntry name="maximize-vertically" _description="Maximize window vertically"/>
<KeyListEntry name="maximize-horizontally" _description="Maximize window horizontally"/>
<KeyListEntry name="toggle-tiled-left"
schema="org.gnome.mutter.keybindings"
_description="View split on left"/>
<KeyListEntry name="toggle-tiled-right"
schema="org.gnome.mutter.keybindings"
_description="View split on right"/>
</KeyListEntries>

View File

@@ -3,21 +3,24 @@ desktopfiles_in_files = \
desktopfilesdir = $(datadir)/applications desktopfilesdir = $(datadir)/applications
desktopfiles_DATA = $(desktopfiles_in_files:.desktop.in=.desktop) desktopfiles_DATA = $(desktopfiles_in_files:.desktop.in=.desktop)
@INTLTOOL_DESKTOP_RULE@ %.desktop:%.desktop.in
$(AM_V_GET) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@
xml_in_files = \
50-mutter-navigation.xml.in \
50-mutter-system.xml.in \
50-mutter-windows.xml.in
xmldir = $(GNOME_KEYBINDINGS_KEYSDIR) xmldir = $(GNOME_KEYBINDINGS_KEYSDIR)
xml_DATA = $(xml_in_files:.xml.in=.xml) xml_DATA = \
50-mutter-navigation.xml \
50-mutter-system.xml \
50-mutter-windows.xml
gschema_in_files = \ gschema_in_files = \
org.gnome.mutter.gschema.xml.in \ org.gnome.mutter.gschema.xml.in \
org.gnome.mutter.wayland.gschema.xml.in org.gnome.mutter.wayland.gschema.xml.in
gsettings_SCHEMAS = $(gschema_in_files:.xml.in=.xml) gsettings_SCHEMAS = $(gschema_in_files:.xml.in=.xml)
@INTLTOOL_XML_NOMERGE_RULE@ %.gschema.xml: %.gschema.xml.in Makefile
$(AM_V_GEN) sed -e 's|@GETTEXT_DOMAIN[@]|$(GETTEXT_DOMAIN)|g' \
$< > $@ || rm $@
@GSETTINGS_RULES@ @GSETTINGS_RULES@
convertdir = $(datadir)/GConf/gsettings convertdir = $(datadir)/GConf/gsettings
@@ -25,11 +28,10 @@ convert_DATA = mutter-schemas.convert
CLEANFILES = \ CLEANFILES = \
$(desktopfiles_DATA) \ $(desktopfiles_DATA) \
$(gsettings_SCHEMAS) \ $(gsettings_SCHEMAS)
$(xml_DATA)
EXTRA_DIST = \ EXTRA_DIST = \
$(convert_DATA) \ $(convert_DATA) \
$(desktopfiles_in_files) \ $(desktopfiles_in_files) \
$(gschema_in_files) \ $(gschema_in_files) \
$(xml_in_files) $(xml_DATA)

View File

@@ -1,6 +1,6 @@
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
_Name=Mutter Name=Mutter
Exec=mutter Exec=mutter
NoDisplay=true NoDisplay=true
# name of loadable control center module # name of loadable control center module

View File

@@ -4,102 +4,102 @@
<key name="overlay-key" type="s"> <key name="overlay-key" type="s">
<default>'Super_L'</default> <default>'Super_L'</default>
<_summary>Modifier to use for extended window management operations</_summary> <summary>Modifier to use for extended window management operations</summary>
<_description> <description>
This key will initiate the "overlay", which is a combination window This key will initiate the "overlay", which is a combination window
overview and application launching system. The default is intended overview and application launching system. The default is intended
to be the "Windows key" on PC hardware. to be the "Windows key" on PC hardware.
It's expected that this binding either the default or set to It's expected that this binding either the default or set to
the empty string. the empty string.
</_description> </description>
</key> </key>
<key name="attach-modal-dialogs" type="b"> <key name="attach-modal-dialogs" type="b">
<default>false</default> <default>false</default>
<_summary>Attach modal dialogs</_summary> <summary>Attach modal dialogs</summary>
<_description> <description>
When true, instead of having independent titlebars, modal dialogs When true, instead of having independent titlebars, modal dialogs
appear attached to the titlebar of the parent window and are moved appear attached to the titlebar of the parent window and are moved
together with the parent window. together with the parent window.
</_description> </description>
</key> </key>
<key name="edge-tiling" type="b"> <key name="edge-tiling" type="b">
<default>false</default> <default>false</default>
<_summary>Enable edge tiling when dropping windows on screen edges</_summary> <summary>Enable edge tiling when dropping windows on screen edges</summary>
<_description> <description>
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.
</_description> </description>
</key> </key>
<key name="dynamic-workspaces" type="b"> <key name="dynamic-workspaces" type="b">
<default>false</default> <default>false</default>
<_summary>Workspaces are managed dynamically</_summary> <summary>Workspaces are managed dynamically</summary>
<_description> <description>
Determines whether workspaces are managed dynamically or Determines whether workspaces are managed dynamically or
whether there's a static number of workspaces (determined whether there's a static number of workspaces (determined
by the num-workspaces key in org.gnome.desktop.wm.preferences). by the num-workspaces key in org.gnome.desktop.wm.preferences).
</_description> </description>
</key> </key>
<key name="workspaces-only-on-primary" type="b"> <key name="workspaces-only-on-primary" type="b">
<default>false</default> <default>false</default>
<_summary>Workspaces only on primary</_summary> <summary>Workspaces only on primary</summary>
<_description> <description>
Determines whether workspace switching should happen for windows Determines whether workspace switching should happen for windows
on all monitors or only for windows on the primary monitor. on all monitors or only for windows on the primary monitor.
</_description> </description>
</key> </key>
<key name="no-tab-popup" type="b"> <key name="no-tab-popup" type="b">
<default>false</default> <default>false</default>
<_summary>No tab popup</_summary> <summary>No tab popup</summary>
<_description> <description>
Determines whether the use of popup and highlight frame should Determines whether the use of popup and highlight frame should
be disabled for window cycling. be disabled for window cycling.
</_description> </description>
</key> </key>
<key name="focus-change-on-pointer-rest" type="b"> <key name="focus-change-on-pointer-rest" type="b">
<default>false</default> <default>false</default>
<_summary>Delay focus changes until the pointer stops moving</_summary> <summary>Delay focus changes until the pointer stops moving</summary>
<_description> <description>
If set to true, and the focus mode is either "sloppy" or "mouse" If set to true, and the focus mode is either "sloppy" or "mouse"
then the focus will not be changed immediately when entering a then the focus will not be changed immediately when entering a
window, but only after the pointer stops moving. window, but only after the pointer stops moving.
</_description> </description>
</key> </key>
<key name="draggable-border-width" type="i"> <key name="draggable-border-width" type="i">
<default>10</default> <default>10</default>
<range min="0" max="64"/> <range min="0" max="64"/>
<_summary>Draggable border width</_summary> <summary>Draggable border width</summary>
<_description> <description>
The amount of total draggable borders. If the theme's visible The amount of total draggable borders. If the theme's visible
borders are not enough, invisible borders will be added to meet borders are not enough, invisible borders will be added to meet
this value. this value.
</_description> </description>
</key> </key>
<key name="auto-maximize" type="b"> <key name="auto-maximize" type="b">
<default>true</default> <default>true</default>
<_summary>Auto maximize nearly monitor sized windows</_summary> <summary>Auto maximize nearly monitor sized windows</summary>
<_description> <description>
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.
</_description> </description>
</key> </key>
<key name="center-new-windows" type="b"> <key name="center-new-windows" type="b">
<default>false</default> <default>false</default>
<_summary>Place new windows in the center</_summary> <summary>Place new windows in the center</summary>
<_description> <description>
When true, the new windows will always be put in the center of the When true, the new windows will always be put in the center of the
active screen of the monitor. active screen of the monitor.
</_description> </description>
</key> </key>
<child name="keybindings" schema="org.gnome.mutter.keybindings"/> <child name="keybindings" schema="org.gnome.mutter.keybindings"/>
@@ -117,12 +117,12 @@
<key name="tab-popup-select" type="as"> <key name="tab-popup-select" type="as">
<default>[]</default> <default>[]</default>
<_summary>Select window from tab popup</_summary> <summary>Select window from tab popup</summary>
</key> </key>
<key name="tab-popup-cancel" type="as"> <key name="tab-popup-cancel" type="as">
<default>[]</default> <default>[]</default>
<_summary>Cancel tab popup</_summary> <summary>Cancel tab popup</summary>
</key> </key>
</schema> </schema>

View File

@@ -3,51 +3,51 @@
gettext-domain="@GETTEXT_DOMAIN@"> gettext-domain="@GETTEXT_DOMAIN@">
<key name="switch-to-session-1" type="as"> <key name="switch-to-session-1" type="as">
<default><![CDATA[['<Primary><Alt>F1']]]></default> <default><![CDATA[['<Primary><Alt>F1']]]></default>
<_summary>Switch to VT 1</_summary> <summary>Switch to VT 1</summary>
</key> </key>
<key name="switch-to-session-2" type="as"> <key name="switch-to-session-2" type="as">
<default><![CDATA[['<Primary><Alt>F2']]]></default> <default><![CDATA[['<Primary><Alt>F2']]]></default>
<_summary>Switch to VT 2</_summary> <summary>Switch to VT 2</summary>
</key> </key>
<key name="switch-to-session-3" type="as"> <key name="switch-to-session-3" type="as">
<default><![CDATA[['<Primary><Alt>F3']]]></default> <default><![CDATA[['<Primary><Alt>F3']]]></default>
<_summary>Switch to VT 3</_summary> <summary>Switch to VT 3</summary>
</key> </key>
<key name="switch-to-session-4" type="as"> <key name="switch-to-session-4" type="as">
<default><![CDATA[['<Primary><Alt>F4']]]></default> <default><![CDATA[['<Primary><Alt>F4']]]></default>
<_summary>Switch to VT 4</_summary> <summary>Switch to VT 4</summary>
</key> </key>
<key name="switch-to-session-5" type="as"> <key name="switch-to-session-5" type="as">
<default><![CDATA[['<Primary><Alt>F5']]]></default> <default><![CDATA[['<Primary><Alt>F5']]]></default>
<_summary>Switch to VT 5</_summary> <summary>Switch to VT 5</summary>
</key> </key>
<key name="switch-to-session-6" type="as"> <key name="switch-to-session-6" type="as">
<default><![CDATA[['<Primary><Alt>F6']]]></default> <default><![CDATA[['<Primary><Alt>F6']]]></default>
<_summary>Switch to VT 6</_summary> <summary>Switch to VT 6</summary>
</key> </key>
<key name="switch-to-session-7" type="as"> <key name="switch-to-session-7" type="as">
<default><![CDATA[['<Primary><Alt>F7']]]></default> <default><![CDATA[['<Primary><Alt>F7']]]></default>
<_summary>Switch to VT 7</_summary> <summary>Switch to VT 7</summary>
</key> </key>
<key name="switch-to-session-8" type="as"> <key name="switch-to-session-8" type="as">
<default><![CDATA[['<Primary><Alt>F8']]]></default> <default><![CDATA[['<Primary><Alt>F8']]]></default>
<_summary>Switch to VT 8</_summary> <summary>Switch to VT 8</summary>
</key> </key>
<key name="switch-to-session-9" type="as"> <key name="switch-to-session-9" type="as">
<default><![CDATA[['<Primary><Alt>F9']]]></default> <default><![CDATA[['<Primary><Alt>F9']]]></default>
<_summary>Switch to VT 9</_summary> <summary>Switch to VT 9</summary>
</key> </key>
<key name="switch-to-session-10" type="as"> <key name="switch-to-session-10" type="as">
<default><![CDATA[['<Primary><Alt>F10']]]></default> <default><![CDATA[['<Primary><Alt>F10']]]></default>
<_summary>Switch to VT 10</_summary> <summary>Switch to VT 10</summary>
</key> </key>
<key name="switch-to-session-11" type="as"> <key name="switch-to-session-11" type="as">
<default><![CDATA[['<Primary><Alt>F11']]]></default> <default><![CDATA[['<Primary><Alt>F11']]]></default>
<_summary>Switch to VT 11</_summary> <summary>Switch to VT 11</summary>
</key> </key>
<key name="switch-to-session-12" type="as"> <key name="switch-to-session-12" type="as">
<default><![CDATA[['<Primary><Alt>F12']]]></default> <default><![CDATA[['<Primary><Alt>F12']]]></default>
<_summary>Switch to VT 12</_summary> <summary>Switch to VT 12</summary>
</key> </key>
</schema> </schema>
</schemalist> </schemalist>

68
po/Makevars Normal file
View File

@@ -0,0 +1,68 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ \
--keyword=C_:1c,2 --keyword=NC_:1c,2 \
--keyword=g_dngettext:2,3 \
--flag=g_dngettext:2:pass-c-format \
--flag=g_strdup_printf:1:c-format \
--flag=g_string_printf:2:c-format \
--flag=g_string_append_printf:2:c-format \
--flag=g_error_new:3:c-format \
--flag=g_set_error:4:c-format \
--flag=g_markup_printf_escaped:1:c-format \
--flag=g_log:3:c-format \
--flag=g_print:1:c-format \
--flag=g_printerr:1:c-format \
--flag=g_printf:1:c-format \
--flag=g_fprintf:2:c-format \
--flag=g_sprintf:2:c-format \
--flag=g_snprintf:3:c-format
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = Translation copyright holder
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS = http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&keywords=I18N+L10N&component=general
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
# Ignore the timestamp of the .pot file, as git clones do not have
# deterministic timestamps, and .po files are updated by translators
# (only) in GNOME projects.
PO_DEPENDS_ON_POT = no
# This tells whether or not to forcibly update $(DOMAIN).pot and
# regenerate PO files on "make dist". Possible values are "yes" and
# "no". Set this to no if the POT file and PO files are maintained
# externally.
DIST_DEPENDS_ON_UPDATE_PO = no

View File

@@ -1,8 +1,8 @@
# List of source files containing translatable strings. # List of source files containing translatable strings.
# Please keep this file sorted alphabetically. # Please keep this file sorted alphabetically.
data/50-mutter-navigation.xml.in data/50-mutter-navigation.xml
data/50-mutter-system.xml.in data/50-mutter-system.xml
data/50-mutter-windows.xml.in data/50-mutter-windows.xml
data/mutter.desktop.in data/mutter.desktop.in
data/org.gnome.mutter.gschema.xml.in data/org.gnome.mutter.gschema.xml.in
data/org.gnome.mutter.wayland.gschema.xml.in data/org.gnome.mutter.wayland.gschema.xml.in

View File

@@ -1,13 +1,12 @@
# List of source files that should NOT be translated. # List of source files that should NOT be translated.
# Please keep this file sorted alphabetically. # Please keep this file sorted alphabetically.
clutter/clutter/clutter-actor-meta.c
clutter/clutter/clutter-actor.c clutter/clutter/clutter-actor.c
clutter/clutter/clutter-actor-meta.c
clutter/clutter/clutter-align-constraint.c clutter/clutter/clutter-align-constraint.c
clutter/clutter/clutter-backend.c clutter/clutter/clutter-backend.c
clutter/clutter/clutter-bin-layout.c
clutter/clutter/clutter-bind-constraint.c clutter/clutter/clutter-bind-constraint.c
clutter/clutter/clutter-binding-pool.c clutter/clutter/clutter-binding-pool.c
clutter/clutter/clutter-bin-layout.c
clutter/clutter/clutter-box-layout.c clutter/clutter/clutter-box-layout.c
clutter/clutter/clutter-brightness-contrast-effect.c clutter/clutter/clutter-brightness-contrast-effect.c
clutter/clutter/clutter-canvas.c clutter/clutter/clutter-canvas.c
@@ -52,17 +51,18 @@ clutter/clutter/clutter-text.c
clutter/clutter/clutter-timeline.c clutter/clutter/clutter-timeline.c
clutter/clutter/clutter-transition.c clutter/clutter/clutter-transition.c
clutter/clutter/clutter-units.c clutter/clutter/clutter-units.c
clutter/clutter/clutter-virtual-input-device.c
clutter/clutter/clutter-zoom-action.c clutter/clutter/clutter-zoom-action.c
clutter/clutter/deprecated/clutter-alpha.c clutter/clutter/deprecated/clutter-alpha.c
clutter/clutter/deprecated/clutter-animation.c clutter/clutter/deprecated/clutter-animation.c
clutter/clutter/deprecated/clutter-animator.c clutter/clutter/deprecated/clutter-animator.c
clutter/clutter/deprecated/clutter-behaviour.c
clutter/clutter/deprecated/clutter-behaviour-depth.c clutter/clutter/deprecated/clutter-behaviour-depth.c
clutter/clutter/deprecated/clutter-behaviour-ellipse.c clutter/clutter/deprecated/clutter-behaviour-ellipse.c
clutter/clutter/deprecated/clutter-behaviour-opacity.c clutter/clutter/deprecated/clutter-behaviour-opacity.c
clutter/clutter/deprecated/clutter-behaviour-path.c clutter/clutter/deprecated/clutter-behaviour-path.c
clutter/clutter/deprecated/clutter-behaviour-rotate.c clutter/clutter/deprecated/clutter-behaviour-rotate.c
clutter/clutter/deprecated/clutter-behaviour-scale.c clutter/clutter/deprecated/clutter-behaviour-scale.c
clutter/clutter/deprecated/clutter-behaviour.c
clutter/clutter/deprecated/clutter-box.c clutter/clutter/deprecated/clutter-box.c
clutter/clutter/deprecated/clutter-cairo-texture.c clutter/clutter/deprecated/clutter-cairo-texture.c
clutter/clutter/deprecated/clutter-fixed.c clutter/clutter/deprecated/clutter-fixed.c
@@ -72,9 +72,10 @@ clutter/clutter/deprecated/clutter-shader.c
clutter/clutter/deprecated/clutter-state.c clutter/clutter/deprecated/clutter-state.c
clutter/clutter/deprecated/clutter-table-layout.c clutter/clutter/deprecated/clutter-table-layout.c
clutter/clutter/deprecated/clutter-texture.c clutter/clutter/deprecated/clutter-texture.c
clutter/clutter/evdev/clutter-virtual-input-device-evdev.c
clutter/clutter/wayland/clutter-wayland-surface.c clutter/clutter/wayland/clutter-wayland-surface.c
clutter/clutter/x11/clutter-backend-x11.c clutter/clutter/x11/clutter-backend-x11.c
clutter/clutter/x11/clutter-keymap-x11.c clutter/clutter/x11/clutter-keymap-x11.c
clutter/clutter/x11/clutter-x11-texture-pixmap.c clutter/clutter/x11/clutter-x11-texture-pixmap.c
cogl/cogl/cogl-debug-options.h
cogl/cogl/cogl-debug.c cogl/cogl/cogl-debug.c
cogl/cogl/cogl-debug-options.h

View File

@@ -6,22 +6,23 @@
# 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. # Marek Černocký <marek@manet.cz>, 2012, 2013, 2014, 2016.
#
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n" "product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-02-27 13:36+0000\n" "POT-Creation-Date: 2016-08-16 12:01+0000\n"
"PO-Revision-Date: 2014-09-22 15:01+0200\n" "PO-Revision-Date: 2016-08-17 13:15+0200\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n" "Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\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=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Virtaal 0.7.1\n" "X-Generator: Gtranslator 2.91.7\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: ../data/50-mutter-navigation.xml.in.h:1 #: ../data/50-mutter-navigation.xml.in.h:1
@@ -456,36 +457,45 @@ msgstr "Přepnout na VT 11"
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "Přepnout na VT 12" msgstr "Přepnout na VT 12"
#: ../src/backends/meta-monitor-manager.c:518 #: ../src/backends/meta-input-settings.c:1707
#| msgid "Switch system controls"
msgid "Switch monitor"
msgstr "Přepnout monitor"
#: ../src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Zobrazit nápovědu na obrazovce"
#: ../src/backends/meta-monitor-manager.c:514
msgid "Built-in display" msgid "Built-in display"
msgstr "Vestavěný displej" msgstr "Vestavěný displej"
#: ../src/backends/meta-monitor-manager.c:544 #: ../src/backends/meta-monitor-manager.c:537
msgid "Unknown" msgid "Unknown"
msgstr "Neznámý" msgstr "Neznámý"
#: ../src/backends/meta-monitor-manager.c:546 #: ../src/backends/meta-monitor-manager.c:539
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Neznámý displej" msgstr "Neznámý 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:554 #: ../src/backends/meta-monitor-manager.c:547
#, 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:463
#, 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 "Jiný kompozitní správce již běží na obrazovce %i displeje „%s“." msgstr "Jiný kompozitní správce již běží na obrazovce %i displeje „%s“."
#: ../src/core/bell.c:185 #: ../src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "Událost zvonku" msgstr "Událost zvonku"
@@ -514,44 +524,44 @@ msgstr "_Počkat"
msgid "_Force Quit" msgid "_Force Quit"
msgstr "_Vynutit ukončení" msgstr "_Vynutit ukončení"
#: ../src/core/display.c:555 #: ../src/core/display.c:590
#, c-format #, c-format
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:181 #: ../src/core/main.c:182
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:187 #: ../src/core/main.c:188
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:193 #: ../src/core/main.c:194
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:198 #: ../src/core/main.c:199
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:204 #: ../src/core/main.c:205
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:210 #: ../src/core/main.c:211
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:217 #: ../src/core/main.c:218
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:223 #: ../src/core/main.c:224
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:231 #: ../src/core/main.c:232
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ě"
@@ -573,7 +583,7 @@ msgstr ""
#: ../src/core/mutter.c:53 #: ../src/core/mutter.c:53
msgid "Print version" msgid "Print version"
msgstr "Vypíše verzi" msgstr "Vypsat verzi"
#: ../src/core/mutter.c:59 #: ../src/core/mutter.c:59
msgid "Mutter plugin to use" msgid "Mutter plugin to use"
@@ -593,15 +603,20 @@ msgstr ""
"Displej „%s“ již správce oken má; zkuste prosím nahradit aktuálního správce " "Displej „%s“ již správce oken má; zkuste prosím nahradit aktuálního správce "
"oken pomocí přepínače --replace." "oken pomocí přepínače --replace."
#: ../src/core/screen.c:603 #: ../src/core/screen.c:606
#, 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“ je neplatná\n" msgstr "Obrazovka %d na displeji „%s“ je neplatná\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 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:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Přepínač režimu: režim %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 &quot;save current setup&quot; and will have to "
@@ -610,7 +625,7 @@ msgstr ""
"Tato okna nepodporují &quot;ukládání aktuálního nastavení&quot; a po vašem " "Tato okna nepodporují &quot;ukládání aktuálního nastavení&quot; a po vašem "
"příštím přihlášení je budete muset spustit ručně." "příštím přihlášení je budete muset spustit ručně."
#: ../src/x11/window-props.c:549 #: ../src/x11/window-props.c:548
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (na %s)" msgstr "%s (na %s)"
@@ -1274,4 +1289,3 @@ msgstr "%s (na %s)"
#~ msgid "Move to Another _Workspace" #~ msgid "Move to Another _Workspace"
#~ msgstr "Přes_unout na jinou plochu" #~ msgstr "Přes_unout na jinou plochu"

126
po/fur.po
View File

@@ -8,15 +8,15 @@ 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: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n" "product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-25 01:58+0000\n" "POT-Creation-Date: 2016-08-07 10:39+0000\n"
"PO-Revision-Date: 2016-03-25 17:54+0100\n" "PO-Revision-Date: 2016-08-07 18:18+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n" "Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n" "Language: fur\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"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" "X-Generator: Poedit 1.8.8\n"
"X-Generator: Poedit 1.8.5\n"
#: ../data/50-mutter-navigation.xml.in.h:1 #: ../data/50-mutter-navigation.xml.in.h:1
msgid "Navigation" msgid "Navigation"
@@ -108,27 +108,27 @@ msgstr "Passe al control di sisteme precedent"
#: ../data/50-mutter-navigation.xml.in.h:23 #: ../data/50-mutter-navigation.xml.in.h:23
msgid "Switch windows directly" msgid "Switch windows directly"
msgstr "" msgstr "Passe dret ai barcons"
#: ../data/50-mutter-navigation.xml.in.h:24 #: ../data/50-mutter-navigation.xml.in.h:24
msgid "Switch directly to previous window" msgid "Switch directly to previous window"
msgstr "" msgstr "Passe dret al barcon precedent"
#: ../data/50-mutter-navigation.xml.in.h:25 #: ../data/50-mutter-navigation.xml.in.h:25
msgid "Switch windows of an app directly" msgid "Switch windows of an app directly"
msgstr "" msgstr "Passe dret a un barcon di une aplicazion"
#: ../data/50-mutter-navigation.xml.in.h:26 #: ../data/50-mutter-navigation.xml.in.h:26
msgid "Switch directly to previous window of an app" msgid "Switch directly to previous window of an app"
msgstr "" msgstr "Passe dret al barcon precedent di une aplicazion"
#: ../data/50-mutter-navigation.xml.in.h:27 #: ../data/50-mutter-navigation.xml.in.h:27
msgid "Switch system controls directly" msgid "Switch system controls directly"
msgstr "" msgstr "Passe dret ai controi dal sisteme"
#: ../data/50-mutter-navigation.xml.in.h:28 #: ../data/50-mutter-navigation.xml.in.h:28
msgid "Switch directly to previous system control" msgid "Switch directly to previous system control"
msgstr "" msgstr "Passe dret al control precedent dal sisteme"
#: ../data/50-mutter-navigation.xml.in.h:29 #: ../data/50-mutter-navigation.xml.in.h:29
msgid "Hide all normal windows" msgid "Hide all normal windows"
@@ -176,7 +176,7 @@ msgstr "Sisteme"
#: ../data/50-mutter-system.xml.in.h:2 #: ../data/50-mutter-system.xml.in.h:2
msgid "Show the run command prompt" msgid "Show the run command prompt"
msgstr "" msgstr "Mostre la richieste \"eseguìs comant\""
#: ../data/50-mutter-system.xml.in.h:3 #: ../data/50-mutter-system.xml.in.h:3
msgid "Show the activities overview" msgid "Show the activities overview"
@@ -252,11 +252,11 @@ msgstr "Slargje il barcon par orizontâl"
#: ../data/50-mutter-windows.xml.in.h:18 #: ../data/50-mutter-windows.xml.in.h:18
msgid "View split on left" msgid "View split on left"
msgstr "" msgstr "Slargje dividint ae çampe"
#: ../data/50-mutter-windows.xml.in.h:19 #: ../data/50-mutter-windows.xml.in.h:19
msgid "View split on right" msgid "View split on right"
msgstr "" msgstr "Slargje dividint ae drete"
#: ../data/mutter.desktop.in.h:1 #: ../data/mutter.desktop.in.h:1
msgid "Mutter" msgid "Mutter"
@@ -264,7 +264,7 @@ msgstr "Mutter"
#: ../data/org.gnome.mutter.gschema.xml.in.h:1 #: ../data/org.gnome.mutter.gschema.xml.in.h:1
msgid "Modifier to use for extended window management operations" msgid "Modifier to use for extended window management operations"
msgstr "" msgstr "Modificadôr di doprâ pes operazions estesis di gjestion barcons"
#: ../data/org.gnome.mutter.gschema.xml.in.h:2 #: ../data/org.gnome.mutter.gschema.xml.in.h:2
msgid "" msgid ""
@@ -273,10 +273,14 @@ msgid ""
"\"Windows key\" on PC hardware. It's expected that this binding either the " "\"Windows key\" on PC hardware. It's expected that this binding either the "
"default or set to the empty string." "default or set to the empty string."
msgstr "" msgstr ""
"Cheste clâf e tache il \"overlay\", che e je une cumbinazion tra la "
"panoramiche dai barcons e il sisteme par inviâ lis aplicazions. Il valôr "
"predefinît al è pensât par jessi il \"tast Windows\" su hardware PC. Si "
"spiete che cheste scurte e sedi il valôr predefinît o une stringhe vueide."
#: ../data/org.gnome.mutter.gschema.xml.in.h:3 #: ../data/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs" msgid "Attach modal dialogs"
msgstr "" msgstr "Dialics modâi tacâts"
#: ../data/org.gnome.mutter.gschema.xml.in.h:4 #: ../data/org.gnome.mutter.gschema.xml.in.h:4
msgid "" msgid ""
@@ -284,10 +288,13 @@ msgid ""
"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 "
"the parent window." "the parent window."
msgstr "" msgstr ""
"Se metût a VÊR, invezit di vê sbaris di titul indipendentis, i dialics modâi "
"a semein tacâts ae sbare dal titul dal barcon gjenitôr e si spostin cun lui."
#: ../data/org.gnome.mutter.gschema.xml.in.h:5 #: ../data/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Abilite il piastrelâ tal ôr cuant che si strissine i barcons tal ôr dal visôr"
#: ../data/org.gnome.mutter.gschema.xml.in.h:6 #: ../data/org.gnome.mutter.gschema.xml.in.h:6
msgid "" msgid ""
@@ -295,6 +302,10 @@ msgid ""
"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 ""
"Se abilitade, strissinant i barcons sui ôrs verticâi dal schermi, i barcons "
"a vegnin slargjâts in verticâl e ridimensionâts in orizontâl, in mût di "
"cuvierzi metât dal spazi disponibil. Strissinant sul ôr superiôr dal schermi "
"al slargje i barcons dal dut."
#: ../data/org.gnome.mutter.gschema.xml.in.h:7 #: ../data/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
@@ -306,6 +317,9 @@ msgid ""
"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 ""
"Determine se i spazis di lavôr a son gjestîts in maniere dinamiche o se il "
"lôr numar al è fis (determinât de clâf num-workspaces in org.gnome.desktop."
"wm.preferences)."
#: ../data/org.gnome.mutter.gschema.xml.in.h:9 #: ../data/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary" msgid "Workspaces only on primary"
@@ -316,20 +330,24 @@ 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."
msgstr "" msgstr ""
"Determine se il cambi di spazi di lavôr al à di vignî pai barcons su ducj i "
"visôrs o nome pai barcons sul visôr primari."
#: ../data/org.gnome.mutter.gschema.xml.in.h:11 #: ../data/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup" msgid "No tab popup"
msgstr "" msgstr "Nissun tab popup"
#: ../data/org.gnome.mutter.gschema.xml.in.h:12 #: ../data/org.gnome.mutter.gschema.xml.in.h:12
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."
msgstr "" msgstr ""
"Determine se disabilitâ l'ûs di popup e di curnîs di evidenziadure tal passâ "
"di un barcon a chel altri."
#: ../data/org.gnome.mutter.gschema.xml.in.h:13 #: ../data/org.gnome.mutter.gschema.xml.in.h:13
msgid "Delay focus changes until the pointer stops moving" msgid "Delay focus changes until the pointer stops moving"
msgstr "" msgstr "Tarde il cambiament dal focus fintremai che il puntadôr si ferme"
#: ../data/org.gnome.mutter.gschema.xml.in.h:14 #: ../data/org.gnome.mutter.gschema.xml.in.h:14
msgid "" msgid ""
@@ -337,26 +355,33 @@ msgid ""
"the focus will not be changed immediately when entering a window, but only " "the focus will not be changed immediately when entering a window, but only "
"after the pointer stops moving." "after the pointer stops moving."
msgstr "" msgstr ""
"Se metût a VÊR, e la modalitât di focus e je metude a \"sloppy\" o \"mouse\" "
"alore il focus nol ven spostât subite cuant che si passe suntun barcon, ma "
"nome cuant che il puntadôr si ferme."
#: ../data/org.gnome.mutter.gschema.xml.in.h:15 #: ../data/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width" msgid "Draggable border width"
msgstr "" msgstr "Largjece dal ôr che si pues strissinâ"
#: ../data/org.gnome.mutter.gschema.xml.in.h:16 #: ../data/org.gnome.mutter.gschema.xml.in.h:16
msgid "" msgid ""
"The amount of total draggable borders. If the theme's visible borders are " "The amount of total draggable borders. If the theme's 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 ""
"Il spessôr totâl pai ôrs che si puedin strissinâ. Se i ôrs visibii dal teme "
"no bastin, a vegnin zontâts dai ôrs invisibii par rivâ a chest valôr."
#: ../data/org.gnome.mutter.gschema.xml.in.h:17 #: ../data/org.gnome.mutter.gschema.xml.in.h:17
msgid "Auto maximize nearly monitor sized windows" msgid "Auto maximize nearly monitor sized windows"
msgstr "" msgstr "Slargje in automatic i barcons grancj su par ju come il visôr"
#: ../data/org.gnome.mutter.gschema.xml.in.h:18 #: ../data/org.gnome.mutter.gschema.xml.in.h:18
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."
msgstr "" msgstr ""
"Se abilitât, i gnûfs barcons che a an al inizi la stesse dimension dal visôr "
"a vegnin slargjâts in automatic."
#: ../data/org.gnome.mutter.gschema.xml.in.h:19 #: ../data/org.gnome.mutter.gschema.xml.in.h:19
msgid "Place new windows in the center" msgid "Place new windows in the center"
@@ -367,14 +392,16 @@ 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."
msgstr "" msgstr ""
"Se metût a VÊR, i gnûfs barcons a vegnaran plaçâts simpri tal mieç dal "
"schermi atîf dal visôr."
#: ../data/org.gnome.mutter.gschema.xml.in.h:21 #: ../data/org.gnome.mutter.gschema.xml.in.h:21
msgid "Select window from tab popup" msgid "Select window from tab popup"
msgstr "" msgstr "Selezione barcon dal tab popup"
#: ../data/org.gnome.mutter.gschema.xml.in.h:22 #: ../data/org.gnome.mutter.gschema.xml.in.h:22
msgid "Cancel tab popup" msgid "Cancel tab popup"
msgstr "" msgstr "Anule tab popup"
#: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1 #: ../data/org.gnome.mutter.wayland.gschema.xml.in.h:1
msgid "Switch to VT 1" msgid "Switch to VT 1"
@@ -424,29 +451,37 @@ msgstr "Passe al VT 11"
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "Passe al VT 12" msgstr "Passe al VT 12"
#: ../src/backends/meta-monitor-manager.c:518 #: ../src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Cambie visôr"
#: ../src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Mostre jutori a schermi"
#: ../src/backends/meta-monitor-manager.c:515
msgid "Built-in display" msgid "Built-in display"
msgstr "Display integrât" msgstr "Display integrât"
#: ../src/backends/meta-monitor-manager.c:544 #: ../src/backends/meta-monitor-manager.c:538
msgid "Unknown" msgid "Unknown"
msgstr "No cognossût" msgstr "No cognossût"
#: ../src/backends/meta-monitor-manager.c:546 #: ../src/backends/meta-monitor-manager.c:540
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Display no cognossût" msgstr "Display no cognossût"
#. 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:548
#, 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:463
#, 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"
@@ -473,6 +508,8 @@ 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 ""
"Al è pussibil sielzi di spietâ un pôc lassant che la aplicazion e continui o "
"sfuarçâ la aplicazion par sierâle dal dut."
#: ../src/core/delete.c:141 #: ../src/core/delete.c:141
msgid "_Wait" msgid "_Wait"
@@ -482,44 +519,44 @@ msgstr "_Spiete"
msgid "_Force Quit" msgid "_Force Quit"
msgstr "Sfuarce _Jessude" msgstr "Sfuarce _Jessude"
#: ../src/core/display.c:555 #: ../src/core/display.c:590
#, c-format #, c-format
msgid "Failed to open X Window System display '%s'\n" msgid "Failed to open X Window System display '%s'\n"
msgstr "Impussibil vierzi il display '%s' di X Window System\n" msgstr "Impussibil vierzi il display '%s' di X Window System\n"
#: ../src/core/main.c:181 #: ../src/core/main.c:182
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "" msgstr "Disabilite la conession al gjestôr de session"
#: ../src/core/main.c:187 #: ../src/core/main.c:188
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Rimplace il window manager in vore" msgstr "Rimplace il window manager in vore"
#: ../src/core/main.c:193 #: ../src/core/main.c:194
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "" msgstr "Specifiche il ID di gjestion session"
#: ../src/core/main.c:198 #: ../src/core/main.c:199
msgid "X Display to use" msgid "X Display to use"
msgstr "Display X di doprâ" msgstr "Display X di doprâ"
#: ../src/core/main.c:204 #: ../src/core/main.c:205
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Inizialize session da file salvât" msgstr "Inizialize session da file salvât"
#: ../src/core/main.c:210 #: ../src/core/main.c:211
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Fâs lis clamadis X sincronis" msgstr "Fâs lis clamadis X sincronis"
#: ../src/core/main.c:217 #: ../src/core/main.c:218
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Eseguìs come compositor wayland" msgstr "Eseguìs come compositor wayland"
#: ../src/core/main.c:223 #: ../src/core/main.c:224
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Eseguìs come compositor nidiât" msgstr "Eseguìs come compositor nidiât"
#: ../src/core/main.c:231 #: ../src/core/main.c:232
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Eseguìs come servidôr display complet, invezit che nidiât" msgstr "Eseguìs come servidôr display complet, invezit che nidiât"
@@ -535,7 +572,7 @@ msgstr ""
"mutter %s\n" "mutter %s\n"
"Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., e altris\n" "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., e altris\n"
"Chest al è software libar; viodi i sorzints pes condizions di copie.\n" "Chest al è software libar; viodi i sorzints pes condizions di copie.\n"
"No je NISSUNE garanzie; nancje di COMERCIABILITÂT o IDONEITÂT A UNE " "No je NISSUNE garanzie; nancje di CUMIERÇABILITÂT o IDONEITÂT A UNE "
"FINALITÂT PARTICOLÂR.\n" "FINALITÂT PARTICOLÂR.\n"
#: ../src/core/mutter.c:53 #: ../src/core/mutter.c:53
@@ -560,15 +597,20 @@ msgstr ""
"Il display \"%s\" al à za un window manager; prove dopre la opzion --replace " "Il display \"%s\" al à za un window manager; prove dopre la opzion --replace "
"par rimplaçâ chel atuâl." "par rimplaçâ chel atuâl."
#: ../src/core/screen.c:603 #: ../src/core/screen.c:606
#, c-format #, c-format
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "Schermi %d su display '%s' no valit\n" msgstr "Schermi %d su display '%s' no valit\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 al è stât compilât cence supuart pe modalitât fetose\n" msgstr "Mutter al è stât compilât cence supuart pe modalitât fetose\n"
#: ../src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Cambie mût: mût %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 &quot;save current setup&quot; and will have to "
@@ -577,7 +619,7 @@ msgstr ""
"Chescj barcons no supuartin la funzion &quot;salve impostazions atuâi&quot; " "Chescj barcons no supuartin la funzion &quot;salve impostazions atuâi&quot; "
"e si scugnarà tornâ a inviâlis a man tal prossim acès." "e si scugnarà tornâ a inviâlis a man tal prossim acès."
#: ../src/x11/window-props.c:549 #: ../src/x11/window-props.c:548
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (su %s)" msgstr "%s (su %s)"

View File

@@ -10,8 +10,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: metacity.HEAD.he\n" "Project-Id-Version: metacity.HEAD.he\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-03-03 14:39+0200\n" "POT-Creation-Date: 2016-08-07 15:11+0300\n"
"PO-Revision-Date: 2016-03-03 14:40+0200\n" "PO-Revision-Date: 2016-08-07 15:12+0300\n"
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n" "Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: עברית <>\n" "Language-Team: עברית <>\n"
"Language: he\n" "Language: he\n"
@@ -453,36 +453,44 @@ msgstr "מעבר ל־VT 11"
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "מעבר ל־VT 12" msgstr "מעבר ל־VT 12"
#: ../src/backends/meta-monitor-manager.c:518 #: ../src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "החלפה בין צגים"
#: ../src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "הצגת עזרה על המסך"
#: ../src/backends/meta-monitor-manager.c:515
msgid "Built-in display" msgid "Built-in display"
msgstr "תצוגה מובנית" msgstr "תצוגה מובנית"
#: ../src/backends/meta-monitor-manager.c:544 #: ../src/backends/meta-monitor-manager.c:538
msgid "Unknown" msgid "Unknown"
msgstr "לא ידוע" msgstr "לא ידוע"
#: ../src/backends/meta-monitor-manager.c:546 #: ../src/backends/meta-monitor-manager.c:540
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:554 #: ../src/backends/meta-monitor-manager.c:548
#, 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:463
#, 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 "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה „%s“." msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה „%s“."
#: ../src/core/bell.c:185 #: ../src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "אירוע פעמון" msgstr "אירוע פעמון"
@@ -510,44 +518,44 @@ msgstr "ה_מתנה"
msgid "_Force Quit" msgid "_Force Quit"
msgstr "_אילוץ סגירה" msgstr "_אילוץ סגירה"
#: ../src/core/display.c:555 #: ../src/core/display.c:590
#, c-format #, c-format
msgid "Failed to open X Window System display '%s'\n" msgid "Failed to open X Window System display '%s'\n"
msgstr "Failed to open X Window System display '%s'\n" msgstr "Failed to open X Window System display '%s'\n"
#: ../src/core/main.c:181 #: ../src/core/main.c:182
msgid "Disable connection to session manager" msgid "Disable connection to session manager"
msgstr "Disable connection to session manager" msgstr "Disable connection to session manager"
#: ../src/core/main.c:187 #: ../src/core/main.c:188
msgid "Replace the running window manager" msgid "Replace the running window manager"
msgstr "Replace the running window manager" msgstr "Replace the running window manager"
#: ../src/core/main.c:193 #: ../src/core/main.c:194
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Specify session management ID" msgstr "Specify session management ID"
#: ../src/core/main.c:198 #: ../src/core/main.c:199
msgid "X Display to use" msgid "X Display to use"
msgstr "X Display to use" msgstr "X Display to use"
#: ../src/core/main.c:204 #: ../src/core/main.c:205
msgid "Initialize session from savefile" msgid "Initialize session from savefile"
msgstr "Initialize session from savefile" msgstr "Initialize session from savefile"
#: ../src/core/main.c:210 #: ../src/core/main.c:211
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Make X calls synchronous" msgstr "Make X calls synchronous"
#: ../src/core/main.c:217 #: ../src/core/main.c:218
msgid "Run as a wayland compositor" msgid "Run as a wayland compositor"
msgstr "Run as a wayland compositor" msgstr "Run as a wayland compositor"
#: ../src/core/main.c:223 #: ../src/core/main.c:224
msgid "Run as a nested compositor" msgid "Run as a nested compositor"
msgstr "Run as a nested compositor" msgstr "Run as a nested compositor"
#: ../src/core/main.c:231 #: ../src/core/main.c:232
msgid "Run as a full display server, rather than nested" msgid "Run as a full display server, rather than nested"
msgstr "Run as a full display server, rather than nested" msgstr "Run as a full display server, rather than nested"
@@ -587,15 +595,20 @@ msgstr ""
"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 replace the current window manager." "to replace the current window manager."
#: ../src/core/screen.c:603 #: ../src/core/screen.c:606
#, c-format #, c-format
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "Screen %d on display '%s' is invalid\n" msgstr "Screen %d on display '%s' is invalid\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 הודר ללא תמיכה במצב פירוט\n" msgstr "Mutter הודר ללא תמיכה במצב פירוט\n"
#: ../src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "מצב העברה: מצב %d"
#: ../src/x11/session.c:1815 #: ../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 &quot;save current setup&quot; and will have to "
@@ -604,7 +617,7 @@ msgstr ""
"חלונות אלו אינם תומכים ב&quot;שמירת ההגדרות הנוכחיות&quot;, ויהיה צורך " "חלונות אלו אינם תומכים ב&quot;שמירת ההגדרות הנוכחיות&quot;, ויהיה צורך "
"באתחול ידני בכניסה הבאה שלך." "באתחול ידני בכניסה הבאה שלך."
#: ../src/x11/window-props.c:549 #: ../src/x11/window-props.c:548
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (מעל %s)" msgstr "%s (מעל %s)"

View File

@@ -12,8 +12,8 @@ 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: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n" "product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-04 13:42+0000\n" "POT-Creation-Date: 2016-07-22 13:03+0000\n"
"PO-Revision-Date: 2016-03-04 20:43+0100\n" "PO-Revision-Date: 2016-08-05 00:06+0200\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"
@@ -455,29 +455,38 @@ msgstr "Váltás a 11. VT-re"
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "Váltás a 12. VT-re" msgstr "Váltás a 12. VT-re"
#: ../src/backends/meta-monitor-manager.c:518 #: ../src/backends/meta-input-settings.c:1601
#| msgid "Switch system controls"
msgid "Switch monitor"
msgstr "Monitorváltás"
#: ../src/backends/meta-input-settings.c:1603
msgid "Show on-screen help"
msgstr "Képernyősúgó megjelenítése"
#: ../src/backends/meta-monitor-manager.c:515
msgid "Built-in display" msgid "Built-in display"
msgstr "Beépített kijelző" msgstr "Beépített kijelző"
#: ../src/backends/meta-monitor-manager.c:544 #: ../src/backends/meta-monitor-manager.c:538
msgid "Unknown" msgid "Unknown"
msgstr "Ismeretlen" msgstr "Ismeretlen"
#: ../src/backends/meta-monitor-manager.c:546 #: ../src/backends/meta-monitor-manager.c:540
msgid "Unknown Display" msgid "Unknown Display"
msgstr "Ismeretlen kijelző" msgstr "Ismeretlen kijelző"
#. 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:548
#, 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:463
#, 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"
@@ -485,7 +494,7 @@ msgid ""
msgstr "" msgstr ""
"Már fut egy másik betűszedés-kezelő a(z) %i képernyőn a(z) „%s” megjelenítőn." "Már fut egy másik betűszedés-kezelő a(z) %i képernyőn a(z) „%s” megjelenítőn."
#: ../src/core/bell.c:185 #: ../src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "Csengetés esemény" msgstr "Csengetés esemény"
@@ -514,45 +523,44 @@ msgstr "Vá_rakozás"
msgid "_Force Quit" msgid "_Force Quit"
msgstr "_Erőltetett kilépés" msgstr "_Erőltetett kilépés"
#: ../src/core/display.c:555 #: ../src/core/display.c:590
#, c-format #, c-format
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:181 #: ../src/core/main.c:182
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:187 #: ../src/core/main.c:188
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:193 #: ../src/core/main.c:194
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:198 #: ../src/core/main.c:199
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:204 #: ../src/core/main.c:205
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:210 #: ../src/core/main.c:211
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:217 #: ../src/core/main.c:218
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:223 #: ../src/core/main.c:224
#| msgid "Run as a wayland compositor"
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:231 #: ../src/core/main.c:232
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"
@@ -599,10 +607,15 @@ msgstr ""
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "A(z) %d képernyő a(z) „%s” megjelenítőn érvénytelen\n" msgstr "A(z) %d képernyő a(z) „%s” megjelenítőn érvénytelen\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 "A Mutter ablakkezelőt a részletes mód támogatása nélkül fordították\n" msgstr "A Mutter ablakkezelőt a részletes mód támogatása nélkül fordították\n"
#: ../src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Módkapcsoló: %d. mó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 &quot;save current setup&quot; and will have to "
@@ -612,7 +625,7 @@ msgstr ""
"mentését&quot;, emiatt ezeket a legközelebbi bejelentkezéskor manuálisan " "mentését&quot;, emiatt ezeket a legközelebbi bejelentkezéskor manuálisan "
"újra kell indítania." "újra kell indítania."
#: ../src/x11/window-props.c:549 #: ../src/x11/window-props.c:548
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (ezen: %s)" msgstr "%s (ezen: %s)"

View File

@@ -6,15 +6,15 @@
# 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. # Aurimas Černius <aurisc4@gmail.com>, 2013, 2014, 2015, 2016.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: lt\n" "Project-Id-Version: lt\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n" "product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-02-26 09:54+0000\n" "POT-Creation-Date: 2016-07-22 13:03+0000\n"
"PO-Revision-Date: 2016-02-25 15:18+0200\n" "PO-Revision-Date: 2016-08-03 22:14+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"
@@ -23,7 +23,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2);\n" "%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 1.8.7\n" "X-Generator: Gtranslator 2.91.7\n"
#: ../data/50-mutter-navigation.xml.in.h:1 #: ../data/50-mutter-navigation.xml.in.h:1
msgid "Navigation" msgid "Navigation"
@@ -457,36 +457,45 @@ msgstr "Persijungti į VT 11"
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "Persijungti į VT 12" msgstr "Persijungti į VT 12"
#: ../src/backends/meta-monitor-manager.c:518 #: ../src/backends/meta-input-settings.c:1601
#| msgid "Switch system controls"
msgid "Switch monitor"
msgstr "Perjungti monitorių"
#: ../src/backends/meta-input-settings.c:1603
msgid "Show on-screen help"
msgstr "Rodyti pagalbą ekrane"
#: ../src/backends/meta-monitor-manager.c:515
msgid "Built-in display" msgid "Built-in display"
msgstr "Integruotas vaizduoklis" msgstr "Integruotas vaizduoklis"
#: ../src/backends/meta-monitor-manager.c:544 #: ../src/backends/meta-monitor-manager.c:538
msgid "Unknown" msgid "Unknown"
msgstr "Nežinomas" msgstr "Nežinomas"
#: ../src/backends/meta-monitor-manager.c:546 #: ../src/backends/meta-monitor-manager.c:540
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:554 #: ../src/backends/meta-monitor-manager.c:548
#, 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:463
#, 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 "Kita kompozicijos tvarkytuvė jau veikia ekrane %i vaizduoklyje „%s“." msgstr "Kita kompozicijos tvarkytuvė jau veikia ekrane %i vaizduoklyje „%s“."
#: ../src/core/bell.c:185 #: ../src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "Skambučio įvykis" msgstr "Skambučio įvykis"
@@ -513,44 +522,44 @@ msgstr "_Laukti"
msgid "_Force Quit" msgid "_Force Quit"
msgstr "_Priverstinai išeiti" msgstr "_Priverstinai išeiti"
#: ../src/core/display.c:555 #: ../src/core/display.c:590
#, c-format #, c-format
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 ekrano „%s“\n" msgstr "Nepavyko atverti X Window sistemos ekrano „%s“\n"
#: ../src/core/main.c:181 #: ../src/core/main.c:182
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:187 #: ../src/core/main.c:188
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:193 #: ../src/core/main.c:194
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Nurodyti sesijos tvarkymo ID" msgstr "Nurodyti sesijos tvarkymo ID"
#: ../src/core/main.c:198 #: ../src/core/main.c:199
msgid "X Display to use" msgid "X Display to use"
msgstr "Naudotinas X ekranas" msgstr "Naudotinas X ekranas"
#: ../src/core/main.c:204 #: ../src/core/main.c:205
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:210 #: ../src/core/main.c:211
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Sinchronizuoti X iškvietimus" msgstr "Sinchronizuoti X iškvietimus"
#: ../src/core/main.c:217 #: ../src/core/main.c:218
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:223 #: ../src/core/main.c:224
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:231 #: ../src/core/main.c:232
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į"
@@ -598,10 +607,15 @@ msgstr ""
msgid "Screen %d on display '%s' is invalid\n" msgid "Screen %d on display '%s' is invalid\n"
msgstr "Ekranas %d vaizduoklyje „%s“ netinkamas\n" msgstr "Ekranas %d vaizduoklyje „%s“ netinkamas\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 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:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Veiksenos perjungimas: veiksena %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 &quot;save current setup&quot; and will have to "
@@ -610,7 +624,7 @@ msgstr ""
"Šie langai nepalaiko &quot;išsaugoti esamus nustatymus&quot; komandos ir " "Šie langai nepalaiko &quot;išsaugoti esamus nustatymus&quot; komandos ir "
"turi būti paleisti rankiniu būdu, kai prisijungsite kitą kartą." "turi būti paleisti rankiniu būdu, kai prisijungsite kitą kartą."
#: ../src/x11/window-props.c:549 #: ../src/x11/window-props.c:548
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (kompiuteryje %s)" msgstr "%s (kompiuteryje %s)"

View File

@@ -14,8 +14,8 @@ msgstr ""
"Project-Id-Version: mutter\n" "Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n" "product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-01 13:42+0000\n" "POT-Creation-Date: 2016-07-22 13:03+0000\n"
"PO-Revision-Date: 2016-03-01 20:40+0100\n" "PO-Revision-Date: 2016-08-04 15:28+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 +23,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 1.8.7\n" "X-Generator: Poedit 1.8.8\n"
#: ../data/50-mutter-navigation.xml.in.h:1 #: ../data/50-mutter-navigation.xml.in.h:1
msgid "Navigation" msgid "Navigation"
@@ -242,7 +242,7 @@ msgstr "Aktivovať ponuku okna"
# description # description
#: ../data/50-mutter-windows.xml.in.h:3 #: ../data/50-mutter-windows.xml.in.h:3
msgid "Toggle fullscreen mode" msgid "Toggle fullscreen mode"
msgstr "Prepnúť celoobrazovkový režim" msgstr "Prepnúť režim na celú obrazovku"
# description # description
#: ../data/50-mutter-windows.xml.in.h:4 #: ../data/50-mutter-windows.xml.in.h:4
@@ -542,29 +542,39 @@ msgstr "Prepnúť na VT č. 11"
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "Prepnúť na VT č. 12" msgstr "Prepnúť na VT č. 12"
#: ../src/backends/meta-monitor-manager.c:518 # PK: predpokladam ze to prepisane medzi tlacidlami
# description
#: ../src/backends/meta-input-settings.c:1601
msgid "Switch monitor"
msgstr "Prepnúť monitor"
#: ../src/backends/meta-input-settings.c:1603
msgid "Show on-screen help"
msgstr "Zobraziť pomocníka na obrazovke"
#: ../src/backends/meta-monitor-manager.c:515
msgid "Built-in display" msgid "Built-in display"
msgstr "Vstavaný displej" msgstr "Vstavaný displej"
#: ../src/backends/meta-monitor-manager.c:544 #: ../src/backends/meta-monitor-manager.c:538
msgid "Unknown" msgid "Unknown"
msgstr "Neznámy" msgstr "Neznámy"
#: ../src/backends/meta-monitor-manager.c:546 #: ../src/backends/meta-monitor-manager.c:540
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:554 #: ../src/backends/meta-monitor-manager.c:548
#, 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:463
#, 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,7 +582,7 @@ msgid ""
msgstr "" msgstr ""
"Pre obrazovku č. %i na displeji „%s“ je spustený už iný správca rozloženia." "Pre obrazovku č. %i na displeji „%s“ je spustený už iný správca rozloženia."
#: ../src/core/bell.c:185 #: ../src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "Udalosť zvončeka" msgstr "Udalosť zvončeka"
@@ -602,51 +612,51 @@ msgid "_Force Quit"
msgstr "_Vynútiť ukončenie" msgstr "_Vynútiť ukončenie"
# X window system preloz, napr. system na spravu okien X # X window system preloz, napr. system na spravu okien X
#: ../src/core/display.c:555 #: ../src/core/display.c:590
#, c-format #, c-format
msgid "Failed to open X Window System display '%s'\n" 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:181 #: ../src/core/main.c:182
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:187 #: ../src/core/main.c:188
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:193 #: ../src/core/main.c:194
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:198 #: ../src/core/main.c:199
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:204 #: ../src/core/main.c:205
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:210 #: ../src/core/main.c:211
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:217 #: ../src/core/main.c:218
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:223 #: ../src/core/main.c:224
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:231 #: ../src/core/main.c:232
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"
@@ -694,10 +704,15 @@ msgstr ""
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"
#: ../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 bol skompilovaný bez výpisu podrobností pri behu\n" msgstr "Mutter bol skompilovaný bez výpisu podrobností pri behu\n"
#: ../src/wayland/meta-wayland-tablet-pad.c:595
#, c-format
msgid "Mode Switch: Mode %d"
msgstr "Prepínač režimu: Režim č. %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 &quot;save current setup&quot; and will have to "
@@ -707,7 +722,7 @@ msgstr ""
"prihlásení ich budete musieť znovu spustiť ručne." "prihlásení ich budete musieť znovu spustiť ručne."
# window title; wm_client_machine # window title; wm_client_machine
#: ../src/x11/window-props.c:549 #: ../src/x11/window-props.c:548
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (na %s)" msgstr "%s (na %s)"

View File

@@ -11,18 +11,18 @@ 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: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n" "product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2016-03-05 21:12+0100\n" "POT-Creation-Date: 2016-08-18 22:38+0200\n"
"PO-Revision-Date: 2016-03-05 21:12+0100\n" "PO-Revision-Date: 2016-08-18 22:39+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\n" "Language: sl_SI\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=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 1.8.4\n" "X-Generator: Poedit 1.8.7.1\n"
#: ../data/50-mutter-navigation.xml.in.h:1 #: ../data/50-mutter-navigation.xml.in.h:1
msgid "Navigation" msgid "Navigation"
@@ -455,29 +455,37 @@ msgstr "Preklopi na VT 11"
msgid "Switch to VT 12" msgid "Switch to VT 12"
msgstr "Preklopi na VT 12" msgstr "Preklopi na VT 12"
#: ../src/backends/meta-monitor-manager.c:518 #: ../src/backends/meta-input-settings.c:1707
msgid "Switch monitor"
msgstr "Nadzornik preklopa"
#: ../src/backends/meta-input-settings.c:1709
msgid "Show on-screen help"
msgstr "Pokaži zaslonsko pomoč"
#: ../src/backends/meta-monitor-manager.c:514
msgid "Built-in display" msgid "Built-in display"
msgstr "Vgrajen zaslon" msgstr "Vgrajen zaslon"
#: ../src/backends/meta-monitor-manager.c:544 #: ../src/backends/meta-monitor-manager.c:537
msgid "Unknown" msgid "Unknown"
msgstr "Neznano" msgstr "Neznano"
#: ../src/backends/meta-monitor-manager.c:546 #: ../src/backends/meta-monitor-manager.c:539
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:554 #: ../src/backends/meta-monitor-manager.c:547
#, 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:463
#, 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"
@@ -485,7 +493,7 @@ msgid ""
msgstr "" msgstr ""
"Drug upravljalnik sestavljanja je že zagnan na zaslonu %i prikaza \"%s\"." "Drug upravljalnik sestavljanja je že zagnan na zaslonu %i prikaza \"%s\"."
#: ../src/core/bell.c:185 #: ../src/core/bell.c:194
msgid "Bell event" msgid "Bell event"
msgstr "Dogodek zvonjenja" msgstr "Dogodek zvonjenja"
@@ -514,44 +522,44 @@ msgstr "_Počakaj"
msgid "_Force Quit" msgid "_Force Quit"
msgstr "_Vsili konec" msgstr "_Vsili konec"
#: ../src/core/display.c:555 #: ../src/core/display.c:590
#, c-format #, c-format
msgid "Failed to open X Window System display '%s'\n" msgid "Failed to open X Window System display '%s'\n"
msgstr "Ni mogoče odpreti zaslona '%s' okenskega sistema X\n" msgstr "Ni mogoče odpreti zaslona '%s' okenskega sistema X\n"
#: ../src/core/main.c:181 #: ../src/core/main.c:182
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:187 #: ../src/core/main.c:188
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:193 #: ../src/core/main.c:194
msgid "Specify session management ID" msgid "Specify session management ID"
msgstr "Navedite ID upravljanja seje" msgstr "Navedite ID upravljanja seje"
#: ../src/core/main.c:198 #: ../src/core/main.c:199
msgid "X Display to use" msgid "X Display to use"
msgstr "Zaslon X za uporabo" msgstr "Zaslon X za uporabo"
#: ../src/core/main.c:204 #: ../src/core/main.c:205
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:210 #: ../src/core/main.c:211
msgid "Make X calls synchronous" msgid "Make X calls synchronous"
msgstr "Uskladi klice X" msgstr "Uskladi klice X"
#: ../src/core/main.c:217 #: ../src/core/main.c:218
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:223 #: ../src/core/main.c:224
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:231 #: ../src/core/main.c:232
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"
@@ -593,16 +601,21 @@ 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:603 #: ../src/core/screen.c:606
#, 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"
#: ../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 "" 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:595
#, c-format
msgid "Mode Switch: Mode %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:1815
msgid "" msgid ""
@@ -612,7 +625,7 @@ msgstr ""
"Ta okna ne podpirajo možnosti &quot;shranjevanja trenutnih nastavitev&quot;, " "Ta okna ne podpirajo možnosti &quot;shranjevanja trenutnih nastavitev&quot;, "
"zato jih bo treba ob naslednji prijavi zagnati ročno." "zato jih bo treba ob naslednji prijavi zagnati ročno."
#: ../src/x11/window-props.c:549 #: ../src/x11/window-props.c:548
#, c-format #, c-format
msgid "%s (on %s)" msgid "%s (on %s)"
msgstr "%s (na %s)" msgstr "%s (na %s)"

View File

@@ -71,6 +71,9 @@ struct _MetaInputSettingsClass
void (* set_edge_scroll) (MetaInputSettings *settings, void (* set_edge_scroll) (MetaInputSettings *settings,
ClutterInputDevice *device, ClutterInputDevice *device,
gboolean enabled); gboolean enabled);
void (* set_two_finger_scroll) (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean enabled);
void (* set_scroll_button) (MetaInputSettings *settings, void (* set_scroll_button) (MetaInputSettings *settings,
ClutterInputDevice *device, ClutterInputDevice *device,
guint button); guint button);
@@ -97,6 +100,13 @@ struct _MetaInputSettingsClass
gdouble padding_right, gdouble padding_right,
gdouble padding_top, gdouble padding_top,
gdouble padding_bottom); gdouble padding_bottom);
void (* set_mouse_accel_profile) (MetaInputSettings *settings,
ClutterInputDevice *device,
GDesktopPointerAccelProfile profile);
void (* set_trackball_accel_profile) (MetaInputSettings *settings,
ClutterInputDevice *device,
GDesktopPointerAccelProfile profile);
}; };
GType meta_input_settings_get_type (void) G_GNUC_CONST; GType meta_input_settings_get_type (void) G_GNUC_CONST;
@@ -137,4 +147,6 @@ WacomDevice * meta_input_settings_get_tablet_wacom_device (MetaInputSettings *se
ClutterInputDevice *device); ClutterInputDevice *device);
#endif #endif
gboolean meta_input_device_is_trackball (ClutterInputDevice *device);
#endif /* META_INPUT_SETTINGS_PRIVATE_H */ #endif /* META_INPUT_SETTINGS_PRIVATE_H */

View File

@@ -310,6 +310,63 @@ update_mouse_left_handed (MetaInputSettings *input_settings,
} }
} }
static void
do_update_pointer_accel_profile (MetaInputSettings *input_settings,
GSettings *settings,
ClutterInputDevice *device,
GDesktopPointerAccelProfile profile)
{
MetaInputSettingsPrivate *priv =
meta_input_settings_get_instance_private (input_settings);
MetaInputSettingsClass *input_settings_class =
META_INPUT_SETTINGS_GET_CLASS (input_settings);
if (settings == priv->mouse_settings)
input_settings_class->set_mouse_accel_profile (input_settings,
device,
profile);
else if (settings == priv->trackball_settings)
input_settings_class->set_trackball_accel_profile (input_settings,
device,
profile);
}
static void
update_pointer_accel_profile (MetaInputSettings *input_settings,
GSettings *settings,
ClutterInputDevice *device)
{
GDesktopPointerAccelProfile profile;
profile = g_settings_get_enum (settings, "accel-profile");
if (device)
{
do_update_pointer_accel_profile (input_settings, settings,
device, profile);
}
else
{
MetaInputSettingsPrivate *priv =
meta_input_settings_get_instance_private (input_settings);
const GSList *devices;
const GSList *l;
devices = clutter_device_manager_peek_devices (priv->device_manager);
for (l = devices; l; l = l->next)
{
device = l->data;
if (clutter_input_device_get_device_mode (device) ==
CLUTTER_INPUT_MODE_MASTER)
continue;
do_update_pointer_accel_profile (input_settings, settings,
device, profile);
}
}
}
static GSettings * static GSettings *
get_settings_for_device_type (MetaInputSettings *input_settings, get_settings_for_device_type (MetaInputSettings *input_settings,
ClutterInputDeviceType type) ClutterInputDeviceType type)
@@ -449,6 +506,36 @@ update_touchpad_edge_scroll (MetaInputSettings *input_settings,
} }
} }
static void
update_touchpad_two_finger_scroll (MetaInputSettings *input_settings,
ClutterInputDevice *device)
{
MetaInputSettingsClass *input_settings_class;
gboolean two_finger_scroll_enabled;
MetaInputSettingsPrivate *priv;
if (device &&
clutter_input_device_get_device_type (device) != CLUTTER_TOUCHPAD_DEVICE)
return;
priv = meta_input_settings_get_instance_private (input_settings);
input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
two_finger_scroll_enabled = g_settings_get_boolean (priv->touchpad_settings, "two-finger-scrolling-enabled");
if (device)
{
settings_device_set_bool_setting (input_settings, device,
input_settings_class->set_two_finger_scroll,
two_finger_scroll_enabled);
}
else
{
settings_set_bool_setting (input_settings, CLUTTER_TOUCHPAD_DEVICE,
(ConfigBoolFunc) input_settings_class->set_two_finger_scroll,
two_finger_scroll_enabled);
}
}
static void static void
update_touchpad_click_method (MetaInputSettings *input_settings, update_touchpad_click_method (MetaInputSettings *input_settings,
ClutterInputDevice *device) ClutterInputDevice *device)
@@ -509,8 +596,8 @@ update_touchpad_send_events (MetaInputSettings *input_settings,
} }
} }
static gboolean gboolean
device_is_trackball (ClutterInputDevice *device) meta_input_device_is_trackball (ClutterInputDevice *device)
{ {
gboolean is_trackball; gboolean is_trackball;
char *name; char *name;
@@ -533,7 +620,7 @@ update_trackball_scroll_button (MetaInputSettings *input_settings,
MetaInputSettingsPrivate *priv; MetaInputSettingsPrivate *priv;
guint button; guint button;
if (device && !device_is_trackball (device)) if (device && !meta_input_device_is_trackball (device))
return; return;
priv = meta_input_settings_get_instance_private (input_settings); priv = meta_input_settings_get_instance_private (input_settings);
@@ -556,7 +643,7 @@ update_trackball_scroll_button (MetaInputSettings *input_settings,
{ {
device = devices->data; device = devices->data;
if (device_is_trackball (device)) if (meta_input_device_is_trackball (device))
input_settings_class->set_scroll_button (input_settings, device, button); input_settings_class->set_scroll_button (input_settings, device, button);
devices = devices->next; devices = devices->next;
@@ -822,6 +909,8 @@ meta_input_settings_changed_cb (GSettings *settings,
update_device_speed (input_settings, NULL); update_device_speed (input_settings, NULL);
else if (strcmp (key, "natural-scroll") == 0) else if (strcmp (key, "natural-scroll") == 0)
update_device_natural_scroll (input_settings, NULL); update_device_natural_scroll (input_settings, NULL);
else if (strcmp (key, "accel-profile") == 0)
update_pointer_accel_profile (input_settings, settings, NULL);
} }
else if (settings == priv->touchpad_settings) else if (settings == priv->touchpad_settings)
{ {
@@ -837,6 +926,8 @@ meta_input_settings_changed_cb (GSettings *settings,
update_touchpad_send_events (input_settings, NULL); update_touchpad_send_events (input_settings, NULL);
else if (strcmp (key, "edge-scrolling-enabled") == 0) else if (strcmp (key, "edge-scrolling-enabled") == 0)
update_touchpad_edge_scroll (input_settings, NULL); update_touchpad_edge_scroll (input_settings, NULL);
else if (strcmp (key, "two-finger-scrolling-enabled") == 0)
update_touchpad_two_finger_scroll (input_settings, NULL);
else if (strcmp (key, "click-method") == 0) else if (strcmp (key, "click-method") == 0)
update_touchpad_click_method (input_settings, NULL); update_touchpad_click_method (input_settings, NULL);
} }
@@ -844,6 +935,8 @@ meta_input_settings_changed_cb (GSettings *settings,
{ {
if (strcmp (key, "scroll-wheel-emulation-button") == 0) if (strcmp (key, "scroll-wheel-emulation-button") == 0)
update_trackball_scroll_button (input_settings, NULL); update_trackball_scroll_button (input_settings, NULL);
else if (strcmp (key, "accel-profile") == 0)
update_pointer_accel_profile (input_settings, settings, NULL);
} }
else if (settings == priv->keyboard_settings) else if (settings == priv->keyboard_settings)
{ {
@@ -1140,19 +1233,28 @@ static void
apply_device_settings (MetaInputSettings *input_settings, apply_device_settings (MetaInputSettings *input_settings,
ClutterInputDevice *device) ClutterInputDevice *device)
{ {
update_mouse_left_handed (input_settings, device); MetaInputSettingsPrivate *priv =
meta_input_settings_get_instance_private (input_settings);
update_device_speed (input_settings, device); update_device_speed (input_settings, device);
update_device_natural_scroll (input_settings, device); update_device_natural_scroll (input_settings, device);
update_mouse_left_handed (input_settings, device);
update_pointer_accel_profile (input_settings,
priv->mouse_settings,
device);
update_touchpad_left_handed (input_settings, device); update_touchpad_left_handed (input_settings, device);
update_device_speed (input_settings, device);
update_device_natural_scroll (input_settings, device);
update_touchpad_tap_enabled (input_settings, device); update_touchpad_tap_enabled (input_settings, device);
update_touchpad_send_events (input_settings, device); update_touchpad_send_events (input_settings, device);
update_touchpad_edge_scroll (input_settings, device); update_touchpad_edge_scroll (input_settings, device);
update_touchpad_two_finger_scroll (input_settings, device);
update_touchpad_click_method (input_settings, device); update_touchpad_click_method (input_settings, device);
update_trackball_scroll_button (input_settings, device); update_trackball_scroll_button (input_settings, device);
update_pointer_accel_profile (input_settings,
priv->trackball_settings,
device);
} }
static void static void

View File

@@ -273,6 +273,8 @@ meta_monitor_config_finalize (GObject *object)
MetaMonitorConfig *self = META_MONITOR_CONFIG (object); MetaMonitorConfig *self = META_MONITOR_CONFIG (object);
g_hash_table_destroy (self->configs); g_hash_table_destroy (self->configs);
G_OBJECT_CLASS (meta_monitor_config_parent_class)->finalize (object);
} }
static void static void

View File

@@ -270,11 +270,10 @@ make_logical_config (MetaMonitorManager *manager)
info->outputs[0] = output; info->outputs[0] = output;
info->n_outputs = 1; info->n_outputs = 1;
info->scale = output->scale;
if (output->is_primary || info->winsys_id == 0) if (output->is_primary || info->winsys_id == 0)
{ info->winsys_id = output->winsys_id;
info->scale = output->scale;
info->winsys_id = output->winsys_id;
}
if (info->is_primary) if (info->is_primary)
manager->primary_monitor_index = info->number; manager->primary_monitor_index = info->number;

View File

@@ -35,7 +35,7 @@ static GParamSpec *obj_props[PROP_LAST];
struct _MetaRendererView struct _MetaRendererView
{ {
ClutterStageView parent; ClutterStageViewCogl parent;
MetaMonitorInfo *monitor_info; MetaMonitorInfo *monitor_info;
}; };

View File

@@ -173,18 +173,20 @@ meta_input_settings_native_set_edge_scroll (MetaInputSettings *settin
enum libinput_config_scroll_method scroll_method = 0; enum libinput_config_scroll_method scroll_method = 0;
struct libinput_device *libinput_device; struct libinput_device *libinput_device;
enum libinput_config_scroll_method supported; enum libinput_config_scroll_method supported;
enum libinput_config_scroll_method current;
libinput_device = clutter_evdev_input_device_get_libinput_device (device); libinput_device = clutter_evdev_input_device_get_libinput_device (device);
if (!libinput_device) if (!libinput_device)
return; return;
supported = libinput_device_config_scroll_get_methods (libinput_device); supported = libinput_device_config_scroll_get_methods (libinput_device);
current = libinput_device_config_scroll_get_method (libinput_device);
if (supported & LIBINPUT_CONFIG_SCROLL_2FG) /* Don't set edge scrolling if two-finger scrolling is enabled and available */
{ if (current == LIBINPUT_CONFIG_SCROLL_2FG)
scroll_method = LIBINPUT_CONFIG_SCROLL_2FG; return;
}
else if (supported & LIBINPUT_CONFIG_SCROLL_EDGE && if (supported & LIBINPUT_CONFIG_SCROLL_EDGE &&
edge_scrolling_enabled) edge_scrolling_enabled)
{ {
scroll_method = LIBINPUT_CONFIG_SCROLL_EDGE; scroll_method = LIBINPUT_CONFIG_SCROLL_EDGE;
} }
@@ -196,6 +198,38 @@ meta_input_settings_native_set_edge_scroll (MetaInputSettings *settin
device_set_scroll_method (libinput_device, scroll_method); device_set_scroll_method (libinput_device, scroll_method);
} }
static void
meta_input_settings_native_set_two_finger_scroll (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean two_finger_scroll_enabled)
{
enum libinput_config_scroll_method scroll_method = 0;
struct libinput_device *libinput_device;
enum libinput_config_scroll_method supported;
enum libinput_config_scroll_method current;
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
supported = libinput_device_config_scroll_get_methods (libinput_device);
current = libinput_device_config_scroll_get_method (libinput_device);
if (two_finger_scroll_enabled &&
!(supported & LIBINPUT_CONFIG_SCROLL_2FG))
return;
if (two_finger_scroll_enabled)
{
scroll_method = LIBINPUT_CONFIG_SCROLL_2FG;
}
else if (current != LIBINPUT_CONFIG_SCROLL_EDGE)
{
scroll_method = LIBINPUT_CONFIG_SCROLL_NO_SCROLL;
}
else
return;
device_set_scroll_method (libinput_device, scroll_method);
}
static void static void
meta_input_settings_native_set_scroll_button (MetaInputSettings *settings, meta_input_settings_native_set_scroll_button (MetaInputSettings *settings,
ClutterInputDevice *device, ClutterInputDevice *device,
@@ -259,6 +293,112 @@ meta_input_settings_native_set_keyboard_repeat (MetaInputSettings *settings,
clutter_evdev_set_keyboard_repeat (manager, enabled, delay, interval); clutter_evdev_set_keyboard_repeat (manager, enabled, delay, interval);
} }
static void
set_device_accel_profile (ClutterInputDevice *device,
GDesktopPointerAccelProfile profile)
{
struct libinput_device *libinput_device;
enum libinput_config_accel_profile libinput_profile;
uint32_t profiles;
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
switch (profile)
{
case G_DESKTOP_POINTER_ACCEL_PROFILE_FLAT:
libinput_profile = LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT;
break;
case G_DESKTOP_POINTER_ACCEL_PROFILE_ADAPTIVE:
libinput_profile = LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE;
break;
default:
g_warn_if_reached ();
case G_DESKTOP_POINTER_ACCEL_PROFILE_DEFAULT:
libinput_profile =
libinput_device_config_accel_get_default_profile (libinput_device);
}
profiles = libinput_device_config_accel_get_profiles (libinput_device);
if ((profiles & libinput_profile) == 0)
{
libinput_profile =
libinput_device_config_accel_get_default_profile (libinput_device);
}
libinput_device_config_accel_set_profile (libinput_device,
libinput_profile);
}
static gboolean
has_udev_property (ClutterInputDevice *device,
const char *property)
{
struct libinput_device *libinput_device;
struct udev_device *udev_device;
struct udev_device *parent_udev_device;
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
if (!libinput_device)
return FALSE;
udev_device = libinput_device_get_udev_device (libinput_device);
if (!udev_device)
return FALSE;
if (NULL != udev_device_get_property_value (udev_device, property))
{
udev_device_unref (udev_device);
return TRUE;
}
parent_udev_device = udev_device_get_parent (udev_device);
udev_device_unref (udev_device);
if (!parent_udev_device)
return FALSE;
if (NULL != udev_device_get_property_value (parent_udev_device, property))
return TRUE;
return FALSE;
}
static gboolean
is_mouse_device (ClutterInputDevice *device)
{
return (has_udev_property (device, "ID_INPUT_MOUSE") &&
!has_udev_property (device, "ID_INPUT_POINTINGSTICK"));
}
static gboolean
is_trackball_device (ClutterInputDevice *device)
{
return meta_input_device_is_trackball (device);
}
static void
meta_input_settings_native_set_mouse_accel_profile (MetaInputSettings *settings,
ClutterInputDevice *device,
GDesktopPointerAccelProfile profile)
{
if (!is_mouse_device (device))
return;
set_device_accel_profile (device, profile);
}
static void
meta_input_settings_native_set_trackball_accel_profile (MetaInputSettings *settings,
ClutterInputDevice *device,
GDesktopPointerAccelProfile profile)
{
if (!is_trackball_device (device))
return;
set_device_accel_profile (device, profile);
}
static void static void
meta_input_settings_native_set_tablet_mapping (MetaInputSettings *settings, meta_input_settings_native_set_tablet_mapping (MetaInputSettings *settings,
ClutterInputDevice *device, ClutterInputDevice *device,
@@ -308,6 +448,7 @@ meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
input_settings_class->set_tap_enabled = meta_input_settings_native_set_tap_enabled; input_settings_class->set_tap_enabled = meta_input_settings_native_set_tap_enabled;
input_settings_class->set_invert_scroll = meta_input_settings_native_set_invert_scroll; input_settings_class->set_invert_scroll = meta_input_settings_native_set_invert_scroll;
input_settings_class->set_edge_scroll = meta_input_settings_native_set_edge_scroll; input_settings_class->set_edge_scroll = meta_input_settings_native_set_edge_scroll;
input_settings_class->set_two_finger_scroll = meta_input_settings_native_set_two_finger_scroll;
input_settings_class->set_scroll_button = meta_input_settings_native_set_scroll_button; input_settings_class->set_scroll_button = meta_input_settings_native_set_scroll_button;
input_settings_class->set_click_method = meta_input_settings_native_set_click_method; input_settings_class->set_click_method = meta_input_settings_native_set_click_method;
input_settings_class->set_keyboard_repeat = meta_input_settings_native_set_keyboard_repeat; input_settings_class->set_keyboard_repeat = meta_input_settings_native_set_keyboard_repeat;
@@ -315,6 +456,9 @@ meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
input_settings_class->set_tablet_mapping = meta_input_settings_native_set_tablet_mapping; input_settings_class->set_tablet_mapping = meta_input_settings_native_set_tablet_mapping;
input_settings_class->set_tablet_keep_aspect = meta_input_settings_native_set_tablet_keep_aspect; input_settings_class->set_tablet_keep_aspect = meta_input_settings_native_set_tablet_keep_aspect;
input_settings_class->set_tablet_area = meta_input_settings_native_set_tablet_area; input_settings_class->set_tablet_area = meta_input_settings_native_set_tablet_area;
input_settings_class->set_mouse_accel_profile = meta_input_settings_native_set_mouse_accel_profile;
input_settings_class->set_trackball_accel_profile = meta_input_settings_native_set_trackball_accel_profile;
} }
static void static void

View File

@@ -54,7 +54,10 @@ typedef struct {
drmModeEncoderPtr *encoders; drmModeEncoderPtr *encoders;
drmModeEncoderPtr current_encoder; drmModeEncoderPtr current_encoder;
/* bitmasks of encoder position in the resources array */ /*
* Bitmasks of encoder position in the resources array (used during clone
* setup).
*/
uint32_t encoder_mask; uint32_t encoder_mask;
uint32_t enc_clone_mask; uint32_t enc_clone_mask;
@@ -369,6 +372,33 @@ find_meta_mode (MetaMonitorManager *manager,
return NULL; return NULL;
} }
static void
init_mode (MetaMonitorMode *mode,
drmModeModeInfo *drm_mode,
long mode_id)
{
mode->mode_id = mode_id;
mode->name = g_strndup (drm_mode->name, DRM_DISPLAY_MODE_LEN);
mode->width = drm_mode->hdisplay;
mode->height = drm_mode->vdisplay;
mode->flags = drm_mode->flags;
/* Calculate refresh rate in milliHz first for extra precision. */
mode->refresh_rate = (drm_mode->clock * 1000000LL) / drm_mode->htotal;
mode->refresh_rate += (drm_mode->vtotal / 2);
mode->refresh_rate /= drm_mode->vtotal;
if (drm_mode->flags & DRM_MODE_FLAG_INTERLACE)
mode->refresh_rate *= 2;
if (drm_mode->flags & DRM_MODE_FLAG_DBLSCAN)
mode->refresh_rate /= 2;
if (drm_mode->vscan > 1)
mode->refresh_rate /= drm_mode->vscan;
mode->refresh_rate /= 1000.0;
mode->driver_private = g_slice_dup (drmModeModeInfo, drm_mode);
mode->driver_notify = (GDestroyNotify)meta_monitor_mode_destroy_notify;
}
static MetaOutput * static MetaOutput *
find_output_by_id (MetaOutput *outputs, find_output_by_id (MetaOutput *outputs,
unsigned n_outputs, unsigned n_outputs,
@@ -580,342 +610,250 @@ init_crtc_rotations (MetaMonitorManager *manager,
} }
static void static void
meta_monitor_manager_kms_read_current (MetaMonitorManager *manager) init_crtc (MetaCRTC *crtc,
MetaMonitorManager *manager,
drmModeCrtc *drm_crtc)
{
unsigned int i;
crtc->crtc_id = drm_crtc->crtc_id;
crtc->rect.x = drm_crtc->x;
crtc->rect.y = drm_crtc->y;
crtc->rect.width = drm_crtc->width;
crtc->rect.height = drm_crtc->height;
crtc->is_dirty = FALSE;
crtc->transform = META_MONITOR_TRANSFORM_NORMAL;
/* FIXME: implement! */
crtc->all_transforms = 1 << META_MONITOR_TRANSFORM_NORMAL;
if (drm_crtc->mode_valid)
{
for (i = 0; i < manager->n_modes; i++)
{
if (drm_mode_equal (&drm_crtc->mode, manager->modes[i].driver_private))
{
crtc->current_mode = &manager->modes[i];
break;
}
}
}
crtc->driver_private = g_new0 (MetaCRTCKms, 1);
crtc->driver_notify = (GDestroyNotify) meta_crtc_destroy_notify;
}
static void
init_output (MetaOutput *output,
MetaMonitorManager *manager,
drmModeConnector *connector,
MetaOutput *old_output)
{ {
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager); MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
drmModeRes *resources; MetaOutputKms *output_kms;
drmModeEncoder **encoders; GArray *crtcs;
GHashTable *modes; GBytes *edid;
GHashTableIter iter; unsigned int i;
drmModeModeInfo *mode; unsigned int crtc_mask;
unsigned int i, j, k;
unsigned int n_actual_outputs;
int width, height;
MetaOutput *old_outputs;
unsigned int n_old_outputs;
resources = drmModeGetResources(manager_kms->fd); output_kms = g_slice_new0 (MetaOutputKms);
modes = g_hash_table_new (drm_mode_hash, drm_mode_equal); output->driver_private = output_kms;
output->driver_notify = (GDestroyNotify)meta_output_destroy_notify;
manager->max_screen_width = resources->max_width; output->winsys_id = connector->connector_id;
manager->max_screen_height = resources->max_height; output->name = make_output_name (connector);
output->width_mm = connector->mmWidth;
output->height_mm = connector->mmHeight;
manager->power_save_mode = META_POWER_SAVE_ON; switch (connector->subpixel)
old_outputs = manager->outputs;
n_old_outputs = manager->n_outputs;
/* Note: we must not free the public structures (output, crtc, monitor
mode and monitor info) here, they must be kept alive until the API
users are done with them after we emit monitors-changed, and thus
are freed by the platform-independent layer. */
free_resources (manager_kms);
manager_kms->n_connectors = resources->count_connectors;
manager_kms->connectors = g_new (drmModeConnector *, manager_kms->n_connectors);
for (i = 0; i < manager_kms->n_connectors; i++)
{ {
drmModeConnector *connector; case DRM_MODE_SUBPIXEL_NONE:
output->subpixel_order = COGL_SUBPIXEL_ORDER_NONE;
break;
case DRM_MODE_SUBPIXEL_HORIZONTAL_RGB:
output->subpixel_order = COGL_SUBPIXEL_ORDER_HORIZONTAL_RGB;
break;
case DRM_MODE_SUBPIXEL_HORIZONTAL_BGR:
output->subpixel_order = COGL_SUBPIXEL_ORDER_HORIZONTAL_BGR;
break;
case DRM_MODE_SUBPIXEL_VERTICAL_RGB:
output->subpixel_order = COGL_SUBPIXEL_ORDER_VERTICAL_RGB;
break;
case DRM_MODE_SUBPIXEL_VERTICAL_BGR:
output->subpixel_order = COGL_SUBPIXEL_ORDER_VERTICAL_BGR;
break;
case DRM_MODE_SUBPIXEL_UNKNOWN:
default:
output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
break;
}
connector = drmModeGetConnector (manager_kms->fd, resources->connectors[i]); output->preferred_mode = NULL;
manager_kms->connectors[i] = connector; output->n_modes = connector->count_modes;
output->modes = g_new0 (MetaMonitorMode *, output->n_modes);
for (i = 0; i < output->n_modes; i++) {
output->modes[i] = find_meta_mode (manager, &connector->modes[i]);
if (connector->modes[i].type & DRM_MODE_TYPE_PREFERRED)
output->preferred_mode = output->modes[i];
}
if (connector && connector->connection == DRM_MODE_CONNECTED) if (!output->preferred_mode)
output->preferred_mode = output->modes[0];
output_kms->connector = connector;
output_kms->n_encoders = connector->count_encoders;
output_kms->encoders = g_new0 (drmModeEncoderPtr, output_kms->n_encoders);
crtc_mask = ~(unsigned int) 0;
for (i = 0; i < output_kms->n_encoders; i++)
{
output_kms->encoders[i] = drmModeGetEncoder (manager_kms->fd,
connector->encoders[i]);
if (!output_kms->encoders[i])
continue;
/* We only list CRTCs as supported if they are supported by all encoders
for this connectors.
This is what xf86-video-modesetting does (see drmmode_output_init())
*/
crtc_mask &= output_kms->encoders[i]->possible_crtcs;
if (output_kms->encoders[i]->encoder_id == connector->encoder_id)
output_kms->current_encoder = output_kms->encoders[i];
}
crtcs = g_array_new (FALSE, FALSE, sizeof (MetaCRTC*));
for (i = 0; i < manager->n_crtcs; i++)
{
if (crtc_mask & (1 << i))
{ {
/* Collect all modes for this connector */ MetaCRTC *crtc = &manager->crtcs[i];
for (j = 0; j < (unsigned)connector->count_modes; j++) g_array_append_val (crtcs, crtc);
g_hash_table_add (modes, &connector->modes[j]);
} }
} }
encoders = g_new (drmModeEncoder *, resources->count_encoders); output->n_possible_crtcs = crtcs->len;
for (i = 0; i < (unsigned)resources->count_encoders; i++) output->possible_crtcs = (void*)g_array_free (crtcs, FALSE);
if (output_kms->current_encoder && output_kms->current_encoder->crtc_id != 0)
{
for (i = 0; i < manager->n_crtcs; i++)
{
if (manager->crtcs[i].crtc_id == output_kms->current_encoder->crtc_id)
{
output->crtc = &manager->crtcs[i];
break;
}
}
}
else
{
output->crtc = NULL;
}
if (old_output)
{
output->is_primary = old_output->is_primary;
output->is_presentation = old_output->is_presentation;
}
else
{
output->is_primary = FALSE;
output->is_presentation = FALSE;
}
find_connector_properties (manager_kms, output_kms);
output->suggested_x = output_kms->suggested_x;
output->suggested_y = output_kms->suggested_y;
output->hotplug_mode_update = output_kms->hotplug_mode_update;
edid = read_output_edid (manager_kms, output);
meta_output_parse_edid (output, edid);
g_bytes_unref (edid);
/* MetaConnectorType matches DRM's connector types */
output->connector_type = (MetaConnectorType) connector->connector_type;
output->scale = get_output_scale (manager, output);
output_get_tile_info (manager_kms, output);
/* FIXME: backlight is a very driver specific thing unfortunately,
every DDX does its own thing, and the dumb KMS API does not include it.
For example, xf86-video-intel has a list of paths to probe in /sys/class/backlight
(one for each major HW maker, and then some).
We can't do the same because we're not root.
It might be best to leave backlight out of the story and rely on the setuid
helper in gnome-settings-daemon.
*/
output->backlight_min = 0;
output->backlight_max = 0;
output->backlight = -1;
}
static void
detect_and_setup_output_clones (MetaMonitorManager *manager,
drmModeRes *resources)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
drmModeEncoder **encoders;
unsigned int i, n_encoders;
n_encoders = (unsigned int) resources->count_encoders;
encoders = g_new (drmModeEncoder *, n_encoders);
for (i = 0; i < n_encoders; i++)
encoders[i] = drmModeGetEncoder (manager_kms->fd, resources->encoders[i]); encoders[i] = drmModeGetEncoder (manager_kms->fd, resources->encoders[i]);
manager->n_modes = g_hash_table_size (modes); /*
manager->modes = g_new0 (MetaMonitorMode, manager->n_modes); * Setup encoder position mask and encoder clone mask.
g_hash_table_iter_init (&iter, modes); */
i = 0;
while (g_hash_table_iter_next (&iter, NULL, (gpointer)&mode))
{
MetaMonitorMode *meta_mode;
meta_mode = &manager->modes[i];
meta_mode->mode_id = i;
meta_mode->name = g_strndup (mode->name, DRM_DISPLAY_MODE_LEN);
meta_mode->width = mode->hdisplay;
meta_mode->height = mode->vdisplay;
meta_mode->flags = mode->flags;
/* Calculate refresh rate in milliHz first for extra precision. */
meta_mode->refresh_rate = (mode->clock * 1000000LL) / mode->htotal;
meta_mode->refresh_rate += (mode->vtotal / 2);
meta_mode->refresh_rate /= mode->vtotal;
if (mode->flags & DRM_MODE_FLAG_INTERLACE)
meta_mode->refresh_rate *= 2;
if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
meta_mode->refresh_rate /= 2;
if (mode->vscan > 1)
meta_mode->refresh_rate /= mode->vscan;
meta_mode->refresh_rate /= 1000.0;
meta_mode->driver_private = g_slice_dup (drmModeModeInfo, mode);
meta_mode->driver_notify = (GDestroyNotify)meta_monitor_mode_destroy_notify;
i++;
}
g_hash_table_destroy (modes);
manager->n_crtcs = resources->count_crtcs;
manager->crtcs = g_new0 (MetaCRTC, manager->n_crtcs);
width = 0; height = 0;
for (i = 0; i < (unsigned)resources->count_crtcs; i++)
{
drmModeCrtc *crtc;
MetaCRTC *meta_crtc;
crtc = drmModeGetCrtc (manager_kms->fd, resources->crtcs[i]);
meta_crtc = &manager->crtcs[i];
meta_crtc->crtc_id = crtc->crtc_id;
meta_crtc->rect.x = crtc->x;
meta_crtc->rect.y = crtc->y;
meta_crtc->rect.width = crtc->width;
meta_crtc->rect.height = crtc->height;
meta_crtc->is_dirty = FALSE;
meta_crtc->transform = META_MONITOR_TRANSFORM_NORMAL;
/* FIXME: implement! */
meta_crtc->all_transforms = 1 << META_MONITOR_TRANSFORM_NORMAL;
if (crtc->mode_valid)
{
for (j = 0; j < manager->n_modes; j++)
{
if (drm_mode_equal (&crtc->mode, manager->modes[j].driver_private))
{
meta_crtc->current_mode = &manager->modes[j];
break;
}
}
width = MAX (width, meta_crtc->rect.x + meta_crtc->rect.width);
height = MAX (height, meta_crtc->rect.y + meta_crtc->rect.height);
}
meta_crtc->driver_private = g_new0 (MetaCRTCKms, 1);
meta_crtc->driver_notify = (GDestroyNotify) meta_crtc_destroy_notify;
find_crtc_properties (manager_kms, meta_crtc);
init_crtc_rotations (manager, meta_crtc, i);
drmModeFreeCrtc (crtc);
}
manager->screen_width = width;
manager->screen_height = height;
manager->outputs = g_new0 (MetaOutput, manager_kms->n_connectors);
n_actual_outputs = 0;
for (i = 0; i < manager_kms->n_connectors; i++)
{
MetaOutput *meta_output, *old_output;
MetaOutputKms *output_kms;
drmModeConnector *connector;
GArray *crtcs;
unsigned int crtc_mask;
GBytes *edid;
connector = manager_kms->connectors[i];
meta_output = &manager->outputs[n_actual_outputs];
if (connector && connector->connection == DRM_MODE_CONNECTED)
{
meta_output->driver_private = output_kms = g_slice_new0 (MetaOutputKms);
meta_output->driver_notify = (GDestroyNotify)meta_output_destroy_notify;
meta_output->winsys_id = connector->connector_id;
meta_output->name = make_output_name (connector);
meta_output->width_mm = connector->mmWidth;
meta_output->height_mm = connector->mmHeight;
switch (connector->subpixel)
{
case DRM_MODE_SUBPIXEL_NONE:
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_NONE;
break;
case DRM_MODE_SUBPIXEL_HORIZONTAL_RGB:
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_HORIZONTAL_RGB;
break;
case DRM_MODE_SUBPIXEL_HORIZONTAL_BGR:
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_HORIZONTAL_BGR;
break;
case DRM_MODE_SUBPIXEL_VERTICAL_RGB:
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_VERTICAL_RGB;
break;
case DRM_MODE_SUBPIXEL_VERTICAL_BGR:
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_VERTICAL_BGR;
break;
case DRM_MODE_SUBPIXEL_UNKNOWN:
default:
meta_output->subpixel_order = COGL_SUBPIXEL_ORDER_UNKNOWN;
break;
}
meta_output->preferred_mode = NULL;
meta_output->n_modes = connector->count_modes;
meta_output->modes = g_new0 (MetaMonitorMode *, meta_output->n_modes);
for (j = 0; j < meta_output->n_modes; j++) {
meta_output->modes[j] = find_meta_mode (manager, &connector->modes[j]);
if (connector->modes[j].type & DRM_MODE_TYPE_PREFERRED)
meta_output->preferred_mode = meta_output->modes[j];
}
if (!meta_output->preferred_mode)
meta_output->preferred_mode = meta_output->modes[0];
output_kms->connector = connector;
output_kms->n_encoders = connector->count_encoders;
output_kms->encoders = g_new0 (drmModeEncoderPtr, output_kms->n_encoders);
crtc_mask = ~(unsigned int)0;
for (j = 0; j < output_kms->n_encoders; j++)
{
output_kms->encoders[j] = drmModeGetEncoder (manager_kms->fd, connector->encoders[j]);
if (!output_kms->encoders[j])
continue;
/* We only list CRTCs as supported if they are supported by all encoders
for this connectors.
This is what xf86-video-modesetting does (see drmmode_output_init())
*/
crtc_mask &= output_kms->encoders[j]->possible_crtcs;
if (output_kms->encoders[j]->encoder_id == connector->encoder_id)
output_kms->current_encoder = output_kms->encoders[j];
}
crtcs = g_array_new (FALSE, FALSE, sizeof (MetaCRTC*));
for (j = 0; j < manager->n_crtcs; j++)
{
if (crtc_mask & (1 << j))
{
MetaCRTC *crtc = &manager->crtcs[j];
g_array_append_val (crtcs, crtc);
}
}
meta_output->n_possible_crtcs = crtcs->len;
meta_output->possible_crtcs = (void*)g_array_free (crtcs, FALSE);
if (output_kms->current_encoder && output_kms->current_encoder->crtc_id != 0)
{
for (j = 0; j < manager->n_crtcs; j++)
{
if (manager->crtcs[j].crtc_id == output_kms->current_encoder->crtc_id)
{
meta_output->crtc = &manager->crtcs[j];
break;
}
}
}
else
meta_output->crtc = NULL;
old_output = find_output_by_id (old_outputs, n_old_outputs,
meta_output->winsys_id);
if (old_output)
{
meta_output->is_primary = old_output->is_primary;
meta_output->is_presentation = old_output->is_presentation;
}
else
{
meta_output->is_primary = FALSE;
meta_output->is_presentation = FALSE;
}
find_connector_properties (manager_kms, output_kms);
meta_output->suggested_x = output_kms->suggested_x;
meta_output->suggested_y = output_kms->suggested_y;
meta_output->hotplug_mode_update = output_kms->hotplug_mode_update;
edid = read_output_edid (manager_kms, meta_output);
meta_output_parse_edid (meta_output, edid);
g_bytes_unref (edid);
/* MetaConnectorType matches DRM's connector types */
meta_output->connector_type = (MetaConnectorType) connector->connector_type;
meta_output->scale = get_output_scale (manager, meta_output);
output_get_tile_info (manager_kms, meta_output);
/* FIXME: backlight is a very driver specific thing unfortunately,
every DDX does its own thing, and the dumb KMS API does not include it.
For example, xf86-video-intel has a list of paths to probe in /sys/class/backlight
(one for each major HW maker, and then some).
We can't do the same because we're not root.
It might be best to leave backlight out of the story and rely on the setuid
helper in gnome-settings-daemon.
*/
meta_output->backlight_min = 0;
meta_output->backlight_max = 0;
meta_output->backlight = -1;
n_actual_outputs++;
}
}
manager->n_outputs = n_actual_outputs;
manager->outputs = g_renew (MetaOutput, manager->outputs, manager->n_outputs);
/* Sort the outputs for easier handling in MetaMonitorConfig */
qsort (manager->outputs, manager->n_outputs, sizeof (MetaOutput), compare_outputs);
/* Now fix the clones.
Code mostly inspired by xf86-video-modesetting. */
/* XXX: intel hardware doesn't usually have clones, but I only have laptops with
intel cards, so this code was never tested! */
for (i = 0; i < manager->n_outputs; i++) for (i = 0; i < manager->n_outputs; i++)
{ {
MetaOutput *meta_output; MetaOutput *output;
MetaOutputKms *output_kms; MetaOutputKms *output_kms;
unsigned int j;
meta_output = &manager->outputs[i]; output = &manager->outputs[i];
output_kms = meta_output->driver_private; output_kms = output->driver_private;
output_kms->enc_clone_mask = 0xff; output_kms->enc_clone_mask = 0xff;
output_kms->encoder_mask = 0; output_kms->encoder_mask = 0;
for (j = 0; j < output_kms->n_encoders; j++) for (j = 0; j < output_kms->n_encoders; j++)
{ {
for (k = 0; k < (unsigned)resources->count_encoders; k++) unsigned int k;
{
for (k = 0; k < n_encoders; k++)
{
if (output_kms->encoders[j] && encoders[k] && if (output_kms->encoders[j] && encoders[k] &&
output_kms->encoders[j]->encoder_id == encoders[k]->encoder_id) output_kms->encoders[j]->encoder_id == encoders[k]->encoder_id)
{ {
output_kms->encoder_mask |= (1 << k); output_kms->encoder_mask |= (1 << k);
break; break;
} }
} }
output_kms->enc_clone_mask &= output_kms->encoders[j]->possible_clones; output_kms->enc_clone_mask &= output_kms->encoders[j]->possible_clones;
} }
} }
for (i = 0; i < (unsigned)resources->count_encoders; i++)
drmModeFreeEncoder (encoders[i]);
g_free (encoders);
/*
* Setup MetaOutput <-> MetaOutput clone associations.
*/
for (i = 0; i < manager->n_outputs; i++) for (i = 0; i < manager->n_outputs; i++)
{ {
MetaOutput *meta_output; MetaOutput *output;
MetaOutputKms *output_kms; MetaOutputKms *output_kms;
unsigned int j;
meta_output = &manager->outputs[i]; output = &manager->outputs[i];
output_kms = meta_output->driver_private; output_kms = output->driver_private;
if (output_kms->enc_clone_mask == 0) if (output_kms->enc_clone_mask == 0)
continue; continue;
@@ -928,7 +866,7 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
meta_clone = &manager->outputs[i]; meta_clone = &manager->outputs[i];
clone_kms = meta_clone->driver_private; clone_kms = meta_clone->driver_private;
if (meta_clone == meta_output) if (meta_clone == output)
continue; continue;
if (clone_kms->encoder_mask == 0) if (clone_kms->encoder_mask == 0)
@@ -936,18 +874,198 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
if (clone_kms->encoder_mask == output_kms->enc_clone_mask) if (clone_kms->encoder_mask == output_kms->enc_clone_mask)
{ {
meta_output->n_possible_clones++; output->n_possible_clones++;
meta_output->possible_clones = g_renew (MetaOutput *, output->possible_clones = g_renew (MetaOutput *,
meta_output->possible_clones, output->possible_clones,
meta_output->n_possible_clones); output->n_possible_clones);
meta_output->possible_clones[meta_output->n_possible_clones - 1] = meta_clone; output->possible_clones[output->n_possible_clones - 1] = meta_clone;
} }
} }
} }
}
for (i = 0; i < (unsigned)resources->count_encoders; i++) static void
drmModeFreeEncoder (encoders[i]); init_connectors (MetaMonitorManager *manager,
g_free (encoders); drmModeRes *resources)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
unsigned int i;
manager_kms->n_connectors = resources->count_connectors;
manager_kms->connectors = g_new (drmModeConnector *, manager_kms->n_connectors);
for (i = 0; i < manager_kms->n_connectors; i++)
{
drmModeConnector *drm_connector;
drm_connector = drmModeGetConnector (manager_kms->fd,
resources->connectors[i]);
manager_kms->connectors[i] = drm_connector;
}
}
static void
init_modes (MetaMonitorManager *manager,
drmModeRes *resources)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
GHashTable *modes;
GHashTableIter iter;
drmModeModeInfo *drm_mode;
unsigned int i;
long mode_id;
/*
* Gather all modes on all connected connectors.
*/
modes = g_hash_table_new (drm_mode_hash, drm_mode_equal);
for (i = 0; i < manager_kms->n_connectors; i++)
{
drmModeConnector *drm_connector;
drm_connector = manager_kms->connectors[i];
if (drm_connector && drm_connector->connection == DRM_MODE_CONNECTED)
{
unsigned int j;
for (j = 0; j < (unsigned int) drm_connector->count_modes; j++)
g_hash_table_add (modes, &drm_connector->modes[j]);
}
}
manager->n_modes = g_hash_table_size (modes);
manager->modes = g_new0 (MetaMonitorMode, manager->n_modes);
g_hash_table_iter_init (&iter, modes);
mode_id = 0;
while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &drm_mode))
{
MetaMonitorMode *mode;
mode = &manager->modes[mode_id];
init_mode (mode, drm_mode, (long) mode_id);
mode_id++;
}
g_hash_table_destroy (modes);
}
static void
init_crtcs (MetaMonitorManager *manager,
drmModeRes *resources)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
unsigned int i;
manager->n_crtcs = resources->count_crtcs;
manager->crtcs = g_new0 (MetaCRTC, manager->n_crtcs);
for (i = 0; i < (unsigned)resources->count_crtcs; i++)
{
drmModeCrtc *drm_crtc;
MetaCRTC *crtc;
drm_crtc = drmModeGetCrtc (manager_kms->fd, resources->crtcs[i]);
crtc = &manager->crtcs[i];
init_crtc (crtc, manager, drm_crtc);
find_crtc_properties (manager_kms, crtc);
init_crtc_rotations (manager, crtc, i);
drmModeFreeCrtc (drm_crtc);
}
}
static void
init_outputs (MetaMonitorManager *manager,
drmModeRes *resources)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
MetaOutput *old_outputs;
unsigned int n_old_outputs;
unsigned int n_actual_outputs;
unsigned int i;
old_outputs = manager->outputs;
n_old_outputs = manager->n_outputs;
manager->outputs = g_new0 (MetaOutput, manager_kms->n_connectors);
n_actual_outputs = 0;
for (i = 0; i < manager_kms->n_connectors; i++)
{
drmModeConnector *connector;
MetaOutput *output;
connector = manager_kms->connectors[i];
output = &manager->outputs[n_actual_outputs];
if (connector && connector->connection == DRM_MODE_CONNECTED)
{
MetaOutput *old_output;
old_output = find_output_by_id (old_outputs, n_old_outputs,
output->winsys_id);
init_output (output, manager, connector, old_output);
n_actual_outputs++;
}
}
manager->n_outputs = n_actual_outputs;
manager->outputs = g_renew (MetaOutput, manager->outputs, manager->n_outputs);
/* Sort the outputs for easier handling in MetaMonitorConfig */
qsort (manager->outputs, manager->n_outputs, sizeof (MetaOutput),
compare_outputs);
detect_and_setup_output_clones (manager, resources);
}
static void
calculate_screen_size (MetaMonitorManager *manager)
{
unsigned int i;
int width = 0, height = 0;
for (i = 0; i < manager->n_crtcs; i++)
{
MetaCRTC *crtc = &manager->crtcs[i];
width = MAX (width, crtc->rect.x + crtc->rect.width);
height = MAX (height, crtc->rect.y + crtc->rect.height);
}
manager->screen_width = width;
manager->screen_height = height;
}
static void
meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
drmModeRes *resources;
resources = drmModeGetResources(manager_kms->fd);
/* TODO: max screen width only matters for stage views is not enabled. */
manager->max_screen_width = resources->max_width;
manager->max_screen_height = resources->max_height;
manager->power_save_mode = META_POWER_SAVE_ON;
/* Note: we must not free the public structures (output, crtc, monitor
mode and monitor info) here, they must be kept alive until the API
users are done with them after we emit monitors-changed, and thus
are freed by the platform-independent layer. */
free_resources (manager_kms);
init_connectors (manager, resources);
init_modes (manager, resources);
init_crtcs (manager, resources);
init_outputs (manager, resources);
calculate_screen_size (manager);
drmModeFreeResources (resources); drmModeFreeResources (resources);
} }
@@ -1085,14 +1203,6 @@ meta_monitor_manager_kms_apply_configuration (MetaMonitorManager *manager,
mode = crtc_info->mode; mode = crtc_info->mode;
for (j = 0; j < crtc_info->outputs->len; j++)
{
MetaOutput *output = g_ptr_array_index (crtc_info->outputs, j);
output->is_dirty = TRUE;
output->crtc = crtc;
}
if (meta_monitor_transform_is_rotated (crtc_info->transform)) if (meta_monitor_transform_is_rotated (crtc_info->transform))
{ {
width = mode->height; width = mode->height;
@@ -1113,6 +1223,15 @@ meta_monitor_manager_kms_apply_configuration (MetaMonitorManager *manager,
crtc->rect.height = height; crtc->rect.height = height;
crtc->current_mode = mode; crtc->current_mode = mode;
crtc->transform = crtc_info->transform; crtc->transform = crtc_info->transform;
for (j = 0; j < crtc_info->outputs->len; j++)
{
MetaOutput *output = g_ptr_array_index (crtc_info->outputs, j);
output->is_dirty = TRUE;
output->crtc = crtc;
output->scale = get_output_scale (manager, output);
}
} }
if (crtc->all_transforms & (1 << crtc->transform)) if (crtc->all_transforms & (1 << crtc->transform))

View File

@@ -817,7 +817,8 @@ meta_backend_x11_update_screen_size (MetaBackend *backend,
ClutterActor *stage = meta_backend_get_stage (backend); ClutterActor *stage = meta_backend_get_stage (backend);
MetaRenderer *renderer = meta_backend_get_renderer (backend); MetaRenderer *renderer = meta_backend_get_renderer (backend);
meta_renderer_rebuild_views (renderer); if (meta_is_stage_views_enabled ())
meta_renderer_rebuild_views (renderer);
clutter_actor_set_size (stage, width, height); clutter_actor_set_size (stage, width, height);
} }
else else

View File

@@ -31,10 +31,28 @@
#include <X11/Xatom.h> #include <X11/Xatom.h>
#include <X11/extensions/XInput2.h> #include <X11/extensions/XInput2.h>
#include <X11/XKBlib.h> #include <X11/XKBlib.h>
#ifdef HAVE_LIBGUDEV
#include <gudev/gudev.h>
#endif
#include <meta/errors.h> #include <meta/errors.h>
G_DEFINE_TYPE (MetaInputSettingsX11, meta_input_settings_x11, META_TYPE_INPUT_SETTINGS) typedef struct _MetaInputSettingsX11Private
{
#ifdef HAVE_LIBGUDEV
GUdevClient *udev_client;
#endif
} MetaInputSettingsX11Private;
G_DEFINE_TYPE_WITH_PRIVATE (MetaInputSettingsX11, meta_input_settings_x11,
META_TYPE_INPUT_SETTINGS)
enum {
SCROLL_METHOD_FIELD_2FG,
SCROLL_METHOD_FIELD_EDGE,
SCROLL_METHOD_FIELD_BUTTON,
SCROLL_METHOD_NUM_FIELDS
};
static void * static void *
get_property (ClutterInputDevice *device, get_property (ClutterInputDevice *device,
@@ -203,31 +221,79 @@ meta_input_settings_x11_set_edge_scroll (MetaInputSettings *settings,
ClutterInputDevice *device, ClutterInputDevice *device,
gboolean edge_scroll_enabled) gboolean edge_scroll_enabled)
{ {
guchar values[3] = { 0 }; /* 2fg, edge, button. The last value is unused */ guchar values[SCROLL_METHOD_NUM_FIELDS] = { 0 }; /* 2fg, edge, button. The last value is unused */
guchar *defaults;
guchar *available; guchar *available;
available = get_property (device, "libinput Scroll Methods Available", available = get_property (device, "libinput Scroll Methods Available",
XA_INTEGER, 8, 3); XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS);
if (!available) defaults = get_property (device, "libinput Scroll Method Enabled",
return; XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS);
if (!available || !defaults)
goto out;
if (available[0]) memcpy (values, defaults, SCROLL_METHOD_NUM_FIELDS);
/* Don't set edge scrolling if two-finger scrolling is enabled and available */
if (available[SCROLL_METHOD_FIELD_EDGE] &&
!(available[SCROLL_METHOD_FIELD_2FG] && values[SCROLL_METHOD_FIELD_2FG]))
{ {
values[0] = 1; values[1] = !!edge_scroll_enabled;
} change_property (device, "libinput Scroll Method Enabled",
else if (available[1] && edge_scroll_enabled) XA_INTEGER, 8, &values, SCROLL_METHOD_NUM_FIELDS);
{
values[1] = 1;
}
else
{
/* Disabled */
} }
change_property (device, "libinput Scroll Method Enabled", out:
XA_INTEGER, 8, &values, 3); if (available)
meta_XFree (available);
if (defaults)
meta_XFree (defaults);
}
meta_XFree (available); static void
meta_input_settings_x11_set_two_finger_scroll (MetaInputSettings *settings,
ClutterInputDevice *device,
gboolean two_finger_scroll_enabled)
{
guchar values[SCROLL_METHOD_NUM_FIELDS] = { 0 }; /* 2fg, edge, button. The last value is unused */
guchar *defaults;
guchar *available;
gboolean changed;
available = get_property (device, "libinput Scroll Methods Available",
XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS);
defaults = get_property (device, "libinput Scroll Method Enabled",
XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS);
if (!available || !defaults)
goto out;
memcpy (values, defaults, SCROLL_METHOD_NUM_FIELDS);
changed = FALSE;
if (available[SCROLL_METHOD_FIELD_2FG])
{
values[SCROLL_METHOD_FIELD_2FG] = !!two_finger_scroll_enabled;
changed = TRUE;
}
/* Disable edge scrolling when two-finger scrolling is enabled */
if (values[SCROLL_METHOD_FIELD_2FG] && values[SCROLL_METHOD_FIELD_EDGE])
{
values[SCROLL_METHOD_FIELD_EDGE] = 0;
changed = TRUE;
}
if (changed)
{
change_property (device, "libinput Scroll Method Enabled",
XA_INTEGER, 8, &values, SCROLL_METHOD_NUM_FIELDS);
}
out:
if (available)
meta_XFree (available);
if (defaults)
meta_XFree (defaults);
} }
static void static void
@@ -305,6 +371,135 @@ meta_input_settings_x11_set_keyboard_repeat (MetaInputSettings *settings,
} }
} }
static gboolean
has_udev_property (MetaInputSettings *settings,
ClutterInputDevice *device,
const char *property_name)
{
#ifdef HAVE_LIBGUDEV
MetaInputSettingsX11 *settings_x11 = META_INPUT_SETTINGS_X11 (settings);
MetaInputSettingsX11Private *priv =
meta_input_settings_x11_get_instance_private (settings_x11);
const char *device_node;
GUdevDevice *udev_device = NULL;
GUdevDevice *parent_udev_device = NULL;
device_node = clutter_input_device_get_device_node (device);
if (!device_node)
return FALSE;
udev_device = g_udev_client_query_by_device_file (priv->udev_client,
device_node);
if (!udev_device)
return FALSE;
if (NULL != g_udev_device_get_property (udev_device, property_name))
{
g_object_unref (udev_device);
return TRUE;
}
parent_udev_device = g_udev_device_get_parent (udev_device);
g_object_unref (udev_device);
if (!parent_udev_device)
return FALSE;
if (NULL != g_udev_device_get_property (parent_udev_device, property_name))
{
g_object_unref (parent_udev_device);
return TRUE;
}
g_object_unref (parent_udev_device);
return FALSE;
#else
g_warning ("Failed to set acceleration profile: no udev support");
return FALSE;
#endif
}
static gboolean
is_mouse (MetaInputSettings *settings,
ClutterInputDevice *device)
{
return (has_udev_property (settings, device, "ID_INPUT_MOUSE") &&
!has_udev_property (settings, device, "ID_INPUT_POINTINGSTICK"));
}
static gboolean
is_trackball (MetaInputSettings *settings,
ClutterInputDevice *device)
{
return meta_input_device_is_trackball (device);
}
static void
set_device_accel_profile (ClutterInputDevice *device,
GDesktopPointerAccelProfile profile)
{
guchar *defaults, *available;
guchar values[2] = { 0 }; /* adaptive, flat */
defaults = get_property (device, "libinput Accel Profile Enabled Default",
XA_INTEGER, 8, 2);
if (!defaults)
return;
available = get_property (device, "libinput Accel Profiles Available",
XA_INTEGER, 8, 2);
if (!available)
goto err_available;
switch (profile)
{
case G_DESKTOP_POINTER_ACCEL_PROFILE_FLAT:
values[0] = 0;
values[1] = 1;
break;
case G_DESKTOP_POINTER_ACCEL_PROFILE_ADAPTIVE:
values[0] = 1;
values[1] = 0;
break;
default:
g_warn_if_reached ();
case G_DESKTOP_POINTER_ACCEL_PROFILE_DEFAULT:
values[0] = defaults[0];
values[1] = defaults[1];
break;
}
change_property (device, "libinput Accel Profile Enabled",
XA_INTEGER, 8, &values, 2);
meta_XFree (available);
err_available:
meta_XFree (defaults);
}
static void
meta_input_settings_x11_set_mouse_accel_profile (MetaInputSettings *settings,
ClutterInputDevice *device,
GDesktopPointerAccelProfile profile)
{
if (!is_mouse (settings, device))
return;
set_device_accel_profile (device, profile);
}
static void
meta_input_settings_x11_set_trackball_accel_profile (MetaInputSettings *settings,
ClutterInputDevice *device,
GDesktopPointerAccelProfile profile)
{
if (!is_trackball (settings, device))
return;
set_device_accel_profile (device, profile);
}
static void static void
meta_input_settings_x11_set_tablet_mapping (MetaInputSettings *settings, meta_input_settings_x11_set_tablet_mapping (MetaInputSettings *settings,
ClutterInputDevice *device, ClutterInputDevice *device,
@@ -330,11 +525,28 @@ meta_input_settings_x11_set_tablet_area (MetaInputSettings *settings,
{ {
} }
static void
meta_input_settings_x11_dispose (GObject *object)
{
#ifdef HAVE_LIBGUDEV
MetaInputSettingsX11 *settings_x11 = META_INPUT_SETTINGS_X11 (object);
MetaInputSettingsX11Private *priv =
meta_input_settings_x11_get_instance_private (settings_x11);
g_clear_object (&priv->udev_client);
#endif
G_OBJECT_CLASS (meta_input_settings_x11_parent_class)->dispose (object);
}
static void static void
meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass) meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass);
MetaInputSettingsClass *input_settings_class = META_INPUT_SETTINGS_CLASS (klass); MetaInputSettingsClass *input_settings_class = META_INPUT_SETTINGS_CLASS (klass);
object_class->dispose = meta_input_settings_x11_dispose;
input_settings_class->set_send_events = meta_input_settings_x11_set_send_events; input_settings_class->set_send_events = meta_input_settings_x11_set_send_events;
input_settings_class->set_matrix = meta_input_settings_x11_set_matrix; input_settings_class->set_matrix = meta_input_settings_x11_set_matrix;
input_settings_class->set_speed = meta_input_settings_x11_set_speed; input_settings_class->set_speed = meta_input_settings_x11_set_speed;
@@ -342,6 +554,7 @@ meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass)
input_settings_class->set_tap_enabled = meta_input_settings_x11_set_tap_enabled; input_settings_class->set_tap_enabled = meta_input_settings_x11_set_tap_enabled;
input_settings_class->set_invert_scroll = meta_input_settings_x11_set_invert_scroll; input_settings_class->set_invert_scroll = meta_input_settings_x11_set_invert_scroll;
input_settings_class->set_edge_scroll = meta_input_settings_x11_set_edge_scroll; input_settings_class->set_edge_scroll = meta_input_settings_x11_set_edge_scroll;
input_settings_class->set_two_finger_scroll = meta_input_settings_x11_set_two_finger_scroll;
input_settings_class->set_scroll_button = meta_input_settings_x11_set_scroll_button; input_settings_class->set_scroll_button = meta_input_settings_x11_set_scroll_button;
input_settings_class->set_click_method = meta_input_settings_x11_set_click_method; input_settings_class->set_click_method = meta_input_settings_x11_set_click_method;
input_settings_class->set_keyboard_repeat = meta_input_settings_x11_set_keyboard_repeat; input_settings_class->set_keyboard_repeat = meta_input_settings_x11_set_keyboard_repeat;
@@ -349,9 +562,19 @@ meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass)
input_settings_class->set_tablet_mapping = meta_input_settings_x11_set_tablet_mapping; input_settings_class->set_tablet_mapping = meta_input_settings_x11_set_tablet_mapping;
input_settings_class->set_tablet_keep_aspect = meta_input_settings_x11_set_tablet_keep_aspect; input_settings_class->set_tablet_keep_aspect = meta_input_settings_x11_set_tablet_keep_aspect;
input_settings_class->set_tablet_area = meta_input_settings_x11_set_tablet_area; input_settings_class->set_tablet_area = meta_input_settings_x11_set_tablet_area;
input_settings_class->set_mouse_accel_profile = meta_input_settings_x11_set_mouse_accel_profile;
input_settings_class->set_trackball_accel_profile = meta_input_settings_x11_set_trackball_accel_profile;
} }
static void static void
meta_input_settings_x11_init (MetaInputSettingsX11 *settings) meta_input_settings_x11_init (MetaInputSettingsX11 *settings)
{ {
#ifdef HAVE_LIBGUDEV
MetaInputSettingsX11Private *priv =
meta_input_settings_x11_get_instance_private (settings);
const char *subsystems[] = { NULL };
priv->udev_client = g_udev_client_new (subsystems);
#endif
} }

View File

@@ -78,6 +78,7 @@ meta_renderer_x11_create_view (MetaRenderer *renderer,
int width, height; int width, height;
CoglTexture2D *texture_2d; CoglTexture2D *texture_2d;
CoglOffscreen *offscreen; CoglOffscreen *offscreen;
GError *error = NULL;
g_assert (meta_is_wayland_compositor ()); g_assert (meta_is_wayland_compositor ());
@@ -86,6 +87,9 @@ meta_renderer_x11_create_view (MetaRenderer *renderer,
texture_2d = cogl_texture_2d_new_with_size (cogl_context, width, height); texture_2d = cogl_texture_2d_new_with_size (cogl_context, width, height);
offscreen = cogl_offscreen_new_with_texture (COGL_TEXTURE (texture_2d)); offscreen = cogl_offscreen_new_with_texture (COGL_TEXTURE (texture_2d));
if (!cogl_framebuffer_allocate (COGL_FRAMEBUFFER (offscreen), &error))
meta_fatal ("Couldn't allocate framebuffer: %s", error->message);
return g_object_new (META_TYPE_RENDERER_VIEW, return g_object_new (META_TYPE_RENDERER_VIEW,
"layout", &monitor_info->rect, "layout", &monitor_info->rect,
"framebuffer", COGL_FRAMEBUFFER (offscreen), "framebuffer", COGL_FRAMEBUFFER (offscreen),

View File

@@ -66,7 +66,10 @@ meta_stage_x11_nested_get_views (ClutterStageWindow *stage_window)
MetaBackend *backend = meta_get_backend (); MetaBackend *backend = meta_get_backend ();
MetaRenderer *renderer = meta_backend_get_renderer (backend); MetaRenderer *renderer = meta_backend_get_renderer (backend);
return meta_renderer_get_views (renderer); if (meta_is_stage_views_enabled ())
return meta_renderer_get_views (renderer);
else
return clutter_stage_window_parent_iface->get_views (stage_window);
} }
static void static void
@@ -80,6 +83,12 @@ meta_stage_x11_nested_finish_frame (ClutterStageWindow *stage_window)
CoglFramebuffer *onscreen = COGL_FRAMEBUFFER (stage_x11->onscreen); CoglFramebuffer *onscreen = COGL_FRAMEBUFFER (stage_x11->onscreen);
GList *l; GList *l;
/*
* If we are in legacy mode, the stage is already on the onscreen.
*/
if (!meta_is_stage_views_enabled ())
return;
if (!stage_nested->pipeline) if (!stage_nested->pipeline)
stage_nested->pipeline = cogl_pipeline_new (clutter_backend->cogl_context); stage_nested->pipeline = cogl_pipeline_new (clutter_backend->cogl_context);

View File

@@ -299,7 +299,7 @@ struct _MetaPluginVersion
GType meta_plugin_register_type (GTypeModule *type_module); \ GType meta_plugin_register_type (GTypeModule *type_module); \
\ \
GType \ GType \
object_name##_get_type () \ object_name##_get_type (void) \
{ \ { \
return g_define_type_id; \ return g_define_type_id; \
} \ } \

View File

@@ -299,7 +299,8 @@ create_lock_file (int display, int *display_out)
} }
static int static int
bind_to_abstract_socket (int display) bind_to_abstract_socket (int display,
gboolean *fatal)
{ {
struct sockaddr_un addr; struct sockaddr_un addr;
socklen_t size, name_size; socklen_t size, name_size;
@@ -307,7 +308,11 @@ bind_to_abstract_socket (int display)
fd = socket (PF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC, 0); fd = socket (PF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC, 0);
if (fd < 0) if (fd < 0)
return -1; {
*fatal = TRUE;
g_warning ("Failed to create socket: %m");
return -1;
}
addr.sun_family = AF_LOCAL; addr.sun_family = AF_LOCAL;
name_size = snprintf (addr.sun_path, sizeof addr.sun_path, name_size = snprintf (addr.sun_path, sizeof addr.sun_path,
@@ -315,6 +320,7 @@ bind_to_abstract_socket (int display)
size = offsetof (struct sockaddr_un, sun_path) + name_size; size = offsetof (struct sockaddr_un, sun_path) + name_size;
if (bind (fd, (struct sockaddr *) &addr, size) < 0) if (bind (fd, (struct sockaddr *) &addr, size) < 0)
{ {
*fatal = errno != EADDRINUSE;
g_warning ("failed to bind to @%s: %m", addr.sun_path + 1); g_warning ("failed to bind to @%s: %m", addr.sun_path + 1);
close (fd); close (fd);
return -1; return -1;
@@ -322,6 +328,9 @@ bind_to_abstract_socket (int display)
if (listen (fd, 1) < 0) if (listen (fd, 1) < 0)
{ {
*fatal = errno != EADDRINUSE;
g_warning ("Failed to listen on abstract socket @%s: %m",
addr.sun_path + 1);
close (fd); close (fd);
return -1; return -1;
} }
@@ -394,6 +403,7 @@ choose_xdisplay (MetaXWaylandManager *manager)
{ {
int display = 0; int display = 0;
char *lock_file = NULL; char *lock_file = NULL;
gboolean fatal = FALSE;
/* Hack to keep the unused Xwayland instance on /* Hack to keep the unused Xwayland instance on
* the login screen from taking the prime :0 display * the login screen from taking the prime :0 display
@@ -411,22 +421,25 @@ choose_xdisplay (MetaXWaylandManager *manager)
return FALSE; return FALSE;
} }
manager->abstract_fd = bind_to_abstract_socket (display); manager->abstract_fd = bind_to_abstract_socket (display, &fatal);
if (manager->abstract_fd < 0) if (manager->abstract_fd < 0)
{ {
unlink (lock_file); unlink (lock_file);
if (errno == EADDRINUSE) if (!fatal)
{ {
display++; display++;
continue; continue;
} }
else else
return FALSE; {
g_warning ("Failed to bind abstract socket");
return FALSE;
}
} }
manager->unix_fd = bind_to_unix_socket (display); manager->unix_fd = bind_to_unix_socket (display);
if (manager->abstract_fd < 0) if (manager->unix_fd < 0)
{ {
unlink (lock_file); unlink (lock_file);
close (manager->abstract_fd); close (manager->abstract_fd);