Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
9c67471
cinnamon-calendar-server.py: Refresh remote calendars when the
mtwebster Jan 20, 2025
913dba3
windowManager.js: Fix cleanup of WorkspaceOsd instances.
mtwebster Jan 24, 2025
627a419
st-entry.c: Fix argument order for _st_paint_shadow_with_opacity().
mtwebster Feb 6, 2025
ccb036f
Fixed issue with grouped-window-list-thumbnail-menu hover (#12666)
ilhamifham Feb 6, 2025
f5b87e6
6.4.7
clefebvre Feb 7, 2025
667afb5
gestures: Show the OSD when using gestures to change volume (#12731)
JosephMcc Feb 10, 2025
3513662
Bugfix for Cinnamon issue 12707 (#12734)
timfeierabend Feb 17, 2025
256430a
6.4.8
clefebvre Feb 24, 2025
8e4145a
placesManager.js: Go back to having isRemovable() call can_unmount().…
mtwebster Jan 23, 2026
4574717
menu applet: remove 'force show panel' toggle as ... (#13394)
fredcw Jan 23, 2026
118bd44
menu applet: fix sidebar separator showing inconsistently (#13438)
fredcw Jan 23, 2026
bc5c489
printer applet: Switch to XSI icons
clefebvre Jan 23, 2026
0ceeab9
network applet: Switch to XSI icons
clefebvre Jan 23, 2026
9a58dfb
Switch to XSI icons
clefebvre Jan 23, 2026
a7e64f6
misc/util.js: Use xsi-symbolics for desktop-file actions.
mtwebster Jan 23, 2026
e9df446
6.6.6
clefebvre Jan 25, 2026
6f98f83
menu@cinnamon.org: Avoid using absolute path as this doesn't work on …
fredcw Jan 27, 2026
14e57e5
cinnamon-settings: Fix util module import to prevent name collisions …
carsteneu Jan 27, 2026
78a69ec
cinnamon-desktop-editor.py: Add import path.
mtwebster Feb 6, 2026
c059fb9
endSessionDialog.js: Don't close the dialog immediately when
mtwebster Feb 9, 2026
1f9e518
6.6.7
clefebvre Feb 9, 2026
dc19558
Hot Corners feature to show only current application's windows? #10988
May 27, 2026
9dd0a64
Fixed a few lines that accidentally used tabs instead of spaces.
May 27, 2026
f0e61c5
Merge branch 'scaleapp-feature' into scaleapp-6.6.7b
May 28, 2026
950b61a
Applet for scaleapp
May 29, 2026
3cd1ca0
scaleapp: renamed class name of applet to be unique from scale
Jun 2, 2026
d7caf78
scaleapp: merged 6.6.7 into master and made changes to adapt to recen…
Jun 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions files/usr/share/cinnamon/applets/scaleapp@cinnamon.org/applet.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
const Applet = imports.ui.applet;
const Lang = imports.lang;
const Main = imports.ui.main;
const Settings = imports.ui.settings;

class CinnamonScaleAppApplet extends Applet.IconApplet {
constructor(metadata, orientation, panel_height, instance_id) {
super(orientation, panel_height, instance_id);

try {
this.set_applet_icon_symbolic_name("cinnamon-scaleapp");
this.set_applet_tooltip(_("Scale App"));
this._hover_activates = false;

this.settings = new Settings.AppletSettings(this, metadata.uuid, this.instance_id);

this.settings.bind("activate-on-hover", "_hover_activates");

this.actor.connect('enter-event', Lang.bind(this, this._onEntered));
}
catch (e) {
global.logError(e);
}
}

on_applet_clicked(event) {
if (this._hover_activates)
return;
this.doAction();
}

_onEntered(event) {
if (!this._hover_activates || global.settings.get_boolean("panel-edit-mode"))
return;
this.doAction();
}

doAction() {
Main.overview.toggle("scaleapp");
}
}

function main(metadata, orientation, panel_height, instance_id) {
return new CinnamonScaleAppApplet(metadata, orientation, panel_height, instance_id);
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"uuid": "scaleapp@cinnamon.org",
"name": "Scale App",
"description": "Click or hover to activate Scale App view",
"icon": "cs-overview",
"max-instances": -1
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"activate-on-hover": {
"type": "switch",
"default" : false,
"description" : "Activate scale on hover"
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ def __init__(self, index, updateCallback):
self.functionStore.append(['expo', _("Show all workspaces")]) #Expo
self.functionStore.append(['scale', _("Show all windows")]) #Scale
self.functionStore.append(['desktop', _("Show the desktop")])
self.functionStore.append(['scaleapp', _("Show application windows")]) # like Mac 'Application Windows'
self.functionStore.append(['custom', _("Run a command")])

enableBox = Gtk.Box(spacing=8)
Expand Down Expand Up @@ -241,9 +242,11 @@ def setValues(self, function, enabled, delay):
self.functionCombo.set_active(1)
elif function == "desktop":
self.functionCombo.set_active(2)
elif function == "scaleapp":
self.functionCombo.set_active(3)
else:
showCommandEntry = True
self.functionCombo.set_active(3)
self.functionCombo.set_active(4)
if self.commandEntry.get_text() != function:
self.commandEntry.set_text(function)

Expand Down
7 changes: 5 additions & 2 deletions js/ui/hotCorner.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,14 @@ class HotCorner extends Clutter.Actor {
Main.expo.toggle();
break;
case 'scale':
Main.overview.toggle();
Main.overview.toggle(this.action);
break;
case 'desktop':
global.workspace_manager.toggle_desktop(timestamp);
break;
case 'scaleapp':
Main.overview.toggle(this.action);
break;
default:
Util.spawnCommandLine(this.action);
}
Expand Down Expand Up @@ -222,7 +225,7 @@ class HotCorner extends Clutter.Actor {
shouldRunAction(timestamp, click) {
/* Expo and scale disable hot corners except theirs */
if ((Main.expo.visible && this.action != 'expo') ||
(Main.overview.visible && this.action != 'scale'))
(Main.overview.visible && ((this.action != 'scale') && (this.action != 'scaleapp'))))
return false;

if (Main.overview.animationInProgress)
Expand Down
4 changes: 3 additions & 1 deletion js/ui/overview.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ var Overview = GObject.registerClass({
this._windowSwitchTimestamp = 0;
this._lastActiveWorkspaceIndex = -1;
this._lastHoveredWindow = null;
this._optCallerActionName = null;

Main.layoutManager.connect('monitors-changed', this.hide.bind(this));
}
Expand Down Expand Up @@ -305,7 +306,8 @@ var Overview = GObject.registerClass({
}
}

toggle() {
toggle(optCallerActionName) {
Main.overview._optCallerActionName = optCallerActionName;
if (this._shown)
this.hide();
else
Expand Down
30 changes: 29 additions & 1 deletion js/ui/workspace.js
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,35 @@ class WorkspaceMonitor extends Clutter.Actor {
let initialPositioning = flags & WindowPositionFlags.INITIAL;
let animate = flags & WindowPositionFlags.ANIMATE;

let clones = this._windows;
let focusedWindow = global.display.get_focus_window();
let tracker = Cinnamon.WindowTracker.get_default();
let focusedApp = tracker.get_window_app(focusedWindow);
let focusedAppName = focusedApp.get_name();

let clones;
let callerActionName = Main.overview._optCallerActionName;
if (callerActionName === 'scaleapp') {
let clones2 = this._windows;
clones = [];
for (let i = 0; i < clones2.length; ++i) {
let clone = clones2[i];
let app = tracker.get_window_app(clone.metaWindow);
let appName = app.get_name();
if (appName === focusedAppName) { // this window belongs to the current active app
clones.push(clone);
} else { // this window does not belong to the current active app
// hide other windows otherwise they continue to show and may obscure the selection view.
clone.opacity = 0;
clone.scale_x = 0;
clone.scale_y = 0;
// captions for these other windows also need to be hidden
clone.overlay.caption.hide();
}
}
} else { // original 'scale' case
clones = this._windows;
}

// Start the animations
let slots = this._computeAllWindowSlots(clones.length);

Expand Down
Loading