Compare commits

..

10 Commits

Author SHA1 Message Date
Cédric Valmary
24f2743a10 Update Occitan translation 2016-10-11 18:57:23 +00:00
Cédric Valmary
a52d4188e0 Update Occitan translation 2016-10-11 18:45:55 +00:00
Cédric Valmary
8638fb06f1 Update Occitan translation 2016-10-11 18:35:51 +00:00
Cédric Valmary
9aea81cb42 Update Occitan translation 2016-10-11 17:56:31 +00:00
Alban Crequy
844ad6f4d4 Initialize window->user_rect in the initial placement
The window positioning is delayed in idle_move_resize() in case the application
resizes/maximizes its window quickly after its creation. The delayed
positioning uses window->user_rect because of bug 426519 comment 3 (see
meta_window_move_resize_now()).

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

With this patch, the window does not jump anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=556696
2012-11-29 14:26:38 +00:00
Nilamdyuti Goswami
01507d975d Assamese translation reviewed 2012-07-13 14:51:37 +05:30
Andika Triwidada
24bb09771a [l10n] Updated Indonesian translation 2012-05-14 23:55:24 +07:00
Luca Ferretti
4ca84727fe l10n: updated Italian translaion 2012-05-09 11:34:29 +02:00
Praveen Illa
ff688cee83 Updated Telugu Translation 2012-05-07 00:21:00 +05:30
Owen W. Taylor
5e453f41be meta_window_move_frame(): fix crash when frame is NULL
When meta_frame_calc_borders() was made to take a NULL frame argument,
a crash was accidentally introduced into meta_window_move_frame().

This partially reverts 8c1b2d5.

https://bugzilla.gnome.org/show_bug.cgi?id=675254
2012-05-01 14:31:10 -04:00
77 changed files with 6227 additions and 6676 deletions

64
NEWS
View File

@@ -1,67 +1,3 @@
3.5.4
=====
* Make it possible to reimplement move-to-workspace keybindings from plugins
[Giovanni; #674104]
* Add a preference to ignore hide-titlebar-when-maximized hint [Rico; #678947]
* window: Also use hide-titlebar-when-maximized when tiled [Florian; #679290]
* Center modal dialogs on their parent instead [Florian; #674499]
* Reduce amount of markup in translated messages [Matthias; #679660]
* Fix focus problem after closing a window with focus-follows-mouse
[Jasper; #675982]
* Handle changes of the attach-modal-dialogs preference [Florian; #679904]
* Do not restore tiling on unmaximize [Florian; #677565]
* Misc. fixes and cleanups [Jasper Adriaanse, Jasper, Debarshi, Pavel;
#679153, 673824]
Contributors:
Jasper Lievisse Adriaanse, Giovanni Campagna, Matthias Clasen, Florian Müllner,
Debarshi Ray, Jasper St. Pierre, Rico Tzschichholz, Pavel Vasin
Translations:
Alexander Shopov [bg], Kjartan Maraas [nb], Yaron Shahrabani [he],
Nilamdyuti Goswami [as], Ihar Hrachyshka [be], Daniel Mustieles [es]
3.5.3
=====
* Simplify plugin system [Jasper; #676855]
* meta-window-actor: Don't unredirect shaped windows [Jasper; #677657]
* screen: Add new public meta_screen_get_current_monitor API [Tim; #642591]
* frames: Increase the size of resize corners [Jasper; #677669]
* window: Make some window methods public [Jasper; #678126]
* Fix crash when running mutter stand-alone [Jasper; #678238]
* meta-window-actor: Fix potential crash in shaping code [Jasper; #677977]
* Misc. fixes [Jasper, Marc-Antoine, Rico]
Contributors:
Tim L, Marc-Antoine Perennou, Jasper St. Pierre, Rico Tzschichholz
Translations:
Daniel Mustieles [es], Matej Urbančič [sl], Khaled Hosny [ar],
Bruno Brouard [fr], Fran Diéguez [gl]
3.5.2
=====
* keybindings: Remove 'toggle-recording' binding [Florian; #674376]
* Switch to gtk-doc syntax [Jasper; #673752]
* shaped-texture: never slice shape mask texture [Robert; #674731]
* Make Mutter stop relying on Cogl including a GL header [Neil; #672711]
* Make support for "XFree86" Xinerama mandatory [Owen; #674727]
* meta_window_move_frame(): fix crash when frame is NULL [Owen; #675254]
* Fix memory leaks [Pavel; #672640]
* Code cleanups [Jasper; #671104 #674876 #676052]
* Look for themes in XDG user data dir [Jasper; #675316]
* Remove frame pixel caching [Jasper; #675111]
* stack: Ignore keep-on-top property on maximized windows [Florian; #673581]
* Misc. fixes [Javier, Jasper, Owen, Rico]
Contributors:
Robert Bragg, Javier Járdon, Florian Müllner, Neil Roberts, Jasper St. Pierre,
Owen Taylor, Rico Tzschichholz, Pavel Vasin
Translations:
Praveen Illa [te], Luca Ferretti [it], Daniel Mustieles [es]
3.4.1
=====
* API change: the meta_display_add_keybinding() function added in 3.4

View File

@@ -1,8 +1,8 @@
AC_PREREQ(2.50)
m4_define([mutter_major_version], [3])
m4_define([mutter_minor_version], [5])
m4_define([mutter_micro_version], [4])
m4_define([mutter_minor_version], [4])
m4_define([mutter_micro_version], [1])
m4_define([mutter_version],
[mutter_major_version.mutter_minor_version.mutter_micro_version])
@@ -113,6 +113,9 @@ AC_ARG_ENABLE(shape,
[disable mutter's use of the shaped window extension]),,
enable_shape=auto)
## try definining HAVE_BACKTRACE
AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
AM_GLIB_GNU_GETTEXT
## here we get the flags we'll actually use
@@ -209,31 +212,60 @@ AC_PATH_XTRA
ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
# Check for Xinerama extension - we only support the "XFree86" style,
# and not the older Solaris-only version; recent Solaris supports the
# XFree86 style.
# Check for Xinerama extension (Solaris impl or Xfree impl)
mutter_save_cppflags="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
have_xinerama=yes
AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
[AC_CHECK_HEADER(X11/extensions/Xinerama.h,
[X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
fi],
have_xinerama=no,
[#include <X11/Xlib.h>])],
have_xinerama=no, -lXext $ALL_X_LIBS)
AC_MSG_CHECKING(for Xinerama support)
AC_MSG_RESULT($have_xinerama)
AC_ARG_ENABLE(xinerama,
AC_HELP_STRING([--disable-xinerama],
[disable mutter's use of the Xinerama extension]),
try_xinerama=$enable_xinerama,try_xinerama=yes)
use_solaris_xinerama=no
use_xfree_xinerama=no
if test "${try_xinerama}" != no; then
case "$host" in
*-*-solaris*)
# Check for solaris
use_solaris_xinerama=yes
AC_CHECK_LIB(Xext, XineramaGetInfo,
use_solaris_xinerama=yes, use_solaris_xinerama=no,
$ALL_X_LIBS)
if test "x$use_solaris_xinerama" = "xyes"; then
AC_CHECK_HEADER(X11/extensions/xinerama.h,
if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
fi
AC_DEFINE(HAVE_SOLARIS_XINERAMA, , [Have Solaris-style Xinerama])
AC_DEFINE(HAVE_XINERAMA, , [Have some version of Xinerama]),
use_solaris_xinerama=no,
[#include <X11/Xlib.h>])
fi
AC_MSG_CHECKING(for Xinerama support on Solaris)
AC_MSG_RESULT($use_solaris_xinerama);
;;
*)
# Check for XFree
use_xfree_xinerama=yes
AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
[AC_CHECK_HEADER(X11/extensions/Xinerama.h,
X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS"
if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then
X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS"
fi
AC_DEFINE(HAVE_XFREE_XINERAMA, , [Have XFree86-style Xinerama])
AC_DEFINE(HAVE_XINERAMA,, [Have some version of Xinerama]),
use_xfree_xinerama=no,
[#include <X11/Xlib.h>])],
use_xfree_xinerama=no, -lXext $ALL_X_LIBS)
AC_MSG_CHECKING(for Xinerama support on XFree86)
AC_MSG_RESULT($use_xfree_xinerama);
;;
esac
fi
CPPFLAGS="$mutter_save_cppflags"
if test x$have_xinerama = xno; then
AC_MSG_ERROR([Xinerama extension was not found])
fi
SHAPE_LIBS=
found_shape=no
AC_CHECK_LIB(Xext, XShapeQueryExtension,
@@ -464,6 +496,8 @@ mutter-$VERSION
source code location: ${srcdir}
compiler: ${CC}
XFree86 Xinerama: ${use_xfree_xinerama}
Solaris Xinerama: ${use_solaris_xinerama}
Startup notification: ${have_startup_notification}
libcanberra: ${have_libcanberra}
Introspection: ${found_introspection}

228
po/ar.po
View File

@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity.HEAD\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-13 20:18+0200\n"
"PO-Revision-Date: 2012-06-13 20:20+0200\n"
"POT-Creation-Date: 2012-03-30 05:24+0200\n"
"PO-Revision-Date: 2012-03-30 05:24+0200\n"
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
"Language-Team: Arabic <doc@arabeyes.org>\n"
"Language: ar\n"
@@ -37,13 +37,13 @@ msgstr "المنظور مقسوم على اليسار"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:492
#, c-format
#, fuzzy, c-format
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr ""
msgstr "لا يمكن الحصول على اختيار مدير النوافذ على الشاشة %d العرض \"%s\"\n"
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "حدث جرس"
@@ -75,12 +75,12 @@ msgstr "ا_نتظر"
msgid "_Force Quit"
msgstr "أ_جبر الإنهاء"
#: ../src/core/display.c:380
#: ../src/core/display.c:387
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "الامتداد %s مفقود، لكنه مطلوب للتركيب"
#: ../src/core/display.c:446
#: ../src/core/display.c:453
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "فشل فتح عرض نظام نوافذ إكس '%s'\n"
@@ -92,36 +92,36 @@ msgid ""
"binding\n"
msgstr "يستعمل برنامج آخر المفتاح %s بالفعل مع المغيرين %x كرابط\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "عطّل الاتصال بمدير الجلسة"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "استبدل بمدير النوافذ الذي يعمل"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "حدّد رقم هويّة إدارة الجلسة"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "معراض س الذي سيستعمل"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "ابدأ الجلسة من ملف محفوظ"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "اجعل نداءات س متزامنة"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "فشلت قراءة دليل السِمات : %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -146,10 +146,10 @@ msgid "Print version"
msgstr "اطبع الإصدارة"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "ملحق مَتَر الذي سيُستخدم"
msgid "Comma-separated list of compositor plugins"
msgstr "قائمة بملحقات المزج مفصولة بفاصلة"
#: ../src/core/prefs.c:1064
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -157,12 +157,12 @@ msgstr ""
"عطّلت الحلول الجزئيّة للتطبيقات المعطوبة . ربما لن تتصرف بعض التطبيقات "
"بسلامة.\n"
#: ../src/core/prefs.c:1139
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "لا يمكن تحليل وصف الخط \"%s\" من مفتاح GSettings %s\n"
#: ../src/core/prefs.c:1205
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@@ -170,7 +170,7 @@ msgid ""
msgstr ""
"\"%s\" الموجود في قاعدة بيانات الإعدادات ليس قيمة سليمة لمغير أزرار الفأرة\n"
#: ../src/core/prefs.c:1723
#: ../src/core/prefs.c:1739
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -179,17 +179,17 @@ msgstr ""
"\"%s\" الموجود في قاعدة بيانات الإعدادات ليس قيمة سليمة لارتباط المفتاح \"%s"
"\"\n"
#: ../src/core/prefs.c:1820
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "مساحة العمل %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "الشاشة %d على العرض '%s' غير صحيحة\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -198,18 +198,18 @@ msgstr ""
"الشاشة %d على العرض \"%s\" لها مدير نوافذ بالفعل، حاول استعمال خيار التبديل "
"--replace لتحُلّ محلّ مدير النوافذ الحالي.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "لا يمكن الحصول على اختيار مدير النوافذ على الشاشة %d العرض \"%s\"\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "الشاشة %d على العرض \"%s\" لها مدير نوافذ بالفعل\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "لا يمكن ترك الشاشة %d على العرض \"%s\"\n"
@@ -269,44 +269,44 @@ msgstr ""
"هذه النوافذ لا تدعم &quot;احفظ الضبط الحالي&quot; يجب إعادة تشغيلها يدويا "
"عند الولوج المرة القادمة."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "فشل فتح سِجِلّ التنقيح: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "فشل fdopen() ملف الرسائل %s: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "فُتِح ملف السِّجِل %s\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "جُمِّع مَتَر دون دعم للنمط المطنب\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "مدير النوافذ: "
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "علّة في مدير النوافذ: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "تحذير مدير النوافذ: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "خطأ مدير النوافذ: "
#. first time through
#: ../src/core/window.c:7234
#: ../src/core/window.c:7266
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -322,7 +322,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7899
#: ../src/core/window.c:7931
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@@ -331,22 +331,22 @@ msgstr ""
"ضبطت النافذة %s تلميحة MWM يدل على انه لا يمكن تحجيمها، لكنها تضبط الحجم "
"الأدنى %d x %d و الحجم الأقصى %d x %d، هذا ليس له أي معنى.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "ضبط التطبيق رمز NET_WM_PID غير مفهوم %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (على %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "نافذة WM_TRANSIENT_FOR 0x%lx غير صحيحة ل %s.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, fuzzy, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "نافذة WM_TRANSIENT_FOR 0x%lx غير صحيحة ل %s.\n"
@@ -406,62 +406,73 @@ msgid ""
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgid "Live Hidden Windows"
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces are managed dynamically"
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Workspaces only on primary"
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "No tab popup"
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
#, fuzzy
msgid "Select window from tab popup"
msgstr ""
msgstr "احذف من القمّة"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Cancel tab popup"
msgstr ""
@@ -669,71 +680,72 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d × %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "أعلى"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "أسفل"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "يسار"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "يمين"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "هندسة الإطار لا تخصص البعد \"%s\""
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "هندسة الإطار لا تخصص البعد \"%s\" للحد \"%s\""
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "النسبة الجانبية للزر %g غير معقولة"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "هندسة الإطار لا تخصص حجم الأزرار"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "يجب أن يكون للتّدرُّجات لونان على الأقل"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, fuzzy, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
"parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
msgstr ""
"يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال "
"gtk:fg[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\""
"يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال gtk:fg"
"[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\""
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
"_ are valid"
msgstr ""
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, fuzzy, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
"fit the format"
msgstr "تهيئة التظليل هي \"تظليل/اللون_الأساسي/العامل\"، \"%s\" لا يناسب التهيئة"
msgstr ""
"تهيئة التظليل هي \"تظليل/اللون_الأساسي/العامل\"، \"%s\" لا يناسب التهيئة"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -742,7 +754,7 @@ msgstr ""
"يجب أن تكون حالة تخصيصات ألوان جتك في قوسان قائمان، مثال gtk:fg[NORMAL] "
"NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\""
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -751,149 +763,149 @@ msgstr ""
"يحب أن يكون لتخصيص حالة ألوان جتك قوس غلق قائم بعد الحالة/ مثال gtk:fg"
"[NORMAL]، NORMAL هنا هو الحالة، لا يمكن تحليل \"%s\""
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "لم تفهم الحالة \"%s\" في تخصيص الألوان"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "لم يفهم جزء اللون \"%s\" في تخصيص اللون"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
"format"
msgstr "تهيئة الخلط \"blend/bg_color/fg_color/alpha\"، \"%s\"لا يناسب التهيئة"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "لا يمكن تحليل قيمة الشفافية \"%s\" في اللون المخلط"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "قيمة الشفافية \"%s\" في اللون المخلوط ليست بين 0.0 و 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"تهيئة التظليل هي \"تظليل/اللون_الأساسي/العامل\"، \"%s\" لا يناسب التهيئة"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "لا يمكن تحليل عامل التظليل \"%s\" في اللون المظلل"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "عامل التظليل \"%s\" في اللون المظلل سلبي"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "لا يمكن تحليل اللون \"%s\""
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "تعبير الإحداثيّات يحتوي على الرمز '%s' الممنوع"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "تعبير الإحداثيّات يحتوي على عدد نقطة متغيرة '%s' تعذّر تحليله"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "تعبير الإحداثيّات يحتوي على عدد صحيح '%s' تعذّر تحليله"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
"\"%s\""
msgstr "تعبير الإحداثيّات يحتوي على مقسوم مجهول عند بداية هذا النص: \"%s\""
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "تعبير الإحداثيّات فارغ أو لم يفهم"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "تعبير الإحداثيّات ينتُج عند القسمة على صفر"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "تعبير الإحداثيّاتيّات يحاول استعمال مقسوم mod على عدد فاصلة متحرّكة"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "تعبير الإحداثيّات له مقسوم \"%s\" بالرغم من ترقبه قاسم"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "تعبير الإحداثيّات له قاسم بالرغم من ترقبه لمقسوم"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "انتهى تعبير الإحداثيّات بمقسوم عوضا عن قاسم"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
"operand in between"
msgstr "لتعبير الإحداثيّات مقسوم \"%c\" يتبع القاسم \"%c\" بدون قاسم بينهما"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "كان لتعبير الإحداثيّات متغير أو ثابت \"%s\""
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "غمر محلّل تعبير الإحداثيّات مجاله"
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "كان لتعبير الإحداثيّات قوس غلق بدون قوس فتح"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "كان لتعبير الإحداثيات قوس فتح بدون قوس غلق"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "تعبير الإحداثيات لا يملك قاسمات و مقسومات"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "احتوت السِمة على تعبير ادى الى خطأ: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -902,25 +914,25 @@ msgstr ""
"يجب تخصيص <button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> "
"لأسلوب الإطار هذا"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> مفقود"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "فشل تحميل السِمة \"%s\": %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "لا <%s> ضبط للسِمة \"%s\""
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -929,14 +941,14 @@ msgstr ""
"لا أسلوب إطار مضبوط لنوع النافذة \"%s\" في السِمة \"%s\"، اضف عنصر <window "
"type=\"%s\" style_set=\"whatever\"/>"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"الثوابت المعرفة من طرف المستخدم يجب أن تبدأ بحروف كبيرة، \"%s\" لا يبدأ بذلك"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "عُرِّف الثابت \"%s\" بالفعل"
@@ -1305,7 +1317,7 @@ msgstr "لا يُسمح بنص داخل العنصر <%s>"
msgid "<%s> specified twice for this theme"
msgstr "<%s> محدّد مرتان لهذه السِمة"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "فشل العثو على سِمة صحيحة في %s\n"
@@ -1507,9 +1519,6 @@ msgstr "قيمة ص كانت %d، تُرُقَِب %d"
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "حُلِّلت %d تعابير الإحداثيات في %g ثواني (بمعدّل %g ثوان)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "قائمة بملحقات المزج مفصولة بفاصلة"
#~ msgid "Switch to workspace 1"
#~ msgstr "انتقل إلى مساحة العمل 1"
@@ -1814,3 +1823,6 @@ msgstr "حُلِّلت %d تعابير الإحداثيات في %g ثواني (
#~ msgid "Error setting clutter plugin list: %s\n"
#~ msgstr "خطأ عند تحديد قائمة ملحقات كلتر: %s\n"
#~ msgid "Clutter Plugins"
#~ msgstr "ملحقات كلتر"

343
po/as.po
View File

@@ -8,13 +8,12 @@
msgid ""
msgstr ""
"Project-Id-Version: as\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
"cgi?product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-07-15 00:47+0000\n"
"PO-Revision-Date: 2012-07-16 12:57+0530\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-05-09 09:35+0000\n"
"PO-Revision-Date: 2012-03-12 14:26+0530\n"
"Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>\n"
"Language-Team: as_IN <kde-i18n-doc@kde.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -40,9 +39,10 @@ msgstr "বিভাজনক সোঁফালে দৰ্শন কৰক"
msgid ""
"Another compositing manager is already running on screen %i on display \"%s"
"\"."
msgstr "অন্য মিশ্ৰণ ব্যৱস্থাপক ইতিমধ্যে চলি আছে পৰ্দা %i প্ৰদৰ্শন \"%s\"।"
msgstr ""
"অন্য মিশ্ৰণ ব্যৱস্থাপক ইতিমধ্যে চলি আছে পৰ্দা %i প্ৰদৰ্শন \"%s\"।"
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "ঘন্টা ঘটনা"
@@ -51,43 +51,42 @@ msgstr "ঘন্টা ঘটনা"
msgid "Unknown window information request: %d"
msgstr "অজ্ঞাত উইন্ডো তথ্য অনুৰোধ: %d"
#: ../src/core/delete.c:114
#: ../src/core/delete.c:111
#, c-format
#| msgid "<tt>%s</tt> is not responding."
msgid "%s is not responding."
msgstr "%s এ প্ৰতিক্ৰিয়া কৰা নাই।"
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> এ প্ৰতিক্ৰিয়া কৰা নাই।"
#: ../src/core/delete.c:118
#: ../src/core/delete.c:114
msgid "Application is not responding."
msgstr "অনুপ্ৰয়োগ প্ৰতিক্ৰিয়া কৰা নাই।"
#: ../src/core/delete.c:123
#: ../src/core/delete.c:119
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"আপুনি অনুপ্ৰয়োগ চলি থাকিবলে অলপ সময় অপেক্ষা কৰিব পাৰে অথবা ইয়াকক সম্পূৰ্ণভাৱে "
"প্ৰস্থান কৰিবলে বাধ্য কৰিব পাৰে।"
"আপুনি অনুপ্ৰয়োগ চলি থাকিবলে অলপ সময় অপেক্ষা কৰিব পাৰে অথবা ইয়াকক সম্পূৰ্ণভাৱে প্ৰস্থান "
"কৰিবলে বাধ্য কৰিব পাৰে।"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Wait"
msgstr "অপেক্ষা কৰক (_W)"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Force Quit"
msgstr "বলপূৰ্বক বন্ধ কৰক (_F)"
#: ../src/core/display.c:380
#: ../src/core/display.c:387
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "মিশ্ৰণৰ বাবে সন্ধানহিন %s সম্প্ৰসাৰনৰ প্ৰয়োজন"
#: ../src/core/display.c:446
#: ../src/core/display.c:453
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "X উইন্ডো চিস্টেম প্ৰদৰ্শন '%s'খোলিব পৰা নগল \n"
#: ../src/core/keybindings.c:844
#: ../src/core/keybindings.c:852
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@@ -96,38 +95,39 @@ msgstr ""
"অন্য কোনো প্ৰগ্ৰামে ইতিমধ্যে কি' %s ক বাইন্ডিং হিচাপে পৰিৱৰ্তক %x ৰ সৈতে ব্যৱহাৰ "
"কৰি আছে\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "অধিবেশন ব্যৱস্থাপকৰ সৈতে সংযোগ বিচ্ছিন্ন কৰক"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "চলি থকা উইন্ডো ব্যৱস্থাপকক প্ৰতিস্থাপন কৰক"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "অধিবেশন ব্যৱস্থাপনাৰ ID উল্লেখ কৰক"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "ব্যৱহাৰৰ বাবে X প্ৰদৰ্শন"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "সংৰক্ষণ নথিপত্ৰৰ পৰা অধিবেশন আৰম্ভ কৰক"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "X কলসমূহ সংমিহলি কৰক"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "থীমৰ ডাইৰেকটৰি স্কেন কৰিব পৰা নগল: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
msgstr ""
"এটা থীম পোৱা নগল! সুনিশ্চিত হওক %s অস্তিত্ববান আৰু স্বাভাৱিক থীমসমূহ অন্তৰ্ভুক্ত কৰে।\n"
@@ -150,10 +150,10 @@ msgid "Print version"
msgstr "সংস্কৰণ প্ৰিন্ট কৰক"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "ব্যৱহাৰ কৰিবলে Mutter প্লাগিন"
msgid "Comma-separated list of compositor plugins"
msgstr "মিশ্ৰক প্লাগিনসমূহৰ কমা-পৃথকিত তালিকা"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -161,55 +161,57 @@ msgstr ""
"ক্ষতিগ্ৰস্ত অনুপ্ৰয়োগৰ ত্ৰুটি অগ্ৰাহ্য কৰাৰ প্ৰণালী নিষ্ক্ৰিয় কৰা হৈছে। কিছুমান অনুপ্ৰয়োগ "
"সম্ভৱত সঠিকৰূপে চলোৱা সম্ভৱ নহব।\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "GSettings কি' %s ৰ পৰা ফন্ট বিৱৰণ \"%s\" বিশ্লেষণ কৰিব নোৱাৰি\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
"modifier\n"
msgstr "সংৰূপ ডাটাবেইচত উপস্থিত \"%s\" মাউছ বুটাম পৰিবৰ্তকৰ বাবে বৈধ মানে নহয়\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1739
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
"\"%s\"\n"
msgstr "সংৰূপ ডাটাবেইচত উপলব্ধ \"%s\", \"%s\" কি-বাইন্ডিং ৰ ক্ষেত্ৰত বৈধ মান নহয়\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "কৰ্মস্থান %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "পৰ্দা %d প্ৰদৰ্শন '%s' ত অবৈধ\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
"replace option to replace the current window manager.\n"
msgstr ""
"পৰ্দা %d প্ৰদৰ্শন \"%s\" ৰ এটা উইন্ডো ব্যৱস্থাপক ইতিমধ্যে আছে; বৰ্তমানে উইন্ডো "
"ব্যৱস্থাপক পৰিবৰ্তন কৰোঁতে --replace বিকল্প প্ৰয়োগ কৰক।\n"
"পৰ্দা %d প্ৰদৰ্শন \"%s\" ৰ এটা উইন্ডো ব্যৱস্থাপক ইতিমধ্যে আছে; "
"বৰ্তমানে উইন্ডো ব্যৱস্থাপক পৰিবৰ্তন কৰোঁতে --replace বিকল্প প্ৰয়োগ কৰক।\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "উইন্ডো ব্যৱস্থাপকৰ নিৰ্বাচন গ্ৰহণ কৰোঁতে ব্যৰ্থ পৰ্দা %d প্ৰদৰ্শন \"%s\"\n"
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr ""
"উইন্ডো ব্যৱস্থাপকৰ নিৰ্বাচন গ্ৰহণ কৰোঁতে ব্যৰ্থ পৰ্দা %d প্ৰদৰ্শন \"%s\"\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "পৰ্দা %d প্ৰদৰ্শন \"%s\" ৰ এটা উইন্ডো ব্যৱস্থাপক ইতিমধ্যে আছে\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "পৰ্দা %d মুক্ত কৰিব পৰা নগল প্ৰদৰ্শন \"%s\"\n"
@@ -266,47 +268,47 @@ msgid ""
"These windows do not support &quot;save current setup&quot; and will have to "
"be restarted manually next time you log in."
msgstr ""
"এই উইন্ডোসমূহৰ দ্বাৰা &quot;save current setup&quot; সমৰ্থিত নহয় আৰু পৰৱৰ্তী বাৰ "
"লগিন কৰোতে আপুনি ইয়াক হস্তচালিতভাৱে পুনৰাম্ভ কৰিব লাগিব।"
"এই উইন্ডোসমূহৰ দ্বাৰা &quot;save current setup&quot; সমৰ্থিত নহয় আৰু পৰৱৰ্তী "
"বাৰ লগিন কৰোতে আপুনি ইয়াক হস্তচালিতভাৱে পুনৰাম্ভ কৰিব লাগিব।"
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "ডিবাগ লগ খোলিব পৰা নগল: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "fdopen() লগ নথিপত্ৰ %s খোলিব পৰা নগল: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "লগ নথিপত্ৰ %s খোলা হৈছে\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "ভাৰ্বোচ অৱস্থাৰ সমৰ্থন নোহোৱাকৈ Mutter কম্পাইল কৰা হৈছিল\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "উইন্ডো ব্যৱস্থাপক: "
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "উইন্ডো ব্যৱস্থাপকত বাগ: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "উইন্ডো ব্যৱস্থাপক সতৰ্কবাৰ্তা: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "উইন্ডো ব্যৱস্থাপক ত্ৰুটি: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7268
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -318,36 +320,36 @@ msgstr ""
#. We ignore mwm_has_resize_func because WM_NORMAL_HINTS is the
#. * authoritative source for that info. Some apps such as mplayer or
#. * xine disable resize via MWM but not WM_NORMAL_HINTS, but that
#. * leads to e.g. us not fullscreening their windows. Apps that set
#. * leads to e.g. us not fullscreening their windows. Apps that set
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:7933
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
"d x %d and max size %d x %d; this doesn't make much sense.\n"
msgstr ""
"উইন্ডো %s এ এটা MWM আভাস সংহতি কৰে এটা ইংগিত দি যে ইয়াক পুনৰ আকাৰ দিব কৰিব "
"নোৱাৰি, কিন্তু নূন্যতম আকাৰ %d x %d আৰু সৰ্বাধিক আকাৰ %d x %d সংহতি কৰে; ই বিশেষ "
"এটা সংজ্ঞা নিদিয়ে।\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "অনুপ্ৰয়োগ দ্বাৰা ভুল _NET_WM_PID %lu নিৰ্ধাৰিত হৈছে\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (%s ৰ উপৰত)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "অবৈধ WM_TRANSIENT_FOR উইন্ডো 0x%lx, %s ৰ বাবে নিৰ্ধাৰিত হৈছে।\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR window 0x%lx এ %s ৰ বাবে লুপ সৃষ্টি কৰিব।\n"
@@ -374,8 +376,11 @@ msgstr "বৈশিষ্ট %s window 0x%lx ত অন্তৰ্ভুক্
#: ../src/core/xprops.c:494
#, c-format
msgid "Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgstr "বৈশিষ্ট %s window 0x%lx ত তালিকাৰ উপাদান %d ৰ বাবে অবৈধ UTF-8 অন্তৰ্ভুক্ত কৰিছিল\n"
msgid ""
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgstr ""
"বৈশিষ্ট %s window 0x%lx ত তালিকাৰ উপাদান %d ৰ বাবে অবৈধ UTF-8 অন্তৰ্ভুক্ত "
"কৰিছিল\n"
#: ../src/mutter.desktop.in.h:1 ../src/mutter-wm.desktop.in.h:1
msgid "Mutter"
@@ -410,10 +415,22 @@ msgstr ""
"টাইটেলবাৰৰ লগত সংযুক্ত পোৱা যায় আৰু উপধায়ক উইন্ডো লগত আতৰোৱা হয়।"
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Live Hidden Windows"
msgstr "জীৱন্ত লুকাই থকা উইন্ডোসমূহ"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"লুকাই থকা উইন্ডোসমূহ (যেনে নূন্যতম উইন্ডোসমূহ আৰু বৰ্তমানক এৰি অন্য কৰ্মস্থানত থকা "
"উইন্ডোসমূহ) জীৱন্ত ৰখা হব নে।"
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "উইন্ডোসমূহক পৰ্দাৰ প্ৰান্তসমূহত এৰোতে প্ৰান্ত টাইলিং সামৰ্থবান কৰক"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@@ -423,11 +440,11 @@ msgstr ""
"সৰ্বোত্তম আকাৰ আৰু আনুভূমিকভাৱে পুনৰ আকাৰ প্ৰাপ্ত কৰে উপলব্ধ স্থানৰ অৰ্ধেক পূৰ্ণ কৰিবলে। "
"উপৰ পৰ্দা প্ৰান্তত উইন্ডোসমূহ ড্ৰপ কৰিলে সিহত সম্পূৰ্ণভাৱে সৰ্বোত্তম আকাৰ প্ৰাপ্ত কৰে।"
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces are managed dynamically"
msgstr "কৰ্মক্ষেত্ৰসমূহক চলমানভাৱে ব্যৱস্থাপনা কৰা হয়"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@@ -437,11 +454,11 @@ msgstr ""
"নিৰ্ধাৰণ কৰে (org.gnome.desktop.wm.preferences ত num-workspaces কি দ্বাৰা "
"নিৰ্ধাৰিত)।"
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Workspaces only on primary"
msgstr "প্ৰাথমিকত থকা কৰ্মক্ষেত্ৰসমূহ"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@@ -449,11 +466,11 @@ msgstr ""
"নিৰ্ধাৰণ কৰে যে কৰ্মস্থান অদল বদল সকলো মনিটৰৰ উইন্ডোৰ বাবে হব লাগে নে কেৱল "
"প্ৰাথমিক মনিটৰৰ উইন্ডোৰ বাবে হব লাগে।"
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "No tab popup"
msgstr "কোনো টেব পপআপ নাই"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@@ -461,11 +478,11 @@ msgstr ""
"উইন্ডো চক্ৰৰ বাবে পপআপ আৰু উজ্জ্বলকৰণ ফ্ৰেইমৰ ব্যৱহাৰ অসামৰ্থবান কৰা হব নে নিৰ্ধাৰণ "
"কৰে।"
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "ড্ৰেগ কৰিব পৰা সীমা প্ৰস্থ"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
@@ -473,11 +490,11 @@ msgstr ""
"ড্ৰেগ কৰিব পৰা সৰ্বমুঠ প্ৰস্থসমূহৰ পৰিমাণ। যদি থীমৰ দৃশ্যমান সীমা পৰ্যাপ্ত নহয়, এই মান "
"পূৰ্ণ কৰিবলে অদৃশ্য সীমাসমূহ।"
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Select window from tab popup"
msgstr "টেব পপআপৰ পৰা উইন্ডো বাছক"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Cancel tab popup"
msgstr "টেব পপআপ বাতিল কৰক"
@@ -677,7 +694,7 @@ msgstr "Mod4"
msgid "Mod5"
msgstr "Mod5"
#. Translators: This represents the size of a window. The first number is
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#.
#: ../src/ui/resizepopup.c:113
@@ -685,48 +702,48 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "ওপৰত"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "তলত"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "বাওঁফালে"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "সোঁফালে"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "ফ্ৰেইম জ্যামিতি দ্বাৰা \"%s\" পৰিমাপ নিৰ্ধাৰিত নহয়"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "ফ্ৰেইম জ্যামিতি দ্বাৰা \"%s\" পৰিমাপ \"%s\" প্ৰান্তৰ বাবে নিৰ্ধাৰিত নহয়"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "বুটামৰ এচপেক্ট অনুপাত %g যথাযথ নহয়"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "ফ্ৰেইম জ্যামিতি দ্বাৰা বুটামৰ মাপ নিৰ্ধাৰিত নহয়"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "গ্ৰেডিয়েন্টৰ ক্ষেত্ৰত দুটা ৰঙ নিৰ্ধাৰিত হোৱা আবশ্যক"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@@ -735,14 +752,15 @@ msgstr ""
"GTK স্বনিৰ্বাচিত ৰঙ ধাৰ্য্যৰ ব্ৰেকেটত ৰঙ নাম আৰু ফলবেক থাকিব লাগিব, উদাহৰনস্বৰুপে "
"gtk:custom(foo,bar); \"%s\" ক বিশ্লেষণ কৰিব নোৱাৰে"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
"_ are valid"
msgstr "gtk:custom ৰ color_name প্ৰাচলত অবৈধ আখৰ '%c', কেৱল A-Za-z0-9-_ সমূহ বৈধ"
msgstr ""
"gtk:custom ৰ color_name প্ৰাচলত অবৈধ আখৰ '%c', কেৱল A-Za-z0-9-_ সমূহ বৈধ"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@@ -751,7 +769,7 @@ msgstr ""
"Gtk:custom বিন্যাস হল \"gtk:custom(color_name,fallback)\", \"%s\" বিন্যাসত খাপ "
"নাখায়"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -760,7 +778,7 @@ msgstr ""
"GTK ৰঙ ধাৰ্য্যকৰণৰ অৱস্থা ব্ৰেকেটত থাকিব লাগিব, উদাহৰনস্বৰুপে gtk:fg[NORMAL] যত "
"NORMAL হল অৱস্থা; বিশ্লেষণ কৰিব নোৱাৰি \"%s\""
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -769,71 +787,74 @@ msgstr ""
"GTK ৰঙ ধাৰ্য্যকৰণৰ অৱস্থাৰ পিছত এটা বন্ধ ব্ৰেকেট থাকিব লাগিব, উদাহৰনস্বৰুপে gtk:fg"
"[NORMAL] যত NORMAL হল অৱস্থা; বিশ্লেষণ কৰিব নোৱাৰি \"%s\""
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "ৰঙ ধাৰ্যকৰণত অৱস্থা \"%s\" বোধগম্য নহয়"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "ৰঙ ধাৰ্য্যকৰণত ৰঙৰ উপাদান \"%s\" বোধগম্য নহয়"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
"format"
msgstr "ব্লেন্ড বিন্যাস \"blend/bg_color/fg_color/alpha\", \"%s\" বিন্যাসৰ সৈতে খাপ নাখায়"
msgstr ""
"ব্লেন্ড বিন্যাস \"blend/bg_color/fg_color/alpha\", \"%s\" বিন্যাসৰ সৈতে খাপ নাখায়"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "ব্লেন্ড কৰা ৰঙলে আল্ফা মান \"%s\" বিশ্লেষণ কৰিব পৰা নগল"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "ব্লেন্ড কৰা ৰঙলে আল্ফা মান \"%s\" 0.0 আৰু 1.0 ৰ মাজত নহয়"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "ছায়াৰ বিন্যাস \"shade/base_color/factor\", \"%s\" বিন্যাসৰ সৈতে খাপ নাখায়"
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"ছায়াৰ বিন্যাস \"shade/base_color/factor\", \"%s\" বিন্যাসৰ সৈতে খাপ নাখায়"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "ছায়াযুক্ত ৰঙৰ ক্ষেত্ৰত ছায়াৰ মাপ \"%s\" বিশ্লেষণ কৰিব পৰা নগল"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "ছায়াযুক্ত ৰঙৰ ক্ষেত্ৰত ছায়াৰ মান \"%s\" ঋণাত্মক"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "\"%s\" ৰঙ বিশ্লেষণ কৰিব পৰা নগল"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "অক্ষ অভিব্যক্তিয়ে '%s' আখৰ অন্তৰ্ভুক্ত কৰে যাৰ ব্যৱহাৰ অনুমোদিত নহয়"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "অক্ষ অভিব্যক্তিয়ে '%s' দশমিক সংখ্যা অন্তৰ্ভুক্ত কৰে যি বিশ্লেষণ কৰিব পৰা নগল"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "অক্ষ অভিব্যক্তিয়ে '%s' পূৰ্ণ সংখ্যা অন্তৰ্ভুক্ত কৰে যি বিশ্লেষণ কৰিব পৰা নগল"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -841,37 +862,40 @@ msgid ""
msgstr ""
"অক্ষ অভিব্যক্তিয়ে এই লিখনীৰ আৰম্ভণি স্থানত অজ্ঞাত অপাৰেটৰ অন্তৰ্ভুক্ত কৰিছিল: \"%s\""
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "অক্ষ অভিব্যক্তি ৰিক্ত অথবা বোধগম্য নহয়"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "অক্ষ অভিব্যক্তিয়ে শূণ্য দ্বাৰা ভাগ কৰাৰ অবস্থা উৎপন্ন কৰে"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid "Coordinate expression tries to use mod operator on a floating-point number"
msgstr "অক্ষ অভিব্যক্তিয়ে এটা দশমিক সংখ্যাৰ উপৰত mod অপাৰেটৰ ব্যৱহাৰ কৰাৰ চেষ্টা কৰে "
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr ""
"অক্ষ অভিব্যক্তিয়ে এটা দশমিক সংখ্যাৰ উপৰত mod অপাৰেটৰ ব্যৱহাৰ কৰাৰ চেষ্টা কৰে "
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "অক্ষ অভিব্যক্তিৰ এটা \"%s\" অপাৰেটৰ আছে যত এটা অপাৰেন্ডৰ আশা কৰা হৈছিল"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "অক্ষ অভিব্যক্তিৰ এটা অপাৰেন্ড আছিল যত এটা অপোৰেটৰৰ আশা কৰা হৈছিল"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "অক্ষ অভিব্যক্তি এটা অপাৰেন্ডেৰ পৰিবৰ্তে অপাৰেটৰ দি সমাপ্ত হৈছে"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -880,37 +904,37 @@ msgstr ""
"অক্ষ অভিব্যক্তিৰ ক্ষেত্ৰত \"%c\" অপাৰেটৰেৰ পিছত \"%c\" অপাৰেটৰ আছে আৰু দুটাৰ মাজত "
"কোনো অপাৰেন্ড উপস্থিত নাই"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "অক্ষ অভিব্যক্তিৰ অজ্ঞাত চলক অথবা ধ্ৰুৱক \"%s\" আছিল"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "অক্ষ অভিব্যক্তিৰ বিশ্লেষকে বাফাৰৰ সীমা পাৰ কৰিছে।"
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "অক্ষ অভিব্যক্তিৰ কোনো খোলা ব্ৰেকেট নথকা এটা বন্ধ ব্ৰেকেট আছিল"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "অক্ষ অভিব্যক্তিৰ কোনো বন্ধ ব্ৰেকেট নথকা এটা খোলা ব্ৰেকেট আছিল"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "অক্ষ অভিব্যক্তিৰ কোনো অপাৰেটৰ অথবা অপাৰেন্ড উপস্থিত নাই"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "থীমে এটা অভিব্যক্তি অন্তৰ্ভুক্ত কৰিছিল যাৰ ফলত এটা ত্ৰুটি হৈছে: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -919,37 +943,40 @@ msgstr ""
"এই ফ্ৰেইম শৈলীৰ বাবে <button function=\"%s\" state=\"%s\" draw_ops=\"whatever"
"\"/> উল্লেখ কৰা আবশ্যক"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> সন্ধানহিন"
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> সন্ধানহিন"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "\"%s\" থীম ল'ড কৰিব পৰা নগল: %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "\"%s\" থীমৰ বাবে <%s> সংহিত নাই"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
"type=\"%s\" style_set=\"whatever\"/> element"
msgstr ""
"থীম \"%s\" ত উইন্ডো ধৰণ \"%s\" ৰ বাবে কোনো ফ্ৰেইম শৈলী সংহিত নাই, এটা <window "
"type=\"%s\" style_set=\"whatever\"/> উপাদন যোগ কৰক"
"থীম \"%s\" ত উইন্ডো ধৰণ \"%s\" ৰ বাবে কোনো ফ্ৰেইম শৈলী সংহিত নাই, এটা "
"<window type=\"%s\" style_set=\"whatever\"/> উপাদন যোগ কৰক"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr "ব্যৱহাৰকাৰী-বিৱৰিত ধ্ৰুৱকসমূহ এটা ডাঙৰ ফলাৰ সৈতে আৰম্ভ হব লাগিব; \"%s\" নহয়"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "ধ্ৰুৱক \"%s\" ইতিমধ্যে বিৱৰিত"
@@ -1005,7 +1032,8 @@ msgstr "\"%s\" ক দশমিক সংখ্যা ৰূপে বিশ্
#: ../src/ui/theme-parser.c:680 ../src/ui/theme-parser.c:708
#, c-format
msgid "Boolean values must be \"true\" or \"false\" not \"%s\""
msgstr "বুলিয়ান মান \"true\" অথবা \"false\" হোৱা আবশ্যক, \"%s\" ব্যৱহাৰ কৰিব পৰা নগল"
msgstr ""
"বুলিয়ান মান \"true\" অথবা \"false\" হোৱা আবশ্যক, \"%s\" ব্যৱহাৰ কৰিব পৰা নগল"
#: ../src/ui/theme-parser.c:735
#, c-format
@@ -1015,7 +1043,8 @@ msgstr "কোণ 0.0ৰ পৰা 360.0 ৰ মাজত হব লাগিব
#: ../src/ui/theme-parser.c:798
#, c-format
msgid "Alpha must be between 0.0 (invisible) and 1.0 (fully opaque), was %g\n"
msgstr "আলফাৰ মান 0.0 (অদৃশ্য) ৰ পৰা 1.0 (সম্পূৰ্ণ অস্বচ্ছ) ৰ মাজত হব লাগিব, %g উল্লিখিত\n"
msgstr ""
"আলফাৰ মান 0.0 (অদৃশ্য) ৰ পৰা 1.0 (সম্পূৰ্ণ অস্বচ্ছ) ৰ মাজত হব লাগিব, %g উল্লিখিত\n"
#: ../src/ui/theme-parser.c:863
#, c-format
@@ -1213,7 +1242,8 @@ msgstr ""
#: ../src/ui/theme-parser.c:3161
#, c-format
msgid "Should not have \"resize\" attribute on <%s> element for maximized states"
msgid ""
"Should not have \"resize\" attribute on <%s> element for maximized states"
msgstr "সৰ্বোচ্চ অৱস্থাসমূহৰ বাবে <%s> উপাদানত \"resize\" বৈশিষ্ট থাকিব নালাগিব"
#: ../src/ui/theme-parser.c:3175 ../src/ui/theme-parser.c:3222
@@ -1262,8 +1292,8 @@ msgid ""
"\"version\" attribute cannot be used in metacity-theme-1.xml or metacity-"
"theme-2.xml"
msgstr ""
"\"version\" বৈশিষ্টক metacity-theme-1.xml অথবা metacity-theme-2.xml ত ব্যৱহাৰ "
"কৰিব নোৱাৰি"
"\"version\" বৈশিষ্টক metacity-theme-1.xml অথবা metacity-theme-2.xml ত "
"ব্যৱহাৰ কৰিব নোৱাৰি"
#: ../src/ui/theme-parser.c:3530
#, c-format
@@ -1277,7 +1307,8 @@ msgstr "থীমৰ বহিৰ্তম উপাদান <metacity_theme>
#: ../src/ui/theme-parser.c:3582
#, c-format
msgid "Element <%s> is not allowed inside a name/author/date/description element"
msgid ""
"Element <%s> is not allowed inside a name/author/date/description element"
msgstr "এটা নাম/লেখক/তাৰিখ/বিৱৰণ উপাদানৰ ভিতৰত <%s> উপাদানৰ অনুমতি নাই"
#: ../src/ui/theme-parser.c:3587
@@ -1287,7 +1318,8 @@ msgstr "এটা <constant> উপাদানৰ ভিতৰত <%s> উপ
#: ../src/ui/theme-parser.c:3599
#, c-format
msgid "Element <%s> is not allowed inside a distance/border/aspect_ratio element"
msgid ""
"Element <%s> is not allowed inside a distance/border/aspect_ratio element"
msgstr "দুৰত্ব/সীমা/এচপেক্ট অনুপাত এটা <%s> উপাদানৰ ভিতৰত অনুমোদিত নহয় (_r)"
#: ../src/ui/theme-parser.c:3621
@@ -1321,7 +1353,7 @@ msgstr "<%s> উপাদানৰ ভিতৰত কোনো লিখনী
msgid "<%s> specified twice for this theme"
msgstr "<%s> এই থীমৰ বাবে দুবাৰ ধাৰ্য্য কৰা হৈছে"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "থীম %s ৰ বাবে এটা বৈধ নথিপত্ৰ সন্ধান কৰিবলে ব্যৰ্থ\n"
@@ -1483,9 +1515,9 @@ msgid ""
"seconds wall clock time including X server resources (%g milliseconds per "
"frame)\n"
msgstr ""
"%d ফ্ৰেইমসমূহক %g ক্লাএন্ট-কাষ ছেকেণ্ড (%g মিলিছেকেণ্ড প্ৰতি ফ্ৰেইম) আৰু %g ছেকেণ্ড "
"ৱাল ঘড়ী সময় X চাৰ্ভাৰ সম্পদসমূহ (%g মিলিছেকেণ্ড প্ৰতি ফ্ৰেইম) অন্তৰ্ভুক্ত কৰি অকাঁ "
"হৈছিল\n"
"%d ফ্ৰেইমসমূহক %g ক্লাএন্ট-কাষ ছেকেণ্ড (%g মিলিছেকেণ্ড প্ৰতি ফ্ৰেইম) আৰু %"
"g ছেকেণ্ড ৱাল ঘড়ী সময় X চাৰ্ভাৰ সম্পদসমূহ (%g মিলিছেকেণ্ড প্ৰতি ফ্ৰেইম) অন্তৰ্ভুক্ত "
"কৰি অকাঁ হৈছিল\n"
#: ../src/ui/theme-viewer.c:1266
msgid "position expression test returned TRUE but set error"
@@ -1524,19 +1556,6 @@ msgstr "y ৰ মান %d, %d প্ৰত্যাশিত"
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "%d অক্ষ অভিব্যক্তিসমূহ %g ছেকেণ্ডত বিশ্লেষণ কৰা হৈছে (গড় %g ছেকেণ্ড)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "মিশ্ৰক প্লাগিনসমূহৰ কমা-পৃথকিত তালিকা"
#~ msgid "Live Hidden Windows"
#~ msgstr "জীৱন্ত লুকাই থকা উইন্ডোসমূহ"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "লুকাই থকা উইন্ডোসমূহ (যেনে নূন্যতম উইন্ডোসমূহ আৰু বৰ্তমানক এৰি অন্য কৰ্মস্থানত থকা "
#~ "উইন্ডোসমূহ) জীৱন্ত ৰখা হব নে।"
#~ msgid "Close Window"
#~ msgstr "উইন্ডো বন্ধ কৰক"

327
po/be.po
View File

@@ -2,10 +2,9 @@
msgid ""
msgstr ""
"Project-Id-Version: mutter.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-07-15 00:47+0000\n"
"PO-Revision-Date: 2012-07-15 11:34+0300\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-26 22:15+0300\n"
"PO-Revision-Date: 2012-02-26 22:23+0300\n"
"Last-Translator: Ігар Грачышка <ihar.hrachyshka@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n"
@@ -38,7 +37,7 @@ msgid ""
msgstr ""
"Іншы кампазітны кіраўнік вокнаў ужо абслугоўвае экран %i дысплея \"%s\"."
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "Падзея з сігналам"
@@ -47,42 +46,42 @@ msgstr "Падзея з сігналам"
msgid "Unknown window information request: %d"
msgstr "Невядомы запыт інфармацыі пра акно: %d"
#: ../src/core/delete.c:114
#: ../src/core/delete.c:111
#, c-format
msgid "%s is not responding."
msgstr "%s не адказвае на запыты."
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> не адказвае на запыты."
#: ../src/core/delete.c:118
#: ../src/core/delete.c:114
msgid "Application is not responding."
msgstr "Праграма не адказвае на запыты."
#: ../src/core/delete.c:123
#: ../src/core/delete.c:119
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr ""
"Вы можаце альбо крыху пачакаць адказу, альбо змусіць праграму да выхаду."
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Wait"
msgstr "_Пачакаць"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Force Quit"
msgstr "_Змусіць да выхаду"
#: ../src/core/display.c:380
#: ../src/core/display.c:361
#, c-format
msgid "Missing %s extension required for compositing"
msgstr ""
"Адсутнічае пашырэнне \"%s\", патрэбнае для ажыццяўлення кампазітнага вываду"
#: ../src/core/display.c:446
#: ../src/core/display.c:427
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Не ўдалося адкрыць X-дысплей аконнай сістэмы \"%s\"\n"
#: ../src/core/keybindings.c:844
#: ../src/core/keybindings.c:852
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@@ -91,36 +90,36 @@ msgstr ""
"Нейкая іншая праграма ўжо выкарыстоўвае як скарот клавішу %s з "
"мадыфікатарамі %x\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "Выключыць злучэнне з кіраўніком сеансаў"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "Замяніць дзейнага кіраўніка вокнаў"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "Вызначыць ідэнтыфікатар для кіравання сеансам"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "Патрэбны X-дысплей"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "Ініцыяваць сеанс з файла"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "Сінхронна выконваць выклікі X-сістэмы"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Не ўдалося праглядзець каталог з матывамі аздаблення: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -149,10 +148,10 @@ msgid "Print version"
msgstr "Вывесці нумар версіі праграмы"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "Патрэбны плугін Mutter"
msgid "Comma-separated list of compositor plugins"
msgstr "Спіс плугінаў кампазітнага вываду, падзеленых коскамі"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1069
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -160,12 +159,12 @@ msgstr ""
"Асаблівыя паводзіны для некаторых хібных праграм выключаныя. Некаторыя "
"праграмы могуць перастаць працаваць, як мае быць.\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1144
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "Не ўдалося разабраць азначэнне шрыфту \"%s\" з GSettings-ключа %s\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1210
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@@ -174,7 +173,7 @@ msgstr ""
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
"мадыфікатар мышынай кнопкі\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1722
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -183,17 +182,17 @@ msgstr ""
"Значэнне \"%s\", знойдзенае ў базе канфігурацыйных даных, не азначае "
"клавіятурны скарот \"%s\"\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1819
#, c-format
msgid "Workspace %d"
msgstr "Прастора працы %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Экран %d на дысплеі \"%s\" хібны\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -202,19 +201,19 @@ msgstr ""
"Экран %d на дысплеі \"%s\" ужо мае аконнага кіраўніка. Каб замяніць яго "
"новым, дадайце опцыю --replace.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr ""
"Не ўдалося пераняць вылучэнне кіраўніка вокнаў для экрана %d дысплея \"%s\"\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Экран %d на дысплеі \"%s\" ужо мае кіраўніка вокнаў\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Не ўдалося вызваліць экран %d на дысплеі \"%s\"\n"
@@ -275,46 +274,46 @@ msgstr ""
"Гэтыя вокны не падтрымліваюць функцыі захавання дзейнага ладу працы, і таму "
"іх прыйдзецца запусціць уручную пасля наступнага ўваходу ў сістэму."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Не ўдалося адкрыць адладачны журнал: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Не ўдалося выканаць fdopen() для журнальнага файла %s: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "Журнальны файл %s адкрыты\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr ""
"Праграма \"Mutter\" была скампіляваная без падтрымкі падрабязнага "
"пратакаліравання\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "Кіраўнік вокнаў: "
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "Хіба ў кіраўніку вокнаў: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "Перасцярога ад кіраўніка вокнаў: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "Памылка кіраўніка вокнаў: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7224
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -330,7 +329,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:7887
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@@ -340,22 +339,22 @@ msgstr ""
"памеру, але разам з гэтым прызначыла для сябе мінімальны памер %d x %d і "
"максімальны памер %d x %d. Такія паводзіны не маюць сэнсу.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Праграма прызначыла памылковае значэнне _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (на %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "Для %2$s вызначана хібнае акно WM_TRANSIENT_FOR 0x%1$lx.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR акно 0x%lx для %s стварыла б цыкл.\n"
@@ -417,25 +416,26 @@ msgid ""
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
msgid "Live Hidden Windows"
msgstr "Дзейныя схаваныя вокны"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"Вызначае, ці трэба захоўваць дзейнымі схаваныя вокны (напрыклад, "
"мінімалізаваныя або вокны з іншых прастор працы)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
@@ -483,6 +483,50 @@ msgstr "Закрыць выплыўное акенца"
msgid "Usage: %s\n"
msgstr "Правілы выкарыстання: %s\n"
#: ../src/ui/frames.c:1157
msgid "Close Window"
msgstr "Закрыць акно"
#: ../src/ui/frames.c:1160
msgid "Window Menu"
msgstr "Меню акна"
#: ../src/ui/frames.c:1163
msgid "Minimize Window"
msgstr "Мінімалізаваць акно"
#: ../src/ui/frames.c:1166
msgid "Maximize Window"
msgstr "Максімалізаваць акно"
#: ../src/ui/frames.c:1169
msgid "Restore Window"
msgstr "Аднавіць былы памер акна"
#: ../src/ui/frames.c:1172
msgid "Roll Up Window"
msgstr "Скруціць акно ў загаловак"
#: ../src/ui/frames.c:1175
msgid "Unroll Window"
msgstr "Раскруціць акно з загалоўка"
#: ../src/ui/frames.c:1178
msgid "Keep Window On Top"
msgstr "Трымаць акно над астатнімі"
#: ../src/ui/frames.c:1181
msgid "Remove Window From Top"
msgstr "Прыбраць акно з верху"
#: ../src/ui/frames.c:1184
msgid "Always On Visible Workspace"
msgstr "Заўсёды на бачнай прасторы працы"
#: ../src/ui/frames.c:1187
msgid "Put Window On Only One Workspace"
msgstr "Змясціць акно на адзінай прасторы працы"
#. Translators: Translate this string the same way as you do in libwnck!
#: ../src/ui/menu.c:69
msgid "Mi_nimize"
@@ -682,76 +726,76 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "верхнюю"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "ніжнюю"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "левую"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "правую"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "апісанне геаметрыі рамкі акна не вызначае %s граніцу"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr ""
"апісанне геаметрыі рамкі акна не вызначае %s граніцу для аблямоўкі \"%s\""
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "Прапорцыі кнопкі %g не маюць сэнсу"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Апісанне геаметрыі рамкі акна не вызначае памер кнопак"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Градыент мусіць мець прынамсі два колеры"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
"parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
msgstr ""
"Уласная спецыфікацыя колеру GTK мусіць змяшчаць назвы асноўнага і запаснога "
"колераў у дужках, напрыклад, gtk:custom(foo,bar). Не ўдалося разабраць \"%s\""
"Уласная спецыфікацыя колеру GTK мусіць змяшчаць назвы асноўнага і запаснога колераў "
"у дужках, напрыклад, gtk:custom(foo,bar). Не ўдалося разабраць \"%s\""
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
"_ are valid"
msgstr ""
"Хібны знак \"%c\" у параметры color_name спецыфікацыі gtk:custom, дазволеныя "
"толькі A-Za-z0-9-_"
"Хібны знак \"%c\" у параметры color_name спецыфікацыі gtk:custom, дазволеныя толькі A-Za-z0-9-"
"_"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
"fit the format"
msgstr ""
"Фармат gtk:custom: \"gtk:custom(назваолеруапасны_колер)\"; \"%s\" не "
"адпавядае фармату"
"Фармат gtk:custom: \"gtk:custom(назваолеруапасны_колер)\"; \"%s\" не адпавядае "
"фармату"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -760,7 +804,7 @@ msgstr ""
"Спецыфікацыя колеру GTK мусіць мець стан у квадратных дужках, напрыклад, gtk:"
"fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s\""
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -770,17 +814,17 @@ msgstr ""
"напрыклад, gtk:fg[NORMAL], дзе NORMAL - гэта стан. Не ўдалося разабраць \"%s"
"\""
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Незразумелы стан \"%s\" у спецыфікацыі колеру"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Незразумелы складнік колеру \"%s\" у спецыфікацыі колеру"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -789,58 +833,58 @@ msgstr ""
"Фармат змяшанага колеру - \"blend/bg_color/fg_color/alpha\". \"%s\" не "
"адпавядае фармату."
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Не ўдалося разабраць значэнне альфа \"%s\" ў змяшаным колеры"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr ""
"Значэнне альфа \"%s\" у змяшаным колеры не ўваходзіць у дыяпазон ад 0.0 да "
"1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"Фармат ценю - \"shade/base_color/factor\". \"%s\" не адпавядае фармату."
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Не ўдалося разабраць каэфіцыент ценю \"%s\" у зацененым колеры"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Каэфіцыент ценю \"%s\" у зацененым колеры адмоўны"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Не ўдалося разабраць колер \"%s\""
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Каардынатны выраз змяшчае забаронены знак \"%s\""
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "Каардынатны выраз змяшчае незразумелы лік з нефіксаванай коскай \"%s\""
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Каардынатны выраз змяшчае незразумелы цэлы лік \"%s\""
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -848,17 +892,17 @@ msgid ""
msgstr ""
"Каардынатны выраз змяшчае невядомы аператар у пачатку гэтага тэксту: \"%s\""
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Каардынатны выраз пусты ці незразумелы"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Каардынатны выраз вымагае дзялення на нуль"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
@@ -866,24 +910,24 @@ msgstr ""
"Каардынатны выраз спрабуе ўжыць аператар дзялення па модулі для ліку з "
"нефіксаванай коскай"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr ""
"У каардынатным выразе ўжыты аператар \"%s\" там, дзе мусіў быць аперанд"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "У каардынатным выразе ўжыты аперанд там, дзе мусіў быць аператар"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Каардынатны выраз заканчваецца аператарам, а не аперандам"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -892,41 +936,41 @@ msgstr ""
"У каардынатным выразе за аператарам \"%c\" ідзе аператар \"%c\", але паміж "
"імі няма аперанда"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "У каардынатным выразе невядомая зменная альбо канстанта \"%s\""
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Прылада для разбору каардынатных выразаў перапоўніла свой буфер."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr ""
"У каардынатным выразе ўжытыя дужкі, якія закрываюцца, але няма тых, якія б "
"адкрываліся"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr ""
"У каардынатным выразе ўжытыя дужкі, якія адкрываюцца, але няма тых, якія б "
"закрываліся"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "У каардынатным выразе няма ні аператараў, ні аперандаў"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Матыў аздаблення змяшчае выраз, які стаў прычынай памылкі: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -935,42 +979,41 @@ msgstr ""
"Для гэтага стылю рамкі трэба вызначыць <button function=\"%s\" state=\"%s\" "
"draw_ops=\"whatever\"/>"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Няма <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"што-небудзь\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Не ўдалося загрузіць матыў аздаблення \"%s\": %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "Для матыву аздаблення \"%2$s\" не прызначана <%1$s>"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
"type=\"%s\" style_set=\"whatever\"/> element"
msgstr ""
"Стыль рамкі не вызначаны для вокнаў тыпу \"%s\" для матыву аздаблення \"%s"
"\". Дадайце <window type=\"%s\" style_set=\"штосьці\"/>."
"Стыль рамкі не вызначаны для вокнаў тыпу \"%s\" для матыву аздаблення \"%s\". Дадайце <window "
"type=\"%s\" style_set=\"штосьці\"/>."
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"Назвы канстантаў, вызначаных карыстальнікам, мусяць пачынацца з вялікай "
"літары. \"%s\" не адпавядае гэтаму патрабаванню."
"Назвы канстантаў, вызначаных карыстальнікам, мусяць пачынацца з вялікай літары. \"%s\" не адпавядае гэтаму патрабаванню."
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Канстанта \"%s\" ужо азначана"
@@ -1297,9 +1340,7 @@ msgstr ""
#: ../src/ui/theme-parser.c:3530
#, c-format
msgid "Theme requires version %s but latest supported theme version is %d.%d"
msgstr ""
"Матыў аздаблення патрабуе версію %s, але апошняя версія матываў, якая "
"падтрымліваецца, - гэта %d.%d"
msgstr "Матыў аздаблення патрабуе версію %s, але апошняя версія матываў, якая падтрымліваецца, - гэта %d.%d"
#: ../src/ui/theme-parser.c:3562
#, c-format
@@ -1356,7 +1397,7 @@ msgstr "Выкарыстанне тэксту ўнутры элемента <%s>
msgid "<%s> specified twice for this theme"
msgstr "<%s> двойчы вызначаны для гэтага матыву аздаблення"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Памылка пошуку правільнага файла для матыву аздаблення %s\n"
@@ -1560,49 +1601,3 @@ msgstr "Y-значэнне было %d, а чакалася %d"
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr ""
"%d каардынатных выразаў разабраныя за %g секунд (у сярэднім %g секунд)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "Спіс плугінаў кампазітнага вываду, падзеленых коскамі"
#~ msgid "Live Hidden Windows"
#~ msgstr "Дзейныя схаваныя вокны"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "Вызначае, ці трэба захоўваць дзейнымі схаваныя вокны (напрыклад, "
#~ "мінімалізаваныя або вокны з іншых прастор працы)."
#~ msgid "Close Window"
#~ msgstr "Закрыць акно"
#~ msgid "Window Menu"
#~ msgstr "Меню акна"
#~ msgid "Minimize Window"
#~ msgstr "Мінімалізаваць акно"
#~ msgid "Maximize Window"
#~ msgstr "Максімалізаваць акно"
#~ msgid "Restore Window"
#~ msgstr "Аднавіць былы памер акна"
#~ msgid "Roll Up Window"
#~ msgstr "Скруціць акно ў загаловак"
#~ msgid "Unroll Window"
#~ msgstr "Раскруціць акно з загалоўка"
#~ msgid "Keep Window On Top"
#~ msgstr "Трымаць акно над астатнімі"
#~ msgid "Remove Window From Top"
#~ msgstr "Прыбраць акно з верху"
#~ msgid "Always On Visible Workspace"
#~ msgstr "Заўсёды на бачнай прасторы працы"
#~ msgid "Put Window On Only One Workspace"
#~ msgstr "Змясціць акно на адзінай прасторы працы"

256
po/bg.po
View File

@@ -11,15 +11,15 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-04 07:13+0300\n"
"PO-Revision-Date: 2012-07-04 07:12+0300\n"
"POT-Creation-Date: 2012-03-12 06:45+0200\n"
"PO-Revision-Date: 2012-03-12 06:45+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
@@ -42,7 +42,7 @@ msgid ""
"\"."
msgstr "На екран %i от дисплея „%s“ вече има мениджър за наслагване."
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "Събитие за звънец"
@@ -76,12 +76,12 @@ msgstr "Из_чакване"
msgid "_Force Quit"
msgstr "_Принудително спиране"
#: ../src/core/display.c:380
#: ../src/core/display.c:361
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Липсва разширението „%s“, необходимо за наслагване"
#: ../src/core/display.c:446
#: ../src/core/display.c:427
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Неуспех при отварянето на дисплея на X Window „%s“\n"
@@ -93,38 +93,38 @@ msgid ""
"binding\n"
msgstr "Някоя друга програма използва бързия клавиш %s с модификатори %x\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "Прекъсване на връзката към мениджъра на сесиите"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "Замяна на текущия мениджър на прозорци"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "Определяне на идентификатор за управлението на сесии"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "X дисплеят, който да се използва"
# Ако „запазено“ не се членува, низът се събира на един ред без
# пренасяне.
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "Инициализиране на сесия от файл със запазено състояние"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "Извикванията на X да са синхронни"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Неуспех при сканирането на папката с темите: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -153,10 +153,10 @@ msgid "Print version"
msgstr "Отпечатване на версията на програмата"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "Приставка, която да се ползва"
msgid "Comma-separated list of compositor plugins"
msgstr "Списък с приставки за мениджъра за наслагването разделени с „,“"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -164,14 +164,14 @@ msgstr ""
"Триковете за развалените програми са изключени. Някои програми могат да са с "
"неправилно поведение.\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr ""
"Описанието на шрифт „%s“ от ключа на GSettings — %s, не може да бъде "
"анализирано\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@@ -180,7 +180,7 @@ msgstr ""
"„%s“, който е открит в базата от данни с настройките, не е валиден "
"модификатор на бутон на мишката\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1739
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -189,17 +189,17 @@ msgstr ""
"Низът „%s“ открит в базата от данни с настройки е невалиден за стойност на "
"клавишната комбинация „%s“\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "Работен плот %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Екранът %d на дисплей „%s“ е невалиден\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -208,7 +208,7 @@ msgstr ""
"Екранът %d на дисплей „%s“ вече има мениджър на прозорци; пробвайте да го "
"замените с опцията --replace.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
@@ -216,12 +216,12 @@ msgstr ""
"Неуспех при получаването на избрания мениджър за прозорци на екран %d, "
"дисплей „%s“\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Екран %d на дисплей „%s“ вече има мениджър за прозорци\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Неуспех при отстъпването на екран %d на дисплей „%s“\n"
@@ -282,44 +282,44 @@ msgstr ""
"Тези прозорци не поддържат операцията по записване на текущото състояние и "
"ще трябва да се стартират ръчно при следващото ви влизане."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Неуспех при отварянето на дневника за изчистване на грешки: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Неуспех при изпълнението на fdopen() върху журналния файл %s: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "Отворен е дневника %s\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter е компилиран без поддръжка на подробен режим\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "Мениджър на прозорци: "
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "Грешка в мениджъра на прозорци: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "Предупреждение от мениджъра на прозорци: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "Грешка от мениджъра на прозорци: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7224
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -335,7 +335,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:7887
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@@ -345,22 +345,22 @@ msgstr ""
"променя, но едновременно с това указва минимален размер %d x %d и максимален "
"размер %d x %d. Това не е смислено.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Приложението зададе неверен _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (от %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "За %2$s е указан неправилен WM_TRANSIENT_FOR, прозорец 0x%1$lx.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR за прозорец 0x%lx за %s ще зацикли.\n"
@@ -428,12 +428,24 @@ msgstr ""
"отделни и да имат собствена заглавна лента."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Live Hidden Windows"
msgstr "Обновяване на скритите прозорци"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"Дали скритите прозорци (т.е. минимизираните или на другите плотове) да се "
"обновяват."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Включване на прилепването и максимизирането на прозорците по границите на "
"екрана"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@@ -444,11 +456,11 @@ msgstr ""
"на екрана. При поставянето им край горната граница прозорците ще се "
"максимзират изцяло."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces are managed dynamically"
msgstr "Динамично управление на работните места"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@@ -458,11 +470,11 @@ msgstr ""
"е установено число (зададено чрез ключа „num-workspaces“ в org.gnome.desktop."
"wm.preferences)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Workspaces only on primary"
msgstr "Работни плотове само на основния монитор"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@@ -470,11 +482,11 @@ msgstr ""
"Дали смяната на работни плотове да се извършва на всички монитори или само "
"на основния."
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "No tab popup"
msgstr "Без изскачащ прозорец при обхождане"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@@ -482,11 +494,11 @@ msgstr ""
"Дали отбелязването на рамка и изскачащият прозорец при обхождане на "
"прозорците да се изключат."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Широчина на границата за влачене"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
@@ -494,11 +506,11 @@ msgstr ""
"Общ размер на границите за влачене. Ако видимите граници на темата са по-"
"малки, се добавят невидими граници, за да се достигне тази величина."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Select window from tab popup"
msgstr "Избиране при обхождане чрез изскачащ прозорец"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Cancel tab popup"
msgstr "Без изскачащ прозорец при обхождане"
@@ -507,6 +519,50 @@ msgstr "Без изскачащ прозорец при обхождане"
msgid "Usage: %s\n"
msgstr "Употреба: %s\n"
#: ../src/ui/frames.c:1158
msgid "Close Window"
msgstr "Затваряне на прозореца"
#: ../src/ui/frames.c:1161
msgid "Window Menu"
msgstr "Меню за прозорците"
#: ../src/ui/frames.c:1164
msgid "Minimize Window"
msgstr "Минимизиране на прозореца"
#: ../src/ui/frames.c:1167
msgid "Maximize Window"
msgstr "Максимизиране на прозореца"
#: ../src/ui/frames.c:1170
msgid "Restore Window"
msgstr "Възстановяване на прозорец"
#: ../src/ui/frames.c:1173
msgid "Roll Up Window"
msgstr "Навиване на прозореца"
#: ../src/ui/frames.c:1176
msgid "Unroll Window"
msgstr "Развиване на прозореца"
#: ../src/ui/frames.c:1179
msgid "Keep Window On Top"
msgstr "Прозорецът да е отгоре"
#: ../src/ui/frames.c:1182
msgid "Remove Window From Top"
msgstr "Прозорецът да не е само отгоре"
#: ../src/ui/frames.c:1185
msgid "Always On Visible Workspace"
msgstr "Винаги на видимия работен плот"
#: ../src/ui/frames.c:1188
msgid "Put Window On Only One Workspace"
msgstr "Прозорецът да се появява само на едно работен плот"
#. Translators: Translate this string the same way as you do in libwnck!
#: ../src/ui/menu.c:69
msgid "Mi_nimize"
@@ -706,48 +762,48 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d×%d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "горния"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "долния"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "левия"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "десния"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "геометрията на рамката не указва „%s“ размер"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "геометрията на рамката не указва „%s“ размер на „%s“ ръб"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "Отношението на размерите на бутона %g е неподходящо"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Геометрията на рамката не указва размера на бутоните"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Преливките трябва да имат поне два цвята"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@@ -756,7 +812,7 @@ msgstr ""
"Цветовата спецификация на GTK трябва да съдържа в скоби име на основен и "
"резервен цвят: напр. gtk:custom(foo,bar). Неуспех при анализа на „%s“"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@@ -765,7 +821,7 @@ msgstr ""
"Неправилен знак „%c“ в параметъра за име на цвят (color_name) на gtk:custom. "
"Позволени са само A-Za-z0-9-_."
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@@ -774,7 +830,7 @@ msgstr ""
"Форматът на Gtk:custom е „gtk:custom(основен_цвят,резервен_цвят)“, „%s“ не "
"съответства на формата"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -784,7 +840,7 @@ msgstr ""
"скоби, напр. gtk:fg[NORMAL], където NORMAL е състоянието. Неуспех при "
"анализира „%s“"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -794,17 +850,17 @@ msgstr ""
"състоянието, напр. gtk:fg[NORMAL], където NORMAL е състоянието. Неуспех при "
"анализа на „%s“"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Неуспех при анализа на състоянието „%s“ в цветовата спецификация"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Неуспех при анализа на цветови компонент „%s“ в цветовата спецификация"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -813,17 +869,17 @@ msgstr ""
"Форматът на смесването е „blend/bg_color/fg_color/alpha“, „%s“ не се "
"подчинява на формата"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Неуспех при анализира на алфа стойността „%s“ в смесения цвят"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "Алфа стойността „%s“ в смесения цвят не е между 0.0 и 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
@@ -831,27 +887,27 @@ msgstr ""
"Форматът на навиването е „shade/base_color/factor“, „%s“ не съответства на "
"формата"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Неуспех при анализа на фактора на навиването „%s“ в цвета за навиване"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Факторът на навиване „%s“ в цвета за сянката е отрицателен"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Неуспех при анализа на цвета „%s“"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Изразът за координати съдържа символа „%s“, който не е позволен"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
@@ -860,14 +916,14 @@ msgstr ""
"Изразът за координати съдържа числото с плаваща запетая „%s“, което не може "
"да бъде анализирано"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr ""
"Изразът за координати съдържа цялото число „%s“, което не може да бъде "
"анализирано"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -876,24 +932,24 @@ msgstr ""
"Изразът за координати съдържа непознат оператор в началото на този текст: "
"„%s“"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Изразът за координати бе празен или не бе разбран"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Изразът за координати дава деление на нула"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr ""
"Изразът за координати използва оператора mod върху число с плаваща запетая"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
@@ -901,18 +957,18 @@ msgstr ""
"Изразът за координати използва оператора „%s“ на място, където се очаква "
"операнд"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr ""
"Изразът за координати използва оператор на място, където се очаква операнд"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Изразът за координати завършва с оператор вместо с операнд"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -921,38 +977,38 @@ msgstr ""
"Изразът за координати използва оператора „%c“ след „%c“ без да има операнд "
"между тях"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr ""
"Изразът за координати използва непознатата променлива или константа „%s“"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Анализаторът на изрази за координати препълни буфера си."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "В израза за координати има затваряща скоба без съответна отваряща"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "В изразът за координати има отваряща скоба без съответна затваряща"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "Изразът за координати не съдържа нито оператори, нито операнди"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Темата съдържа израз, който даде грешка: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -961,25 +1017,25 @@ msgstr ""
"За този стил на рамката трябва да се укаже <button function=\"%s\" state=\"%s"
"\" draw_ops=\"нещо си\"/>"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Липсва <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"нещо си\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Неуспех при зареждането на темата „%s“: %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "Не е даден елементът <%s> за темата „%s“"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -988,7 +1044,7 @@ msgstr ""
"Няма указан стил на рамката за „%s“ прозорците в тема „%s“. Добавете елемент "
"<window type=\"%s\" style_set=\"нещо си\"/>"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
@@ -996,7 +1052,7 @@ msgstr ""
"Константите определени от потребителя трябва да започват с главна буква, а "
"„%s“ не започва така"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Константата „%s“ вече е дефинирана"
@@ -1375,7 +1431,7 @@ msgstr "Не е позволен текст в елемента <%s>"
msgid "<%s> specified twice for this theme"
msgstr "<%s> е указан два пъти за тази тема"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Неуспех при намирането на валиден файл за темата %s\n"

339
po/es.po
View File

@@ -14,15 +14,14 @@ msgstr ""
"Project-Id-Version: mutter.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-07-15 00:47+0000\n"
"PO-Revision-Date: 2012-07-16 16:08+0200\n"
"POT-Creation-Date: 2012-03-11 21:56+0000\n"
"PO-Revision-Date: 2012-03-12 14:17+0100\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
@@ -47,7 +46,7 @@ msgstr ""
"Ya existe un gestor de composición ejecutándose en la monitor %i, pantalla «%"
"s»."
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "Evento de campana"
@@ -56,17 +55,16 @@ msgstr "Evento de campana"
msgid "Unknown window information request: %d"
msgstr "Petición de información de ventana desconocida: %d"
#: ../src/core/delete.c:114
#: ../src/core/delete.c:111
#, c-format
#| msgid "<tt>%s</tt> is not responding."
msgid "%s is not responding."
msgstr "%s no está respondiendo."
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> no está respondiendo."
#: ../src/core/delete.c:118
#: ../src/core/delete.c:114
msgid "Application is not responding."
msgstr "La aplicación no está respondiendo."
#: ../src/core/delete.c:123
#: ../src/core/delete.c:119
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@@ -74,25 +72,25 @@ msgstr ""
"Puede elegir esperar un rato para ver si continua o forzar la aplicación "
"para cerrarla completamente."
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Wait"
msgstr "_Esperar"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Force Quit"
msgstr "_Forzar la salida"
#: ../src/core/display.c:380
#: ../src/core/display.c:361
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Falta la extensión %s requerida para la composición"
#: ../src/core/display.c:446
#: ../src/core/display.c:427
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Ocurrió un error al abrir la pantalla de X Window System «%s»\n"
#: ../src/core/keybindings.c:844
#: ../src/core/keybindings.c:852
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
@@ -101,36 +99,36 @@ msgstr ""
"Algún otro programa ya está usando la clave %s con el modificador %x como "
"una vinculación\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "Desactivar conexión al gestor de sesión"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "Reemplazar el gestor de ventanas en ejecución"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "Especificar el ID se gestión de sesión"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "Pantalla X que usar"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "Inicializar sesión desde el archivo de salvaguarda"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "Hacer que las llamadas a las X sean síncronas"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Falló al inspeccionar la carpeta de temas: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -158,10 +156,10 @@ msgid "Print version"
msgstr "Imprimir versión"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "Complemento de mutter que usar"
msgid "Comma-separated list of compositor plugins"
msgstr "Lista de complementos del compositor separados por comas"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -169,14 +167,14 @@ msgstr ""
"Los arreglos para aplicaciones rotas se han deshabilitado. Algunas "
"aplicaciones podrían no comportarse correctamente.\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr ""
"No se pudo analizar la descripción de la tipografía «%s» de la clave "
"GSettings %s\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@@ -185,7 +183,7 @@ msgstr ""
"«%s» encontrado en la base de datos de configuración no es un valor válido "
"para el modificador del botón del ratón\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1736
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -194,17 +192,17 @@ msgstr ""
"«%s» encontrado en la base de datos de configuración no es un valor válido "
"para la combinación de teclas «%s»\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1833
#, c-format
msgid "Workspace %d"
msgstr "Área de trabajo %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "La ventana %d en la pantalla «%s» no es válida\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -213,7 +211,7 @@ msgstr ""
"La ventana %d en la pantalla «%s» ya tiene un gestor de ventanas, intente "
"usar la opción «--replace» para reemplazar el gestor de ventanas activo.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
@@ -221,12 +219,12 @@ msgstr ""
"No se ha podido obtener la selección del gestor de ventanas en la ventana %d "
"en la pantalla «%s»\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "La ventana %d en la pantalla «%s» ya tiene un gestor de ventanas\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "No se ha podido liberar el monitor %d en la pantalla «%s»\n"
@@ -287,45 +285,45 @@ msgstr ""
"Estas ventanas no soportan «guardar la configuración actual» y tendrán que "
"reiniciarse manualmente la próxima vez que inicie una sesión."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Ocurrió un error al abrir el registro de errores: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Ocurrió un error al hacer fdopen() en el archivo de registro %s: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "Archivo de registro %s abierto\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter fue compilado sin soporte para modo prolijo\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "Administrador de ventanas: "
# Diferenciar de eRRor en el gestor de ventanas, más abajo
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "Error en el gestor de ventanas: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "Advertencia del gestor de ventanas: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "Error del gestor de ventanas: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7224
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -341,7 +339,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:7887
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
@@ -351,23 +349,23 @@ msgstr ""
"redimensionable, pero configuró el tamaño mínimo a %d x %d y el tamaño "
"máximo a %d x %d ; esto no tiene mucho sentido.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "La aplicación establecio un _NET_WM_PID %lu erróneo\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (on %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr ""
"WM_TRANSIENT_FOR no válido para la ventana 0x%lx especificada para %s.\n"
"WM_TRANSIENT_FOR inválido para la ventana 0x%lx especificada para %s.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR ventana 0x%lx para %s crearía un bucle.\n"
@@ -390,15 +388,15 @@ msgstr ""
#: ../src/core/xprops.c:411
#, c-format
msgid "Property %s on window 0x%lx contained invalid UTF-8\n"
msgstr "La propiedad %s en la ventana 0x%lx contiene UTF-8 no válido\n"
msgstr "La propiedad %s en la ventana 0x%lx contiene UTF-8 inválido\n"
#: ../src/core/xprops.c:494
#, c-format
msgid ""
"Property %s on window 0x%lx contained invalid UTF-8 for item %d in the list\n"
msgstr ""
"La propiedad %s en la ventana 0x%lx contiene UTF-8 no válido para el "
"elemento %d de la lista\n"
"La propiedad %s en la ventana 0x%lx contiene UTF-8 inválido para el elemento "
"%d de la lista\n"
#: ../src/mutter.desktop.in.h:1 ../src/mutter-wm.desktop.in.h:1
msgid "Mutter"
@@ -437,12 +435,24 @@ msgstr ""
"y se mueven junto con la ventana padre."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Live Hidden Windows"
msgstr "Ventanas activas ocultas"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"Determina si las ventanas ocultas (e.g., ventanas minimizadas y ventanas en "
"otros escritorios distintos del actual) deberían mantenerse activas."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr ""
"Activar el mosaico en los bordes al arrastrar ventanas a los bordes de la "
"ventana"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@@ -453,11 +463,11 @@ msgstr ""
"mitad del área disponible. Arrastrar ventanas al borde superior de la "
"pantalla las maximiza por completo."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces are managed dynamically"
msgstr "Las áreas de trabajo se gestionan dinámicamente"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@@ -467,11 +477,11 @@ msgstr ""
"número estático de áreas de trabajo (determinado por la clave «num-"
"workspaces» en «org.gnome.desktop.wm.preferences»)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Workspaces only on primary"
msgstr "Áreas de trabajo sólo en el primario"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@@ -479,11 +489,11 @@ msgstr ""
"Determina si el cambio entre áreas de trabajo debería suceder para las "
"ventanas en todos los monitores o sólo para ventanas en el monitor primario."
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "No tab popup"
msgstr "No hay pestaña emergente"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@@ -491,11 +501,11 @@ msgstr ""
"Determina si el uso de ventanas emergentes y marcos resaltados se debe "
"desactivar al cambiar entre ventanas."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Anchura arrastrable del borde"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
@@ -503,11 +513,11 @@ msgstr ""
"La cantidad total de borde arrastrable. Si los bordes visibles del tema no "
"son suficientes, se añadirán bordes invisibles para satisfacer este valor."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Select window from tab popup"
msgstr "Seleccionar ventana de la pestaña emergente"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Cancel tab popup"
msgstr "Cancelar pestaña emergente"
@@ -516,6 +526,50 @@ msgstr "Cancelar pestaña emergente"
msgid "Usage: %s\n"
msgstr "Uso: %s\n"
#: ../src/ui/frames.c:1158
msgid "Close Window"
msgstr "Cerrar la ventana"
#: ../src/ui/frames.c:1161
msgid "Window Menu"
msgstr "Menú de la ventana"
#: ../src/ui/frames.c:1164
msgid "Minimize Window"
msgstr "Minimizar la ventana"
#: ../src/ui/frames.c:1167
msgid "Maximize Window"
msgstr "Maximizar la ventana"
#: ../src/ui/frames.c:1170
msgid "Restore Window"
msgstr "Restablecer la ventana"
#: ../src/ui/frames.c:1173
msgid "Roll Up Window"
msgstr "Enrollar ventana"
#: ../src/ui/frames.c:1176
msgid "Unroll Window"
msgstr "Desenrollar ventana"
#: ../src/ui/frames.c:1179
msgid "Keep Window On Top"
msgstr "Mantener la ventana encima"
#: ../src/ui/frames.c:1182
msgid "Remove Window From Top"
msgstr "Quitar ventana de encima"
#: ../src/ui/frames.c:1185
msgid "Always On Visible Workspace"
msgstr "Siempre en el área de trabajo visible"
#: ../src/ui/frames.c:1188
msgid "Put Window On Only One Workspace"
msgstr "Poner la ventana sólo en un área de trabajo"
#. Translators: Translate this string the same way as you do in libwnck!
#: ../src/ui/menu.c:69
msgid "Mi_nimize"
@@ -715,49 +769,49 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "superior"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "inferior"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "izquierda"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "derecha"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "La geometría del marco no especifica la dimensión «%s»"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr ""
"La geometría del marco no especifica la dimensión «%s» para el borde «%s»"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "La proporción del botón %g no es razonable"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "La geometría del marco no especifica el tamaño de los botones"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Los degradados deben tener al menos dos colores"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@@ -767,7 +821,7 @@ msgstr ""
"alternativo entre paréntesis, ejemplo: gtk:custom(foo,bar); no se pudo "
"analizar «%s»"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@@ -776,7 +830,7 @@ msgstr ""
"Caracter «%c» no válido en el parámetro «color_name» de «gtk:custom», sólo «A-Za-"
"z0-9-_» son válidos"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@@ -785,7 +839,7 @@ msgstr ""
"El formato de «gtk:custom» es «gtk:custom(nombre_de_color,"
"nombre_alternativo)», «%s» no respeta el formato"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -795,7 +849,7 @@ msgstr ""
"ejemplo. gtk:fg[NORMAL] donde NORMAL es el estado ; no se ha podido "
"interpretar «%s»"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -805,18 +859,18 @@ msgstr ""
"estado, ejemplo. gtk:fg[NORMAL] donde NORMAL es el estado ; no se ha podido "
"interpretar «%s»"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "No se entiende el estado «%s» en la especificación del color"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr ""
"No se entiende el componente de color «%s» en la especificación del color"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -825,17 +879,17 @@ msgstr ""
"El formato de blend es «blend/bg_color/fg_color/alfa», «%s» no cumple con el "
"formato"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "No se ha podido interpretar el valor alfa «%s» en el color mezclado"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "El valor alfa «%s» en el color mezclado no está entre 0.0 y 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
@@ -843,31 +897,31 @@ msgstr ""
"El formato de sombreado es «shade/base_color/factor», «%s» no coincide con el "
"formato"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr ""
"No se ha podido interpretar el factor de sombreado «%s» en el color del "
"sombreado"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "El factor de sombreado «%s» en el color sombreado es negativo"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "No se ha podido interpretar el color «%s»"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr ""
"La expresión de coordenadas contenía un carácter «%s» en cual no está "
"permitido"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
@@ -876,32 +930,32 @@ msgstr ""
"La expresión de coordenadas contenía un número de coma flotante «%s» en cual "
"no pudo ser analizado"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr ""
"La expresión de coordenadas contenía un entero «%s» que no pudo ser analizado"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
"\"%s\""
msgstr ""
"La expresión de coordenadas contenía un operador no válido al inicio de su "
"La expresión de coordenadas contenía un operador inválido al inicio de su "
"texto: «%s»"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "La expresión de coordenadas estaba vacía o no fue entendida"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "La expresión de coordenadas resultó en un error de división por cero"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
@@ -909,7 +963,7 @@ msgstr ""
"La expresión de coordenadas intentó usar un operador mod con un número de "
"coma flotante"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
@@ -917,19 +971,19 @@ msgstr ""
"La expresión de coordenadas tiene un operador «%s» donde se esperaba un "
"operando"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr ""
"La expresión de coordenadas tiene un operando donde se esperaba un operador"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr ""
"La expresión de coordenadas termina con una operador en vez de un operando"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -938,42 +992,42 @@ msgstr ""
"La expresión de coordenadas tiene el operador «%c» seguido del operador «%c» "
"sin un operando entre ellos"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr ""
"La expresión de coordenadas tenía una variable o constante desconocida «%s»"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "El parser de la expresión de coordenadas desbordó su búfer."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr ""
"La expresión de coordenadas tenía un paréntesis cerrado sin un paréntesis "
"abierto"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr ""
"La expresión de coordenadas tenía un paréntesis abierto sin un paréntesis "
"cerrado"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "La expresión de coordenadas no parece tener ni operadores ni operandos"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "El tema contenía una expresión que ha resultado en un error: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -982,25 +1036,25 @@ msgstr ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> debe ser "
"especificado para este estilo de marco"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Falta <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Ocurrió un error al cargar el tema «%s»: %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "No se configuró <%s> para el tema «%s»"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -1009,7 +1063,7 @@ msgstr ""
"No hay un estilo de marco para el tipo de ventana «%s» en el tema «%s», añada "
"un elemento <window type=\"%s\" style_set=\"whatever\"/>"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
@@ -1017,7 +1071,7 @@ msgstr ""
"Las constantes definidas por el usuario deben comenzar con una letra "
"mayúscula; «%s» no lo hace"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "La constante «%s» ya ha sido definida"
@@ -1043,7 +1097,7 @@ msgstr "El atributo «%s» se ha repetido dos veces en el mismo elemento <%s>"
#: ../src/ui/theme-parser.c:503 ../src/ui/theme-parser.c:552
#, c-format
msgid "Attribute \"%s\" is invalid on <%s> element in this context"
msgstr "El atributo «%s» es no válido en el elemento <%s> en este contexto"
msgstr "El atributo «%s» es inválido en el elemento <%s> en este contexto"
#: ../src/ui/theme-parser.c:594
#, c-format
@@ -1093,8 +1147,8 @@ msgid ""
"Invalid title scale \"%s\" (must be one of xx-small,x-small,small,medium,"
"large,x-large,xx-large)\n"
msgstr ""
"Escala de título no válida «%s» (debe ser una de xx-small,x-small,small,"
"medium,large,x-large,xx-large)\n"
"Escala de título inválida «%s» (debe ser una de xx-small,x-small,small,medium,"
"large,x-large,xx-large)\n"
#: ../src/ui/theme-parser.c:1019 ../src/ui/theme-parser.c:1082
#: ../src/ui/theme-parser.c:1116 ../src/ui/theme-parser.c:1219
@@ -1408,7 +1462,7 @@ msgstr "No se permite texto dentro del elemento <%s>"
msgid "<%s> specified twice for this theme"
msgstr "<%s> especificado dos veces para este tema"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Falló al encontrar un archivo válido para el tema%s\n"
@@ -1615,52 +1669,6 @@ msgstr ""
"%d expresiones de coordenadas interpretadas en %g segundos (%g segundos de "
"media)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "Lista de complementos del compositor separados por comas"
#~ msgid "Live Hidden Windows"
#~ msgstr "Ventanas activas ocultas"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "Determina si las ventanas ocultas (e.g., ventanas minimizadas y ventanas "
#~ "en otros escritorios distintos del actual) deberían mantenerse activas."
#~ msgid "Close Window"
#~ msgstr "Cerrar la ventana"
#~ msgid "Window Menu"
#~ msgstr "Menú de la ventana"
#~ msgid "Minimize Window"
#~ msgstr "Minimizar la ventana"
#~ msgid "Maximize Window"
#~ msgstr "Maximizar la ventana"
#~ msgid "Restore Window"
#~ msgstr "Restablecer la ventana"
#~ msgid "Roll Up Window"
#~ msgstr "Enrollar ventana"
#~ msgid "Unroll Window"
#~ msgstr "Desenrollar ventana"
#~ msgid "Keep Window On Top"
#~ msgstr "Mantener la ventana encima"
#~ msgid "Remove Window From Top"
#~ msgstr "Quitar ventana de encima"
#~ msgid "Always On Visible Workspace"
#~ msgstr "Siempre en el área de trabajo visible"
#~ msgid "Put Window On Only One Workspace"
#~ msgstr "Poner la ventana sólo en un área de trabajo"
#~ msgid "Switch to workspace 1"
#~ msgstr "Cambiar al área de trabajo 1"
@@ -1975,6 +1983,9 @@ msgstr ""
#~ msgid "Error setting clutter plugin list: %s\n"
#~ msgstr "Error al establecer la lista de complementos de «Clutter»: %s\n"
#~ msgid "Clutter Plugins"
#~ msgstr "Complementos de «Clutter»"
#~ msgid "Plugins to load for the Clutter-based compositing manager."
#~ msgstr ""
#~ "Complementos que cargar para la gestión de composición basada en «Clutter»."

210
po/fr.po
View File

@@ -20,8 +20,8 @@ msgstr ""
"org/enter_bug.cgi?product=mutter&component=general\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
"product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-06-13 18:21+0000\n"
"PO-Revision-Date: 2012-06-15 20:22+0200\n"
"POT-Creation-Date: 2012-03-22 03:46+0000\n"
"PO-Revision-Date: 2012-03-23 20:30+0100\n"
"Last-Translator: Alain Lojewski <allomervan@gmail.com>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"MIME-Version: 1.0\n"
@@ -51,7 +51,7 @@ msgstr ""
"Un autre gestionnaire de composition est déjà lancé sur l'écran %i de "
"l'affichage « %s »."
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "Évènement sonore"
@@ -85,12 +85,12 @@ msgstr "_Attendre"
msgid "_Force Quit"
msgstr "_Forcer à quitter"
#: ../src/core/display.c:380
#: ../src/core/display.c:387
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Il manque l'extension %s nécessaire à la composition"
#: ../src/core/display.c:446
#: ../src/core/display.c:453
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Impossible d'ouvrir le visuel « %s » du système X Window\n"
@@ -104,36 +104,36 @@ msgstr ""
"Un autre programme utilise déjà la clé %s avec les modificateurs %x comme "
"liaison\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "Désactiver la connexion au gestionnaire de sessions"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "Indiquer l'ID de gestion de sessions"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "Visuel X à utiliser"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "Initialiser la session depuis le fichier de sauvegarde"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "Rendre synchrones les appels à X"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Le parcours du répertoire de thèmes a échoué : %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -162,10 +162,10 @@ msgid "Print version"
msgstr "Afficher la version"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "Greffon de Mutter à utiliser"
msgid "Comma-separated list of compositor plugins"
msgstr "Liste de greffons de composition, séparés par des virgules"
#: ../src/core/prefs.c:1064
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -173,14 +173,14 @@ msgstr ""
"Solutions de rechange désactivées pour les applications endommagées. "
"Certaines applications peuvent ne pas se comporter correctement.\n"
#: ../src/core/prefs.c:1139
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr ""
"Impossible d'analyser la description de police « %s » depuis la clé GSettings "
"%s\n"
#: ../src/core/prefs.c:1205
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@@ -189,7 +189,7 @@ msgstr ""
"« %s » trouvée dans la base de données de configuration n'est pas une valeur "
"correcte pour le bouton de souris\n"
#: ../src/core/prefs.c:1723
#: ../src/core/prefs.c:1739
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -198,17 +198,17 @@ msgstr ""
"« %s » trouvé dans la base de données de configuration n'est pas une valeur "
"correcte pour la combinaison de touches « %s »\n"
#: ../src/core/prefs.c:1820
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "Espace de travail %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "L'écran %d sur le visuel « %s » n'est pas valide\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -218,7 +218,7 @@ msgstr ""
"d'utiliser l'option --replace pour remplacer le gestionnaire de fenêtres "
"actuel.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
@@ -226,12 +226,12 @@ msgstr ""
"Impossible d'avoir la sélection du gestionnaire de fenêtres sur l'écran %d "
"du visuel « %s »\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "L'écran %d sur le visuel « %s » a déjà un gestionnaire de fenêtres\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Impossible de libérer l'écran %d sur le visuel « %s »\n"
@@ -293,45 +293,45 @@ msgstr ""
"Ces fenêtres ne prennent pas en charge « l'enregistrement de la configuration "
"actuelle » et devront être redémarrées manuellement à la prochaine connexion."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "L'ouverture du journal de débogage a échoué : %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr ""
"L'exécution de la commande fdopen() sur le fichier journal %s a échoué : %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "Ouverture du fichier journal %s\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter a été compilé sans la prise en charge du mode bavard\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "Gestionnaire de fenêtres : "
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "Anomalie dans le gestionnaire de fenêtres : "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "Avertissement du gestionnaire de fenêtres : "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "Erreur du gestionnaire de fenêtres : "
#. first time through
#: ../src/core/window.c:7234
#: ../src/core/window.c:7266
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -347,7 +347,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7899
#: ../src/core/window.c:7931
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size %"
@@ -357,22 +357,22 @@ msgstr ""
"redimensionnable, mais positionne une taille minimale de %d x %d et une "
"taille maximale de %d x %d ; ceci n'a pas beaucoup de sens.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "L'application a défini un _NET_WM_PID %lu erroné\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (sur %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "Fenêtre WM_TRANSIENT_FOR 0x%lx non valide indiquée pour %s.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "Fenêtre WM_TRANSIENT_FOR 0x%lx pour %s créerait une boucle.\n"
@@ -442,10 +442,22 @@ msgstr ""
"sont déplacées ensembles avec elle."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Live Hidden Windows"
msgstr "Fenêtres masquées vivantes"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"Détermine si les fenêtres masquées (fenêtres réduites ou sur d'autres "
"espaces de travail) sont conservées « vivantes »."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Activer l'empilage des fenêtres déposées sur les bords de l'écran"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@@ -456,11 +468,11 @@ msgstr ""
"la moitié de la zone disponible. Le dépôt des fenêtres sur le bord supérieur "
"de l'écran les maximise complètement."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces are managed dynamically"
msgstr "Les espaces de travail sont gérés de manière dynamique"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@@ -470,11 +482,11 @@ msgstr ""
"nombre d'espaces de travail est fixe (déterminé par la clé num-workspaces "
"dans org.gnome.desktop.wm.preferences)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Workspaces only on primary"
msgstr "Espaces de travail seulement sur l'écran principal"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@@ -483,11 +495,11 @@ msgstr ""
"fenêtres de tous les écrans ou seulement pour les fenêtres de l'écran "
"principal."
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "No tab popup"
msgstr "Aucune apparition suite à un appui sur la touche tab"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@@ -495,11 +507,11 @@ msgstr ""
"Détermine si l'utilisation de fenêtres surgissantes et de mise en valeur "
"doit être désactivée pour la consultation des fenêtres."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Largeur de bordure ajustable"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
@@ -508,13 +520,13 @@ msgstr ""
"visibles du thème ne sont pas suffisantes, des bordures invisibles sont "
"ajoutées pour arriver à cette valeur."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Select window from tab popup"
msgstr ""
"Sélectionner la fenêtre dans la vue qui apparaît suite à un appui sur la "
"touche tab"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Cancel tab popup"
msgstr "Fermer la vue qui apparaît suite à un appui sur la touche tab"
@@ -722,49 +734,49 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "haut"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "bas"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "gauche"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "droite"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "la géométrie du cadre n'indique pas la dimension « %s »"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr ""
"la géométrie du cadre n'indique pas la dimension « %s » pour la bordure « %s »"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "La proportion du bouton %g n'est pas raisonnable"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "La géométrie du cadre n'indique pas la taille des boutons"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Les dégradés doivent comporter au moins deux couleurs"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@@ -774,7 +786,7 @@ msgstr ""
"couleur et un substitut entre parenthèses, par ex. gtk:custom(foo,bar) ; "
"impossible d'analyser « %s »"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@@ -783,7 +795,7 @@ msgstr ""
"Caractère « %c » non valide dans le paramètre color_name de gtk:custom, seuls "
"A-Za-z0-9-_ sont acceptés"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@@ -792,7 +804,7 @@ msgstr ""
"Le format de gtk:custom est « gtk:custom(nom_couleur,substitut) », « %s » ne "
"correspond pas à ce format"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -801,7 +813,7 @@ msgstr ""
"La spécification de couleur GTK doit présenter l'état entre crochets, p. ex. "
"gtk:fg[NORMAL] où NORMAL est l'état ; impossible d'analyser « %s »"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -811,19 +823,19 @@ msgstr ""
"l'état, p. ex. gtk:fg[NORMAL] où NORMAL est l'état ; impossible d'analyser « %"
"s »"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Impossible de comprendre l'état « %s » dans la spécification de couleur"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr ""
"Impossible de comprendre le composant de couleur « %s » dans la spécification "
"de couleur"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -832,18 +844,18 @@ msgstr ""
"Le format de mélange est « blend/bg_color/fg_color/alpha », « %s » ne "
"correspond pas à ce format ."
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Impossible d'analyser la valeur alpha « %s » en couleur mélangée"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr ""
"La valeur alpha « %s » en couleur mélangée n'est pas comprise entre 0,0 et 1,0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
@@ -851,29 +863,29 @@ msgstr ""
"Le format d'ombre est « shade/base_color/factor », « %s » ne correspond pas au "
"format"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Impossible d'analyser le facteur d'ombre « %s » en couleur ombrée"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Le facteur d'ombre « %s » en couleur ombrée est négatif"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Impossible d'analyser la couleur « %s »"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr ""
"L'expression de la coordonnée contient le caractère « %s » qui n'est pas "
"autorisé"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
@@ -882,14 +894,14 @@ msgstr ""
"L'expression de la coordonnée contient la valeur en virgule flottante « %s » "
"qui ne peut pas être analysée"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr ""
"L'expression de la coordonnée contient l'entier « %s » qui n'a pas pu être "
"analysé"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -898,17 +910,17 @@ msgstr ""
"L'expression de la coordonnée contenait un opérateur inconnu au début de ce "
"texte : « %s »"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "L'expression de la coordonnée était vide ou incomprise"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "L'expression de la coordonnée entraîne une division par zéro"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
@@ -916,7 +928,7 @@ msgstr ""
"L'expression de la coordonnée tente d'utiliser l'opérateur mod sur une "
"valeur en virgule flottante"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
@@ -924,20 +936,20 @@ msgstr ""
"L'expression de la coordonnée a un opérateur « %s » là où un opérande était "
"attendu"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr ""
"L'expression de la coordonnée a un opérande là où un opérateur était attendu"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr ""
"L'expression de la coordonnée était terminée par un opérateur au lieu d'un "
"opérande"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -946,46 +958,46 @@ msgstr ""
"L'expression de la coordonnée a un opérateur « %c » suivant l'opérateur « %c » "
"sans opérande entre eux"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr ""
"L'expression de la coordonnée possède une variable ou constante inconnue « %"
"s »"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr ""
"L'analyseur d'expression de coordonnées a dépassé la capacité de son tampon."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr ""
"L'expression de la coordonnée comporte une parenthèse de fermeture, mais pas "
"de parenthèse d'ouverture"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr ""
"L'expression de la coordonnée comporte une parenthèse d'ouverture, mais pas "
"de parenthèse de fermeture"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr ""
"L'expression de la coordonnée ne semble pas comprendre d'opérateur ni "
"d'opérande"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Le thème contient une expression qui a entraîné une erreur : %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -994,25 +1006,25 @@ msgstr ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> doit être "
"indiqué pour ce style de cadre"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"<frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/> manquant"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Impossible de charger le thème « %s » : %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "Aucun <%s> défini pour le thème « %s »"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -1021,7 +1033,7 @@ msgstr ""
"Aucun style de cadre défini pour le type de fenêtre « %s » dans le thème « %"
"s », ajoutez un élément <window type=\"%s\" style_set=\"whatever\"/>"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
@@ -1029,7 +1041,7 @@ msgstr ""
"Les constantes définies par l'utilisateur doivent commencer par une "
"majuscule ; « %s » commence par une minuscule"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "La constante « %s » a déjà été définie"
@@ -1425,7 +1437,7 @@ msgstr "Aucun texte autorisé dans l'élément <%s>"
msgid "<%s> specified twice for this theme"
msgstr "<%s> indiqué deux fois pour ce thème"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Impossible de trouver un fichier valide pour le thème %s\n"

305
po/gl.po
View File

@@ -14,8 +14,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gl\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-25 00:08+0200\n"
"PO-Revision-Date: 2012-06-25 00:09+0200\n"
"POT-Creation-Date: 2012-03-14 23:08+0100\n"
"PO-Revision-Date: 2012-03-14 23:09+0100\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
"Language: gl\n"
@@ -23,7 +23,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Generator: Gtranslator 2.91.5\n"
"X-Generator: Lokalize 1.2\n"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
@@ -48,7 +48,7 @@ msgstr ""
"Non foi posíbel obter a selección do xestor de xanelas na pantalla %i na "
"visualización «%s»"
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "Evento de campá"
@@ -82,12 +82,12 @@ msgstr "Espe_rar"
msgid "_Force Quit"
msgstr "_Forzar a saída"
#: ../src/core/display.c:380
#: ../src/core/display.c:387
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Falta a extensión %s que se require para a composición"
#: ../src/core/display.c:446
#: ../src/core/display.c:453
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Produciuse un fallo ao abrir a pantalla do X Window System «%s»\n"
@@ -101,36 +101,36 @@ msgstr ""
"Algún outro programa xa está usando a tecla %s cos modificadores %x como "
"combinación\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "Desactivar a conexión ao xestor de sesión"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "Substituír o xestor de xanelas en execución"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "Especificar o ID de xestión de sesión"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "Pantalla X que se vai usar"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "Iniciar sesión desde o ficheiro de salvagarda"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "Facer que as chamadas a X sexan sincrónicas"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Fallou ao dixitalizar o directorio de temas: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -158,10 +158,10 @@ msgid "Print version"
msgstr "Imprimir versión"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "Engadido de mutter que usar"
msgid "Comma-separated list of compositor plugins"
msgstr "Lista de separadas por comas dos complementos do compositor"
#: ../src/core/prefs.c:1064
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -169,14 +169,14 @@ msgstr ""
"Desactiváronse os arranxos para aplicativos danados. Pode que algúns "
"aplicativos non se comporten correctamente.\n"
#: ../src/core/prefs.c:1139
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr ""
"Non foi posíbel analizar a descrición do tipo de letra «%s» da chave "
"GSettings %s\n"
#: ../src/core/prefs.c:1205
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@@ -185,7 +185,7 @@ msgstr ""
"«%s» atopados na base de datos de configuración non é un valor válido para o "
"modificador do botón do rato\n"
#: ../src/core/prefs.c:1723
#: ../src/core/prefs.c:1739
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -194,17 +194,17 @@ msgstr ""
"«%s» atopados na base de datos de configuración non é un valor válido para a "
"combinación de teclas «%s»\n"
#: ../src/core/prefs.c:1820
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "Espazo de traballo %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "A pantalla %d na visualización «%s» non é válida\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -213,7 +213,7 @@ msgstr ""
"A visualización %d na pantalla «%s» ten xa un xestor de xanelas, tente usar "
"a opción --replace para substituír o xestor de xanelas.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
@@ -221,12 +221,12 @@ msgstr ""
"Non foi posíbel obter a selección do xestor de xanelas na pantalla %d na "
"visualización «%s»\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "A visualización %d na pantalla «%s» ten xa un xestor de xanelas\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Non foi posíbel liberar a visualización %d na pantalla «%s»\n"
@@ -286,44 +286,44 @@ msgstr ""
"Estas xanelas non soportan &quot;save current setup&quot; e terán que "
"reiniciarse manualmente a próxima vez que inicie a sesión."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Produciuse un fallo ao abrir o rexistro de depuración: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Produciuse un fallo ao facer fdopen() no ficheiro de rexistro %s: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "Ficheiro de rexistro %s aberto\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter foi compilado sen compatibilidade para o modo detallado\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "Xestor de xanelas: "
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "Erro no xestor de xanelas: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "Aviso do xestor de xanelas: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "Erro do xestor de xanelas: "
#. first time through
#: ../src/core/window.c:7234
#: ../src/core/window.c:7224
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -339,7 +339,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7899
#: ../src/core/window.c:7887
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@@ -349,23 +349,23 @@ msgstr ""
"mais configurou o tamaño mínimo a %d x %d e o tamaño máximo a %d x %d, isto "
"non ten moito sentido.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "O aplicativo configurou un _NET_WM_PID %lu falso\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (en %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr ""
"WM_TRANSIENT_FOR non válido para a xanela 0x%lx especificada para %s.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR xanela 0x%lx para %s crearía un bucle.\n"
@@ -434,10 +434,22 @@ msgstr ""
"moveranse de forma conxunta á xanela pai."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Live Hidden Windows"
msgstr "Xanelas agochadas en vivo"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"Determina se as xanelas agochadas (p.ex., xanelas minimizadas ou xanelas "
"noutros espazos de traballo) deben manterse activas."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Activar o mosaico nos bordos ao arrastrar xanelas aos bordos da xanela"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@@ -448,11 +460,11 @@ msgstr ""
"metade da área dispoñíbel. Arrastrar xanelas ao bordo superior da pantalla "
"maximízaas por completo."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces are managed dynamically"
msgstr "Os espazos de traballo xestiónanse dinamicamente"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
@@ -462,11 +474,11 @@ msgstr ""
"número estático de áreas de traballo (determinado pola chave «num-"
"workspaces» en «org.gnome.desktop.wm.preferences»)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Workspaces only on primary"
msgstr "Espazos de traballo só no principal"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@@ -474,11 +486,11 @@ msgstr ""
"Determina se o troco de espazo de traballo debe facerse para as xanelas de "
"todos os monitores ou só para o monitor principal."
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "No tab popup"
msgstr "No hai lapela emerxente"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@@ -486,11 +498,11 @@ msgstr ""
"Determina se se debe desactivar o uso de xanelas emerxentes e marcos "
"realzados ao cambiar entre xanelas."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Anchura arrastrábel do bordo"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
@@ -498,11 +510,11 @@ msgstr ""
"A cantidade total de bordo arrastrábel. Se os bordos visíbeis do tema non "
"son suficientes, engadiranse bordos invisíbeis para satisfacer este valor."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Select window from tab popup"
msgstr "Seleccionar xanela da lapela emerxente"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Cancel tab popup"
msgstr "Cancelar lapela emerxente"
@@ -511,6 +523,50 @@ msgstr "Cancelar lapela emerxente"
msgid "Usage: %s\n"
msgstr "Uso: %s\n"
#: ../src/ui/frames.c:1158
msgid "Close Window"
msgstr "Pechar a xanela"
#: ../src/ui/frames.c:1161
msgid "Window Menu"
msgstr "Menú da xanela"
#: ../src/ui/frames.c:1164
msgid "Minimize Window"
msgstr "Minimizar a xanela"
#: ../src/ui/frames.c:1167
msgid "Maximize Window"
msgstr "Maximizar a xanela"
#: ../src/ui/frames.c:1170
msgid "Restore Window"
msgstr "Restaurar a xanela"
#: ../src/ui/frames.c:1173
msgid "Roll Up Window"
msgstr "Pregar a xanela"
#: ../src/ui/frames.c:1176
msgid "Unroll Window"
msgstr "Despregar a xanela"
#: ../src/ui/frames.c:1179
msgid "Keep Window On Top"
msgstr "Manter a xanela na parte superior"
#: ../src/ui/frames.c:1182
msgid "Remove Window From Top"
msgstr "Quitar a xanela da parte superior"
#: ../src/ui/frames.c:1185
msgid "Always On Visible Workspace"
msgstr "Sempre no espazo de traballo visíbel"
#: ../src/ui/frames.c:1188
msgid "Put Window On Only One Workspace"
msgstr "Pór a xanela nun só espazo de traballo"
#. Translators: Translate this string the same way as you do in libwnck!
#: ../src/ui/menu.c:69
msgid "Mi_nimize"
@@ -710,48 +766,48 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "superior"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "inferior"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "esquerda"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "dereita"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "a xeometría do marco non especifica a dimensión «%s»"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "a xeometría do marco non especifica a dimensión «%s» para o bordo «%s»"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "A proporción de aspecto do botón %g non é razoábel"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "A xeometría do marco non especifica o tamaño dos botóns"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Os degradados deben ter polo menos dúas cores"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@@ -761,7 +817,7 @@ msgstr ""
"entre parénteses, por exemplo: gtk:custom(foo,bar); non foi posíbel analizar "
"«%s»."
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@@ -770,7 +826,7 @@ msgstr ""
"O carácter «%c» non é válido no parámetro «color_name» de «gtk:custom», só "
"«A-Za-z0-9» son válidos"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@@ -779,7 +835,7 @@ msgstr ""
"O formato de «gtk:custom» é «gtk:custom(nome_de_cor,nome_alternativo», «%s» "
"non respecta o formato"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -788,7 +844,7 @@ msgstr ""
"A especificación de cor do GTK debe ter o estado entre parénteses, exemplo. "
"gtk:fg[NORMAL] onde NORMAL é o estado; non foi posíbel analizar «%s»"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -798,17 +854,17 @@ msgstr ""
"estado, exemplo. gtk:fg[NORMAL] onde NORMAL é o estado; non foi posíbel "
"analizar «%s»"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Non se entende o estado «%s» na especificación da cor"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Non se entende o compoñente de cor «%s» na especificación da cor"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -817,17 +873,17 @@ msgstr ""
"O formato de blend é «blend/bg_color/fg_color/alpha», «%s»non coincide co "
"formato"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Non foi posíbel analizar o valor alfa «%s» na cor mesturada"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "O valor alfa «%s» na cor mesturada non está entre 0.0 e 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
@@ -835,28 +891,28 @@ msgstr ""
"O formato de sombreado é \"shade/base_color/factor\", «%s» non coincide co "
"formato"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Non foi posíbel o factor de sombreado «%s» na cor sombreada"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "O factor de sombreado «%s» na cor sombreada é negativo"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Non foi posíbel analizar a cor «%s»"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr ""
"A expresión de coordenadas contén un carácter «%s» que non está permitido"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
@@ -865,14 +921,14 @@ msgstr ""
"A expresión de coordenadas contén un número de coma flotante «%s» que non "
"foi posíbel analizar"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr ""
"A expresión de coordenadas contén un enteiro «%s» que non foi posíbel "
"analizar"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -881,17 +937,17 @@ msgstr ""
"A expresión de coordenadas contén un operador non válido ao inicio do seu "
"texto: «%s»"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "A expresión de coordenadas está baleira ou non se entendeu"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "A expresión de coordenadas resultou nun erro de división por cero"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
@@ -899,25 +955,25 @@ msgstr ""
"A expresión de coordenadas tentou usar un operador mod cun número de coma "
"flotante"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr ""
"A expresión de coordenadas ten un operador «%s» onde se esperaba un operando"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr ""
"A expresión de coordenadas ten un operando onde se esperaba un operador"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "A expresión de coordenadas remata cun operador en vez dun operando"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -926,42 +982,42 @@ msgstr ""
"A expresión de coordenadas ten un operador \"%c\" seguido do operador \"%c\" "
"sen un operando entre eles"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr ""
"A expresión de coordenadas ten unha variábel ou constante descoñecida «%s»"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "O analizador da expresión de coordenadas desbordou o seu búfer."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr ""
"A expresión de coordenadas ten unha paréntese pechada sen unha paréntese "
"aberta"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr ""
"A expresión de coordenadas ten unha paréntese aberta sen unha paréntese "
"pechada"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "A expresión de coordenadas non parece ter nin operadores nin operandos"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "O tema contiña unha expresión que resultou ser un erro: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -970,24 +1026,24 @@ msgstr ""
"<button function=«%s» state=«%s» draw_ops=\"whatever\"/> débese especificar "
"para este estilo de marco"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "Falta <frame state=«%s» resize=«%s» focus=«%s» style=\"whatever\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Produciuse un fallo ao cargar o tema «%s»: %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "Non se configurou <%s> para o tema «%s»"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -996,7 +1052,7 @@ msgstr ""
"Non hai un estilo de marco para o tipo de xanela «%s» no tema «%s», engada "
"un elemento <window type=«%s» style_set=\"whatever\"/>"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
@@ -1004,7 +1060,7 @@ msgstr ""
"As constantes definidas polo usuario deben comezar cunha letra maiúscula; "
"«%s» non o fai"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "A constante «%s» xa foi definida"
@@ -1391,7 +1447,7 @@ msgstr "Non se permite texto dentro do elemento <%s>"
msgid "<%s> specified twice for this theme"
msgstr "<%s> especificada dúas veces para este tema"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Non se atopou ningún ficheiro válido para o tema %s\n"
@@ -1598,52 +1654,6 @@ msgstr ""
"%d expresións de coordenadas interpretadas en %g segundos (%g segundos de "
"media)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "Lista de separadas por comas dos complementos do compositor"
#~ msgid "Live Hidden Windows"
#~ msgstr "Xanelas agochadas en vivo"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "Determina se as xanelas agochadas (p.ex., xanelas minimizadas ou xanelas "
#~ "noutros espazos de traballo) deben manterse activas."
#~ msgid "Close Window"
#~ msgstr "Pechar a xanela"
#~ msgid "Window Menu"
#~ msgstr "Menú da xanela"
#~ msgid "Minimize Window"
#~ msgstr "Minimizar a xanela"
#~ msgid "Maximize Window"
#~ msgstr "Maximizar a xanela"
#~ msgid "Restore Window"
#~ msgstr "Restaurar a xanela"
#~ msgid "Roll Up Window"
#~ msgstr "Pregar a xanela"
#~ msgid "Unroll Window"
#~ msgstr "Despregar a xanela"
#~ msgid "Keep Window On Top"
#~ msgstr "Manter a xanela na parte superior"
#~ msgid "Remove Window From Top"
#~ msgstr "Quitar a xanela da parte superior"
#~ msgid "Always On Visible Workspace"
#~ msgstr "Sempre no espazo de traballo visíbel"
#~ msgid "Put Window On Only One Workspace"
#~ msgstr "Pór a xanela nun só espazo de traballo"
#~ msgid "Switch to workspace 1"
#~ msgstr "Cambiar ao espazo de traballo 1"
@@ -1954,6 +1964,9 @@ msgstr ""
#~ msgid "Error setting clutter plugin list: %s\n"
#~ msgstr "Erro ao definir a lista de complementos de clutter: %s\n"
#~ msgid "Clutter Plugins"
#~ msgstr "Complementos de Clutter"
#~ msgid "Plugins to load for the Clutter-based compositing manager."
#~ msgstr ""
#~ "Complementos a cargar polo xestor de composición baseado en Clutter."

326
po/he.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity.HEAD.he\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-10 22:43+0300\n"
"PO-Revision-Date: 2012-07-10 22:44+0200\n"
"POT-Creation-Date: 2012-03-24 19:08+0200\n"
"PO-Revision-Date: 2012-03-24 19:08+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <he@li.org>\n"
"Language: he\n"
@@ -20,17 +20,17 @@ msgstr ""
"X-Generator: KBabel 1.10.2\n"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "חלונות"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "View split on left"
msgstr "פיצול הצפייה משמאל"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:2
msgid "View split on right"
msgstr "פיצול הצפייה מימין"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Windows"
msgstr "חלונות"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: ../src/compositor/compositor.c:492
@@ -38,7 +38,7 @@ msgstr "פיצול הצפייה מימין"
msgid "Another compositing manager is already running on screen %i on display \"%s\"."
msgstr "מנהל תצוגת חלונות אחר כבר פועל במסך %i בתצוגה \"%s\"."
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "אירוע פעמון"
@@ -68,12 +68,12 @@ msgstr "ה_מתנה"
msgid "_Force Quit"
msgstr "_אילוץ סגירה"
#: ../src/core/display.c:380
#: ../src/core/display.c:387
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Missing %s extension required for compositing"
#: ../src/core/display.c:446
#: ../src/core/display.c:453
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Failed to open X Window System display '%s'\n"
@@ -83,36 +83,36 @@ msgstr "Failed to open X Window System display '%s'\n"
msgid "Some other program is already using the key %s with modifiers %x as a binding\n"
msgstr "תוכנית אחרת כבר משתמשת במקש %s עם המקש %x כצירוף\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "Disable connection to session manager"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "Replace the running window manager"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "Specify session management ID"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "X Display to use"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "Initialize session from savefile"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "Make X calls synchronous"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Failed to scan themes directory: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
msgstr "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -135,54 +135,54 @@ msgid "Print version"
msgstr "Print version"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "תוסף ה־mutter לשימוש"
msgid "Comma-separated list of compositor plugins"
msgstr "Comma-separated list of compositor plugins"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1077
msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
msgstr "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "Could not parse font description \"%s\" from GSettings key %s\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1218
#, c-format
msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
msgstr "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1739
#, c-format
msgid "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
msgstr "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "סביבת עבודה %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Screen %d on display '%s' is invalid\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"
msgstr "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "Could not acquire window manager selection on screen %d display \"%s\"\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Screen %d on display \"%s\" already has a window manager\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Could not release screen %d on display \"%s\"\n"
@@ -241,45 +241,45 @@ msgstr "Unknown element %s"
msgid "These windows do not support &quot;save current setup&quot; and will have to be restarted manually next time you log in."
msgstr "חלונות אלו אינם תומכים ב&quot;שמירת ההגדרות הנוכחיות&quot;, ויהיה צורך באתחול ידני בכניסה הבאה שלך."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Failed to open debug log: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Failed to fdopen() log file %s: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "Opened log file %s\n"
#: ../src/core/util.c:115
#: ../src/core/util.c:146
#: ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter הודר ללא תמיכה במצב פירוט\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "Window manager: "
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "Bug in window manager: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "Window manager warning: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "Window manager error: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7266
#, c-format
msgid "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
msgstr "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
@@ -291,27 +291,27 @@ msgstr "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADE
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:7931
#, c-format
msgid "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
msgstr "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Application set a bogus _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (מעל %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
@@ -347,68 +347,76 @@ msgid "Mutter"
msgstr "Mutter"
#: ../src/org.gnome.mutter.gschema.xml.in.h:1
msgid "Modifier to use for extended window management operations"
msgstr "Modifier to use for extended window management operations"
#: ../src/org.gnome.mutter.gschema.xml.in.h:2
msgid "This key will initiate the \"overlay\", which is a combination window overview and application launching system. The default is intended to be the \"Windows key\" on PC hardware. It's expected that this binding either the default or set to the empty string."
msgstr "This key will initiate the \"overlay\", which is a combination window overview and application launching system. The default is intended to be the \"Windows key\" on PC hardware. It's expected that this binding either the default or set to the empty string."
#: ../src/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs"
msgstr "Attach modal dialogs"
#: ../src/org.gnome.mutter.gschema.xml.in.h:2
msgid "Cancel tab popup"
msgstr "Cancel tab popup"
#: ../src/org.gnome.mutter.gschema.xml.in.h:3
msgid "Determines whether hidden windows (i.e., minimized windows and windows on other workspaces than the current one) should be kept alive."
msgstr "Determines whether hidden windows (i.e., minimized windows and windows on other workspaces than the current one) should be kept alive."
#: ../src/org.gnome.mutter.gschema.xml.in.h:4
msgid "When true, instead of having independent titlebars, modal dialogs appear attached to the titlebar of the parent window and are moved together with the parent window."
msgstr "When true, instead of having independent titlebars, modal dialogs appear attached to the titlebar of the parent window and are moved together with the parent window."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Enable edge tiling when dropping windows on screen edges"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid "If enabled, dropping windows on vertical screen edges maximizes them vertically and resizes them horizontally to cover half of the available area. Dropping windows on the top screen edge maximizes them completely."
msgstr "If enabled, dropping windows on vertical screen edges maximizes them vertically and resizes them horizontally to cover half of the available area. Dropping windows on the top screen edge maximizes them completely."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
msgstr "Workspaces are managed dynamically"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid "Determines whether workspaces are managed dynamically or whether there's a static number of workspaces (determined by the num-workspaces key in org.gnome.desktop.wm.preferences)."
msgstr "Determines whether workspaces are managed dynamically or whether there's a static number of workspaces (determined by the num-workspaces key in org.gnome.desktop.wm.preferences)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary"
msgstr "Workspaces only on primary"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid "Determines whether workspace switching should happen for windows on all monitors or only for windows on the primary monitor."
msgstr "Determines whether workspace switching should happen for windows on all monitors or only for windows on the primary monitor."
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup"
msgstr "No tab popup"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid "Determines whether the use of popup and highlight frame should be disabled for window cycling."
msgstr "Determines whether the use of popup and highlight frame should be disabled for window cycling."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Determines whether workspace switching should happen for windows on all monitors or only for windows on the primary monitor."
msgstr "Determines whether workspace switching should happen for windows on all monitors or only for windows on the primary monitor."
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid "Determines whether workspaces are managed dynamically or whether there's a static number of workspaces (determined by the num-workspaces key in org.gnome.desktop.wm.preferences)."
msgstr "Determines whether workspaces are managed dynamically or whether there's a static number of workspaces (determined by the num-workspaces key in org.gnome.desktop.wm.preferences)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Draggable border width"
msgstr "Draggable border width"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Enable edge tiling when dropping windows on screen edges"
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "If enabled, dropping windows on vertical screen edges maximizes them vertically and resizes them horizontally to cover half of the available area. Dropping windows on the top screen edge maximizes them completely."
msgstr "If enabled, dropping windows on vertical screen edges maximizes them vertically and resizes them horizontally to cover half of the available area. Dropping windows on the top screen edge maximizes them completely."
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid "Live Hidden Windows"
msgstr "Live Hidden Windows"
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Modifier to use for extended window management operations"
msgstr "Modifier to use for extended window management operations"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid "No tab popup"
msgstr "No tab popup"
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Select window from tab popup"
msgstr "Select window from tab popup"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid "The amount of total draggable borders. If the theme's visible borders are not enough, invisible borders will be added to meet this value."
msgstr "The amount of total draggable borders. If the theme's visible borders are not enough, invisible borders will be added to meet this value."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Select window from tab popup"
msgstr "Select window from tab popup"
msgid "This key will initiate the \"overlay\", which is a combination window overview and application launching system. The default is intended to be the \"Windows key\" on PC hardware. It's expected that this binding either the default or set to the empty string."
msgstr "This key will initiate the \"overlay\", which is a combination window overview and application launching system. The default is intended to be the \"Windows key\" on PC hardware. It's expected that this binding either the default or set to the empty string."
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid "Cancel tab popup"
msgstr "Cancel tab popup"
msgid "When true, instead of having independent titlebars, modal dialogs appear attached to the titlebar of the parent window and are moved together with the parent window."
msgstr "When true, instead of having independent titlebars, modal dialogs appear attached to the titlebar of the parent window and are moved together with the parent window."
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Workspaces are managed dynamically"
msgstr "Workspaces are managed dynamically"
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Workspaces only on primary"
msgstr "Workspaces only on primary"
#: ../src/tools/mutter-message.c:123
#, c-format
@@ -615,247 +623,247 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "top"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "bottom"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "left"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "right"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "frame geometry does not specify \"%s\" dimension"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "frame geometry does not specify dimension \"%s\" for border \"%s\""
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "Button aspect ratio %g is not reasonable"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Frame geometry does not specify size of buttons"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Gradients should have at least two colors"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
msgstr "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid"
msgstr "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format"
msgstr "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
msgstr "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
msgstr "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Did not understand state \"%s\" in color specification"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Did not understand color component \"%s\" in color specification"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
msgstr "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Could not parse alpha value \"%s\" in blended color"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Could not parse shade factor \"%s\" in shaded color"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Shade factor \"%s\" in shaded color is negative"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Could not parse color \"%s\""
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Coordinate expression contains character '%s' which is not allowed"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid "Coordinate expression contains floating point number '%s' which could not be parsed"
msgstr "Coordinate expression contains floating point number '%s' which could not be parsed"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Coordinate expression contains integer '%s' which could not be parsed"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid "Coordinate expression contained unknown operator at the start of this text: \"%s\""
msgstr "Coordinate expression contained unknown operator at the start of this text: \"%s\""
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Coordinate expression was empty or not understood"
#: ../src/ui/theme.c:2110
#: ../src/ui/theme.c:2120
#: ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121
#: ../src/ui/theme.c:2131
#: ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Coordinate expression results in division by zero"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid "Coordinate expression tries to use mod operator on a floating-point number"
msgstr "Coordinate expression tries to use mod operator on a floating-point number"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Coordinate expression has an operator \"%s\" where an operand was expected"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "Coordinate expression had an operand where an operator was expected"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Coordinate expression ended with an operator instead of an operand"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
msgstr "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
#: ../src/ui/theme.c:2396
#: ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407
#: ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "Coordinate expression had unknown variable or constant \"%s\""
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Coordinate expression parser overflowed its buffer."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "Coordinate expression had a close parenthesis with no open parenthesis"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "Coordinate expression had an open parenthesis with no close parenthesis"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "Coordinate expression doesn't seem to have any operators or operands"
#: ../src/ui/theme.c:2812
#: ../src/ui/theme.c:2832
#: ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822
#: ../src/ui/theme.c:2842
#: ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Theme contained an expression that resulted in an error: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
msgstr "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
#: ../src/ui/theme.c:5009
#: ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066
#: ../src/ui/theme.c:5091
#, c-format
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Failed to load theme \"%s\": %s\n"
#: ../src/ui/theme.c:5218
#: ../src/ui/theme.c:5225
#: ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239
#: ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275
#: ../src/ui/theme.c:5282
#: ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296
#: ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "No <%s> set for theme \"%s\""
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
msgstr "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
#: ../src/ui/theme.c:5650
#: ../src/ui/theme.c:5712
#: ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709
#: ../src/ui/theme.c:5771
#: ../src/ui/theme.c:5834
#, c-format
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr "User-defined constants must begin with a capital letter; \"%s\" does not"
#: ../src/ui/theme.c:5658
#: ../src/ui/theme.c:5720
#: ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717
#: ../src/ui/theme.c:5779
#: ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Constant \"%s\" has already been defined"
@@ -1227,7 +1235,7 @@ msgstr "מלל לא מורשה בתג <%s>"
msgid "<%s> specified twice for this theme"
msgstr "<%s> צוין פעמיים עבור ערכת נושא זו"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Failed to find a valid file for theme %s\n"
@@ -1424,19 +1432,6 @@ msgstr "y value was %d, %d was expected"
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "Comma-separated list of compositor plugins"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgid "Live Hidden Windows"
#~ msgstr "Live Hidden Windows"
#~ msgid "Close Window"
#~ msgstr "סגור חלון"
@@ -1773,6 +1768,9 @@ msgstr "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
#~ msgid "Error setting clutter plugin list: %s\n"
#~ msgstr "ארעה שגיאה בהגדרת רשימת התוספים של clutter: %s\n"
#~ msgid "Clutter Plugins"
#~ msgstr "תוספי Clutter"
#~ msgid "Plugins to load for the Clutter-based compositing manager."
#~ msgstr "Plugins to load for the Clutter-based compositing manager."

887
po/id.po

File diff suppressed because it is too large Load Diff

261
po/nb.po
View File

@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: mutter 3.5.x\n"
"Project-Id-Version: mutter 3.3.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-10 07:57+0200\n"
"PO-Revision-Date: 2012-07-10 07:58+0200\n"
"POT-Creation-Date: 2012-03-12 18:54+0100\n"
"PO-Revision-Date: 2012-03-12 18:54+0100\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian bokmål <i18n-no@lister.ping.uio.no>\n"
"Language: \n"
@@ -36,7 +36,7 @@ msgid ""
"\"."
msgstr "En annen compositing manager kjører skjerm %i på display «%s»."
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "Klokkehendelse"
@@ -70,12 +70,12 @@ msgstr "_Vent"
msgid "_Force Quit"
msgstr "_Tvungen nedstenging"
#: ../src/core/display.c:380
#: ../src/core/display.c:361
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Mangler utvidelsen %s som kreves for komposittfunksjon"
#: ../src/core/display.c:446
#: ../src/core/display.c:427
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Feil under åpning av X Window System skjerm «%s»\n"
@@ -89,36 +89,36 @@ msgstr ""
"Et annet program bruker allerede nøkkelen %s med modifikatorer %x som "
"binding\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "Deaktiver tilkobling til sesjonshåndtereren"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "Erstatt kjørende vindushåndterer"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "Oppgi sesjonshåndterings-ID"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "X-skjerm som skal brukes"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "Initier sesjonen fra en lagret fil"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "Gjør X-kall synkrone"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Feil under søk i temakatalog: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -145,10 +145,10 @@ msgid "Print version"
msgstr "Skriv versjonsnummer"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "Mutter-tillegg som skal brukes"
msgid "Comma-separated list of compositor plugins"
msgstr "Kommaseparert liste av tillegg for compositor"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
@@ -156,12 +156,12 @@ msgstr ""
"Funksjonalitet for å gå rundt ødelagte programmer er deaktivert. Noen "
"programmer vil kanskje ikke oppføre seg korrekt.\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "Kunne ikke tolke skriftbeskrivelsen «%s» fra GSettings-nøkkel %s\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
@@ -170,7 +170,7 @@ msgstr ""
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for endring av "
"musknapp\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1739
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -179,17 +179,17 @@ msgstr ""
"«%s» funnet i konfigurasjonsdatabasen er ikke en gyldig verdi for "
"tastaturbinding «%s»\n"
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "Arbeidsområde %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Skjerm %d på display «%s» er ugyldig\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -198,19 +198,19 @@ msgstr ""
"Skjerm %d på display «%s» har allerede en vindushåndterer; prøv å bruke "
"flagget --replace for å erstatte aktiv vindushåndterer.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr ""
"Kunne ikke hente utvalg fra vinduhåndterer på skjerm %d, display «%s»\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Skjerm %d på display «%s» har allerede en vinduhåndterer\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Kunne ikke slippe skjerm %d på display «%s»\n"
@@ -270,44 +270,44 @@ msgstr ""
"Disse vinduene støtter ikke &quot;lagre aktiv konfigurasjon&quot;og vil "
"måtte startes på nytt manuelt neste gang du logger inn."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Feil under åpning av feilsøkingslogg: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Feil under fdopen() av loggfil %s: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "Åpnet loggfil %s\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Mutter er kompilert uten støtte for «verbose» modus\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "Vindushåndterer: "
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "Feil i vindushåndterer: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "Advarsel fra vindushåndterer: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "Feil i vindushåndterer: "
#. first time through
#: ../src/core/window.c:7237
#: ../src/core/window.c:7224
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -323,7 +323,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7902
#: ../src/core/window.c:7887
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@@ -333,22 +333,22 @@ msgstr ""
"men setter minste størrelse %d x %d og maks størrelse %d x %d; dette virker "
"ikke fornuftig.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Programmet satte en feil _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (på %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "Ugyldig WM_TRANSIENT_FOR vindu 0x%lx oppgitt for %s.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "WM_TRANSIENT_FOR vindu 0x%lx for %s ville skapt en løkke.\n"
@@ -416,10 +416,22 @@ msgstr ""
"individuelle tittellinjer."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Live Hidden Windows"
msgstr "Levende skjulte vinduer"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"Bestemmer om skjulte vinduer, f.eks minimerte vinduer og vinduer på andre "
"arbeidsområder enn aktivt arbeidsområde, skal holdes i live."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Slå på kantflising ved slipp av vinduer på skjermkantene"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
@@ -430,25 +442,22 @@ msgstr ""
"skjermkanter. Hvis vindu slippes på øverste kant av skjermen maksimeres de "
"fullstendig."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces are managed dynamically"
msgstr "Arbeidsområder håndteres dynamisk"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
"Bestemmer om arbeidsområder skal håndteres dynamisk eller om det er et fast "
"antall arbeidsområder (bestemt av num-workspaces nøkkelen i org.gnome."
"desktop.wm.preferences)."
msgstr "Bestemmer om arbeidsområder skal håndteres dynamisk eller om det er et fast antall arbeidsområder (bestemt av num-workspaces nøkkelen i org.gnome.desktop.wm.preferences)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Workspaces only on primary"
msgstr "Arbeidsområder kun på primær skjerm"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
@@ -456,11 +465,11 @@ msgstr ""
"Bestemmer om bytting mellom arbeidsområder skal skje for vinduer på alle "
"skjermer eller kun på primær skjerm."
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "No tab popup"
msgstr "Ingen tabulatordialog"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
@@ -468,11 +477,11 @@ msgstr ""
"Bestemmer om bruk av dialog og uthevingsramme skal slås av for bytting "
"mellom vinduer."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Bredde på drakant"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
@@ -480,11 +489,11 @@ msgstr ""
"Total mengde med drakant. Hvis temas synlige kanter ikke er nok vil usynlige "
"kanter legges til for å imøtekomme denne verdien."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Select window from tab popup"
msgstr "Fjern vindu fra tabulatordialog"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Cancel tab popup"
msgstr "Avbryt tabulatordialog"
@@ -493,6 +502,50 @@ msgstr "Avbryt tabulatordialog"
msgid "Usage: %s\n"
msgstr " Bruk: %s\n"
#: ../src/ui/frames.c:1158
msgid "Close Window"
msgstr "Lukk vindu"
#: ../src/ui/frames.c:1161
msgid "Window Menu"
msgstr "Vindumeny"
#: ../src/ui/frames.c:1164
msgid "Minimize Window"
msgstr "Minimer vindu"
#: ../src/ui/frames.c:1167
msgid "Maximize Window"
msgstr "Maksimer vindu"
#: ../src/ui/frames.c:1170
msgid "Restore Window"
msgstr "Gjenopprett vindu"
#: ../src/ui/frames.c:1173
msgid "Roll Up Window"
msgstr "Rull opp vindu"
#: ../src/ui/frames.c:1176
msgid "Unroll Window"
msgstr "Rull ned vindu"
#: ../src/ui/frames.c:1179
msgid "Keep Window On Top"
msgstr "Plasser vindu i forgrunnen"
#: ../src/ui/frames.c:1182
msgid "Remove Window From Top"
msgstr "Fjern vindu fra forgrunnen"
#: ../src/ui/frames.c:1185
msgid "Always On Visible Workspace"
msgstr "Alltid på synlig arbeidsområde"
#: ../src/ui/frames.c:1188
msgid "Put Window On Only One Workspace"
msgstr "Plasser vindu kun på ett arbeidsområde"
#. Translators: Translate this string the same way as you do in libwnck!
#: ../src/ui/menu.c:69
msgid "Mi_nimize"
@@ -692,48 +745,48 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "topp"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "bunn"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "venstre"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "høyre"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "rammegeometrien spesifiserer ikke «%s»-dimensjon"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "rammegeometri spesifiserer ikke dimensjon «%s» for kant «%s»"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "Aspektrate %g for knapp er ikke fornuftig"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Rammegeometrien spesifiserer ikke størrelse på knapper"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Gradienter må ha minst to farger"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@@ -742,7 +795,7 @@ msgstr ""
"Egendefinert GTK-fargespesifikasjon må ha fargenavn og reserve i parantes, f."
"eks gtk:custom(foo,bar); kunne ikke lese «%s»"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
@@ -751,7 +804,7 @@ msgstr ""
"Ugyldig tegn «%c» i parameter color_name for gtk:custom, kun A-Za-z0-9-_ er "
"gyldig"
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@@ -760,7 +813,7 @@ msgstr ""
"Gtk:custom-format er «gtk:custom(color_name,fallback)», «%s» passer ikke i "
"formatet"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -769,7 +822,7 @@ msgstr ""
"GTK-fargespesifikasjon må ha tilstand i klammer, f.eks. gtk:fg[NORMAL], hvor "
"NORMAL er tilstanden; kunne ikke lese «%s»"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -778,17 +831,17 @@ msgstr ""
"GTK-fargespesifikasjon må ha en avsluttende klamme etter tilstanden, f.eks. "
"gtk:fg[NORMAL], hvor NORMAL er tilstanden; kunne ikke lese «%s»"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Forsto ikke tilstand «%s» i fargespesifikasjonen"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Forsto ikke fargekomponent «%s» i fargespesifikasjonen"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
@@ -797,56 +850,56 @@ msgstr ""
"Blandingsformat er «blend/bg_color/fg_color/alpha», «%s» passer ikke i "
"formatet"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "Kunne ikke lese alpha-verdi «%s» i blandet farge"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "Alpha-verdi «%s» i blandet farge er ikke mellom 0.0 og 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr ""
"Skyggeformatet er «shade/base_color/factor», «%s» passer ikke i formatet"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Kunne ikke lese skyggefaktor «%s» i skyggelagt farge"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "Skyggefaktor «%s» i skyggelagt farge er negativ"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Kunne ikke lese farge «%s»"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Koordinatuttrykk inneholder tegn «%s» som ikke er tillatt"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "Koordinatuttrykk inneholder flyttall «%s» som ikke kunne tolkes"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Koordinatuttrykk inneholder heltall «%s» som ikke kunne tolkes"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
@@ -855,39 +908,39 @@ msgstr ""
"Koordinatuttrykket inneholdt en ukjent operator ved begynnelsen av denne "
"teksten: «%s»"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Koordinatuttrykket var tomt eller ble ikke forstått"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Koordinatuttrykket resulterer i divisjon med null"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "Koordinatuttrykket prøver å bruke mod-operator på et flyttall"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Koordinatuttrykket har en operator «%s» hvor en operand var ventet"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "Koordinatuttrykket hadde en operand hvor en operator var ventet"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Koordinatuttrykket sluttet med en operator i stedet for en operand"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
@@ -896,38 +949,38 @@ msgstr ""
"Koordinatuttrykket har en operator «%c» etter en operator «%c» og ingen "
"operand mellom dem."
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "Koordinatuttrykket haddeen ukjent variabel eller konstant «%s»"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Tolkeren for koordinatuttrykk oversteg buffergrensen."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "Koordinatuttrykket hadde en parantes slutt uten parantes start"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "Koordinatuttrykket hadde en åpen parantes uten en avsluttende parantes"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr ""
"Koordinatuttrykket ser ikke ut til å ha noen operatorer eller operander"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Tema inneholdt et uttrykk som resulterte i en feil: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -936,25 +989,25 @@ msgstr ""
"<button function=«%s» state=«%s» draw_ops=«ett-eller-annet»/> må "
"spesifiseres for denne rammestilen"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"Mangler <frame state=«%s» resize=«%s» focus=«%s» stil=«ett-eller-annet»/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Klarte ikke å laste tema «%s»: %s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "<%s> er ikke satt for tema «%s»"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -963,14 +1016,14 @@ msgstr ""
"Ingen rammestil satt for vindutype «%s» i tema «%s», legg til et <window "
"type=«%s» style_set=«ett-eller-annet»/>-element"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr ""
"Brukerdefinerte konstanter må begynne med stor bokstav; «%s» gjør ikke det"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Konstant «%s» er allerede definert"
@@ -1351,7 +1404,7 @@ msgstr "Ingen tekst er tillatt inne i element <%s>"
msgid "<%s> specified twice for this theme"
msgstr "<%s> spesifisert to ganger for dette temaet"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Fant ikke en gyldig fil for tema %s\n"

3717
po/oc.po

File diff suppressed because it is too large Load Diff

370
po/sl.po
View File

@@ -10,14 +10,14 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=mutter&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-06-06 11:44+0000\n"
"PO-Revision-Date: 2012-06-08 21:23+0100\n"
"POT-Creation-Date: 2012-03-12 09:11+0000\n"
"PO-Revision-Date: 2012-03-12 12:10+0100\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: \n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
"X-Poedit-Language: Slovenian\n"
"X-Poedit-Country: SLOVENIA\n"
@@ -42,7 +42,7 @@ msgstr "Poglej razdelek na desni"
msgid "Another compositing manager is already running on screen %i on display \"%s\"."
msgstr "Drug upravljalnik sestavljanja je že zagnan na zaslonu %i prikaza \"%s\"."
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "Dogodek zvonjenja"
@@ -72,12 +72,12 @@ msgstr "_Počakaj"
msgid "_Force Quit"
msgstr "_Vsili konec"
#: ../src/core/display.c:380
#: ../src/core/display.c:361
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "Manjka razširitev %s, ki je ključna za sestavljanje"
#: ../src/core/display.c:446
#: ../src/core/display.c:427
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "Ni mogoče odpreti zaslona '%s' okenskega sistema X\n"
@@ -88,36 +88,36 @@ msgstr "Ni mogoče odpreti zaslona '%s' okenskega sistema X\n"
msgid "Some other program is already using the key %s with modifiers %x as a binding\n"
msgstr "Tipko %s s spremenilnikom %x uporablja že nek drug program\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "Onemogoči povezavo z upravljalnikom sej"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "Zamenjaj trenutni upravljalnik oken"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "Navedite ID upravljanja seje"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "Zaslon X za uporabo"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "Začni sejo iz shranjene datoteke"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "Uskladi klice X"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "Ni mogoče preiskati mape tem: %s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid "Could not find a theme! Be sure %s exists and contains the usual themes.\n"
msgstr "Ni mogoče najti teme! Prepričajte se, da %s obstaja in vsebuje običajni zapis teme.\n"
@@ -140,55 +140,55 @@ msgid "Print version"
msgstr "Izpiši različico"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "Vstavek Mutter za uporabo"
msgid "Comma-separated list of compositor plugins"
msgstr "Z vejico ločen seznam vstavkov sestavljanja"
#: ../src/core/prefs.c:1064
#: ../src/core/prefs.c:1077
msgid "Workarounds for broken applications disabled. Some applications may not behave properly.\n"
msgstr "Obhodi za pokvarjene programe so onemogočeni. Nekateri programi se morda ne bodo odzivali na pričakovan način.\n"
#: ../src/core/prefs.c:1139
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "Ni mogoče razčleniti opisa pisave \"%s\" iz ključa GSettings %s\n"
#: ../src/core/prefs.c:1205
#: ../src/core/prefs.c:1218
#, c-format
msgid "\"%s\" found in configuration database is not a valid value for mouse button modifier\n"
msgstr "\"%s\", najden v podatkovni zbirki nastavitev, ni veljaven spremenilnik za miškine gumbe.\n"
#: ../src/core/prefs.c:1723
#: ../src/core/prefs.c:1739
#, c-format
msgid "\"%s\" found in configuration database is not a valid value for keybinding \"%s\"\n"
msgstr "\"%s\", najden v podatkovni zbirki nastavitev, ni veljaven ključ za tipkovno bližnjico \"%s\"\n"
# G:1 K:0 O:0
#: ../src/core/prefs.c:1820
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "Delovna površina %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "Zaslon %d na prikazu '%s' ni veljaven\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"
msgstr "Zaslon %d na prikazu \"%s\" je že upravljan z upravljalnikom oken; poskušajte uporabiti možnost --replace za zamenjavo trenutnega.\n"
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid "Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "Ni mogoče dobiti izbire upravljalnika oken na zaslonu %d prikaza \"%s\"\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "Zaslon %d na prikazu \"%s\" je že upravljan z upravljalnikom oken\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "Ni mogoče opustiti zaslona %d na prikazu \"%s\"\n"
@@ -249,46 +249,46 @@ msgstr "Neznan predmet %s"
msgid "These windows do not support &quot;save current setup&quot; and will have to be restarted manually next time you log in."
msgstr "Ta okna ne podpirajo možnosti &quot;shranjevanja trenutnih nastavitev&quot;, zato jih bo treba ob naslednji prijavi zagnati ročno."
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "Napaka med odpiranjem dnevnika razhroščevanja: %s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "Napaka ukaza fdopen() dnevniške datoteke %s: %s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "Odprta dnevniška datoteka %s\n"
#: ../src/core/util.c:115
#: ../src/core/util.c:146
#: ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "Program Mutter je kodno preveden brez podpore za podrobni način izpisovanja\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "Upravljalnik oken: "
# G:4 K:0 O:0
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "Hrošč v upravljalniku oken: "
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "Opozorilo upravljalnika oken: "
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "Napaka upravljalnika oken: "
#. first time through
#: ../src/core/window.c:7234
#: ../src/core/window.c:7224
#, c-format
msgid "Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"
msgstr "Okno %s nastavi svoj SM_CLIENT_ID, namesto, da bi nastavilo WM_CLIENT_LEADER kot je zavedeno v ICCCM.\n"
@@ -300,27 +300,27 @@ msgstr "Okno %s nastavi svoj SM_CLIENT_ID, namesto, da bi nastavilo WM_CLIENT_LE
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7899
#: ../src/core/window.c:7887
#, c-format
msgid "Window %s sets an MWM hint indicating it isn't resizable, but sets min size %d x %d and max size %d x %d; this doesn't make much sense.\n"
msgstr "Okno %s določi namig MWM, ki pove, da ni mogoče spremeniti velikosti, hkrati pa določi najmanjšo velikost na %d x %d in največjo na %d x %d; vrednost ni smiselna.\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "Program je nastavil pokvarjen _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s (na %s)"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "Neveljaven WM_TRANSIENT_FOR za okno 0x%lx naveden za %s.\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "Predmet WM_TRANSIENT_FOR okna 0x%lx za %s lahko ustvari zanko.\n"
@@ -372,50 +372,58 @@ msgid "When true, instead of having independent titlebars, modal dialogs appear
msgstr "Izbrana možnost omogoči, da je namesto samostojnih nazivnih vrstic, na to mesto pripeto modalno pogovorno okno, ki se premika z nadrejenim oknom."
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Live Hidden Windows"
msgstr "Ohranjena skrita okna"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid "Determines whether hidden windows (i.e., minimized windows and windows on other workspaces than the current one) should be kept alive."
msgstr "Določa ali naj se skrita okna (skrčena okna in okna na drugih delovnih površinah) ohranjajo odprta."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "Omogoči prilagajanje velikosti okna ob dotiku robov zaslona"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid "If enabled, dropping windows on vertical screen edges maximizes them vertically and resizes them horizontally to cover half of the available area. Dropping windows on the top screen edge maximizes them completely."
msgstr "Izbrana možnost omogoča, da se okna, ki se dotaknejo navpičnih robov zaslona razpeta po navpični osi in razširjena na polovično širino. Dotik vrhnjega roba razpne okno čez cel zaslon."
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces are managed dynamically"
msgstr "Število delovnih površin je spremenljivo"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid "Determines whether workspaces are managed dynamically or whether there's a static number of workspaces (determined by the num-workspaces key in org.gnome.desktop.wm.preferences)."
msgstr "Možnost določa ali je število delovnih površin spremenljivo ali pa je to število stalno (določenih s ključem števila delovnih površin med možnostmi v org.gnome.desktop.wm.preferences)."
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Workspaces only on primary"
msgstr "Delovne površine le na prvem zaslonu"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid "Determines whether workspace switching should happen for windows on all monitors or only for windows on the primary monitor."
msgstr "Določa ali naj se delovne površine preklapljajo na vseh zaslonih ali le na prvem, glavnem zaslonu."
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "No tab popup"
msgstr "Brez pojavnih zavihkov"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid "Determines whether the use of popup and highlight frame should be disabled for window cycling."
msgstr "Določa ali naj bo uporaba pojavnih zavihkov in poudarjanja onemogočena med kroženjem oken."
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Draggable border width"
msgstr "Prilagodljiva obroba pravokotnika"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid "The amount of total draggable borders. If the theme's visible borders are not enough, invisible borders will be added to meet this value."
msgstr "Delež skupne prilagodljive obrobe. V kolikor vidni robovi teme niso dovolj, so dodane nevidne obrobe, za dodatno prilagajanje."
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Select window from tab popup"
msgstr "Izbor okna iz pojavnega zavihka"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Cancel tab popup"
msgstr "Prekliči pojavni zavihek"
@@ -424,6 +432,54 @@ msgstr "Prekliči pojavni zavihek"
msgid "Usage: %s\n"
msgstr "Uporaba: %s\n"
#: ../src/ui/frames.c:1158
msgid "Close Window"
msgstr "Zapri okno"
# G:1 K:1 O:0
#: ../src/ui/frames.c:1161
msgid "Window Menu"
msgstr "Meni okna"
# G:0 K:1 O:0
#: ../src/ui/frames.c:1164
msgid "Minimize Window"
msgstr "Skrči okno"
#: ../src/ui/frames.c:1167
msgid "Maximize Window"
msgstr "Razpni okno"
#: ../src/ui/frames.c:1170
msgid "Restore Window"
msgstr "Obnovi okno"
# G:2 K:0 O:0
#: ../src/ui/frames.c:1173
msgid "Roll Up Window"
msgstr "Zavij okno"
#: ../src/ui/frames.c:1176
msgid "Unroll Window"
msgstr "Odvij okno"
#: ../src/ui/frames.c:1179
msgid "Keep Window On Top"
msgstr "Ohrani okno na vrhu"
#: ../src/ui/frames.c:1182
msgid "Remove Window From Top"
msgstr "Odstrani okno z vrha"
# G:1 K:0 O:0
#: ../src/ui/frames.c:1185
msgid "Always On Visible Workspace"
msgstr "Vedno na vidni delovni površini"
#: ../src/ui/frames.c:1188
msgid "Put Window On Only One Workspace"
msgstr "Postavi okno na samo eno delovno površino"
#. Translators: Translate this string the same way as you do in libwnck!
#: ../src/ui/menu.c:69
msgid "Mi_nimize"
@@ -642,251 +698,251 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "zgoraj"
# G:12 K:5 O:0
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "spodaj"
# G:10 K:4 O:0
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "levo"
# G:1 K:0 O:0
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "desno"
# G:1 K:0 O:0
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "geometrija okvirja ne navaja dimenzije \"%s\""
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "geometrija okvirja ne navaja dimenzije \"%s\" za rob \"%s\""
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "Vrednost razmerja gumba %g ni smiselna"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "Geometrija okvirja ne navaja velikosti gumbov"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "Prelivi bi morali imeti vsaj dve barvi"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid "GTK custom color specification must have color name and fallback in parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
msgstr "Navedba barve GTK mora biti opredeljena z imenom barve in v navednicah povrnjeno barvo , npr. gtk:izbirno(ime_barve,povrnjena_barva); ni mogoče razčleniti \"%s\""
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid "Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-_ are valid"
msgstr "Neveljaven znak '%c' v imenu barve gtk:izbirno; dovoljeni znaki so le A-Za-z0-9-_."
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid "Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not fit the format"
msgstr "Gtk:zapis po meri \"gtk:izbirno(ime_barve,povrnjena_barva)\", \"%s\" ne ustreza pravilni obliki."
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid "GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
msgstr "Navedba barve GTK mora vsebovati stanje v oglatih oklepajih, npr. gtk:fg[NORMAL], kjer je NORMAL stanje; ni mogoče razčleniti \"%s\""
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid "GTK color specification must have a close bracket after the state, e.g. gtk:fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
msgstr "Navedbi barve GTK manjka oglati zaklepaj za stanjem, npr. gtk:fg[NORMAL], kjer je NORMAL stanje; ni mogoče razčleniti \"%s\""
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "Ni mogoče razumeti stanja \"%s\" v navedbi barve "
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "Ni mogoče razumeti barvne komponente \"%s\" v navedbi barve"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid "Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the format"
msgstr "Oblika zapisa preliva je \"blend/bg_color/fg_color/alpha\", \"%s\" ne ustreza pravilni obliki"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "V prelivni barvi ni mogoče razčleniti vrednosti alfa \"%s\""
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "V prelivni barvi alfa vrednost \"%s\" ni med 0.0 in 1.0"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid "Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "Oblika zapisa barve senčenja je \"shade/base_color/factor\", \"%s\" ne ustreza pravilni obliki."
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "Ni mogoče razčleniti vrednosti senčenja \"%s\" v senčeni barvi"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "V senčeni barvi je vrednost senčenja \"%s\" negativna"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "Ni mogoče razčleniti barve \"%s\""
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "Izraz koordinat vsebuje znak '%s', ki pa ni dovoljen"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid "Coordinate expression contains floating point number '%s' which could not be parsed"
msgstr "Izraz koordinat vsebuje številko s plavajočo vejico '%s', ki je ni mogoče razčleniti"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "Izraz koordinat vsebuje celo število '%s', ki ga ni mogoče razčleniti"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid "Coordinate expression contained unknown operator at the start of this text: \"%s\""
msgstr "Izraz koordinat vsebuje neznan operator na začetku besedila: \"%s\""
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "Izraz koordinat je prazen ali pa ni v razumljivem zapisu"
#: ../src/ui/theme.c:2110
#: ../src/ui/theme.c:2120
#: ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121
#: ../src/ui/theme.c:2131
#: ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "Izraz koordinat povzroči deljenje z vrednostjo nič"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid "Coordinate expression tries to use mod operator on a floating-point number"
msgstr "Izraz koordinat poskuša uporabiti operator mod ali številko s plavajočo vejico"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid "Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "Izraz koordinat vsebuje operator \"%s\", kjer je pričakovan operand"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "Izraz koordinat vsebuje operand kjer je pričakovan operator"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "Izraz koordinat se konča z operatorjem namesto z operandom"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid "Coordinate expression has operator \"%c\" following operator \"%c\" with no operand in between"
msgstr "Izraz koordinat vsebuje operator \"%c\", ki sledi operatorju \"%c\", brez vmesnega operanda"
#: ../src/ui/theme.c:2396
#: ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407
#: ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "Izraz koordinat vsebuje neznano spremenljivko ali konstanto \"%s\""
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "Razčlenjevalnik izrazov koordinat je preplavil medpomnilnik."
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "Izraz koordinat vsebuje zaklepaj, ne pa tudi uklepaja"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "Izraz koordinat vsebuje uklepaj, vendar je brez zaklepaja"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "Videti je, da izraz koordinat ne vsebuje operatorjev ali operandov"
#: ../src/ui/theme.c:2812
#: ../src/ui/theme.c:2832
#: ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822
#: ../src/ui/theme.c:2842
#: ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "Tema vsebuje izraz, ki povzroča napako: %s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid "<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be specified for this frame style"
msgstr "Za ta slog okvirja mora biti naveden <button function=\"%s\" state=\"%s\" draw_ops=\"karkoli\"/>"
#: ../src/ui/theme.c:5009
#: ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066
#: ../src/ui/theme.c:5091
#, c-format
msgid "Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "Manjka <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"karkoli\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "Napaka med nalaganjem teme \"%s\": %s\n"
#: ../src/ui/theme.c:5218
#: ../src/ui/theme.c:5225
#: ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239
#: ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275
#: ../src/ui/theme.c:5282
#: ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296
#: ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "Ni nastavljena vrednost <%s> za temo \"%s\""
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid "No frame style set for window type \"%s\" in theme \"%s\", add a <window type=\"%s\" style_set=\"whatever\"/> element"
msgstr "Ni določenega sloga okvirja okna vrste \"%s\" v temi \"%s\". Dodajte predmet <window type=\"%s\" style_set=\"whatever\"/>"
#: ../src/ui/theme.c:5650
#: ../src/ui/theme.c:5712
#: ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709
#: ../src/ui/theme.c:5771
#: ../src/ui/theme.c:5834
#, c-format
msgid "User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr "Uporabniško določene konstante se morajo začeti z veliko črko; vrednost \"%s\" se ne"
#: ../src/ui/theme.c:5658
#: ../src/ui/theme.c:5720
#: ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717
#: ../src/ui/theme.c:5779
#: ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "Konstanta \"%s\" je že določena"
@@ -1258,7 +1314,7 @@ msgstr "Znotraj predmeta <%s> besedilo ni dovoljeno"
msgid "<%s> specified twice for this theme"
msgstr "Vrednost <%s> je za to temo navedena dvakrat"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "Ni mogoče najti veljavne datoteke za temo %s\n"
@@ -1455,18 +1511,84 @@ msgstr "vrednost y je %d, pričakovana pa je %d"
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "%d izjav koordinat razčlenjenih v %g sekundah (%g sekund v povprečju)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "Z vejico ločen seznam vstavkov sestavljanja"
#~ msgid "Switch to workspace 1"
#~ msgstr "Preklopi na delovno površino 1"
#~ msgid "Live Hidden Windows"
#~ msgstr "Ohranjena skrita okna"
#~ msgid "Switch to workspace 2"
#~ msgstr "Preklopi na delovno površino 2"
#~ msgid "Switch to workspace 3"
#~ msgstr "Preklopi na delovno površino 3"
#~ msgid "Switch to workspace 4"
#~ msgstr "Preklopi na delovno površino 4"
#~ msgid "Switch to workspace 5"
#~ msgstr "Preklopi na delovno površino 5"
#~ msgid "Switch to workspace 6"
#~ msgstr "Preklopi na delovno površino 6"
#~ msgid "Switch to workspace 7"
#~ msgstr "Preklopi na delovno površino 7"
#~ msgid "Switch to workspace 8"
#~ msgstr "Preklopi na delovno površino 8"
#~ msgid "Switch to workspace 9"
#~ msgstr "Preklopi na delovno površino 9"
#~ msgid "Switch to workspace 10"
#~ msgstr "Preklopi na delovno površino 10"
#~ msgid "Switch to workspace 11"
#~ msgstr "Preklopi na delovno površino 11"
#~ msgid "Switch to workspace 12"
#~ msgstr "Preklopi na delovno površino 12"
#~ msgid "Switch to workspace on the left of the current workspace"
#~ msgstr "Preklopi na delovno površino na levi od trenutne delovne površine"
#~ msgid "Switch to workspace on the right of the current workspace"
#~ msgstr "Preklopi na delovno površino na desni od trenutne delovne površine"
#~ msgid "Switch to workspace above the current workspace"
#~ msgstr "Preklopi na delovno površino nad trenutno delovno površino"
#~ msgid "Switch to workspace below the current workspace"
#~ msgstr "Preklopi na delovno površino pod trenutno delovno površino"
#~ msgid "Move between windows of an application, using a popup window"
#~ msgstr "Premakni med okni programa s pojavnim oknom"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "Določa ali naj se skrita okna (skrčena okna in okna na drugih delovnih "
#~ "površinah) ohranjajo odprta."
#~ "Move backward between windows of an application, using a popup window"
#~ msgstr "Premakni nazaj med okni programa s pojavnim oknom"
#~ msgid "Close Window"
#~ msgstr "Zapri okno"
#~ msgid "Move between windows, using a popup window"
#~ msgstr "Premakni med okni s pojavnim oknom"
#~ msgid "Move backward between windows, using a popup window"
#~ msgstr "Premakni nazaj med okni s pojavnim oknom"
#~ msgid "Move between panels and the desktop, using a popup window"
#~ msgstr "Premakni med pulti in namizjem s pojavnim oknom"
#~ msgid "Move backward between panels and the desktop, using a popup window"
#~ msgstr "Premakni nazaj med pulti in namizjem s pojavnim oknom"
#~ msgid "Move between windows of an application immediately"
#~ msgstr "Takoj premakni med okni programa"
#~ msgid "Move backward between windows of an application immediately"
#~ msgstr "Takoj premakni nazaj med okni programa"
#~ msgid "Move between windows immediately"
#~ msgstr "Takoj premakni med okni"
#~ msgid "Move backward between windows immediately"
#~ msgstr "Takoj premakni nazaj med okni"
#~ msgid "Move between panels and the desktop immediately"
#~ msgstr "Takoj premakni med pulti in namizjem"

661
po/te.po

File diff suppressed because it is too large Load Diff

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity 3.3.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-17 15:17+0800\n"
"PO-Revision-Date: 2012-07-17 15:17+0800\n"
"POT-Creation-Date: 2012-03-19 23:54+0800\n"
"PO-Revision-Date: 2012-03-19 23:55+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
"Language: \n"
@@ -20,17 +20,17 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "視窗"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "View split on left"
msgstr "檢視分割於左側"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:2
msgid "View split on right"
msgstr "檢視分割於右側"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Windows"
msgstr "視窗"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
@@ -41,7 +41,7 @@ msgid ""
"\"."
msgstr "在畫面「%2$s」中的第 %1$i 個螢幕中已啟動另一個組合視窗管理員。"
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "響鈴事件"
@@ -50,76 +50,76 @@ msgstr "響鈴事件"
msgid "Unknown window information request: %d"
msgstr "未知的視窗資訊要求:%d"
#: ../src/core/delete.c:114
#: ../src/core/delete.c:111
#, c-format
msgid "%s is not responding."
msgstr "%s 沒有回應。"
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> 沒有回應。"
#: ../src/core/delete.c:118
#: ../src/core/delete.c:114
msgid "Application is not responding."
msgstr "應用程式沒有回應。"
#: ../src/core/delete.c:123
#: ../src/core/delete.c:119
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr "你可以選擇稍等一下,或者強制程式立即結束。"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Wait"
msgstr "等待(_W)"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Force Quit"
msgstr "強制結束(_F)"
#: ../src/core/display.c:380
#: ../src/core/display.c:387
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "遺失複合視窗管理所需的 %s 延伸功能"
#: ../src/core/display.c:446
#: ../src/core/display.c:453
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "無法開啟 X Window 畫面‘%s\n"
#: ../src/core/keybindings.c:844
#: ../src/core/keybindings.c:852
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
"binding\n"
msgstr "其它程式已經使用了按鍵 %s 加上特殊按鍵 %x 作為按鍵組合\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "停用到作業階段管理程式的連線"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "取代執行中的視窗管理員"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "指定作業階段管理 ID"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "使用的 X 畫面"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "以 savefile 初始化作業階段"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "使用同步方式調用 X 函數"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "找不到佈景主題目錄:%s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -144,28 +144,28 @@ msgid "Print version"
msgstr "顯示版本"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "要使用的 Mutter 外掛程式"
msgid "Comma-separated list of compositor plugins"
msgstr "以逗號分隔的複合視窗外掛程式清單"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
msgstr "關閉了對不合規格的程式的支援。某些程式可能無法正常運作。\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "無法從 GSettings 設定鍵 %2$s 分析字型描述文字「%1$s」\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
"modifier\n"
msgstr "組態資料庫中的“%s”設定值不是有效的滑鼠按鈕修改功能鍵\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1739
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -173,17 +173,17 @@ msgid ""
msgstr "組態資料庫中的“%s”不是按鍵組合“%s”的有效設定值\n"
# (Abel) take care of the same string in libwnck
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "工作區 %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "畫面‘%2$s中的第 %1$d 個螢幕無效\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -191,18 +191,18 @@ msgid ""
msgstr "畫面‘%2$s中的第 %1$d 個螢幕已經有了視窗管理員;請嘗試使用 --replace 選項來替換目前的視窗管理員。\n"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "無法在畫面“%2$s”中的第 %1$d 個螢幕進行視窗管理員選擇程序\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "畫面“%2$s”中的第 %1$d 個螢幕已經有了視窗總管\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "無法釋放畫面“%2$s”中的第 %1$d 個螢幕\n"
@@ -260,44 +260,44 @@ msgid ""
"be restarted manually next time you log in."
msgstr "這些視窗不支援 &quot;儲存目前的設定&quot; ,必須在下次登入後自行啟動。"
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "無法開啟偵錯記錄檔:%s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "無法 fdopen() 記錄檔 %s%s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "已開啟記錄檔 %s\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "編譯 Mutter 時並沒有加入詳細偵錯模式的支援\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "視窗管理員:"
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "視窗總管出現錯誤:"
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "視窗總管警告:"
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "視窗總管錯誤:"
#. first time through
#: ../src/core/window.c:7234
#: ../src/core/window.c:7266
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -311,29 +311,29 @@ msgstr "視窗 %s 將 SM_CLIENT_ID 設定為該視窗本身,而不是 ICCCM
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7899
#: ../src/core/window.c:7931
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
"%d x %d and max size %d x %d; this doesn't make much sense.\n"
msgstr "視窗 %s 設定了 MWM 提示,表示它不可以調整大小,但又將大小下限定為 %d×%d 及將大小上限定為 %d×%d這種做法不符合常理。\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "程式設定了多餘的 _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s在 %s"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "%2$s 指定了無效的 WM_TRANSIENT_FOR 視窗 0x%1$lx。\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "%2$s 的 WM_TRANSIENT_FOR 視窗 0x%1$lx 會造成迴圈。\n"
@@ -369,73 +369,68 @@ msgid "Mutter"
msgstr "Mutter"
#: ../src/org.gnome.mutter.gschema.xml.in.h:1
msgid "Modifier to use for extended window management operations"
msgstr "用於延伸視窗管理操作程序的特殊按鍵"
#: ../src/org.gnome.mutter.gschema.xml.in.h:2
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
"\"Windows key\" on PC hardware. It's expected that this binding either the "
"default or set to the empty string."
msgstr "這個設定鍵會初始化「overlay」這是一個複合視窗概覽與應用程式執行系統。預設是要成為 PC 硬件上的「Windows key」。預期這個按鍵組含不是預設值就是設定為空字串。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs"
msgstr "附加模態對話盒"
#: ../src/org.gnome.mutter.gschema.xml.in.h:2
msgid "Cancel tab popup"
msgstr "取消分頁彈出項"
#: ../src/org.gnome.mutter.gschema.xml.in.h:3
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr "決定隱藏的視窗(如最小化的視窗和位於目前以外工作區的視窗)是否保持活動。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:4
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
"the parent window."
msgstr "當設為「true」將不會有獨立的標題列模態對話盒會附加在上層視窗的標題列並與上層視窗一起移動。"
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr "決定當視窗輪換時是否使用彈出式和強調框架。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "在螢幕邊緣放下視窗時啟用邊緣拼貼"
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr "決定工作區切換是否使用於所有螢幕的視窗或只用於主要螢幕的視窗。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr "如果啟用,將視窗拖放到螢幕垂直邊緣時會讓它們垂直最大化並調整水平方向大小覆蓋可用區域的一半。拖放視窗到螢幕頂端邊緣則會讓它們完全最大化。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Workspaces are managed dynamically"
msgstr "工作區以動態方式管理"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr "決定工作區以動態方式管理或是有固定數量的工作區 (以 org.gnome.desktop.wm.preferences 中的 num-workspaces 鍵值來決定)。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Draggable border width"
msgstr "可拖曳邊框闊度"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "在螢幕邊緣放下視窗時啟用邊緣拼貼"
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid "Workspaces only on primary"
msgstr "只有主要螢幕的工作區"
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr "如果啟用,將視窗拖放到螢幕垂直邊緣時會讓它們垂直最大化並調整水平方向大小覆蓋可用區域的一半。拖放視窗到螢幕頂端邊緣則會讓它們完全最大化。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr "決定工作區切換是否使用於所有螢幕的視窗或只用於主要螢幕的視窗。"
msgid "Live Hidden Windows"
msgstr "活動中的隱藏 Windows"
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Modifier to use for extended window management operations"
msgstr "用於延伸視窗管理操作程序的特殊按鍵"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid "No tab popup"
msgstr "沒有分頁彈出項"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr "決定當視窗輪換時是否使用彈出式和強調框架。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Draggable border width"
msgstr "可拖曳邊框闊度"
msgid "Select window from tab popup"
msgstr "從分頁彈出項選擇視窗"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
@@ -444,12 +439,27 @@ msgid ""
msgstr "所有可拖曳邊框的總數。如果布景的可視邊框不夠,會加入隱形邊框來符合這個數值。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Select window from tab popup"
msgstr "從分頁彈出項選擇視窗"
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
"\"Windows key\" on PC hardware. It's expected that this binding either the "
"default or set to the empty string."
msgstr "這個設定鍵會初始化「overlay」這是一個複合視窗概覽與應用程式執行系統。預設是要成為 PC 硬件上的「Windows key」。預期這個按鍵組含不是預設值就是設定為空字串。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid "Cancel tab popup"
msgstr "取消分頁彈出項"
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
"the parent window."
msgstr "當設為「true」將不會有獨立的標題列模態對話盒會附加在上層視窗的標題列並與上層視窗一起移動。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Workspaces are managed dynamically"
msgstr "工作區以動態方式管理"
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Workspaces only on primary"
msgstr "只有主要螢幕的工作區"
#: ../src/tools/mutter-message.c:123
#, c-format
@@ -671,261 +681,261 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "頂"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "底"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "左"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "右"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "邊框的位置大小中沒有指定“%s”部分的大小"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "邊框的位置大小中沒有指定“%2$s”邊框中的“%1$s”部分"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "按鈕的長寬比 %g 不合理"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "邊框的位置大小規格內未有指定按鈕的大小"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "漸變色至少應該有兩種顏色"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
"parentheses, e.g. gtk:custom(foo,bar); could not parse \"%s\""
msgstr "GTK 自選顏色規格規定必須有顏色名稱並加上封閉括號,例如 gtk:custom(foo,bar);無法分析「%s」"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
"_ are valid"
msgstr "gtk:custom 的 color_name 參數 '%c' 中有無效字符,只能使用 A-Za-z0-9-_ "
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
"fit the format"
msgstr "Gtk:custom 的格式是「gtk:custom(color_name,fallback)」,但「%s」不符合格式"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
"where NORMAL is the state; could not parse \"%s\""
msgstr "GTK 色彩規格規定必須在狀態外加上方括號,例如 gtk:fg[NORMAL],這裏 NORMAL 表示狀態;無法分析“%s”"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
"fg[NORMAL] where NORMAL is the state; could not parse \"%s\""
msgstr "GTK 色彩規格規定必須在狀態後加上閉方括號,例如 gtk:fg[NORMAL],這裏 NORMAL 表示狀態;無法分析“%s”"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "無法將“%s”理解為色彩規格中的狀態"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "無法將“%s”理解為色彩規格中的色彩部分"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
"format"
msgstr "指定混色的格式是“blend/背景顏色/前景顏色/透明度”,“%s”不符合規格"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "無法理解“%s”作為混色的透明度數值"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "混色的透明度數值“%s”不是在 0.0 至 1.0 之間"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "陰影的格式是“shade/基本顏色/比重”,但“%s”不符合格式"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "在陰影顏色中無法將“%s”理解為陰影比重"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "在陰影顏色中陰影比重“%s”是負數"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "無法分析顏色“%s”"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "座標表達式中出現不可接受的字符‘%s"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "座標表達式中出現無法分析的浮點小數‘%s"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "座標表達式中出現無法分析的整數‘%s"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
"\"%s\""
msgstr "在座標表達式中,以下文字的開始部分含有不明的運算符:“%s”"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "座標表達式是空白的或是無法分析"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "座標表達式中出現被 0 整除的錯誤"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "座標表達式中出現將浮點數使用於餘數運算符 (mod) 的錯誤"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "在座標表達式中,應該有運算子的地方出現了運算符“%s”"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "在座標表達式中,應該有運算符的地方出現了運算子"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "結束座標表達式的是一個運算符而非運算子"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
"operand in between"
msgstr "在座標表達式中,運算符“%c”緊隨運算符“%c”出現但中間沒有任何運算子"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "座標表達式中出現不明的變數或常數“%s”"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "座標表達式分析器令緩衝溢位。"
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "座標表達式中的閉括號沒有相應的開括號"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "座標表達式中的開括號沒有相應的閉括號"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "座標表達式中似乎沒有任何運算符或運算子"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "佈景主題中含有引致錯誤的表達式:%s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
"specified for this frame style"
msgstr "此邊框款式必須指定 <button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/>"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr "缺少了 <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "無法載入佈景主題“%s”%s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "佈景主題“%s”未指定 <%s>"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
"type=\"%s\" style_set=\"whatever\"/> element"
msgstr "在佈景主題“%2$s”中視窗類型“%1$s”沒有指定任何邊框款式。請加上 <window type=\"%3$s\" style_set=\"whatever\"/> 元素"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr "自行定義的常數必須以大寫字母開始;但“%s”不是"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "已定義了“%s”常數"
@@ -1287,7 +1297,7 @@ msgstr "<%s> 元素內不可出現任何文字"
msgid "<%s> specified twice for this theme"
msgstr "<%s> 指定了這個佈景主題兩次"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "無法佈景主題的有效檔案 %s\n"
@@ -1490,18 +1500,6 @@ msgstr "y 的數值是 %d%d是預期中的數值"
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "分析 %d 座標表現需時 %g 秒(平均 %g 秒)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "以逗號分隔的複合視窗外掛程式清單"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "決定隱藏的視窗(如最小化的視窗和位於目前以外工作區的視窗)是否保持活動。"
#~ msgid "Live Hidden Windows"
#~ msgstr "活動中的隱藏 Windows"
#~ msgid "Close Window"
#~ msgstr "關閉視窗"

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity 3.3.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-17 15:17+0800\n"
"PO-Revision-Date: 2012-07-16 11:21+0800\n"
"POT-Creation-Date: 2012-03-19 23:54+0800\n"
"PO-Revision-Date: 2012-03-19 12:19+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
"Language: \n"
@@ -20,17 +20,17 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../src/50-mutter-windows.xml.in.h:1
msgid "Windows"
msgstr "視窗"
#: ../src/50-mutter-windows.xml.in.h:2
msgid "View split on left"
msgstr "檢視分割於左側"
#: ../src/50-mutter-windows.xml.in.h:3
#: ../src/50-mutter-windows.xml.in.h:2
msgid "View split on right"
msgstr "檢視分割於右側"
#: ../src/50-mutter-windows.xml.in.h:3
msgid "Windows"
msgstr "視窗"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
@@ -41,7 +41,7 @@ msgid ""
"\"."
msgstr "在畫面「%2$s」中的第 %1$i 個螢幕中已啟動另一個組合視窗管理員。"
#: ../src/core/bell.c:320
#: ../src/core/bell.c:307
msgid "Bell event"
msgstr "響鈴事件"
@@ -50,76 +50,76 @@ msgstr "響鈴事件"
msgid "Unknown window information request: %d"
msgstr "未知的視窗資訊要求:%d"
#: ../src/core/delete.c:114
#: ../src/core/delete.c:111
#, c-format
msgid "%s is not responding."
msgstr "%s 沒有回應。"
msgid "<tt>%s</tt> is not responding."
msgstr "<tt>%s</tt> 沒有回應。"
#: ../src/core/delete.c:118
#: ../src/core/delete.c:114
msgid "Application is not responding."
msgstr "應用程式沒有回應。"
#: ../src/core/delete.c:123
#: ../src/core/delete.c:119
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
msgstr "您可以選擇稍等一下,或者強制程式立即結束。"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Wait"
msgstr "等待(_W)"
#: ../src/core/delete.c:130
#: ../src/core/delete.c:126
msgid "_Force Quit"
msgstr "強制結束(_F)"
#: ../src/core/display.c:380
#: ../src/core/display.c:387
#, c-format
msgid "Missing %s extension required for compositing"
msgstr "遺失複合視窗管理所需的 %s 延伸功能"
#: ../src/core/display.c:446
#: ../src/core/display.c:453
#, c-format
msgid "Failed to open X Window System display '%s'\n"
msgstr "無法開啟 X Window 畫面‘%s\n"
#: ../src/core/keybindings.c:844
#: ../src/core/keybindings.c:852
#, c-format
msgid ""
"Some other program is already using the key %s with modifiers %x as a "
"binding\n"
msgstr "其它程式已經使用了按鍵 %s 加上特殊按鍵 %x 作為按鍵組合\n"
#: ../src/core/main.c:196
#: ../src/core/main.c:206
msgid "Disable connection to session manager"
msgstr "停用到作業階段管理程式的連線"
#: ../src/core/main.c:202
#: ../src/core/main.c:212
msgid "Replace the running window manager"
msgstr "取代執行中的視窗管理員"
#: ../src/core/main.c:208
#: ../src/core/main.c:218
msgid "Specify session management ID"
msgstr "指定作業階段管理 ID"
#: ../src/core/main.c:213
#: ../src/core/main.c:223
msgid "X Display to use"
msgstr "使用的 X 畫面"
#: ../src/core/main.c:219
#: ../src/core/main.c:229
msgid "Initialize session from savefile"
msgstr "以 savefile 初始化作業階段"
#: ../src/core/main.c:225
#: ../src/core/main.c:235
msgid "Make X calls synchronous"
msgstr "使用同步方式調用 X 函式"
#: ../src/core/main.c:494
#: ../src/core/main.c:504
#, c-format
msgid "Failed to scan themes directory: %s\n"
msgstr "找不到佈景主題目錄:%s\n"
#: ../src/core/main.c:510
#: ../src/core/main.c:520
#, c-format
msgid ""
"Could not find a theme! Be sure %s exists and contains the usual themes.\n"
@@ -144,28 +144,28 @@ msgid "Print version"
msgstr "顯示版本"
#: ../src/core/mutter.c:60
msgid "Mutter plugin to use"
msgstr "要使用的 Mutter 外掛程式"
msgid "Comma-separated list of compositor plugins"
msgstr "以逗號分隔的複合視窗外掛程式清單"
#: ../src/core/prefs.c:1065
#: ../src/core/prefs.c:1077
msgid ""
"Workarounds for broken applications disabled. Some applications may not "
"behave properly.\n"
msgstr "關閉了對不合規格的程式的支援。某些程式可能無法正常運作。\n"
#: ../src/core/prefs.c:1140
#: ../src/core/prefs.c:1152
#, c-format
msgid "Could not parse font description \"%s\" from GSettings key %s\n"
msgstr "無法從 GSettings 設定鍵 %2$s 分析字型描述文字「%1$s」\n"
#: ../src/core/prefs.c:1206
#: ../src/core/prefs.c:1218
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for mouse button "
"modifier\n"
msgstr "組態資料庫中的“%s”設定值不是有效的滑鼠按鈕修改功能鍵\n"
#: ../src/core/prefs.c:1724
#: ../src/core/prefs.c:1739
#, c-format
msgid ""
"\"%s\" found in configuration database is not a valid value for keybinding "
@@ -173,17 +173,17 @@ msgid ""
msgstr "組態資料庫中的“%s”不是按鍵組合“%s”的有效設定值\n"
# (Abel) take care of the same string in libwnck
#: ../src/core/prefs.c:1821
#: ../src/core/prefs.c:1836
#, c-format
msgid "Workspace %d"
msgstr "工作區 %d"
#: ../src/core/screen.c:652
#: ../src/core/screen.c:730
#, c-format
msgid "Screen %d on display '%s' is invalid\n"
msgstr "畫面‘%2$s中的第 %1$d 個螢幕無效\n"
#: ../src/core/screen.c:668
#: ../src/core/screen.c:746
#, c-format
msgid ""
"Screen %d on display \"%s\" already has a window manager; try using the --"
@@ -193,18 +193,18 @@ msgstr ""
"換目前的視窗管理員。\n"
# FIXME: I'm still unclear about the meaning of XGetSelectionOwner -- Abel
#: ../src/core/screen.c:695
#: ../src/core/screen.c:773
#, c-format
msgid ""
"Could not acquire window manager selection on screen %d display \"%s\"\n"
msgstr "無法在畫面“%2$s”中的第 %1$d 個螢幕進行視窗管理員選擇程序\n"
#: ../src/core/screen.c:750
#: ../src/core/screen.c:828
#, c-format
msgid "Screen %d on display \"%s\" already has a window manager\n"
msgstr "畫面“%2$s”中的第 %1$d 個螢幕已經有了視窗總管\n"
#: ../src/core/screen.c:935
#: ../src/core/screen.c:1013
#, c-format
msgid "Could not release screen %d on display \"%s\"\n"
msgstr "無法釋放畫面“%2$s”中的第 %1$d 個螢幕\n"
@@ -262,44 +262,44 @@ msgid ""
"be restarted manually next time you log in."
msgstr "這些視窗不支援 &quot;儲存目前的設定&quot; ,必須在下次登入後自行啟動。"
#: ../src/core/util.c:80
#: ../src/core/util.c:111
#, c-format
msgid "Failed to open debug log: %s\n"
msgstr "無法開啟偵錯記錄檔:%s\n"
#: ../src/core/util.c:90
#: ../src/core/util.c:121
#, c-format
msgid "Failed to fdopen() log file %s: %s\n"
msgstr "無法 fdopen() 記錄檔 %s%s\n"
#: ../src/core/util.c:96
#: ../src/core/util.c:127
#, c-format
msgid "Opened log file %s\n"
msgstr "已開啟記錄檔 %s\n"
#: ../src/core/util.c:115 ../src/tools/mutter-message.c:149
#: ../src/core/util.c:146 ../src/tools/mutter-message.c:149
#, c-format
msgid "Mutter was compiled without support for verbose mode\n"
msgstr "編譯 Mutter 時並沒有加入詳細偵錯模式的支援\n"
#: ../src/core/util.c:259
#: ../src/core/util.c:290
msgid "Window manager: "
msgstr "視窗管理員:"
#: ../src/core/util.c:407
#: ../src/core/util.c:438
msgid "Bug in window manager: "
msgstr "視窗總管出現錯誤:"
#: ../src/core/util.c:438
#: ../src/core/util.c:471
msgid "Window manager warning: "
msgstr "視窗總管警告:"
#: ../src/core/util.c:466
#: ../src/core/util.c:499
msgid "Window manager error: "
msgstr "視窗總管錯誤:"
#. first time through
#: ../src/core/window.c:7234
#: ../src/core/window.c:7266
#, c-format
msgid ""
"Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER "
@@ -315,7 +315,7 @@ msgstr ""
#. * MWM but not WM_NORMAL_HINTS are basically broken. We complain
#. * about these apps but make them work.
#.
#: ../src/core/window.c:7899
#: ../src/core/window.c:7931
#, c-format
msgid ""
"Window %s sets an MWM hint indicating it isn't resizable, but sets min size "
@@ -324,22 +324,22 @@ msgstr ""
"視窗 %s 設定了 MWM 提示,表示它不可以調整大小,但又將大小下限定為 %d×%d 及將"
"大小上限定為 %d×%d這種做法不符合常理。\n"
#: ../src/core/window-props.c:310
#: ../src/core/window-props.c:309
#, c-format
msgid "Application set a bogus _NET_WM_PID %lu\n"
msgstr "程式設定了多餘的 _NET_WM_PID %lu\n"
#: ../src/core/window-props.c:429
#: ../src/core/window-props.c:426
#, c-format
msgid "%s (on %s)"
msgstr "%s在 %s"
#: ../src/core/window-props.c:1484
#: ../src/core/window-props.c:1481
#, c-format
msgid "Invalid WM_TRANSIENT_FOR window 0x%lx specified for %s.\n"
msgstr "%2$s 指定了無效的 WM_TRANSIENT_FOR 視窗 0x%1$lx。\n"
#: ../src/core/window-props.c:1495
#: ../src/core/window-props.c:1492
#, c-format
msgid "WM_TRANSIENT_FOR window 0x%lx for %s would create loop.\n"
msgstr "%2$s 的 WM_TRANSIENT_FOR 視窗 0x%1$lx 會造成迴圈。\n"
@@ -375,10 +375,82 @@ msgid "Mutter"
msgstr "Mutter"
#: ../src/org.gnome.mutter.gschema.xml.in.h:1
msgid "Attach modal dialogs"
msgstr "附加模態對話盒"
#: ../src/org.gnome.mutter.gschema.xml.in.h:2
msgid "Cancel tab popup"
msgstr "取消分頁彈出項"
#: ../src/org.gnome.mutter.gschema.xml.in.h:3
msgid ""
"Determines whether hidden windows (i.e., minimized windows and windows on "
"other workspaces than the current one) should be kept alive."
msgstr ""
"決定隱藏的視窗(如最小化的視窗和位於目前以外工作區的視窗)是否保持活動。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:4
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr "決定當視窗輪換時是否使用彈出式和強調框架。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr "決定工作區切換是否使用於所有螢幕的視窗或只用於主要螢幕的視窗。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
"決定工作區以動態方式管理或是有固定數量的工作區 (以 org.gnome.desktop.wm."
"preferences 中的 num-workspaces 鍵值來決定)。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
msgid "Draggable border width"
msgstr "可拖曳邊框寬度"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "在螢幕邊緣放下視窗時啟用邊緣拼貼"
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
"如果啟用,將視窗拖放到螢幕垂直邊緣時會讓它們垂直最大化並調整水平方向大小覆蓋"
"可用區域的一半。拖放視窗到螢幕頂端邊緣則會讓它們完全最大化。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid "Live Hidden Windows"
msgstr "活動中的隱藏 Windows"
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "Modifier to use for extended window management operations"
msgstr "用於延伸視窗管理操作程序的特殊按鍵"
#: ../src/org.gnome.mutter.gschema.xml.in.h:2
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid "No tab popup"
msgstr "沒有分頁彈出項"
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Select window from tab popup"
msgstr "從分頁彈出項選擇視窗"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
"所有可拖曳邊框的總數。如果布景的可視邊框不夠,會加入隱形邊框來符合這個數值。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid ""
"This key will initiate the \"overlay\", which is a combination window "
"overview and application launching system. The default is intended to be the "
@@ -389,11 +461,7 @@ msgstr ""
"要成為 PC 硬體上的「Windows key」。預期這個按鍵組含不是預設值就是設定為空字"
"串。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:3
msgid "Attach modal dialogs"
msgstr "附加模態對話盒"
#: ../src/org.gnome.mutter.gschema.xml.in.h:4
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid ""
"When true, instead of having independent titlebars, modal dialogs appear "
"attached to the titlebar of the parent window and are moved together with "
@@ -402,71 +470,14 @@ msgstr ""
"當設為「true」將不會有獨立的標題列模態對話盒會附加在上層視窗的標題列並與"
"上層視窗一起移動。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:5
msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "在螢幕邊緣放下視窗時啟用邊緣拼貼"
#: ../src/org.gnome.mutter.gschema.xml.in.h:6
msgid ""
"If enabled, dropping windows on vertical screen edges maximizes them "
"vertically and resizes them horizontally to cover half of the available "
"area. Dropping windows on the top screen edge maximizes them completely."
msgstr ""
"如果啟用,將視窗拖放到螢幕垂直邊緣時會讓它們垂直最大化並調整水平方向大小覆蓋"
"可用區域的一半。拖放視窗到螢幕頂端邊緣則會讓它們完全最大化。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:7
#: ../src/org.gnome.mutter.gschema.xml.in.h:17
msgid "Workspaces are managed dynamically"
msgstr "工作區以動態方式管理"
#: ../src/org.gnome.mutter.gschema.xml.in.h:8
msgid ""
"Determines whether workspaces are managed dynamically or whether there's a "
"static number of workspaces (determined by the num-workspaces key in org."
"gnome.desktop.wm.preferences)."
msgstr ""
"決定工作區以動態方式管理或是有固定數量的工作區 (以 org.gnome.desktop.wm."
"preferences 中的 num-workspaces 鍵值來決定)。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:9
#: ../src/org.gnome.mutter.gschema.xml.in.h:18
msgid "Workspaces only on primary"
msgstr "只有主要螢幕的工作區"
#: ../src/org.gnome.mutter.gschema.xml.in.h:10
msgid ""
"Determines whether workspace switching should happen for windows on all "
"monitors or only for windows on the primary monitor."
msgstr "決定工作區切換是否使用於所有螢幕的視窗或只用於主要螢幕的視窗。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:11
msgid "No tab popup"
msgstr "沒有分頁彈出項"
#: ../src/org.gnome.mutter.gschema.xml.in.h:12
msgid ""
"Determines whether the use of popup and highlight frame should be disabled "
"for window cycling."
msgstr "決定當視窗輪換時是否使用彈出式和強調框架。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:13
msgid "Draggable border width"
msgstr "可拖曳邊框寬度"
#: ../src/org.gnome.mutter.gschema.xml.in.h:14
msgid ""
"The amount of total draggable borders. If the theme's visible borders are "
"not enough, invisible borders will be added to meet this value."
msgstr ""
"所有可拖曳邊框的總數。如果布景的可視邊框不夠,會加入隱形邊框來符合這個數值。"
#: ../src/org.gnome.mutter.gschema.xml.in.h:15
msgid "Select window from tab popup"
msgstr "從分頁彈出項選擇視窗"
#: ../src/org.gnome.mutter.gschema.xml.in.h:16
msgid "Cancel tab popup"
msgstr "取消分頁彈出項"
#: ../src/tools/mutter-message.c:123
#, c-format
msgid "Usage: %s\n"
@@ -687,48 +698,48 @@ msgstr "Mod5"
msgid "%d x %d"
msgstr "%d x %d"
#: ../src/ui/theme.c:234
#: ../src/ui/theme.c:253
msgid "top"
msgstr "頂"
#: ../src/ui/theme.c:236
#: ../src/ui/theme.c:255
msgid "bottom"
msgstr "底"
#: ../src/ui/theme.c:238
#: ../src/ui/theme.c:257
msgid "left"
msgstr "左"
#: ../src/ui/theme.c:240
#: ../src/ui/theme.c:259
msgid "right"
msgstr "右"
#: ../src/ui/theme.c:268
#: ../src/ui/theme.c:286
#, c-format
msgid "frame geometry does not specify \"%s\" dimension"
msgstr "邊框的位置大小中沒有指定“%s”部分的大小"
#: ../src/ui/theme.c:287
#: ../src/ui/theme.c:305
#, c-format
msgid "frame geometry does not specify dimension \"%s\" for border \"%s\""
msgstr "邊框的位置大小中沒有指定“%2$s”邊框中的“%1$s”部分"
#: ../src/ui/theme.c:324
#: ../src/ui/theme.c:342
#, c-format
msgid "Button aspect ratio %g is not reasonable"
msgstr "按鈕的長寬比 %g 不合理"
#: ../src/ui/theme.c:336
#: ../src/ui/theme.c:354
#, c-format
msgid "Frame geometry does not specify size of buttons"
msgstr "邊框的位置大小規格內未有指定按鈕的大小"
#: ../src/ui/theme.c:1049
#: ../src/ui/theme.c:1067
#, c-format
msgid "Gradients should have at least two colors"
msgstr "漸層至少應該有兩種顏色"
#: ../src/ui/theme.c:1201
#: ../src/ui/theme.c:1219
#, c-format
msgid ""
"GTK custom color specification must have color name and fallback in "
@@ -737,14 +748,14 @@ msgstr ""
"GTK 自訂顏色規格規定必須有顏色名稱並加上封閉括號,例如 gtk:custom(foo,bar)"
"無法分析「%s」"
#: ../src/ui/theme.c:1217
#: ../src/ui/theme.c:1235
#, c-format
msgid ""
"Invalid character '%c' in color_name parameter of gtk:custom, only A-Za-z0-9-"
"_ are valid"
msgstr "gtk:custom 的 color_name 參數 '%c' 中有無效字元,只能使用 A-Za-z0-9-_ "
#: ../src/ui/theme.c:1231
#: ../src/ui/theme.c:1249
#, c-format
msgid ""
"Gtk:custom format is \"gtk:custom(color_name,fallback)\", \"%s\" does not "
@@ -752,7 +763,7 @@ msgid ""
msgstr ""
"Gtk:custom 的格式是「gtk:custom(color_name,fallback)」,但「%s」不符合格式"
#: ../src/ui/theme.c:1276
#: ../src/ui/theme.c:1294
#, c-format
msgid ""
"GTK color specification must have the state in brackets, e.g. gtk:fg[NORMAL] "
@@ -761,7 +772,7 @@ msgstr ""
"GTK 色彩規格規定必須在狀態外加上方括號,例如 gtk:fg[NORMAL],這裡 NORMAL 表示"
"狀態;無法分析“%s”"
#: ../src/ui/theme.c:1290
#: ../src/ui/theme.c:1308
#, c-format
msgid ""
"GTK color specification must have a close bracket after the state, e.g. gtk:"
@@ -770,148 +781,148 @@ msgstr ""
"GTK 色彩規格規定必須在狀態後加上閉方括號,例如 gtk:fg[NORMAL],這裡 NORMAL 表"
"示狀態;無法分析“%s”"
#: ../src/ui/theme.c:1301
#: ../src/ui/theme.c:1319
#, c-format
msgid "Did not understand state \"%s\" in color specification"
msgstr "無法將“%s”理解為色彩規格中的狀態"
#: ../src/ui/theme.c:1314
#: ../src/ui/theme.c:1332
#, c-format
msgid "Did not understand color component \"%s\" in color specification"
msgstr "無法將“%s”理解為色彩規格中的色彩部分"
#: ../src/ui/theme.c:1343
#: ../src/ui/theme.c:1361
#, c-format
msgid ""
"Blend format is \"blend/bg_color/fg_color/alpha\", \"%s\" does not fit the "
"format"
msgstr "指定混色的格式是“blend/背景顏色/前景顏色/透明度”,“%s”不符合規格"
#: ../src/ui/theme.c:1354
#: ../src/ui/theme.c:1372
#, c-format
msgid "Could not parse alpha value \"%s\" in blended color"
msgstr "無法理解“%s”作為混色的透明度數值"
#: ../src/ui/theme.c:1364
#: ../src/ui/theme.c:1382
#, c-format
msgid "Alpha value \"%s\" in blended color is not between 0.0 and 1.0"
msgstr "混色的透明度數值“%s”不是在 0.0 至 1.0 之間"
#: ../src/ui/theme.c:1411
#: ../src/ui/theme.c:1429
#, c-format
msgid ""
"Shade format is \"shade/base_color/factor\", \"%s\" does not fit the format"
msgstr "陰影的格式是“shade/基本顏色/比重”,但“%s”不符合格式"
#: ../src/ui/theme.c:1422
#: ../src/ui/theme.c:1440
#, c-format
msgid "Could not parse shade factor \"%s\" in shaded color"
msgstr "在陰影顏色中無法將“%s”理解為陰影比重"
#: ../src/ui/theme.c:1432
#: ../src/ui/theme.c:1450
#, c-format
msgid "Shade factor \"%s\" in shaded color is negative"
msgstr "在陰影顏色中陰影比重“%s”是負數"
#: ../src/ui/theme.c:1461
#: ../src/ui/theme.c:1479
#, c-format
msgid "Could not parse color \"%s\""
msgstr "無法分析顏色“%s”"
#: ../src/ui/theme.c:1778
#: ../src/ui/theme.c:1790
#, c-format
msgid "Coordinate expression contains character '%s' which is not allowed"
msgstr "座標表達式中出現不可接受的字元‘%s"
#: ../src/ui/theme.c:1805
#: ../src/ui/theme.c:1817
#, c-format
msgid ""
"Coordinate expression contains floating point number '%s' which could not be "
"parsed"
msgstr "座標表達式中出現無法分析的浮點小數‘%s"
#: ../src/ui/theme.c:1819
#: ../src/ui/theme.c:1831
#, c-format
msgid "Coordinate expression contains integer '%s' which could not be parsed"
msgstr "座標表達式中出現無法分析的整數‘%s"
#: ../src/ui/theme.c:1940
#: ../src/ui/theme.c:1953
#, c-format
msgid ""
"Coordinate expression contained unknown operator at the start of this text: "
"\"%s\""
msgstr "在座標表達式中,以下文字的開始部分含有不明的運算符:“%s”"
#: ../src/ui/theme.c:1997
#: ../src/ui/theme.c:2010
#, c-format
msgid "Coordinate expression was empty or not understood"
msgstr "座標表達式是空白的或是無法分析"
#: ../src/ui/theme.c:2110 ../src/ui/theme.c:2120 ../src/ui/theme.c:2154
#: ../src/ui/theme.c:2121 ../src/ui/theme.c:2131 ../src/ui/theme.c:2165
#, c-format
msgid "Coordinate expression results in division by zero"
msgstr "座標表達式中出現被 0 整除的錯誤"
#: ../src/ui/theme.c:2162
#: ../src/ui/theme.c:2173
#, c-format
msgid ""
"Coordinate expression tries to use mod operator on a floating-point number"
msgstr "座標表達式中出現將浮點數使用於餘數運算符 (mod) 的錯誤"
#: ../src/ui/theme.c:2218
#: ../src/ui/theme.c:2229
#, c-format
msgid ""
"Coordinate expression has an operator \"%s\" where an operand was expected"
msgstr "在座標表達式中,應該有運算子的地方出現了運算符“%s”"
#: ../src/ui/theme.c:2227
#: ../src/ui/theme.c:2238
#, c-format
msgid "Coordinate expression had an operand where an operator was expected"
msgstr "在座標表達式中,應該有運算符的地方出現了運算子"
#: ../src/ui/theme.c:2235
#: ../src/ui/theme.c:2246
#, c-format
msgid "Coordinate expression ended with an operator instead of an operand"
msgstr "結束座標表達式的是一個運算符而非運算子"
#: ../src/ui/theme.c:2245
#: ../src/ui/theme.c:2256
#, c-format
msgid ""
"Coordinate expression has operator \"%c\" following operator \"%c\" with no "
"operand in between"
msgstr "在座標表達式中,運算符“%c”緊隨運算符“%c”出現但中間沒有任何運算子"
#: ../src/ui/theme.c:2396 ../src/ui/theme.c:2441
#: ../src/ui/theme.c:2407 ../src/ui/theme.c:2452
#, c-format
msgid "Coordinate expression had unknown variable or constant \"%s\""
msgstr "座標表達式中出現不明的變數或常數“%s”"
#: ../src/ui/theme.c:2495
#: ../src/ui/theme.c:2506
#, c-format
msgid "Coordinate expression parser overflowed its buffer."
msgstr "座標表達式分析器令緩衝溢位。"
#: ../src/ui/theme.c:2524
#: ../src/ui/theme.c:2535
#, c-format
msgid "Coordinate expression had a close parenthesis with no open parenthesis"
msgstr "座標表達式中的閉括號沒有相應的開括號"
#: ../src/ui/theme.c:2588
#: ../src/ui/theme.c:2599
#, c-format
msgid "Coordinate expression had an open parenthesis with no close parenthesis"
msgstr "座標表達式中的開括號沒有相應的閉括號"
#: ../src/ui/theme.c:2599
#: ../src/ui/theme.c:2610
#, c-format
msgid "Coordinate expression doesn't seem to have any operators or operands"
msgstr "座標表達式中似乎沒有任何運算符或運算子"
#: ../src/ui/theme.c:2812 ../src/ui/theme.c:2832 ../src/ui/theme.c:2852
#: ../src/ui/theme.c:2822 ../src/ui/theme.c:2842 ../src/ui/theme.c:2862
#, c-format
msgid "Theme contained an expression that resulted in an error: %s\n"
msgstr "佈景主題中含有引致錯誤的表達式:%s\n"
#: ../src/ui/theme.c:4498
#: ../src/ui/theme.c:4533
#, c-format
msgid ""
"<button function=\"%s\" state=\"%s\" draw_ops=\"whatever\"/> must be "
@@ -920,25 +931,25 @@ msgstr ""
"此邊框款式必須指定 <button function=\"%s\" state=\"%s\" draw_ops=\"whatever"
"\"/>"
#: ../src/ui/theme.c:5009 ../src/ui/theme.c:5034
#: ../src/ui/theme.c:5066 ../src/ui/theme.c:5091
#, c-format
msgid ""
"Missing <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
msgstr ""
"缺少了 <frame state=\"%s\" resize=\"%s\" focus=\"%s\" style=\"whatever\"/>"
#: ../src/ui/theme.c:5082
#: ../src/ui/theme.c:5139
#, c-format
msgid "Failed to load theme \"%s\": %s\n"
msgstr "無法載入佈景主題“%s”%s\n"
#: ../src/ui/theme.c:5218 ../src/ui/theme.c:5225 ../src/ui/theme.c:5232
#: ../src/ui/theme.c:5239 ../src/ui/theme.c:5246
#: ../src/ui/theme.c:5275 ../src/ui/theme.c:5282 ../src/ui/theme.c:5289
#: ../src/ui/theme.c:5296 ../src/ui/theme.c:5303
#, c-format
msgid "No <%s> set for theme \"%s\""
msgstr "佈景主題“%s”未指定 <%s>"
#: ../src/ui/theme.c:5254
#: ../src/ui/theme.c:5311
#, c-format
msgid ""
"No frame style set for window type \"%s\" in theme \"%s\", add a <window "
@@ -947,13 +958,13 @@ msgstr ""
"在佈景主題“%2$s”中視窗類型“%1$s”沒有指定任何邊框款式。請加上 <window type="
"\"%3$s\" style_set=\"whatever\"/> 元素"
#: ../src/ui/theme.c:5650 ../src/ui/theme.c:5712 ../src/ui/theme.c:5775
#: ../src/ui/theme.c:5709 ../src/ui/theme.c:5771 ../src/ui/theme.c:5834
#, c-format
msgid ""
"User-defined constants must begin with a capital letter; \"%s\" does not"
msgstr "自行定義的常數必須以大寫字母開始;但“%s”不是"
#: ../src/ui/theme.c:5658 ../src/ui/theme.c:5720 ../src/ui/theme.c:5783
#: ../src/ui/theme.c:5717 ../src/ui/theme.c:5779 ../src/ui/theme.c:5842
#, c-format
msgid "Constant \"%s\" has already been defined"
msgstr "已定義了“%s”常數"
@@ -1323,7 +1334,7 @@ msgstr "<%s> 元素內不可出現任何文字"
msgid "<%s> specified twice for this theme"
msgstr "<%s> 指定了這個佈景主題兩次"
#: ../src/ui/theme-parser.c:4334
#: ../src/ui/theme-parser.c:4348
#, c-format
msgid "Failed to find a valid file for theme %s\n"
msgstr "無法佈景主題的有效檔案 %s\n"
@@ -1526,18 +1537,6 @@ msgstr "y 的數值是 %d%d是預期中的數值"
msgid "%d coordinate expressions parsed in %g seconds (%g seconds average)\n"
msgstr "分析 %d 座標表現需時 %g 秒(平均 %g 秒)\n"
#~ msgid "Comma-separated list of compositor plugins"
#~ msgstr "以逗號分隔的複合視窗外掛程式清單"
#~ msgid ""
#~ "Determines whether hidden windows (i.e., minimized windows and windows on "
#~ "other workspaces than the current one) should be kept alive."
#~ msgstr ""
#~ "決定隱藏的視窗(如最小化的視窗和位於目前以外工作區的視窗)是否保持活動。"
#~ msgid "Live Hidden Windows"
#~ msgstr "活動中的隱藏 Windows"
#~ msgid "Close Window"
#~ msgstr "關閉視窗"

View File

@@ -222,7 +222,7 @@ INTROSPECTION_GIRS = Meta-$(api_version).gir
Meta-$(api_version).gir: libmutter.la
@META_GIR@_INCLUDES = GObject-2.0 GDesktopEnums-3.0 Gdk-3.0 Gtk-3.0 Clutter-1.0 xlib-2.0 xfixes-4.0
@META_GIR@_EXPORT_PACKAGES = libmutter
@META_GIR@_PACKAGES = clutter-1.0 gtk+-3.0
@META_GIR@_CFLAGS = $(INCLUDES)
@META_GIR@_LIBS = libmutter.la
@META_GIR@_FILES = \

View File

@@ -557,7 +557,9 @@ meta_compositor_manage_screen (MetaCompositor *compositor,
clutter_actor_hide (info->hidden_group);
info->plugin_mgr = meta_plugin_manager_new (screen);
info->plugin_mgr =
meta_plugin_manager_get (screen);
meta_plugin_manager_initialize (info->plugin_mgr);
/*
* Delay the creation of the overlay window as long as we can, to avoid
@@ -869,6 +871,29 @@ meta_compositor_unmaximize_window (MetaCompositor *compositor,
meta_window_actor_unmaximize (window_actor, old_rect, new_rect);
}
void
meta_compositor_update_workspace_geometry (MetaCompositor *compositor,
MetaWorkspace *workspace)
{
#if 0
/* FIXME -- should do away with this function in favour of MetaWorkspace
* signal.
*/
MetaScreen *screen = meta_workspace_get_screen (workspace);
MetaCompScreen *info;
MetaPluginManager *mgr;
DEBUG_TRACE ("meta_compositor_update_workspace_geometry\n");
info = meta_screen_get_compositor_data (screen);
mgr = info->plugin_mgr;
if (!mgr || !workspace)
return;
meta_plugin_manager_update_workspace (mgr, workspace);
#endif
}
void
meta_compositor_switch_workspace (MetaCompositor *compositor,
MetaScreen *screen,

View File

@@ -35,32 +35,34 @@
#include <clutter/x11/clutter-x11.h>
static GType plugin_type = G_TYPE_NONE;
static GSList *plugin_types;
/*
* We have one "default plugin manager" that acts for the first screen,
* but also can be used before we open any screens, and additional
* plugin managers for each screen. (This is ugly. Probably we should
* have one plugin manager and only make the plugins per-screen.)
*/
static MetaPluginManager *default_plugin_manager;
struct MetaPluginManager
{
MetaScreen *screen;
MetaPlugin *plugin;
MetaScreen *screen;
GList /* MetaPlugin */ *plugins; /* TODO -- maybe use hash table */
};
void
meta_plugin_manager_set_plugin_type (GType gtype)
{
if (plugin_type != G_TYPE_NONE)
meta_fatal ("Mutter plugin already set: %s", g_type_name (plugin_type));
plugin_type = gtype;
}
/*
* Loads the given plugin.
*/
void
meta_plugin_manager_load (const gchar *plugin_name)
meta_plugin_manager_load (MetaPluginManager *plugin_mgr,
const gchar *plugin_name)
{
const gchar *dpath = MUTTER_PLUGIN_DIR "/";
gchar *path;
MetaModule *module;
GType plugin_type;
if (g_path_is_absolute (plugin_name))
path = g_strdup (plugin_name);
@@ -79,57 +81,162 @@ meta_plugin_manager_load (const gchar *plugin_name)
exit (1);
}
meta_plugin_manager_set_plugin_type (meta_module_get_plugin_type (module));
plugin_type = meta_module_get_plugin_type (module);
meta_plugin_manager_register (plugin_mgr, plugin_type);
g_type_module_unuse (G_TYPE_MODULE (module));
g_free (path);
}
MetaPluginManager *
/*
* Registers the given plugin type
*/
void
meta_plugin_manager_register (MetaPluginManager *plugin_mgr,
GType plugin_type)
{
MetaPlugin *plugin;
plugin_types = g_slist_prepend (plugin_types, GSIZE_TO_POINTER (plugin_type));
plugin = g_object_new (plugin_type, NULL);
plugin_mgr->plugins = g_list_prepend (plugin_mgr->plugins, plugin);
}
void
meta_plugin_manager_initialize (MetaPluginManager *plugin_mgr)
{
GList *iter;
if (!plugin_mgr->plugins)
{
/*
* If no plugins are specified, load the default plugin.
*/
meta_plugin_manager_load (plugin_mgr, "default");
}
for (iter = plugin_mgr->plugins; iter; iter = iter->next)
{
MetaPlugin *plugin = (MetaPlugin*) iter->data;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
g_object_set (plugin,
"screen", plugin_mgr->screen,
NULL);
if (klass->start)
klass->start (plugin);
}
}
static MetaPluginManager *
meta_plugin_manager_new (MetaScreen *screen)
{
MetaPluginManager *plugin_mgr;
MetaPluginClass *klass;
MetaPlugin *plugin;
plugin_mgr = g_new0 (MetaPluginManager, 1);
plugin_mgr->screen = screen;
plugin_mgr->plugin = plugin = g_object_new (plugin_type, "screen", screen, NULL);
klass = META_PLUGIN_GET_CLASS (plugin);
if (klass->start)
klass->start (plugin);
if (screen)
g_object_set_data (G_OBJECT (screen), "meta-plugin-manager", plugin_mgr);
return plugin_mgr;
}
MetaPluginManager *
meta_plugin_manager_get_default (void)
{
if (!default_plugin_manager)
{
default_plugin_manager = meta_plugin_manager_new (NULL);
}
return default_plugin_manager;
}
MetaPluginManager *
meta_plugin_manager_get (MetaScreen *screen)
{
MetaPluginManager *plugin_mgr;
plugin_mgr = g_object_get_data (G_OBJECT (screen), "meta-plugin-manager");
if (plugin_mgr)
return plugin_mgr;
if (!default_plugin_manager)
meta_plugin_manager_get_default ();
if (!default_plugin_manager->screen)
{
/* The default plugin manager is so far unused, we can recycle it */
default_plugin_manager->screen = screen;
g_object_set_data (G_OBJECT (screen), "meta-plugin-manager", default_plugin_manager);
return default_plugin_manager;
}
else
{
GSList *iter;
GType plugin_type;
MetaPlugin *plugin;
plugin_mgr = meta_plugin_manager_new (screen);
for (iter = plugin_types; iter; iter = iter->next)
{
plugin_type = (GType)GPOINTER_TO_SIZE (iter->data);
plugin = g_object_new (plugin_type, "screen", screen, NULL);
plugin_mgr->plugins = g_list_prepend (plugin_mgr->plugins, plugin);
}
return plugin_mgr;
}
}
static void
meta_plugin_manager_kill_window_effects (MetaPluginManager *plugin_mgr,
MetaWindowActor *actor)
{
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
GList *l = plugin_mgr->plugins;
if (klass->kill_window_effects)
klass->kill_window_effects (plugin, actor);
while (l)
{
MetaPlugin *plugin = l->data;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
if (!meta_plugin_disabled (plugin)
&& klass->kill_window_effects)
klass->kill_window_effects (plugin, actor);
l = l->next;
}
}
static void
meta_plugin_manager_kill_switch_workspace (MetaPluginManager *plugin_mgr)
{
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
GList *l = plugin_mgr->plugins;
if (klass->kill_switch_workspace)
klass->kill_switch_workspace (plugin);
while (l)
{
MetaPlugin *plugin = l->data;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
if (!meta_plugin_disabled (plugin)
&& (meta_plugin_features (plugin) & META_PLUGIN_SWITCH_WORKSPACE)
&& klass->kill_switch_workspace)
klass->kill_switch_workspace (plugin);
l = l->next;
}
}
/*
* Public method that the compositor hooks into for events that require
* no additional parameters.
*
* Returns TRUE if the plugin handled the event type (i.e.,
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
* if the return value is FALSE, there will be no subsequent call to the
* manager completed() callback, and the compositor must ensure that any
* appropriate post-effect cleanup is carried out.
@@ -139,48 +246,60 @@ meta_plugin_manager_event_simple (MetaPluginManager *plugin_mgr,
MetaWindowActor *actor,
unsigned long event)
{
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
GList *l = plugin_mgr->plugins;
gboolean retval = FALSE;
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
if (display->display_opening)
return FALSE;
switch (event)
while (l)
{
case META_PLUGIN_MINIMIZE:
if (klass->minimize)
{
retval = TRUE;
meta_plugin_manager_kill_window_effects (plugin_mgr,
actor);
MetaPlugin *plugin = l->data;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
_meta_plugin_effect_started (plugin);
klass->minimize (plugin, actor);
}
break;
case META_PLUGIN_MAP:
if (klass->map)
if (!meta_plugin_disabled (plugin) &&
(meta_plugin_features (plugin) & event))
{
retval = TRUE;
meta_plugin_manager_kill_window_effects (plugin_mgr,
actor);
_meta_plugin_effect_started (plugin);
klass->map (plugin, actor);
switch (event)
{
case META_PLUGIN_MINIMIZE:
if (klass->minimize)
{
meta_plugin_manager_kill_window_effects (
plugin_mgr,
actor);
_meta_plugin_effect_started (plugin);
klass->minimize (plugin, actor);
}
break;
case META_PLUGIN_MAP:
if (klass->map)
{
meta_plugin_manager_kill_window_effects (
plugin_mgr,
actor);
_meta_plugin_effect_started (plugin);
klass->map (plugin, actor);
}
break;
case META_PLUGIN_DESTROY:
if (klass->destroy)
{
_meta_plugin_effect_started (plugin);
klass->destroy (plugin, actor);
}
break;
default:
g_warning ("Incorrect handler called for event %lu", event);
}
}
break;
case META_PLUGIN_DESTROY:
if (klass->destroy)
{
retval = TRUE;
_meta_plugin_effect_started (plugin);
klass->destroy (plugin, actor);
}
break;
default:
g_warning ("Incorrect handler called for event %lu", event);
l = l->next;
}
return retval;
@@ -190,7 +309,7 @@ meta_plugin_manager_event_simple (MetaPluginManager *plugin_mgr,
* The public method that the compositor hooks into for maximize and unmaximize
* events.
*
* Returns TRUE if the plugin handled the event type (i.e.,
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
* if the return value is FALSE, there will be no subsequent call to the
* manager completed() callback, and the compositor must ensure that any
* appropriate post-effect cleanup is carried out.
@@ -204,44 +323,57 @@ meta_plugin_manager_event_maximize (MetaPluginManager *plugin_mgr,
gint target_width,
gint target_height)
{
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
GList *l = plugin_mgr->plugins;
gboolean retval = FALSE;
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
if (display->display_opening)
return FALSE;
switch (event)
while (l)
{
case META_PLUGIN_MAXIMIZE:
if (klass->maximize)
MetaPlugin *plugin = l->data;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
if (!meta_plugin_disabled (plugin) &&
(meta_plugin_features (plugin) & event))
{
retval = TRUE;
meta_plugin_manager_kill_window_effects (plugin_mgr,
actor);
_meta_plugin_effect_started (plugin);
klass->maximize (plugin, actor,
target_x, target_y,
target_width, target_height);
}
break;
case META_PLUGIN_UNMAXIMIZE:
if (klass->unmaximize)
{
retval = TRUE;
meta_plugin_manager_kill_window_effects (plugin_mgr,
actor);
switch (event)
{
case META_PLUGIN_MAXIMIZE:
if (klass->maximize)
{
meta_plugin_manager_kill_window_effects (
plugin_mgr,
actor);
_meta_plugin_effect_started (plugin);
klass->unmaximize (plugin, actor,
target_x, target_y,
target_width, target_height);
_meta_plugin_effect_started (plugin);
klass->maximize (plugin, actor,
target_x, target_y,
target_width, target_height);
}
break;
case META_PLUGIN_UNMAXIMIZE:
if (klass->unmaximize)
{
meta_plugin_manager_kill_window_effects (
plugin_mgr,
actor);
_meta_plugin_effect_started (plugin);
klass->unmaximize (plugin, actor,
target_x, target_y,
target_width, target_height);
}
break;
default:
g_warning ("Incorrect handler called for event %lu", event);
}
}
break;
default:
g_warning ("Incorrect handler called for event %lu", event);
l = l->next;
}
return retval;
@@ -250,7 +382,7 @@ meta_plugin_manager_event_maximize (MetaPluginManager *plugin_mgr,
/*
* The public method that the compositor hooks into for desktop switching.
*
* Returns TRUE if the plugin handled the event type (i.e.,
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
* if the return value is FALSE, there will be no subsequent call to the
* manager completed() callback, and the compositor must ensure that any
* appropriate post-effect cleanup is carried out.
@@ -261,21 +393,32 @@ meta_plugin_manager_switch_workspace (MetaPluginManager *plugin_mgr,
gint to,
MetaMotionDirection direction)
{
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
GList *l = plugin_mgr->plugins;
gboolean retval = FALSE;
MetaDisplay *display = meta_screen_get_display (plugin_mgr->screen);
if (display->display_opening)
return FALSE;
if (klass->switch_workspace)
while (l)
{
retval = TRUE;
meta_plugin_manager_kill_switch_workspace (plugin_mgr);
MetaPlugin *plugin = l->data;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
_meta_plugin_effect_started (plugin);
klass->switch_workspace (plugin, from, to, direction);
if (!meta_plugin_disabled (plugin) &&
(meta_plugin_features (plugin) & META_PLUGIN_SWITCH_WORKSPACE))
{
if (klass->switch_workspace)
{
retval = TRUE;
meta_plugin_manager_kill_switch_workspace (plugin_mgr);
_meta_plugin_effect_started (plugin);
klass->switch_workspace (plugin, from, to, direction);
}
}
l = l->next;
}
return retval;
@@ -284,7 +427,7 @@ meta_plugin_manager_switch_workspace (MetaPluginManager *plugin_mgr,
/*
* The public method that the compositor hooks into for desktop switching.
*
* Returns TRUE if the plugin handled the event type (i.e.,
* Returns TRUE if at least one of the plugins handled the event type (i.e.,
* if the return value is FALSE, there will be no subsequent call to the
* manager completed() callback, and the compositor must ensure that any
* appropriate post-effect cleanup is carried out.
@@ -293,20 +436,49 @@ gboolean
meta_plugin_manager_xevent_filter (MetaPluginManager *plugin_mgr,
XEvent *xev)
{
MetaPlugin *plugin = plugin_mgr->plugin;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
GList *l;
gboolean have_plugin_xevent_func;
if (!plugin_mgr)
return FALSE;
l = plugin_mgr->plugins;
/* We need to make sure that clutter gets certain events, like
* ConfigureNotify on the stage window. If there is a plugin that
* provides an xevent_filter function, then it's the responsibility
* of that plugin to pass events to Clutter. Otherwise, we send the
* event directly to Clutter ourselves.
*
* What happens if there are two plugins with xevent_filter functions
* is undefined; in general, multiple competing plugins are something
* we don't support well or care much about.
*
* FIXME: Really, we should just always handle sending the event to
* clutter if a plugin doesn't report the event as handled by
* returning TRUE, but it doesn't seem worth breaking compatibility
* of the plugin interface right now to achieve this; the way it is
* now works fine in practice.
*/
if (klass->xevent_filter && klass->xevent_filter (plugin, xev))
return TRUE;
else
have_plugin_xevent_func = FALSE;
while (l)
{
MetaPlugin *plugin = l->data;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
if (klass->xevent_filter)
{
have_plugin_xevent_func = TRUE;
if (klass->xevent_filter (plugin, xev) == TRUE)
return TRUE;
}
l = l->next;
}
if (!have_plugin_xevent_func)
return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE;
return FALSE;
}

View File

@@ -46,9 +46,14 @@
*/
typedef struct MetaPluginManager MetaPluginManager;
MetaPluginManager * meta_plugin_manager_new (MetaScreen *screen);
MetaPluginManager * meta_plugin_manager_get (MetaScreen *screen);
MetaPluginManager * meta_plugin_manager_get_default (void);
void meta_plugin_manager_load (const gchar *plugin_name);
void meta_plugin_manager_load (MetaPluginManager *mgr,
const gchar *plugin_name);
void meta_plugin_manager_register (MetaPluginManager *mgr,
GType plugin_type);
void meta_plugin_manager_initialize (MetaPluginManager *mgr);
gboolean meta_plugin_manager_event_simple (MetaPluginManager *mgr,
MetaWindowActor *actor,
@@ -61,6 +66,10 @@ gboolean meta_plugin_manager_event_maximize (MetaPluginManager *mgr,
gint target_y,
gint target_width,
gint target_height);
void meta_plugin_manager_update_workspaces (MetaPluginManager *mgr);
void meta_plugin_manager_update_workspace (MetaPluginManager *mgr,
MetaWorkspace *w);
gboolean meta_plugin_manager_switch_workspace (MetaPluginManager *mgr,
gint from,

View File

@@ -44,17 +44,74 @@ enum
{
PROP_0,
PROP_SCREEN,
PROP_FEATURES,
PROP_DISABLED,
PROP_DEBUG_MODE,
};
struct _MetaPluginPrivate
{
MetaScreen *screen;
gulong features;
gint running;
gboolean disabled : 1;
gboolean debug : 1;
};
static void
meta_plugin_set_features (MetaPlugin *plugin)
{
MetaPluginPrivate *priv = plugin->priv;
MetaPluginClass *klass = META_PLUGIN_GET_CLASS (plugin);
priv->features = 0;
/*
* Feature flags: identify events that the plugin can handle; a plugin can
* handle one or more events.
*/
if (klass->minimize)
priv->features |= META_PLUGIN_MINIMIZE;
if (klass->maximize)
priv->features |= META_PLUGIN_MAXIMIZE;
if (klass->unmaximize)
priv->features |= META_PLUGIN_UNMAXIMIZE;
if (klass->map)
priv->features |= META_PLUGIN_MAP;
if (klass->destroy)
priv->features |= META_PLUGIN_DESTROY;
if (klass->switch_workspace)
priv->features |= META_PLUGIN_SWITCH_WORKSPACE;
}
static void
meta_plugin_constructed (GObject *object)
{
meta_plugin_set_features (META_PLUGIN (object));
if (G_OBJECT_CLASS (meta_plugin_parent_class)->constructed)
G_OBJECT_CLASS (meta_plugin_parent_class)->constructed (object);
}
static void
meta_plugin_dispose (GObject *object)
{
G_OBJECT_CLASS (meta_plugin_parent_class)->dispose (object);
}
static void
meta_plugin_finalize (GObject *object)
{
G_OBJECT_CLASS (meta_plugin_parent_class)->finalize (object);
}
static void
meta_plugin_set_property (GObject *object,
guint prop_id,
@@ -68,6 +125,9 @@ meta_plugin_set_property (GObject *object,
case PROP_SCREEN:
priv->screen = g_value_get_object (value);
break;
case PROP_DISABLED:
priv->disabled = g_value_get_boolean (value);
break;
case PROP_DEBUG_MODE:
priv->debug = g_value_get_boolean (value);
break;
@@ -90,9 +150,15 @@ meta_plugin_get_property (GObject *object,
case PROP_SCREEN:
g_value_set_object (value, priv->screen);
break;
case PROP_DISABLED:
g_value_set_boolean (value, priv->disabled);
break;
case PROP_DEBUG_MODE:
g_value_set_boolean (value, priv->debug);
break;
case PROP_FEATURES:
g_value_set_ulong (value, priv->features);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -105,6 +171,9 @@ meta_plugin_class_init (MetaPluginClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
gobject_class->constructed = meta_plugin_constructed;
gobject_class->finalize = meta_plugin_finalize;
gobject_class->dispose = meta_plugin_dispose;
gobject_class->set_property = meta_plugin_set_property;
gobject_class->get_property = meta_plugin_get_property;
@@ -116,6 +185,22 @@ meta_plugin_class_init (MetaPluginClass *klass)
META_TYPE_SCREEN,
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
PROP_FEATURES,
g_param_spec_ulong ("features",
"Features",
"Plugin Features",
0 , G_MAXULONG, 0,
G_PARAM_READABLE));
g_object_class_install_property (gobject_class,
PROP_DISABLED,
g_param_spec_boolean ("disabled",
"Plugin disabled",
"Plugin disabled",
FALSE,
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
PROP_DEBUG_MODE,
g_param_spec_boolean ("debug-mode",
@@ -135,6 +220,22 @@ meta_plugin_init (MetaPlugin *self)
self->priv = priv = META_PLUGIN_GET_PRIVATE (self);
}
gulong
meta_plugin_features (MetaPlugin *plugin)
{
MetaPluginPrivate *priv = META_PLUGIN (plugin)->priv;
return priv->features;
}
gboolean
meta_plugin_disabled (MetaPlugin *plugin)
{
MetaPluginPrivate *priv = META_PLUGIN (plugin)->priv;
return priv->disabled;
}
gboolean
meta_plugin_running (MetaPlugin *plugin)
{
@@ -295,7 +396,7 @@ meta_plugin_begin_modal (MetaPlugin *plugin,
}
/**
* meta_plugin_end_modal:
* meta_plugin_end_modal
* @plugin: a #MetaPlugin
* @timestamp: the time used for releasing grabs
*
@@ -331,3 +432,19 @@ meta_plugin_get_screen (MetaPlugin *plugin)
return priv->screen;
}
/**
* meta_plugin_type_register:
* @plugin_type: a #MetaPlugin type
*
* Register @plugin_type as a compositor plugin type to be used.
* You must call this before calling meta_init().
*/
void
meta_plugin_type_register (GType plugin_type)
{
MetaPluginManager *plugin_manager;
plugin_manager = meta_plugin_manager_get_default ();
meta_plugin_manager_register (plugin_manager, plugin_type);
}

View File

@@ -130,7 +130,7 @@ MetaShadowClassInfo default_shadow_classes[] = {
{ "popup-menu", { 1, -1, 0, 1, 128 }, { 1, -1, 0, 1, 128 } },
{ "dropdown-menu", { 1, 10, 0, 1, 128 }, { 1, 10, 0, 1, 128 } },
{ "attached", { 2, -1, 0, 1, 255 }, { 1, -1, 0, 1, 128 } }
{ "attached", { 2, 50, 0, 1, 255 }, { 1, 50, 0, 1, 128 } }
};
G_DEFINE_TYPE (MetaShadowFactory, meta_shadow_factory, G_TYPE_OBJECT);

View File

@@ -1,13 +1,11 @@
/*
* shaped texture
*
* An actor to draw a masked texture.
* An actor to draw a texture clipped to a list of rectangles
*
* Authored By Neil Roberts <neil@linux.intel.com>
* and Jasper St. Pierre <jstpierre@mecheye.net>
*
* Copyright (C) 2008 Intel Corporation
* Copyright (C) 2012 Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -32,11 +30,13 @@
#include <meta/meta-shaped-texture.h>
#include "meta-texture-tower.h"
#include "meta-texture-rectangle.h"
#include <clutter/clutter.h>
#include <cogl/cogl.h>
#include <cogl/cogl-texture-pixmap-x11.h>
#include <gdk/gdk.h> /* for gdk_rectangle_intersect() */
#include <string.h>
static void meta_shaped_texture_dispose (GObject *object);
@@ -54,6 +54,8 @@ static void meta_shaped_texture_get_preferred_height (ClutterActor *self,
gfloat *min_height_p,
gfloat *natural_height_p);
static void meta_shaped_texture_dirty_mask (MetaShapedTexture *stex);
static gboolean meta_shaped_texture_get_paint_volume (ClutterActor *self, ClutterPaintVolume *volume);
G_DEFINE_TYPE (MetaShapedTexture, meta_shaped_texture,
@@ -73,8 +75,13 @@ struct _MetaShapedTexturePrivate
CoglHandle material_unshaped;
cairo_region_t *clip_region;
cairo_region_t *shape_region;
cairo_region_t *overlay_region;
cairo_path_t *overlay_path;
guint tex_width, tex_height;
guint mask_width, mask_height;
guint create_mipmaps : 1;
};
@@ -103,6 +110,9 @@ meta_shaped_texture_init (MetaShapedTexture *self)
priv = self->priv = META_SHAPED_TEXTURE_GET_PRIVATE (self);
priv->shape_region = NULL;
priv->overlay_path = NULL;
priv->overlay_region = NULL;
priv->paint_tower = meta_texture_tower_new ();
priv->texture = COGL_INVALID_HANDLE;
priv->mask_texture = COGL_INVALID_HANDLE;
@@ -119,6 +129,8 @@ meta_shaped_texture_dispose (GObject *object)
meta_texture_tower_free (priv->paint_tower);
priv->paint_tower = NULL;
meta_shaped_texture_dirty_mask (self);
if (priv->material != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->material);
@@ -135,12 +147,186 @@ meta_shaped_texture_dispose (GObject *object)
priv->texture = COGL_INVALID_HANDLE;
}
meta_shaped_texture_set_mask_texture (self, COGL_INVALID_HANDLE);
meta_shaped_texture_set_shape_region (self, NULL);
meta_shaped_texture_set_clip_region (self, NULL);
meta_shaped_texture_set_overlay_path (self, NULL, NULL);
G_OBJECT_CLASS (meta_shaped_texture_parent_class)->dispose (object);
}
static void
meta_shaped_texture_dirty_mask (MetaShapedTexture *stex)
{
MetaShapedTexturePrivate *priv = stex->priv;
if (priv->mask_texture != COGL_INVALID_HANDLE)
{
cogl_handle_unref (priv->mask_texture);
priv->mask_texture = COGL_INVALID_HANDLE;
}
if (priv->material != COGL_INVALID_HANDLE)
cogl_material_set_layer (priv->material, 1, COGL_INVALID_HANDLE);
}
static void
install_overlay_path (MetaShapedTexture *stex,
guchar *mask_data,
int tex_width,
int tex_height,
int stride)
{
MetaShapedTexturePrivate *priv = stex->priv;
int i, n_rects;
cairo_t *cr;
cairo_rectangle_int_t rect;
cairo_surface_t *surface;
if (priv->overlay_region == NULL)
return;
surface = cairo_image_surface_create_for_data (mask_data,
CAIRO_FORMAT_A8,
tex_width,
tex_height,
stride);
cr = cairo_create (surface);
cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
n_rects = cairo_region_num_rectangles (priv->overlay_region);
for (i = 0; i < n_rects; i++)
{
cairo_region_get_rectangle (priv->overlay_region, i, &rect);
cairo_rectangle (cr, rect.x, rect.y, rect.width, rect.height);
}
cairo_fill_preserve (cr);
if (priv->overlay_path == NULL)
{
/* If we have an overlay region but not an overlay path, then we
* just need to clear the rectangles in the overlay region. */
goto out;
}
cairo_clip (cr);
cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
cairo_set_source_rgba (cr, 1, 1, 1, 1);
cairo_append_path (cr, priv->overlay_path);
cairo_fill (cr);
out:
cairo_destroy (cr);
cairo_surface_destroy (surface);
}
static void
meta_shaped_texture_ensure_mask (MetaShapedTexture *stex)
{
MetaShapedTexturePrivate *priv = stex->priv;
CoglHandle paint_tex;
guint tex_width, tex_height;
paint_tex = priv->texture;
if (paint_tex == COGL_INVALID_HANDLE)
return;
tex_width = cogl_texture_get_width (paint_tex);
tex_height = cogl_texture_get_height (paint_tex);
/* If the mask texture we have was created for a different size then
recreate it */
if (priv->mask_texture != COGL_INVALID_HANDLE
&& (priv->mask_width != tex_width || priv->mask_height != tex_height))
meta_shaped_texture_dirty_mask (stex);
/* If we don't have a mask texture yet then create one */
if (priv->mask_texture == COGL_INVALID_HANDLE)
{
guchar *mask_data;
int i;
int n_rects;
int stride;
GLenum paint_gl_target;
/* If we have no shape region and no (or an empty) overlay region, we
* don't need to create a full mask texture, so quit early. */
if (priv->shape_region == NULL &&
(priv->overlay_region == NULL ||
cairo_region_num_rectangles (priv->overlay_region) == 0))
{
return;
}
stride = cairo_format_stride_for_width (CAIRO_FORMAT_A8, tex_width);
/* Create data for an empty image */
mask_data = g_malloc0 (stride * tex_height);
n_rects = cairo_region_num_rectangles (priv->shape_region);
/* Fill in each rectangle. */
for (i = 0; i < n_rects; i ++)
{
cairo_rectangle_int_t rect;
cairo_region_get_rectangle (priv->shape_region, i, &rect);
gint x1 = rect.x, x2 = x1 + rect.width;
gint y1 = rect.y, y2 = y1 + rect.height;
guchar *p;
/* Clip the rectangle to the size of the texture */
x1 = CLAMP (x1, 0, (gint) tex_width - 1);
x2 = CLAMP (x2, x1, (gint) tex_width);
y1 = CLAMP (y1, 0, (gint) tex_height - 1);
y2 = CLAMP (y2, y1, (gint) tex_height);
/* Fill the rectangle */
for (p = mask_data + y1 * stride + x1;
y1 < y2;
y1++, p += stride)
memset (p, 255, x2 - x1);
}
install_overlay_path (stex, mask_data, tex_width, tex_height, stride);
cogl_texture_get_gl_texture (paint_tex, NULL, &paint_gl_target);
#ifdef GL_TEXTURE_RECTANGLE_ARB
if (paint_gl_target == GL_TEXTURE_RECTANGLE_ARB)
{
priv->mask_texture
= meta_texture_rectangle_new (tex_width, tex_height,
0, /* flags */
/* data format */
COGL_PIXEL_FORMAT_A_8,
/* internal GL format */
GL_ALPHA,
/* internal cogl format */
COGL_PIXEL_FORMAT_A_8,
/* rowstride */
stride,
mask_data);
}
else
#endif /* GL_TEXTURE_RECTANGLE_ARB */
priv->mask_texture = cogl_texture_new_from_data (tex_width, tex_height,
COGL_TEXTURE_NONE,
COGL_PIXEL_FORMAT_A_8,
COGL_PIXEL_FORMAT_ANY,
stride,
mask_data);
g_free (mask_data);
priv->mask_width = tex_width;
priv->mask_height = tex_height;
}
}
static void
meta_shaped_texture_paint (ClutterActor *actor)
{
@@ -190,9 +376,9 @@ meta_shaped_texture_paint (ClutterActor *actor)
if (tex_width == 0 || tex_height == 0) /* no contents yet */
return;
if (priv->mask_texture == COGL_INVALID_HANDLE)
if (priv->shape_region == NULL)
{
/* Use a single-layer texture if we don't have a mask. */
/* No region means an unclipped shape. Use a single-layer texture. */
if (priv->material_unshaped == COGL_INVALID_HANDLE)
{
@@ -205,6 +391,8 @@ meta_shaped_texture_paint (ClutterActor *actor)
}
else
{
meta_shaped_texture_ensure_mask (stex);
if (priv->material == COGL_INVALID_HANDLE)
{
if (G_UNLIKELY (material_template == COGL_INVALID_HANDLE))
@@ -295,7 +483,7 @@ meta_shaped_texture_pick (ClutterActor *actor,
MetaShapedTexturePrivate *priv = stex->priv;
/* If there is no region then use the regular pick */
if (priv->mask_texture == COGL_INVALID_HANDLE)
if (priv->shape_region == NULL)
CLUTTER_ACTOR_CLASS (meta_shaped_texture_parent_class)
->pick (actor, color);
else if (clutter_actor_should_pick_paint (actor))
@@ -315,6 +503,8 @@ meta_shaped_texture_pick (ClutterActor *actor,
if (tex_width == 0 || tex_height == 0) /* no contents yet */
return;
meta_shaped_texture_ensure_mask (stex);
cogl_set_source_color4ub (color->red, color->green, color->blue,
color->alpha);
@@ -405,8 +595,8 @@ meta_shaped_texture_set_create_mipmaps (MetaShapedTexture *stex,
}
void
meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
CoglHandle mask_texture)
meta_shaped_texture_set_shape_region (MetaShapedTexture *stex,
cairo_region_t *region)
{
MetaShapedTexturePrivate *priv;
@@ -414,18 +604,19 @@ meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
priv = stex->priv;
if (priv->mask_texture != COGL_INVALID_HANDLE)
if (priv->shape_region != NULL)
{
cogl_handle_unref (priv->mask_texture);
priv->mask_texture = COGL_INVALID_HANDLE;
cairo_region_destroy (priv->shape_region);
priv->shape_region = NULL;
}
if (mask_texture != COGL_INVALID_HANDLE)
if (region != NULL)
{
priv->mask_texture = mask_texture;
cogl_handle_ref (priv->mask_texture);
cairo_region_reference (region);
priv->shape_region = region;
}
meta_shaped_texture_dirty_mask (stex);
clutter_actor_queue_redraw (CLUTTER_ACTOR (stex));
}
@@ -544,6 +735,48 @@ meta_shaped_texture_get_texture (MetaShapedTexture *stex)
return stex->priv->texture;
}
/**
* meta_shaped_texture_set_overlay_path:
* @stex: a #MetaShapedTexture
* @overlay_region: A region containing the parts of the mask to overlay.
* All rectangles in this region are wiped clear to full transparency,
* and the overlay path is clipped to this region.
* @overlay_path: (transfer full): This path will be painted onto the mask
* texture with a fully opaque source. Due to the lack of refcounting
* in #cairo_path_t, ownership of the path is assumed.
*/
void
meta_shaped_texture_set_overlay_path (MetaShapedTexture *stex,
cairo_region_t *overlay_region,
cairo_path_t *overlay_path)
{
MetaShapedTexturePrivate *priv;
g_return_if_fail (META_IS_SHAPED_TEXTURE (stex));
priv = stex->priv;
if (priv->overlay_region != NULL)
{
cairo_region_destroy (priv->overlay_region);
priv->overlay_region = NULL;
}
if (priv->overlay_path != NULL)
{
cairo_path_destroy (priv->overlay_path);
priv->overlay_path = NULL;
}
cairo_region_reference (overlay_region);
priv->overlay_region = overlay_region;
/* cairo_path_t does not have refcounting. */
priv->overlay_path = overlay_path;
meta_shaped_texture_dirty_mask (stex);
}
/**
* meta_shaped_texture_set_clip_region:
* @stex: a #MetaShapedTexture

View File

@@ -5,7 +5,7 @@
*
* Authored By Neil Roberts <neil@linux.intel.com>
*
* Copyright (C) 2011, 2012 Intel Corporation
* Copyright (C) 2011 Intel Corporation
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -25,77 +25,94 @@
#include <config.h>
#define CLUTTER_ENABLE_EXPERIMENTAL_API
#define COGL_ENABLE_EXPERIMENTAL_API
#include <clutter/clutter.h>
#include "meta-texture-rectangle.h"
CoglTexture *
#ifdef GL_TEXTURE_RECTANGLE_ARB
static void (* pf_glGetIntegerv) (GLenum pname, GLint *params);
static void (* pf_glTexImage2D) (GLenum target, GLint level,
GLint internalFormat,
GLsizei width, GLsizei height,
GLint border, GLenum format, GLenum type,
const GLvoid *pixels);
static void (* pf_glGenTextures) (GLsizei n, GLuint *textures);
static void (* pf_glDeleteTextures) (GLsizei n, const GLuint *texture);
static void (* pf_glBindTexture) (GLenum target, GLuint texture);
static void
rectangle_texture_destroy_cb (void *user_data)
{
GLuint tex = GPOINTER_TO_UINT (user_data);
pf_glDeleteTextures (1, &tex);
}
#endif /* GL_TEXTURE_RECTANGLE_ARB */
CoglHandle
meta_texture_rectangle_new (unsigned int width,
unsigned int height,
CoglTextureFlags flags,
CoglPixelFormat format,
CoglPixelFormat internal_format,
GLenum internal_gl_format,
GLenum internal_format,
unsigned int rowstride,
const guint8 *data,
GError **error)
const guint8 *data)
{
ClutterBackend *backend =
clutter_get_default_backend ();
CoglContext *context =
clutter_backend_get_cogl_context (backend);
CoglTextureRectangle *tex_rect;
CoglHandle cogl_tex = COGL_INVALID_HANDLE;
tex_rect = cogl_texture_rectangle_new_with_size (context,
width, height,
internal_format,
error);
if (tex_rect == NULL)
return NULL;
#ifdef GL_TEXTURE_RECTANGLE_ARB
static CoglUserDataKey user_data_key;
GLint old_binding;
GLuint tex;
if (pf_glGenTextures == NULL)
{
pf_glGetIntegerv = (void *) cogl_get_proc_address ("glGetIntegerv");
pf_glTexImage2D = (void *) cogl_get_proc_address ("glTexImage2D");
pf_glGenTextures = (void *) cogl_get_proc_address ("glGenTextures");
pf_glDeleteTextures = (void *) cogl_get_proc_address ("glDeleteTextures");
pf_glBindTexture = (void *) cogl_get_proc_address ("glBindTexture");
}
pf_glGenTextures (1, &tex);
pf_glGetIntegerv (GL_TEXTURE_BINDING_RECTANGLE_ARB, &old_binding);
pf_glBindTexture (GL_TEXTURE_RECTANGLE_ARB, tex);
pf_glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0,
internal_gl_format, width, height,
0, internal_gl_format,
GL_UNSIGNED_BYTE, NULL);
pf_glBindTexture (GL_TEXTURE_RECTANGLE_ARB, old_binding);
cogl_tex = cogl_texture_new_from_foreign (tex,
GL_TEXTURE_RECTANGLE_ARB,
width, height,
0, 0, /* no waste */
internal_format);
/* Cogl won't destroy the GL texture when a foreign texture is used
so we need to destroy it manually. We can set a destroy
notification callback to do this transparently */
cogl_object_set_user_data (cogl_tex,
&user_data_key,
GUINT_TO_POINTER (tex),
rectangle_texture_destroy_cb);
/* Use cogl_texture_set_region instead of uploading the data
directly with GL calls so that we can let Cogl deal with setting
the pixel store parameters and handling format conversion */
if (data)
cogl_texture_set_region (COGL_TEXTURE (tex_rect),
0, 0, /* src_x/y */
0, 0, /* dst_x/y */
width, height, /* dst_width/height */
width, height, /* width/height */
cogl_texture_set_region (cogl_tex,
0, 0, /* src x/y */
0, 0, /* dst x/y */
width, height, /* dst width/height */
width, height, /* src width/height */
format,
rowstride,
data);
return COGL_TEXTURE (tex_rect);
}
static void
texture_rectangle_check_cb (CoglTexture *sub_texture,
const float *sub_texture_coords,
const float *meta_coords,
void *user_data)
{
gboolean *result = user_data;
if (cogl_is_texture_rectangle (sub_texture))
*result = TRUE;
}
/* Determines if the given texture is using a rectangle texture as its
* primitive texture type. Eventually this function could be replaced
* with cogl_texture_get_type if Cogl makes that public.
*
* http://git.gnome.org/browse/cogl/commit/?h=8012eee31
*/
gboolean
meta_texture_rectangle_check (CoglTexture *texture)
{
gboolean result = FALSE;
cogl_meta_texture_foreach_in_region (COGL_META_TEXTURE (texture),
0.0f, 0.0f, /* tx_1 / ty_1 */
1.0f, 1.0f, /* tx_2 / ty_2 */
COGL_PIPELINE_WRAP_MODE_REPEAT,
COGL_PIPELINE_WRAP_MODE_REPEAT,
texture_rectangle_check_cb,
&result);
return result;
#endif /* GL_TEXTURE_RECTANGLE_ARB */
return cogl_tex;
}

View File

@@ -30,17 +30,15 @@
G_BEGIN_DECLS
CoglTexture *
CoglHandle
meta_texture_rectangle_new (unsigned int width,
unsigned int height,
CoglTextureFlags flags,
CoglPixelFormat format,
CoglPixelFormat internal_format,
GLenum internal_gl_format,
GLenum internal_format,
unsigned int rowstride,
const guint8 *data,
GError **error);
gboolean
meta_texture_rectangle_check (CoglTexture *texture);
const guint8 *data);
G_END_DECLS

View File

@@ -98,6 +98,18 @@ meta_texture_tower_free (MetaTextureTower *tower)
g_slice_free (MetaTextureTower, tower);
}
#ifdef GL_TEXTURE_RECTANGLE_ARB
static gboolean
texture_is_rectangle (CoglHandle texture)
{
GLuint gl_tex;
GLenum gl_target;
cogl_texture_get_gl_texture (texture, &gl_tex, &gl_target);
return gl_target == GL_TEXTURE_RECTANGLE_ARB;
}
#endif /* GL_TEXTURE_RECTANGLE_ARB */
/**
* meta_texture_tower_set_base_texture:
* @tower: a #MetaTextureTower
@@ -342,11 +354,13 @@ get_paint_level (int width, int height)
return (int)(0.5 + lambda);
}
#ifdef GL_TEXTURE_RECTANGLE_ARB
static gboolean
is_power_of_two (int x)
{
return (x & (x - 1)) == 0;
}
#endif /* GL_TEXTURE_RECTANGLE_ARB */
static void
texture_tower_create_texture (MetaTextureTower *tower,
@@ -354,23 +368,25 @@ texture_tower_create_texture (MetaTextureTower *tower,
int width,
int height)
{
#ifdef GL_TEXTURE_RECTANGLE_ARB
if ((!is_power_of_two (width) || !is_power_of_two (height)) &&
meta_texture_rectangle_check (tower->textures[level - 1]))
texture_is_rectangle (tower->textures[level - 1]))
{
tower->textures[level] =
meta_texture_rectangle_new (width, height,
0, /* flags */
/* data format */
TEXTURE_FORMAT,
/* internal GL format */
GL_RGBA,
/* internal cogl format */
TEXTURE_FORMAT,
/* rowstride */
width * 4,
/* data */
NULL,
/* error */
NULL);
}
else
#endif /* GL_TEXTURE_RECTANGLE_ARB */
{
tower->textures[level] = cogl_texture_new_with_size (width, height,
COGL_TEXTURE_NO_AUTO_MIPMAP,
@@ -546,7 +562,7 @@ texture_tower_revalidate_client (MetaTextureTower *tower,
4 * dest_width,
dest_data);
if (dest_texture_height < source_texture_height)
if (dest_height < source_texture_height)
{
g_free (source_tmp1);
g_free (source_tmp2);

View File

@@ -13,7 +13,6 @@
#define COGL_ENABLE_EXPERIMENTAL_API
#include <cogl/cogl-texture-pixmap-x11.h>
#include <gdk/gdk.h> /* for gdk_rectangle_union() */
#include <string.h>
#include <meta/display.h>
#include <meta/errors.h>
@@ -25,8 +24,6 @@
#include "compositor-private.h"
#include "meta-shadow-factory-private.h"
#include "meta-window-actor-private.h"
#include "meta-texture-rectangle.h"
#include "region-utils.h"
enum {
POSITION_CHANGED,
@@ -126,10 +123,15 @@ enum
PROP_META_WINDOW = 1,
PROP_META_SCREEN,
PROP_X_WINDOW,
PROP_X_WINDOW_ATTRIBUTES,
PROP_NO_SHADOW,
PROP_SHADOW_CLASS
};
#define DEFAULT_SHADOW_RADIUS 12
#define DEFAULT_SHADOW_X_OFFSET 0
#define DEFAULT_SHADOW_Y_OFFSET 8
static void meta_window_actor_dispose (GObject *object);
static void meta_window_actor_finalize (GObject *object);
static void meta_window_actor_constructed (GObject *object);
@@ -748,41 +750,70 @@ meta_window_actor_has_shadow (MetaWindowActor *self)
* Always put a shadow around windows with a frame - This should override
* the restriction about not putting a shadow around ARGB windows.
*/
if (meta_window_get_frame (priv->window))
return TRUE;
if (priv->window)
{
if (meta_window_get_frame (priv->window))
{
meta_verbose ("Window 0x%x has shadow because it has a frame\n",
(guint)priv->xwindow);
return TRUE;
}
}
/*
* Do not add shadows to ARGB windows; eventually we should generate a
* shadow from the input shape for such windows.
*/
if (priv->argb32 || priv->opacity != 0xff)
return FALSE;
{
meta_verbose ("Window 0x%x has no shadow as it is ARGB\n",
(guint)priv->xwindow);
return FALSE;
}
/*
* Add shadows to override redirect windows (e.g., Gtk menus).
*/
if (priv->window->override_redirect)
return TRUE;
{
meta_verbose ("Window 0x%x has shadow because it is override redirect.\n",
(guint)priv->xwindow);
return TRUE;
}
/*
* Don't put shadow around DND icon windows
*/
if (window_type == META_WINDOW_DND ||
window_type == META_WINDOW_DESKTOP)
return FALSE;
{
meta_verbose ("Window 0x%x has no shadow as it is DND or Desktop\n",
(guint)priv->xwindow);
return FALSE;
}
if (window_type == META_WINDOW_MENU
#if 0
|| window_type == META_WINDOW_DROPDOWN_MENU
#endif
)
return TRUE;
{
meta_verbose ("Window 0x%x has shadow as it is a menu\n",
(guint)priv->xwindow);
return TRUE;
}
#if 0
if (window_type == META_WINDOW_TOOLTIP)
return TRUE;
{
meta_verbose ("Window 0x%x has shadow as it is a tooltip\n",
(guint)priv->xwindow);
return TRUE;
}
#endif
meta_verbose ("Window 0x%x has no shadow as it fell through\n",
(guint)priv->xwindow);
return FALSE;
}
@@ -1188,36 +1219,31 @@ meta_window_actor_should_unredirect (MetaWindowActor *self)
MetaWindow *metaWindow = meta_window_actor_get_meta_window (self);
MetaScreen *screen = meta_window_get_screen (metaWindow);
MetaWindowActorPrivate *priv = self->priv;
int screen_width, screen_height;
MetaRectangle window_rect, monitor_rect;
int num_monitors = meta_screen_get_n_monitors (screen);
int i;
if (!meta_window_is_override_redirect (metaWindow))
return FALSE;
if (priv->opacity != 0xff)
return FALSE;
if (priv->argb32)
return FALSE;
if (metaWindow->has_shape)
return FALSE;
meta_screen_get_size (screen, &screen_width, &screen_height);
meta_window_get_outer_rect (metaWindow, &window_rect);
if (window_rect.x == 0 && window_rect.y == 0 &&
window_rect.width == screen_width && window_rect.height == screen_height)
return TRUE;
for (i = 0; i < num_monitors; i++)
if (meta_window_is_override_redirect (metaWindow) && priv->opacity == 0xff && !priv->argb32)
{
meta_screen_get_monitor_geometry (screen , i, &monitor_rect);
if (monitor_rect.x == window_rect.x && monitor_rect.y == window_rect.y &&
monitor_rect.width == window_rect.width && monitor_rect.height == window_rect.height)
return TRUE;
int screen_width, screen_height;
MetaRectangle window_rect;
meta_screen_get_size (screen, &screen_width, &screen_height);
meta_window_get_outer_rect (metaWindow, &window_rect);
if (window_rect.x == 0 && window_rect.y == 0 &&
window_rect.width == screen_width && window_rect.height == screen_height)
return TRUE;
else
{
int num_monitors = meta_screen_get_n_monitors (screen);
int i;
MetaRectangle monitor_rect;
for (i = 0; i < num_monitors; i++)
{
meta_screen_get_monitor_geometry (screen , i, &monitor_rect);
if (monitor_rect.x == window_rect.x && monitor_rect.y == window_rect.y &&
monitor_rect.width == window_rect.width && monitor_rect.height == window_rect.height)
return TRUE;
}
}
}
return FALSE;
@@ -1689,7 +1715,7 @@ meta_window_actor_get_obscured_region (MetaWindowActor *self)
#if 0
/* Print out a region; useful for debugging */
static void
print_region (cairo_region_t *region)
dump_region (cairo_region_t *region)
{
int n_rects;
int i;
@@ -1707,26 +1733,6 @@ print_region (cairo_region_t *region)
}
#endif
#if 0
/* Dump a region to a PNG file; useful for debugging */
static void
see_region (cairo_region_t *region,
int width,
int height,
char *filename)
{
cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_A8, width, height);
cairo_t *cr = cairo_create (surface);
gdk_cairo_region (cr, region);
cairo_fill (cr);
cairo_surface_write_to_png (surface, filename);
cairo_destroy (cr);
cairo_surface_destroy (surface);
}
#endif
/**
* meta_window_actor_set_visible_region:
* @self: a #MetaWindowActor
@@ -2017,196 +2023,121 @@ meta_window_actor_sync_visibility (MetaWindowActor *self)
}
}
#define TAU (2*M_PI)
static inline void
set_integral_bounding_rect (cairo_rectangle_int_t *rect,
double x, double y,
double width, double height)
{
rect->x = floor(x);
rect->y = floor(y);
rect->width = ceil(x + width) - rect->x;
rect->height = ceil(y + height) - rect->y;
}
static void
install_corners (MetaWindow *window,
MetaFrameBorders *borders,
cairo_t *cr)
update_corners (MetaWindowActor *self,
MetaFrameBorders *borders)
{
float top_left, top_right, bottom_left, bottom_right;
int x, y;
MetaWindowActorPrivate *priv = self->priv;
MetaRectangle outer;
cairo_rectangle_int_t corner_rects[4];
cairo_region_t *corner_region;
cairo_path_t *corner_path;
float top_left, top_right, bottom_left, bottom_right;
float x, y;
meta_frame_get_corner_radiuses (window->frame,
/* need these to build a path */
cairo_t *cr;
cairo_surface_t *surface;
if (!priv->window->frame)
{
meta_shaped_texture_set_overlay_path (META_SHAPED_TEXTURE (priv->actor),
NULL, NULL);
return;
}
meta_window_get_outer_rect (priv->window, &outer);
meta_frame_get_corner_radiuses (priv->window->frame,
&top_left,
&top_right,
&bottom_left,
&bottom_right);
meta_window_get_outer_rect (window, &outer);
/* Unfortunately, cairo does not allow us to create a context
* without a surface. Create a 0x0 image surface to "paint to"
* so we can get the path. */
surface = cairo_image_surface_create (CAIRO_FORMAT_A8,
0, 0);
cr = cairo_create (surface);
/* top left */
x = borders->invisible.left;
y = borders->invisible.top;
set_integral_bounding_rect (&corner_rects[0],
x, y, top_left, top_left);
cairo_arc (cr,
x + top_left,
y + top_left,
top_left,
2 * TAU / 4,
3 * TAU / 4);
0, M_PI*2);
/* top right */
x = borders->invisible.left + outer.width - top_right;
y = borders->invisible.top;
set_integral_bounding_rect (&corner_rects[1],
x, y, top_right, top_right);
cairo_arc (cr,
x,
y + top_right,
top_right,
3 * TAU / 4,
4 * TAU / 4);
0, M_PI*2);
/* bottom right */
x = borders->invisible.left + outer.width - bottom_right;
y = borders->invisible.top + outer.height - bottom_right;
set_integral_bounding_rect (&corner_rects[2],
x, y, bottom_right, bottom_right);
cairo_arc (cr,
x,
y,
bottom_right,
0 * TAU / 4,
1 * TAU / 4);
0, M_PI*2);
/* bottom left */
x = borders->invisible.left;
y = borders->invisible.top + outer.height - bottom_left;
set_integral_bounding_rect (&corner_rects[3],
x, y, bottom_left, bottom_left);
cairo_arc (cr,
x + bottom_left,
y,
bottom_left,
1 * TAU / 4,
2 * TAU / 4);
0, M_PI*2);
cairo_set_source_rgba (cr, 1, 1, 1, 1);
cairo_fill (cr);
}
corner_path = cairo_copy_path (cr);
static cairo_region_t *
scan_visible_region (guchar *mask_data,
int stride,
cairo_region_t *scan_area)
{
int i, n_rects = cairo_region_num_rectangles (scan_area);
MetaRegionBuilder builder;
meta_region_builder_init (&builder);
for (i = 0; i < n_rects; i++)
{
int x, y;
cairo_rectangle_int_t rect;
cairo_region_get_rectangle (scan_area, i, &rect);
for (y = rect.y; y < (rect.y + rect.height); y++)
{
for (x = rect.x; x < (rect.x + rect.width); x++)
{
int w = x;
while (mask_data[y * stride + w] == 255 && w < (rect.x + rect.width))
w++;
if (w > 0)
{
meta_region_builder_add_rectangle (&builder, x, y, w - x, 1);
x = w;
}
}
}
}
return meta_region_builder_finish (&builder);
}
static void
build_and_scan_frame_mask (MetaWindowActor *self,
MetaFrameBorders *borders,
cairo_rectangle_int_t *client_area,
cairo_region_t *shape_region)
{
MetaWindowActorPrivate *priv = self->priv;
guchar *mask_data;
guint tex_width, tex_height;
CoglHandle paint_tex, mask_texture;
int stride;
cairo_t *cr;
cairo_surface_t *surface;
paint_tex = meta_shaped_texture_get_texture (META_SHAPED_TEXTURE (priv->actor));
if (paint_tex == COGL_INVALID_HANDLE)
return;
tex_width = cogl_texture_get_width (paint_tex);
tex_height = cogl_texture_get_height (paint_tex);
stride = cairo_format_stride_for_width (CAIRO_FORMAT_A8, tex_width);
/* Create data for an empty image */
mask_data = g_malloc0 (stride * tex_height);
surface = cairo_image_surface_create_for_data (mask_data,
CAIRO_FORMAT_A8,
tex_width,
tex_height,
stride);
cr = cairo_create (surface);
gdk_cairo_region (cr, shape_region);
cairo_fill (cr);
if (priv->window->frame != NULL)
{
cairo_region_t *frame_paint_region, *scanned_region;
cairo_rectangle_int_t rect = { 0, 0, tex_width, tex_height };
/* Make sure we don't paint the frame over the client window. */
frame_paint_region = cairo_region_create_rectangle (&rect);
cairo_region_subtract_rectangle (frame_paint_region, client_area);
gdk_cairo_region (cr, frame_paint_region);
cairo_clip (cr);
install_corners (priv->window, borders, cr);
cairo_surface_flush (surface);
scanned_region = scan_visible_region (mask_data, stride, frame_paint_region);
cairo_region_union (shape_region, scanned_region);
cairo_region_destroy (scanned_region);
}
cairo_destroy (cr);
cairo_surface_destroy (surface);
cairo_destroy (cr);
if (meta_texture_rectangle_check (paint_tex))
{
mask_texture = meta_texture_rectangle_new (tex_width, tex_height,
COGL_PIXEL_FORMAT_A_8,
COGL_PIXEL_FORMAT_A_8,
stride,
mask_data,
NULL /* error */);
}
else
{
/* Note: we don't allow slicing for this texture because we
* need to use it with multi-texturing which doesn't support
* sliced textures */
mask_texture = cogl_texture_new_from_data (tex_width, tex_height,
COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_A_8,
COGL_PIXEL_FORMAT_ANY,
stride,
mask_data);
}
corner_region = cairo_region_create_rectangles (corner_rects, 4);
meta_shaped_texture_set_mask_texture (META_SHAPED_TEXTURE (priv->actor),
mask_texture);
cogl_handle_unref (mask_texture);
meta_shaped_texture_set_overlay_path (META_SHAPED_TEXTURE (priv->actor),
corner_region, corner_path);
cairo_region_destroy (corner_region);
g_free (mask_data);
}
static void
@@ -2216,30 +2147,54 @@ check_needs_reshape (MetaWindowActor *self)
MetaScreen *screen = priv->screen;
MetaDisplay *display = meta_screen_get_display (screen);
MetaFrameBorders borders;
cairo_region_t *region = NULL;
cairo_rectangle_int_t client_area;
cairo_region_t *region;
if (!priv->needs_reshape)
return;
meta_shaped_texture_set_shape_region (META_SHAPED_TEXTURE (priv->actor), NULL);
meta_window_actor_clear_shape_region (self);
meta_frame_calc_borders (priv->window->frame, &borders);
client_area.x = borders.total.left;
client_area.y = borders.total.top;
client_area.width = priv->window->rect.width;
client_area.height = priv->window->rect.height;
meta_shaped_texture_set_mask_texture (META_SHAPED_TEXTURE (priv->actor), COGL_INVALID_HANDLE);
meta_window_actor_clear_shape_region (self);
region = meta_window_get_frame_bounds (priv->window);
if (region != NULL)
{
/* This returns the window's internal frame bounds region,
* so we need to copy it because we modify it below. */
region = cairo_region_copy (region);
}
else
{
/* If we have no region, we have no frame. We have no frame,
* so just use the bounding region instead */
region = cairo_region_copy (priv->bounding_region);
}
#ifdef HAVE_SHAPE
if (priv->window->has_shape)
{
/* Translate the set of XShape rectangles that we
* get from the X server to a cairo_region. */
Display *xdisplay = meta_display_get_xdisplay (display);
XRectangle *rects;
int n_rects, ordering;
cairo_rectangle_int_t client_area;
client_area.width = priv->window->rect.width;
client_area.height = priv->window->rect.height;
if (priv->window->frame)
{
client_area.x = borders.total.left;
client_area.y = borders.total.top;
}
else
{
client_area.x = 0;
client_area.y = 0;
}
/* Punch out client area. */
cairo_region_subtract_rectangle (region, &client_area);
meta_error_trap_push (display);
rects = XShapeGetRectangles (xdisplay,
@@ -2252,40 +2207,28 @@ check_needs_reshape (MetaWindowActor *self)
if (rects)
{
int i;
cairo_rectangle_int_t *cairo_rects = g_new (cairo_rectangle_int_t, n_rects);
for (i = 0; i < n_rects; i ++)
{
cairo_rects[i].x = rects[i].x + client_area.x;
cairo_rects[i].y = rects[i].y + client_area.y;
cairo_rects[i].width = rects[i].width;
cairo_rects[i].height = rects[i].height;
cairo_rectangle_int_t rect = { rects[i].x + client_area.x,
rects[i].y + client_area.y,
rects[i].width,
rects[i].height };
cairo_region_union_rectangle (region, &rect);
}
XFree (rects);
region = cairo_region_create_rectangles (cairo_rects, n_rects);
g_free (cairo_rects);
}
}
#endif
if (region == NULL)
{
/* If we don't have a shape on the server, that means that
* we have an implicit shape of one rectangle covering the
* entire window. */
region = cairo_region_create_rectangle (&client_area);
}
meta_shaped_texture_set_shape_region (META_SHAPED_TEXTURE (priv->actor),
region);
/* This takes the region, generates a mask using GTK+
* and scans the mask looking for all opaque pixels,
* adding it to region.
*/
build_and_scan_frame_mask (self, &borders, &client_area, region);
meta_window_actor_update_shape_region (self, region);
cairo_region_destroy (region);
update_corners (self, &borders);
priv->needs_reshape = FALSE;
meta_window_actor_invalidate_shadow (self);
}

View File

@@ -209,6 +209,7 @@ meta_window_group_paint (ClutterActor *actor)
if (META_IS_WINDOW_ACTOR (l->data))
{
MetaWindowActor *window_actor = l->data;
window_actor = l->data;
meta_window_actor_reset_visible_regions (window_actor);
}
else if (META_IS_BACKGROUND_ACTOR (l->data))

View File

@@ -112,6 +112,8 @@ struct _MetaDefaultPluginPrivate
ClutterActor *desktop2;
MetaPluginInfo info;
gboolean debug_mode : 1;
};
/*
@@ -180,6 +182,34 @@ meta_default_plugin_get_property (GObject *object,
}
}
static void
start (MetaPlugin *plugin)
{
MetaDefaultPluginPrivate *priv = META_DEFAULT_PLUGIN (plugin)->priv;
guint destroy_timeout = DESTROY_TIMEOUT;
guint minimize_timeout = MINIMIZE_TIMEOUT;
guint maximize_timeout = MAXIMIZE_TIMEOUT;
guint map_timeout = MAP_TIMEOUT;
guint switch_timeout = SWITCH_TIMEOUT;
if (meta_plugin_debug_mode (plugin))
{
g_debug ("Plugin %s: Entering debug mode.", priv->info.name);
priv->debug_mode = TRUE;
/*
* Double the effect duration to make them easier to observe.
*/
destroy_timeout *= 2;
minimize_timeout *= 2;
maximize_timeout *= 2;
map_timeout *= 2;
switch_timeout *= 2;
}
}
static void
meta_default_plugin_class_init (MetaDefaultPluginClass *klass)
{
@@ -191,6 +221,7 @@ meta_default_plugin_class_init (MetaDefaultPluginClass *klass)
gobject_class->set_property = meta_default_plugin_set_property;
gobject_class->get_property = meta_default_plugin_get_property;
plugin_class->start = start;
plugin_class->map = map;
plugin_class->minimize = minimize;
plugin_class->maximize = maximize;

View File

@@ -43,17 +43,34 @@
/* Optimium performance seems to be with MAX_CHUNK_RECTANGLES=4; 8 is about 10% slower.
* But using 8 may be more robust to systems with slow malloc(). */
#define MAX_CHUNK_RECTANGLES 8
#define MAX_LEVELS 16
void
typedef struct
{
/* To merge regions in binary tree order, we need to keep track of
* the regions that we've already merged together at different
* levels of the tree. We fill in an array in the pattern:
*
* |a |
* |b |a |
* |c | |ab |
* |d |c |ab |
* |e | | |abcd|
*/
cairo_region_t *levels[MAX_LEVELS];
int n_levels;
} MetaRegionBuilder;
static void
meta_region_builder_init (MetaRegionBuilder *builder)
{
int i;
for (i = 0; i < META_REGION_BUILDER_MAX_LEVELS; i++)
for (i = 0; i < MAX_LEVELS; i++)
builder->levels[i] = NULL;
builder->n_levels = 1;
}
void
static void
meta_region_builder_add_rectangle (MetaRegionBuilder *builder,
int x,
int y,
@@ -78,7 +95,7 @@ meta_region_builder_add_rectangle (MetaRegionBuilder *builder,
{
if (builder->levels[i] == NULL)
{
if (i < META_REGION_BUILDER_MAX_LEVELS)
if (i < MAX_LEVELS)
{
builder->levels[i] = builder->levels[i - 1];
builder->levels[i - 1] = NULL;
@@ -98,7 +115,7 @@ meta_region_builder_add_rectangle (MetaRegionBuilder *builder,
}
}
cairo_region_t *
static cairo_region_t *
meta_region_builder_finish (MetaRegionBuilder *builder)
{
cairo_region_t *result = NULL;

View File

@@ -63,32 +63,6 @@ struct _MetaRegionIterator {
cairo_rectangle_int_t next_rectangle;
};
typedef struct _MetaRegionBuilder MetaRegionBuilder;
#define META_REGION_BUILDER_MAX_LEVELS 16
struct _MetaRegionBuilder {
/* To merge regions in binary tree order, we need to keep track of
* the regions that we've already merged together at different
* levels of the tree. We fill in an array in the pattern:
*
* |a |
* |b |a |
* |c | |ab |
* |d |c |ab |
* |e | | |abcd|
*/
cairo_region_t *levels[META_REGION_BUILDER_MAX_LEVELS];
int n_levels;
};
void meta_region_builder_init (MetaRegionBuilder *builder);
void meta_region_builder_add_rectangle (MetaRegionBuilder *builder,
int x,
int y,
int width,
int height);
cairo_region_t * meta_region_builder_finish (MetaRegionBuilder *builder);
void meta_region_iterator_init (MetaRegionIterator *iter,
cairo_region_t *region);
gboolean meta_region_iterator_at_end (MetaRegionIterator *iter);

View File

@@ -23,8 +23,7 @@
*/
/**
* SECTION:Bell
* @short_description: Ring the bell or flash the screen
* \file bell.c Ring the bell or flash the screen
*
* Sometimes, X programs "ring the bell", whatever that means. Mutter lets
* the user configure the bell to be audible or visible (aka visual), and
@@ -58,10 +57,6 @@
#endif
/**
* bell_flash_screen:
* @display: The display which owns the screen (rather redundant)
* @screen: The screen to flash
*
* Flashes one entire screen. This is done by making a window the size of the
* whole screen (or reusing the old one, if it's still around), mapping it,
* painting it white and then black, and then unmapping it. We set saveunder so
@@ -70,12 +65,14 @@
* Unlike frame flashes, we don't do fullscreen flashes with a timeout; rather,
* we do them in one go, because we don't have to rely on the theme code
* redrawing the frame for us in order to do the flash.
*/
/*
* Bug: The way I read it, this appears not to do the flash
*
* \param display The display which owns the screen (rather redundant)
* \param screen The screen to flash
*
* \bug The way I read it, this appears not to do the flash
* the first time we flash a particular display. Am I wrong?
*
* Bug: This appears to destroy our current XSync status.
* \bug This appears to destroy our current XSync status.
*/
static void
bell_flash_screen (MetaDisplay *display,
@@ -140,15 +137,14 @@ bell_flash_screen (MetaDisplay *display,
}
/**
* bell_flash_fullscreen:
* @display: The display the event came in on
* @xkb_ev: The bell event
*
* Flashes one screen, or all screens, in response to a bell event.
* If the event is on a particular window, flash the screen that
* window is on. Otherwise, flash every screen on this display.
*
* If the configure script found we had no XKB, this does not exist.
*
* \param display The display the event came in on
* \param xkb_ev The bell event
*/
#ifdef HAVE_XKB
static void
@@ -186,21 +182,17 @@ bell_flash_fullscreen (MetaDisplay *display,
}
/**
* bell_unflash_frame:
* @data: The frame to unflash, cast to a gpointer so it can go into
* a callback function.
*
* Makes a frame be not flashed; this is the timeout half of
* bell_flash_window_frame(). This is done simply by clearing the
* flash flag and queuing a redraw of the frame.
*
* If the configure script found we had no XKB, this does not exist.
*
* Returns: Always FALSE, so we don't get called again.
*/
/*
* Bug: This is the parallel to bell_flash_window_frame(), so it should
* \param data The frame to unflash, cast to a gpointer so it can go into
* a callback function.
* \return Always FALSE, so we don't get called again.
*
* \bug This is the parallel to bell_flash_window_frame(), so it should
* really be called meta_bell_unflash_window_frame().
*/
static gboolean
@@ -213,9 +205,6 @@ bell_unflash_frame (gpointer data)
}
/**
* bell_flash_window_frame:
* @window: The window to flash
*
* Makes a frame flash and then return to normal shortly afterwards.
* This is done by setting a flag so that the theme
* code will temporarily draw the frame as focussed if it's unfocussed and
@@ -223,6 +212,8 @@ bell_unflash_frame (gpointer data)
* that the flag can be unset and the frame re-redrawn.
*
* If the configure script found we had no XKB, this does not exist.
*
* \param window The window to flash
*/
static void
bell_flash_window_frame (MetaWindow *window)
@@ -240,12 +231,11 @@ bell_flash_window_frame (MetaWindow *window)
}
/**
* bell_flash_frame:
* @display: The display the bell event came in on
* @xkb_ev: The bell event we just received
*
* Flashes the frame of the focussed window. If there is no focussed window,
* flashes the screen.
*
* \param display The display the bell event came in on
* \param xkb_ev The bell event we just received
*/
static void
bell_flash_frame (MetaDisplay *display,
@@ -271,18 +261,15 @@ bell_flash_frame (MetaDisplay *display,
}
/**
* bell_visual_notify:
* @display: The display the bell event came in on
* @xkb_ev: The bell event we just received
*
* Gives the user some kind of visual bell substitute, in response to a
* bell event. What this is depends on the "visual bell type" pref.
*
* If the configure script found we had no XKB, this does not exist.
*/
/*
* Bug: This should be merged with meta_bell_notify().
*
* \param display The display the bell event came in on
* \param xkb_ev The bell event we just received
*
* \bug This should be merged with meta_bell_notify().
*/
static void
bell_visual_notify (MetaDisplay *display,
@@ -420,13 +407,12 @@ meta_bell_shutdown (MetaDisplay *display)
}
/**
* meta_bell_notify_frame_destroy:
* @frame: The frame which is being destroyed
*
* Deals with a frame being destroyed. This is important because if we're
* using a visual bell, we might be flashing the edges of the frame, and
* so we'd have a timeout function waiting ready to un-flash them. If the
* frame's going away, we can tell the timeout not to bother.
*
* \param frame The frame which is being destroyed
*/
void
meta_bell_notify_frame_destroy (MetaFrame *frame)

View File

@@ -1,5 +1,17 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/**
* \file bell.h Ring the bell or flash the screen
*
* Sometimes, X programs "ring the bell", whatever that means. Mutter lets
* the user configure the bell to be audible or visible (aka visual), and
* if it's visual it can be configured to be frame-flash or fullscreen-flash.
* We never get told about audible bells; X handles them just fine by itself.
*
* The visual bell was the result of a discussion in Bugzilla here:
* <http://bugzilla.gnome.org/show_bug.cgi?id=99886>.
*/
/*
* Copyright (C) 2002 Sun Microsystems Inc.
*

View File

@@ -625,6 +625,7 @@ meta_rectangle_get_minimal_spanning_set_for_region (
*temp_rect = *basic_rect;
ret = g_list_prepend (NULL, temp_rect);
strut_iter = all_struts;
for (strut_iter = all_struts; strut_iter; strut_iter = strut_iter->next)
{
GList *rect_iter;

View File

@@ -119,7 +119,6 @@ typedef struct
MetaRectangle orig;
MetaRectangle current;
MetaFrameBorders *borders;
gboolean must_free_borders;
ActionType action_type;
gboolean is_user_action;
@@ -338,7 +337,7 @@ meta_window_constrain (MetaWindow *window,
* not gobject-style--gobject would be more pain than it's worth) or
* smart pointers would be so much nicer here. *shrug*
*/
if (info.must_free_borders)
if (!orig_borders)
g_free (info.borders);
}
@@ -359,15 +358,9 @@ setup_constraint_info (ConstraintInfo *info,
/* Create a fake frame geometry if none really exists */
if (orig_borders && !window->fullscreen)
{
info->borders = orig_borders;
info->must_free_borders = FALSE;
}
info->borders = orig_borders;
else
{
info->borders = g_new0 (MetaFrameBorders, 1);
info->must_free_borders = TRUE;
}
info->borders = g_new0 (MetaFrameBorders, 1);
if (flags & META_IS_MOVE_ACTION && flags & META_IS_RESIZE_ACTION)
info->action_type = ACTION_MOVE_AND_RESIZE;
@@ -571,6 +564,11 @@ place_window_if_needed(MetaWindow *window,
.083 * info->work_area_monitor.height;
}
/* idle_move_resize() uses the user_rect, so make sure it uses the
* placed coordinates (bug #556696).
*/
window->user_rect = info->current;
if (window->maximize_horizontally_after_placement ||
window->maximize_vertically_after_placement)
meta_window_maximize_internal (window,
@@ -764,12 +762,21 @@ constrain_modal_dialog (MetaWindow *window,
return TRUE;
x = parent->rect.x + (parent->rect.width / 2 - info->current.width / 2);
y = parent->rect.y + (parent->rect.height / 2 - info->current.height / 2);
y = 0;
if (parent->frame)
{
MetaFrameBorders borders;
x += parent->frame->rect.x;
y += parent->frame->rect.y;
meta_frame_calc_borders (parent->frame, &borders);
y += borders.total.top;
y += info->borders->visible.top;
}
else
y = parent->rect.y + info->borders->visible.top;
constraint_already_satisfied = (x == info->current.x) && (y == info->current.y);

View File

@@ -108,12 +108,8 @@ delete_ping_timeout_func (MetaDisplay *display,
/* Translators: %s is a window title */
if (window_title)
{
gchar *bold;
bold = g_strconcat ("<tt>", window_title, "</tt>", NULL);
tmp = g_markup_printf_escaped (_("%s is not responding."), bold);
g_free (bold);
}
tmp = g_markup_printf_escaped (_("<tt>%s</tt> is not responding."),
window_title);
else
tmp = g_strdup (_("Application is not responding."));

View File

@@ -25,10 +25,9 @@
*/
/**
* SECTION:MetaDisplay
* @short_description: Handles operations on an X display.
* \file display.c Handles operations on an X display.
*
* The display is represented as a #MetaDisplay struct.
* The display is represented as a MetaDisplay struct.
*/
#define _XOPEN_SOURCE 600 /* for gethostname() */
@@ -54,6 +53,12 @@
#include <X11/cursorfont.h>
#include "mutter-enum-types.h"
#ifdef HAVE_SOLARIS_XINERAMA
#include <X11/extensions/xinerama.h>
#endif
#ifdef HAVE_XFREE_XINERAMA
#include <X11/extensions/Xinerama.h>
#endif
#ifdef HAVE_RANDR
#include <X11/extensions/Xrandr.h>
#endif
@@ -82,7 +87,7 @@
g == META_GRAB_OP_KEYBOARD_ESCAPING_GROUP)
/**
* SECTION:pings
* \defgroup pings Pings
*
* Sometimes we want to see whether a window is responding,
* so we send it a "ping" message and see whether it sends us back a "pong"
@@ -97,13 +102,13 @@
*/
/**
* MetaPingData:
*
* Describes a ping on a window. When we send a ping to a window, we build
* one of these structs, and it eventually gets passed to the timeout function
* or to the function which handles the response from the window. If the window
* does or doesn't respond to the ping, we use this information to deal with
* these facts; we have a handler function for each.
*
* \ingroup pings
*/
typedef struct
{
@@ -145,7 +150,7 @@ enum {
static guint display_signals [LAST_SIGNAL] = { 0 };
/*
/**
* The display we're managing. This is a singleton object. (Historically,
* this was a list of displays, but there was never any way to add more
* than one element to it.) The goofy name is because we don't want it
@@ -180,7 +185,7 @@ static void prefs_changed_callback (MetaPreference pref,
static void sanity_check_timestamps (MetaDisplay *display,
guint32 known_good_timestamp);
MetaGroup* get_focussed_group (MetaDisplay *display);
static void
@@ -290,10 +295,10 @@ meta_display_class_init (MetaDisplayClass *klass)
/**
* ping_data_free:
*
* Destructor for #MetaPingData structs. Will destroy the
* Destructor for MetaPingData structs. Will destroy the
* event source for the struct as well.
*
* \ingroup pings
*/
static void
ping_data_free (MetaPingData *ping_data)
@@ -306,12 +311,14 @@ ping_data_free (MetaPingData *ping_data)
}
/**
* remove_pending_pings_for_window:
* @display: The display the window appears on
* @xwindow: The X ID of the window whose pings we should remove
*
* Frees every pending ping structure for the given X window on the
* given display. This means that we also destroy the timeouts.
*
* \param display The display the window appears on
* \param xwindow The X ID of the window whose pings we should remove
*
* \ingroup pings
*
*/
static void
remove_pending_pings_for_window (MetaDisplay *display, Window xwindow)
@@ -410,14 +417,14 @@ meta_display_init (MetaDisplay *disp)
}
/**
* meta_display_open:
*
* Opens a new display, sets it up, initialises all the X extensions
* we will need, and adds it to the list of displays.
*
* Returns: %TRUE if the display was opened successfully, and %FALSE
* \return True if the display was opened successfully, and False
* otherwise-- that is, if the display doesn't exist or it already
* has a window manager.
*
* \ingroup main
*/
gboolean
meta_display_open (void)
@@ -467,8 +474,6 @@ meta_display_open (void)
buf[sizeof(buf)-1] = '\0';
the_display->hostname = g_strdup (buf);
}
else
the_display->hostname = NULL;
the_display->error_trap_synced_at_last_pop = TRUE;
the_display->error_traps = 0;
the_display->error_trap_handler = NULL;
@@ -1046,7 +1051,6 @@ meta_display_close (MetaDisplay *display,
meta_display_free_window_prop_hooks (display);
meta_display_free_group_prop_hooks (display);
g_free (display->hostname);
g_free (display->name);
meta_display_shutdown_keys (display);
@@ -1164,16 +1168,14 @@ meta_display_ungrab (MetaDisplay *display)
}
/**
* meta_display_for_x_display:
* @xdisplay: An X display
*
* Returns the singleton MetaDisplay if @xdisplay matches the X display it's
* managing; otherwise gives a warning and returns %NULL. When we were claiming
* Returns the singleton MetaDisplay if "xdisplay" matches the X display it's
* managing; otherwise gives a warning and returns NULL. When we were claiming
* to be able to manage multiple displays, this was supposed to find the
* display out of the list which matched that display. Now it's merely an
* extra sanity check.
*
* Returns: The singleton X display, or %NULL if @xdisplay isn't the one
* \param xdisplay An X display
* \return The singleton X display, or NULL if "xdisplay" isn't the one
* we're managing.
*/
MetaDisplay*
@@ -1189,11 +1191,9 @@ meta_display_for_x_display (Display *xdisplay)
}
/**
* meta_get_display:
*
* Accessor for the singleton MetaDisplay.
*
* Returns: The only #MetaDisplay there is. This can be %NULL, but only
* \return The only MetaDisplay there is. This can be NULL, but only
* during startup.
*/
MetaDisplay*
@@ -1601,18 +1601,19 @@ handle_net_restack_window (MetaDisplay* display,
#endif
/**
* event_callback:
* @event: The event that just happened
* @data: The #MetaDisplay that events are coming from, cast to a gpointer
* so that it can be sent to a callback
*
* This is the most important function in the whole program. It is the heart,
* it is the nexus, it is the Grand Central Station of Mutter's world.
* When we create a #MetaDisplay, we ask GDK to pass *all* events for *all*
* When we create a MetaDisplay, we ask GDK to pass *all* events for *all*
* windows to this function. So every time anything happens that we might
* want to know about, this function gets called. You see why it gets a bit
* busy around here. Most of this function is a ginormous switch statement
* dealing with all the kinds of events that might turn up.
*
* \param event The event that just happened
* \param data The MetaDisplay that events are coming from, cast to a gpointer
* so that it can be sent to a callback
*
* \ingroup main
*/
static gboolean
event_callback (XEvent *event,
@@ -3764,8 +3765,6 @@ meta_display_end_grab_op (MetaDisplay *display,
g_signal_emit (display, display_signals[GRAB_OP_END], 0,
display->grab_screen, display->grab_window, display->grab_op);
display->grab_frame_action = FALSE;
if (display->grab_window != NULL)
display->grab_window->shaken_loose = FALSE;
@@ -4198,23 +4197,21 @@ meta_display_set_cursor_theme (const char *theme,
#endif
}
/*
/**
* Stores whether syncing is currently enabled.
*/
static gboolean is_syncing = FALSE;
/**
* meta_is_syncing:
*
* Returns whether X synchronisation is currently enabled.
*
* FIXME: This is *only* called by meta_display_open(), but by that time
* \return true if we must wait for events whenever we send X requests;
* false otherwise.
*
* \bug This is *only* called by meta_display_open, but by that time
* we have already turned syncing on or off on startup, and we don't
* have any way to do so while Mutter is running, so it's rather
* pointless.
*
* Returns: %TRUE if we must wait for events whenever we send X requests;
* %FALSE otherwise.
*/
gboolean
meta_is_syncing (void)
@@ -4223,9 +4220,10 @@ meta_is_syncing (void)
}
/**
* meta_set_syncing:
*
* A handy way to turn on synchronisation on or off for every display.
*
* \bug Of course there is only one display ever anyway, so this can
* be rather hugely simplified.
*/
void
meta_set_syncing (gboolean setting)
@@ -4238,25 +4236,26 @@ meta_set_syncing (gboolean setting)
}
}
/*
/**
* How long, in milliseconds, we should wait after pinging a window
* before deciding it's not going to get back to us.
*/
#define PING_TIMEOUT_DELAY 5000
/**
* meta_display_ping_timeout:
* @data: All the information about this ping. It is a #MetaPingData
* cast to a #gpointer in order to be passable to a timeout function.
* This function will also free this parameter.
*
* Does whatever it is we decided to do when a window didn't respond
* to a ping. We also remove the ping from the display's list of
* pending pings. This function is called by the event loop when the timeout
* times out which we created at the start of the ping.
*
* Returns: Always returns %FALSE, because this function is called as a
* timeout and we don't want to run the timer again.
* \param data All the information about this ping. It is a MetaPingData
* cast to a void* in order to be passable to a timeout function.
* This function will also free this parameter.
*
* \return Always returns false, because this function is called as a
* timeout and we don't want to run the timer again.
*
* \ingroup pings
*/
static gboolean
meta_display_ping_timeout (gpointer data)
@@ -4283,17 +4282,6 @@ meta_display_ping_timeout (gpointer data)
}
/**
* meta_display_ping_window:
* @display: The #MetaDisplay that the window is on
* @window: The #MetaWindow to send the ping to
* @timestamp: The timestamp of the ping. Used for uniqueness.
* Cannot be CurrentTime; use a real timestamp!
* @ping_reply_func: The callback to call if we get a response.
* @ping_timeout_func: The callback to call if we don't get a response.
* @user_data: Arbitrary data that will be passed to the callback
* function. (In practice it's often a pointer to
* the window.)
*
* Sends a ping request to a window. The window must respond to
* the request within a certain amount of time. If it does, we
* will call one callback; if the time passes and we haven't had
@@ -4303,9 +4291,20 @@ meta_display_ping_timeout (gpointer data)
* This function returns straight away after setting things up;
* the callbacks will be called from the event loop.
*
* FIXME: This should probably be a method on windows, rather than displays
* for one of their windows.
* \param display The MetaDisplay that the window is on
* \param window The MetaWindow to send the ping to
* \param timestamp The timestamp of the ping. Used for uniqueness.
* Cannot be CurrentTime; use a real timestamp!
* \param ping_reply_func The callback to call if we get a response.
* \param ping_timeout_func The callback to call if we don't get a response.
* \param user_data Arbitrary data that will be passed to the callback
* function. (In practice it's often a pointer to
* the window.)
*
* \bug This should probably be a method on windows, rather than displays
* for one of their windows.
*
* \ingroup pings
*/
void
meta_display_ping_window (MetaDisplay *display,
@@ -4413,15 +4412,16 @@ process_request_frame_extents (MetaDisplay *display,
}
/**
* process_pong_message:
* @display: the display we got the pong from
* @event: the #XEvent which is a pong; we can tell which
* ping it corresponds to because it bears the
* same timestamp.
*
* Process the pong (the response message) from the ping we sent
* to the window. This involves removing the timeout, calling the
* reply handler function, and freeing memory.
*
* \param display the display we got the pong from
* \param event the XEvent which is a pong; we can tell which
* ping it corresponds to because it bears the
* same timestamp.
*
* \ingroup pings
*/
static void
process_pong_message (MetaDisplay *display,
@@ -4468,17 +4468,18 @@ process_pong_message (MetaDisplay *display,
}
/**
* meta_display_window_has_pending_pings:
* @display: The #MetaDisplay of the window.
* @window: The #MetaWindow whose pings we want to know about.
*
* Finds whether a window has any pings waiting on it.
*
* FIXME: This should probably be a method on windows, rather than displays
* for one of their windows.
* \param display The MetaDisplay of the window.
* \param window The MetaWindow whose pings we want to know about.
*
* Returns: %TRUE if there is at least one ping which has been sent
* to the window without getting a response; %FALSE otherwise.
* \return True if there is at least one ping which has been sent
* to the window without getting a response; false otherwise.
*
* \bug This should probably be a method on windows, rather than displays
* for one of their windows.
*
* \ingroup pings
*/
gboolean
meta_display_window_has_pending_pings (MetaDisplay *display,
@@ -5334,6 +5335,7 @@ timestamp_too_old (MetaDisplay *display,
meta_warning ("Got a request to focus %s with a timestamp of 0. This "
"shouldn't happen!\n",
window ? window->desc : "the no_focus_window");
meta_print_backtrace ();
*timestamp = meta_display_get_current_time_roundtrip (display);
return FALSE;
}
@@ -5537,18 +5539,3 @@ meta_display_get_leader_window (MetaDisplay *display)
{
return display->leader_window;
}
/**
* meta_display_clear_mouse_mode:
* @display: a #MetaDisplay
*
* Sets the mouse-mode flag to %FALSE, which means that motion events are
* no longer ignored in mouse or sloppy focus.
* This is an internal function. It should be used only for reimplementing
* keybindings, and only in a manner compatible with core code.
*/
void
meta_display_clear_mouse_mode (MetaDisplay *display)
{
display->mouse_mode = FALSE;
}

View File

@@ -71,10 +71,18 @@ meta_key_binding_copy (MetaKeyBinding *binding)
return g_slice_dup (MetaKeyBinding, binding);
}
G_DEFINE_BOXED_TYPE(MetaKeyBinding,
meta_key_binding,
meta_key_binding_copy,
meta_key_binding_free)
GType
meta_key_binding_get_type (void)
{
static GType type_id = 0;
if (G_UNLIKELY (type_id == 0))
type_id = g_boxed_type_register_static (g_intern_static_string ("MetaKeyBinding"),
(GBoxedCopyFunc)meta_key_binding_copy,
(GBoxedFreeFunc)meta_key_binding_free);
return type_id;
}
const char *
meta_key_binding_get_name (MetaKeyBinding *binding)
@@ -2964,6 +2972,17 @@ handle_panel (MetaDisplay *display,
meta_error_trap_pop (display);
}
static void
handle_toggle_recording (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
MetaKeyBinding *binding,
gpointer dummy)
{
g_signal_emit_by_name (screen, "toggle-recording");
}
static void
handle_activate_window_menu (MetaDisplay *display,
MetaScreen *screen,
@@ -3426,7 +3445,7 @@ handle_move_to_workspace (MetaDisplay *display,
meta_topic (META_DEBUG_FOCUS,
"Resetting mouse_mode to FALSE due to "
"handle_move_to_workspace() call with flip set.\n");
meta_display_clear_mouse_mode (workspace->screen->display);
workspace->screen->display->mouse_mode = FALSE;
meta_workspace_activate_with_focus (workspace,
window,
event->xkey.time);
@@ -3867,6 +3886,13 @@ init_builtin_key_bindings (MetaDisplay *display)
META_KEYBINDING_ACTION_PANEL_RUN_DIALOG,
handle_panel, META_KEYBINDING_ACTION_PANEL_RUN_DIALOG);
add_builtin_keybinding (display,
"toggle-recording",
mutter_keybindings,
META_KEY_BINDING_NONE,
META_KEYBINDING_ACTION_TOGGLE_RECORDING,
handle_toggle_recording, 0);
add_builtin_keybinding (display,
"set-spew-mark",
common_keybindings,

View File

@@ -23,19 +23,18 @@
*/
/**
* SECTION:main
* @short_description: Program startup.
*
* \file
* Program startup.
* Functions which parse the command-line arguments, create the display,
* kick everything off and then close down Mutter when it's time to go.
*
*
*
*/
/**
* \mainpage
* Mutter - a boring window manager for the adult in you
*
* Many window managers are like Marshmallow Froot Loops; Mutter
* is like Frosted Flakes: it's still plain old corn, but dusted
* with some sugar.
* is like Cheerios.
*
* The best way to get a handle on how the whole system fits together
* is discussed in doc/code-overview.txt; if you're looking for functions
@@ -60,7 +59,7 @@
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <wait.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
@@ -78,12 +77,12 @@
#include <girepository.h>
#endif
/*
/**
* The exit code we'll return to our parent process when we eventually die.
*/
static MetaExitCode meta_exit_code = META_EXIT_SUCCESS;
/*
/**
* Handle on the main loop, so that we have an easy way of shutting Mutter
* down.
*/
@@ -93,15 +92,14 @@ static void prefs_changed_callback (MetaPreference pref,
gpointer data);
/**
* log_handler:
* @log_domain: the domain the error occurred in (we ignore this)
* @log_level: the log level so that we can filter out less
* important messages
* @message: the message to log
* @user_data: arbitrary data (we ignore this)
*
* Prints log messages. If Mutter was compiled with backtrace support,
* also prints a backtrace (see meta_print_backtrace()).
*
* \param log_domain the domain the error occurred in (we ignore this)
* \param log_level the log level so that we can filter out less
* important messages
* \param message the message to log
* \param user_data arbitrary data (we ignore this)
*/
static void
log_handler (const gchar *log_domain,
@@ -110,15 +108,14 @@ log_handler (const gchar *log_domain,
gpointer user_data)
{
meta_warning ("Log level %d: %s\n", log_level, message);
meta_print_backtrace ();
}
/**
* meta_print_compilation_info:
*
* Prints a list of which configure script options were used to
* build this copy of Mutter. This is actually always called
* on startup, but it's all no-op unless we're in verbose mode
* (see meta_set_verbose()).
* (see meta_set_verbose).
*/
static void
meta_print_compilation_info (void)
@@ -128,6 +125,21 @@ meta_print_compilation_info (void)
#else
meta_verbose ("Compiled without shape extension\n");
#endif
#ifdef HAVE_XINERAMA
meta_topic (META_DEBUG_XINERAMA, "Compiled with Xinerama extension\n");
#else
meta_topic (META_DEBUG_XINERAMA, "Compiled without Xinerama extension\n");
#endif
#ifdef HAVE_XFREE_XINERAMA
meta_topic (META_DEBUG_XINERAMA, " (using XFree86 Xinerama)\n");
#else
meta_topic (META_DEBUG_XINERAMA, " (not using XFree86 Xinerama)\n");
#endif
#ifdef HAVE_SOLARIS_XINERAMA
meta_topic (META_DEBUG_XINERAMA, " (using Solaris Xinerama)\n");
#else
meta_topic (META_DEBUG_XINERAMA, " (not using Solaris Xinerama)\n");
#endif
#ifdef HAVE_XSYNC
meta_verbose ("Compiled with sync extension\n");
#else
@@ -146,14 +158,12 @@ meta_print_compilation_info (void)
}
/**
* meta_print_self_identity:
*
* Prints the version number, the current timestamp (not the
* build date), the locale, the character encoding, and a list
* of configure script options that were used to build this
* copy of Mutter. This is actually always called
* on startup, but it's all no-op unless we're in verbose mode
* (see meta_set_verbose()).
* (see meta_set_verbose).
*/
static void
meta_print_self_identity (void)
@@ -178,7 +188,7 @@ meta_print_self_identity (void)
meta_print_compilation_info ();
}
/*
/**
* The set of possible options that can be set on Mutter's
* command line.
*/
@@ -197,7 +207,7 @@ static GOptionEntry meta_options[] = {
NULL
},
{
"replace", 'r', 0, G_OPTION_ARG_NONE,
"replace", 0, 0, G_OPTION_ARG_NONE,
&opt_replace_wm,
N_("Replace the running window manager"),
NULL
@@ -317,12 +327,10 @@ meta_clutter_init (void)
}
/**
* meta_select_display:
*
* Selects which display Mutter should use. It first tries to use
* @display_name as the display. If @display_name is %NULL then
* display_name as the display. If display_name is NULL then
* try to use the environment variable MUTTER_DISPLAY. If that
* also is %NULL, use the default - :0.0
* also is NULL, use the default - :0.0
*/
static void
meta_select_display (gchar *display_name)
@@ -373,7 +381,7 @@ on_sigterm (void)
* meta_init: (skip)
*
* Initialize mutter. Call this after meta_get_option_context() and
* meta_plugin_manager_set_plugin_type(), and before meta_run().
* meta_plugin_type_register(), and before meta_run().
*/
void
meta_init (void)
@@ -381,6 +389,8 @@ meta_init (void)
struct sigaction act;
sigset_t empty_mask;
GIOChannel *channel;
g_type_init ();
sigemptyset (&empty_mask);
act.sa_handler = SIG_IGN;
@@ -550,14 +560,13 @@ meta_run (void)
}
/**
* meta_quit:
* @code: The success or failure code to return to the calling process.
*
* Stops Mutter. This tells the event loop to stop processing; it is
* rather dangerous to use this because this will leave the user with
* no window manager. We generally do this only if, for example, the
* session manager asks us to; we assume the session manager knows
* what it's talking about.
*
* \param code The success or failure code to return to the calling process.
*/
void
meta_quit (MetaExitCode code)
@@ -570,14 +579,13 @@ meta_quit (MetaExitCode code)
}
/**
* prefs_changed_callback:
* @pref Which preference has changed
* @data Arbitrary data (which we ignore)
*
* Called on pref changes. (One of several functions of its kind and purpose.)
*
* FIXME: Why are these particular prefs handled in main.c and not others?
* Should they be?
* \bug Why are these particular prefs handled in main.c and not others?
* Should they be?
*
* \param pref Which preference has changed
* \param data Arbitrary data (which we ignore)
*/
static void
prefs_changed_callback (MetaPreference pref,

View File

@@ -45,7 +45,7 @@ print_version (const gchar *option_name,
exit (0);
}
static gchar *plugin = "default";
static gchar *mutter_plugins;
GOptionEntry mutter_options[] = {
{
@@ -55,10 +55,10 @@ GOptionEntry mutter_options[] = {
NULL
},
{
"mutter-plugin", 0, 0, G_OPTION_ARG_STRING,
&plugin,
N_("Mutter plugin to use"),
"PLUGIN",
"mutter-plugins", 0, 0, G_OPTION_ARG_STRING,
&mutter_plugins,
N_("Comma-separated list of compositor plugins"),
"PLUGINS"
},
{ NULL }
};
@@ -69,8 +69,6 @@ main (int argc, char **argv)
GOptionContext *ctx;
GError *error = NULL;
g_type_init ();
ctx = meta_get_option_context ();
g_option_context_add_main_entries (ctx, mutter_options, GETTEXT_PACKAGE);
if (!g_option_context_parse (ctx, &argc, &argv, &error))
@@ -79,8 +77,20 @@ main (int argc, char **argv)
exit (1);
}
if (plugin)
meta_plugin_manager_load (plugin);
if (mutter_plugins)
{
MetaPluginManager *mgr;
char **plugins = g_strsplit (mutter_plugins, ",", -1);
char **plugin;
mgr = meta_plugin_manager_get_default ();
for (plugin = plugins; *plugin; plugin++)
{
g_strstrip (*plugin);
meta_plugin_manager_load (mgr, *plugin);
}
g_strfreev (plugins);
}
meta_init ();
return meta_run ();

View File

@@ -105,7 +105,7 @@ find_next_cascade (MetaWindow *window,
int window_width, window_height;
int cascade_stage;
MetaRectangle work_area;
int current;
const MetaMonitorInfo* current;
sorted = g_list_copy (windows);
sorted = g_list_sort (sorted, northwestcmp);
@@ -137,7 +137,7 @@ find_next_cascade (MetaWindow *window,
*/
current = meta_screen_get_current_monitor (window->screen);
meta_window_get_work_area_for_monitor (window, current, &work_area);
meta_window_get_work_area_for_monitor (window, current->number, &work_area);
cascade_x = MAX (0, work_area.x);
cascade_y = MAX (0, work_area.y);
@@ -815,7 +815,7 @@ meta_window_place (MetaWindow *window,
int w, h;
/* Warning, this function is a round trip! */
xi = meta_screen_get_current_monitor_info (window->screen);
xi = meta_screen_get_current_monitor (window->screen);
w = xi->rect.width;
h = xi->rect.height;
@@ -860,7 +860,7 @@ meta_window_place (MetaWindow *window,
}
/* Warning, this is a round trip! */
xi = meta_screen_get_current_monitor_info (window->screen);
xi = meta_screen_get_current_monitor (window->screen);
/* "Origin" placement algorithm */
x = xi->rect.x;

View File

@@ -53,6 +53,7 @@
#define KEY_GNOME_CURSOR_SIZE "cursor-size"
#define KEY_OVERLAY_KEY "overlay-key"
#define KEY_LIVE_HIDDEN_WINDOWS "live-hidden-windows"
#define KEY_WORKSPACES_ONLY_ON_PRIMARY "workspaces-only-on-primary"
#define KEY_NO_TAB_POPUP "no-tab-popup"
@@ -96,7 +97,6 @@ static int draggable_border_width = 10;
static gboolean resize_with_right_button = FALSE;
static gboolean edge_tiling = FALSE;
static gboolean force_fullscreen = TRUE;
static gboolean ignore_request_hide_titlebar = FALSE;
static GDesktopVisualBellType visual_bell_type = G_DESKTOP_VISUAL_BELL_FULLSCREEN_FLASH;
static MetaButtonLayout button_layout;
@@ -104,6 +104,7 @@ static MetaButtonLayout button_layout;
/* NULL-terminated array */
static char **workspace_names = NULL;
static gboolean live_hidden_windows = FALSE;
static gboolean workspaces_only_on_primary = FALSE;
static gboolean no_tab_popup = FALSE;
@@ -164,30 +165,36 @@ typedef struct
gboolean *target;
} MetaBoolPreference;
/**
* MetaStringPreference:
* @handler: (allow-none): A handler. Many of the string preferences
* aren't stored as strings and need parsing; others of them have
* default values which can't be solved in the general case. If you
* include a function pointer here, it will be called instead of writing
* the string value out to the target variable.
* The function will be passed to g_settings_get_mapped() and should
* return %TRUE if the mapping was successful and %FALSE otherwise.
* In the former case the function is expected to handle the result
* of the conversion itself and call queue_changed() appropriately;
* in particular the @result (out) parameter as returned by
* g_settings_get_mapped() will be ignored in all cases.
* This may be %NULL. If it is, see "target", below.
* @target: (allow-none): Where to write the incoming string.
* This must be %NULL if the handler is non-%NULL.
* If the incoming string is %NULL, no change will be made.
*/
typedef struct
{
MetaBasePreference base;
/**
* A handler. Many of the string preferences aren't stored as
* strings and need parsing; others of them have default values
* which can't be solved in the general case. If you include a
* function pointer here, it will be called instead of writing
* the string value out to the target variable.
*
* The function will be passed to g_settings_get_mapped() and should
* return %TRUE if the mapping was successful and %FALSE otherwise.
* In the former case the function is expected to handle the result
* of the conversion itself and call queue_changed() appropriately;
* in particular the @result (out) parameter as returned by
* g_settings_get_mapped() will be ignored in all cases.
*
* This may be NULL. If it is, see "target", below.
*/
GSettingsGetMapping handler;
/**
* Where to write the incoming string.
*
* This must be NULL if the handler is non-NULL.
* If the incoming string is NULL, no change will be made.
*/
gchar **target;
} MetaStringPreference;
typedef struct
@@ -344,6 +351,13 @@ static MetaBoolPreference preferences_bool[] =
},
&edge_tiling,
},
{
{ KEY_LIVE_HIDDEN_WINDOWS,
SCHEMA_MUTTER,
META_PREF_LIVE_HIDDEN_WINDOWS,
},
&live_hidden_windows,
},
{
{ "workspaces-only-on-primary",
SCHEMA_MUTTER,
@@ -917,9 +931,9 @@ do_override (char *key,
/**
* meta_prefs_override_preference_schema:
* meta_prefs_override_preference_schema
* @key: the preference name
* @schema: new schema for preference @key
* @schema: new schema for preference %key
*
* Specify a schema whose keys are used to override the standard Metacity
* keys. This might be used if a plugin expected a different value for
@@ -1048,8 +1062,6 @@ bindings_changed (GSettings *settings,
}
/**
* maybe_give_disable_workaround_warning:
*
* Special case: give a warning the first time disable_workarounds
* is turned on.
*/
@@ -1605,6 +1617,9 @@ meta_preference_to_string (MetaPreference pref)
case META_PREF_FORCE_FULLSCREEN:
return "FORCE_FULLSCREEN";
case META_PREF_LIVE_HIDDEN_WINDOWS:
return "LIVE_HIDDEN_WINDOWS";
case META_PREF_WORKSPACES_ONLY_ON_PRIMARY:
return "WORKSPACES_ONLY_ON_PRIMARY";
@@ -1989,8 +2004,7 @@ meta_prefs_remove_keybinding (const char *name)
/**
* meta_prefs_get_keybindings:
*
* Returns: (element-type MetaKeyPref) (transfer container):
* Return: (element-type MetaKeyPref) (transfer container):
*/
GList *
meta_prefs_get_keybindings ()
@@ -2116,6 +2130,27 @@ meta_prefs_get_force_fullscreen (void)
return force_fullscreen;
}
gboolean
meta_prefs_get_live_hidden_windows (void)
{
#if 0
return live_hidden_windows;
#else
return TRUE;
#endif
}
void
meta_prefs_set_live_hidden_windows (gboolean whether)
{
MetaBasePreference *pref;
find_pref (preferences_bool, sizeof(MetaBoolPreference),
KEY_LIVE_HIDDEN_WINDOWS, &pref);
g_settings_set_boolean (SETTINGS (pref->schema), KEY_LIVE_HIDDEN_WINDOWS,
whether);
}
gboolean
meta_prefs_get_workspaces_only_on_primary (void)
{
@@ -2150,15 +2185,3 @@ meta_prefs_set_force_fullscreen (gboolean whether)
{
force_fullscreen = whether;
}
gboolean
meta_prefs_get_ignore_request_hide_titlebar (void)
{
return ignore_request_hide_titlebar;
}
void
meta_prefs_set_ignore_request_hide_titlebar (gboolean whether)
{
ignore_request_hide_titlebar = whether;
}

View File

@@ -156,6 +156,8 @@ void meta_screen_manage_all_windows (MetaScreen *scree
void meta_screen_foreach_window (MetaScreen *screen,
MetaScreenWindowFunc func,
gpointer data);
void meta_screen_queue_frame_redraws (MetaScreen *screen);
void meta_screen_queue_window_resizes (MetaScreen *screen);
void meta_screen_set_cursor (MetaScreen *screen,
MetaCursor cursor);
@@ -184,7 +186,7 @@ void meta_screen_tile_preview_hide (MetaScreen *screen);
MetaWindow* meta_screen_get_mouse_window (MetaScreen *screen,
MetaWindow *not_this_one);
const MetaMonitorInfo* meta_screen_get_current_monitor_info (MetaScreen *screen);
const MetaMonitorInfo* meta_screen_get_current_monitor (MetaScreen *screen);
const MetaMonitorInfo* meta_screen_get_monitor_for_rect (MetaScreen *screen,
MetaRectangle *rect);
const MetaMonitorInfo* meta_screen_get_monitor_for_window (MetaScreen *screen,

View File

@@ -41,8 +41,12 @@
#include <meta/compositor.h>
#include "mutter-enum-types.h"
#ifdef HAVE_SOLARIS_XINERAMA
#include <X11/extensions/xinerama.h>
#endif
#ifdef HAVE_XFREE_XINERAMA
#include <X11/extensions/Xinerama.h>
#endif
#ifdef HAVE_RANDR
#include <X11/extensions/Xrandr.h>
#endif
@@ -79,6 +83,7 @@ enum
enum
{
RESTACKED,
TOGGLE_RECORDING,
WORKSPACE_ADDED,
WORKSPACE_REMOVED,
WORKSPACE_SWITCHED,
@@ -225,6 +230,14 @@ meta_screen_class_init (MetaScreenClass *klass)
NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_POINTER);
screen_signals[TOGGLE_RECORDING] =
g_signal_new ("toggle-recording",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
screen_signals[WORKAREAS_CHANGED] =
g_signal_new ("workareas-changed",
G_TYPE_FROM_CLASS (object_class),
@@ -474,6 +487,7 @@ reload_monitor_infos (MetaScreen *screen)
screen->monitor_infos[1].rect.width = screen->rect.width / 2;
}
#ifdef HAVE_XFREE_XINERAMA
if (screen->n_monitor_infos == 0 &&
XineramaIsActive (display->xdisplay))
{
@@ -543,10 +557,74 @@ reload_monitor_infos (MetaScreen *screen)
else if (screen->n_monitor_infos > 0)
{
meta_topic (META_DEBUG_XINERAMA,
"No Xinerama extension or Xinerama inactive on display %s\n",
"No XFree86 Xinerama extension or XFree86 Xinerama inactive on display %s\n",
display->name);
}
#else
meta_topic (META_DEBUG_XINERAMA,
"Mutter compiled without XFree86 Xinerama support\n");
#endif /* HAVE_XFREE_XINERAMA */
#ifdef HAVE_SOLARIS_XINERAMA
/* This code from GDK, Copyright (C) 2002 Sun Microsystems */
if (screen->n_monitor_infos == 0 &&
XineramaGetState (screen->display->xdisplay,
screen->number))
{
XRectangle monitors[MAXFRAMEBUFFERS];
unsigned char hints[16];
int result;
int n_monitors;
int i;
n_monitors = 0;
result = XineramaGetInfo (screen->display->xdisplay,
screen->number,
monitors, hints,
&n_monitors);
/* Yes I know it should be Success but the current implementation
* returns the num of monitor
*/
if (result > 0)
{
g_assert (n_monitors > 0);
screen->monitor_infos = g_new0 (MetaMonitorInfo, n_monitors);
screen->n_monitor_infos = n_monitors;
i = 0;
while (i < n_monitors)
{
screen->monitor_infos[i].number = i;
screen->monitor_infos[i].rect.x = monitors[i].x;
screen->monitor_infos[i].rect.y = monitors[i].y;
screen->monitor_infos[i].rect.width = monitors[i].width;
screen->monitor_infos[i].rect.height = monitors[i].height;
meta_topic (META_DEBUG_XINERAMA,
"Monitor %d is %d,%d %d x %d\n",
screen->monitor_infos[i].number,
screen->monitor_infos[i].rect.x,
screen->monitor_infos[i].rect.y,
screen->monitor_infos[i].rect.width,
screen->monitor_infos[i].rect.height);
++i;
}
}
}
else if (screen->n_monitor_infos == 0)
{
meta_topic (META_DEBUG_XINERAMA,
"No Solaris Xinerama extension or Solaris Xinerama inactive on display %s\n",
display->name);
}
#else
meta_topic (META_DEBUG_XINERAMA,
"Mutter compiled without Solaris Xinerama support\n");
#endif /* HAVE_SOLARIS_XINERAMA */
/* If no Xinerama, fill in the single screen info so
* we can use the field unconditionally
*/
@@ -1216,6 +1294,31 @@ meta_screen_foreach_window (MetaScreen *screen,
g_slist_free (winlist);
}
static void
queue_draw (MetaScreen *screen, MetaWindow *window, gpointer data)
{
if (window->frame)
meta_frame_queue_draw (window->frame);
}
void
meta_screen_queue_frame_redraws (MetaScreen *screen)
{
meta_screen_foreach_window (screen, queue_draw, NULL);
}
static void
queue_resize (MetaScreen *screen, MetaWindow *window, gpointer data)
{
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
}
void
meta_screen_queue_window_resizes (MetaScreen *screen)
{
meta_screen_foreach_window (screen, queue_resize, NULL);
}
int
meta_screen_get_n_workspaces (MetaScreen *screen)
{
@@ -2054,7 +2157,7 @@ meta_screen_get_natural_monitor_list (MetaScreen *screen,
visited[i] = FALSE;
}
current = meta_screen_get_current_monitor_info (screen);
current = meta_screen_get_current_monitor (screen);
monitor_queue = g_queue_new ();
g_queue_push_tail (monitor_queue, (gpointer) current);
visited[current->number] = TRUE;
@@ -2121,26 +2224,10 @@ meta_screen_get_natural_monitor_list (MetaScreen *screen,
}
const MetaMonitorInfo*
meta_screen_get_current_monitor_info (MetaScreen *screen)
{
int monitor_index;
monitor_index = meta_screen_get_current_monitor (screen);
return &screen->monitor_infos[monitor_index];
}
/**
* meta_screen_get_current_monitor:
* @screen: a #MetaScreen
*
* Gets the index of the monitor that currently has the mouse pointer.
*
* Return value: a monitor index
*/
int
meta_screen_get_current_monitor (MetaScreen *screen)
{
if (screen->n_monitor_infos == 1)
return 0;
return &screen->monitor_infos[0];
/* Sadly, we have to do it this way. Yuck.
*/
@@ -2182,7 +2269,7 @@ meta_screen_get_current_monitor (MetaScreen *screen)
screen->last_monitor_index);
}
return screen->last_monitor_index;
return &screen->monitor_infos[screen->last_monitor_index];
}
/**
@@ -3376,10 +3463,9 @@ meta_screen_get_screen_number (MetaScreen *screen)
/**
* meta_screen_get_display:
* Retrieve the display associated with screen.
* @screen: A #MetaScreen
*
* Retrieve the display associated with screen.
*
* Returns: (transfer none): Display
*/
MetaDisplay *

View File

@@ -394,8 +394,6 @@ meta_stack_tracker_free (MetaStackTracker *tracker)
g_queue_foreach (tracker->queued_requests, (GFunc)meta_stack_op_free, NULL);
g_queue_free (tracker->queued_requests);
tracker->queued_requests = NULL;
g_free (tracker);
}
static void

View File

@@ -1,8 +1,7 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/**
* SECTION:stack
* @short_description: Which windows cover which other windows
* \file stack.c Which windows cover which other windows
*/
/*
@@ -341,7 +340,7 @@ get_standalone_layer (MetaWindow *window)
windows_on_different_monitor (window,
window->display->expected_focus_window))))
layer = META_LAYER_FULLSCREEN;
else if (window->wm_state_above && !META_WINDOW_MAXIMIZED (window))
else if (window->wm_state_above)
layer = META_LAYER_TOP;
else
layer = META_LAYER_NORMAL;
@@ -800,8 +799,6 @@ apply_constraints (Constraint **constraints,
}
/**
* stack_do_window_deletions:
*
* Go through "deleted" and take the matching windows
* out of "windows".
*/
@@ -902,8 +899,6 @@ stack_do_window_additions (MetaStack *stack)
}
/**
* stack_do_relayer:
*
* Update the layers that windows are in
*/
static void
@@ -949,8 +944,6 @@ stack_do_relayer (MetaStack *stack)
}
/**
* stack_do_constrain:
*
* Update stack_position and layer to reflect transiency
* constraints
*/
@@ -983,8 +976,6 @@ stack_do_constrain (MetaStack *stack)
}
/**
* stack_do_resort:
*
* Sort stack->sorted with layers having priority over stack_position.
*/
static void
@@ -1003,8 +994,6 @@ stack_do_resort (MetaStack *stack)
}
/**
* stack_ensure_sorted:
*
* Puts the stack into canonical form.
*
* Honour the removed and added lists of the stack, and then recalculate
@@ -1024,8 +1013,6 @@ stack_ensure_sorted (MetaStack *stack)
}
/**
* raise_window_relative_to_managed_windows:
*
* This function is used to avoid raising a window above popup
* menus and other such things.
*
@@ -1126,8 +1113,6 @@ raise_window_relative_to_managed_windows (MetaScreen *screen,
}
/**
* stack_sync_to_server:
*
* Order the windows on the X server to be the same as in our structure.
* We do this using XRestackWindows if we don't know the previous order,
* or XConfigureWindow on a few particular windows if we do and can figure

View File

@@ -1,5 +1,23 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/**
* \file stack.h Which windows cover which other windows
*
* There are two factors that determine window position.
*
* One is window->stack_position, which is a unique integer
* indicating how windows are ordered with respect to one
* another. The ordering here transcends layers; it isn't changed
* as the window is moved among layers. This allows us to move several
* windows from one layer to another, while preserving the relative
* order of the moved windows. Also, it allows us to restore
* the stacking order from a saved session.
*
* However when actually stacking windows on the screen, the
* layer overrides the stack_position; windows are first sorted
* by layer, then by stack_position within each layer.
*/
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2005 Elijah Newren
@@ -23,25 +41,6 @@
#ifndef META_STACK_H
#define META_STACK_H
/**
* SECTION:stack
* @short_description: Which windows cover which other windows
*
* There are two factors that determine window position.
*
* One is window->stack_position, which is a unique integer
* indicating how windows are ordered with respect to one
* another. The ordering here transcends layers; it isn't changed
* as the window is moved among layers. This allows us to move several
* windows from one layer to another, while preserving the relative
* order of the moved windows. Also, it allows us to restore
* the stacking order from a saved session.
*
* However when actually stacking windows on the screen, the
* layer overrides the stack_position; windows are first sorted
* by layer, then by stack_position within each layer.
*/
#include "screen-private.h"
/**
@@ -124,214 +123,192 @@ struct _MetaStack
};
/**
* meta_stack_new:
* @screen: The MetaScreen which will be the parent of this stack.
*
* Creates and initialises a MetaStack.
*
* Returns: The new screen.
* \param screen The MetaScreen which will be the parent of this stack.
* \return The new screen.
*/
MetaStack *meta_stack_new (MetaScreen *screen);
/**
* meta_stack_free:
* @stack: The stack to destroy.
*
* Destroys and frees a MetaStack.
*
* \param stack The stack to destroy.
*/
void meta_stack_free (MetaStack *stack);
/**
* meta_stack_add:
* @stack: The stack to add it to
* @window: The window to add
*
* Adds a window to the local stack. It is a fatal error to call this
* function on a window which already exists on the stack of any screen.
*
* \param window The window to add
* \param stack The stack to add it to
*/
void meta_stack_add (MetaStack *stack,
MetaWindow *window);
/**
* meta_stack_remove:
* @stack: The stack to remove it from
* @window: The window to remove
*
* Removes a window from the local stack. It is a fatal error to call this
* function on a window which exists on the stack of any screen.
*
* \param window The window to remove
* \param stack The stack to remove it from
*/
void meta_stack_remove (MetaStack *stack,
MetaWindow *window);
/**
* meta_stack_update_layer:
* @stack: The stack to recalculate
* @window: Dummy parameter
*
* Recalculates the correct layer for all windows in the stack,
* and moves them about accordingly.
*
* \param window Dummy parameter
* \param stack The stack to recalculate
* \bug What's with the dummy parameter?
*/
void meta_stack_update_layer (MetaStack *stack,
MetaWindow *window);
/**
* meta_stack_update_transient:
* @stack: The stack to recalculate
* @window: Dummy parameter
*
* Recalculates the correct stacking order for all windows in the stack
* according to their transience, and moves them about accordingly.
*
* FIXME: What's with the dummy parameter?
* \param window Dummy parameter
* \param stack The stack to recalculate
* \bug What's with the dummy parameter?
*/
void meta_stack_update_transient (MetaStack *stack,
MetaWindow *window);
/**
* meta_stack_raise:
* @stack: The stack to modify.
* @window: The window that's making an ascension.
* (Amulet of Yendor not required.)
*
* Move a window to the top of its layer.
*
* \param stack The stack to modify.
* \param window The window that's making an ascension.
* (Amulet of Yendor not required.)
*/
void meta_stack_raise (MetaStack *stack,
MetaWindow *window);
/**
* meta_stack_lower:
* @stack: The stack to modify.
* @window: The window that's on the way downwards.
*
* Move a window to the bottom of its layer.
*
* \param stack The stack to modify.
* \param window The window that's on the way downwards.
*/
void meta_stack_lower (MetaStack *stack,
MetaWindow *window);
/**
* meta_stack_freeze:
* @stack: The stack to freeze.
*
* Prevent syncing to server until the next call of meta_stack_thaw(),
* so that we can carry out multiple operations in one go without having
* everything halfway reflected on the X server.
*
* (Calls to meta_stack_freeze() nest, so that multiple calls to
* meta_stack_freeze will require multiple calls to meta_stack_thaw().)
*
* \param stack The stack to freeze.
*/
void meta_stack_freeze (MetaStack *stack);
/**
* meta_stack_thaw:
* @stack: The stack to thaw.
*
* Undoes a meta_stack_freeze(), and processes anything which has become
* necessary during the freeze. It is an error to call this function if
* the stack has not been frozen.
*
* \param stack The stack to thaw.
*/
void meta_stack_thaw (MetaStack *stack);
/**
* meta_stack_get_top:
* @stack: The stack to examine.
*
* Finds the top window on the stack.
*
* Returns: The top window on the stack, or %NULL in the vanishingly unlikely
* event that you have no windows on your screen whatsoever.
* \param stack The stack to examine.
* \return The top window on the stack, or NULL in the vanishingly unlikely
* event that you have no windows on your screen whatsoever.
*/
MetaWindow* meta_stack_get_top (MetaStack *stack);
/**
* meta_stack_get_bottom:
* @stack: The stack to search
*
* Finds the window at the bottom of the stack. Since that's pretty much
* always the desktop, this isn't the most useful of functions, and nobody
* actually calls it. We should probably get rid of it.
*
* \param stack The stack to search
*/
MetaWindow* meta_stack_get_bottom (MetaStack *stack);
/**
* meta_stack_get_above:
* @stack: The stack to search.
* @window: The window to look above.
* @only_within_layer: If %TRUE, will return %NULL if @window is the
* top window in its layer.
*
* Finds the window above a given window in the stack.
* It is not an error to pass in a window which does not exist in
* the stack; the function will merely return %NULL.
* the stack; the function will merely return NULL.
*
* Returns: %NULL if there is no such window;
* the window above @window otherwise.
* \param stack The stack to search.
* \param window The window to look above.
* \param only_within_layer If true, will return NULL if "window" is the
* top window in its layer.
* \return NULL if there is no such window;
* the window above "window" otherwise.
*/
MetaWindow* meta_stack_get_above (MetaStack *stack,
MetaWindow *window,
gboolean only_within_layer);
/**
* meta_stack_get_below:
* @stack: The stack to search.
* @window: The window to look below.
* @only_within_layer: If %TRUE, will return %NULL if window is the
* bottom window in its layer.
*
* Finds the window below a given window in the stack.
* It is not an error to pass in a window which does not exist in
* the stack; the function will merely return %NULL.
* the stack; the function will merely return NULL.
*
*
* Returns: %NULL if there is no such window;
* the window below @window otherwise.
* \param stack The stack to search.
* \param window The window to look below.
* \param only_within_layer If true, will return NULL if "window" is the
* bottom window in its layer.
* \return NULL if there is no such window;
* the window below "window" otherwise.
*/
MetaWindow* meta_stack_get_below (MetaStack *stack,
MetaWindow *window,
gboolean only_within_layer);
/**
* meta_stack_get_default_focus_window:
* @stack: The stack to search.
* @workspace: %NULL to search all workspaces; otherwise only windows
* from that workspace will be returned.
* @not_this_one: Window to ignore because it's being unfocussed or
* going away.
*
* Find the topmost, focusable, mapped, window in a stack. If you supply
* a window as @not_this_one, we won't return that one (presumably
* because it's going to be going away). But if you do supply @not_this_one
* and we find its parent, we'll return that; and if @not_this_one is in
* Find the topmost, focusable, mapped, window in a stack. If you supply
* a window as "not_this_one", we won't return that one (presumably
* because it's going to be going away). But if you do supply "not_this_one"
* and we find its parent, we'll return that; and if "not_this_one" is in
* a group, we'll return the top window of that group.
*
* Also, we are prejudiced against dock windows. Every kind of window, even
* the desktop, will be returned in preference to a dock window.
*
* Returns: The window matching all these constraints or %NULL if none does.
* \param stack The stack to search.
* \param workspace NULL to search all workspaces; otherwise only windows
* from that workspace will be returned.
* \param not_this_one Window to ignore because it's being unfocussed or
* going away.
* \return The window matching all these constraints or NULL if none does.
*
* \bug Never called!
*/
MetaWindow* meta_stack_get_default_focus_window (MetaStack *stack,
MetaWorkspace *workspace,
MetaWindow *not_this_one);
/**
* meta_stack_get_default_focus_window_at_point:
* @stack: The stack to search.
* @workspace: %NULL to search all workspaces; otherwise only windows
* from that workspace will be returned.
* @not_this_one: Window to ignore because it's being unfocussed or
* going away.
* @root_x: The returned window must contain this point,
* unless it's a dock.
* @root_y: See root_x.
*
* Find the topmost, focusable, mapped, window in a stack. If you supply
* a window as @not_this_one, we won't return that one (presumably
* because it's going to be going away). But if you do supply @not_this_one
* and we find its parent, we'll return that; and if @not_this_one is in
* a window as "not_this_one", we won't return that one (presumably
* because it's going to be going away). But if you do supply "not_this_one"
* and we find its parent, we'll return that; and if "not_this_one" is in
* a group, we'll return the top window of that group.
*
* Also, we are prejudiced against dock windows. Every kind of window, even
* the desktop, will be returned in preference to a dock window.
*
* Returns: The window matching all these constraints or %NULL if none does.
* \param stack The stack to search.
* \param workspace NULL to search all workspaces; otherwise only windows
* from that workspace will be returned.
* \param not_this_one Window to ignore because it's being unfocussed or
* going away.
* \param root_x The returned window must contain this point,
* unless it's a dock.
* \param root_y See root_x.
* \return The window matching all these constraints or NULL if none does.
*/
MetaWindow* meta_stack_get_default_focus_window_at_point (MetaStack *stack,
MetaWorkspace *workspace,
@@ -340,25 +317,18 @@ MetaWindow* meta_stack_get_default_focus_window_at_point (MetaStack *stack,
int root_y);
/**
* meta_stack_list_windows:
* @stack: The stack to examine.
* @workspace: If not %NULL, only windows on this workspace will be
* returned; otherwise all windows in the stack will be
* returned.
*
* Finds all the windows in the stack, in order.
*
* Returns: A list of windows, in stacking order, honouring layers.
* \param stack The stack to examine.
* \param workspace If non-NULL, only windows on this workspace will be
* returned; otherwise all windows in the stack will be
* returned.
* \return A list of windows, in stacking order, honouring layers.
*/
GList* meta_stack_list_windows (MetaStack *stack,
MetaWorkspace *workspace);
/**
* meta_stack_windows_cmp:
* @stack: A stack containing both window_a and window_b
* @window_a: A window
* @window_b Another window
*
* Comparison function for windows within a stack. This is not directly
* suitable for use within a standard comparison routine, because it takes
* an extra parameter; you will need to wrap it.
@@ -369,6 +339,9 @@ GList* meta_stack_list_windows (MetaStack *stack,
*
* (FIXME: Apparently identical to compare_window_position(). Merge them.)
*
* \param stack A stack containing both window_a and window_b
* \param window_a A window
* \param window_b Another window
* \return -1 if window_a is below window_b, honouring layers; 1 if it's
* above it; 0 if you passed in the same window twice!
*/
@@ -377,40 +350,35 @@ int meta_stack_windows_cmp (MetaStack *stack,
MetaWindow *window_b);
/**
* meta_window_set_stack_position:
* @window: The window which is moving.
* @position: Where it should move to (0 is the bottom).
*
* Sets the position of a window within the stack. This will only move it
* up or down within its layer. It is an error to attempt to move this
* below position zero or above the last position in the stack (however, since
* we don't provide a simple way to tell the number of windows in the stack,
* this requirement may not be easy to fulfil).
*
* \param window The window which is moving.
* \param position Where it should move to (0 is the bottom).
*/
void meta_window_set_stack_position (MetaWindow *window,
int position);
/**
* meta_stack_get_positions:
* @stack: The stack to examine.
*
* Returns the current stack state, allowing rudimentary transactions.
*
* Returns: An opaque GList representing the current stack sort order;
* it is the caller's responsibility to free it.
* Pass this to meta_stack_set_positions() later if you want to restore
* the state to where it was when you called this function.
* \param stack The stack to examine.
* \return An opaque GList representing the current stack sort order;
* it is the caller's responsibility to free it.
* Pass this to meta_stack_set_positions() later if you want to restore
* the state to where it was when you called this function.
*/
GList* meta_stack_get_positions (MetaStack *stack);
/**
* meta_stack_set_positions:
* @stack: The stack to roll back.
* @windows: The list returned from meta_stack_get_positions().
*
* Rolls back a transaction, given the list returned from
* meta_stack_get_positions().
*
* \param stack The stack to roll back.
* \param windows The list returned from meta_stack_get_positions().
*/
void meta_stack_set_positions (MetaStack *stack,
GList *windows);

View File

@@ -47,6 +47,37 @@ meta_topic_real_valist (MetaDebugTopic topic,
va_list args);
#endif
#ifdef HAVE_BACKTRACE
#include <execinfo.h>
void
meta_print_backtrace (void)
{
void *bt[500];
int bt_size;
int i;
char **syms;
bt_size = backtrace (bt, 500);
syms = backtrace_symbols (bt, bt_size);
i = 0;
while (i < bt_size)
{
meta_verbose (" %s\n", syms[i]);
++i;
}
free (syms);
}
#else
void
meta_print_backtrace (void)
{
meta_verbose ("Not compiled with backtrace support\n");
}
#endif
static gint verbose_topics = 0;
static gboolean is_debugging = FALSE;
static gboolean replace_current = FALSE;
@@ -410,6 +441,8 @@ meta_bug (const char *format, ...)
fflush (out);
g_free (str);
meta_print_backtrace ();
/* stop us in a debugger */
abort ();

View File

@@ -472,8 +472,20 @@ void meta_window_unmaximize_with_gravity (MetaWindow *window,
int new_width,
int new_height,
int gravity);
void meta_window_make_above (MetaWindow *window);
void meta_window_unmake_above (MetaWindow *window);
void meta_window_shade (MetaWindow *window,
guint32 timestamp);
void meta_window_unshade (MetaWindow *window,
guint32 timestamp);
void meta_window_change_workspace (MetaWindow *window,
MetaWorkspace *workspace);
void meta_window_stick (MetaWindow *window);
void meta_window_unstick (MetaWindow *window);
void meta_window_make_fullscreen_internal (MetaWindow *window);
void meta_window_make_fullscreen (MetaWindow *window);
void meta_window_unmake_fullscreen (MetaWindow *window);
void meta_window_update_fullscreen_monitors (MetaWindow *window,
unsigned long top,
unsigned long bottom,
@@ -500,8 +512,7 @@ void meta_window_resize_with_gravity (MetaWindow *window,
int w,
int h,
int gravity);
void meta_window_change_workspace (MetaWindow *window,
MetaWorkspace *workspace);
/* Return whether the window should be currently mapped */
gboolean meta_window_should_be_showing (MetaWindow *window);
@@ -540,6 +551,10 @@ void meta_window_get_geometry (MetaWindow *window,
int *width,
int *height);
void meta_window_kill (MetaWindow *window);
void meta_window_focus (MetaWindow *window,
guint32 timestamp);
void meta_window_update_unfocused_button_grabs (MetaWindow *window);
/* Sends a client message */
@@ -617,6 +632,11 @@ void meta_window_refresh_resize_popup (MetaWindow *window);
void meta_window_free_delete_dialog (MetaWindow *window);
void meta_window_begin_grab_op (MetaWindow *window,
MetaGrabOp op,
gboolean frame_action,
guint32 timestamp);
void meta_window_update_keyboard_resize (MetaWindow *window,
gboolean update_cursor);
void meta_window_update_keyboard_move (MetaWindow *window);

View File

@@ -1,8 +1,7 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/**
* SECTION:window-props
* @short_description: #MetaWindow property handling
* \file window-props.c MetaWindow property handling
*
* A system which can inspect sets of properties of given windows
* and take appropriate action given their values.
@@ -390,13 +389,11 @@ reload_net_wm_user_time_window (MetaWindow *window,
#define MAX_TITLE_LENGTH 512
/**
* set_title_text:
*
* Called by set_window_title() and set_icon_title() to set the value of
* @target to @title. It required and @atom is set, it will update the
* Called by set_window_title and set_icon_title to set the value of
* *target to title. It required and atom is set, it will update the
* appropriate property.
*
* Returns: %TRUE if a new title was set.
* Returns TRUE if a new title was set.
*/
static gboolean
set_title_text (MetaWindow *window,
@@ -1600,7 +1597,7 @@ reload_gtk_hide_titlebar_when_maximized (MetaWindow *window,
gboolean requested_value = FALSE;
gboolean current_value = window->hide_titlebar_when_maximized;
if (!meta_prefs_get_ignore_request_hide_titlebar () && value->type != META_PROP_VALUE_INVALID)
if (value->type != META_PROP_VALUE_INVALID)
{
requested_value = ((int) value->v.cardinal == 1);
meta_verbose ("Request to hide titlebar for window %s.\n", window->desc);
@@ -1646,9 +1643,6 @@ RELOAD_STRING (gtk_menubar_object_path, "gtk-menubar-object-path")
#undef RELOAD_STRING
/**
* meta_display_init_window_prop_hooks:
* @display: The #MetaDisplay
*
* Initialises the property hooks system. Each row in the table named "hooks"
* represents an action to take when a property is found on a newly-created
* window, or when a property changes its value.

View File

@@ -1,8 +1,7 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/**
* SECTION:window-props
* @short_description: MetaWindow property handling
* \file window-props.h MetaWindow property handling
*
* A system which can inspect sets of properties of given windows
* and take appropriate action given their values.
@@ -36,13 +35,12 @@
#include "window-private.h"
/**
* meta_window_reload_property:
* @window: The window.
* @property: A single X atom.
*
* Requests the current values of a single property for a given
* window from the server, and deals with it appropriately.
* Does not return it to the caller (it's been dealt with!)
*
* \param window The window.
* \param property A single X atom.
*/
void meta_window_reload_property (MetaWindow *window,
Atom property,
@@ -50,14 +48,13 @@ void meta_window_reload_property (MetaWindow *window,
/**
* meta_window_reload_properties:
* @window: The window.
* @properties: A pointer to a list of X atoms, "n_properties" long.
* @n_properties: The length of the properties list.
*
* Requests the current values of a set of properties for a given
* window from the server, and deals with them appropriately.
* Does not return them to the caller (they've been dealt with!)
*
* \param window The window.
* \param properties A pointer to a list of X atoms, "n_properties" long.
* \param n_properties The length of the properties list.
*/
void meta_window_reload_properties (MetaWindow *window,
const Atom *properties,
@@ -65,15 +62,14 @@ void meta_window_reload_properties (MetaWindow *window,
gboolean initial);
/**
* meta_window_reload_property_from_xwindow:
* @window: A window on the same display as the one we're
* investigating (only used to find the display)
* @xwindow: The X handle for the window.
* @property: A single X atom.
*
* Requests the current values of a single property for a given
* window from the server, and deals with it appropriately.
* Does not return it to the caller (it's been dealt with!)
*
* \param window A window on the same display as the one we're
* investigating (only used to find the display)
* \param xwindow The X handle for the window.
* \param property A single X atom.
*/
void meta_window_reload_property_from_xwindow
(MetaWindow *window,
@@ -82,16 +78,15 @@ void meta_window_reload_property_from_xwindow
gboolean initial);
/**
* meta_window_reload_properties_from_xwindow:
* @window: A window on the same display as the one we're
* investigating (only used to find the display)
* @xwindow: The X handle for the window.
* @properties: A pointer to a list of X atoms, "n_properties" long.
* @n_properties: The length of the properties list.
*
* Requests the current values of a set of properties for a given
* window from the server, and deals with them appropriately.
* Does not return them to the caller (they've been dealt with!)
*
* \param window A window on the same display as the one we're
* investigating (only used to find the display)
* \param xwindow The X handle for the window.
* \param properties A pointer to a list of X atoms, "n_properties" long.
* \param n_properties The length of the properties list.
*/
void meta_window_reload_properties_from_xwindow
(MetaWindow *window,
@@ -101,44 +96,41 @@ void meta_window_reload_properties_from_xwindow
gboolean initial);
/**
* meta_window_load_initial_properties:
* @window: The window.
*
* Requests the current values for standard properties for a given
* window from the server, and deals with them appropriately.
* Does not return them to the caller (they've been dealt with!)
*
* \param window The window.
*/
void meta_window_load_initial_properties (MetaWindow *window);
/**
* meta_display_init_window_prop_hooks:
* @display: The display.
*
* Initialises the hooks used for the reload_propert* functions
* on a particular display, and stores a pointer to them in the
* display.
*
* \param display The display.
*/
void meta_display_init_window_prop_hooks (MetaDisplay *display);
/**
* meta_display_free_window_prop_hooks:
* @display: The display.
* Frees the hooks used for the reload_propert* functions
* for a particular display.
*
* \param display The display.
*/
void meta_display_free_window_prop_hooks (MetaDisplay *display);
/**
* meta_set_normal_hints:
* @window: The window to set the size hints on.
* @hints: Either some X size hints, or NULL for default.
*
* Sets the size hints for a window. This happens when a
* WM_NORMAL_HINTS property is set on a window, but it is public
* because the size hints are set to defaults when a window is
* created. See
* http://tronche.com/gui/x/icccm/sec-4.html#WM_NORMAL_HINTS
* for the X details.
*
* \param window The window to set the size hints on.
* \param hints Either some X size hints, or NULL for default.
*/
void meta_set_normal_hints (MetaWindow *window,
XSizeHints *hints);

View File

@@ -198,18 +198,12 @@ prefs_changed_callback (MetaPreference pref,
{
MetaWindow *window = data;
if (pref == META_PREF_WORKSPACES_ONLY_ON_PRIMARY)
{
meta_window_update_on_all_workspaces (window);
meta_window_queue (window, META_QUEUE_CALC_SHOWING);
}
else if (pref == META_PREF_ATTACH_MODAL_DIALOGS &&
window->type == META_WINDOW_MODAL_DIALOG)
{
window->attached = meta_window_should_attach_to_parent (window);
recalc_window_features (window);
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
}
if (pref != META_PREF_WORKSPACES_ONLY_ON_PRIMARY)
return;
meta_window_update_on_all_workspaces (window);
meta_window_queue (window, META_QUEUE_CALC_SHOWING);
}
static void
@@ -2231,7 +2225,7 @@ implement_showing (MetaWindow *window,
* so we should place the window even if we're hiding it rather
* than showing it.
*/
if (!window->placed)
if (!window->placed && meta_prefs_get_live_hidden_windows ())
meta_window_force_placement (window);
meta_window_hide (window);
@@ -2833,6 +2827,20 @@ map_frame (MetaWindow *window)
return FALSE;
}
static gboolean
unmap_frame (MetaWindow *window)
{
if (window->frame && window->frame->mapped)
{
meta_topic (META_DEBUG_WINDOW_STATE, "Frame actually needs unmap\n");
window->frame->mapped = FALSE;
meta_ui_unmap_frame (window->screen->ui, window->frame->xwindow);
return TRUE;
}
else
return FALSE;
}
static gboolean
map_client_window (MetaWindow *window)
{
@@ -3100,12 +3108,15 @@ meta_window_show (MetaWindow *window)
if (map_client_window (window))
did_show = TRUE;
if (window->hidden)
if (meta_prefs_get_live_hidden_windows ())
{
meta_stack_freeze (window->screen->stack);
window->hidden = FALSE;
meta_stack_thaw (window->screen->stack);
did_show = TRUE;
if (window->hidden)
{
meta_stack_freeze (window->screen->stack);
window->hidden = FALSE;
meta_stack_thaw (window->screen->stack);
did_show = TRUE;
}
}
if (window->iconic)
@@ -3240,19 +3251,32 @@ meta_window_hide (MetaWindow *window)
did_hide = FALSE;
/* If this is the first time that we've calculating the showing
* state of the window, the frame and client window might not
* yet be mapped, so we need to map them now */
map_frame (window);
map_client_window (window);
if (!window->hidden)
if (meta_prefs_get_live_hidden_windows ())
{
meta_stack_freeze (window->screen->stack);
window->hidden = TRUE;
meta_stack_thaw (window->screen->stack);
/* If this is the first time that we've calculating the showing
* state of the window, the frame and client window might not
* yet be mapped, so we need to map them now */
map_frame (window);
map_client_window (window);
did_hide = TRUE;
if (!window->hidden)
{
meta_stack_freeze (window->screen->stack);
window->hidden = TRUE;
meta_stack_thaw (window->screen->stack);
did_hide = TRUE;
}
}
else
{
/* Unmapping the frame is enough to make the window disappear,
* but we need to hide the window itself so the client knows
* it has been hidden */
if (unmap_frame (window))
did_hide = TRUE;
if (unmap_client_window (window, " (hiding)"))
did_hide = TRUE;
}
if (!window->iconic)
@@ -3428,11 +3452,10 @@ meta_window_save_rect (MetaWindow *window)
}
/**
* force_save_user_window_placement:
* @window: Store current position of this window for future reference
*
* Save the user_rect regardless of whether the window is maximized or
* fullscreen. See save_user_window_placement() for most uses.
*
* \param window Store current position of this window for future reference
*/
static void
force_save_user_window_placement (MetaWindow *window)
@@ -3441,12 +3464,11 @@ force_save_user_window_placement (MetaWindow *window)
}
/**
* save_user_window_placement:
* @window: Store current position of this window for future reference
*
* Save the user_rect, but only if the window is neither maximized nor
* fullscreen, otherwise the window may snap back to those dimensions
* (bug #461927).
*
* \param window Store current position of this window for future reference
*/
static void
save_user_window_placement (MetaWindow *window)
@@ -3680,7 +3702,7 @@ meta_window_can_tile_maximized (MetaWindow *window)
gboolean
meta_window_can_tile_side_by_side (MetaWindow *window)
{
int monitor;
const MetaMonitorInfo *monitor;
MetaRectangle tile_area;
MetaFrameBorders borders;
@@ -3688,7 +3710,7 @@ meta_window_can_tile_side_by_side (MetaWindow *window)
return FALSE;
monitor = meta_screen_get_current_monitor (window->screen);
meta_window_get_work_area_for_monitor (window, monitor, &tile_area);
meta_window_get_work_area_for_monitor (window, monitor->number, &tile_area);
/* Do not allow tiling in portrait orientation */
if (tile_area.height > tile_area.width)
@@ -3889,6 +3911,15 @@ void
meta_window_unmaximize (MetaWindow *window,
MetaMaximizeFlags directions)
{
/* Restore tiling if necessary */
if (window->tile_mode == META_TILE_LEFT ||
window->tile_mode == META_TILE_RIGHT)
{
window->maximized_horizontally = FALSE;
meta_window_tile (window);
return;
}
meta_window_unmaximize_internal (window, directions, &window->saved_rect,
NorthWestGravity);
}
@@ -4576,6 +4607,8 @@ meta_window_move_resize_internal (MetaWindow *window,
gboolean need_move_frame = FALSE;
gboolean need_resize_client = FALSE;
gboolean need_resize_frame = FALSE;
int frame_size_dx;
int frame_size_dy;
int size_dx;
int size_dy;
gboolean frame_shape_changed = FALSE;
@@ -4676,7 +4709,6 @@ meta_window_move_resize_internal (MetaWindow *window,
if (window->frame)
{
int frame_size_dx, frame_size_dy;
int new_w, new_h;
new_w = window->rect.width + borders.total.left + borders.total.right;
@@ -4699,6 +4731,11 @@ meta_window_move_resize_internal (MetaWindow *window,
window->frame->rect.width,
window->frame->rect.height);
}
else
{
frame_size_dx = 0;
frame_size_dy = 0;
}
/* For nice effect, when growing the window we want to move/resize
* the frame first, when shrinking the window we want to move/resize
@@ -5674,9 +5711,6 @@ meta_window_change_workspace (MetaWindow *window,
{
g_return_if_fail (!window->override_redirect);
if (window->always_sticky)
return;
meta_window_change_workspace_without_transients (window, workspace);
meta_window_foreach_transient (window, change_workspace_foreach,
@@ -5793,7 +5827,7 @@ update_net_frame_extents (MetaWindow *window)
meta_topic (META_DEBUG_GEOMETRY,
"Setting _NET_FRAME_EXTENTS on managed window 0x%lx "
"to left = %lu, right = %lu, top = %lu, bottom = %lu\n",
"to left = %lu, right = %lu, top = %lu, bottom = %lu\n",
window->xwindow, data[0], data[1], data[2], data[3]);
meta_error_trap_push (window->display);
@@ -8209,6 +8243,10 @@ menu_callback (MetaWindowMenu *menu,
{
meta_window_change_workspace (window,
workspace);
#if 0
meta_workspace_activate (workspace);
meta_window_raise (window);
#endif
}
}
else
@@ -8298,6 +8336,13 @@ meta_window_show_menu (MetaWindow *window,
else
ops |= META_MENU_OP_MAXIMIZE;
#if 0
if (window->shaded)
ops |= META_MENU_OP_UNSHADE;
else
ops |= META_MENU_OP_SHADE;
#endif
if (window->wm_state_above)
ops |= META_MENU_OP_UNABOVE;
else
@@ -8326,8 +8371,7 @@ meta_window_show_menu (MetaWindow *window,
if ((window->type == META_WINDOW_DESKTOP) ||
(window->type == META_WINDOW_DOCK) ||
(window->type == META_WINDOW_SPLASHSCREEN ||
META_WINDOW_MAXIMIZED (window)))
(window->type == META_WINDOW_SPLASHSCREEN))
insensitive |= META_MENU_OP_ABOVE | META_MENU_OP_UNABOVE;
/* If all operations are disabled, just quit without showing the menu.
@@ -8620,7 +8664,7 @@ update_move (MetaWindow *window,
* refers to the monitor which contains the largest part of the window,
* the latter to the one where the pointer is located.
*/
monitor = meta_screen_get_current_monitor_info (window->screen);
monitor = meta_screen_get_current_monitor (window->screen);
meta_window_get_work_area_for_monitor (window,
monitor->number,
&work_area);
@@ -8914,15 +8958,12 @@ update_resize (MetaWindow *window,
dx = x - window->display->grab_anchor_root_x;
dy = y - window->display->grab_anchor_root_y;
/* Attached modal dialogs are special in that size
* changes apply to both sides, so that the dialog
/* Attached modal dialogs are special in that horizontal
* size changes apply to both sides, so that the dialog
* remains centered to the parent.
*/
if (meta_window_is_attached_dialog (window))
{
dx *= 2;
dy *= 2;
}
dx *= 2;
new_w = window->display->grab_anchor_window_pos.width;
new_h = window->display->grab_anchor_window_pos.height;
@@ -10642,8 +10683,7 @@ meta_window_get_frame_type (MetaWindow *window)
return META_FRAME_TYPE_LAST;
}
else if ((window->border_only && base_type != META_FRAME_TYPE_ATTACHED) ||
(window->hide_titlebar_when_maximized && META_WINDOW_MAXIMIZED (window)) ||
(window->hide_titlebar_when_maximized && META_WINDOW_TILED_SIDE_BY_SIDE (window)))
(window->hide_titlebar_when_maximized && META_WINDOW_MAXIMIZED (window)))
{
/* override base frame type */
return META_FRAME_TYPE_BORDER;

View File

@@ -98,6 +98,9 @@ void meta_workspace_focus_default_window (MetaWorkspace *workspace,
MetaWindow *not_this_one,
guint32 timestamp);
MetaWorkspace* meta_workspace_get_neighbor (MetaWorkspace *workspace,
MetaMotionDirection direction);
const char* meta_workspace_get_name (MetaWorkspace *workspace);
#endif

View File

@@ -192,7 +192,7 @@ meta_workspace_new (MetaScreen *screen)
return workspace;
}
/* Foreach function for workspace_free_struts() */
/** Foreach function for workspace_free_struts() */
static void
free_this (gpointer candidate, gpointer dummy)
{
@@ -200,10 +200,9 @@ free_this (gpointer candidate, gpointer dummy)
}
/**
* workspace_free_all_struts:
* @workspace: The workspace.
*
* Frees the combined struts list of a workspace.
*
* \param workspace The workspace.
*/
static void
workspace_free_all_struts (MetaWorkspace *workspace)
@@ -217,10 +216,9 @@ workspace_free_all_struts (MetaWorkspace *workspace)
}
/**
* workspace_free_builtin_struts:
* @workspace: The workspace.
*
* Frees the struts list set with meta_workspace_set_builtin_struts
*
* \param workspace The workspace.
*/
static void
workspace_free_builtin_struts (MetaWorkspace *workspace)
@@ -999,6 +997,18 @@ ensure_work_areas_validated (MetaWorkspace *workspace)
/* We're all done, YAAY! Record that everything has been validated. */
workspace->work_areas_invalid = FALSE;
{
/*
* Notify the compositor that the workspace geometry has changed.
*/
MetaScreen *screen = workspace->screen;
MetaDisplay *display = meta_screen_get_display (screen);
MetaCompositor *comp = meta_display_get_compositor (display);
if (comp)
meta_compositor_update_workspace_geometry (comp, workspace);
}
}
static gboolean
@@ -1056,13 +1066,6 @@ meta_workspace_get_work_area_for_monitor (MetaWorkspace *workspace,
*area = workspace->work_area_monitor[which_monitor];
}
/**
* meta_workspace_get_work_area_all_monitors:
* @workspace: a #MetaWorkspace
* @area: (out): location to store the work area
*
* Stores the work area in @area.
*/
void
meta_workspace_get_work_area_all_monitors (MetaWorkspace *workspace,
MetaRectangle *area)
@@ -1117,18 +1120,6 @@ meta_motion_direction_to_string (MetaMotionDirection direction)
}
#endif /* WITH_VERBOSE_MODE */
/**
* meta_workspace_get_neighbor:
* @workspace: a #MetaWorkspace
* @direction: a #MetaMotionDirection, relative to @workspace
*
* Calculate and retrive the workspace that is next to @workspace,
* according to @direction and the current workspace layout, as set
* by meta_screen_override_workspace_layout().
*
* Returns: (transfer none): the workspace next to @workspace, or
* @workspace itself if the neighbor would be outside the layout
*/
MetaWorkspace*
meta_workspace_get_neighbor (MetaWorkspace *workspace,
MetaMotionDirection direction)
@@ -1312,7 +1303,7 @@ focus_ancestor_or_top_window (MetaWorkspace *workspace,
window = meta_stack_get_default_focus_window (workspace->screen->stack,
workspace,
not_this_one);
NULL);
if (window)
{

View File

@@ -364,7 +364,6 @@ void meta_frame_borders_clear (MetaFrameBorders *self);
(ycoord) < ((rect).y + (rect).height))
/**
* MetaStackLayer:
* Layers a window can be in.
* These MUST be in the order of stacking.
*/

View File

@@ -153,6 +153,8 @@ void meta_compositor_set_updates (MetaCompositor *compositor,
MetaWindow *window,
gboolean updates);
void meta_compositor_update_workspace_geometry (MetaCompositor *compositor,
MetaWorkspace *workspace);
void meta_compositor_sync_stack (MetaCompositor *compositor,
MetaScreen *screen,
GList *stack);

View File

@@ -175,6 +175,4 @@ void meta_display_unmanage_screen (MetaDisplay *display,
MetaScreen *screen,
guint32 timestamp);
void meta_display_clear_mouse_mode (MetaDisplay *display);
#endif

View File

@@ -123,6 +123,8 @@ struct _MetaPluginInfo
GType meta_plugin_get_type (void);
gulong meta_plugin_features (MetaPlugin *plugin);
gboolean meta_plugin_disabled (MetaPlugin *plugin);
gboolean meta_plugin_running (MetaPlugin *plugin);
gboolean meta_plugin_debug_mode (MetaPlugin *plugin);
@@ -218,6 +220,9 @@ struct _MetaPluginVersion
return object_name##_register_type (type_module); \
} \
void
meta_plugin_type_register (GType plugin_type);
void
meta_plugin_switch_workspace_completed (MetaPlugin *plugin);
@@ -271,7 +276,4 @@ MetaScreen *meta_plugin_get_screen (MetaPlugin *plugin);
void
_meta_plugin_effect_started (MetaPlugin *plugin);
/* XXX: Putting this in here so it's in the public header. */
void meta_plugin_manager_set_plugin_type (GType gtype);
#endif /* META_PLUGIN_H_ */

View File

@@ -72,8 +72,12 @@ void meta_shaped_texture_set_pixmap (MetaShapedTexture *stex,
CoglHandle meta_shaped_texture_get_texture (MetaShapedTexture *stex);
void meta_shaped_texture_set_mask_texture (MetaShapedTexture *stex,
CoglHandle mask_texture);
void meta_shaped_texture_set_shape_region (MetaShapedTexture *stex,
cairo_region_t *region);
void meta_shaped_texture_set_overlay_path (MetaShapedTexture *stex,
cairo_region_t *overlay_region,
cairo_path_t *overlay_path);
/* Assumes ownership of clip_region */
void meta_shaped_texture_set_clip_region (MetaShapedTexture *stex,

View File

@@ -64,6 +64,7 @@ typedef enum
META_PREF_RESIZE_WITH_RIGHT_BUTTON,
META_PREF_EDGE_TILING,
META_PREF_FORCE_FULLSCREEN,
META_PREF_LIVE_HIDDEN_WINDOWS,
META_PREF_WORKSPACES_ONLY_ON_PRIMARY,
META_PREF_NO_TAB_POPUP,
META_PREF_DRAGGABLE_BORDER_WIDTH
@@ -104,6 +105,12 @@ gboolean meta_prefs_get_gnome_accessibility (void);
gboolean meta_prefs_get_gnome_animations (void);
gboolean meta_prefs_get_edge_tiling (void);
const char* meta_prefs_get_screenshot_command (void);
const char* meta_prefs_get_window_screenshot_command (void);
const char* meta_prefs_get_terminal_command (void);
void meta_prefs_get_button_layout (MetaButtonLayout *button_layout);
/* Double, right, middle click can be configured to any titlebar meta-action */
@@ -122,8 +129,18 @@ int meta_prefs_get_cursor_size (void);
gboolean meta_prefs_get_compositing_manager (void);
gboolean meta_prefs_get_force_fullscreen (void);
/**
* Sets whether the compositor is turned on.
*
* \param whether TRUE to turn on, FALSE to turn off
*/
void meta_prefs_set_compositing_manager (gboolean whether);
void meta_prefs_set_force_fullscreen (gboolean whether);
gboolean meta_prefs_get_live_hidden_windows (void);
void meta_prefs_set_live_hidden_windows (gboolean whether);
gboolean meta_prefs_get_workspaces_only_on_primary (void);
gboolean meta_prefs_get_no_tab_popup (void);
@@ -131,9 +148,6 @@ void meta_prefs_set_no_tab_popup (gboolean whether);
int meta_prefs_get_draggable_border_width (void);
gboolean meta_prefs_get_ignore_request_hide_titlebar (void);
void meta_prefs_set_ignore_request_hide_titlebar (gboolean whether);
/* XXX FIXME This should be x-macroed, but isn't yet because it would be
* difficult (or perhaps impossible) to add the suffixes using the current
* system. It needs some more thought, perhaps after the current system
@@ -262,7 +276,7 @@ typedef struct
MetaKeyBindingAction action;
/*
/**
* A list of MetaKeyCombos. Each of them is bound to
* this keypref. If one has keysym==modifiers==0, it is
* ignored.

View File

@@ -78,6 +78,10 @@ void meta_preview_set_frame_flags (MetaPreview *preview,
void meta_preview_set_button_layout (MetaPreview *preview,
const MetaButtonLayout *button_layout);
cairo_region_t * meta_preview_get_clip_region (MetaPreview *preview,
gint new_window_width,
gint new_window_height);
GdkPixbuf* meta_preview_get_icon (void);
GdkPixbuf* meta_preview_get_mini_icon (void);

View File

@@ -77,7 +77,6 @@ MetaWorkspace * meta_screen_get_active_workspace (MetaScreen *screen);
int meta_screen_get_n_monitors (MetaScreen *screen);
int meta_screen_get_primary_monitor (MetaScreen *screen);
int meta_screen_get_current_monitor (MetaScreen *screen);
void meta_screen_get_monitor_geometry (MetaScreen *screen,
int monitor,
MetaRectangle *geometry);

View File

@@ -90,6 +90,8 @@ gint meta_unsigned_long_equal (gconstpointer v1,
gconstpointer v2);
guint meta_unsigned_long_hash (gconstpointer v);
void meta_print_backtrace (void);
const char* meta_frame_type_to_string (MetaFrameType type);
const char* meta_gravity_to_string (int gravity);

View File

@@ -116,8 +116,6 @@ void meta_window_change_workspace_by_index (MetaWindow *window,
gint space_index,
gboolean append,
guint32 timestamp);
void meta_window_change_workspace (MetaWindow *window,
MetaWorkspace *workspace);
GObject *meta_window_get_compositor_private (MetaWindow *window);
void meta_window_set_compositor_private (MetaWindow *window, GObject *priv);
void meta_window_configure_notify (MetaWindow *window, XConfigureEvent *event);
@@ -173,24 +171,4 @@ cairo_region_t *meta_window_get_frame_bounds (MetaWindow *window);
MetaWindow *meta_window_get_tile_match (MetaWindow *window);
void meta_window_make_fullscreen (MetaWindow *window);
void meta_window_unmake_fullscreen (MetaWindow *window);
void meta_window_make_above (MetaWindow *window);
void meta_window_unmake_above (MetaWindow *window);
void meta_window_shade (MetaWindow *window,
guint32 timestamp);
void meta_window_unshade (MetaWindow *window,
guint32 timestamp);
void meta_window_stick (MetaWindow *window);
void meta_window_unstick (MetaWindow *window);
void meta_window_kill (MetaWindow *window);
void meta_window_focus (MetaWindow *window,
guint32 timestamp);
void meta_window_begin_grab_op (MetaWindow *window,
MetaGrabOp op,
gboolean frame_action,
guint32 timestamp);
#endif

View File

@@ -1,5 +1,15 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/**
* \file workspace.h Workspaces
*
* A workspace is a set of windows which all live on the same
* screen. (You may also see the name "desktop" around the place,
* which is the EWMH's name for the same thing.) Only one workspace
* of a screen may be active at once; all windows on all other workspaces
* are unmapped.
*/
/*
* Copyright (C) 2001 Havoc Pennington
* Copyright (C) 2004, 2005 Elijah Newren
@@ -23,17 +33,6 @@
#ifndef META_WORKSPACE_H
#define META_WORKSPACE_H
/**
* SECTION:Workspaces
* @short_description:Workspaces
*
* A workspace is a set of windows which all live on the same
* screen. (You may also see the name "desktop" around the place,
* which is the EWMH's name for the same thing.) Only one workspace
* of a screen may be active at once; all windows on all other workspaces
* are unmapped.
*/
#include <meta/types.h>
#include <meta/boxes.h>
#include <meta/screen.h>
@@ -63,7 +62,4 @@ void meta_workspace_update_window_hints (MetaWorkspace *workspace);
void meta_workspace_set_builtin_struts (MetaWorkspace *workspace,
GSList *struts);
MetaWorkspace* meta_workspace_get_neighbor (MetaWorkspace *workspace,
MetaMotionDirection direction);
#endif

View File

@@ -1,5 +1,6 @@
[org.gnome.mutter]
overlay-key = /apps/mutter/general/overlay_key
attach-modal-dialogs = /apps/mutter/general/attach_modal_dialogs
live-hidden-windows = /apps/mutter/general/live_hidden_windows
workspaces-only-on-primary = /apps/mutter/general/workspaces_only_on_primary
draggable-border-width = /apps/mutter/general/draggable_border_width

View File

@@ -25,6 +25,16 @@
</_description>
</key>
<key name="live-hidden-windows" type="b">
<default>false</default>
<_summary>Live Hidden Windows</_summary>
<_description>
Determines whether hidden windows (i.e., minimized windows and
windows on other workspaces than the current one) should be kept
alive.
</_description>
</key>
<key name="edge-tiling" type="b">
<default>false</default>
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
@@ -79,6 +89,10 @@
</schema>
<schema id="org.gnome.mutter.keybindings" path="/org/gnome/mutter/keybindings/">
<key name="toggle-recording" type="as">
<default><![CDATA[['<Control><Shift><Alt>r']]]></default>
</key>
<key name="toggle-tiled-left" type="as">
<default><![CDATA[['<Super>Left']]]></default>
</key>

View File

@@ -97,6 +97,7 @@ static MetaFrameControl get_control (MetaFrames *frames,
MetaUIFrame *frame,
int x,
int y);
static void invalidate_all_caches (MetaFrames *frames);
static void invalidate_whole_window (MetaFrames *frames,
MetaUIFrame *frame);
@@ -260,6 +261,14 @@ meta_frames_init (MetaFrames *frames)
frames->frames = g_hash_table_new (unsigned_long_hash, unsigned_long_equal);
frames->tooltip_timeout = 0;
frames->expose_delay_count = 0;
frames->invalidate_cache_timeout_id = 0;
frames->invalidate_frames = NULL;
frames->cache = g_hash_table_new (g_direct_hash, g_direct_equal);
frames->style_variants = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, g_object_unref);
update_style_contexts (frames);
@@ -326,13 +335,90 @@ meta_frames_finalize (GObject *object)
meta_prefs_remove_listener (prefs_changed_callback, frames);
g_hash_table_destroy (frames->text_heights);
invalidate_all_caches (frames);
if (frames->invalidate_cache_timeout_id)
g_source_remove (frames->invalidate_cache_timeout_id);
g_assert (g_hash_table_size (frames->frames) == 0);
g_hash_table_destroy (frames->frames);
g_hash_table_destroy (frames->cache);
G_OBJECT_CLASS (meta_frames_parent_class)->finalize (object);
}
typedef struct
{
cairo_rectangle_int_t rect;
cairo_surface_t *pixmap;
} CachedFramePiece;
typedef struct
{
/* Caches of the four rendered sides in a MetaFrame.
* Order: top (titlebar), left, right, bottom.
*/
CachedFramePiece piece[4];
} CachedPixels;
static CachedPixels *
get_cache (MetaFrames *frames,
MetaUIFrame *frame)
{
CachedPixels *pixels;
pixels = g_hash_table_lookup (frames->cache, frame);
if (!pixels)
{
pixels = g_new0 (CachedPixels, 1);
g_hash_table_insert (frames->cache, frame, pixels);
}
return pixels;
}
static void
invalidate_cache (MetaFrames *frames,
MetaUIFrame *frame)
{
CachedPixels *pixels = get_cache (frames, frame);
int i;
for (i = 0; i < 4; i++)
if (pixels->piece[i].pixmap)
cairo_surface_destroy (pixels->piece[i].pixmap);
g_free (pixels);
g_hash_table_remove (frames->cache, frame);
}
static void
invalidate_all_caches (MetaFrames *frames)
{
GList *l;
for (l = frames->invalidate_frames; l; l = l->next)
{
MetaUIFrame *frame = l->data;
invalidate_cache (frames, frame);
}
g_list_free (frames->invalidate_frames);
frames->invalidate_frames = NULL;
}
static gboolean
invalidate_cache_timeout (gpointer data)
{
MetaFrames *frames = data;
invalidate_all_caches (frames);
frames->invalidate_cache_timeout_id = 0;
return FALSE;
}
static void
queue_recalc_func (gpointer key, gpointer value, gpointer data)
{
@@ -614,6 +700,7 @@ meta_frames_manage_window (MetaFrames *frames,
frame->layout = NULL;
frame->text_height = -1;
frame->title = NULL;
frame->expose_delayed = FALSE;
frame->shape_applied = FALSE;
frame->prelit_control = META_FRAME_CONTROL_NONE;
@@ -637,6 +724,11 @@ meta_frames_unmanage_window (MetaFrames *frames,
if (frame)
{
/* invalidating all caches ensures the frame
* is not actually referenced anymore
*/
invalidate_all_caches (frames);
/* restore the cursor */
meta_core_set_screen_cursor (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
frame->xwindow,
@@ -1038,6 +1130,7 @@ redraw_control (MetaFrames *frames,
rect = control_rect (control, &fgeom);
gdk_window_invalidate_rect (frame->window, rect, FALSE);
invalidate_cache (frames, frame);
}
static gboolean
@@ -1748,6 +1841,8 @@ meta_frames_motion_notify_event (GtkWidget *widget,
/* Update prelit control and cursor */
meta_frames_update_prelit_control (frames, frame, control);
/* No tooltip while in the process of clicking */
}
break;
case META_GRAB_OP_NONE:
@@ -1811,50 +1906,222 @@ setup_bg_cr (cairo_t *cr, GdkWindow *window, int x_offset, int y_offset)
}
}
/* Returns a pixmap with a piece of the windows frame painted on it.
*/
static cairo_surface_t *
generate_pixmap (MetaFrames *frames,
MetaUIFrame *frame,
cairo_rectangle_int_t *rect)
{
cairo_surface_t *result;
cairo_t *cr;
/* do not create a pixmap for nonexisting areas */
if (rect->width <= 0 || rect->height <= 0)
return NULL;
result = gdk_window_create_similar_surface (frame->window,
CAIRO_CONTENT_COLOR,
rect->width, rect->height);
cr = cairo_create (result);
cairo_translate (cr, -rect->x, -rect->y);
setup_bg_cr (cr, frame->window, 0, 0);
cairo_paint (cr);
meta_frames_paint (frames, frame, cr);
cairo_destroy (cr);
return result;
}
static void
clip_region_to_visible_frame_border (cairo_region_t *region,
MetaUIFrame *frame)
populate_cache (MetaFrames *frames,
MetaUIFrame *frame)
{
MetaFrameBorders borders;
int width, height;
int frame_width, frame_height, screen_width, screen_height;
CachedPixels *pixels;
MetaFrameType frame_type;
MetaFrameFlags frame_flags;
int i;
meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
frame->xwindow,
META_CORE_GET_FRAME_WIDTH, &frame_width,
META_CORE_GET_FRAME_HEIGHT, &frame_height,
META_CORE_GET_SCREEN_WIDTH, &screen_width,
META_CORE_GET_SCREEN_HEIGHT, &screen_height,
META_CORE_GET_CLIENT_WIDTH, &width,
META_CORE_GET_CLIENT_HEIGHT, &height,
META_CORE_GET_FRAME_TYPE, &frame_type,
META_CORE_GET_FRAME_FLAGS, &frame_flags,
META_CORE_GET_END);
/* don't cache extremely large windows */
if (frame_width > 2 * screen_width ||
frame_height > 2 * screen_height)
{
return;
}
meta_theme_get_frame_borders (meta_theme_get_current (),
frame_type,
frame->text_height,
frame_flags,
&borders);
pixels = get_cache (frames, frame);
/* Setup the rectangles for the four visible frame borders. First top, then
* left, right and bottom. Top and bottom extend to the invisible borders
* while left and right snugly fit in between:
* -----
* | |
* -----
*/
/* width and height refer to the client window's
* size without any border added. */
/* top */
pixels->piece[0].rect.x = borders.invisible.left;
pixels->piece[0].rect.y = borders.invisible.top;
pixels->piece[0].rect.width = width + borders.visible.left + borders.visible.right;
pixels->piece[0].rect.height = borders.visible.top;
/* left */
pixels->piece[1].rect.x = borders.invisible.left;
pixels->piece[1].rect.y = borders.total.top;
pixels->piece[1].rect.height = height;
pixels->piece[1].rect.width = borders.visible.left;
/* right */
pixels->piece[2].rect.x = borders.total.left + width;
pixels->piece[2].rect.y = borders.total.top;
pixels->piece[2].rect.width = borders.visible.right;
pixels->piece[2].rect.height = height;
/* bottom */
pixels->piece[3].rect.x = borders.invisible.left;
pixels->piece[3].rect.y = borders.total.top + height;
pixels->piece[3].rect.width = width + borders.visible.left + borders.visible.right;
pixels->piece[3].rect.height = borders.visible.bottom;
for (i = 0; i < 4; i++)
{
CachedFramePiece *piece = &pixels->piece[i];
/* generate_pixmap() returns NULL for 0 width/height pieces, but
* does so cheaply so we don't need to cache the NULL return */
if (!piece->pixmap)
piece->pixmap = generate_pixmap (frames, frame, &piece->rect);
}
if (frames->invalidate_cache_timeout_id)
g_source_remove (frames->invalidate_cache_timeout_id);
frames->invalidate_cache_timeout_id = g_timeout_add (1000, invalidate_cache_timeout, frames);
if (!g_list_find (frames->invalidate_frames, frame))
frames->invalidate_frames =
g_list_prepend (frames->invalidate_frames, frame);
}
static void
clip_to_screen (cairo_region_t *region,
MetaUIFrame *frame)
{
cairo_rectangle_int_t frame_area;
cairo_rectangle_int_t screen_area = { 0, 0, 0, 0 };
cairo_region_t *tmp_region;
/* Chop off stuff outside the screen; this optimization
* is crucial to handle huge client windows,
* like "xterm -geometry 1000x1000"
*/
meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
frame->xwindow,
META_CORE_GET_FRAME_X, &frame_area.x,
META_CORE_GET_FRAME_Y, &frame_area.y,
META_CORE_GET_FRAME_WIDTH, &frame_area.width,
META_CORE_GET_FRAME_HEIGHT, &frame_area.height,
META_CORE_GET_SCREEN_WIDTH, &screen_area.width,
META_CORE_GET_SCREEN_HEIGHT, &screen_area.height,
META_CORE_GET_END);
cairo_region_translate (region, frame_area.x, frame_area.y);
tmp_region = cairo_region_create_rectangle (&frame_area);
cairo_region_intersect (region, tmp_region);
cairo_region_destroy (tmp_region);
tmp_region = cairo_region_create_rectangle (&screen_area);
cairo_region_intersect (region, tmp_region);
cairo_region_destroy (tmp_region);
cairo_region_translate (region, - frame_area.x, - frame_area.y);
}
static void
subtract_client_area (cairo_region_t *region,
MetaUIFrame *frame)
{
cairo_rectangle_int_t area;
cairo_region_t *frame_border;
MetaFrameFlags flags;
MetaFrameType type;
MetaFrameBorders borders;
cairo_region_t *tmp_region;
Display *display;
int frame_width, frame_height;
display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
meta_core_get (display, frame->xwindow,
META_CORE_GET_FRAME_FLAGS, &flags,
META_CORE_GET_FRAME_TYPE, &type,
META_CORE_GET_FRAME_WIDTH, &frame_width,
META_CORE_GET_FRAME_HEIGHT, &frame_height,
META_CORE_GET_CLIENT_WIDTH, &area.width,
META_CORE_GET_CLIENT_HEIGHT, &area.height,
META_CORE_GET_END);
meta_theme_get_frame_borders (meta_theme_get_current (),
type, frame->text_height, flags,
&borders);
/* Visible frame rect */
area.x = borders.invisible.left;
area.y = borders.invisible.top;
area.width = frame_width - borders.invisible.left - borders.invisible.right;
area.height = frame_height - borders.invisible.top - borders.invisible.bottom;
area.x = borders.total.left;
area.y = borders.total.top;
frame_border = cairo_region_create_rectangle (&area);
tmp_region = cairo_region_create_rectangle (&area);
cairo_region_subtract (region, tmp_region);
cairo_region_destroy (tmp_region);
}
/* Client rect */
area.x += borders.visible.left;
area.y += borders.visible.top;
area.width -= borders.visible.left + borders.visible.right;
area.height -= borders.visible.top + borders.visible.bottom;
static void
cached_pixels_draw (CachedPixels *pixels,
cairo_t *cr,
cairo_region_t *region)
{
cairo_region_t *region_piece;
int i;
/* Visible frame border */
cairo_region_subtract_rectangle (frame_border, &area);
cairo_region_intersect (region, frame_border);
cairo_region_destroy (frame_border);
for (i = 0; i < 4; i++)
{
CachedFramePiece *piece;
piece = &pixels->piece[i];
if (piece->pixmap)
{
cairo_set_source_surface (cr, piece->pixmap,
piece->rect.x, piece->rect.y);
cairo_paint (cr);
region_piece = cairo_region_create_rectangle (&piece->rect);
cairo_region_subtract (region, region_piece);
cairo_region_destroy (region_piece);
}
}
}
static gboolean
@@ -1863,8 +2130,10 @@ meta_frames_draw (GtkWidget *widget,
{
MetaUIFrame *frame;
MetaFrames *frames;
cairo_rectangle_int_t clip;
CachedPixels *pixels;
cairo_region_t *region;
cairo_rectangle_int_t clip;
int i, n_areas;
cairo_surface_t *target;
frames = META_FRAMES (widget);
@@ -1876,23 +2145,47 @@ meta_frames_draw (GtkWidget *widget,
if (frame == NULL)
return FALSE;
if (frames->expose_delay_count > 0)
{
/* Redraw this entire frame later */
frame->expose_delayed = TRUE;
return TRUE;
}
populate_cache (frames, frame);
region = cairo_region_create_rectangle (&clip);
clip_region_to_visible_frame_border (region, frame);
pixels = get_cache (frames, frame);
if (cairo_region_is_empty (region))
goto out;
cached_pixels_draw (pixels, cr, region);
clip_to_screen (region, frame);
subtract_client_area (region, frame);
gdk_cairo_region (cr, region);
cairo_clip (cr);
n_areas = cairo_region_num_rectangles (region);
cairo_save (cr);
setup_bg_cr (cr, frame->window, 0, 0);
cairo_paint (cr);
cairo_restore (cr);
for (i = 0; i < n_areas; i++)
{
cairo_rectangle_int_t area;
meta_frames_paint (frames, frame, cr);
cairo_region_get_rectangle (region, i, &area);
cairo_save (cr);
cairo_rectangle (cr, area.x, area.y, area.width, area.height);
cairo_clip (cr);
cairo_push_group (cr);
meta_frames_paint (frames, frame, cr);
cairo_pop_group_to_source (cr);
cairo_paint (cr);
cairo_restore (cr);
}
out:
cairo_region_destroy (region);
return TRUE;
@@ -1903,6 +2196,7 @@ meta_frames_paint (MetaFrames *frames,
MetaUIFrame *frame,
cairo_t *cr)
{
GtkWidget *widget;
MetaFrameFlags flags;
MetaFrameType type;
GdkPixbuf *mini_icon;
@@ -1915,6 +2209,7 @@ meta_frames_paint (MetaFrames *frames,
MetaGrabOp grab_op;
Display *display;
widget = GTK_WIDGET (frames);
display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
for (i = 0; i < META_BUTTON_TYPE_LAST; i++)
@@ -2013,6 +2308,7 @@ meta_frames_paint (MetaFrames *frames,
meta_theme_draw_frame_with_style (meta_theme_get_current (),
frame->style,
widget,
cr,
type,
flags,
@@ -2177,7 +2473,6 @@ control_rect (MetaFrameControl control,
}
#define TOP_RESIZE_HEIGHT 4
#define CORNER_SIZE_MULT 2
static MetaFrameControl
get_control (MetaFrames *frames,
MetaUIFrame *frame,
@@ -2265,8 +2560,8 @@ get_control (MetaFrames *frames,
* in case of overlap.
*/
if (y >= (fgeom.height - fgeom.borders.total.bottom * CORNER_SIZE_MULT) &&
x >= (fgeom.width - fgeom.borders.total.right * CORNER_SIZE_MULT))
if (y >= (fgeom.height - fgeom.borders.total.bottom) &&
x >= (fgeom.width - fgeom.borders.total.right))
{
if (has_vert && has_horiz)
return META_FRAME_CONTROL_RESIZE_SE;
@@ -2275,8 +2570,8 @@ get_control (MetaFrames *frames,
else if (has_horiz)
return META_FRAME_CONTROL_RESIZE_E;
}
else if (y >= (fgeom.height - fgeom.borders.total.bottom * CORNER_SIZE_MULT) &&
x <= fgeom.borders.total.left * CORNER_SIZE_MULT)
else if (y >= (fgeom.height - fgeom.borders.total.bottom) &&
x <= fgeom.borders.total.left)
{
if (has_vert && has_horiz)
return META_FRAME_CONTROL_RESIZE_SW;
@@ -2285,8 +2580,8 @@ get_control (MetaFrames *frames,
else if (has_horiz)
return META_FRAME_CONTROL_RESIZE_W;
}
else if (y < (fgeom.borders.invisible.top * CORNER_SIZE_MULT) &&
x <= (fgeom.borders.total.left * CORNER_SIZE_MULT) && has_north_resize)
else if (y < (fgeom.borders.invisible.top) &&
x <= fgeom.borders.total.left && has_north_resize)
{
if (has_vert && has_horiz)
return META_FRAME_CONTROL_RESIZE_NW;
@@ -2295,8 +2590,8 @@ get_control (MetaFrames *frames,
else if (has_horiz)
return META_FRAME_CONTROL_RESIZE_W;
}
else if (y < (fgeom.borders.invisible.top * CORNER_SIZE_MULT) &&
x >= (fgeom.width - fgeom.borders.total.right * CORNER_SIZE_MULT) && has_north_resize)
else if (y < (fgeom.borders.invisible.top) &&
x >= fgeom.width - fgeom.borders.total.right && has_north_resize)
{
if (has_vert && has_horiz)
return META_FRAME_CONTROL_RESIZE_NE;
@@ -2332,9 +2627,54 @@ get_control (MetaFrames *frames,
return META_FRAME_CONTROL_TITLE;
}
void
meta_frames_push_delay_exposes (MetaFrames *frames)
{
if (frames->expose_delay_count == 0)
{
/* Make sure we've repainted things */
gdk_window_process_all_updates ();
XFlush (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
}
frames->expose_delay_count += 1;
}
static void
queue_pending_exposes_func (gpointer key, gpointer value, gpointer data)
{
MetaUIFrame *frame;
MetaFrames *frames;
frames = META_FRAMES (data);
frame = value;
if (frame->expose_delayed)
{
invalidate_whole_window (frames, frame);
frame->expose_delayed = FALSE;
}
}
void
meta_frames_pop_delay_exposes (MetaFrames *frames)
{
g_return_if_fail (frames->expose_delay_count > 0);
frames->expose_delay_count -= 1;
if (frames->expose_delay_count == 0)
{
g_hash_table_foreach (frames->frames,
queue_pending_exposes_func,
frames);
}
}
static void
invalidate_whole_window (MetaFrames *frames,
MetaUIFrame *frame)
{
gdk_window_invalidate_rect (frame->window, NULL, FALSE);
invalidate_cache (frames, frame);
}

View File

@@ -80,6 +80,7 @@ struct _MetaUIFrame
PangoLayout *layout;
int text_height;
char *title; /* NULL once we have a layout */
guint expose_delayed : 1;
guint shape_applied : 1;
/* FIXME get rid of this, it can just be in the MetaFrames struct */
@@ -93,10 +94,18 @@ struct _MetaFrames
GHashTable *text_heights;
GHashTable *frames;
guint tooltip_timeout;
MetaUIFrame *last_motion_frame;
GtkStyleContext *normal_style;
GHashTable *style_variants;
int expose_delay_count;
int invalidate_cache_timeout_id;
GList *invalidate_frames;
GHashTable *cache;
};
struct _MetaFramesClass
@@ -160,4 +169,7 @@ void meta_frames_notify_menu_hide (MetaFrames *frames);
Window meta_frames_get_moving_frame (MetaFrames *frames);
void meta_frames_push_delay_exposes (MetaFrames *frames);
void meta_frames_pop_delay_exposes (MetaFrames *frames);
#endif

View File

@@ -465,3 +465,117 @@ meta_preview_get_mini_icon (void)
return default_icon;
}
cairo_region_t *
meta_preview_get_clip_region (MetaPreview *preview, gint new_window_width, gint new_window_height)
{
cairo_rectangle_int_t xrect;
cairo_region_t *corners_xregion, *window_xregion;
gint flags;
MetaFrameLayout *fgeom;
MetaFrameStyle *frame_style;
g_return_val_if_fail (META_IS_PREVIEW (preview), NULL);
flags = (META_PREVIEW (preview)->flags);
window_xregion = cairo_region_create ();
xrect.x = 0;
xrect.y = 0;
xrect.width = new_window_width;
xrect.height = new_window_height;
cairo_region_union_rectangle (window_xregion, &xrect);
if (preview->theme == NULL)
return window_xregion;
/* Otherwise, we do have a theme, so calculate the corners */
frame_style = meta_theme_get_frame_style (preview->theme,
META_FRAME_TYPE_NORMAL, flags);
fgeom = frame_style->layout;
corners_xregion = cairo_region_create ();
if (fgeom->top_left_corner_rounded_radius != 0)
{
const int corner = fgeom->top_left_corner_rounded_radius;
const float radius = sqrt(corner) + corner;
int i;
for (i=0; i<corner; i++)
{
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
xrect.x = 0;
xrect.y = i;
xrect.width = width;
xrect.height = 1;
cairo_region_union_rectangle (corners_xregion, &xrect);
}
}
if (fgeom->top_right_corner_rounded_radius != 0)
{
const int corner = fgeom->top_right_corner_rounded_radius;
const float radius = sqrt(corner) + corner;
int i;
for (i=0; i<corner; i++)
{
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
xrect.x = new_window_width - width;
xrect.y = i;
xrect.width = width;
xrect.height = 1;
cairo_region_union_rectangle (corners_xregion, &xrect);
}
}
if (fgeom->bottom_left_corner_rounded_radius != 0)
{
const int corner = fgeom->bottom_left_corner_rounded_radius;
const float radius = sqrt(corner) + corner;
int i;
for (i=0; i<corner; i++)
{
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
xrect.x = 0;
xrect.y = new_window_height - i - 1;
xrect.width = width;
xrect.height = 1;
cairo_region_union_rectangle (corners_xregion, &xrect);
}
}
if (fgeom->bottom_right_corner_rounded_radius != 0)
{
const int corner = fgeom->bottom_right_corner_rounded_radius;
const float radius = sqrt(corner) + corner;
int i;
for (i=0; i<corner; i++)
{
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
xrect.x = new_window_width - width;
xrect.y = new_window_height - i - 1;
xrect.width = width;
xrect.height = 1;
cairo_region_union_rectangle (corners_xregion, &xrect);
}
}
cairo_region_subtract (window_xregion, corners_xregion);
cairo_region_destroy (corners_xregion);
return window_xregion;
}

View File

@@ -844,12 +844,9 @@ meta_select_workspace_class_init (MetaSelectWorkspaceClass *klass)
}
/**
* meta_convert_meta_to_wnck:
* @window: the #MetaWindow
* @screen: the #MetaScreen the window is on
*
* Converts a #MetaWindow to a #WnckWindowDisplayInfo window
* that is used to build a thumbnail of a workspace.
* meta_convert_meta_to_wnck() converts a MetaWindow to a
* WnckWindowDisplayInfo window that is used to build a thumbnail of a
* workspace.
**/
static WnckWindowDisplayInfo
meta_convert_meta_to_wnck (MetaWindow *window, MetaScreen *screen)

View File

@@ -4281,15 +4281,29 @@ meta_theme_load (const char *theme_name,
int i;
retval = NULL;
if (meta_is_debugging ())
{
/* Try in themes in our source tree */
/* We try all supported major versions from current to oldest */
for (major_version = THEME_MAJOR_VERSION; (major_version > 0); major_version--)
{
theme_dir = g_build_filename ("./themes", theme_name, NULL);
retval = load_theme (theme_dir, theme_name, major_version, &error);
g_free (theme_dir);
if (!keep_trying (&error))
goto out;
}
}
/* We try all supported major versions from current to oldest */
for (major_version = THEME_MAJOR_VERSION; (major_version > 0); major_version--)
{
/* We try first in XDG_USER_DATA_DIR, XDG_DATA_DIRS, then system dir for themes */
/* We try first in home dir, XDG_DATA_DIRS, then system dir for themes */
/* Try XDG_USER_DATA_DIR first */
theme_dir = g_build_filename (g_get_user_data_dir(),
"themes",
/* Try home dir for themes */
theme_dir = g_build_filename (g_get_home_dir (),
".themes",
theme_name,
THEME_SUBDIR,
NULL);

View File

@@ -925,6 +925,16 @@ void meta_frame_layout_get_borders (const MetaFrameLayout *layout,
MetaFrameFlags flags,
MetaFrameType type,
MetaFrameBorders *borders);
void meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
int text_height,
MetaFrameFlags flags,
int client_width,
int client_height,
const MetaButtonLayout *button_layout,
MetaFrameType type,
MetaFrameGeometry *fgeom,
MetaTheme *theme);
gboolean meta_frame_layout_validate (const MetaFrameLayout *layout,
GError **error);
@@ -956,9 +966,16 @@ void meta_color_spec_render (MetaColorSpec *spec,
MetaDrawOp* meta_draw_op_new (MetaDrawType type);
void meta_draw_op_free (MetaDrawOp *op);
void meta_draw_op_draw (const MetaDrawOp *op,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
/* logical region being drawn */
MetaRectangle logical_region);
void meta_draw_op_draw_with_style (const MetaDrawOp *op,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
/* logical region being drawn */
@@ -967,8 +984,14 @@ void meta_draw_op_draw_with_style (const MetaDrawOp *op,
MetaDrawOpList* meta_draw_op_list_new (int n_preallocs);
void meta_draw_op_list_ref (MetaDrawOpList *op_list);
void meta_draw_op_list_unref (MetaDrawOpList *op_list);
void meta_draw_op_list_draw (const MetaDrawOpList *op_list,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
MetaRectangle rect);
void meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
MetaRectangle rect);
@@ -997,6 +1020,32 @@ MetaFrameStyle* meta_frame_style_new (MetaFrameStyle *parent);
void meta_frame_style_ref (MetaFrameStyle *style);
void meta_frame_style_unref (MetaFrameStyle *style);
void meta_frame_style_draw (MetaFrameStyle *style,
GtkWidget *widget,
cairo_t *cr,
const MetaFrameGeometry *fgeom,
int client_width,
int client_height,
PangoLayout *title_layout,
int text_height,
MetaButtonState button_states[META_BUTTON_TYPE_LAST],
GdkPixbuf *mini_icon,
GdkPixbuf *icon);
void meta_frame_style_draw_with_style (MetaFrameStyle *style,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
const MetaFrameGeometry *fgeom,
int client_width,
int client_height,
PangoLayout *title_layout,
int text_height,
MetaButtonState button_states[META_BUTTON_TYPE_LAST],
GdkPixbuf *mini_icon,
GdkPixbuf *icon);
gboolean meta_frame_style_validate (MetaFrameStyle *style,
guint current_theme_version,
@@ -1038,6 +1087,7 @@ void meta_theme_draw_frame (MetaTheme *theme,
void meta_theme_draw_frame_with_style (MetaTheme *theme,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
MetaFrameType type,
MetaFrameFlags flags,

View File

@@ -22,8 +22,7 @@
*/
/**
* SECTION:theme
* @short_description: Making Metacity look pretty
* \file theme.c Making Metacity look pretty
*
* The window decorations drawn by Metacity are described by files on disk
* known internally as "themes" (externally as "window border themes" on
@@ -31,8 +30,26 @@
* contains most of the code necessary to support themes; it does not
* contain the XML parser, which is in theme-parser.c.
*
* FIXME: This is a big file with lots of different subsystems, which might
* be better split out into separate files.
* \bug This is a big file with lots of different subsystems, which might
* be better split out into separate files.
*/
/**
* \defgroup tokenizer The theme expression tokenizer
*
* Themes can use a simple expression language to represent the values of
* things. This is the tokeniser used for that language.
*
* \bug We could remove almost all this code by using GScanner instead,
* but we would also have to find every expression in every existing theme
* we could and make sure the parse trees were the same.
*/
/**
* \defgroup parser The theme expression parser
*
* Themes can use a simple expression language to represent the values of
* things. This is the parser used for that language.
*/
#include <config.h>
@@ -72,7 +89,7 @@ static void hls_to_rgb (gdouble *h,
gdouble *l,
gdouble *s);
/*
/**
* The current theme. (Themes are singleton.)
*/
static MetaTheme *meta_current_theme = NULL;
@@ -168,10 +185,9 @@ color_composite (const GdkRGBA *bg,
}
/**
* init_border:
* @border: The border whose fields should be reset.
*
* Sets all the fields of a border to dummy values.
*
* \param border The border whose fields should be reset.
*/
static void
init_border (GtkBorder *border)
@@ -224,6 +240,9 @@ meta_frame_layout_new (void)
return layout;
}
/**
*
*/
static gboolean
validate_border (const GtkBorder *border,
const char **bad)
@@ -243,18 +262,17 @@ validate_border (const GtkBorder *border,
}
/**
* validate_geometry_value:
* @val: The value to check
* @name: The name to use in the error message
* @error: (out): Set to an error if val was not initialised
*
* Ensures that the theme supplied a particular dimension. When a
* #MetaFrameLayout is created, all its integer fields are set to -1
* MetaFrameLayout is created, all its integer fields are set to -1
* by meta_frame_layout_new(). After an instance of this type
* should have been initialised, this function checks that
* a given field is not still at -1. It is never called directly, but
* rather via the %CHECK_GEOMETRY_VALUE and %CHECK_GEOMETRY_BORDER
* rather via the CHECK_GEOMETRY_VALUE and CHECK_GEOMETRY_BORDER
* macros.
*
* \param val The value to check
* \param name The name to use in the error message
* \param[out] error Set to an error if val was not initialised
*/
static gboolean
validate_geometry_value (int val,
@@ -593,7 +611,7 @@ strip_button (MetaButtonSpace *func_rects[MAX_BUTTONS_PER_CORNER],
return FALSE; /* did not strip anything */
}
static void
void
meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
int text_height,
MetaFrameFlags flags,
@@ -1622,12 +1640,10 @@ meta_color_spec_render (MetaColorSpec *spec,
}
/**
* op_name:
* @type: an operation, such as addition
*
* Represents an operation as a string.
*
* Returns: a string, such as "+"
* \param type an operation, such as addition
* \return a string, such as "+"
*/
static const char*
op_name (PosOperatorType type)
@@ -1656,14 +1672,12 @@ op_name (PosOperatorType type)
}
/**
* op_from_string:
* @p: a pointer into a string representing an operation; part of an
* expression somewhere, so not null-terminated
* @len: set to the length of the string found. Set to 0 if none is.
*
* Parses a string and returns an operation.
*
* Returns: the operation found. If none was, returns %POS_OP_NONE.
* \param p a pointer into a string representing an operation; part of an
* expression somewhere, so not null-terminated
* \param len set to the length of the string found. Set to 0 if none is.
* \return the operation found. If none was, returns POS_OP_NONE.
*/
static PosOperatorType
op_from_string (const char *p,
@@ -1714,12 +1728,11 @@ op_from_string (const char *p,
}
/**
* free_tokens:
* @tokens: an array of tokens to be freed
* @n_tokens: how many tokens are in the array.
*
* Frees an array of tokens. All the tokens and their associated memory
* will be freed.
*
* \param tokens an array of tokens to be freed
* \param n_tokens how many tokens are in the array.
*/
static void
free_tokens (PosToken *tokens,
@@ -1739,21 +1752,20 @@ free_tokens (PosToken *tokens,
}
/**
* parse_number:
* @p: a pointer into a string representing an operation; part of an
* expression somewhere, so not null-terminated
* @end_return: set to a pointer to the end of the number found; but
* not updated if no number was found at all
* @next: set to either an integer or a float token
* @err: (out): set to the problem if there was a problem
*
* Tokenises a number in an expression.
*
* FIXME: The "while (*start)..." part: what's wrong with strchr-ish things?
* FIXME: The name is wrong: it doesn't parse anything.
*
* Returns: %TRUE if a valid number was found, FALSE otherwise (and "err" will
* \param p a pointer into a string representing an operation; part of an
* expression somewhere, so not null-terminated
* \param end_return set to a pointer to the end of the number found; but
* not updated if no number was found at all
* \param next set to either an integer or a float token
* \param[out] err set to the problem if there was a problem
* \return TRUE if a valid number was found, FALSE otherwise (and "err" will
* have been set)
*
* \bug The "while (*start)..." part: what's wrong with strchr-ish things?
* \bug The name is wrong: it doesn't parse anything.
* \ingroup tokenizer
*/
static gboolean
parse_number (const char *p,
@@ -1830,7 +1842,7 @@ parse_number (const char *p,
return TRUE;
}
/*
/**
* Whether a variable can validly appear as part of the name of a variable.
*/
#define IS_VARIABLE_CHAR(c) (g_ascii_isalpha ((c)) || (c) == '_')
@@ -1876,15 +1888,16 @@ debug_print_tokens (PosToken *tokens,
#endif
/**
* pos_tokenize:
* @expr: The expression
* @tokens_p: (out) The resulting tokens
* @n_tokens_p: (out): The number of resulting tokens
* @err: (out): set to the problem if there was a problem
* Tokenises an expression.
*
* Returns: %TRUE if the expression was successfully tokenised; %FALSE otherwise.
* \param expr The expression
* \param[out] tokens_p The resulting tokens
* \param[out] n_tokens_p The number of resulting tokens
* \param[out] err set to the problem if there was a problem
*
* \return True if the expression was successfully tokenised; false otherwise.
*
* \ingroup tokenizer
*/
static gboolean
pos_tokenize (const char *expr,
@@ -2012,9 +2025,8 @@ pos_tokenize (const char *expr,
}
/**
* PosExprType:
*
* The type of a PosExpr: either integer, double, or an operation.
* \ingroup parser
*/
typedef enum
{
@@ -2024,15 +2036,14 @@ typedef enum
} PosExprType;
/**
* PosExpr:
*
* Type and value of an expression in a parsed sequence. We don't
* keep expressions in a tree; if this is of type %POS_EXPR_OPERATOR,
* keep expressions in a tree; if this is of type POS_EXPR_OPERATOR,
* the arguments of the operator will be in the array positions
* immediately preceding and following this operator; they cannot
* themselves be operators.
*
* FIXME: operator is #gchar; it should really be of #PosOperatorType.
* \bug operator is char; it should really be of PosOperatorType.
* \ingroup parser
*/
typedef struct
{
@@ -2323,29 +2334,29 @@ do_operations (PosExpr *exprs,
}
/**
* pos_eval_get_variable:
* @t: The token representing a variable
* @result: (out): The value of that variable; not set if the token did
* not represent a known variable
* @env: The environment within which t should be evaluated
* @err: (out): set to the problem if there was a problem
*
* There is a predefined set of variables which can appear in an expression.
* Here we take a token representing a variable, and return the current value
* of that variable in a particular environment.
* (The value is always an integer.)
*
* There are supposedly some circumstances in which this function can be
* called from outside Metacity, in which case env->theme will be %NULL, and
* called from outside Metacity, in which case env->theme will be NULL, and
* therefore we can't use it to find out quark values, so we do the comparison
* using strcmp(), which is slower.
* using strcmp, which is slower.
*
* FIXME: shouldn't @t be const?
* FIXME: we should perhaps consider some sort of lookup arrangement into an
* array; also, the duplication of code is unlovely; perhaps using glib
* string hashes instead of quarks would fix both problems?
* \param t The token representing a variable
* \param[out] result The value of that variable; not set if the token did
* not represent a known variable
* \param env The environment within which t should be evaluated
* \param[out] err set to the problem if there was a problem
*
* Returns: %TRUE if we found the variable asked for, %FALSE if we didn't
* \return true if we found the variable asked for, false if we didn't
*
* \bug shouldn't t be const?
* \bug we should perhaps consider some sort of lookup arrangement into an
* array; also, the duplication of code is unlovely; perhaps using glib
* string hashes instead of quarks would fix both problems?
* \ingroup parser
*/
static gboolean
pos_eval_get_variable (PosToken *t,
@@ -2448,18 +2459,18 @@ pos_eval_get_variable (PosToken *t,
}
/**
* pos_eval_helper:
* @tokens: A list of tokens to evaluate.
* @n_tokens: How many tokens are in the list.
* @env: The environment context in which to evaluate the expression.
* @result: (out): The current value of the expression
*
* Evaluates a sequence of tokens within a particular environment context,
* and returns the current value. May recur if parantheses are found.
*
* FIXME: Yes, we really do reparse the expression every time it's evaluated.
* We should keep the parse tree around all the time and just
* run the new values through it.
* \param tokens A list of tokens to evaluate.
* \param n_tokens How many tokens are in the list.
* \param env The environment context in which to evaluate the expression.
* \param[out] result The current value of the expression
*
* \bug Yes, we really do reparse the expression every time it's evaluated.
* We should keep the parse tree around all the time and just
* run the new values through it.
* \ingroup parser
*/
static gboolean
pos_eval_helper (PosToken *tokens,
@@ -2622,22 +2633,21 @@ pos_eval_helper (PosToken *tokens,
*
* so very not worth fooling with bison, yet so very painful by hand.
*/
/**
* pos_eval:
* @spec: The expression to evaluate.
* @env: The environment context to evaluate the expression in.
* @val_p: (out): The integer value of the expression; if the expression
* is of type float, this will be rounded. If we return
* %FALSE because the expression is invalid, this will be
* zero.
* @err: (out): The error, if anything went wrong.
*
* Evaluates an expression.
*
* FIXME: Shouldn't @spec be const?
* \param spec The expression to evaluate.
* \param env The environment context to evaluate the expression in.
* \param[out] val_p The integer value of the expression; if the expression
* is of type float, this will be rounded. If we return
* FALSE because the expression is invalid, this will be
* zero.
* \param[out] err The error, if anything went wrong.
*
* Returns: %TRUE if we evaluated the expression successfully; %FALSE otherwise.
* \return True if we evaluated the expression successfully; false otherwise.
*
* \bug Shouldn't spec be const?
* \ingroup parser
*/
static gboolean
pos_eval (MetaDrawSpec *spec,
@@ -3623,6 +3633,7 @@ fill_env (MetaPositionExprEnv *env,
static void
meta_draw_op_draw_with_env (const MetaDrawOp *op,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
MetaRectangle rect,
@@ -4032,7 +4043,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
d_rect.height = parse_size_unchecked (op->data.op_list.height, env);
meta_draw_op_list_draw_with_style (op->data.op_list.op_list,
style_gtk, cr, info,
style_gtk, widget, cr, info,
d_rect);
}
break;
@@ -4070,7 +4081,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
while (tile.y < (ry + rheight))
{
meta_draw_op_list_draw_with_style (op->data.tile.op_list,
style_gtk, cr, info,
style_gtk, widget, cr, info,
tile);
tile.y += tile.height;
@@ -4091,6 +4102,7 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op,
void
meta_draw_op_draw_with_style (const MetaDrawOp *op,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
MetaRectangle logical_region)
@@ -4099,12 +4111,23 @@ meta_draw_op_draw_with_style (const MetaDrawOp *op,
fill_env (&env, info, logical_region);
meta_draw_op_draw_with_env (op, style_gtk, cr,
meta_draw_op_draw_with_env (op, style_gtk, widget, cr,
info, logical_region,
&env);
}
void
meta_draw_op_draw (const MetaDrawOp *op,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
MetaRectangle logical_region)
{
meta_draw_op_draw_with_style (op, gtk_widget_get_style_context (widget),
widget, cr, info, logical_region);
}
/**
* meta_draw_op_list_new: (skip)
*
@@ -4159,6 +4182,7 @@ meta_draw_op_list_unref (MetaDrawOpList *op_list)
void
meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
MetaRectangle rect)
@@ -4205,7 +4229,7 @@ meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list,
else if (gdk_cairo_get_clip_rectangle (cr, NULL))
{
meta_draw_op_draw_with_env (op,
style_gtk, cr, info,
style_gtk, widget, cr, info,
rect,
&env);
}
@@ -4214,6 +4238,18 @@ meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list,
cairo_restore (cr);
}
void
meta_draw_op_list_draw (const MetaDrawOpList *op_list,
GtkWidget *widget,
cairo_t *cr,
const MetaDrawInfo *info,
MetaRectangle rect)
{
meta_draw_op_list_draw_with_style (op_list, gtk_widget_get_style_context (widget), widget,
cr, info, rect);
}
void
meta_draw_op_list_append (MetaDrawOpList *op_list,
MetaDrawOp *op)
@@ -4277,14 +4313,13 @@ meta_draw_op_list_contains (MetaDrawOpList *op_list,
}
/**
* meta_frame_style_new:
* @parent: The parent style. Data not filled in here will be
* looked for in the parent style, and in its parent
* style, and so on.
*
* Constructor for a MetaFrameStyle.
*
* Returns: (transfer full): The newly-constructed style.
* \param parent The parent style. Data not filled in here will be
* looked for in the parent style, and in its parent
* style, and so on.
*
* \return The newly-constructed style.
*/
MetaFrameStyle*
meta_frame_style_new (MetaFrameStyle *parent)
@@ -4306,10 +4341,10 @@ meta_frame_style_new (MetaFrameStyle *parent)
}
/**
* meta_frame_style_ref:
* @style: The style.
*
* Increases the reference count of a frame style.
* If the style is NULL, this is a no-op.
*
* \param style The style.
*/
void
meta_frame_style_ref (MetaFrameStyle *style)
@@ -4593,9 +4628,10 @@ button_rect (MetaButtonType type,
}
}
static void
void
meta_frame_style_draw_with_style (MetaFrameStyle *style,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
const MetaFrameGeometry *fgeom,
int client_width,
@@ -4765,6 +4801,7 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
m_rect = meta_rect (rect.x, rect.y, rect.width, rect.height);
meta_draw_op_list_draw_with_style (op_list,
style_gtk,
widget,
cr,
&draw_info,
m_rect);
@@ -4806,6 +4843,7 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
meta_draw_op_list_draw_with_style (op_list,
style_gtk,
widget,
cr,
&draw_info,
m_rect);
@@ -4833,6 +4871,25 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
}
}
void
meta_frame_style_draw (MetaFrameStyle *style,
GtkWidget *widget,
cairo_t *cr,
const MetaFrameGeometry *fgeom,
int client_width,
int client_height,
PangoLayout *title_layout,
int text_height,
MetaButtonState button_states[META_BUTTON_TYPE_LAST],
GdkPixbuf *mini_icon,
GdkPixbuf *icon)
{
meta_frame_style_draw_with_style (style, gtk_widget_get_style_context (widget), widget,
cr, fgeom, client_width, client_height,
title_layout, text_height,
button_states, mini_icon, icon);
}
MetaFrameStyleSet*
meta_frame_style_set_new (MetaFrameStyleSet *parent)
{
@@ -5441,6 +5498,7 @@ meta_theme_get_title_scale (MetaTheme *theme,
void
meta_theme_draw_frame_with_style (MetaTheme *theme,
GtkStyleContext *style_gtk,
GtkWidget *widget,
cairo_t *cr,
MetaFrameType type,
MetaFrameFlags flags,
@@ -5475,6 +5533,7 @@ meta_theme_draw_frame_with_style (MetaTheme *theme,
meta_frame_style_draw_with_style (style,
style_gtk,
widget,
cr,
&fgeom,
client_width, client_height,
@@ -5499,7 +5558,7 @@ meta_theme_draw_frame (MetaTheme *theme,
GdkPixbuf *mini_icon,
GdkPixbuf *icon)
{
meta_theme_draw_frame_with_style (theme, gtk_widget_get_style_context (widget),
meta_theme_draw_frame_with_style (theme, gtk_widget_get_style_context (widget), widget,
cr, type,flags,
client_width, client_height,
title_layout, text_height,
@@ -5794,15 +5853,13 @@ meta_theme_define_color_constant (MetaTheme *theme,
}
/**
* meta_theme_lookup_color_constant:
* @theme: the theme containing the constant
* @name: the name of the constant
* @value: (out): the string representation of the colour, or %NULL if it
* doesn't exist
*
* Looks up a colour constant.
*
* Returns: %TRUE if it exists, %FALSE otherwise
* \param theme the theme containing the constant
* \param name the name of the constant
* \param value [out] the string representation of the colour, or NULL if it
* doesn't exist
* \return TRUE if it exists, FALSE otherwise
*/
gboolean
meta_theme_lookup_color_constant (MetaTheme *theme,
@@ -5853,13 +5910,11 @@ meta_gtk_widget_get_font_desc (GtkWidget *widget,
}
/**
* meta_pango_font_desc_get_text_height:
* @font_desc: the font
* @context: the context of the font
*
* Returns the height of the letters in a particular font.
*
* Returns: the height of the letters
* \param font_desc the font
* \param context the context of the font
* \return the height of the letters
*/
int
meta_pango_font_desc_get_text_height (const PangoFontDescription *font_desc,
@@ -6455,13 +6510,11 @@ meta_gtk_arrow_to_string (GtkArrowType arrow)
}
/**
* meta_image_fill_type_from_string:
* @str: a string representing a fill_type
*
* Returns a fill_type from a string. The inverse of
* meta_image_fill_type_to_string().
*
* Returns: the fill type, or -1 if it represents no fill type.
* \param str a string representing a fill_type
* \result the fill_type, or -1 if it represents no fill_type.
*/
MetaImageFillType
meta_image_fill_type_from_string (const char *str)
@@ -6475,13 +6528,11 @@ meta_image_fill_type_from_string (const char *str)
}
/**
* meta_image_fill_type_to_string:
* @fill_type: the fill type
*
* Returns a string representation of a fill_type. The inverse of
* meta_image_fill_type_from_string().
*
* Returns: a string representing that type
* \param fill_type the fill type
* \result a string representing that type
*/
const char*
meta_image_fill_type_to_string (MetaImageFillType fill_type)
@@ -6498,14 +6549,13 @@ meta_image_fill_type_to_string (MetaImageFillType fill_type)
}
/**
* gtk_style_shade:
* @a: the starting colour
* @b: (out): the resulting colour
* @k: amount to scale lightness and saturation by
*
* Takes a colour "a", scales the lightness and saturation by a certain amount,
* and sets "b" to the resulting colour.
* gtkstyle.c cut-and-pastage.
*
* \param a the starting colour
* \param b [out] the resulting colour
* \param k amount to scale lightness and saturation by
*/
static void
gtk_style_shade (GdkRGBA *a,
@@ -6542,12 +6592,11 @@ gtk_style_shade (GdkRGBA *a,
}
/**
* rgb_to_hls:
* @r: on input, red; on output, hue
* @g: on input, green; on output, lightness
* @b: on input, blue; on output, saturation
*
* Converts a red/green/blue triplet to a hue/lightness/saturation triplet.
*
* \param r on input, red; on output, hue
* \param g on input, green; on output, lightness
* \param b on input, blue; on output, saturation
*/
static void
rgb_to_hls (gdouble *r,
@@ -6621,12 +6670,11 @@ rgb_to_hls (gdouble *r,
}
/**
* hls_to_rgb:
* @h: on input, hue; on output, red
* @l: on input, lightness; on output, green
* @s: on input, saturation; on output, blue
*
* Converts a hue/lightness/saturation triplet to a red/green/blue triplet.
*
* \param h on input, hue; on output, red
* \param l on input, lightness; on output, green
* \param s on input, saturation; on output, blue
*/
static void
hls_to_rgb (gdouble *h,
@@ -6918,14 +6966,12 @@ draw_bg_gradient_composite (const MetaTextureSpec *bg,
#endif
/**
* meta_theme_earliest_version_with_button:
* @type: the button type
*
* Returns the earliest version of the theme format which required support
* for a particular button. (For example, "shade" first appeared in v2, and
* "close" in v1.)
*
* Returns: the number of the theme format
* \param type the button type
* \return the number of the theme format
*/
guint
meta_theme_earliest_version_with_button (MetaButtonType type)

View File

@@ -588,6 +588,18 @@ meta_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap,
return retval;
}
void
meta_ui_push_delay_exposes (MetaUI *ui)
{
meta_frames_push_delay_exposes (ui->frames);
}
void
meta_ui_pop_delay_exposes (MetaUI *ui)
{
meta_frames_pop_delay_exposes (ui->frames);
}
GdkPixbuf*
meta_ui_get_default_window_icon (MetaUI *ui)
{

View File

@@ -143,6 +143,13 @@ GdkPixbuf* meta_gdk_pixbuf_get_from_pixmap (Pixmap xpixmap,
int width,
int height);
/* Used when we have a server grab and draw all over everything,
* then we need to handle exposes after doing that, instead of
* during it
*/
void meta_ui_push_delay_exposes (MetaUI *ui);
void meta_ui_pop_delay_exposes (MetaUI *ui);
GdkPixbuf* meta_ui_get_default_window_icon (MetaUI *ui);
GdkPixbuf* meta_ui_get_default_mini_icon (MetaUI *ui);