Skip to content

Releases: jordan-lee-code/display-profiles

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 25 Aug 00:26
e8da36d
  • Merge pull request #4 from jordan-lee-code/feat/client-driven-resolution
  • Catch refresh-rate drift when Cinnamon restarts
  • Match display resolution to the streaming client that asked for it

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Apr 02:10
ace2c6f
  • Merge pull request #3 from jordan-lee-code/feat/next-login-selector
  • Fix stale shutdown/restart references in README
  • Remove display-shutdown and display-restart scripts
  • Update daily-use docs to reference tray applet
  • Remove Cinnamenu integration docs — tray applet covers this
  • Add 'Profile for next login' submenu and clarify auto-apply docs
  • Merge pull request #2 from jordan-lee-code/add-gitignore
  • Add .gitignore excluding CLAUDE.md

v1.2.2

Choose a tag to compare

@github-actions github-actions released this 23 Apr 01:51
ddf3351
  • Merge pull request #1 from jordan-lee-code/ci/release-workflow
  • Replace pre-push release hook with GitHub Actions workflow

v1.2.1

Choose a tag to compare

@jordan-lee-code jordan-lee-code released this 23 Apr 01:46
  • Abort pre-push hook when /dev/tty is unavailable

v1.2.0

Choose a tag to compare

@jordan-lee-code jordan-lee-code released this 23 Apr 01:44
  • Add GTK3 system tray applet with profile creation wizard
  • Add autostart toggle to tray menu
  • Add tray applet autostart toggle to tray menu
  • Fix missing quotes around next-applet-id value in save-panels.sh
  • Fix Cinnamon re-enabling disabled monitors after compositor restart

v1.1.3

Choose a tag to compare

@jordan-lee-code jordan-lee-code released this 22 Apr 22:15
  • Improve code readability across all scripts

v1.1.2

Choose a tag to compare

@jordan-lee-code jordan-lee-code released this 22 Apr 08:52
  • Fix dconf write quoting in save-panels.sh

v1.1.1

Choose a tag to compare

@jordan-lee-code jordan-lee-code released this 22 Apr 08:44

Bug fix: panel layout save strips inactive-monitor entries

Saving a panel layout while in single-screen mode (e.g. work profile with DP-0 off) would capture Cinnamon's full dconf state, which always includes config for every monitor ever seen — even inactive ones. When the profile was applied, Cinnamon would re-enable the off screen to satisfy the orphaned panel entry.

hooks/cinnamon/save-panels.sh now counts active outputs via xrandr at save time and drops any panels-enabled entries whose monitor index no longer exists, then filters panels-height, panels-autohide, panels-hide-delay, panels-show-delay, and enabled-applets to match. Falls back to capturing everything if xrandr is unavailable.

tests/validate.sh round-trip test also fixed to correctly handle physically-connected-but-inactive outputs (they are now treated as --off rather than attempting to read a mode/position that doesn't exist).

v1.1.0

Choose a tag to compare

@jordan-lee-code jordan-lee-code released this 22 Apr 01:46

What's changed

New: validation test suite (tests/validate.sh)

A self-contained bash test suite — no external framework required.

bash tests/validate.sh

40 tests across 5 sections:

Section What's covered
Syntax bash -n on every script and hook
Unit tests All lib/common.sh functions: path helpers, detect_de (7 DE variants), require_cmd, log_error, list_profiles, pick_index
Smoke test display-setup.sh against live xrandr
Error paths No-args usage, missing profiles, missing/failing xrandr.sh (with debug.log write verification), display-apply-saved.sh absent/empty state
Live round-trip Builds a temp profile matching the current display config, runs display-switch.sh against real xrandr, verifies display-mode is updated, cleans up

Sections requiring a running X session are skipped automatically when DISPLAY is not set.


Also included in this release (from v1.0.1):

  • set -euo pipefail across all bin/ scripts
  • pick_index() — validated index prompting with re-prompt on bad input
  • require_cmd() — dependency checks with install hints
  • log_error() — xrandr failures written to ~/.config/display-profiles/debug.log
  • Error checking on xrandr execution in display-switch.sh
  • install.sh wires .githooks/ for contributors
  • README: xrandr.sh editing example, Cinnamenu path fix, xrandr failure troubleshooting

v1.0.1

Choose a tag to compare

@jordan-lee-code jordan-lee-code released this 22 Apr 01:45

What's changed

Hardening pass across all scripts — better error handling, input validation, and tooling fixes.

Improvements

  • Input validation — all index selections in display-new-profile.sh (resolution, refresh rate, primary, position) now re-prompt on invalid input instead of silently producing a broken profile
  • Error handling — display-switch.sh now checks xrandr.sh exists, catches xrandr failures, and logs them to ~/.config/display-profiles/debug.log
  • set -euo pipefail — added to all bin/ scripts so unhandled failures exit cleanly
  • Dependency checks — require_cmd xrandr added to scripts that need it, with an install hint on failure
  • Profile name notification — warns when spaces in a profile name are converted to hyphens
  • Desktop file fix — $PROFILE_NAME is now quoted in the Exec line
  • install.sh — now wires .githooks/ via git config core.hooksPath so the pre-push version bump hook is active for contributors
  • display-apply-saved.sh — safe profile read under set -e (file existence check replaces cat suppression)
  • README — added xrandr.sh manual editing example, clarified Cinnamenu path instructions, added xrandr failure troubleshooting entry

Debug log

xrandr failures are now recorded with a timestamp at:

~/.config/display-profiles/debug.log