fix(display): target the Framework 13 Pro panel
Migration from the ThinkPad X1 Carbon (2880x1800) to the Framework Laptop 13 Pro, whose panel is CSOT MND508ZB1-1 = 2880x1920 3:2 @120Hz and exposes only 2880x1920@120000Hz / @60000Hz. shikane was requesting [email protected], a mode this panel cannot provide, so the variant could never be satisfied: it sat in NoVariantApplied for the whole session, with 61 historical "Discarded" events. Both profiles now use 2880x1920@120Hz (including the disabled eDP-1 block, whose mode string still has to resolve). Verified: profile now reaches VariantApplied. Scale is 1.75 -> 1645x1097 logical, ~147 effective DPI, chosen to reproduce the ~145 DPI of the old panel at 1.67. 1.75 is exactly representable as float32, which sway stores scale in; 1.6 and 1.67 are not. 2.0 would be the only integer (1:1, unresampled) scale but yields just 1440x960 logical. The .config/sway/config hunk also adds the matching `output $laptop` baseline so sway does not start at scale 2.0 and re-flow when shikane applies 1.75, and carries previously-uncommitted session wiring for the scripts below. shikane's config.toml was previously unversioned; it now lives in this repo and ~/.config/shikane is a symlink, matching the existing convention.
This commit is contained in:
1 parent
63345e51e3
commit
078f9acf71
2 files changed
+91
-12
No files matched your search
@@ -0,0 +1,47 @@
|
||||
[[profile]]
|
||||
name = "laptop"
|
||||
exec = ["notify-send shikane \"Profile $SHIKANE_PROFILE_NAME has been applied\""]
|
||||
[[profile.output]]
|
||||
enable = true
|
||||
search = "eDP-1"
|
||||
# Panel on the Framework Laptop 13 Pro is CSOT MND508ZB1-1 = 2880x1920 (3:2)
|
||||
# @120Hz. /sys/class/drm/card0-eDP-1/modes exposes ONLY 2880x1920@120000Hz
|
||||
# and @60000Hz. The previous value here, [email protected], was the OLD
|
||||
# ThinkPad's panel mode and does not exist on this panel, so shikane could
|
||||
# never satisfy the variant -- the most likely root cause of the
|
||||
# VariantInProgress deadlocks.
|
||||
mode = "2880x1920@120Hz"
|
||||
position = "0,0"
|
||||
# Scale 1.75 chosen deliberately (2026-10-27).
|
||||
# Panel: CSOT MND508ZB1-1, 2880x1920 on 13.5in = 256 PPI. What matters is
|
||||
# effective DPI = PPI/scale; 1.75 -> 147 DPI, which matches the 145 DPI this
|
||||
# laptop's owner previously used on the old ThinkPad (2880x1800 on 14in at
|
||||
# 1.67). The exact equivalent would be 1.765; 1.75 is the nearest value that
|
||||
# is exactly representable as float32 (sway stores scale as float).
|
||||
# 2.0 is the only integer scale (1:1 pixel mapping, no resampling, sharpest)
|
||||
# but gives just 1440x960 logical. 1.5 = max workspace at 171 DPI (small).
|
||||
# History: 1.67/1.5/1.6 all tried; 1.6 was not float-exact (1.600000024).
|
||||
scale = 1.75
|
||||
transform = "normal"
|
||||
adaptive_sync = false
|
||||
|
||||
[[profile]]
|
||||
name = "External Display"
|
||||
exec = ["notify-send shikane \"Profile $SHIKANE_PROFILE_NAME has been applied\""]
|
||||
[[profile.output]]
|
||||
enable = false
|
||||
search = "eDP-1"
|
||||
# Even a disabled block carries a mode string that shikane must resolve
|
||||
# against the panel's mode list, so keep it valid.
|
||||
mode = "2880x1920@120Hz"
|
||||
position = "0,0"
|
||||
scale = 1.75
|
||||
transform = "normal"
|
||||
adaptive_sync = false
|
||||
|
||||
[[profile.output]]
|
||||
enable = true
|
||||
search = "n/DP-(.*)"
|
||||
scale = 1.3
|
||||
transform = "normal"
|
||||
adaptive_sync = false
|
||||
Reference in new issue
Block a user