Skip to content

Add calendar-hijri@r applet - #8847

Open
sporteka2 wants to merge 11 commits into
linuxmint:masterfrom
sporteka2:master
Open

Add calendar-hijri@r applet#8847
sporteka2 wants to merge 11 commits into
linuxmint:masterfrom
sporteka2:master

Conversation

@sporteka2

Copy link
Copy Markdown

Description

A fork of the built-in Calendar applet with an optional Islamic (Hijri) date display.

Features

  • All original Cinnamon calendar functionality preserved
  • Toggle "Show Islamic (Hijri) date" in settings
  • Offline Kuwaiti algorithm — no internet required
  • Language follows system locale (en/ru/ar/de/fr/es/tr/id/fa/ur)
  • Handles Cinnamon 6.x with libsoup3 compatibility

Testing

Tested on Linux Mint 22.3 (Cinnamon 6.6.7).

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:56

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:58

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:82

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:86

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:90

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:96

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:129

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:137

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:149

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:161

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:192

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:211

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:291

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:295

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:302

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:306

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:313

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:452

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:443

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:202

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:56

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:58

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:82

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:86

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:90

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:96

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:129

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:137

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:149

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:165

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:196

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:215

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:295

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:299

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:306

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:310

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:317

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:462

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:453

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:202

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:56

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:58

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:82

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:86

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:90

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:96

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:129

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:137

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:149

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:160

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:191

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:210

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:290

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:294

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:301

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:305

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:312

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:451

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:442

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:202

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

@sporteka2

Copy link
Copy Markdown
Author

Спасибо за проверку. Все предупреждения о Lang.bind() — унаследованы от оригинального calendar@cinnamon.org, но мы их заменим на стрелочные функции в ближайшее время.

@sporteka2

Copy link
Copy Markdown
Author

Впрочем, эти предупреждения — от оригинального calendar@cinnamon.org. Когда они исправят в оригинале — я синхронизируюсь.

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:56

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:58

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:82

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:86

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:90

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:96

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:129

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:137

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:149

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:160

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:191

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:210

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:290

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:294

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:301

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:305

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:312

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:451

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:442

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:202

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:56

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:58

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:82

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:86

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:90

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:96

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:129

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:137

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:149

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:160

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:191

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:210

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:290

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:294

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:301

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:305

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:312

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:451

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:442

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:202

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

Update hijri.js to use the .NET UmAlQuraCalendar lookup table (years 1318-1500 AH)
and refresh README accordingly. Matches the standalone calendar-hijri repo.
@github-actions

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:56

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:58

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:82

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:86

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:90

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:96

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:129

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:137

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:149

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:160

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:191

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:210

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:290

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:294

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:301

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:305

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:312

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:451

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:442

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:202

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

Sync with standalone calendar-hijri repo (RJD lookup instead of .NET bitmask,
README describes official Saudi Umm al-Qura / KACST calendar).
@github-actions

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:56

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:58

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:82

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:86

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:90

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:96

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:129

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:137

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:149

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:160

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:191

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:210

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:290

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:294

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:301

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:305

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:312

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:451

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:442

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:202

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

@github-actions

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:56

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:58

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:82

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:86

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:90

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:96

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:129

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:137

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:149

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:160

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:191

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:210

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:290

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:294

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:301

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:305

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:312

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:451

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:442

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:202

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

@github-actions

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:63

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:66

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:87

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:91

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:95

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:101

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:134

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:142

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:154

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:160

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:191

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:210

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:290

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:294

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:301

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:305

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:312

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:451

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:442

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:212

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

@github-actions

Copy link
Copy Markdown
Contributor

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 32 potential issue(s):

⚠️ WARNING

⚠️ lang_bind

calendar-hijri@r/files/calendar-hijri@r/applet.js:61

this.event_list.connect("launched-calendar", Lang.bind(this.menu, this.menu.toggle));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:63

this.event_list.connect("start-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:66

this.event_list.connect("stop-pass-events", Lang.bind(this.menu, () => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:87

this.go_home_button.connect("enter-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:91

this.go_home_button.connect("leave-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:95

this.go_home_button.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:101

this.go_home_button.connect("button-release-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:134

this._calendar.connect("selected-date-changed", Lang.bind(this, this._updateClockAndDate));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:142

item.connect("activate", Lang.bind(this, this._onLaunchSettings));

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

calendar-hijri@r/files/calendar-hijri@r/applet.js:154

this.desktop_settings.connect("changed::clock-use-24h", Lang.bind(this, function (key) {

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:160

this.desktop_settings.connect("changed::" + FIRST_WEEKDAY_KEY, Lang.bind(this, this._onSettingsChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:191

Lang.bind(this, this._onScroll));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:210

this._update_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_update));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:290

this.actor.connect('style-changed', Lang.bind(this, this._onStyleChange));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:294

back.connect('clicked', Lang.bind(this, this._onPrevMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:301

forward.connect('clicked', Lang.bind(this, this._onNextMonthButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:305

back.connect('clicked', Lang.bind(this, this._onPrevYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:312

forward.connect('clicked', Lang.bind(this, this._onNextYearButtonClicked));

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

calendar-hijri@r/files/calendar-hijri@r/calendar.js:451

button.connect('clicked', Lang.bind(this, function(b) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:394

3, Lang.bind(this, this._perform_gc)

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:553

this._reload_today_id = Mainloop.idle_add(Lang.bind(this, this._idle_do_reload_today));

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:645

this.selected_date_label.connect("button-press-event", Lang.bind(this, (actor, event) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:672

this.no_events_button.connect('clicked', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:721

vscroll.connect('scroll-start', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:724

vscroll.connect('scroll-stop', Lang.bind(this, () => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:776

this._no_events_timeout_id = Mainloop.timeout_add(600, Lang.bind(this, function() {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:810

row.connect("view-event", Lang.bind(this, (row, uuid) => {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:829

this._scroll_to_idle_id = Mainloop.idle_add(Lang.bind(this, function(row) {

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

calendar-hijri@r/files/calendar-hijri@r/eventView.js:860

this.actor.connect("enter-event", Lang.bind(this, () => {

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

⚠️ generic_container

calendar-hijri@r/files/calendar-hijri@r/calendar.js:442

let dot_box = new Cinnamon.GenericContainer(

(Cinnamon 6.6) Cinnamon.GenericContainer is deprecated. It was a workaround for when
JavaScript classes could not override ClutterActor virtual functions.
Create a GObject subclass of St.Widget (or another container) and override
the vfunc_get_preferred_width, vfunc_get_preferred_height, and
vfunc_allocate methods directly instead.

ℹ️ INFO

ℹ️ shell_string_spawn

calendar-hijri@r/files/calendar-hijri@r/applet.js:207

Util.spawnCommandLine("xdg-open https://cinnamon-spices.linuxmint.com/strftime.php");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.

calendar-hijri@r/files/calendar-hijri@r/applet.js:212

Util.spawnCommandLine("cinnamon-settings calendar");

Prefer argument vector spawn functions over shell command strings.
This is especially important when arguments include untrusted input (user data,
filenames, settings values, etc.) as shell strings are vulnerable to injection.
Static command strings are generally fine, but argv is always safer.
Use Util.spawn(["cmd", "arg1", "arg2"]) or Util.trySpawn() instead.


Automated pattern check.

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.

2 participants