Skip to content

Add photo carousel desklet - #1871

Open
jonnymccullagh wants to merge 3 commits into
linuxmint:masterfrom
jonnymccullagh:photocarousel
Open

Add photo carousel desklet#1871
jonnymccullagh wants to merge 3 commits into
linuxmint:masterfrom
jonnymccullagh:photocarousel

Conversation

@jonnymccullagh

Copy link
Copy Markdown

Photo Carousel desklet, which displays and automatically rotates images from a user-selected folder. It supports configurable dimensions, rotation and fade timing, navigation controls, frame styling, background blur, file path and EXIF information, GPS map links, and configurable folder-scanning limits.

@github-actions

Copy link
Copy Markdown

Best-practices scanner

This is a regex-based check for API usage that can pose security, performance or
maintainability issues, or that may already be provided by Cinnamon. Most findings
are advisory and do not automatically disqualify a pull request.

This check is not perfect and will not replace a normal review.


Found 19 potential issue(s):

⚠️ WARNING

⚠️ sync_file_enumerate_children

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:278

let fileEnum = dir.enumerate_children(

Synchronous enumerate_children() blocks the main loop.
Use enumerate_children_async() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:352

let fileEnum = folder.enumerate_children(

Synchronous enumerate_children() blocks the main loop.
Use enumerate_children_async() instead.

⚠️ sync_file_query_exists

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:242

if (!this.baseDir.query_exists(null)) {

query_exists() is a synchronous call that can block on slow/network filesystems.
Prefer attempting the operation and handling a Gio.IOErrorEnum.NOT_FOUND error instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:1024

if (this.baseDir.query_exists(null)) {

query_exists() is a synchronous call that can block on slow/network filesystems.
Prefer attempting the operation and handling a Gio.IOErrorEnum.NOT_FOUND error instead.

⚠️ tweener_usage

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:7

const Tweener = imports.ui.tweener;

(Cinnamon 5.4) The Tweener module is deprecated. Use Clutter actor easing instead.
Actors have ease() and ease_property() methods (patched in environment.js).
Example: actor.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD });

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:501

Tweener.addTween(this._container, {

(Cinnamon 5.4) The Tweener module is deprecated. Use Clutter actor easing instead.
Actors have ease() and ease_property() methods (patched in environment.js).
Example: actor.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD });

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:507

Tweener.addTween(this._container, {

(Cinnamon 5.4) The Tweener module is deprecated. Use Clutter actor easing instead.
Actors have ease() and ease_property() methods (patched in environment.js).
Example: actor.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD });

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:955

Tweener.addTween(this._container, {

(Cinnamon 5.4) The Tweener module is deprecated. Use Clutter actor easing instead.
Actors have ease() and ease_property() methods (patched in environment.js).
Example: actor.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD });

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:961

Tweener.addTween(this._container, {

(Cinnamon 5.4) The Tweener module is deprecated. Use Clutter actor easing instead.
Actors have ease() and ease_property() methods (patched in environment.js).
Example: actor.ease({ opacity: 255, duration: 200, mode: Clutter.AnimationMode.EASE_OUT_QUAD });

⚠️ lang_bind

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:113

this._backButton.connect('clicked', Lang.bind(this, this._on_back_clicked));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:114

this._backButton.connect('enter-event', Lang.bind(this, this._on_nav_button_enter));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:115

this._backButton.connect('leave-event', Lang.bind(this, this._on_nav_button_leave));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:129

this._folderButton.connect('clicked', Lang.bind(this, this._on_folder_clicked));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:130

this._folderButton.connect('enter-event', Lang.bind(this, this._on_nav_button_enter));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:131

this._folderButton.connect('leave-event', Lang.bind(this, this._on_nav_button_leave));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:145

this._mapButton.connect('clicked', Lang.bind(this, this._on_map_clicked));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:146

this._mapButton.connect('enter-event', Lang.bind(this, this._on_nav_button_enter));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:147

this._mapButton.connect('leave-event', Lang.bind(this, this._on_nav_button_leave));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.

photocarousel@redbranch.net/files/photocarousel@redbranch.net/desklet.js:162

this._openImageButton.connect('clicked', Lang.bind(this, this._on_open_image_clicked));

Lang.bind() is deprecated. Use arrow functions (() => {}) or Function.prototype.bind() instead.


Automated pattern check.

@claudiux
claudiux marked this pull request as draft July 22, 2026 22:11
@jonnymccullagh
jonnymccullagh marked this pull request as ready for review August 4, 2026 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant