Repository navigation
Releases: jordan-lee-code/display-profiles
Release list
v1.4.0
v1.3.0
- 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
- Merge pull request #1 from jordan-lee-code/ci/release-workflow
- Replace pre-push release hook with GitHub Actions workflow
v1.2.1
- Abort pre-push hook when /dev/tty is unavailable
v1.2.0
- 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
- Improve code readability across all scripts
v1.1.2
- Fix dconf write quoting in save-panels.sh
v1.1.1
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
What's changed
New: validation test suite (tests/validate.sh)
A self-contained bash test suite — no external framework required.
bash tests/validate.sh40 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 pipefailacross allbin/scriptspick_index()— validated index prompting with re-prompt on bad inputrequire_cmd()— dependency checks with install hintslog_error()— xrandr failures written to~/.config/display-profiles/debug.log- Error checking on xrandr execution in
display-switch.sh install.shwires.githooks/for contributors- README: xrandr.sh editing example, Cinnamenu path fix, xrandr failure troubleshooting
v1.0.1
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.shnow checksxrandr.shexists, catches xrandr failures, and logs them to~/.config/display-profiles/debug.log set -euo pipefail— added to allbin/scripts so unhandled failures exit cleanly- Dependency checks —
require_cmd xrandradded 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_NAMEis now quoted in theExecline install.sh— now wires.githooks/viagit config core.hooksPathso the pre-push version bump hook is active for contributorsdisplay-apply-saved.sh— safe profile read underset -e(file existence check replacescatsuppression)- README — added
xrandr.shmanual 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