Git Product home page Git Product logo

desk-changer's People

Contributors

arpagon avatar avalanchebreakdown avatar bige avatar jibec avatar sp-niemand avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

desk-changer's Issues

Rewrite daemon in JS

I've been contemplating rewriting the daemon in JS to remove the dependency on python. I've recently written some code that shows me it's possible to do this with gnome-shell now. The daemon could easily still run in the background while the user is logged in, no matter if the screen lock is active. This means rotation of the lockscreen and desktop would still be possible.

This is a massive rewrite of the entire extension I'm afraid. It will not only fundamentally change how the extension itself works, but it will actually fine tune control down into the individual parts of the extension. The daemon should still have it's own DBUS interface, as this could be useful for future development and integrations. This used to be how the extension communicated with the daemon and was necessary. However, when the daemon is in pure JS, the extension can communicate directly and the two will become one.

I'll be adding more to this as I work through issues and new approaches for the extension and daemon merging.

"TypeError: redeclaration of let label" with Gnome 3.24

With latest Gnome-Shell 3.24 I get an exception when I want to enter the "DeskChanger Settings"

TypeError: redeclaration of let label

Stack trace:
  Application<._getExtensionPrefsModule@resource:///org/gnome/shell/extensionPrefs/main.js:74:13
  wrapper@resource:///org/gnome/gjs/modules/lang.js:178:22
  Application<._selectExtension@resource:///org/gnome/shell/extensionPrefs/main.js:89:31
  wrapper@resource:///org/gnome/gjs/modules/lang.js:178:22
  Application<._onCommandLine@resource:///org/gnome/shell/extensionPrefs/main.js:243:17
  wrapper@resource:///org/gnome/gjs/modules/lang.js:178:22
  main@resource:///org/gnome/shell/extensionPrefs/main.js:399:5
  @<main>:1:49

DBUS LoadProfile should observe auto-rotate and emit preview

The LoadProfile method of the DBUS integration is not complete, see #TODO When auto-rotate is not observed, the loading of the profile will not update the current background. This also means that when a profile is loaded through DBUS, the preview for the extension will never change until the next rotation. This needs to be implemented so DBUS doesn't appear broken when a new profile is loaded.

It doesn't change the lockscreen wallpaper

$ G_MESSAGES_DEBUG=all ./desk-changer-daemon.py
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.370: ::dbus_register
-INFO: 11:42:55.370: successfully registered DBus name /org/gnome/Shell/Extensions/DeskChanger/Daemon
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.371: ::startup
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.371: successfully created DesktopProfile(default)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.371: successfully created LockscreenProfile(lockscreen)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.371: ::activate
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.372: loading profile default
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.374: adding file:///home/juan/Pictures/Fondos as directory to watch
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.374: descending into file:///home/juan/Pictures/Fondos to find wallpapers
file:///home/juan/Pictures/Fondos/a_quarter_to_heaven_by_vishstudio-d9ijs4k.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.375: adding wallpaper file:///home/juan/Pictures/Fondos/speechless_by_vishstudio-d9ojioa.jpg
....
-INFO: 11:42:55.503: restoring state of profile default
-INFO: 11:42:55.503: there are already 2 wallpapers in the queue, skipping
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.503: DesktopProfile(default)::preview ('file:///home/juan/Pictures/Fondos/giant_diego_sechi_by_matcom123-dblgqrj.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.503: [DBUS]::preview ('file:///home/juan/Pictures/Fondos/giant_diego_sechi_by_matcom123-dblgqrj.jpg',)
-INFO: 11:42:55.504: there are already 1 wallpapers in the queue, skipping
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: DesktopProfile(default)::preview ('file:///home/juan/Pictures/Fondos/tumblr_p6m73dMabg1sh6rbgo1_1280.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: [DBUS]::preview ('file:///home/juan/Pictures/Fondos/tumblr_p6m73dMabg1sh6rbgo1_1280.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: DesktopProfile(default)::changed ('file:///home/juan/Pictures/Fondos/giant_diego_sechi_by_matcom123-dblgqrj.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: [DBUS]::changed ('file:///home/juan/Pictures/Fondos/giant_diego_sechi_by_matcom123-dblgqrj.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: successfully loaded default with 1819 wallpapers
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: loading profile lockscreen
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: adding file:///usr/share/backgrounds as directory to watch
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: descending into file:///usr/share/backgrounds to find wallpapers
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: adding file:///usr/share/backgrounds/gnome as directory to watch
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.504: descending into file:///usr/share/backgrounds/gnome to find wallpapers
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/Wood.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/symbolics-2.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/symbolics-1.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/SeaSunset.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/Sandstone.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/Road.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/Icescape.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/Flowerbed.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/Fabric.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.505: adding wallpaper file:///usr/share/backgrounds/gnome/endless-shapes.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: adding wallpaper file:///usr/share/backgrounds/gnome/Dark_Ivy.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: adding wallpaper file:///usr/share/backgrounds/gnome/ColdWarm.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: adding wallpaper file:///usr/share/backgrounds/gnome/AndICallItBoke.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: adding wallpaper file:///usr/share/backgrounds/gnome/adwaita-night.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: adding wallpaper file:///usr/share/backgrounds/gnome/adwaita-morning.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: adding wallpaper file:///usr/share/backgrounds/gnome/adwaita-day.jpg
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: adding wallpaper file:///usr/share/backgrounds/gnome/adwaita-timed.xml

(desk-changer-daemon.py:22724): -WARNING **: 11:42:55.506: available wallpapers for lockscreen is under 100 (17) - strict random checking is disabled
-INFO: 11:42:55.506: restoring state of lockscreen is disabled while type LockscreenProfile(lockscreen)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: got file:///usr/share/backgrounds/gnome/Wood.jpg as a possible next wallpaper
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: LockscreenProfile(lockscreen)::preview ('file:///usr/share/backgrounds/gnome/Wood.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: ignoring preview LockscreenProfile(lockscreen)::preview - in desktop mode
-INFO: 11:42:55.506: added file:///usr/share/backgrounds/gnome/Wood.jpg to the queue for LockscreenProfile(lockscreen)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: got file:///usr/share/backgrounds/gnome/Fabric.jpg as a possible next wallpaper
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: LockscreenProfile(lockscreen)::preview ('file:///usr/share/backgrounds/gnome/Fabric.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.506: ignoring preview LockscreenProfile(lockscreen)::preview - in desktop mode
-INFO: 11:42:55.508: added file:///usr/share/backgrounds/gnome/Fabric.jpg to the queue for LockscreenProfile(lockscreen)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.508: successfully loaded lockscreen with 17 wallpapers
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.508: added timer for 120 seconds
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.508: [DBUS]::Get(history)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.509: [DBUS]::Get(queue)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.509: [DBUS]::Get(history)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.509: [DBUS]::Get(queue)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.509: [DBUS]::Get(history)
(desk-changer-daemon.py:22724): -DEBUG: 11:42:55.509: [DBUS]::Get(queue)
(desk-changer-daemon.py:22724): -DEBUG: 11:44:55.808: got file:///home/juan/Pictures/Fondos/drag-race-2017-billboard-1500.jpg as a possible next wallpaper
(desk-changer-daemon.py:22724): -DEBUG: 11:44:55.808: DesktopProfile(default)::preview ('file:///home/juan/Pictures/Fondos/drag-race-2017-billboard-1500.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:44:55.808: [DBUS]::preview ('file:///home/juan/Pictures/Fondos/drag-race-2017-billboard-1500.jpg',)
-INFO: 11:44:55.808: added file:///home/juan/Pictures/Fondos/drag-race-2017-billboard-1500.jpg to the queue for DesktopProfile(default)
(desk-changer-daemon.py:22724): -DEBUG: 11:44:55.808: DesktopProfile(default)::changed ('file:///home/juan/Pictures/Fondos/tumblr_p6m73dMabg1sh6rbgo1_1280.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:44:55.808: [DBUS]::changed ('file:///home/juan/Pictures/Fondos/tumblr_p6m73dMabg1sh6rbgo1_1280.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:44:55.808: got file:///usr/share/backgrounds/gnome/Flowerbed.jpg as a possible next wallpaper
(desk-changer-daemon.py:22724): -DEBUG: 11:44:55.808: LockscreenProfile(lockscreen)::preview ('file:///usr/share/backgrounds/gnome/Flowerbed.jpg',)
(desk-changer-daemon.py:22724): -DEBUG: 11:44:55.808: ignoring preview LockscreenProfile(lockscreen)::preview - in desktop mode
-INFO: 11:44:55.808: added file:///usr/share/backgrounds/gnome/Flowerbed.jpg to the queue for LockscreenProfile(lockscreen)

The lockscreen wallpaper is /usr/share/backgrounds/gnome/Wood.jpg and it isn't changed.

"Change with Profile"?

There is an option named "Change with Profile", what's the meaning of this? What does it do?

Various errors with their fixes

Hello, @BigE.

While porting this extension into a Cinnamon applet, I found several errors in the daemon's code. Although these errors are not significant to you nor to your extension, I thought of reporting them since these errors also happen in any Ubuntu 16.04 based distribution using Gnome Shell.

GLib.log_default_handler error

Using the call to this function like follows...

GLib.log_default_handler(None, level, message)

...it will complain that the first argument shouldn't be None (even when in the documentation says that None is allowed ยฌยฌ) and that the 4 arguments are required.

Using the following code will make it work on Ubuntu 16.04 based systems:

GLib.log_default_handler('Application', level, message, 0)

_emit_signal error

Using the following code...

retval = GLib.VariantBuilder(variant_type_from_string("r"))

...will fail saying that arguments aren't supported. This will cause all signals emitted by the daemon to fail and the wallpaper preview on the menu will never update (among other problems).

Using the following code will make all work as it should:

retval = GLib.VariantBuilder.new(variant_type_from_string("r"))

Memory leak

Every time the daemon starts, the memory consumed by the gnome-shell process almost instantly doubles. And in every update of the wallpaper preview, the gnome-shell memory consumption goes up about 2 to 5 megabytes. I did several tests on Ubuntu Gnome 16.04 and in Archlinux with Gnome Shell and in both systems running the daemon with an interval of 10 seconds the memory consumed by the gnome-shell process went up to about 700Mb-1Gb in a lapse of just 2 hours.

Long story short, the daemon itself isn't the culprit. I tracked down the leak to the use of a Clutter.Texture(). I switched to a Clutter.Image() and the memory leak just disappeared.

I managed to fix this on my port for Cinnamon, but I couldn't make the Clutter.Image() work on Gnome Shell. To be honest, I didn't try too hard either. I simply cannot work on Gnome Shell.

Extension working partially

Hello, I installed your extension on my ubuntu gnome 16.04 (running gnome-shell 3.20.4) and it worked like a charm. After I manually reinstalled it (was trying to find out the reason why LCtrl+Left shortcut wasnt working), the Daemon(?) isnt working properly. Whenever I switch the 'show daemon status' toggle under the preferences, the switch animates and everything, but fails to do anything. Switching the 'daemon on' toggle also doesnt do anything.

I tried uninstalling everything and reinstalling multiple times, but with no luck. My uninstall method consists in just deleting the @folder under gnome-shell/extensions directory, hopefully it is the correct way of doing things.

To further describe the problem, the extension UI used to show a preview of the next wallpaper to be used, this is gone and is nowhere to be found. Also selecting the open next wallpaper location button isnt doing its job. Choosing open current wallpaper does work fine and all other buttons seem to animate correctly.

Not sure if its important, but everytime I deleted/reinstalled the extension, it somehow remembers all my profiles and picture paths, although I thought I erased all files; could you let me know where this information is stored?

I hope Im using the 'Issues' tab correctly, otherwise I would be happy if you could point me in the right direction to post my question and you can close/delete this issue.

Thanks in advance

Edit: Im using version 13 of the extension

extension crashes and it's disabled automatically by gnome-shell

Arch Linux
Shell version: 3.28.0
Extension version: 26

Several warnings and errors in journal log:

abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerDaemon' on the module 'daemon'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerSettings' on the module 'settings'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerProfileDesktop' on the module 'menu'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerPreviewMenuItem' on the module 'menu'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerPreview' on the module 'ui'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerOpenCurrent' on the module 'menu'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerRotation' on the module 'menu'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerControls' on the module 'menu'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerButton' on the module 'ui'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerStateButton' on the module 'ui'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:51 arch-juan gnome-shell[639]: Some code accessed the property 'DeskChangerDaemonControls' on the module 'menu'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
abr 03 12:39:52 arch-juan gnome-shell[639]: Could not set property lockscreen on remote object /org/gnome/Shell/Extensions/DeskChanger/Daemon: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell.Extensions.DeskChanger.Daemon was not provided by any .service files
abr 03 12:41:05 arch-juan gnome-shell[639]: Object .Gjs_DeskChangerButton (0x55946a591cd0), has been already finalized. Impossible to set any property to it.
abr 03 12:41:05 arch-juan gnome-shell[639]: Object .Gjs_DeskChangerButton (0x55946a5930f0), has been already finalized. Impossible to set any property to it.
abr 03 12:41:05 arch-juan gnome-shell[639]: Object .Gjs_DeskChangerStateButton (0x55946a583550), has been already finalized. Impossible to set any property to it.
abr 03 12:41:06 arch-juan gnome-shell[639]: Object .Gjs_DeskChangerButton (0x55946c036150), has been already finalized. Impossible to set any property to it.
abr 03 12:41:06 arch-juan gnome-shell[639]: Object .Gjs_DeskChangerButton (0x55946c0289d0), has been already finalized. Impossible to set any property to it.
abr 03 12:41:06 arch-juan gnome-shell[639]: Object .Gjs_DeskChangerStateButton (0x55946c029350), has been already finalized. Impossible to set any property to it.
abr 03 12:41:06 arch-juan gnome-shell[639]: Could not set property lockscreen on remote object /org/gnome/Shell/Extensions/DeskChanger/Daemon: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.48 was not provided by any .service files

The extension crashes and it's disabled automatically by gnome-shell.

Provide a way to disable or clear the keyboard shortcuts

#3

Is there actually a way to completely disable the shortcuts for changing to wallpapers, to avoid accidental usage?

Whoops! I missed this somehow. I might need to enable the backspace key to actually clear the shortcut... I will need to look into this. Just creating a new issue for better tracking.

Configuration option of allowed files

Coming from #38 - there should really be a way to customize the daemon so it doesn't load xml files. By default it should load them, because this is the way Gnome itself works. It would be nice, however, to give the user more control over what files the daemon does load.

Currently the daemon reads from a property while loading files into the daemon of accepted mime types. Ideally, this would populate from the settings, defaulting to what is currently set here now.

Change keyboard shortcuts to something less intrusive.

I've seen a couple of comments mention that the current default key bindings are interfering with other applications. I have no issue with changing the default values to something a little less used, but I have no ideas that would be "simple" to use. For this task, I will be picking new default values. Please put any suggestions you would like to see as the default keybindings for previous/next wallpaper. It is also possible to provide no defaults initially and only allow the keyboard shortcuts to work if the user defines them.

Toggle desks on key-combination

I'd like to be able to switch backgrounds on a key-press. How difficult is this to implement? I can attempt this, but I'm just starting out with javascript (and gnome extensions), so it will take me a while to figure out the codebase and API.

Change interval to 0

When I change the interval to 0 the whole Gnome env stops responding and rebooting doesn't fix the problem. Maybe it shouldn't allow this change.

Gdm login screen background

Would it be possible to change the login screen background as well as the screensaver? There's no gnome flag for it but the setting is in /usr/share/gnome-shell/theme/gdm3.css on my system (It's a symlink to /etc/alternatives/gdm3.css). The default setting is

#lockDialogGroup {
background: #2c001e url(resource:///org/gnome/shell/theme/noise-texture.png);
background-repeat: repeat; }

Option to remove or disable shortcuts?

Great extension, but it would be nice to have a way to disable the global shortcuts, as this can interfere with other application specific shortcuts. Also, these shortcuts are fairly generic and seem to be commonly used by other applications (i.e., many word processors allow you to skip over words with Crtl-left/right).

Version 22 issues

Hello, @BigE.

I tested the new version 22 of your extension and I found a couple of issues.

Typo

There seems to be a typo on the application.py file in line 167. The daemon wouldn't start from the extension menu, so I launched it from the terminal and I got the following message:

Settings schema 'org.gnome.shell.extensions.desk-changer' does not contain a key named 'lockstring-profile'

The line reads:

self.load_profile(self._settings.get_string('lockstring-profile'), True, False)

...when it should read...

self.load_profile(self._settings.get_string('lockscreen-profile'), True, False)

After changing the lockstring-profile string to lockscreen-profile, the daemon started normally.

No wallpaper rotation

With rotation set to an interval, and random set to false, the wallpapers aren't changed. It gets stuck on what would be the first wallpaper. Immediately after random is set to true, the wallpapers start to rotate. When I launch the daemon from terminal with G_MESSAGES_DEBUG=all, the following is part of its output.

-INFO: adding file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg to the queue
-INFO: profile default has been loaded with 19 wallpapers
(desk-changer-daemon.py:1482): -DEBUG: Profile(name=default)::preview ('file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg',)
(desk-changer-daemon.py:1482): -DEBUG: [DBUS]::preview ('file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg',)
-INFO: adding file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg to the queue
(desk-changer-daemon.py:1482): -DEBUG: Profile(name=default)::preview ('file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg',)
(desk-changer-daemon.py:1482): -DEBUG: [DBUS]::preview ('file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg',)
(desk-changer-daemon.py:1482): -DEBUG: added timer for 10 seconds
(desk-changer-daemon.py:1482): -DEBUG: [DBUS] org.freedesktop.DBus.Properties:GetAll
(desk-changer-daemon.py:1482): -DEBUG: [DBUS] org.freedesktop.DBus.Properties:GetAll
-INFO: adding file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg to the queue
(desk-changer-daemon.py:1482): -DEBUG: Profile(name=default)::preview ('file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg',)
(desk-changer-daemon.py:1482): -DEBUG: [DBUS]::preview ('file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg',)
(desk-changer-daemon.py:1482): -DEBUG: [DBUS]::changed ('file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg',)
-INFO: adding file:///usr/share/backgrounds/gnome/Bokeh_Tails.jpg to the queue

# The previous 4 lines are logged every time the daemon *switches* wallpapers.
# But it is always the exact same image.

(desk-changer-daemon.py:1482): -DEBUG: [DBUS] org.gnome.Shell.Extensions.DeskChanger.Daemon:Quit
(desk-changer-daemon.py:1482): -DEBUG: ::shutdown
(desk-changer-daemon.py:1482): -DEBUG: ::dbus_unregister
-INFO: removing DBus registration for name /org/gnome/Shell/Extensions/DeskChanger/Daemon

Lock screen wallpaper rotation

I didn't find any issues with this feature because I seem not to be able to actually lock the screen. It seems that it could be due to the fact that I don't use GDM as my desktop manager (?), I use LightDM instead. I don't even have a Lock Screen button on my system menu.

TypeError: Main.screenShield is null

Hey,

I'm unable to enable this extension using 3.26, extensions.gnome.org and gnome-tweak-tool report an 'error loading extension'. Checking lg gives TypeError: Main.screenShield is null. I imagine this is because I use LightDM as a login manager instead of GDM. Searching encountered a similar error in another extension here.

Thanks for any available assistance if this can be addressed.

It shouldn't select .xml files

I have defined 2 profiles: one for desktop and one for lockscreen.
The lockscreen profile points to /usr/share/backgrounds. In that folder there is a gnome wallpaper xml: adwaita-timed.xml. I think the .xml backgrounds doesn't make sense in a program that changes the wallpaper.

...
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.942: loading profile lockscreen
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.942: adding file:///usr/share/backgrounds as directory to watch
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.942: descending into file:///usr/share/backgrounds to find wallpapers
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.942: adding file:///usr/share/backgrounds/gnome as directory to watch
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.942: descending into file:///usr/share/backgrounds/gnome to find wallpapers
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.942: adding wallpaper file:///usr/share/backgrounds/gnome/Wood.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/symbolics-2.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/symbolics-1.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/SeaSunset.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/Sandstone.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/Road.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/Icescape.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/Flowerbed.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/Fabric.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/endless-shapes.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/Dark_Ivy.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/ColdWarm.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/AndICallItBoke.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.943: adding wallpaper file:///usr/share/backgrounds/gnome/adwaita-night.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: adding wallpaper file:///usr/share/backgrounds/gnome/adwaita-morning.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: adding wallpaper file:///usr/share/backgrounds/gnome/adwaita-day.jpg
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: adding wallpaper file:///usr/share/backgrounds/gnome/adwaita-timed.xml

(desk-changer-daemon.py:13007): -WARNING **: 11:02:31.944: available wallpapers for lockscreen is under 100 (17) - strict random checking is disabled
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: got file:///usr/share/backgrounds/gnome/Flowerbed.jpg as a possible next wallpaper
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: LockscreenProfile(lockscreen)::preview ('file:///usr/share/backgrounds/gnome/Flowerbed.jpg',)
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: ignoring preview LockscreenProfile(lockscreen)::preview - in desktop mode
-INFO: 11:02:31.944: added file:///usr/share/backgrounds/gnome/Flowerbed.jpg to the queue for LockscreenProfile(lockscreen)
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: got file:///usr/share/backgrounds/gnome/adwaita-timed.xml as a possible next wallpaper
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: LockscreenProfile(lockscreen)::preview ('file:///usr/share/backgrounds/gnome/adwaita-timed.xml',)
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: ignoring preview LockscreenProfile(lockscreen)::preview - in desktop mode
-INFO: 11:02:31.944: added file:///usr/share/backgrounds/gnome/adwaita-timed.xml to the queue for LockscreenProfile(lockscreen)
(desk-changer-daemon.py:13007): -DEBUG: 11:02:31.944: successfully loaded lockscreen with 17 wallpapers
...

Touchpad is not working

I am using Ubuntu 18.04 before this I had windows 10 installed and the touch-pad was working fine but since I installed Ubuntu 18.04 the touch-pad isn't working.
So far i have tried to install xserver-xorg-input-synaptics, then i also tried going into /etc/default/grub
and edit this ' GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" ' and replace "quiet splash" to "acpi=force" but that also didn't worked out.

Help me out?

Creates 20+ GB syslog

Hi Eric!
I got a warning, that my disk is almost full. Reason was the syslog file, more than 20Gb (yes, gigabyte).
The most of the entires were from your plugin: "file is too similar, grabbing a different one"

Gio.DbusError

screenshot from 2018-03-30 18-02-58

Having bug error when tires to change the wallpaper and the wallpaper isn't changing by it self after the given interval.
Python is already installed and updated

Remove desk-changer icon from top panel

Since the desk-changer icon in the top panel isn't really fulfilling a specific function, it would be better to remove it completely from there, if the extension is integrated in the system menu. Additionally, the icon looks a little bit out of place in terms of padding and color, since it's not monochrome, like the others.

Please consider adding a switchable option in the settings.

Ubuntu doesn't have `python` executable

Recently discovered by investigation of #33 - Ubuntu has python3 and python3-gi installed by default, but does not link up a python executable until python2 is installed. This breaks the extension, more specifically the daemon won't start until python2 is installed. The daemon is compatible with python 2 or python 3, so it should run no matter which version or executable is installed. Currently in Version 26 of the extension, we're using a python file with a shebang to execute the daemon.

I'm looking for any recommendations of how to handle this better. Currently I'm contemplating a shell wrapper script for starting the daemon. This method would work by detecting the executable to use before running python code and then executing the correct python executable. Another option, as summarized on StackOverflow is to add some shell code to the python file that will help detect the correct executable. I'm open to any other ideas too.

How do the buttons work?

there are the 4 buttons for controlling the wallpaper, but how do the 2 middle ones exactly work? I.e. When i press the Play-button, the stop button shows up in that place, is it playing now because i pressed play or is it stopped now because i currently shows stop? Same with the shuffle / repeat buttons

Change on every new hour

First of all, thanks for creating this nice extension!

To make it even better, it would be great to have an option to change the wallpaper on every new hour, to get a feeling for the time, especially when you are working for several hours in a "flow" condition :)
It's not about changing the wallpaper every hour or so, but when a new hour starts, like 14:00, 15:00 and so on.

Is there actually a way to completely disable the shortcuts for changing to wallpapers, to avoid accidental usage?

Thanks in advance!

Add lockscreen background support

I've been wanting to add lockscreen support for a while, and after a comment on the extension site, I've decided it's time. It would be simple to add lockscreen synchronization with the current profile as it's a simple setting of a GSettings key at the same time the background is set. I would like to take this a bit further than that though. My end goal is to add lockscreen support that will synchronize with the desktop background, but also add separate lockscreen profile support.

Lockscreen profile support would be a simple setting, like the current profile, where you could specify any profile to be used while the screen is locked. This means that you could have one profile setup and configured for the desktop, displaying only those wallpapers to the desktop, leaving the lockscreen unchanged. Then, as a separate setting, have another profile with completely different wallpapers used only when the lockscreen is displayed. Providing both of these along with #5 would allow for pretty limitless options profile/wallpaper.

Through some improvements made in the extension itself, I've found ways to determine when the session is locked versus when the extension is unloaded or removed. I'm not 100% sure how I would implement this in the daemon yet because it would require a split state (unlocked vs locked) or unloading the desktop profile then loading the lockscreen profile on switch. I'm going to have to play around with this one a bit to find the best solution. Both methods of implementing this have their own drawbacks... one being the load time of each profile on lock and unlock, the other being the memory required to have two profiles loaded at once.

Considering daytime

I have 100+ different wallpapers of nature showing a different time of the day, that could be roughly grouped in morning, daytime, evening and night. These wallpapers could be then put in one of the four folders, that will represent the according daytime. Your extension then could have an option to only show wallpapers from one of these folders, according to the present daytime, so that one will only see wallpapers depicting midday from, i.d. 11:00 - 17:00, and so on. It's crucial, that the time periods for the 4 folders should be manually adjustable. A more sophisticated approach would be to consider the sun position automatically, like it's done in Redshift, and then just split the whole day in 4 parts to resemble the 4 daytimes mentioned above. I wouldn't split the day into 4 equal parts, but make the morning and evening each only 4 hours long, and the day and night each 8 hours long.

workspaces walls isolation

Can you create different wallpapers to different workspaces ?
This would be devastating XD for gnome.

How can it look :

  1. Different profile for different workspace
  2. Just choose different wall's from one profile, but with checking it is not repeat

Error is not getting sent

Whenever i have some general error and then data is collected , when it is about to send the data the data is not sent and it shows me this.
How to fix it ?
screenshot from 2018-04-08 11-16-39

Tight loop causing CPU pegging

The background randomizer while loop at wallpaper.py#L188-L201 sometimes gets stuck where none of the conditions are satisfied and it tight loops. Locally I've inserted a time.sleep(0.5) to alleviate the issue at the end of the loop if wallpaper is None.

Since it looks like this logic is in a state of flux in other branches, I've held on refactoring the logic and submitting a PR. I believe that using a collections.deque object to hold the history with a maxlen of x where x < (len(self._wallpapers) - some_const_or_precentage_of_wallpapers_len) would ensure that at least some of the available wallpapers are always considered for placement in the queue.

If this sounds amenable I can work it out and submit a pr for further discussion.

Exhaustive image rotation

It would be really nice if desk-changer had an option to show every image in an image pool such that once an image is displayed, it isn't displayed again until every other image in the pool has been displayed.

Perhaps this could be implemented by the extension creating an image "playlist" in the background every time a new profile is activated. Upon completion of the playlist, a new one would be made to retain a sense of randomness.

Daemon crashes

Since the update the daemon now crashes with the following error:

$ ./desk-changer-daemon.py

(desk-changer-daemon.py:9426): GLib-GIO-ERROR **: Settings schema 'org.gnome.desktop.screensaver.background' is not installed

Trace/breakpoint trap (core dumped)

This occurs on two different machines running Ubuntu 17.04 64-bit with GNOME Shell 3.24.2. Previous version of the extension works without issue.

Exstension sudenly quit working...

Running fairly standard Ubuntu-Gnome 17.04 install. No dev repositories. Not sure exactly when, but probably within the past week, the extension quit working. I can open prefs, but never see the Preview Icon.

Tried uninstall/reinstall. No change.

Let me know if there are any logs I can send to help. Thanks.

Remove thumbnails from wallpapers

Gnome stores image thumbnails as hidden files.

For Example, for image Hello.jpg, it creates .thumb_Hello.jpg a hidden files.

Please avoid these kind of images.

Image rotation

Pictures are not correctly rotated when displayed. They are all landscaped, even if exif info is portrait.

Hard-coded pixel values results in strange preview sizes and other irregularities

I have a HiDPI display, and so extensions with hard-coded pixel values look strange on my display. Desk-changer shows the preview for the next wallpaper in a fixed size that doesn't take up more than half the width of the menu. I imagine if there's a different way of specifying the width (i.e. in percentage), then that would fix the problem.

Additional interval options

Hi!

It would be a bit more convenient, though not really necessary, to have more options regarding the time intervals, such as

  • a daily rotation mode
  • the possibility to select units of time in the interval mode, in addition to just having seconds

Gnome-shell crashes

Arch Linux
Gnome-shell 3.28.1 on Wayland

I've been suffering from gnome session crashes for a few weeks now and it looks like the problem is in:

...changing the background in gsettings/dconf from an extension is the trigger for this bug.

More info: https://bugs.archlinux.org/task/58318

Ubuntu 17.10 - Error message

Hi,
I just install desk changer from the Gnome-Website. When I try to change a wallpaper with the extension, the following errormessage appears:

error: Desk Changer: Gio.DBusError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell.Extensions.DeskChanger.Daemon was not provided by any .service files

Any idea, how I can fix this?

I use Ubuntu 17.10 with wayland and the gnome-session (not the ubuntu-session). I also tried to use Xorg, but the behaviour is the same.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.