ui-tweaks is an optional Linux feature for small ChatGPT Desktop UI
customizations. It is disabled by default and is intended as a shared place for
future visual tweaks that are useful to some Linux users but should not affect
the baseline app.
Enable it in the local, gitignored feature config:
{
"enabled": ["ui-tweaks"]
}| Tweak | Patch module | What it does | Settings |
|---|---|---|---|
modelPicker.showModelsByDefault |
patches/model-picker-model-list.js |
Opens the advanced picker by default and shows model choices inline instead of hiding them behind the compact Power slider and a nested Model submenu. | tweaks.modelPicker.showModelsByDefault.enabled |
reasoning.keepEffortLabelsEnglish |
patches/reasoning-effort-labels.js |
Keeps reasoning effort values in English in the Simplified Chinese UI while leaving the surrounding interface translated. | tweaks.reasoning.keepEffortLabelsEnglish.enabled |
sidebar.projectName |
patches/sidebar-project-name.js |
Styles project names in the left sidebar project list. It does not style Projects / Chats section headings and does not style chat rows. |
tweaks.sidebar.projectName.enabled, tweaks.sidebar.projectName.style |
Tracked defaults live in feature.json, but local preferences should not be
edited there. Put user-specific overrides in the gitignored
linux-features/features.json file under settings.ui-tweaks.
Example local config:
{
"enabled": ["ui-tweaks"],
"settings": {
"ui-tweaks": {
"tweaks": {
"sidebar": {
"projectName": {
"style": "font-weight: 800 !important; color: red;"
}
}
}
}
}
}Each tweak documents its own config keys below.
Makes the detailed model list the default Codex composer picker view. The model
rows are rendered inline, so newly available families such as GPT-5.6 Luna,
Terra, and Sol remain visible without first switching away from the compact
Power slider or opening a nested Model submenu. The compact GPT-5.6 Power
slider also derives Sol's positions from the model's supportedReasoningEfforts
after the app filters that list through the reasoning efforts enabled in
settings. Enabled efforts such as Max therefore appear without maintaining a
separate hard-coded effort list.
Config keys:
enabled:trueapplies the tweak,falsekeeps the feature enabled but leaves the upstream model picker unchanged.
Leaves the reasoning effort values as None, Minimal, Low, Medium,
High, XHigh, Max, and Ultra in the Simplified Chinese locale. The
surrounding picker title and usage warning remain translated. This avoids
collapsing distinct upstream values such as XHigh and Ultra into the same
Chinese label.
Config keys:
enabled:trueapplies the tweak,falsekeeps the feature enabled but uses the upstream translated effort labels.
Styles project names in the left sidebar project list.
Tracked default in feature.json:
{
"tweaks": {
"sidebar": {
"projectName": {
"enabled": true,
"style": "font-weight: 700 !important; padding-top: 0.25rem;"
}
}
}
}Config keys:
enabled:trueapplies the tweak,falsekeeps the feature enabled but skips this specific tweak.style: CSS declaration list inserted into the project-name rule, such asfont-weight: 800 !important; color: red;. It is not arbitrary CSS; unsafe syntax that could escape the scoped rule warns and falls back to the default. The default isfont-weight: 700 !important; padding-top: 0.25rem;, so project names are bold with a small top offset and no color is forced.
The patches are fail-soft. If upstream bundle markers drift, the feature writes
a WARN message and leaves the asset unchanged. Invalid style values also warn
and fall back to the default bold style. The feature should not block install,
rebuild, or packaging flows.
Add each tweak as a focused module under patches/, register it from patch.js,
document its JSON settings here, and add coverage in test.js.
Run the feature tests with:
node --test linux-features/ui-tweaks/test.js