Personalizzare la UI di ChatGPT / Claude / Gemini — chat più larghe, font migliori, nascondere gli upsell
Passi 4 ore al giorno in ChatGPT, Claude o Gemini. Ogni UI predefinita fa scelte mirate al neofita: bolle di messaggi strette (~700px su un monitor da 1920px), sans-serif sottile nei blocchi di codice (strizzi gli occhi per distinguere l da 1), banner «Upgrade to Pro» che implora un abbonamento. Tutto risolvibile in 5 minuti con JustZix. Regole CSS + observer JS, salvati una volta, funzionano per sempre. Niente tracciamento, niente account, niente trucchetti «powered by».
ChatGPT (chat.openai.com / chatgpt.com) — 3 regole CSS
Match di dominio: *://chatgpt.com/* e *://chat.openai.com/* (dominio legacy).
1. Bolle di messaggi più larghe (max-width 1200px)
/* Default ChatGPT: max-width ~768px. Power user su 1080p+ = sprecato */
.text-message, [data-message-author-role] > div {
max-width: min(1200px, 92vw) !important;
}
/* Anche il container di input del prompt */
form .stretch, form[data-type="unified-composer"] {
max-width: min(1200px, 92vw) !important;
}
2. Monospace per i blocchi di codice (Fira Code con legature)
pre code, code, .markdown code, .prose code {
font-family: 'Fira Code', 'JetBrains Mono', ui-monospace, monospace !important;
font-variant-ligatures: contextual !important;
font-size: 14px !important;
line-height: 1.6 !important;
}
/* Più padding nei blocchi di codice = lettura più facile */
pre {
padding: 16px !important;
border-radius: 8px !important;
}
3. Nascondere il banner «Upgrade to Plus» + i chip di suggerimenti
/* Banner in cima alla sidebar «Upgrade your plan» */
nav a[href*="upgrade"], nav button[aria-label*="Upgrade"],
[data-testid="upgrade-button"], [class*="upgrade-banner"] {
display: none !important;
}
/* Griglia di prompt suggeriti sopra l'input — ingombro per i power user */
[class*="suggestions"], [class*="prompt-card"] {
display: none !important;
}
Claude.ai — chat largo + mantenere la sidebar
Dominio: *://claude.ai/*. Claude usa di default una chat con max-width 720px anche su 4K. Risolviamo:
/* Area principale della conversazione */
.h-screen [class*="max-w-"], main [class*="max-w-3xl"],
[data-testid="conversation"] > div {
max-width: min(1180px, 90vw) !important;
}
/* Blocchi di codice — Claude ha già monospace, ma troppo piccolo e senza legature */
pre, code {
font-family: 'Fira Code', 'JetBrains Mono', ui-monospace, monospace !important;
font-variant-ligatures: contextual !important;
}
pre {
font-size: 13px !important;
line-height: 1.55 !important;
}
/* Pannello Artifact (pannello laterale destro) più largo quando aperto */
[data-testid="artifact-panel"] {
width: 50% !important;
min-width: 600px !important;
}
Bonus: Ctrl+Invio invia il messaggio (default Invio = a capo nella textarea di Claude). Se preferisci solo Invio:
// Regola JS su claude.ai
document.addEventListener('keydown', (e) => {
if (e.key === 'Enter' && !e.shiftKey && !e.ctrlKey && e.target.tagName === 'TEXTAREA') {
// Solo quando la textarea ha del testo (permette Invio in una textarea vuota)
if (e.target.value.trim()) {
e.preventDefault();
const sendBtn = document.querySelector('button[aria-label*="end"], button[type="submit"]');
if (sendBtn) sendBtn.click();
}
}
}, true);
Gemini (gemini.google.com) — il default meno perdonabile
Dominio: *://gemini.google.com/*. Gemini ha il default peggiore — chat ingabbiata in ~640px su un 4K, con basso contrasto.
/* Chat più larga */
[class*="conversation-container"], chat-window, main {
max-width: min(1240px, 92vw) !important;
}
[class*="user-query"], [class*="model-response"] {
max-width: 100% !important;
}
/* Miglior contrasto del testo — il default Gemini è #5f6368 su #ffffff (3.5:1, fallisce WCAG AA) */
.markdown, [class*="response-content"] {
color: #202124 !important;
}
/* Colori dei blocchi di codice — Gemini ha un syntax highlighting a basso contrasto */
pre code .keyword, pre code .token.keyword { color: #d73a49 !important; }
pre code .string, pre code .token.string { color: #032f62 !important; }
pre code .comment, pre code .token.comment { color: #6a737d !important; font-style: italic !important; }
Caso d'uso 1 — TOGGLE3 per cambiare la larghezza
A volte stretto (leggi long-form), a volte largo (codice). TOGGLE3 con 3 stati:
// Azione TOGGLE3 «📐 Larghezza»
states[0] = { label: 'Narrow', value: '760' }
states[1] = { label: 'Wide', value: '1180' }
states[2] = { label: 'Max', value: '92vw' }
// Code:
document.documentElement.style.setProperty('--jz-chat-width',
value.endsWith('vw') ? value : value + 'px');
E la regola CSS usa quella variabile:
main, [class*="conversation"] {
max-width: var(--jz-chat-width, 1180px) !important;
}
3 clic = 3 larghezze. La memory per dominio conserva la tua ultima scelta.
Caso d'uso 2 — SLIDER per il controllo della dimensione del font
Blocchi di codice troppo piccoli = strizzi gli occhi. SLIDER 10-20px:
// Azione SLIDER «🔤 Dimensione codice»
min: 10, max: 20, step: 1, defaultValue: 14, unit: 'px'
code: |
document.documentElement.style.setProperty('--jz-code-size', value + 'px');
Regola CSS:
pre, code, pre code { font-size: var(--jz-code-size, 14px) !important; }
Trascina lo slider → anteprima dal vivo. Perfetto durante uno screen-share con il tuo team (zoom fino a 18-20px, facile da leggere da lontano).
Caso d'uso 3 — Output Console come diario dei prompt
Trucco da power user molto specifico: logga ogni messaggio che invii nella Output Console per uno storico dei prompt:
// Regola JS
const observer = new MutationObserver((mutations) => {
for (const m of mutations) {
for (const node of m.addedNodes) {
if (node.nodeType !== 1) continue;
const userMsg = node.matches('[data-message-author-role="user"]')
? node : node.querySelector('[data-message-author-role="user"]');
if (userMsg && !userMsg.dataset.jzLogged) {
userMsg.dataset.jzLogged = '1';
const txt = userMsg.textContent.trim().slice(0, 200);
JUSTZIX.log(`[prompt] ${txt}${txt.length === 200 ? '…' : ''}`);
}
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
JUSTZIX.info('Diario dei prompt attivo.');
Apri un pane Output Console agganciato a lato → vedi lo storico dei tuoi prompt (troncati a 200 caratteri). Copia-incolla in un documento a fine giornata. Zero tracciamento off-server.
Trappole
- I selettori cambiano. Le app di chat rilasciano spesso restyling della UI ogni poche settimane.
[data-message-author-role]è stabile (basato su ARIA), ma[class*="upgrade-banner"]matcha qualsiasi cosa con «upgrade-banner» in una classe — fragile. Testa mensilmente. - !important è l'ultima risorsa. Le app di chat IA usano Tailwind con classi con suffisso hash — i tuoi override devono vincere in specificità. Inoltre: alcuni stili sono inline (attributo style) — allora aiuta !important + un selettore :where().
- Override della modalità scura. Se l'app ha un toggle di modalità scura (Claude, ChatGPT), il tuo color: nel CSS può confliggere con il tema. Usa le variabili CSS della pagina se disponibili:
color: var(--text-primary, #202124) !important. - MutationObserver può essere costoso. Le app di chat renderizzano centinaia di nodi al secondo durante una risposta in streaming. Throttle/filtra nel callback.
- Single-page app + auto-reload. Le regole CSS di JustZix si applicano una volta al caricamento. Un cambio di rotta SPA può renderizzare una nuova nav senza un ricaricamento completo. La regola CSS resta attiva (tag style nell'head), ma se usi una regola JS per la pulizia del DOM → ti serve un MutationObserver o un listener di cambio URL (popstate / hashchange).
Cosa fare dopo
Le 3 app di chat IA più usate, un setup JustZix per app. Vedi anche gli articoli correlati:
- Nascondi i banner dei cookie — stesso schema (CSS + !important) per gli overlay fastidiosi
- TOGGLE3 — switcher a 3 stati (esempio sopra)
- SLIDER — range nativo per la dimensione del font
- Mini-IDE nella scheda — mappa completa degli strumenti JustZix
Installa JustZix — incolla le regole di questo articolo e le app di chat IA avranno esattamente l'aspetto che vuoi. Niente account, niente server, niente tracciamento.
Valuta questo articolo
Nessuna valutazione — sii il primo.