Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
924a934
Use ActionModes for keybindings, enable muffin event-filter
mtwebster Jan 8, 2026
bab80f8
Implement a screensaver.
mtwebster Feb 11, 2026
0e07ca1
backup-locker: Cleanup debug logging.
mtwebster Feb 11, 2026
50cce97
Refactor backup-locker as a GtkApplication.
mtwebster Feb 11, 2026
569056a
backup-locker, cinnamon-launcher: Forward the restart option to
mtwebster Feb 12, 2026
853e20c
backup-locker fixes
mtwebster Feb 12, 2026
523491a
Use lock-on-suspend setting for _prepareForSleep() check.
mtwebster Feb 12, 2026
c8040c3
Fix some keybinding handling.
mtwebster Feb 12, 2026
22ab7a7
Add notification count, respect info-panel setting.
mtwebster Feb 12, 2026
cc0c318
debian/control: Add Breaks/Replaces cinnamon-screensaver.
mtwebster Feb 12, 2026
d10fa0f
cinnamon-unlock-desktop: Just kill.
mtwebster Feb 12, 2026
84a8781
keybindings.js: Activate the screensaver off an idle callback.
mtwebster Feb 12, 2026
9417bc7
debian/control: Missing depends.
mtwebster Feb 12, 2026
9937c10
Clear clipboard
mtwebster Feb 13, 2026
9e0f3cf
Restore custom-screensaver capability.
mtwebster Feb 13, 2026
98ff740
remove idle monitoring - this is done in csd-power.
mtwebster Feb 13, 2026
00876ef
Restore motion threshold
mtwebster Feb 13, 2026
b856c70
Reset motion threshold when timing out.
mtwebster Feb 13, 2026
0aa6963
Remove idle-monitor in screenShield.
mtwebster Feb 13, 2026
a2793d3
Fix suspend inhibit lifecycle.
mtwebster Feb 13, 2026
fc6cbd5
Fix GetActiveTime
mtwebster Feb 13, 2026
4ff9b3c
Respect internal-screensaver setting everywhere.
mtwebster Feb 13, 2026
9da69b7
Allow both cinnamon and cinnamon-screensaver to be installed
mtwebster Feb 13, 2026
f815518
Ensure full compatibility with screensaver dbus interface.
mtwebster Feb 13, 2026
103bfd0
Add keyboard
mtwebster Feb 13, 2026
384e4ad
Get rid of font settings, the theme can do it.
mtwebster Feb 14, 2026
41c87ad
Make the osk button larger.
mtwebster Feb 14, 2026
71a29b2
Cleanup css
mtwebster Feb 14, 2026
3872a8e
Use stored keyboard layout.
mtwebster Feb 15, 2026
1a516e0
_screensaver.scss: Reduce clock size a bit.
mtwebster Feb 18, 2026
5643693
authClient.js: Clean up init a bit, send terminate, not kill to
mtwebster Feb 18, 2026
97d0655
Initialize PAM early to allow alternate authentication to work
mtwebster Feb 18, 2026
259f466
authClient.js: Propagate debug mode.
mtwebster Feb 18, 2026
907a92b
unlockDialog: Hide the password field until prompted, and re-hide
mtwebster Feb 18, 2026
f6fe7e5
cinnamon-screensaver-pam-helper: Only fail the authentication
mtwebster Feb 18, 2026
1ed08f3
Wiggle the dialog on auth failure.
mtwebster Feb 18, 2026
c6fd6d7
screensaver: Fix some hidpi issues.
mtwebster Feb 18, 2026
7766924
debian/control: Fix cinnamon-screensaver Break/Replace version.
mtwebster Feb 18, 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 @@ -521,6 +521,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. Requires cinnamon restart if changed.</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: 50pt;
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.7)
Replaces: cinnamon-screensaver (<< 6.7)
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