Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
526fc47
Use ActionModes for keybindings, enable muffin event-filter
mtwebster Jan 8, 2026
7ec1dc6
Implement a screensaver.
mtwebster Feb 11, 2026
a41193c
backup-locker: Cleanup debug logging.
mtwebster Feb 11, 2026
9b1b43d
Refactor backup-locker as a GtkApplication.
mtwebster Feb 11, 2026
2bace5f
backup-locker, cinnamon-launcher: Forward the restart option to
mtwebster Feb 12, 2026
9078189
backup-locker fixes
mtwebster Feb 12, 2026
af13f65
Use lock-on-suspend setting for _prepareForSleep() check.
mtwebster Feb 12, 2026
adafd6d
Fix some keybinding handling.
mtwebster Feb 12, 2026
86de125
Add notification count, respect info-panel setting.
mtwebster Feb 12, 2026
90a4538
debian/control: Add Breaks/Replaces cinnamon-screensaver.
mtwebster Feb 12, 2026
1ef96d6
cinnamon-unlock-desktop: Just kill.
mtwebster Feb 12, 2026
a25d59c
keybindings.js: Activate the screensaver off an idle callback.
mtwebster Feb 12, 2026
b9f4753
debian/control: Missing depends.
mtwebster Feb 12, 2026
664d680
Clear clipboard
mtwebster Feb 13, 2026
4696283
Restore custom-screensaver capability.
mtwebster Feb 13, 2026
b9385b3
remove idle monitoring - this is done in csd-power.
mtwebster Feb 13, 2026
09daea3
Restore motion threshold
mtwebster Feb 13, 2026
8c16dd4
Reset motion threshold when timing out.
mtwebster Feb 13, 2026
9a3d8e3
Remove idle-monitor in screenShield.
mtwebster Feb 13, 2026
fbae03f
Fix suspend inhibit lifecycle.
mtwebster Feb 13, 2026
8352d65
Fix GetActiveTime
mtwebster Feb 13, 2026
750cf86
Respect internal-screensaver setting everywhere.
mtwebster Feb 13, 2026
c62c4ff
Allow both cinnamon and cinnamon-screensaver to be installed
mtwebster Feb 13, 2026
4989b28
Ensure full compatibility with screensaver dbus interface.
mtwebster Feb 13, 2026
b6930f8
Add keyboard
mtwebster Feb 13, 2026
56cde1a
Get rid of font settings, the theme can do it.
mtwebster Feb 14, 2026
29b6522
Make the osk button larger.
mtwebster Feb 14, 2026
9f0c514
Cleanup css
mtwebster Feb 14, 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
1 change: 0 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ jobs:
linuxmint/cinnamon-control-center,
linuxmint/cinnamon-desktop,
linuxmint/cinnamon-menus,
linuxmint/cinnamon-screensaver,
linuxmint/cinnamon-session,
linuxmint/cinnamon-settings-daemon,
linuxmint/cinnamon-translations,
Expand Down
2 changes: 1 addition & 1 deletion cinnamon.session.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[Cinnamon Session]
Name=Cinnamon
RequiredComponents=cinnamon;org.cinnamon.ScreenSaver;nemo-autostart;@REQUIRED@cinnamon-killer-daemon;
RequiredComponents=cinnamon;nemo-autostart;@REQUIRED@cinnamon-killer-daemon;
DesktopName=X-Cinnamon


2 changes: 1 addition & 1 deletion cinnamon2d.session.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[Cinnamon Session]
Name=Cinnamon (Software Rendering)
RequiredComponents=cinnamon2d;org.cinnamon.ScreenSaver;nemo-autostart;@REQUIRED@cinnamon-killer-daemon;
RequiredComponents=cinnamon2d;nemo-autostart;@REQUIRED@cinnamon-killer-daemon;
DesktopName=X-Cinnamon


2 changes: 2 additions & 0 deletions data/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,5 @@ gnome.compile_resources(
install: true,
install_dir: pkgdatadir
)

subdir('pam')
18 changes: 18 additions & 0 deletions data/org.cinnamon.gschema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,24 @@
<description>If true, the pointer will be set to the center of the new monitor when using pointer next/previous shortcuts.</description>
</key>

<key type="b" name="internal-screensaver-enabled">
<default>true</default>
<summary>Use internal screensaver implementation</summary>
<description>If true, use Cinnamon's internal screensaver for locking instead of the external cinnamon-screensaver daemon.</description>
</key>

<key type="b" name="session-locked-state">
<default>false</default>
<summary>Whether the session is currently locked</summary>
<description>Persists the screensaver locked state so it can be restored after a Cinnamon restart. This key is managed internally and should not be modified manually.</description>
</key>

<key type="b" name="debug-screensaver">
<default>false</default>
<summary>Enable screensaver debug logging</summary>
<description>If true, enables verbose debug logging for the screensaver, unlock dialog, and backup-locker.</description>
</key>

<child name="theme" schema="org.cinnamon.theme"/>
<child name="recorder" schema="org.cinnamon.recorder"/>
<child name="keyboard" schema="org.cinnamon.keyboard"/>
Expand Down
16 changes: 16 additions & 0 deletions data/pam/cinnamon.pam
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#%PAM-1.0

# Fedora & Arch
-auth sufficient pam_selinux_permit.so
auth include system-auth
-auth optional pam_gnome_keyring.so
account include system-auth
password include system-auth
session include system-auth

# SuSE/Novell
#auth include common-auth
#auth optional pam_gnome_keyring.so
#account include common-account
#password include common-password
#session include common-session
2 changes: 2 additions & 0 deletions data/pam/cinnamon.pam.debian
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
@include common-auth
auth optional pam_gnome_keyring.so
18 changes: 18 additions & 0 deletions data/pam/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
pamdir = get_option('pam_prefix')
if pamdir == ''
pamdir = sysconfdir
endif

if get_option('use_debian_pam')
install_data(
'cinnamon.pam.debian',
rename: 'cinnamon',
install_dir: join_paths(pamdir, 'pam.d')
)
else
install_data(
'cinnamon.pam',
rename: 'cinnamon',
install_dir: join_paths(pamdir, 'pam.d')
)
endif
1 change: 1 addition & 0 deletions data/services/meson.build
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
service_files = [
'org.cinnamon.BackupLocker.service',
'org.cinnamon.CalendarServer.service',
'org.Cinnamon.HotplugSniffer.service',
'org.Cinnamon.Melange.service',
Expand Down
3 changes: 3 additions & 0 deletions data/services/org.cinnamon.BackupLocker.service.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[D-BUS Service]
Name=org.cinnamon.BackupLocker
Exec=@libexecdir@/cinnamon-backup-locker
1 change: 1 addition & 0 deletions data/theme/cinnamon-sass/_widgets.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
@import 'widgets/calendar';
@import 'widgets/desklet';
@import 'widgets/dialogs';
@import 'widgets/screensaver';
@import 'widgets/expo';
@import 'widgets/ibus-popup';
@import 'widgets/keyboard';
Expand Down
199 changes: 199 additions & 0 deletions data/theme/cinnamon-sass/widgets/_screensaver.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
// Screensaver / Lock Screen

.screen-shield {
background-color: black;

.screen-shield-background {
background-color: black;
}

// Clock widget

.clock-widget {
padding: 6px;
spacing: 6px;

.clock-time-label {
font-size: 64pt;
font-weight: bold;
color: white;
text-align: center;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8);
}

.clock-date-label {
font-size: 24pt;
font-weight: bold;
color: white;
text-align: center;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8);
}

.clock-message-label {
font-size: 14pt;
font-weight: bold;
color: #cccccc;
text-align: center;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
margin-top: $base_margin;
}

.clock-message-author {
font-size: 12pt;
font-weight: bold;
color: #acacac;
text-align: center;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
}
}

// Album art widget

.albumart-widget {
padding: 10px;
spacing: 8px;

.albumart-info-container {
background-color: $bg_color;
border-radius: 0;
border: 1px solid $borders_color;
spacing: $base_margin * 2;
min-width: 220px;

&:awake {
border-radius: 0 0 $modal_dialog_radius $modal_dialog_radius;
}

.albumart-cover-bin {
padding: 8px;
background-color: $bg_color;
}

.albumart-track-info-overlay {
spacing: 2px;
padding: 6px 6px;
background-gradient-direction: vertical;
background-gradient-start: transparentize($bg_color, 0.4);
background-gradient-end: $bg_color;

.albumart-title-overlay {
font-size: 11pt;
font-weight: bold;
text-align: center;
color: white;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
}

.albumart-artist-overlay {
font-size: 10pt;
text-align: center;
color: rgba(255, 255, 255, 0.9);
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
}

.albumart-album-overlay {
font-size: 10pt;
text-align: center;
color: rgba(255, 255, 255, 0.8);
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
}
}

.albumart-controls {
spacing: 8px;

.albumart-control-button {
width: 36px;
height: 36px;
border-radius: 18px;
background-color: transparentize($fg_color, 0.9);

&:hover {
background-color: transparentize($fg_color, 0.8);
}

&:active {
background-color: transparentize($fg_color, 0.7);
}

&:insensitive {
color: transparentize($fg_color, 0.7);
background-color: transparentize($fg_color, 0.95);
}

StIcon {
icon-size: 20px;
}
}
}

.albumart-volume-box {
spacing: 8px;

.albumart-volume-icon {
icon-size: 16px;
}

.albumart-volume-slider {
height: 20px;
min-width: 150px;
-slider-height: 4px;
-slider-background-color: transparentize($fg_color, 0.8);
-slider-border-color: transparent;
-slider-active-background-color: $accent_bg_color;
-slider-active-border-color: transparent;
-slider-border-width: 0;
-slider-handle-radius: 8px;
}
}
}
}

// Info panel (notification count + battery indicator)

.info-panel {
padding: 8px;
spacing: 12px;

.notification-widget {
spacing: 4px;

.notification-widget-label {
color: white;
font-size: 12pt;
font-weight: bold;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
}

.notification-widget-icon {
color: white;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
}
}

.power-widget-icon {
color: white;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);

&-critical {
color: $error_color;
}
}
}

// On-screen keyboard toggle

.osk-activate-button {
@extend %button;

border-radius: 9999px;
padding: $base_padding;
min-height: 16px;

StIcon {
icon-size: 24px;
}

&.flat { @extend %flat_button; }
}
}
1 change: 1 addition & 0 deletions debian/cinnamon.install
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ usr/share/applications
usr/share/dbus-1
usr/share/man
usr/share/xdg-desktop-portal
etc/pam.d
9 changes: 7 additions & 2 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,15 @@ Build-Depends:
libmuffin-dev (>= 5.3),
libnm-dev (>= 1.6) [linux-any],
libnma-dev [linux-any],
libpam0g-dev,
libpolkit-agent-1-dev (>= 0.100),
libpulse-dev,
librsvg2-dev,
libsecret-1-dev,
libstartup-notification0-dev (>= 0.11),
libxapp-dev (>= 2.6.0),
libxcomposite-dev (>= 1:0.4),
libxdo-dev,
meson,
pysassc,
python3:any,
Expand All @@ -45,7 +48,6 @@ Depends:
cinnamon-control-center,
cinnamon-desktop-data (>= 5.3),
cinnamon-l10n,
cinnamon-screensaver,
cinnamon-session,
cinnamon-settings-daemon (>= 5.3),
cjs (>= 4.8),
Expand Down Expand Up @@ -118,8 +120,11 @@ Recommends:
gnome-online-accounts-gtk,
touchegg,
ibus,
libpam-gnome-keyring,
Suggests: cinnamon-doc
Provides: notification-daemon, x-window-manager, polkit-1-auth-agent
Breaks: cinnamon-screensaver (<< 6.8)
Replaces: cinnamon-screensaver (<< 6.8)
Provides: notification-daemon, x-window-manager, polkit-1-auth-agent, cinnamon-screensaver
Description: Modern Linux desktop
Cinnamon is a modern Linux desktop which provides advanced innovative
features and a traditional user experience. It's easy to use, powerful
Expand Down
3 changes: 2 additions & 1 deletion debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ override_dh_auto_configure:
-D deprecated_warnings=false \
-D exclude_info_settings=true \
-D exclude_users_settings=true \
-D py3modules_dir=/usr/lib/python3/dist-packages
-D py3modules_dir=/usr/lib/python3/dist-packages \
-D use_debian_pam=true

# workaround for fix lmde4 build
override_dh_dwz:
Expand Down
1 change: 1 addition & 0 deletions docs/reference/cinnamon/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ ignore = [
st_private_headers,
tray_headers,
sniffer_headers,
backup_locker_headers,
]

if not internal_nm_agent
Expand Down
Loading
Loading