ColorSync suppression engine #14
Open
opened 2026-09-08 17:41:11 +01:00 by gronod
·
0 comments
No Branch/Tag Specified
main
milestone/m5-profile
feat/23-colprof
develop
milestone/m4-measurement
feat/18-instrument-detection
milestone/m3-printing
feat/17-print-panel-ui
feat/15-lp-spool
feat/14-colorsync
feat/13-nsprintpanel
feat/12-printer-enum
milestone/m2-targets
feat/7-targen-argv
milestone/m1-foundation
feat/4-wizard-gating
feat/5-settings-logging
feat/6-file-dialogs
feat/3-argyll-resolution
feat/2-process-manager
feat/1-app-scaffold
No results found.
Labels
Clear labels
Bug/Architecture
Bug/Backend
Bug/DevOps
Bug/UI
Compat/Breaking
Feature/Architecture
Feature/Backend
Feature/DevOps
Feature/UI
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Project/ICCery-v2
Core / wizard / process infra defect
Argyll orchestration, file/data defect
Build, packaging, CI defect
Views, controls, dialogs defect
Breaking change that won't be backward compatible
Core / wizard / process infra
Argyll orchestration, file/data engines
Build, packaging, CI
Views, controls, dialogs
Something is not working
Documentation changes
Improve existing functionality
New functionality
This is security issue
Issue or pull request related to testing
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Low
4
The priority is low
Priority
Medium
3
The priority is medium
ICCery v2 Mac rewrite
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Abandoned
3
Somebody has started to work on this but abandoned work
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
Milestone
No items
No Milestone
M3 — macOS unmanaged printing (lp)
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: gronod/iccery-v2-mac#14
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Six layers. Private SPI is 2-arg only. This ticket is the #188 engine.
Spec refs
docs/11-print-macos.md, 25-rewrite-notes.md macOS musts.
Scope
In: layers ②–⑥ on top of issue 13 session binding. Option filter.
Out: lp argv (15), Quartz vocabulary (16).
Implementation notes
① Session binding (issue 13).
②
dlsym(RTLD_DEFAULT)try in order:PMSessionSetColorMatchingModeLock,PMSessionSetColorMatchingMode,PMSessionSetColorMatchingModeNoLock.Signature
(PMPrintSession, CFStringRef) -> OSStatus.Modes:
AP_ApplicationColorMatchingthenApplicationColorMatching.First (symbol, mode) returning 0 wins.
NEVER pass integer 1. Forbidden:
AP_ColorSyncMatching,AP_VendorColorMatching.Make dlsym injectable for tests.
③
PMPrintSettingsSetValuebothAP_ColorMatchingModeandAP.ColorMatchingMode=AP_ApplicationColorMatching, LOCKED.④ Driver bypass from
lpoptions -l, written UNLOCKED:Canon
CNIJIntent2=4elseCNIJIntent=4;Epson
EPIJ_CCor=0if that key exists elseEPIJ_CMat=3;Gutenprint
StpColorCorrection=Uncorrected;generic
ColorCorrection=Uncorrected;EpsonColorMode=Off.⑤ Mirror all keys into
NSPrintInfo.printSettings(PDEs read this).⑥ After OK:
PMPrintSettingsToOptions→ filter (dropcom.apple.*, collate/copies/job-sheets, empty values, BOTH AP_* keys — issue 15 always re-adds them) →capturedCupsOptions+ extracted media type.Sanitise option keys/values: no
;, newlines, or shell metacharacters.Rewrite invariants
#188 three layers off; SPI arity contractual; never mix Quartz
APCustomColorMatchinghere.Dependencies
Blocks-on: 12, 13.
Unblocks: 15.
Test
EPIJ_CMatdropcom.apple.*; sanitiser rejects;.Acceptance criteria