Compare commits

..

22 Commits
3.8.0 ... 3.8.1

Author SHA1 Message Date
Giovanni Campagna
e2a2f12c10 Bump version to 3.8.1
To follow the 3.8.1 stable release of GNOME
2013-04-16 22:08:26 +02:00
Giovanni Campagna
c1bc688a5c WindowList: add a workspace switching menu
Import a copy of the workspace indicator extension, to have it
in the bottom panel.

https://bugzilla.gnome.org/show_bug.cgi?id=694914
2013-04-16 22:00:39 +02:00
Florian Müllner
360ba43579 window-list: Add support for AUTO grouping
In addition to "always" and "never", gnome-panel supported an "auto"
grouping mode, which only started to group items when running out of
available space. It makes sense for us to support the same option in
the window-list extension, so implement it.

https://bugzilla.gnome.org/show_bug.cgi?id=697157
2013-04-16 20:05:27 +02:00
Florian Müllner
1a41b639ef window-list: Don't rely solely on -st-natural-width
-st-natural-width is useful to request a larger-than-usual width,
add back the max-width removed in commit 702cf52cfc to also request
a smaller-than-usual width as necessary.
2013-04-16 20:05:26 +02:00
Florian Müllner
4ebd46c9f0 classic: Style startup spinner differently in classic mode
https://bugzilla.gnome.org/show_bug.cgi?id=693688
2013-04-16 19:28:12 +02:00
Florian Müllner
702cf52cfc window-list: Fill max-width if possible
Items in the window list should take up a fixed amount of space
unless the list is full and items need to shrink. To achieve this,
replace the max-width with the newly added -st-natural-width.

https://bugzilla.gnome.org/show_bug.cgi?id=695392
2013-04-16 18:10:16 +02:00
Matthias Clasen
689dda0515 Revert "window-list: add a workspace switcher"
This reverts commit f86f09955b.

Pushed by accident.
2013-04-08 20:25:33 -04:00
Matthias Clasen
db0b1af99a classic: Tweak separator colors
The previous commit made them too prominent, so tone it down.
2013-04-08 20:21:52 -04:00
Matthias Clasen
cdbb94ccbf classic: Improve menu separators
These were barely showing up in white-on-light-gray, so
turn them dark.

https://bugzilla.gnome.org/show_bug.cgi?id=697596
2013-04-08 19:35:53 -04:00
Giovanni Campagna
f86f09955b window-list: add a workspace switcher
This is the most basic version of a workspace switcher, taken from
Frippery Bottom Panel and adapted. It handles clicks and scrolls,
and does not show window thumbnails or shapes.
Note that, differently from the frippery version, it won't change
the workspace layout, and actually assume a linear vertical layout,
which is then shown horizontally. This is to keep compatibility
with the overview, which uses a vertical layout.

https://bugzilla.gnome.org/show_bug.cgi?id=694914
2013-04-08 10:19:26 -04:00
Милош Поповић
58c36bd719 Small fix in Serbian translation 2013-04-08 15:35:27 +02:00
Florian Müllner
46a216853f window-list: Update icons on icon theme changes
https://bugzilla.gnome.org/show_bug.cgi?id=697400
2013-04-07 21:11:31 +02:00
Florian Müllner
25be4d60b4 app-menu: Update icons on icon theme changes
https://bugzilla.gnome.org/show_bug.cgi?id=697400
2013-04-07 21:11:31 +02:00
Florian Müllner
94941843e3 apps-menu: Allow for keynav between categories/applications
PanelMenu.Button listens to key-press-events on the corresponding
menu to move focus to neighboring buttons on left/right arrow. In
order to allow keynav from the category list on the left to the
application list on the right and vice-versa, we may need to suppress
the parent behavior depending on the currently focused actor, so
overwrite the signal handler accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=693074
2013-04-07 21:11:31 +02:00
Rui Matos
6adeed4e60 window-list: Fix preferences radio buttons not reflecting the setting
When setting GtkRadioButton's group property, its active property is
also set as a by-product. This means that setting these properties
isn't commutative which arguably is a bug in gtk+ but one that we can
easily work around by just switching the order here.

https://bugzilla.gnome.org/show_bug.cgi?id=697495
2013-04-07 21:00:51 +02:00
Florian Müllner
a97d08a2d2 window-list: Set metaWindow for single-window items when grouped
When grouping is enabled, items that are only have a single window
associated are still expected to behave like ungrouped items.
This includes activating windows by DND, which uses the metaWindow
property on the hovered actor's _delegate, so make sure it is set
on AppButtons in single-window mode as well.

https://bugzilla.gnome.org/show_bug.cgi?id=693561
2013-04-04 18:09:46 +02:00
Florian Müllner
91aa1cfbc0 window-list: Activate window on hover during drag operations
Reimplement the common task list behavior of activating windows
when hovering over a task list item during a drag operation.

https://bugzilla.gnome.org/show_bug.cgi?id=693561
2013-04-04 18:09:46 +02:00
Jakub Steiner
e6e31c16b7 make submenus "fit in" for classic
https://bugzilla.gnome.org/show_bug.cgi?id=696960
2013-04-04 16:59:37 +02:00
Debarshi Ray
802c70e14c apps-menu: Improve submenu navigation
Implement a keep-up triangle to keep submenus from changing if the
pointer strays a bit when mousing towards the application list on the
right. The keep-up triangle is only used if the mouse movement is more
horizontal than vertical.

This is similar to the behaviour of GtkMenu, but much more simple
because we are only dealing one specific kind of menu, and hence don't
need to be as generic.

https://bugzilla.gnome.org/show_bug.cgi?id=692913
2013-04-04 14:41:07 +02:00
Giovanni Campagna
d212a2f26d WindowList: fix behavior on fullscreen
LayoutManager will take care of our visibility, but we need to
adjust the message tray anchor point manually. Also, we must not
show ourselves when coming out of the overview if we're in fullscreen.

https://bugzilla.gnome.org/show_bug.cgi?id=696929
2013-04-02 23:05:57 +02:00
Changwoo Ryu
fb77156c88 Updated Korean translation 2013-03-28 02:57:09 +09:00
Fran Diéguez
bfd94b7ae1 Updated Galician translations 2013-03-26 12:51:33 +01:00
14 changed files with 1340 additions and 245 deletions

15
NEWS
View File

@@ -1,3 +1,18 @@
3.8.1
=====
* many improvements to window-list:
- windows are activated by DND over them
- window buttons now have the right size,
even if the text is smaller or larger
than the ideal
- window buttons can be grouped automatically
when the panel becomes crowded
- added a workspace switcher menu
* added keyboard navigation to apps-menu
* small tweaks to classic-mode theme, in particular
for menus
* translation updates (gl, ko, sr)
3.8.0
=====
* translation updates (hu, ja, fi, it)

View File

@@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell-extensions],[3.8.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
AC_INIT([gnome-shell-extensions],[3.8.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=extensions])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([config])

View File

@@ -20,6 +20,7 @@ mode_DATA = $(mode_in_files:.json.in=.json)
themedir = $(datadir)/gnome-shell/theme
theme_DATA = \
$(srcdir)/classic-process-working.svg \
$(srcdir)/classic-toggle-off-intl.svg \
$(srcdir)/classic-toggle-off-us.svg \
$(srcdir)/classic-toggle-on-intl.svg \

View File

@@ -0,0 +1,695 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg5369"
version="1.1"
inkscape:version="0.48.4 r9939"
width="96"
height="48"
sodipodi:docname="process-working-inverse.svg"
style="display:inline">
<metadata
id="metadata5375">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs5373">
<filter
id="filter3278"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3280"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3282"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3284"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3286"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3288"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3290"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3292"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3294"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3296"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3298"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3300"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3302"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3304"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3306"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3308"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3310"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3312"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3314"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3316"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3318"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3320"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3322"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3324"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3326"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3328"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3330"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3332"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3334"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3336"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix3374" />
<feColorMatrix
id="feColorMatrix3376"
type="saturate"
values="1"
result="fbSourceGraphic"
in="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3378"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3338"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3340"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3342"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix3380" />
<feColorMatrix
id="feColorMatrix3382"
type="saturate"
values="1"
result="fbSourceGraphic"
in="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3384"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3344"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3346"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3348"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix3386" />
<feColorMatrix
id="feColorMatrix3388"
type="saturate"
values="1"
result="fbSourceGraphic"
in="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3390"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3350"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3352"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3354"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix3392" />
<feColorMatrix
id="feColorMatrix3394"
type="saturate"
values="1"
result="fbSourceGraphic"
in="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3396"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3356"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3358"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3360"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix3398" />
<feColorMatrix
id="feColorMatrix3400"
type="saturate"
values="1"
result="fbSourceGraphic"
in="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3402"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3362"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3364"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3366"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix3404" />
<feColorMatrix
id="feColorMatrix3406"
type="saturate"
values="1"
result="fbSourceGraphic"
in="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3408"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
<filter
id="filter3368"
inkscape:label="Invert"
x="0"
y="0"
width="1"
height="1"
inkscape:menu="Color"
inkscape:menu-tooltip="Invert colors"
color-interpolation-filters="sRGB">
<feColorMatrix
id="feColorMatrix3370"
type="saturate"
values="1"
result="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3372"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
result="fbSourceGraphic" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix3410" />
<feColorMatrix
id="feColorMatrix3412"
type="saturate"
values="1"
result="fbSourceGraphic"
in="fbSourceGraphic" />
<feColorMatrix
id="feColorMatrix3414"
in="fbSourceGraphic"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 " />
</filter>
</defs>
<sodipodi:namedview
pagecolor="#808080"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1364"
inkscape:window-height="708"
id="namedview5371"
showgrid="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:zoom="5.27"
inkscape:cx="25.33344"
inkscape:cy="36.016983"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid11933"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="tiles"
style="display:inline">
<rect
style="color:#000000;fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3278)"
id="rect12451"
width="24"
height="24"
x="0"
y="0" />
<rect
y="24"
x="0"
height="24"
width="24"
id="rect12453"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3284);opacity:0" />
<rect
y="0"
x="24"
height="24"
width="24"
id="rect12455"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3290);opacity:0.00858369" />
<rect
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3296);opacity:0"
id="rect12457"
width="24"
height="24"
x="24"
y="24" />
<rect
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3302);opacity:0"
id="rect12459"
width="24"
height="24"
x="48"
y="0" />
<rect
y="24"
x="48"
height="24"
width="24"
id="rect12461"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3308);opacity:0" />
<rect
y="0"
x="72"
height="24"
width="24"
id="rect12463"
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3314);opacity:0" />
<rect
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;filter:url(#filter3320);opacity:0"
id="rect12465"
width="24"
height="24"
x="72"
y="24" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="spinner"
sodipodi:insensitive="true">
<g
transform="matrix(0.28240106,0,0,0.28240106,146.92015,-382.52444)"
id="g10450-5"
style="display:inline;filter:url(#filter3326)">
<path
inkscape:connector-curvature="0"
style="opacity:0.6;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m -477.76072,1373.3569 0,9.4717"
id="path18768"
sodipodi:nodetypes="cc"
inkscape:transform-center-y="-4.6808838" />
<path
inkscape:connector-curvature="0"
inkscape:transform-center-y="-3.3099227"
sodipodi:nodetypes="cc"
id="path18770"
d="m -461.0171,1380.2922 -7.23427,7.3824"
style="opacity:0.7;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
inkscape:transform-center-x="-3.3098966" />
<path
inkscape:connector-curvature="0"
inkscape:transform-center-x="-4.6808962"
style="opacity:0.8;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m -454.08163,1397.0359 -9.47165,0"
id="path18772"
sodipodi:nodetypes="cc"
inkscape:transform-center-y="-2.6596956e-05" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc"
id="path18774"
d="m -461.01709,1413.7796 -6.93831,-7.0864"
style="opacity:0.9;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
inkscape:transform-center-x="-3.3098966"
inkscape:transform-center-y="3.3098652" />
<path
inkscape:connector-curvature="0"
inkscape:transform-center-y="4.6808757"
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m -477.76074,1420.715 9e-5,-9.4716"
id="path18776"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc"
id="path18778"
d="m -494.50442,1413.7796 6.79048,-6.9384"
style="opacity:0.3;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
inkscape:transform-center-y="3.3098769"
inkscape:transform-center-x="3.3098883" />
<path
inkscape:connector-curvature="0"
inkscape:transform-center-x="4.6808941"
style="opacity:0.4;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m -501.43987,1397.0359 9.47174,0"
id="path18780"
sodipodi:nodetypes="cc"
inkscape:transform-center-y="-2.6596956e-05" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc"
id="path18782"
d="m -494.5044,1380.2922 6.64243,6.9384"
style="opacity:0.5;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
inkscape:transform-center-x="3.3098902"
inkscape:transform-center-y="-3.3099302" />
</g>
<use
style="display:inline;filter:url(#filter3332)"
x="0"
y="0"
xlink:href="#g10450-5"
id="use4981"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,36,-4.9705636)"
width="400"
height="400" />
<use
style="display:inline;filter:url(#filter3338)"
x="0"
y="0"
xlink:href="#use4981"
id="use4983"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,43.032478,-21.909695)"
width="400"
height="400" />
<use
style="display:inline;filter:url(#filter3344)"
x="0"
y="0"
xlink:href="#use4983"
id="use4985"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,50.081986,-38.904617)"
width="400"
height="400" />
<use
style="display:inline;filter:url(#filter3350)"
x="0"
y="0"
xlink:href="#use4985"
id="use4987"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,-38.919996,-31.872139)"
width="400"
height="400" />
<use
style="display:inline;filter:url(#filter3356)"
x="0"
y="0"
xlink:href="#use4987"
id="use4989"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,52.986628,2.0890543)"
width="400"
height="400" />
<use
style="display:inline;filter:url(#filter3362)"
x="0"
y="0"
xlink:href="#use4989"
id="use4991"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,60.013026,-14.912936)"
width="400"
height="400" />
<use
style="display:inline;filter:url(#filter3368)"
x="0"
y="0"
xlink:href="#use4991"
id="use4993"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,67.022396,-31.859127)"
width="400"
height="400" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -3,9 +3,6 @@
/* FIXME:
- white edge highlight with text-shadow and icon-shadow for panel-button
- better shading of the panel (dark 5%) - impossible without multipoint gradients, image-bg is a hack
- bubble menus: separators
- submenus (network, ...)
- startup notification spinner
*/
#panel {
@@ -100,6 +97,7 @@
#appMenu {
text-shadow: 0 0 0 transparent !important;
spinner-image: url("classic-process-working.svg");
}
/* used for the app menu header only */
@@ -140,10 +138,31 @@
color: #888;
}
.popup-separator-menu-item {
-gradient-height: 1px;
-gradient-start: rgba(0,0,0,0.0);
-gradient-end: rgba(0,0,0,0.15);
-margin-horizontal: 24px;
height: 1px;
padding: 8px 0px;
}
.popup-subtitle-menu-item, .popup-subtitle-menu-item:insensitive {
color: #000;
}
.popup-submenu-menu-item:open {
background-color: #888;
color: #fff;
}
.popup-sub-menu {
background-gradient-start: #ddd;
background-gradient-end: #dfdfdf;
background-gradient-direction: vertical;
box-shadow: inset 0px 1px 3px rgba(0,0,0,0.4);
}
/* CALENDAR */
.calendar {}

View File

@@ -25,7 +25,9 @@ const Convenience = Me.imports.convenience;
const appSys = Shell.AppSystem.get_default();
const APPLICATION_ICON_SIZE = 32;
const HORIZ_FACTOR = 5;
const MENU_HEIGHT_OFFSET = 132;
const NAVIGATION_REGION_OVERSHOOT = 50;
const ActivitiesMenuItem = new Lang.Class({
Name: 'ActivitiesMenuItem',
@@ -53,12 +55,21 @@ const ApplicationMenuItem = new Lang.Class({
this._app = app;
this._button = button;
let icon = this._app.create_icon_texture(APPLICATION_ICON_SIZE);
this.addActor(icon);
this._iconBin = new St.Bin();
this.addActor(this._iconBin);
let appLabel = new St.Label({ text: app.get_name() });
this.addActor(appLabel, { span: -1, expand: true });
this.actor.label_actor = appLabel;
let textureCache = St.TextureCache.get_default();
let iconThemeChangedId = textureCache.connect('icon-theme-changed',
Lang.bind(this, this._updateIcon));
this.actor.connect('destroy', Lang.bind(this,
function() {
textureCache.disconnect(iconThemeChangedId);
}));
this._updateIcon();
},
activate: function(event) {
@@ -76,6 +87,10 @@ const ApplicationMenuItem = new Lang.Class({
_getPreferredWidth: function(actor, forHeight, alloc) {
alloc.min_size = alloc.natural_size = -1;
},
_updateIcon: function() {
this._iconBin.set_child(this._app.create_icon_texture(APPLICATION_ICON_SIZE));
}
});
@@ -88,6 +103,9 @@ const CategoryMenuItem = new Lang.Class({
this._category = category;
this._button = button;
this._oldX = -1;
this._oldY = -1;
let name;
if (this._category)
name = this._category.get_name();
@@ -95,6 +113,7 @@ const CategoryMenuItem = new Lang.Class({
name = _("Favorites");
this.addActor(new St.Label({ text: name }));
this.actor.connect('motion-event', Lang.bind(this, this._onMotionEvent));
},
activate: function(event) {
@@ -103,6 +122,81 @@ const CategoryMenuItem = new Lang.Class({
this.parent(event);
},
_isNavigatingSubmenu: function([x, y]) {
let [posX, posY] = this.actor.get_transformed_position();
if (this._oldX == -1) {
this._oldX = x;
this._oldY = y;
return true;
}
let deltaX = Math.abs(x - this._oldX);
let deltaY = Math.abs(y - this._oldY);
this._oldX = x;
this._oldY = y;
// If it lies outside the x-coordinates then it is definitely outside.
if (posX > x || posX + this.actor.width < x)
return false;
// If it lies inside the menu item then it is definitely inside.
if (posY <= y && posY + this.actor.height >= y)
return true;
// We want the keep-up triangle only if the movement is more
// horizontal than vertical.
if (deltaX * HORIZ_FACTOR < deltaY)
return false;
// Check whether the point lies inside triangle ABC, and a similar
// triangle on the other side of the menu item.
//
// +---------------------+
// | menu item |
// A +---------------------+ C
// P |
// B
// Ensure that the point P always lies below line AC so that we can
// only check for triangle ABC.
if (posY > y) {
let offset = posY - y;
y = posY + this.actor.height + offset;
}
// Ensure that A is (0, 0).
x -= posX;
y -= posY + this.actor.height;
// Check which side of line AB the point P lies on by taking the
// cross-product of AB and AP. See:
// http://stackoverflow.com/questions/3461453/determine-which-side-of-a-line-a-point-lies
if (((this.actor.width * y) - (NAVIGATION_REGION_OVERSHOOT * x)) <= 0)
return true;
return false;
},
_onMotionEvent: function(actor, event) {
if (!Clutter.get_pointer_grab()) {
this._oldX = -1;
this._oldY = -1;
Clutter.grab_pointer(this.actor);
}
this.actor.hover = true;
if (this._isNavigatingSubmenu(event.get_coords()))
return true;
this._oldX = -1;
this._oldY = -1;
this.actor.hover = false;
Clutter.ungrab_pointer();
return false;
},
setActive: function(active, params) {
if (active) {
this._button.selectCategory(this._category, this);
@@ -231,6 +325,17 @@ const ApplicationsButton = new Lang.Class({
return false;
},
_onMenuKeyPress: function(actor, event) {
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_Left || symbol == Clutter.KEY_Right) {
let direction = symbol == Clutter.KEY_Left ? Gtk.DirectionType.LEFT
: Gtk.DirectionType.RIGHT;
if (this.menu.actor.navigate_focus(global.stage.key_focus, direction, false))
return true;
}
return this.parent(actor, event);
},
_onVertSepRepaint: function(area) {
let cr = area.get_context();
let themeNode = area.get_theme_node();

View File

@@ -1,13 +1,17 @@
const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const DND = imports.ui.dnd;
const Hash = imports.misc.hash;
const Lang = imports.lang;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const ExtensionUtils = imports.misc.extensionUtils;
@@ -15,10 +19,12 @@ const Me = ExtensionUtils.getCurrentExtension();
const Convenience = Me.imports.convenience;
const ICON_TEXTURE_SIZE = 24;
const DND_ACTIVATE_TIMEOUT = 500;
const GroupingMode = {
NEVER: 0,
ALWAYS: 1
AUTO: 1,
ALWAYS: 2
};
@@ -46,6 +52,12 @@ const WindowTitle = new Lang.Class({
this._label = new St.Label();
this.actor.add(this._label);
this._textureCache = St.TextureCache.get_default();
this._iconThemeChangedId =
this._textureCache.connect('icon-theme-changed', Lang.bind(this,
function() {
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
}));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._notifyTitleId =
@@ -70,6 +82,7 @@ const WindowTitle = new Lang.Class({
},
_onDestroy: function() {
this._textureCache.disconnect(this._iconThemeChangedId);
this._metaWindow.disconnect(this._notifyTitleId);
this._metaWindow.disconnect(this._notifyMinimizedId);
}
@@ -165,9 +178,9 @@ const AppButton = new Lang.Class({
this._multiWindowTitle = new St.BoxLayout({ x_expand: true });
stack.add_actor(this._multiWindowTitle);
let icon = new St.Bin({ style_class: 'window-button-icon',
child: app.create_icon_texture(ICON_TEXTURE_SIZE) });
this._multiWindowTitle.add(icon);
this._icon = new St.Bin({ style_class: 'window-button-icon',
child: app.create_icon_texture(ICON_TEXTURE_SIZE) });
this._multiWindowTitle.add(this._icon);
this._multiWindowTitle.add(new St.Label({ text: app.get_name() }));
this._menuManager = new PopupMenu.PopupMenuManager(this);
@@ -177,6 +190,12 @@ const AppButton = new Lang.Class({
this._menuManager.addMenu(this._menu);
Main.uiGroup.add_actor(this._menu.actor);
this._textureCache = St.TextureCache.get_default();
this._iconThemeChangedId =
this._textureCache.connect('icon-theme-changed', Lang.bind(this,
function() {
this._icon.child = app.create_icon_texture(ICON_TEXTURE_SIZE);
}));
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
@@ -236,11 +255,13 @@ const AppButton = new Lang.Class({
if (this._singleWindowTitle.visible) {
if (!this._windowTitle) {
this._windowTitle = new WindowTitle(windows[0]);
this.metaWindow = windows[0];
this._windowTitle = new WindowTitle(this.metaWindow);
this._singleWindowTitle.child = this._windowTitle.actor;
}
} else {
if (this._windowTitle) {
this.metaWindow = null;
this._singleWindowTitle.child = null;
this._windowTitle = null;
}
@@ -279,6 +300,7 @@ const AppButton = new Lang.Class({
},
_onDestroy: function() {
this._textureCache.disconnect(this._iconThemeChangedId);
global.window_manager.disconnect(this._switchWorkspaceId);
this._windowTracker.disconnect(this._notifyFocusId);
this.app.disconnect(this._windowsChangedId);
@@ -352,6 +374,106 @@ const TrayButton = new Lang.Class({
}
});
const WorkspaceIndicator = new Lang.Class({
Name: 'WindowList.WorkspaceIndicator',
Extends: PanelMenu.Button,
_init: function(){
this.parent(0.0, _("Workspace Indicator"));
this.actor.add_style_class_name('window-list-workspace-indicator');
this._currentWorkspace = global.screen.get_active_workspace().index();
this.statusLabel = new St.Label({ text: this._getStatusText() });
this.actor.add_actor(this.statusLabel);
this.workspacesItems = [];
this._screenSignals = [];
this._screenSignals.push(global.screen.connect_after('workspace-added', Lang.bind(this,this._updateMenu)));
this._screenSignals.push(global.screen.connect_after('workspace-removed', Lang.bind(this,this._updateMenu)));
this._screenSignals.push(global.screen.connect_after('workspace-switched', Lang.bind(this,this._updateIndicator)));
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
this._updateMenu();
this._settings = new Gio.Settings({ schema: 'org.gnome.desktop.wm.preferences' });
this._settingsChangedId = this._settings.connect('changed::workspace-names', Lang.bind(this, this._updateMenu));
},
destroy: function() {
for (let i = 0; i < this._screenSignals.length; i++)
global.screen.disconnect(this._screenSignals[i]);
if (this._settingsChangedId) {
this._settings.disconnect(this._settingsChangedId);
this._settingsChangedId = 0;
}
this.parent();
},
_updateIndicator: function() {
this.workspacesItems[this._currentWorkspace].setShowDot(false);
this._currentWorkspace = global.screen.get_active_workspace().index();
this.workspacesItems[this._currentWorkspace].setShowDot(true);
this.statusLabel.set_text(this._getStatusText());
},
_getStatusText: function() {
let current = global.screen.get_active_workspace().index();
let total = global.screen.n_workspaces;
return '%d / %d'.format(current + 1, total);
},
_updateMenu: function() {
this.menu.removeAll();
this.workspacesItems = [];
this._currentWorkspace = global.screen.get_active_workspace().index();
for(let i = 0; i < global.screen.n_workspaces; i++) {
let name = Meta.prefs_get_workspace_name(i);
let item = new PopupMenu.PopupMenuItem(name);
item.workspaceId = i;
item.connect('activate', Lang.bind(this, function(item, event) {
this._activate(item.workspaceId);
}));
if (i == this._currentWorkspace)
item.setShowDot(true);
this.menu.addMenuItem(item);
this.workspacesItems[i] = item;
}
this.statusLabel.set_text(this._getStatusText());
},
_activate: function(index) {
if(index >= 0 && index < global.screen.n_workspaces) {
let metaWorkspace = global.screen.get_workspace_by_index(index);
metaWorkspace.activate(global.get_current_time());
}
},
_onScrollEvent: function(actor, event) {
let direction = event.get_scroll_direction();
let diff = 0;
if (direction == Clutter.ScrollDirection.DOWN) {
diff = 1;
} else if (direction == Clutter.ScrollDirection.UP) {
diff = -1;
} else {
return;
}
let newIndex = this._currentWorkspace + diff;
this._activate(newIndex);
},
});
const WindowList = new Lang.Class({
Name: 'WindowList',
@@ -381,6 +503,26 @@ const WindowList = new Lang.Class({
let spacing = node.get_length('spacing');
this._windowList.layout_manager.spacing = spacing;
}));
this._windowList.connect('notify::allocation', Lang.bind(this,
function() {
if (this._groupingMode != GroupingMode.AUTO || this._grouped)
return;
let allocation = this._windowList.allocation;
let width = allocation.x2 - allocation.x1;
let [, natWidth] = this._windowList.get_preferred_width(-1);
if (width < natWidth) {
this._grouped = true;
Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
Lang.bind(this, this._populateWindowList));
}
}));
this._workspaceIndicator = new WorkspaceIndicator();
box.add(this._workspaceIndicator.container);
this._menuManager = new PopupMenu.PopupMenuManager(this);
this._menuManager.addMenu(this._workspaceIndicator.menu);
this._trayButton = new TrayButton();
box.add(this._trayButton.actor);
@@ -423,12 +565,30 @@ const WindowList = new Lang.Class({
this._overviewHidingId =
Main.overview.connect('hiding', Lang.bind(this, function() {
this.actor.show();
this.actor.visible = !Main.layoutManager.primaryMonitor.inFullscreen;
this._updateKeyboardAnchor();
this._updateMessageTrayAnchor();
}));
this._updateMessageTrayAnchor();
this._fullscreenChangedId =
global.screen.connect('in-fullscreen-changed', Lang.bind(this, function() {
this._updateMessageTrayAnchor();
}));
this._dragBeginId =
Main.xdndHandler.connect('drag-begin',
Lang.bind(this, this._onDragBegin));
this._dragEndId =
Main.xdndHandler.connect('drag-end',
Lang.bind(this, this._onDragEnd));
this._dragMonitor = {
dragMotion: Lang.bind(this, this._onDragMotion)
};
this._dndTimeoutId = 0;
this._dndWindow = null;
this._settings = Convenience.getSettings();
this._groupingModeChangedId =
this._settings.connect('changed::grouping-mode',
@@ -438,13 +598,14 @@ const WindowList = new Lang.Class({
_groupingModeChanged: function() {
this._groupingMode = this._settings.get_enum('grouping-mode');
this._grouped = this._groupingMode == GroupingMode.ALWAYS;
this._populateWindowList();
},
_populateWindowList: function() {
this._windowList.destroy_all_children();
if (this._groupingMode == GroupingMode.NEVER) {
if (!this._grouped) {
let windows = Meta.get_window_actors(global.screen);
for (let i = 0; i < windows.length; i++)
this._onWindowAdded(null, windows[i].metaWindow);
@@ -477,7 +638,7 @@ const WindowList = new Lang.Class({
},
_onAppStateChanged: function(appSys, app) {
if (this._groupingMode != GroupingMode.ALWAYS)
if (!this._grouped)
return;
if (app.state == Shell.AppState.RUNNING)
@@ -508,7 +669,7 @@ const WindowList = new Lang.Class({
if (!Shell.WindowTracker.get_default().is_window_interesting(win))
return;
if (this._groupingMode != GroupingMode.NEVER)
if (this._grouped)
return;
let button = new WindowButton(win);
@@ -519,8 +680,14 @@ const WindowList = new Lang.Class({
},
_onWindowRemoved: function(ws, win) {
if (this._groupingMode != GroupingMode.NEVER)
if (this._grouped) {
if (this._groupingMode == GroupingMode.AUTO) {
this._grouped = false;
this._populateWindowList();
}
return;
}
let children = this._windowList.get_children();
for (let i = 0; i < children.length; i++) {
@@ -559,7 +726,61 @@ const WindowList = new Lang.Class({
}
},
_onDragBegin: function() {
DND.addDragMonitor(this._dragMonitor);
},
_onDragEnd: function() {
DND.removeDragMonitor(this._dragMonitor);
this._removeActivateTimeout();
},
_onDragMotion: function(dragEvent) {
if (Main.overview.visible ||
!this.actor.contains(dragEvent.targetActor)) {
this._removeActivateTimeout();
return DND.DragMotionResult.CONTINUE;
}
let hoveredWindow = null;
if (dragEvent.targetActor._delegate)
hoveredWindow = dragEvent.targetActor._delegate.metaWindow;
if (!hoveredWindow ||
this._dndWindow == hoveredWindow)
return DND.DragMotionResult.CONTINUE;
this._removeActivateTimeout();
this._dndWindow = hoveredWindow;
this._dndTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
DND_ACTIVATE_TIMEOUT,
Lang.bind(this, this._activateWindow));
return DND.DragMotionResult.CONTINUE;
},
_removeActivateTimeout: function() {
if (this._dndTimeoutId)
GLib.source_remove (this._dndTimeoutId);
this._dndTimeoutId = 0;
this._dndWindow = null;
},
_activateWindow: function() {
let [x, y] = global.get_pointer();
let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y);
if (this._dndWindow && this.actor.contains(pickedActor))
this._dndWindow.activate(global.get_current_time());
this._dndWindow = null;
this._dndTimeoutId = 0;
return false;
},
_onDestroy: function() {
this._workspaceIndicator.destroy();
Main.ctrlAltTabManager.removeGroup(this.actor);
@@ -584,6 +805,8 @@ const WindowList = new Lang.Class({
Main.overview.disconnect(this._overviewShowingId);
Main.overview.disconnect(this._overviewHidingId);
global.screen.disconnect(this._fullscreenChangedId);
this._settings.disconnect(this._groupingModeChangedId);
let windows = Meta.get_window_actors(global.screen);

View File

@@ -1,7 +1,8 @@
<schemalist gettext-domain="gnome-shell-extensions">
<enum id="org.gnome.shell.extensions.window-list.GroupingMode">
<value value="0" nick="never"/>
<value value="1" nick="always"/>
<value value="1" nick="auto"/>
<value value="2" nick="always"/>
</enum>
<schema id="org.gnome.shell.extensions.window-list"
path="/org/gnome/shell/extensions/window-list/">
@@ -11,7 +12,7 @@
<_summary>When to group windows</_summary>
<_description>
Decides when to group windows from the same application on the
window list. Possible values are "never" and "always".
window list. Possible values are "never", "auto" and "always".
</_description>
</key>
</schema>

View File

@@ -47,6 +47,7 @@ const WindowListPrefsWidget = new GObject.Class({
let modeLabels = {
'never': _("Never group windows"),
'auto': _("Group windows when space is limited"),
'always': _("Always group windows")
};
@@ -59,9 +60,9 @@ const WindowListPrefsWidget = new GObject.Class({
continue;
}
radio = new Gtk.RadioButton({ group: radio,
radio = new Gtk.RadioButton({ active: currentMode == mode,
label: label,
active: currentMode == mode });
group: radio });
grid.add(radio);
radio.connect('toggled', Lang.bind(this, function(button) {

View File

@@ -23,6 +23,7 @@
}
.window-button > StWidget {
-st-natural-width: 250px;
max-width: 250px;
color: #bbb;
background-color: black;
@@ -65,3 +66,12 @@
width: 24px;
height: 24px;
}
.window-list-workspace-indicator {
background-color: rgba(200, 200, 200, .3);
border: 1px solid #cccccc;
}
.window-list-workspace-indicator > StLabel {
padding: 0 2px;
}

View File

@@ -2,13 +2,13 @@
# Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
# Fran Diéguez <frandieguez@gnome.org>, 2011.
# Fran Dieguez <frandieguez@gnome.org>, 2011, 2012.
# Fran Dieguez <frandieguez@gnome.org>, 2011, 2012, 2013.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-27 00:51+0100\n"
"PO-Revision-Date: 2012-12-27 00:52+0200\n"
"POT-Creation-Date: 2013-03-26 12:50+0100\n"
"PO-Revision-Date: 2013-03-26 12:51+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: gnome-l10n-gl@gnome.org\n"
"Language: gl\n"
@@ -57,15 +57,15 @@ msgid "Show only windows in the current workspace"
msgstr "Mostrar só as xanelas na área de traballo actual"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:144
#: ../extensions/alternative-status-menu/extension.js:125
msgid "Suspend"
msgstr "Suspender"
#: ../extensions/alternative-status-menu/extension.js:147
#: ../extensions/alternative-status-menu/extension.js:128
msgid "Hibernate"
msgstr "Hibernar"
#: ../extensions/alternative-status-menu/extension.js:150
#: ../extensions/alternative-status-menu/extension.js:131
msgid "Power Off"
msgstr "Apagar"
@@ -85,6 +85,18 @@ msgstr "Activar hibernación"
msgid "Control the visibility of the Hibernate menu item"
msgstr "Controla a visibilidade do elemento de menú «Hibernar»"
#: ../extensions/apps-menu/extension.js:37
msgid "Activities Overview"
msgstr "Vista xeral de actividades"
#: ../extensions/apps-menu/extension.js:95
msgid "Favorites"
msgstr "Favoritos"
#: ../extensions/apps-menu/extension.js:184
msgid "Applications"
msgstr "Aplicativos"
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
msgid "Application and workspace list"
msgstr "Lista de aplicativos e espazos de traballo"
@@ -190,37 +202,26 @@ msgstr ""
"respectiva, omitindo a disposición inferior por omisión do shell. Se cambia "
"esta configuración deberá reiniciar o shell para que se apliquen os cambios."
#: ../extensions/places-menu/extension.js:46
#: ../extensions/places-menu/extension.js:77
msgid "Places"
msgstr "Lugares"
#: ../extensions/places-menu/extension.js:47
msgid "Devices"
msgstr "Dispositivos"
#: ../extensions/places-menu/extension.js:48
msgid "Bookmarks"
msgstr "Marcadores"
#: ../extensions/places-menu/extension.js:49
msgid "Network"
msgstr "Rede"
#: ../extensions/places-menu/placeDisplay.js:48
#: ../extensions/places-menu/placeDisplay.js:56
#, c-format
msgid "Failed to launch \"%s\""
msgstr "Produciuse un fallo ao iniciar «%s»"
#: ../extensions/places-menu/placeDisplay.js:98
#: ../extensions/places-menu/placeDisplay.js:121
msgid "Computer"
msgstr "Computador"
#: ../extensions/places-menu/placeDisplay.js:199
msgid "Home"
msgstr "Cartafol persoal"
#: ../extensions/places-menu/placeDisplay.js:195
msgid "File System"
msgstr "Sistema de ficheiros"
#: ../extensions/places-menu/placeDisplay.js:199
msgid "Browse network"
#: ../extensions/places-menu/placeDisplay.js:286
msgid "Browse Network"
msgstr "Explorar a rede"
#: ../extensions/systemMonitor/extension.js:213
@@ -239,6 +240,30 @@ msgstr "Nome do tema"
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "O nome do tema, a cargar desde ~/.themes/name/gnome-shell"
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
msgid "When to group windows"
msgstr "Cando agrupar xanelas"
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are \"never\" and \"always\"."
msgstr ""
"Decide cando agrupar as xanelas do mesmo aplicativo na lista de xanelas. Os "
"valores posíbeis son \"never\" (nunca) e \"always\" (sempre)."
#: ../extensions/window-list/prefs.js:30
msgid "Window Grouping"
msgstr "Agrupación de xanelas"
#: ../extensions/window-list/prefs.js:49
msgid "Never group windows"
msgstr "Non agrupar nunca as xanelas"
#: ../extensions/window-list/prefs.js:50
msgid "Always group windows"
msgstr "Agrupar sempre as xanelas"
#: ../extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
msgstr "Indicador de espazo de traballo"
@@ -280,6 +305,18 @@ msgstr "Pantalla"
msgid "Display Settings"
msgstr "Preferencias da pantalla"
#~ msgid "Devices"
#~ msgstr "Dispositivos"
#~ msgid "Bookmarks"
#~ msgstr "Marcadores"
#~ msgid "Network"
#~ msgstr "Rede"
#~ msgid "File System"
#~ msgstr "Sistema de ficheiros"
#~ msgid "The application icon mode."
#~ msgstr "O modo da icona do aplicativo."
@@ -304,9 +341,6 @@ msgstr "Preferencias da pantalla"
#~ msgid "Remove from Favorites"
#~ msgstr "Eliminar dos favoritos"
#~ msgid "Add to Favorites"
#~ msgstr "Engadir aos favoritos"
#~ msgid "Position of the dock"
#~ msgstr "Posición da doca"

311
po/ko.po
View File

@@ -1,82 +1,101 @@
# Korean translation for gnome-shell-extensions.
# Copyright (C) 2012 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
#
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2012.
# Changwoo Ryu <cwryu@debian.org>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2012-03-29 18:00+0000\n"
"PO-Revision-Date: 2012-04-05 02:50+0900\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Project-Id-Version: gnome-shell-extensions\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2013-02-08 12:25+0000\n"
"PO-Revision-Date: 2013-03-28 02:57+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: Korean <gnome-kr@googlegroups.com>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:1
msgid "The alt tab behaviour."
msgstr "Alt-Tab 동작입니다."
#: ../data/gnome-classic.desktop.in.h:1
#: ../data/gnome-classic.session.desktop.in.in.h:1
msgid "GNOME Classic"
msgstr "그놈 클래식"
#: ../extensions/alternate-tab/org.gnome.shell.extensions.alternate-tab.gschema.xml.in.h:2
msgid ""
"Sets the Alt-Tab behaviour. Possible values are: all_thumbnails and "
"workspace_icons. See the configuration dialogs for details."
msgstr "Alt-Tab 동작을 설정합니다. 가능한 값은 all_thumbnails와 workspace_icons 입니다. 자세한 내용은 설정 대화상자를 참고 바랍니다."
#: ../data/gnome-classic.desktop.in.h:2
msgid "This session logs you into GNOME Classic"
msgstr "이 세션을 사용하면 그놈 클래식에 로그인합니다"
#: ../extensions/alternate-tab/prefs.js:27
msgid "All & Thumbnails"
msgstr "전부 그리고 섬네일"
#: ../data/gnome-shell-classic.desktop.in.in.h:1
msgid "GNOME Shell Classic"
msgstr "그놈 셸 클래식"
#: ../extensions/alternate-tab/prefs.js:28
msgid ""
"This mode presents all applications from all workspaces in one selection "
"list. Instead of using the application icon of every window, it uses small "
"thumbnails resembling the window itself."
msgstr "하나의 선택 목록에 모든 작업 공간에 있는 모든 프로그램을 보여주는 모드입니다. 모든 창의 프로그램 아이콘을 사용하는 대신 창 자신과 닮은 작은 섬네일을 사용합니다."
#: ../data/gnome-shell-classic.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "창 관리 및 프로그램 실행"
#: ../extensions/alternate-tab/prefs.js:34
msgid "Workspace & Icons"
msgstr "작업 공간과 아이콘"
#: ../extensions/alternate-tab/prefs.js:20
msgid "Thumbnail only"
msgstr "섬네일만"
#: ../extensions/alternate-tab/prefs.js:35
msgid ""
"This mode let's you switch between the applications of your current "
"workspace and gives you additionally the option to switch to the last used "
"application of your previous workspace. This is always the last symbol in "
"the list and is segregated by a separator/vertical line if available. \n"
"Every window is represented by its application icon."
msgstr ""
"이 모드는 현재 작업 공간의 프로그램 사이를 전환하도록 해주고 이전 작업 공간의 최근 사용한 프로그램으로 전환하는 옵션을 추가로 제공합니다. 항상 목록의 최근 심볼이며, 가능하다면 수직선/분리자로 분리합니다. \n"
"모든 창은 프로그램 아이콘으로 표현합니다."
#: ../extensions/alternate-tab/prefs.js:21
msgid "Application icon only"
msgstr "프로그램 아이콘만"
#: ../extensions/alternate-tab/prefs.js:41
msgid "Move current selection to front before closing the popup"
msgstr "팝업을 닫기 전에 현재 선택을 앞으로 끌어오기"
#: ../extensions/alternate-tab/prefs.js:22
msgid "Thumbnail and application icon"
msgstr "섬네일과 프로그램 아이콘"
#: ../extensions/alternate-tab/prefs.js:58
msgid ""
"The Alternate Tab can be used in different modes, that affect the way "
"windows are chosen and presented."
msgstr ""
"대체 탭은 창을 선택하고 나타내는 방법에 영향을 주는 다른 모드에 사용할 수 있"
"습니다."
#: ../extensions/alternate-tab/prefs.js:37
msgid "Present windows as"
msgstr "현재 창 표시 방법"
#: ../extensions/alternate-tab/prefs.js:62
msgid "Show only windows in the current workspace"
msgstr "현재 작업 공간의 창만 표시합니다"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:64
#: ../extensions/alternative-status-menu/extension.js:144
msgid "Suspend"
msgstr "대기"
msgstr "대기 모드"
#: ../extensions/alternative-status-menu/extension.js:69
#: ../extensions/alternative-status-menu/extension.js:147
msgid "Hibernate"
msgstr "최대 절전"
#: ../extensions/alternative-status-menu/extension.js:74
msgid "Power Off..."
msgstr "전원 끄기..."
#: ../extensions/alternative-status-menu/extension.js:150
msgid "Power Off"
msgstr "전원 끄기"
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
msgid "Enable suspending"
msgstr "대기 모드 사용"
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:2
msgid "Control the visibility of the Suspend menu item"
msgstr "대기 모드 메뉴를 보일지 정합니다"
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:3
msgid "Enable hibernating"
msgstr "최대 절전 사용"
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:4
msgid "Control the visibility of the Hibernate menu item"
msgstr "최대 절전 메뉴를 보일지 정합니다"
#: ../extensions/apps-menu/extension.js:50
msgid "Activities Overview"
msgstr "현재 활동"
#: ../extensions/apps-menu/extension.js:103
msgid "Favorites"
msgstr "즐겨찾기"
#: ../extensions/apps-menu/extension.js:197
msgid "Applications"
msgstr "프로그램"
#: ../extensions/auto-move-windows/org.gnome.shell.extensions.auto-move-windows.gschema.xml.in.h:1
msgid "Application and workspace list"
@@ -86,7 +105,7 @@ msgstr "프로그램 및 작업 공간 목록"
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
msgstr "프로그램 ID (데스크톱 파일 이름), 콜론, 작업 공간 번호로 구성된 문자열 목록"
msgstr "문자열 목록, 각각은 프로그램 ID(데스크톱 파일 이름) 다음에 콜론 뒤에 작업 공간 번호."
#: ../extensions/auto-move-windows/prefs.js:55
msgid "Application"
@@ -109,87 +128,32 @@ msgstr "새 일치 규칙 만들기"
msgid "Add"
msgstr "추가"
#: ../extensions/dock/extension.js:489
msgid "Drag here to add favorites"
msgstr "즐겨찾기에 추가하려면 이곳으로 끌으십시오"
#: ../extensions/drive-menu/extension.js:72
#, c-format
msgid "Ejecting drive '%s' failed:"
msgstr "'%s' 드라이브를 빼는데 실패했습니다:"
#: ../extensions/dock/extension.js:815
msgid "New Window"
msgstr "새 창"
#: ../extensions/drive-menu/extension.js:89
msgid "Removable devices"
msgstr "이동식 장치"
#: ../extensions/dock/extension.js:817
msgid "Quit Application"
msgstr "프로그램 나가기"
#: ../extensions/drive-menu/extension.js:106
msgid "Open File"
msgstr "파일 열기"
#: ../extensions/dock/extension.js:822
msgid "Remove from Favorites"
msgstr "즐겨찾기에서 제거"
#: ../extensions/dock/extension.js:823
msgid "Add to Favorites"
msgstr "즐겨찾기에 추가"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:1
msgid "Position of the dock"
msgstr "도크의 위치"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:2
msgid ""
"Sets the position of the dock in the screen. Allowed values are 'right' or "
"'left'"
msgstr ""
"화면의 도크 위치를 설정합니다. 허용하는 값은 '오른쪽' 또는 '왼쪽'입니다"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:3
msgid "Icon size"
msgstr "아이콘 크기"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:4
msgid "Sets icon size of the dock."
msgstr "도크의 아이콘 크기를 설정합니다."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:5
msgid "Enable/disable autohide"
msgstr "자동 숨김 활성/비활성화"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:6
msgid "Autohide effect"
msgstr "자동 숨김 효과"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:7
msgid ""
"Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' and "
"'move'"
msgstr ""
"도크를 숨기는 효과를 설정합니다. 가능한 값은 'resize', 'rescale' 그리고 "
"'move'가 있습니다."
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:8
msgid "Autohide duration"
msgstr "자동 숨김 경과시간"
#: ../extensions/dock/org.gnome.shell.extensions.dock.gschema.xml.in.h:9
msgid "Sets the time duration of the autohide effect."
msgstr "자동 숨김 효과의 경과 시간을 설정합니다."
#: ../extensions/drive-menu/extension.js:66
msgid "Open file manager"
msgstr "파일 관리자 열기"
# NOTE: 번역하지 마십시오.
#: ../extensions/example/extension.js:17
msgid "Hello, world!"
msgstr "Hello, world!"
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:1
msgid "Alternative greeting text."
msgstr "인사말을 대체합니다."
msgstr "다른 인사말."
#: ../extensions/example/org.gnome.shell.extensions.example.gschema.xml.in.h:2
msgid ""
"If not empty, it contains the text that will be shown when clicking on the "
"panel."
msgstr "비어있지 않다면, 패널을 눌렀을때 보일 텍스트를 포함합니다."
msgstr "빈 값이 아니면, 패널을 눌렀을때 보일 텍스트니다."
#. TRANSLATORS: Example is the name of the extension, should not be
#. translated
@@ -207,57 +171,57 @@ msgstr ""
msgid "Message:"
msgstr "메시지:"
#: ../extensions/gajim/extension.js:227
#, c-format
msgid "%s is away."
msgstr "%s 자리에 없습니다."
#: ../extensions/gajim/extension.js:230
#, c-format
msgid "%s is offline."
msgstr "%s 오프라인입니다."
#: ../extensions/gajim/extension.js:233
#, c-format
msgid "%s is online."
msgstr "%s 온라인입니다."
#: ../extensions/gajim/extension.js:236
#, c-format
msgid "%s is busy."
msgstr "%s 자리 비움입니다."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:1
msgid "Use more screen for windows"
msgstr "창을 위해 더 많은 화면 사용하기"
msgstr "창 더 많은 화면 사용하기"
# natural placement strategy - 그냥 자동으로 표시되는 거. 손으로 옮긴 경우 말고.
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:2
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
"화면 종횡비에 맞춰서 창의 섬네일을 놓기 위해 더 많은 화면을 사용하려 시도하"
"며 상자로 감싸는 내용을 줄이기 위해 한 데 모입니다. 이 설정은 자연 배치 전략"
"에만 적용합니다."
msgstr "창의 섬네일을 표시할 때 더 많은 화면을 사용합니다. 섬네일을 화면 종횡비에 맞추고 섬네일을 통합해 차지하는 크기를 줄입니다. 이 설정은 자동 배치 방식에서만 적용됩니다."
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:3
msgid "Place window captions on top"
msgstr "창 캡션을 상단에 위치"
msgstr "창 이름을 위에"
#: ../extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml.in.h:4
msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
msgstr ""
"참이면, 창의 캡션을 제각각의 섬네일의 위에 표시하며, 하단에 창 캡션을 놓는 쉘"
"의 기본 값을 덮어씁니다. 이 바꾼 설정을 적용하려면 쉘을 다시 시작할 필요가 있"
"습니다."
msgstr "참이면, 창의 이름을 각 섬네일 위에 표시합니다. 셸의 기본값은 아래에 창 이름을 표시합니다. 이 설정을 바꾸면 셸을 다시 시작해야 적용됩니다."
#: ../extensions/places-menu/extension.js:37
msgid "Removable Devices"
msgstr "이동식 장치"
#: ../extensions/places-menu/extension.js:57
msgid "Places"
msgstr "치"
#: ../extensions/places-menu/placeDisplay.js:48
#, c-format
msgid "Failed to launch \"%s\""
msgstr "\"%s\" 실행에 실패했습니다"
#: ../extensions/places-menu/placeDisplay.js:121
msgid "Home"
msgstr "홈"
#: ../extensions/places-menu/placeDisplay.js:195
msgid "Computer"
msgstr "컴퓨터"
#: ../extensions/places-menu/placeDisplay.js:199
msgid "Browse Network"
msgstr "네트워크 찾아보기"
#: ../extensions/systemMonitor/extension.js:213
msgid "CPU"
msgstr "CPU"
#: ../extensions/systemMonitor/extension.js:266
msgid "Memory"
msgstr "메모리"
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:1
msgid "Theme name"
@@ -265,7 +229,29 @@ msgstr "테마 이름"
#: ../extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml.in.h:2
msgid "The name of the theme, to be loaded from ~/.themes/name/gnome-shell"
msgstr "~/.themes/name/gnome-shell로부터 불러올 테마의 이름입니다"
msgstr "테마 이름, ~/.themes/name/gnome-shell 아래에서 읽어들입니다."
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:1
msgid "When to group windows"
msgstr "창 모으기 조건"
#: ../extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml.in.h:2
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are \"never\" and \"always\"."
msgstr "창 목록에서 같은 프로그램의 창을 언제 모을지 결정합니다. 가능한 값은 \"never\" 및 \"always\"입니다."
#: ../extensions/window-list/prefs.js:30
msgid "Window Grouping"
msgstr "창 모으기"
#: ../extensions/window-list/prefs.js:49
msgid "Never group windows"
msgstr "창을 모으지 않기"
#: ../extensions/window-list/prefs.js:50
msgid "Always group windows"
msgstr "항상 창 모으기"
#: ../extensions/workspace-indicator/extension.js:30
msgid "Workspace Indicator"
@@ -284,22 +270,31 @@ msgstr "이름"
msgid "Workspace %d"
msgstr "작업 공간 %d"
# 회전
#: ../extensions/xrandr-indicator/extension.js:30
msgid "Normal"
msgstr "보통"
# 회전
#: ../extensions/xrandr-indicator/extension.js:31
msgid "Left"
msgstr "왼쪽"
# 회전
#: ../extensions/xrandr-indicator/extension.js:32
msgid "Right"
msgstr "오른쪽"
# 회전
#: ../extensions/xrandr-indicator/extension.js:33
msgid "Upside-down"
msgstr "상단 아래"
msgstr " 아래 뒤집기"
#: ../extensions/xrandr-indicator/extension.js:82
msgid "Configure display settings..."
msgstr "디스플레이 설정..."
# 디스플레이를 말한다.
#: ../extensions/xrandr-indicator/extension.js:50
msgid "Display"
msgstr "디스플레이"
#: ../extensions/xrandr-indicator/extension.js:80
msgid "Display Settings"
msgstr "디스플레이 설정"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2013-02-08 12:25+0000\n"
"POT-Creation-Date: 2013-02-20 11:19+0000\n"
"PO-Revision-Date: 2013-02-20 12:19+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : "
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n"
#: ../data/gnome-classic.desktop.in.h:1
@@ -58,17 +58,17 @@ msgid "Show only windows in the current workspace"
msgstr "Приказује само прозоре у текућем радном простору"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:144
#: ../extensions/alternative-status-menu/extension.js:125
msgid "Suspend"
msgstr "Обустави"
#: ../extensions/alternative-status-menu/extension.js:147
#: ../extensions/alternative-status-menu/extension.js:128
msgid "Hibernate"
msgstr "Замрзни"
#: ../extensions/alternative-status-menu/extension.js:150
#: ../extensions/alternative-status-menu/extension.js:131
msgid "Power Off"
msgstr "Угаси"
msgstr "Искључи"
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
msgid "Enable suspending"
@@ -86,17 +86,15 @@ msgstr "Укључује замрзавање"
msgid "Control the visibility of the Hibernate menu item"
msgstr "Управља видљивошћу ставке изборника замрзавања"
#: ../extensions/apps-menu/extension.js:50
#: ../extensions/apps-menu/extension.js:37
msgid "Activities Overview"
msgstr "Преглед активности"
#: ../extensions/apps-menu/extension.js:103
#| msgid "Add to Favorites"
#: ../extensions/apps-menu/extension.js:95
msgid "Favorites"
msgstr "Омиљено"
#: ../extensions/apps-menu/extension.js:197
#| msgid "Application"
#: ../extensions/apps-menu/extension.js:189
msgid "Applications"
msgstr "Програми"
@@ -205,25 +203,25 @@ msgstr ""
"умањених приказа уместо испод приказа. Промена ових подешавања захтева да "
"поново покренете Гномову шкољку."
#: ../extensions/places-menu/extension.js:57
#: ../extensions/places-menu/extension.js:77
msgid "Places"
msgstr "Места"
#: ../extensions/places-menu/placeDisplay.js:48
#: ../extensions/places-menu/placeDisplay.js:56
#, c-format
msgid "Failed to launch \"%s\""
msgstr "Нисам успео да покренем „%s“"
#: ../extensions/places-menu/placeDisplay.js:98
#: ../extensions/places-menu/placeDisplay.js:121
msgid "Home"
msgstr "Личнo"
#: ../extensions/places-menu/placeDisplay.js:195
msgid "Computer"
msgstr "Рачунар"
#: ../extensions/places-menu/placeDisplay.js:199
#| msgid "Browse network"
msgid "Home"
msgstr "Личнo"
#: ../extensions/places-menu/placeDisplay.js:286
msgid "Browse Network"
msgstr "Разгледајте мрежу"

View File

@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2013-02-08 12:25+0000\n"
"POT-Creation-Date: 2013-02-20 11:19+0000\n"
"PO-Revision-Date: 2013-02-20 12:19+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : "
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n"
#: ../data/gnome-classic.desktop.in.h:1
@@ -58,17 +58,17 @@ msgid "Show only windows in the current workspace"
msgstr "Prikazuje samo prozore u tekućem radnom prostoru"
#. add the new entries
#: ../extensions/alternative-status-menu/extension.js:144
#: ../extensions/alternative-status-menu/extension.js:125
msgid "Suspend"
msgstr "Obustavi"
#: ../extensions/alternative-status-menu/extension.js:147
#: ../extensions/alternative-status-menu/extension.js:128
msgid "Hibernate"
msgstr "Zamrzni"
#: ../extensions/alternative-status-menu/extension.js:150
#: ../extensions/alternative-status-menu/extension.js:131
msgid "Power Off"
msgstr "Ugasi"
msgstr "Isključi"
#: ../extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in.h:1
msgid "Enable suspending"
@@ -86,17 +86,15 @@ msgstr "Uključuje zamrzavanje"
msgid "Control the visibility of the Hibernate menu item"
msgstr "Upravlja vidljivošću stavke izbornika zamrzavanja"
#: ../extensions/apps-menu/extension.js:50
#: ../extensions/apps-menu/extension.js:37
msgid "Activities Overview"
msgstr "Pregled aktivnosti"
#: ../extensions/apps-menu/extension.js:103
#| msgid "Add to Favorites"
#: ../extensions/apps-menu/extension.js:95
msgid "Favorites"
msgstr "Omiljeno"
#: ../extensions/apps-menu/extension.js:197
#| msgid "Application"
#: ../extensions/apps-menu/extension.js:189
msgid "Applications"
msgstr "Programi"
@@ -205,25 +203,25 @@ msgstr ""
"umanjenih prikaza umesto ispod prikaza. Promena ovih podešavanja zahteva da "
"ponovo pokrenete Gnomovu školjku."
#: ../extensions/places-menu/extension.js:57
#: ../extensions/places-menu/extension.js:77
msgid "Places"
msgstr "Mesta"
#: ../extensions/places-menu/placeDisplay.js:48
#: ../extensions/places-menu/placeDisplay.js:56
#, c-format
msgid "Failed to launch \"%s\""
msgstr "Nisam uspeo da pokrenem „%s“"
#: ../extensions/places-menu/placeDisplay.js:98
#: ../extensions/places-menu/placeDisplay.js:121
msgid "Home"
msgstr "Lično"
#: ../extensions/places-menu/placeDisplay.js:195
msgid "Computer"
msgstr "Računar"
#: ../extensions/places-menu/placeDisplay.js:199
#| msgid "Browse network"
msgid "Home"
msgstr "Lično"
#: ../extensions/places-menu/placeDisplay.js:286
msgid "Browse Network"
msgstr "Razgledajte mrežu"