aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Étienne Deparis 2021-03-07 20:42:29 +0100
committerGravatar Étienne Deparis 2021-03-07 20:42:29 +0100
commit843601b310c8cf5cd1a388ba5137f67248cf42d7 (patch)
tree846e9cc54ce17832dd8dafc89ccee2d8bb3e5b8a
parent25dfbea2bdf34abf829bef464db0c6b4ddf18c5c (diff)
parentbad5f915bfc8860f62f49af9bc16db514398be85 (diff)
downloadchwall-master.tar.gz
chwall-master.tar.xz
chwall-master.zip
Merge branch 'v0.5.6-dev'HEADv0.5.6master
-rw-r--r--Makefile13
-rw-r--r--chwall/__init__.py2
-rw-r--r--chwall/daemon.py11
-rw-r--r--chwall/fetcher/local.py32
-rw-r--r--chwall/gui/app.py19
-rw-r--r--chwall/gui/icon.py34
-rw-r--r--chwall/gui/preferences.py15
-rw-r--r--chwall/gui/shared.py22
-rw-r--r--chwall/wallpaper.py9
-rw-r--r--data/icon_mono_800.pngbin0 -> 67349 bytes
-rw-r--r--locale/chwall.pot102
-rw-r--r--locale/es/LC_MESSAGES/chwall.po4
-rw-r--r--locale/fr/LC_MESSAGES/chwall.po148
13 files changed, 232 insertions, 179 deletions
diff --git a/Makefile b/Makefile
index 3a4fbe7..c6befc1 100644
--- a/Makefile
+++ b/Makefile
@@ -9,9 +9,9 @@ libdir = $(exec_prefix)/lib
VERSION = $(shell python setup.py --version)
-ICON = data/icon_800.png
ICON_SIZE = 128 64 48 32 24 16
-DEST_ICONS = $(foreach z,$(ICON_SIZE),$(datarootdir)/icons/hicolor/$(z)x$(z)/apps/chwall.png)
+DEST_ICONS = $(foreach z,$(ICON_SIZE),$(datarootdir)/icons/hicolor/$(z)x$(z)/apps/chwall.png) \
+ $(foreach z,$(ICON_SIZE),$(datarootdir)/icons/hicolor/$(z)x$(z)/apps/chwall_mono.png)
PY_VERSION = $(shell python -c "import sys;v=sys.version_info;print('{}.{}'.format(v.major, v.minor))")
PY_SITE = $(libdir)/python$(PY_VERSION)/site-packages
@@ -65,8 +65,15 @@ $(datarootdir)/icons/hicolor/%/apps/chwall.png: data/icon_%.png
install -d -m755 $(@:%/chwall.png=%)
install -D -m644 $< $@
+$(datarootdir)/icons/hicolor/%/apps/chwall_mono.png: data/icon_mono_%.png
+ install -d -m755 $(@:%/chwall_mono.png=%)
+ install -D -m644 $< $@
+
data/icon_%.png:
- convert $(ICON) -resize $(@:data/icon_%.png=%) $@
+ convert data/icon_800.png -resize $(@:data/icon_%.png=%) $@
+
+data/icon_mono_%.png:
+ convert data/icon_mono_800.png -resize $(@:data/icon_mono_%.png=%) $@
locale/chwall.pot:
mkdir -p locale
diff --git a/chwall/__init__.py b/chwall/__init__.py
index 86716a7..a779a44 100644
--- a/chwall/__init__.py
+++ b/chwall/__init__.py
@@ -1 +1 @@
-__version__ = "0.5.5"
+__version__ = "0.5.6"
diff --git a/chwall/daemon.py b/chwall/daemon.py
index 5204370..022f4ca 100644
--- a/chwall/daemon.py
+++ b/chwall/daemon.py
@@ -46,7 +46,7 @@ def kill_daemon(_signo, _stack_frame):
sys.exit(0)
-def last_wallpaper_change():
+def last_wallpaper_change(sleep_time):
pid_file = "{}/chwall_pid".format(BASE_CACHE_PATH)
change_file = "{}/last_change".format(BASE_CACHE_PATH)
if not os.path.exists(pid_file) or not os.path.exists(change_file):
@@ -56,6 +56,11 @@ def last_wallpaper_change():
last_change = int(time.time()) - int(f.read().strip())
except ValueError:
last_change = -1
+ if last_change > sleep_time:
+ # We are currently reading a very old last_change flag file. Certainly
+ # because the daemon has crashed without cleaning up its pid
+ # file. Assume it is stopped
+ return -1
return last_change
@@ -87,6 +92,7 @@ def daemon_change_label(last_change, next_change):
def daemon_info():
config = read_config()
+ sleep_time = config["general"]["sleep"]
last_change = -1
next_change = -1
daemon_state = "stopped"
@@ -94,12 +100,11 @@ def daemon_info():
daemon_enabled = False
daemon_type = "standalone"
- last_change = last_wallpaper_change()
+ last_change = last_wallpaper_change(sleep_time)
change_labels = (_("Daemon stopped"), _("Daemon stopped"))
if last_change != -1:
daemon_state = "started"
daemon_state_label = _("Daemon started")
- sleep_time = config["general"]["sleep"]
next_change = sleep_time - last_change
change_labels = daemon_change_label(last_change, next_change)
diff --git a/chwall/fetcher/local.py b/chwall/fetcher/local.py
index b8c4385..facf09d 100644
--- a/chwall/fetcher/local.py
+++ b/chwall/fetcher/local.py
@@ -1,6 +1,8 @@
import os
import glob
+from chwall.utils import get_logger
+
import gettext
# Uncomment the following line during development.
# Please, be cautious to NOT commit the following line uncommented.
@@ -8,28 +10,36 @@ import gettext
gettext.textdomain("chwall")
_ = gettext.gettext
+logger = get_logger(__name__)
+
def fetch_pictures(config):
conf = config.get("local", {})
paths = conf.get("paths", [])
include_fav = conf.get("favorites", True)
fav_dir = config["general"]["favorites_path"]
- if os.path.exists(fav_dir) and include_fav:
- paths.insert(0, fav_dir)
+ try:
+ if os.path.exists(fav_dir) and include_fav:
+ paths.insert(0, fav_dir)
+ except PermissionError as e:
+ logger.error(e)
if len(paths) == 0:
return {}
pictures = {}
for path in paths:
path = os.path.expanduser(path)
- for ext in ["jpg", "jpeg", "png"]:
- for f in glob.iglob("{}/*.{}".format(path, ext),
- recursive=True):
- pictures[f] = {
- "image": f,
- "type": "local",
- "url": f,
- "copyright": _("Local wallpaper")
- }
+ try:
+ for ext in ["jpg", "jpeg", "png"]:
+ glob_path = "{}/*.{}".format(path, ext)
+ for f in glob.iglob(glob_path, recursive=True):
+ pictures[f] = {
+ "image": f,
+ "type": "local",
+ "url": f,
+ "copyright": _("Local wallpaper")
+ }
+ except PermissionError as e:
+ logger.error(e)
return pictures
diff --git a/chwall/gui/app.py b/chwall/gui/app.py
index c62266b..e966950 100644
--- a/chwall/gui/app.py
+++ b/chwall/gui/app.py
@@ -129,13 +129,20 @@ class ChwallApp(ChwallGui):
self.favorite_button.set_tooltip_text(
_("Current wallpaper is not managed by Chwall"))
return
- elif self.is_current_wall_favorite(wallinfo):
+
+ try:
+ if self.is_current_wall_favorite(wallinfo):
+ self.favorite_button.set_sensitive(False)
+ self.favorite_button.set_tooltip_text(_("Already a favorite"))
+ else:
+ self.favorite_button.set_sensitive(True)
+ self.favorite_button.set_tooltip_text(_("Save as favorite"))
+ self.favorite_button.connect(
+ "clicked", self.on_favorite_wallpaper)
+ except PermissionError:
self.favorite_button.set_sensitive(False)
- self.favorite_button.set_tooltip_text(_("Already a favorite"))
- else:
- self.favorite_button.set_sensitive(True)
- self.favorite_button.set_tooltip_text(_("Save as favorite"))
- self.favorite_button.connect("clicked", self.on_favorite_wallpaper)
+ self.favorite_button.set_tooltip_text(
+ _("Error accessing the favorites folder"))
label_str = "<a href=\"{link}\">{text}</a>".format(
link=html.escape(wallinfo["remote-uri"]),
diff --git a/chwall/gui/icon.py b/chwall/gui/icon.py
index 5eb450b..bf92fbc 100644
--- a/chwall/gui/icon.py
+++ b/chwall/gui/icon.py
@@ -22,13 +22,26 @@ class ChwallIcon(ChwallGui):
def __init__(self):
super().__init__()
self.tray = Gtk.StatusIcon()
- self.tray.set_from_icon_name("chwall")
+ self.load_main_icon()
self.tray.set_tooltip_text("Chwall")
self.tray.connect("popup-menu", self.display_menu)
self.sfm = ServiceFileManager()
self.must_autostart = self.sfm.xdg_autostart_file_exists("icon")
+ def load_main_icon(self):
+ mono_icon = self.config["general"].get("mono_icon", False)
+ if mono_icon:
+ icon_name = "chwall_mono"
+ else:
+ icon_name = "chwall"
+ self.tray.set_from_icon_name(icon_name)
+
+ def show_preferences_dialog(self, widget):
+ super().show_preferences_dialog(widget)
+ self.load_main_icon()
+
def display_menu(self, _icon, event_button, event_time):
+ self.reload_config()
dinfo = self.daemon_info()
daemon_state_label = dinfo["daemon-state-label"]
if dinfo["next-change"] == -1:
@@ -82,16 +95,19 @@ class ChwallIcon(ChwallGui):
if wallinfo["type"] is not None:
# favorite wallpaper
- if self.is_current_wall_favorite(wallinfo):
- favbtn = Gtk.ImageMenuItem.new_with_label(
- _("Already a favorite"))
- favbtn.set_sensitive(False)
- else:
- favbtn = Gtk.ImageMenuItem.new_with_label(
- _("Save as favorite"))
- favbtn.connect("activate", self.on_favorite_wallpaper)
+ favbtn = Gtk.ImageMenuItem.new_with_label(_("Save as favorite"))
favbtn.set_image(Gtk.Image.new_from_icon_name(
"bookmark-new", Gtk.IconSize.MENU))
+ try:
+ if self.is_current_wall_favorite(wallinfo):
+ favbtn.set_tooltip_text(_("Already a favorite"))
+ favbtn.set_sensitive(False)
+ else:
+ favbtn.connect("activate", self.on_favorite_wallpaper)
+ except PermissionError:
+ favbtn.set_tooltip_text(
+ _("Error accessing the favorites folder"))
+ favbtn.set_sensitive(False)
menu.append(favbtn)
# blacklist wallpaper
diff --git a/chwall/gui/preferences.py b/chwall/gui/preferences.py
index 4d71ed9..6b97f39 100644
--- a/chwall/gui/preferences.py
+++ b/chwall/gui/preferences.py
@@ -703,6 +703,14 @@ as it is the more classical way of doing so.
"general.shared", "blur_radius", _("Blur radius"), default=20)
sharedbox.pack_start(prefbox, False, False, 0)
+ iconbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
+ iconbox.set_border_width(10)
+ iconbox.set_spacing(10)
+
+ prefbox = self.make_toggle_pref(
+ "general", "mono_icon", _("Use monochrome icon"))
+ iconbox.pack_start(prefbox, False, False, 0)
+
daemonbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
daemonbox.set_border_width(10)
daemonbox.set_spacing(10)
@@ -765,6 +773,13 @@ as it is the more classical way of doing so.
frame = Gtk.Frame()
frame_label = Gtk.Label()
+ frame_label.set_markup("<b>{}</b>".format(_("Status icon")))
+ frame.set_label_widget(frame_label)
+ frame.add(iconbox)
+ framebox.pack_start(frame, False, False, 0)
+
+ frame = Gtk.Frame()
+ frame_label = Gtk.Label()
frame_label.set_markup("<b>{}</b>".format(_("Shared background")))
frame.set_label_widget(frame_label)
frame.add(sharedbox)
diff --git a/chwall/gui/shared.py b/chwall/gui/shared.py
index b670d4b..e501976 100644
--- a/chwall/gui/shared.py
+++ b/chwall/gui/shared.py
@@ -24,9 +24,13 @@ _ = gettext.gettext
class ChwallGui:
def __init__(self):
self.app = None
+ self.reload_config()
# Try to keep cache as clean as possible
cleanup_cache()
+ def reload_config(self):
+ self.config = read_config()
+
def daemon_info(self):
return daemon_info()
@@ -49,7 +53,7 @@ class ChwallGui:
def on_change_wallpaper(self, _widget, direction=False, threaded=True):
def change_wall_thread_target(direction):
- pick_wallpaper(read_config(), direction)
+ pick_wallpaper(self.config, direction)
notify_daemon_if_any()
notify_app_if_any()
@@ -65,18 +69,18 @@ class ChwallGui:
self.start_in_thread_if_needed(blacklist_wall_thread_target)
def on_favorite_wallpaper(self, _widget):
- favorite_wallpaper(read_config())
- if self.app is None:
- return
- self.favorite_button.set_sensitive(False)
- self.favorite_button.set_tooltip_text(_("Already a favorite"))
+ if favorite_wallpaper(self.config):
+ if self.app is None:
+ return
+ self.favorite_button.set_sensitive(False)
+ self.favorite_button.set_tooltip_text(_("Already a favorite"))
def run_chwall_component(self, _widget, component):
def start_daemon_from_thread():
# At the difference of the daemon itself, it's expected than a
# service start from inside the app or the icon will immediatly
# change the current wallpaper.
- pick_wallpaper(read_config())
+ pick_wallpaper(self.config)
notify_app_if_any()
# No need to fork, daemon already do that
subprocess.run(["chwall-daemon"])
@@ -92,9 +96,10 @@ class ChwallGui:
stdout=subprocess.DEVNULL).returncode
return retcode == 0
+ # This function may raise a PermissionError
def is_current_wall_favorite(self, wallinfo):
fav_path = favorite_wallpaper_path(
- wallinfo["local-picture-path"], read_config())
+ wallinfo["local-picture-path"], self.config)
return os.path.exists(fav_path)
def show_preferences_dialog(self, widget):
@@ -106,6 +111,7 @@ class ChwallGui:
prefwin = PrefDialog(self.app, flags)
prefwin.run()
prefwin.destroy()
+ self.reload_config()
def show_about_dialog(self, widget):
about_dialog = Gtk.AboutDialog()
diff --git a/chwall/wallpaper.py b/chwall/wallpaper.py
index ca59786..67edce8 100644
--- a/chwall/wallpaper.py
+++ b/chwall/wallpaper.py
@@ -396,6 +396,7 @@ def blacklist_wallpaper():
remove_wallpaper_from_roadmap(blacklisted_pix)
+# This function may raise a PermissionError
def favorite_wallpaper_path(current_file, config):
# Add file extension for better desktop integration
with Image.open(current_file) as im:
@@ -416,11 +417,17 @@ def favorite_wallpaper(config):
with open("{}/current_wallpaper"
.format(BASE_CACHE_PATH), "r") as f:
curfile = f.readlines()[4].strip()
- target_file = favorite_wallpaper_path(curfile, config)
+ try:
+ target_file = favorite_wallpaper_path(curfile, config)
+ except PermissionError as e:
+ logger.error(e)
+ return False
if not os.path.exists(target_file):
# Copy new favorite to its destination, only if it does not
# exist in it yet.
shutil.copy(curfile, target_file)
+ return True
+ return False
def clean_wallpaper_info(data):
diff --git a/data/icon_mono_800.png b/data/icon_mono_800.png
new file mode 100644
index 0000000..7fd3409
--- /dev/null
+++ b/data/icon_mono_800.png
Binary files differ
diff --git a/locale/chwall.pot b/locale/chwall.pot
index 5049209..5bc0344 100644
--- a/locale/chwall.pot
+++ b/locale/chwall.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: Chwall 0.5.5\n"
+"Project-Id-Version: Chwall 0.5.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-01 19:00+0100\n"
+"POT-Creation-Date: 2021-03-07 20:30+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: chwall/gui/app.py:39 chwall/gui/app.py:188 chwall/gui/preferences.py:113
+#: chwall/gui/app.py:39 chwall/gui/app.py:195 chwall/gui/preferences.py:113
msgid "Preferences"
msgstr ""
@@ -28,11 +28,11 @@ msgid ""
"lot of sources enabled. Please be patient."
msgstr ""
-#: chwall/gui/app.py:62 chwall/gui/app.py:275 chwall/gui/icon.py:78
+#: chwall/gui/app.py:62 chwall/gui/app.py:282 chwall/gui/icon.py:91
msgid "Previous wallpaper"
msgstr ""
-#: chwall/gui/app.py:74 chwall/gui/app.py:271 chwall/gui/icon.py:71
+#: chwall/gui/app.py:74 chwall/gui/app.py:278 chwall/gui/icon.py:84
msgid "Next wallpaper"
msgstr ""
@@ -40,55 +40,59 @@ msgstr ""
msgid "Stop daemon and erase pending list"
msgstr ""
-#: chwall/gui/app.py:106 chwall/gui/app.py:279 chwall/gui/icon.py:99
+#: chwall/gui/app.py:106 chwall/gui/app.py:286 chwall/gui/icon.py:115
msgid "Blacklist"
msgstr ""
-#: chwall/gui/app.py:125 chwall/gui/app.py:130 chwall/gui/icon.py:55
+#: chwall/gui/app.py:125 chwall/gui/app.py:130 chwall/gui/icon.py:68
msgid "Current wallpaper is not managed by Chwall"
msgstr ""
-#: chwall/gui/app.py:134 chwall/gui/icon.py:87 chwall/gui/shared.py:72
+#: chwall/gui/app.py:136 chwall/gui/icon.py:103 chwall/gui/shared.py:76
msgid "Already a favorite"
msgstr ""
-#: chwall/gui/app.py:137 chwall/gui/icon.py:91
+#: chwall/gui/app.py:139 chwall/gui/icon.py:98
msgid "Save as favorite"
msgstr ""
-#: chwall/gui/app.py:181
+#: chwall/gui/app.py:145 chwall/gui/icon.py:109
+msgid "Error accessing the favorites folder"
+msgstr ""
+
+#: chwall/gui/app.py:188
msgid "Display notification icon"
msgstr ""
-#: chwall/gui/app.py:192 chwall/gui/icon.py:131
+#: chwall/gui/app.py:199 chwall/gui/icon.py:147
msgid "About Chwall"
msgstr ""
-#: chwall/gui/app.py:216 chwall/gui/icon.py:40
+#: chwall/gui/app.py:223 chwall/gui/icon.py:53
msgid "Stop daemon"
msgstr ""
-#: chwall/gui/app.py:221 chwall/gui/icon.py:36
+#: chwall/gui/app.py:228 chwall/gui/icon.py:49
msgid "Start daemon"
msgstr ""
-#: chwall/gui/app.py:263 chwall/gui/icon.py:151 chwall/gui/shared.py:117
+#: chwall/gui/app.py:270 chwall/gui/icon.py:167 chwall/gui/shared.py:123
msgid "Wallpaper Changer"
msgstr ""
-#: chwall/gui/app.py:267
+#: chwall/gui/app.py:274
msgid "Main window of the Chwall wallpaper changer"
msgstr ""
-#: chwall/gui/icon.py:107
+#: chwall/gui/icon.py:123
msgid "Open main window"
msgstr ""
-#: chwall/gui/icon.py:115
+#: chwall/gui/icon.py:131
msgid "Always display this icon"
msgstr ""
-#: chwall/gui/icon.py:125
+#: chwall/gui/icon.py:141
msgid "Report a bug"
msgstr ""
@@ -120,7 +124,7 @@ msgstr ""
msgid "Enable"
msgstr ""
-#: chwall/gui/preferences.py:391 chwall/gui/preferences.py:738
+#: chwall/gui/preferences.py:391 chwall/gui/preferences.py:746
msgid "Remove"
msgstr ""
@@ -204,7 +208,7 @@ msgstr ""
msgid "Behavior"
msgstr ""
-#: chwall/gui/preferences.py:596 chwall/gui/preferences.py:775
+#: chwall/gui/preferences.py:596 chwall/gui/preferences.py:790
msgid "Daemon"
msgstr ""
@@ -252,30 +256,38 @@ msgid "Blur radius"
msgstr ""
#: chwall/gui/preferences.py:711
+msgid "Use monochrome icon"
+msgstr ""
+
+#: chwall/gui/preferences.py:719
msgid "X Display in use"
msgstr ""
-#: chwall/gui/preferences.py:737
+#: chwall/gui/preferences.py:745
msgid "Remove systemd service file"
msgstr ""
-#: chwall/gui/preferences.py:749
+#: chwall/gui/preferences.py:757
msgid "Log level"
msgstr ""
-#: chwall/gui/preferences.py:761
+#: chwall/gui/preferences.py:769
msgid "Cache management"
msgstr ""
-#: chwall/gui/preferences.py:768
+#: chwall/gui/preferences.py:776
+msgid "Status icon"
+msgstr ""
+
+#: chwall/gui/preferences.py:783
msgid "Shared background"
msgstr ""
-#: chwall/gui/shared.py:119
+#: chwall/gui/shared.py:125
msgid "Chwall is released under the WTFPL"
msgstr ""
-#: chwall/gui/shared.py:138
+#: chwall/gui/shared.py:144
msgid "translator-credits https://translations.umaneti.net/engage/chwall/"
msgstr ""
@@ -283,19 +295,19 @@ msgstr ""
msgid "Locales"
msgstr ""
-#: chwall/fetcher/local.py:31
+#: chwall/fetcher/local.py:39
msgid "Local wallpaper"
msgstr ""
-#: chwall/fetcher/local.py:38
+#: chwall/fetcher/local.py:48
msgid "Local files"
msgstr ""
-#: chwall/fetcher/local.py:42
+#: chwall/fetcher/local.py:52
msgid "Wallpaper repositories"
msgstr ""
-#: chwall/fetcher/local.py:45
+#: chwall/fetcher/local.py:55
msgid "Include favorites wallpapers"
msgstr ""
@@ -347,7 +359,7 @@ msgid ""
"required."
msgstr ""
-#: chwall/fetcher/unsplash.py:39 chwall/wallpaper.py:441
+#: chwall/fetcher/unsplash.py:39 chwall/wallpaper.py:448
msgid "Picture"
msgstr ""
@@ -469,72 +481,72 @@ msgid ""
"temporarily network error. Please try again later."
msgstr ""
-#: chwall/wallpaper.py:440
+#: chwall/wallpaper.py:447
#, python-brace-format
msgid "{title} by {author}"
msgstr ""
-#: chwall/wallpaper.py:443
+#: chwall/wallpaper.py:450
#, python-brace-format
msgid "{title} (on {source})"
msgstr ""
-#: chwall/daemon.py:67
+#: chwall/daemon.py:72
#, python-brace-format
msgid "Last change was {minutes} minute and {seconds}s ago"
msgid_plural "Last change was {minutes} minutes and {seconds}s ago"
msgstr[0] ""
msgstr[1] ""
-#: chwall/daemon.py:72
+#: chwall/daemon.py:77
#, python-brace-format
msgid "Last change was {seconds}s ago"
msgstr ""
-#: chwall/daemon.py:78
+#: chwall/daemon.py:83
#, python-brace-format
msgid "Next change in {minutes} minute and {seconds}s"
msgid_plural "Next change in {minutes} minutes and {seconds}s"
msgstr[0] ""
msgstr[1] ""
-#: chwall/daemon.py:83
+#: chwall/daemon.py:88
#, python-brace-format
msgid "Next change in {seconds}s"
msgstr ""
-#: chwall/daemon.py:93 chwall/daemon.py:98
+#: chwall/daemon.py:99 chwall/daemon.py:104
msgid "Daemon stopped"
msgstr ""
-#: chwall/daemon.py:101
+#: chwall/daemon.py:107
msgid "Daemon started"
msgstr ""
-#: chwall/daemon.py:113
+#: chwall/daemon.py:118
#, python-brace-format
msgid "{daemon_state} (disabled)"
msgstr ""
-#: chwall/daemon.py:136
+#: chwall/daemon.py:141
#, python-brace-format
msgid "Kill process {pid}"
msgstr ""
-#: chwall/daemon.py:138 chwall/daemon.py:158
+#: chwall/daemon.py:143 chwall/daemon.py:163
#, python-brace-format
msgid "Sending process {pid} signal {sid}"
msgstr ""
-#: chwall/daemon.py:197
+#: chwall/daemon.py:202
msgid "Exit signal received"
msgstr ""
-#: chwall/daemon.py:202
+#: chwall/daemon.py:207
msgid "Cleaning up…"
msgstr ""
-#: chwall/daemon.py:238
+#: chwall/daemon.py:243
#, python-brace-format
msgid "Starting Chwall Daemon v{version}…"
msgstr ""
diff --git a/locale/es/LC_MESSAGES/chwall.po b/locale/es/LC_MESSAGES/chwall.po
index a8d8300..4ad2c37 100644
--- a/locale/es/LC_MESSAGES/chwall.po
+++ b/locale/es/LC_MESSAGES/chwall.po
@@ -5,9 +5,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Chwall 0.5.5\n"
+"Project-Id-Version: Chwall 0.5.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-01 19:00+0100\n"
+"POT-Creation-Date: 2021-02-03 20:44+0100\n"
"PO-Revision-Date: 2020-05-02 12:28+0000\n"
"Last-Translator: ruko <ruko@null.net>\n"
"Language-Team: Spanish <https://translations.umaneti.net/projects/chwall/"
diff --git a/locale/fr/LC_MESSAGES/chwall.po b/locale/fr/LC_MESSAGES/chwall.po
index d004b0b..0aee86e 100644
--- a/locale/fr/LC_MESSAGES/chwall.po
+++ b/locale/fr/LC_MESSAGES/chwall.po
@@ -5,10 +5,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Chwall 0.5.5\n"
+"Project-Id-Version: Chwall 0.5.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-01 19:00+0100\n"
-"PO-Revision-Date: 2021-02-01 18:47+0100\n"
+"POT-Creation-Date: 2021-03-07 20:30+0100\n"
+"PO-Revision-Date: 2021-03-07 20:35+0100\n"
"Last-Translator: Étienne Deparis <etienne@depar.is>\n"
"Language-Team: none\n"
"Language: fr\n"
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.4.1\n"
-#: chwall/gui/app.py:39 chwall/gui/app.py:188 chwall/gui/preferences.py:113
+#: chwall/gui/app.py:39 chwall/gui/app.py:195 chwall/gui/preferences.py:113
msgid "Preferences"
msgstr "Préférences"
@@ -31,11 +31,11 @@ msgstr ""
"prendre quelques temps si vous avez beaucoup de sources activées. Merci pour "
"votre patience."
-#: chwall/gui/app.py:62 chwall/gui/app.py:275 chwall/gui/icon.py:78
+#: chwall/gui/app.py:62 chwall/gui/app.py:282 chwall/gui/icon.py:91
msgid "Previous wallpaper"
msgstr "Fond d’écran précédent"
-#: chwall/gui/app.py:74 chwall/gui/app.py:271 chwall/gui/icon.py:71
+#: chwall/gui/app.py:74 chwall/gui/app.py:278 chwall/gui/icon.py:84
msgid "Next wallpaper"
msgstr "Fond d’écran suivant"
@@ -43,55 +43,59 @@ msgstr "Fond d’écran suivant"
msgid "Stop daemon and erase pending list"
msgstr "Arrêter le service et effacer la liste d’attente"
-#: chwall/gui/app.py:106 chwall/gui/app.py:279 chwall/gui/icon.py:99
+#: chwall/gui/app.py:106 chwall/gui/app.py:286 chwall/gui/icon.py:115
msgid "Blacklist"
msgstr "Mettre en liste noire"
-#: chwall/gui/app.py:125 chwall/gui/app.py:130 chwall/gui/icon.py:55
+#: chwall/gui/app.py:125 chwall/gui/app.py:130 chwall/gui/icon.py:68
msgid "Current wallpaper is not managed by Chwall"
msgstr "Le fond d’écran actuel n’est pas géré par Chwall"
-#: chwall/gui/app.py:134 chwall/gui/icon.py:87 chwall/gui/shared.py:72
+#: chwall/gui/app.py:136 chwall/gui/icon.py:103 chwall/gui/shared.py:76
msgid "Already a favorite"
msgstr "Déjà dans les favoris"
-#: chwall/gui/app.py:137 chwall/gui/icon.py:91
+#: chwall/gui/app.py:139 chwall/gui/icon.py:98
msgid "Save as favorite"
msgstr "Enregistrer en tant que favori"
-#: chwall/gui/app.py:181
+#: chwall/gui/app.py:145 chwall/gui/icon.py:109
+msgid "Error accessing the favorites folder"
+msgstr "Erreur lors de l’accès au dossier des favoris"
+
+#: chwall/gui/app.py:188
msgid "Display notification icon"
msgstr "Afficher une icône dans la zone de notification"
-#: chwall/gui/app.py:192 chwall/gui/icon.py:131
+#: chwall/gui/app.py:199 chwall/gui/icon.py:147
msgid "About Chwall"
msgstr "À propos de Chwall"
-#: chwall/gui/app.py:216 chwall/gui/icon.py:40
+#: chwall/gui/app.py:223 chwall/gui/icon.py:53
msgid "Stop daemon"
msgstr "Arrêter le service"
-#: chwall/gui/app.py:221 chwall/gui/icon.py:36
+#: chwall/gui/app.py:228 chwall/gui/icon.py:49
msgid "Start daemon"
msgstr "Démarrer le service"
-#: chwall/gui/app.py:263 chwall/gui/icon.py:151 chwall/gui/shared.py:117
+#: chwall/gui/app.py:270 chwall/gui/icon.py:167 chwall/gui/shared.py:123
msgid "Wallpaper Changer"
msgstr "Changeur de fond d’écran"
-#: chwall/gui/app.py:267
+#: chwall/gui/app.py:274
msgid "Main window of the Chwall wallpaper changer"
msgstr "Fenêtre principale du changeur de fond d’écran Chwall"
-#: chwall/gui/icon.py:107
+#: chwall/gui/icon.py:123
msgid "Open main window"
msgstr "Ouvrir la fenêtre principale"
-#: chwall/gui/icon.py:115
+#: chwall/gui/icon.py:131
msgid "Always display this icon"
msgstr "Toujours afficher cette icône"
-#: chwall/gui/icon.py:125
+#: chwall/gui/icon.py:141
msgid "Report a bug"
msgstr "Signaler un bogue"
@@ -123,7 +127,7 @@ msgstr "Collections"
msgid "Enable"
msgstr "Activer"
-#: chwall/gui/preferences.py:391 chwall/gui/preferences.py:738
+#: chwall/gui/preferences.py:391 chwall/gui/preferences.py:746
msgid "Remove"
msgstr "Supprimer"
@@ -221,7 +225,7 @@ msgstr ""
msgid "Behavior"
msgstr "Comportement"
-#: chwall/gui/preferences.py:596 chwall/gui/preferences.py:775
+#: chwall/gui/preferences.py:596 chwall/gui/preferences.py:790
msgid "Daemon"
msgstr "Tâche de fond"
@@ -270,30 +274,38 @@ msgid "Blur radius"
msgstr "Rayon de floutage"
#: chwall/gui/preferences.py:711
+msgid "Use monochrome icon"
+msgstr "Utiliser une icône monochrome"
+
+#: chwall/gui/preferences.py:719
msgid "X Display in use"
msgstr "Affichage X à utiliser"
-#: chwall/gui/preferences.py:737
+#: chwall/gui/preferences.py:745
msgid "Remove systemd service file"
msgstr "Supprimer le fichier de service systemd"
-#: chwall/gui/preferences.py:749
+#: chwall/gui/preferences.py:757
msgid "Log level"
msgstr "Niveau de journalisation"
-#: chwall/gui/preferences.py:761
+#: chwall/gui/preferences.py:769
msgid "Cache management"
msgstr "Gestion du cache"
-#: chwall/gui/preferences.py:768
+#: chwall/gui/preferences.py:776
+msgid "Status icon"
+msgstr "Icône de statut"
+
+#: chwall/gui/preferences.py:783
msgid "Shared background"
msgstr "Fond d’écran partagé"
-#: chwall/gui/shared.py:119
+#: chwall/gui/shared.py:125
msgid "Chwall is released under the WTFPL"
msgstr "Chwall est publié selon les termes de la WTFPL"
-#: chwall/gui/shared.py:138
+#: chwall/gui/shared.py:144
msgid "translator-credits https://translations.umaneti.net/engage/chwall/"
msgstr "Étienne Deparis https://translations.umaneti.net/engage/chwall/"
@@ -301,19 +313,19 @@ msgstr "Étienne Deparis https://translations.umaneti.net/engage/chwall/"
msgid "Locales"
msgstr "Langues"
-#: chwall/fetcher/local.py:31
+#: chwall/fetcher/local.py:39
msgid "Local wallpaper"
msgstr "Fond d’écran local"
-#: chwall/fetcher/local.py:38
+#: chwall/fetcher/local.py:48
msgid "Local files"
msgstr "Fichiers locaux"
-#: chwall/fetcher/local.py:42
+#: chwall/fetcher/local.py:52
msgid "Wallpaper repositories"
msgstr "Dossiers de fonds d’écran"
-#: chwall/fetcher/local.py:45
+#: chwall/fetcher/local.py:55
msgid "Include favorites wallpapers"
msgstr "Inclure les fonds d’écran favoris"
@@ -368,7 +380,7 @@ msgstr ""
"Unsplash a arrêté de fournir un flux RSS. De ce fait, le paramètre "
"‘access_key’ est désormais requis."
-#: chwall/fetcher/unsplash.py:39 chwall/wallpaper.py:441
+#: chwall/fetcher/unsplash.py:39 chwall/wallpaper.py:448
msgid "Picture"
msgstr "Image"
@@ -505,17 +517,17 @@ msgstr ""
"Impossible de récupérer une image pour l’instant. Cela peut être dû à une "
"erreur temporaire de réseau. Merci de réessayer ultérieurement."
-#: chwall/wallpaper.py:440
+#: chwall/wallpaper.py:447
#, python-brace-format
msgid "{title} by {author}"
msgstr "{title} de {author}"
-#: chwall/wallpaper.py:443
+#: chwall/wallpaper.py:450
#, python-brace-format
msgid "{title} (on {source})"
msgstr "{title} (sur {source})"
-#: chwall/daemon.py:67
+#: chwall/daemon.py:72
#, python-brace-format
msgid "Last change was {minutes} minute and {seconds}s ago"
msgid_plural "Last change was {minutes} minutes and {seconds}s ago"
@@ -524,55 +536,55 @@ msgstr[0] ""
msgstr[1] ""
"Le dernier changement a eu lieu il y a {minutes} minutes et {seconds}s"
-#: chwall/daemon.py:72
+#: chwall/daemon.py:77
#, python-brace-format
msgid "Last change was {seconds}s ago"
msgstr "Le dernier changement a eu lieu il y a {seconds}s"
-#: chwall/daemon.py:78
+#: chwall/daemon.py:83
#, python-brace-format
msgid "Next change in {minutes} minute and {seconds}s"
msgid_plural "Next change in {minutes} minutes and {seconds}s"
msgstr[0] "Prochain changement dans {minutes} minute et {seconds}s"
msgstr[1] "Prochain changement dans {minutes} minutes et {seconds}s"
-#: chwall/daemon.py:83
+#: chwall/daemon.py:88
#, python-brace-format
msgid "Next change in {seconds}s"
msgstr "Prochain changement dans {seconds}s"
-#: chwall/daemon.py:93 chwall/daemon.py:98
+#: chwall/daemon.py:99 chwall/daemon.py:104
msgid "Daemon stopped"
msgstr "Service arrêté"
-#: chwall/daemon.py:101
+#: chwall/daemon.py:107
msgid "Daemon started"
msgstr "Service démarré"
-#: chwall/daemon.py:113
+#: chwall/daemon.py:118
#, python-brace-format
msgid "{daemon_state} (disabled)"
msgstr "{daemon_state} (désactivé)"
-#: chwall/daemon.py:136
+#: chwall/daemon.py:141
#, python-brace-format
msgid "Kill process {pid}"
msgstr "Tuer le processus {pid}"
-#: chwall/daemon.py:138 chwall/daemon.py:158
+#: chwall/daemon.py:143 chwall/daemon.py:163
#, python-brace-format
msgid "Sending process {pid} signal {sid}"
msgstr "Envoi du signal {sid} au processus {pid}"
-#: chwall/daemon.py:197
+#: chwall/daemon.py:202
msgid "Exit signal received"
msgstr "Signal d’extinction reçu"
-#: chwall/daemon.py:202
+#: chwall/daemon.py:207
msgid "Cleaning up…"
msgstr "Nettoyage…"
-#: chwall/daemon.py:238
+#: chwall/daemon.py:243
#, python-brace-format
msgid "Starting Chwall Daemon v{version}…"
msgstr "Démarrage du service de Chwall v{version}…"
@@ -782,47 +794,3 @@ msgstr ""
"\n"
"Cette commande renvoie simplement la liste des urls d’origine de chaque\n"
"fond d’écran.\n"
-
-#, python-brace-format
-#~ msgid "background {prop}"
-#~ msgstr "{prop} du fond d’écran"
-
-#, python-brace-format
-#~ msgid "{number} cache entries have been removed."
-#~ msgstr "{number} entrées du cache ont été supprimées."
-
-#, python-brace-format
-#~ msgid "{number} broken pictures currently in cache"
-#~ msgstr "{number} images cassées actuellement dans le cache"
-
-#, python-brace-format
-#~ msgid "Last change was 1 minute and {seconds}s ago"
-#~ msgstr "Le dernier changement a eu lieu il y a 1 minute et {seconds}s"
-
-#, python-brace-format
-#~ msgid "Next change in 1 minute and {seconds}s"
-#~ msgstr "Prochain changement dans 1 minute et {seconds}s"
-
-#~ msgid "Start loop"
-#~ msgstr "Démarrage de la boucle"
-
-#~ msgid "Launch Chwall daemon when your session starts with XDG autostart"
-#~ msgstr ""
-#~ "Démarrer le service de Chwall avec un lanceur XDG lorsque votre session "
-#~ "démarre"
-
-#~ msgid "This use XDG autostart mechanism"
-#~ msgstr "Ceci utilise le mécanisme de démarrage XDG"
-
-#~ msgid "Install required service file to use systemd launcher"
-#~ msgstr ""
-#~ "Installer le fichier requis pour permettre le démarrage avec systemd"
-
-#~ msgid ""
-#~ "This option must be set to let you manage the Chwall daemon with systemd"
-#~ msgstr ""
-#~ "Cette option doit être sélectionnée pour que vous puissiez gérer le "
-#~ "service de Chwall avec systemd"
-
-#~ msgid "NASA Astronomy Picture Of The Day"
-#~ msgstr "Image astronomique du jour de la NASA"