diff -Nru dockbarx-0.91.4/CHANGELOG dockbarx-0.92/CHANGELOG --- dockbarx-0.91.4/CHANGELOG 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/CHANGELOG 2016-04-25 04:05:22.000000000 +0000 @@ -1,4 +1,11 @@ Changelog: +0.92 +- DockbarX can now update the window list so that the last used window always is first in the list. (This behavior is now used by default but can be changed in preferences.) +- Fixed issue #5: Icons in Dockbarx disappear after changing workspace. +- Fixed crash at startup if "Ignore windows on other monitors" is checked +- Fixed crash because of calls to the deprecated PIL function tostring(). +- Other small fixes. + 0.91.4 - Fixed issue #4 (bug): DockbarX froze when minimizing applications if certain themes were used. diff -Nru dockbarx-0.91.4/dbx_preference dockbarx-0.92/dbx_preference --- dockbarx-0.91.4/dbx_preference 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/dbx_preference 2016-04-25 04:05:22.000000000 +0000 @@ -776,6 +776,11 @@ #--- Popup page popup_box.set_border_width(5) + self.reorder_window_list_cb = gtk.CheckButton( + _("Reorder the window list so that the last activated window is first in the list.")) + self.reorder_window_list_cb.connect("toggled", self.__checkbutton_toggled, + "reorder_window_list") + popup_box.pack_start(self.reorder_window_list_cb, False, padding=5) self.no_popup_cb = gtk.CheckButton( _("Show window list only if more than one window is open")) self.no_popup_cb.connect("toggled", self.__checkbutton_toggled, @@ -883,6 +888,28 @@ vbox.pack_start(self.locked_list_no_overlap_cb, False) popup_box.pack_start(vbox, False, padding=5) + # "Select" action options frame + vbox = gtk.VBox() + label1 = gtk.Label("%s"%_("\"Select next\" behavior")) + label1.set_alignment(0,0.5) + label1.set_use_markup(True) + vbox.pack_start(label1, False) + self.select_next_use_lastest_active_cb = gtk.CheckButton(_("\"Select next\" selects the most recently used window in the group")) + self.select_next_use_lastest_active_cb.set_tooltip_text(_("If set, \"Select Next\" action selects the window that has been used most recently, otherwise it activates the next window in the window list.")) + self.select_next_use_lastest_active_cb.connect("toggled", + self.__checkbutton_toggled, + "select_next_use_lastest_active") + vbox.pack_start(self.select_next_use_lastest_active_cb, False) + self.select_next_activate_immediately_cb = gtk.CheckButton( + _("Use no delay with \"Select next\"")) + self.select_next_activate_immediately_cb.set_tooltip_text(_("If set, \"Select Next\" action selects the next window immediately without any delay")) + self.select_next_activate_immediately_cb.connect("toggled", + self.__checkbutton_toggled, + "select_next_activate_immediately") + vbox.pack_start(self.select_next_activate_immediately_cb, False) + + popup_box.pack_start(vbox, False, padding=5) + #--- Groupbutton page frame = gtk.Frame(_("Group button actions")) @@ -962,7 +989,6 @@ table = gtk.Table(True) table.set_border_width(5) - label = gtk.Label(_("One window open")) label.set_alignment(1,0.5) self.select_one_cg = gtk.combo_box_new_text() @@ -1000,26 +1026,6 @@ frame.add(hbox) groupbutton_box.pack_start(frame, False) - # "Select" action options frame - vbox = gtk.VBox() - frame = gtk.Frame(_("\"Select next\" options")) - frame.set_border_width(5) - self.select_next_use_lastest_active_cb = gtk.CheckButton(_("\"Select next\" selects the most recently used window in the group")) - self.select_next_use_lastest_active_cb.set_tooltip_text(_("If set, \"Select Next\" action selects the window that has been used most recently, otherwise it activates the next window in the window list.")) - self.select_next_use_lastest_active_cb.connect("toggled", - self.__checkbutton_toggled, - "select_next_use_lastest_active") - vbox.pack_start(self.select_next_use_lastest_active_cb, False) - self.select_next_activate_immediately_cb = gtk.CheckButton( - _("Use no delay with \"Select next\"")) - self.select_next_activate_immediately_cb.set_tooltip_text(_("If set, \"Select Next\" action selects the next window immediately without any delay")) - self.select_next_activate_immediately_cb.connect("toggled", - self.__checkbutton_toggled, - "select_next_activate_immediately") - vbox.pack_start(self.select_next_activate_immediately_cb, False) - - frame.add(vbox) - groupbutton_box.pack_start(frame, False) #--- Plugins page self.media_buttons_cb = gtk.CheckButton(_("Use media buttons")) @@ -1507,6 +1513,8 @@ self.delay_spin.set_value(self.globals.settings["popup_delay"]) self.second_delay_spin.set_value( self.globals.settings["second_popup_delay"]) + self.reorder_window_list_cb.set_active( + self.globals.settings["reorder_window_list"]) self.no_popup_cb.set_active( self.globals.settings["no_popup_for_one_window"]) self.show_tooltip_cb.set_active( @@ -1640,8 +1648,12 @@ self.select_next_activate_immediately_cb.set_active( self.globals.settings["select_next_activate_immediately"]) + self.select_next_activate_immediately_cb.set_sensitive( + not self.globals.settings["reorder_window_list"]) self.select_next_use_lastest_active_cb.set_active( self.globals.settings["select_next_use_lastest_active"]) + self.select_next_use_lastest_active_cb.set_sensitive( + not self.globals.settings["reorder_window_list"]) # Themes model = self.theme_combo.get_model() diff -Nru dockbarx-0.91.4/debian/changelog dockbarx-0.92/debian/changelog --- dockbarx-0.91.4/debian/changelog 2015-03-11 14:01:37.000000000 +0000 +++ dockbarx-0.92/debian/changelog 2016-04-25 12:02:11.000000000 +0000 @@ -1,5 +1,28 @@ -dockbarx (0.91.4-1~webupd8~trusty1) trusty; urgency=medium +dockbarx (0.92-1~webupd8~trusty1) trusty; urgency=medium + * New upstream release + * Bump Standards-Version to 3.9.7 + + -- Alin Andrei Mon, 25 Apr 2016 14:48:53 +0200 + +dockbarx (0.91.4-1~webupd8~xenial3) xenial; urgency=medium + + * Update for Xenial + * Quickly switch from python-support (no longer available) to + dh_python + * Drop awn applet package + + -- Alin Andrei Wed, 12 Aug 2015 13:36:19 +0200 + +dockbarx (0.91.4-1~webupd8~wily2) wily; urgency=medium + + * Depend on zeitgeist, python-zeitgeist + + -- Alin Andrei Wed, 12 Aug 2015 13:36:19 +0200 + +dockbarx (0.91.4-1~webupd8~vivid1) vivid; urgency=medium + + * Upload for Vivid * Depend on python-pil -- Alin Andrei Wed, 11 Mar 2015 14:45:31 +0200 diff -Nru dockbarx-0.91.4/debian/control dockbarx-0.92/debian/control --- dockbarx-0.91.4/debian/control 2015-03-11 14:00:16.000000000 +0000 +++ dockbarx-0.92/debian/control 2016-04-25 11:50:15.000000000 +0000 @@ -2,9 +2,9 @@ Section: gnome Priority: extra Maintainer: Alin Andrei -Build-Depends: cdbs (>= 0.4.49), debhelper (>= 7), python-support (>= 0.6), python +Build-Depends: cdbs (>= 0.4.49), debhelper (>= 7), dh-python, python X-Python-Version: >= 2.6 -Standards-Version: 3.9.5 +Standards-Version: 3.9.7 Homepage: http://launchpad.net/dockbar Package: dockbarx @@ -17,7 +17,7 @@ Package: dockbarx-common Architecture: all -Depends: ${misc:Depends}, ${python:Depends}, python-wnck, python-keybinder, python-numpy, python-xlib, python-gconf, python-pil +Depends: ${misc:Depends}, ${python:Depends}, python-wnck, python-keybinder, python-numpy, python-xlib, python-gconf, python-pil, zeitgeist, python-zeitgeist Recommends: zeitgeist (>= 0.4), dockmanager, dockmanager-daemon, libdesktop-agnostic-cfg-gconf, libdesktop-agnostic-vfs-gio Conflicts: dockbarx (<< 0.90.2), dockbarx-themes-extra (<< 2.0) Replaces: dockbarx (<< 0.90.2), dockbarx-themes-extra (<< 2.0) @@ -41,12 +41,12 @@ Description: The DockBarX applet for GNOME panel The DockBarX GNOME panel applet package -Package: awn-applet-dockbarx -Architecture: all -Depends: ${misc:Depends}, dockbarx-common, python-awn | python-awn-trunk -Conflicts: dockbarx (<< 0.39.6.1) -Description: Avant Window Navigator DockBarX applet - Avant Window Navigator support for DockBarX +#Package: awn-applet-dockbarx +#Architecture: all +#Depends: ${misc:Depends}, dockbarx-common, python-awn | python-awn-trunk +#Conflicts: dockbarx (<< 0.39.6.1) +#Description: Avant Window Navigator DockBarX applet +# Avant Window Navigator support for DockBarX Package: dockbarx-applet-appindicator Architecture: all diff -Nru dockbarx-0.91.4/debian/dockbarx.docs dockbarx-0.92/debian/dockbarx.docs --- dockbarx-0.91.4/debian/dockbarx.docs 2011-09-19 18:22:44.000000000 +0000 +++ dockbarx-0.92/debian/dockbarx.docs 2016-04-25 12:02:05.000000000 +0000 @@ -1,2 +1,2 @@ CHANGELOG -README +README.md diff -Nru dockbarx-0.91.4/debian/rules dockbarx-0.92/debian/rules --- dockbarx-0.91.4/debian/rules 2011-09-19 18:22:44.000000000 +0000 +++ dockbarx-0.92/debian/rules 2016-03-08 15:00:40.000000000 +0000 @@ -1,19 +1,21 @@ #!/usr/bin/make -f # -*- makefile -*- -DEB_PYTHON_SYSTEM = pysupport -DEB_PYTHON_MODULE_PACKAGES = dockbarx -DEB_PYTHON_PACKAGES_EXCLUDE = awn-applet-dockbarx - -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/python-distutils.mk - -binary-install/dockbarx:: - install -D --mode=0644 "Theming HOWTO" "debian/dockbarx/usr/share/doc/dockbarx/Theming HOWTO" - -install/awn-applet-dockbarx:: - install -D --mode=0644 "AWN/DockBarX.desktop" "debian/tmp/usr/share/avant-window-navigator/applets/DockBarX.desktop" - install -D --mode=0644 "AWN/DockBarX/DockBarX.py" "debian/tmp/usr/share/avant-window-navigator/applets/DockBarX/DockBarX.py" +%: + dh $@ -clean:: - rm -rf build +#DEB_PYTHON_MODULE_PACKAGES = dockbarx +#DEB_PYTHON_PACKAGES_EXCLUDE = awn-applet-dockbarx + +#include /usr/share/cdbs/1/rules/debhelper.mk +#include /usr/share/cdbs/1/class/python-distutils.mk + +#binary-install/dockbarx:: +# install -D --mode=0644 "Theming HOWTO" "debian/dockbarx/usr/share/doc/dockbarx/Theming HOWTO" + +#install/awn-applet-dockbarx:: +# install -D --mode=0644 "AWN/DockBarX.desktop" "debian/tmp/usr/share/avant-window-navigator/applets/DockBarX.desktop" +# install -D --mode=0644 "AWN/DockBarX/DockBarX.py" "debian/tmp/usr/share/avant-window-navigator/applets/DockBarX/DockBarX.py" + +#clean:: +# rm -rf build diff -Nru dockbarx-0.91.4/dockbarx/common.py dockbarx-0.92/dockbarx/common.py --- dockbarx-0.91.4/dockbarx/common.py 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/dockbarx/common.py 2016-04-25 04:05:22.000000000 +0000 @@ -581,6 +581,7 @@ "locked_list_in_menu": True, "locked_list_no_overlap": False, "window_title_width": 140, + "reorder_window_list": True, "select_one_window": "select or minimize window", "select_multiple_windows": "select or minimize all", diff -Nru dockbarx-0.91.4/dockbarx/dockbar.py dockbarx-0.92/dockbarx/dockbar.py --- dockbarx-0.91.4/dockbarx/dockbar.py 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/dockbarx/dockbar.py 2016-04-25 04:05:22.000000000 +0000 @@ -37,7 +37,7 @@ import i18n _ = i18n.language.gettext -VERSION = "0.91.4" +VERSION = "0.92" ATOM_WM_CLASS = gtk.gdk.atom_intern("WM_CLASS") @@ -51,7 +51,8 @@ "geogebra-geogebra": "geogebra", "tuxpaint.tuxpaint": "tuxpaint", "quodlibet":"quod libet", - "xfce4-terminal":"exo-terminal-emulator" + "xfce4-terminal":"exo-terminal-emulator", + "xbmc.bin":"xbmc" } # Media player name substitutes (for non-identical resclass/dbus-address pairs) diff -Nru dockbarx-0.91.4/dockbarx/groupbutton.py dockbarx-0.92/dockbarx/groupbutton.py --- dockbarx-0.91.4/dockbarx/groupbutton.py 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/dockbarx/groupbutton.py 2016-04-25 04:05:22.000000000 +0000 @@ -168,8 +168,8 @@ self.root_xid = int(gtk.gdk.screen_get_default().get_root_window().xid) self.update_name() - monitor = self.get_monitor() - mgeo = gtk.gdk.screen_get_default().get_monitor_geometry(monitor) + self.monitor = self.get_monitor() + mgeo = gtk.gdk.screen_get_default().get_monitor_geometry(self.monitor) self.monitor_aspect_ratio = float(mgeo.width) / mgeo.height @@ -423,6 +423,10 @@ if window == wnck_window: window.set_active(True) has_active = True + if self.globals.settings["reorder_window_list"]: + self.remove(window) + self.insert(0, window) + self.window_list.reorder_item(0, window.item) else: window.set_active(False) if has_active != self.has_active_window: @@ -445,11 +449,11 @@ self.button.update_state_if_shown() def window_monitor_changed(self): - self.button.update_state_if_shown() - self.button.set_icon_geo() + self.button.update_state() + self.button.set_icongeo() def window_desktop_changed(self): - self.button.update_state_if_shown() + self.button.update_state() self.nextlist = None self.button.set_icongeo() if self.locked_popup: @@ -959,46 +963,46 @@ # Make a list of the windows in group with the bottom most # first and top most last. - # If mode is other than move + # If mode is other than "move" # windows on other workspaces is put in a separate list instead. # grtop is set to true if not all windows in the group is the # topmost windows. for wnck_window in windows_stacked: - if (not wnck_window.is_skip_tasklist()) and \ - (not wnck_window.is_minimized()) and \ - (wnck_window.get_window_type() in [wnck.WINDOW_NORMAL, - wnck.WINDOW_DIALOG]): - if wnck_window in self: - ignored = False - if not wnck_window.is_pinned() \ - and wnck_window.get_workspace() is not None \ - and active_workspace != wnck_window.get_workspace(): - if mode == "move": - ws = screen.get_active_workspace() - wnck_window.move_to_workspace(ws) - moved = True - else: # mode == "ignore" or "switch" - ignored = True - ignorelist.append(self[wnck_window]) - if not wnck_window.is_in_viewport(screen.get_active_workspace()): - if mode == "move": - wx, wy, ww, wh = wnck_window.get_geometry() - wnck_window.set_geometry(0,3,wx%screen.get_width(), - wy%screen.get_height(), - ww,wh) - moved = True - else: # mode == "ignore" or "switch" - ignored = True - ignorelist.append(self[wnck_window]) - - if not ignored: - grp_win_stacked.append(self[wnck_window]) - if wingr == False: - wingr = True - grtop = True - else: - if wingr: - grtop = False + if wnck_window.is_skip_tasklist() or \ + wnck_window.is_minimized() or \ + not (wnck_window.get_window_type() in [wnck.WINDOW_NORMAL, wnck.WINDOW_DIALOG]): + continue + if not wnck_window in self: + if wingr: + grtop = False + continue + ignored = False + if not wnck_window.is_pinned() \ + and wnck_window.get_workspace() is not None \ + and active_workspace != wnck_window.get_workspace(): + if mode == "move": + ws = screen.get_active_workspace() + wnck_window.move_to_workspace(ws) + moved = True + else: # mode == "ignore" or "switch" + ignored = True + ignorelist.append(self[wnck_window]) + if not wnck_window.is_in_viewport(screen.get_active_workspace()): + if mode == "move": + wx, wy, ww, wh = wnck_window.get_geometry() + wnck_window.set_geometry(0,3,wx%screen.get_width(), + wy%screen.get_height(), + ww,wh) + moved = True + else: # mode == "ignore" or "switch" + ignored = True + ignorelist.append(self[wnck_window]) + + if not ignored: + grp_win_stacked.append(self[wnck_window]) + if wingr == False: + wingr = True + grtop = True if not grp_win_stacked and mode == "switch": # Put the windows in dictionaries according to workspace and @@ -1117,7 +1121,9 @@ # Make the list and pick the window. windows_stacked = self.screen.get_windows_stacked() windows = self.get_windows() - if self.globals.settings["select_next_use_lastest_active"]: + snula = self.globals.settings["select_next_use_lastest_active"] + rwl = self.globals.settings["reorder_window_list"] + if snula and not rwl: self.nextlist = [] minimized_list = [] for window in windows_stacked: @@ -1164,7 +1170,8 @@ return self.popup.show() - if self.globals.settings["select_next_activate_immediately"]: + if self.globals.settings["select_next_activate_immediately"] and \ + not self.globals.settings["reorder_window_list"]: window.action_select_window(widget, event) else: if self.scrollpeak_window: @@ -1455,8 +1462,9 @@ # Hide the button if no windows are on the current screen. self.hide() return - #~ else: - #~ self.show() # Todo: is this needed. + else: + # This is necessary if desktop changed. + self.show() state_type = 0 @@ -1895,7 +1903,8 @@ if self.globals.settings["opacify"] \ and self.globals.settings["opacify_group"]: self.deopacify(100) - if not self.globals.settings["select_next_activate_immediately"] and \ + if (self.globals.settings["reorder_window_list"] or \ + not self.globals.settings["select_next_activate_immediately"]) and\ group.scrollpeak_sid is not None: group.scrollpeak_select() @@ -2426,6 +2435,9 @@ item.update_preview() self.window_box.pack_start(item, True, True) + def reorder_item(self, index, item): + self.window_box.reorder_child(item, index) + def shrink_size(self): """This function is called if the window list is too big.""" if self.show_previews: diff -Nru dockbarx-0.91.4/dockbarx/iconfactory.py dockbarx-0.92/dockbarx/iconfactory.py --- dockbarx-0.91.4/dockbarx/iconfactory.py 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/dockbarx/iconfactory.py 2016-04-25 04:05:22.000000000 +0000 @@ -603,7 +603,7 @@ ctx.set_operator(cairo.OPERATOR_SOURCE) ctx.paint_with_alpha(0) return new - + def __command_get_pixmap(self, surface, name): if surface is None: if self.dockbar_r().orient in ("left", "right"): @@ -645,7 +645,7 @@ # Combines left half of surface with right half of surface2. # The transition between the two halves are soft. - # Degrees keyword are kept of compability reasons. + # Degrees keyword are kept of compability reasons. w = surface.get_width() h = surface.get_height() if pix1=="self": @@ -719,7 +719,7 @@ ctx.set_source_surface(surface) ctx.paint_with_alpha(alpha) return new - + def __command_composite(self, surface, bg, fg, opacity="100", xoffset="0", yoffset="0", angle="0"): @@ -804,7 +804,7 @@ new = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h) ctx = cairo.Context(new) - ctx.translate(w/2.0, h/2.0) + ctx.translate(w/2.0, h/2.0) ctx.rotate(a) ctx.translate(-w0/2.0, -h0/2.0) ctx.set_source_surface(surface, 0,0) @@ -946,13 +946,13 @@ """Transform a PIL Image into a Cairo ImageSurface.""" # This function is only supposed to work with little endinan - # systems. Could that be a problem ever? + # systems. Could that be a problem ever? if im.mode != 'RGBA': im = im.convert('RGBA') - s = im.tostring('raw', 'BGRA') + s = im.tobytes('raw', 'BGRA') a = array.array('B', s) - dest = cairo.ImageSurface(cairo.FORMAT_ARGB32, + dest = cairo.ImageSurface(cairo.FORMAT_ARGB32, im.size[0], im.size[1]) ctx = cairo.Context(dest) non_premult_src_wo_alpha = cairo.ImageSurface.create_for_data( diff -Nru dockbarx-0.91.4/dockbarx/theme.py dockbarx-0.92/dockbarx/theme.py --- dockbarx-0.91.4/dockbarx/theme.py 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/dockbarx/theme.py 2016-04-25 04:05:22.000000000 +0000 @@ -404,7 +404,7 @@ def get(self, key, default=None): return self.settings.get(key, default) - + def find_styles(self): # Reads the styles from /usr/share/dockbarx/themes/popup_styles and # ~/.dockbarx/themes/popup_styles and returns a dict @@ -479,7 +479,7 @@ # Remove quote signs if value[0] in ("\"", "'") and value[-1] in ("\"", "'"): value = value[1:-1] - + if key == "name": name = value continue @@ -600,7 +600,7 @@ def get(self, key, default=None): return self.settings.get(key, default) - + def get_bg(self, bar, size=None): if size is None: return self.bg[bar] @@ -686,7 +686,7 @@ # Remove quote signs if value[0] in ("\"", "'") and value[-1] in ("\"", "'"): value = value[1:-1] - + if key == "name": name = value continue @@ -724,7 +724,7 @@ elif value[0] != "#": value = "#%s" % value self.default_colors[key] = value - + # Inform rest of dockbar about the reload. self.globals.set_dock_theme(self.theme_path.rsplit("/", 1)[-1], self.default_colors) @@ -797,13 +797,13 @@ """Transform a PIL Image into a Cairo ImageSurface.""" # This function is only supposed to work with little endinan - # systems. Could that be a problem ever? + # systems. Could that be a problem ever? if im.mode != 'RGBA': im = im.convert('RGBA') - s = im.tostring('raw', 'BGRA') + s = im.tobytes('raw', 'BGRA') a = array.array('B', s) - dest = cairo.ImageSurface(cairo.FORMAT_ARGB32, + dest = cairo.ImageSurface(cairo.FORMAT_ARGB32, im.size[0], im.size[1]) ctx = cairo.Context(dest) non_premult_src_wo_alpha = cairo.ImageSurface.create_for_data( diff -Nru dockbarx-0.91.4/dockbarx/windowbutton.py dockbarx-0.92/dockbarx/windowbutton.py --- dockbarx-0.91.4/dockbarx/windowbutton.py 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/dockbarx/windowbutton.py 2016-04-25 04:05:22.000000000 +0000 @@ -63,6 +63,7 @@ self.xid = self.wnck.get_xid() self.is_active_window = False self.on_current_desktop = self.is_on_current_desktop() + self.monitor = self.get_monitor() self.state_changed_event = self.wnck.connect("state-changed", self.__on_window_state_changed) @@ -108,13 +109,7 @@ if not self.globals.settings["show_only_current_monitor"]: return 0 gdk_screen = gtk.gdk.screen_get_default() - win = gtk.gdk.window_lookup(self.wnck.get_xid()) - if win is None: - logger.warning("Error: couldn't find out on which " + \ - "monitor window \"%s\" is located" % self.wnck.get_name()) - logger.warning("Guessing it's monitor 0") - return 0 - x, y, w, h, bit_depth = win.get_geometry() + x, y, w, h = self.wnck.get_geometry() return gdk_screen.get_monitor_at_point(x + (w / 2), y + (h / 2)) def destroy(self): diff -Nru dockbarx-0.91.4/make_translate_template.sh dockbarx-0.92/make_translate_template.sh --- dockbarx-0.91.4/make_translate_template.sh 1970-01-01 00:00:00.000000000 +0000 +++ dockbarx-0.92/make_translate_template.sh 2016-04-25 04:05:22.000000000 +0000 @@ -0,0 +1,3 @@ +#!/bin/sh +# Run this to make a dockbarx.pot template file for translation of dockbarx. +xgettext --language=Python --keyword=_ --output=po/dockbarx.pot --from-code=UTF-8 `find . -name "*.py" -not -path "./build/*"` dockx dbx_preference dockbarx_factory diff -Nru dockbarx-0.91.4/po/dockbarx.pot dockbarx-0.92/po/dockbarx.pot --- dockbarx-0.91.4/po/dockbarx.pot 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/po/dockbarx.pot 2016-04-25 04:05:22.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-10-14 15:17+0300\n" +"POT-Creation-Date: 2014-06-25 19:47+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,132 +17,237 @@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: dockbarx/theme.py:174 dbx_preference:1448 -msgid "" -"No working themes found in /usr/share/dockbarx/themes or ~/.dockbarx/themes" +#: dockx_applets/clock.py:132 +msgid "Font:" msgstr "" -#: dockbarx/groupbutton.py:331 dockbarx/groupbutton.py:623 -#: dockbarx/groupbutton.py:834 -msgid "_Launch application" +#: dockx_applets/clock.py:134 +msgid "Clock font" msgstr "" -#: dockbarx/groupbutton.py:625 dockbarx/groupbutton.py:833 -msgid "_Pin application" +#: dockx_applets/clock.py:138 +msgid "Color:" msgstr "" -#: dockbarx/groupbutton.py:627 dockbarx/groupbutton.py:832 -msgid "Make custom launcher" +#: dockx_applets/clock.py:141 +msgid "Font color" msgstr "" -#: dockbarx/groupbutton.py:629 dockbarx/groupbutton.py:831 -msgid "Unpin application" +#: dockx_applets/clock.py:145 +msgid "Show Date" msgstr "" -#: dockbarx/groupbutton.py:630 dockbarx/groupbutton.py:631 -#: dockbarx/groupbutton.py:632 -msgid "Properties" +#: dockx_applets/clock.py:153 +msgid "Use custom clock" msgstr "" -#: dockbarx/groupbutton.py:631 dockbarx/groupbutton.py:830 -msgid "Edit Identifier" +#: dockx_applets/clock.py:171 +msgid "Text direction: " msgstr "" -#: dockbarx/groupbutton.py:632 dockbarx/groupbutton.py:829 -msgid "Edit Launcher" +#: dockx_applets/clock.py:174 dockx_applets/clock.py:229 +msgid "default" msgstr "" -#: dockbarx/groupbutton.py:671 -msgid "Recent" +#: dockx_applets/clock.py:175 dockx_applets/clock.py:230 +msgid "left-right" msgstr "" -#: dockbarx/groupbutton.py:672 -msgid "Most used" +#: dockx_applets/clock.py:176 dockx_applets/clock.py:231 +msgid "top-down" msgstr "" -#: dockbarx/groupbutton.py:673 -msgid "Related" +#: dockx_applets/clock.py:177 dockx_applets/clock.py:232 +msgid "bottom-up" msgstr "" -#: dockbarx/groupbutton.py:691 dockbarx/groupbutton.py:836 -msgid "Remove locked list" +#: dockx_applets/namebar_window_title.py:166 dockx_applets/namebar.py:206 +msgid "Alignment: " msgstr "" -#: dockbarx/groupbutton.py:694 dockbarx/groupbutton.py:835 -msgid "Show locked list" +#: dockx_applets/namebar_window_title.py:169 +#: dockx_applets/namebar_window_title.py:239 dockx_applets/namebar.py:209 +#: dockx_applets/namebar.py:298 dbx_preference:1241 +msgid "left" msgstr "" -#: dockbarx/groupbutton.py:701 dockbarx/groupbutton.py:816 -#: dockbarx/groupbutton.py:818 dockbarx/groupbutton.py:821 -#: dockbarx/groupbutton.py:824 dockbarx/groupbutton.py:827 -msgid " all windows" +#: dockx_applets/namebar_window_title.py:169 +#: dockx_applets/namebar_window_title.py:240 dockx_applets/namebar.py:209 +#: dockx_applets/namebar.py:299 dbx_preference:1225 +msgid "centered" msgstr "" -#: dockbarx/groupbutton.py:703 dockbarx/groupbutton.py:826 -#: dockbarx/groupbutton.py:827 dockbarx/windowbutton.py:634 -msgid "Un_minimize" +#: dockx_applets/namebar_window_title.py:169 +#: dockx_applets/namebar_window_title.py:241 dockx_applets/namebar.py:209 +#: dockx_applets/namebar.py:300 dbx_preference:1241 +msgid "right" msgstr "" -#: dockbarx/groupbutton.py:705 dockbarx/groupbutton.py:823 -#: dockbarx/groupbutton.py:824 dockbarx/windowbutton.py:631 -msgid "_Minimize" +#: dockx_applets/volume-control.py:48 +msgid "Volume Control" msgstr "" -#: dockbarx/groupbutton.py:709 dockbarx/groupbutton.py:817 -#: dockbarx/groupbutton.py:818 dockbarx/windowbutton.py:643 -msgid "Ma_ximize" +#: dockx_applets/volume-control.py:49 +msgid "Applet to control your computer's volume" msgstr "" -#: dockbarx/groupbutton.py:712 dockbarx/groupbutton.py:820 -#: dockbarx/groupbutton.py:821 dockbarx/windowbutton.py:646 -msgid "Unma_ximize" +#: dockx_applets/volume-control.py:54 +msgid "System theme" msgstr "" -#: dockbarx/groupbutton.py:713 dockbarx/groupbutton.py:815 -#: dockbarx/groupbutton.py:816 dockbarx/windowbutton.py:652 -msgid "_Close" +#: dockx_applets/volume-control.py:72 +#, python-format +msgid "" +"Install the appropriate plug-ins for one or more of the following GStreamer " +"elements: %s." msgstr "" -#: dockbarx/groupbutton.py:2454 dockbarx/dockbar.py:1127 +#: dockx_applets/volume-control.py:73 +msgid "Could not find any devices." +msgstr "" + +#: dockx_applets/volume-control.py:333 +msgid "Open Volume Control" +msgstr "" + +#: dockx_applets/volume-control.py:342 +msgid "Preference" +msgstr "" + +#: dockx_applets/volume-control.py:347 +msgid "volume control" +msgstr "" + +#: dockx_applets/volume-control.py:565 +msgid "No GStreamer mixer found" +msgstr "" + +#: dockx_applets/volume-control.py:571 +msgid "No devices found" +msgstr "" + +#: dockbarx/dockbar.py:1451 dockbarx/groupbutton.py:2415 msgid "Identifier" msgstr "" -#: dockbarx/dockbar.py:1128 +#: dockbarx/dockbar.py:1452 msgid "Enter the identifier here" msgstr "" -#: dockbarx/dockbar.py:1130 +#: dockbarx/dockbar.py:1454 msgid "" "You should have to do this only if the program fails to recognice its " "windows. " msgstr "" -#: dockbarx/dockbar.py:1131 +#: dockbarx/dockbar.py:1455 msgid "" "If the program is already running you should be able to find the identifier " "of the program from the dropdown list." msgstr "" -#: dockbarx/dockbar.py:1148 +#: dockbarx/dockbar.py:1472 msgid "Identifier:" msgstr "" -#: dockbarx/dockbar.py:1311 dbx_preference:1159 +#: dockbarx/dockbar.py:1635 dbx_preference:1159 msgid "Select next group" msgstr "" -#: dockbarx/dockbar.py:1312 dbx_preference:1161 +#: dockbarx/dockbar.py:1636 dbx_preference:1161 msgid "Select previous group" msgstr "" -#: dockbarx/dockbar.py:1313 dbx_preference:1163 +#: dockbarx/dockbar.py:1637 dbx_preference:1163 msgid "Select next window in group" msgstr "" -#: dockbarx/dockbar.py:1314 dbx_preference:1165 +#: dockbarx/dockbar.py:1638 dbx_preference:1165 msgid "Select previous window in group" msgstr "" +#: dockbarx/windowbutton.py:631 dockbarx/groupbutton.py:779 +#: dockbarx/groupbutton.py:780 dockbarx/groupbutton.py:2649 +msgid "_Minimize" +msgstr "" + +#: dockbarx/windowbutton.py:634 dockbarx/groupbutton.py:782 +#: dockbarx/groupbutton.py:783 dockbarx/groupbutton.py:2651 +msgid "Un_minimize" +msgstr "" + +#: dockbarx/windowbutton.py:643 dockbarx/groupbutton.py:773 +#: dockbarx/groupbutton.py:774 dockbarx/groupbutton.py:2653 +msgid "Ma_ximize" +msgstr "" + +#: dockbarx/windowbutton.py:646 dockbarx/groupbutton.py:776 +#: dockbarx/groupbutton.py:777 dockbarx/groupbutton.py:2655 +msgid "Unma_ximize" +msgstr "" + +#: dockbarx/windowbutton.py:652 dockbarx/groupbutton.py:771 +#: dockbarx/groupbutton.py:772 dockbarx/groupbutton.py:2656 +msgid "_Close" +msgstr "" + +#: dockbarx/groupbutton.py:332 dockbarx/groupbutton.py:790 +#: dockbarx/groupbutton.py:2613 +msgid "_Launch application" +msgstr "" + +#: dockbarx/groupbutton.py:772 dockbarx/groupbutton.py:774 +#: dockbarx/groupbutton.py:777 dockbarx/groupbutton.py:780 +#: dockbarx/groupbutton.py:783 dockbarx/groupbutton.py:2647 +msgid " all windows" +msgstr "" + +#: dockbarx/groupbutton.py:785 dockbarx/groupbutton.py:2622 +msgid "Edit Launcher" +msgstr "" + +#: dockbarx/groupbutton.py:786 dockbarx/groupbutton.py:2621 +msgid "Edit Identifier" +msgstr "" + +#: dockbarx/groupbutton.py:787 dockbarx/groupbutton.py:2619 +msgid "Unpin application" +msgstr "" + +#: dockbarx/groupbutton.py:788 dockbarx/groupbutton.py:2617 +msgid "Make custom launcher" +msgstr "" + +#: dockbarx/groupbutton.py:789 dockbarx/groupbutton.py:2615 +msgid "_Pin application" +msgstr "" + +#: dockbarx/groupbutton.py:791 dockbarx/groupbutton.py:2637 +msgid "Floating Window Panel" +msgstr "" + +#: dockbarx/groupbutton.py:2620 dockbarx/groupbutton.py:2621 +#: dockbarx/groupbutton.py:2622 +msgid "Properties" +msgstr "" + +#: dockbarx/groupbutton.py:2631 dockbarx/groupbutton.py:2702 +msgid "Recent" +msgstr "" + +#: dockbarx/groupbutton.py:2631 dockbarx/groupbutton.py:2703 +msgid "Most used" +msgstr "" + +#: dockbarx/groupbutton.py:2631 dockbarx/groupbutton.py:2704 +msgid "Related" +msgstr "" + +#: dockbarx/theme.py:174 dbx_preference:1448 +msgid "" +"No working themes found in /usr/share/dockbarx/themes or ~/.dockbarx/themes" +msgstr "" + #: dbx_preference:453 msgid "DockBarX preferences" msgstr "" @@ -611,23 +716,11 @@ msgid "corner" msgstr "" -#: dbx_preference:1225 -msgid "centered" -msgstr "" - #: dbx_preference:1238 msgid "Position" msgstr "" #: dbx_preference:1241 -msgid "left" -msgstr "" - -#: dbx_preference:1241 -msgid "right" -msgstr "" - -#: dbx_preference:1241 msgid "top" msgstr "" diff -Nru dockbarx-0.91.4/README dockbarx-0.92/README --- dockbarx-0.91.4/README 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -# DockbarX -### Version 0.91.4 - -## About DockbarX -DockBarX is a lightweight taskbar / panel replacement for Linux which works as a stand-alone dock (called DockX), as an an Avant Window Navigator applet, as a Xfce4 panel applet[^1], as a matepanel applet[^2] or as a legacy gnome2 panel applet. DockbarX is a fork of dockbar made by Aleksey Shaferov. DockbarX branch is developed by Matias Särs. - -DockbarX is free software and is licensed under GPL3. - -## Installation - -1. Following dependecies needs to be installed: - - zeitgeist, python-wnck, python-imaging, python-keybinder and python-xlib. - - Install python-gnomeapplet if you want to use DockbarX as a gnome-panel applet (gnome2) you should install python-gnomeapplet. (This doesn't work in newer releases of Ubuntu.) - - To use dockbarx as an AWN applet, you also need to copy the content of the AWN folder to ~/.config/awn/applets. - - Some of the stand alone dock applets require dependencies: - - Cardapio applet: Cardapio - - Appindicators: indicator-application - - To use DockManager helpers, you need to install dockmanager and dockmanager-daemon as well as libdesktop-agnostic-cfg-gconf and libdesktop-agnostic-vfs-gio. The last two might not need to be installed separately on distributions that aren't Debian based. -2. Extract dockbarx. Change directory to where you extracted dockbarx and run the setup.py install `$ sudo ./setup.py install` -3. Start DockbarX - - To run DockbarX as a stand alone dock use the command `dockx`. - - For gnomepanel or matepanel applet, simply add DockBarX applet to the panel (kill the panel or re-login first if necessary). - - For XFCE panel you need to install [xfce-dockbarx-plugin] (https://github.com/TiZ-EX1/xfce4-dockbarx-plugin) - -**NOTE!** To use previews with Compiz you need to activate KDE Compability in compiz settings manager and under KDE Compability check "Support Plasma Thumbnails". *You can **not** use previews with other window manager than Compiz and Kwin.* - -##FAQ -*Q: Why do you want to make Linux into a Microsoft Windows 7 clone?* - -A: I don't. The goal of DockbarX isn't to be a clone of the Windows 7 task bar. Windows 7 task bar has a good principle, though. When it comes to your most used programs it's more productive to do all window handling - launching, selecting, closing, etc. from the same few pixels. If I need a Firefox window I move my mouse cursor to the same spot on the screen regardless of which Firefox window I want and or if I even have opened a Firefox window yet. This behavior is good and it would be stupid not to implement it just because "Windows had it first". Don't reduce your productivity out of stubbornness. When it comes to looks it's up to you to choose a theme that looks like windows 7 or a theme that doesn't look that way. - -Here are some historical references about docks: -http://en.wikipedia.org/wiki/Dock_(computing) -http://en.wikipedia.org/wiki/Icon_bar - -And another interesting link that has had quite a bit of infuence on my work with DockbarX: -http://arstechnica.com/software/news/2009/01/dock-and-windows-7-taskbar.ars - -*Q: I want a button for every window instead of all windows of the same application grouped together under one button. When will DockbarX support that?* - -A: Never. That would demand quite a bit of restructuring of the code and I believe it's less productive to keep the windows ungrouped. You are welcome to change the code yourself if you don't like my decision, or try the applet Talika it might suit your needs better than DockbarX does. - -*Q: I added a new launcher for program X but when I click on the launcher a new groupbutton is made for the window instead of using the groupbutton of the launcher. What went wrong?* - -A: Dockbarx connects group buttons and windows by using the resource class name of the application. When a launcher is added dockbarx tries to guess the resource class name of that launcher. This works in most cases but not always. Apparently it didn't work for your program X. To fix this, right click on the launcher for program X and choose "Edit Resource name" and enter the correct resource name. If the program is already running you should be able to find it's resource class name in the drop-down list. - -*Q: There is no menu option to pin program X, but there is one for program Y and Z. Why?* -A: Dockbarx wasn't able to identify program X correctly then. You can "pin" the program by dragging it's icon from the gnome menu instead. Oh, and you will probably have to enter the resource name manually as well (see previous question). - -*Q: How do I get to preference dialog?* - -A: Right click the handle (the dots or lines to the left of dockbarx) to get a menu where you can choose the preference option. Sometimes though, you have to double right click the handle to get the menu. Don't ask me why - just do it. You can also find the preference dialog from gnome menu (in Accessories). - -*Q: None of DockbarX's compiz stuff like "compiz scale" work. Why?* - -A: Make sure you enable the GLib extension in Compiz settings manager and that the compiz plugin dockbarx uses is activated as well. (eg. for group button action "compiz scale" to work you need the scale plugin activated) - -*Q: Opacify doen't work?* - -A: A common misunderstanding is that opacify should have something to do with transparency of dockbarx itself, it doesn't. Opacify is a way to find localize a window with dockbar. When opacify is on and you roll over a name in the window list with the mouse, all other windows will become transparent so that you easy can spot the window. - -*Q: How do I install a theme?* - -A: If you find a theme on the web that you like, copy the file (should be SOMETHING.tar.gz) to ~/.dockbarx/themes or /usr/share/dockbarx/themes. You change themes in the appearance tab of preference dialog. You might need to press the reload button before your newly installed theme shows up. - -*Q: How can I make an theme of my own?* - -A: Read Theming HOWTO. If you need help ask me (Matias Särs alias M7S) on gnome-look or at launchpad. I'm happy to help theme developers as much as I can. - -### AWN questions -*Q: When I use dockbarx in AWN, IntelliHide and Window Dodge behaviors doesn't work. Why? Can I do anything about it?* - -A: For IntelliHide and Window Dodge to work, AWN Taskmanager applet has to be activated. So to get back IntelliHide or Window Dodge, simply add Taskmanager to your applet list again. If you think using Taskmanager and DockbarX at the same time looks a bit weird, you can go to the Task Manager tab of AWN preference and check the option "Display launchers only" and then remove all the launchers in the list. That will give you a completely invisible Taskmanager that will make sure IntelliHide and Window Dodge works as they should. - -[^1]: Using [xfce-dockbarx-plugin] (https://github.com/TiZ-EX1/xfce4-dockbarx-plugin) - -[^2]: DockbarX doesn't work in mate 1.6 and later at the moment. - - - - diff -Nru dockbarx-0.91.4/README.md dockbarx-0.92/README.md --- dockbarx-0.91.4/README.md 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/README.md 2016-04-25 04:05:22.000000000 +0000 @@ -1,12 +1,42 @@ # DockbarX -### Version 0.91.4 +### Version 0.92 ## About DockbarX DockBarX is a lightweight taskbar / panel replacement for Linux which works as a stand-alone dock (called DockX), as an an Avant Window Navigator applet, as a Xfce4 panel applet[^1], as a matepanel applet[^2] or as a legacy gnome2 panel applet. DockbarX is a fork of dockbar made by Aleksey Shaferov. DockbarX branch is developed by Matias Särs. DockbarX is free software and is licensed under GPL3. -## Installation +## Install in Ubuntu from ppa +To add the main DockBarX PPA and install the application in Ubuntu (and derivatives), use the following commands: + +``` +sudo add-apt-repository ppa:dockbar-main/ppa +sudo apt-get update +sudo apt-get install dockbarx +``` + +If you want to use dockbarx as a Xfce panel applet you also need this command + +``` +sudo apt-get install xfce4-dockbarx-plugin +``` + +To get more themes for DockbarX and DockX use this command + +``` +sudo apt-get install dockbarx-themes-extra +``` + +## Install in archlinux +There is an aur for DockbarX + +https://aur.archlinux.org/packages/dockbarx/ + +And there is also one for xfce4-dockbarx-plugin + +https://aur.archlinux.org/packages/xfce4-dockbarx-plugin/ + +## Manual Installation 1. Following dependecies needs to be installed: - zeitgeist, python-wnck, python-imaging, python-keybinder and python-xlib. @@ -17,19 +47,29 @@ - Appindicators: indicator-application - To use DockManager helpers, you need to install dockmanager and dockmanager-daemon as well as libdesktop-agnostic-cfg-gconf and libdesktop-agnostic-vfs-gio. The last two might not need to be installed separately on distributions that aren't Debian based. 2. Extract dockbarx. Change directory to where you extracted dockbarx and run the setup.py install `$ sudo ./setup.py install` -3. Start DockbarX + +## Usage +To start DockbarX you can - To run DockbarX as a stand alone dock use the command `dockx`. - For gnomepanel or matepanel applet, simply add DockBarX applet to the panel (kill the panel or re-login first if necessary). - - For XFCE panel you need to install [xfce-dockbarx-plugin] (https://github.com/TiZ-EX1/xfce4-dockbarx-plugin) + - For XFCE panel you need to [xfce-dockbarx-plugin] (https://github.com/TiZ-EX1/xfce4-dockbarx-plugin), if you haven't installed it already. Click the link for further usage information. + +The preferences dialog of DockbarX can be found from your applications menu or (if you use DockX or mate-/xfce-/gnome-applet) by right clicking and choosing Preferences. **NOTE!** To use previews with Compiz you need to activate KDE Compability in compiz settings manager and under KDE Compability check "Support Plasma Thumbnails". *You can **not** use previews with other window manager than Compiz and Kwin.* +## Contribute +DockbarX is a free and open source project I am developing in my free time. I will gladly accept any help I can get to improve DockbarX. Test out new code, **report bugs** to the issue tracker and make pull request with code you like to contribute. + +You can also translate DockbarX into your language at [DockbarX launchpad translation page](https://translations.launchpad.net/dockbar). DockbarX is translated into many languages but few of the translations are complete. Even if DockbarX should be fully translated into your language at the moment, you could check in after a new release is out to see if there some new words that needs translating. + ##FAQ *Q: Why do you want to make Linux into a Microsoft Windows 7 clone?* -A: I don't. The goal of DockbarX isn't to be a clone of the Windows 7 task bar. Windows 7 task bar has a good principle, though. When it comes to your most used programs it's more productive to do all window handling - launching, selecting, closing, etc. from the same few pixels. If I need a Firefox window I move my mouse cursor to the same spot on the screen regardless of which Firefox window I want and or if I even have opened a Firefox window yet. This behavior is good and it would be stupid not to implement it just because "Windows had it first". Don't reduce your productivity out of stubbornness. When it comes to looks it's up to you to choose a theme that looks like windows 7 or a theme that doesn't look that way. +A: I don't. The goal of DockbarX isn't to be a clone of the Windows 7 task bar. Windows 7 task bar has a good principle, though. When it comes to your most used programs it's more productive to do all window handling - launching, selecting, closing, etc. from the same few pixels. If I need a Firefox window I move my mouse cursor to the same spot on the screen regardless of which Firefox window I want and or if I even have not opened a Firefox window yet. This behavior is good and it would be stupid not to implement it just because "Windows had it first". Don't reduce your productivity out of stubbornness. When it comes to looks it's up to you to choose a theme that looks like windows 7 or a theme that doesn't look that way. Here are some historical references about docks: + http://en.wikipedia.org/wiki/Dock_(computing) http://en.wikipedia.org/wiki/Icon_bar diff -Nru dockbarx-0.91.4/setup.py dockbarx-0.92/setup.py --- dockbarx-0.91.4/setup.py 2014-06-24 17:26:54.000000000 +0000 +++ dockbarx-0.92/setup.py 2016-04-25 04:05:22.000000000 +0000 @@ -27,7 +27,7 @@ import os import sys -VERSION = "0.91.4" +VERSION = "0.92" class build_trans(cmd.Command): description = "Compile .po files into .mo files"