b59ee18a37713f41c2bb4a8d0bf8da63bcd21b10
Outlook Relook
A Chrome extension that reskins Outlook Web App (outlook.office.com) with minimalist themes and granular control over visual clutter.
Features
- Switchable themes: Swiss (Helvetica minimalism) and Material (clean, subtle elevation)
- Light & Dark modes with system preference detection
- ~40 granular toggles for density, element hiding, readability, and behavior
- MutationObserver suppresses dynamically injected clutter (Copilot, banners, suggested replies)
- Behavior patches: auto-collapse ribbon, suppress contact hover cards, auto-advance after delete, toast management
- Gmail-style keyboard navigation: j/k to move, x/Space to multi-select, # delete, e archive, Shift+i/u read/unread, v move
- Quick actions: "Mark all as read" button, Ctrl+Shift+K folder jump
- Settings sync across Chrome instances via chrome.storage.sync
- Export/Import/Reset settings
Install (Development)
- Clone this repo
- Open
chrome://extensionsin Chrome - Enable "Developer mode" (top-right toggle)
- Click "Load unpacked" and select this directory
- Open outlook.office.com — the extension activates automatically
Usage
Click the extension icon to open the settings panel. Changes apply immediately — no page reload needed.
Keyboard Shortcuts
Message list (Gmail-style):
j/Down Arrow— Next messagek/Up Arrow— Previous messagex/Space— Toggle selectShift+Down/Shift+Up— Extend selection#— Delete selectede— Archive selectedShift+i— Mark readShift+u— Mark unreadv— Move to folderEscape— Deselect allEnter/o— Open message
Global:
Ctrl+Shift+K(orCmd+Shift+Kon Mac) — Quick folder jump
Development
No build step. Edit files, reload the extension at chrome://extensions, refresh the OWA tab.
themes/base.css— density/spacing/hiding rules (always loaded)themes/swiss.css/themes/material.css— theme-specific stylescontent/— content scripts (observer, behavior, injector)popup/— settings panelselectors-test.html— offline selector verification
Selector Strategy
OWA uses obfuscated class names. Selectors prioritize aria-label, data-*, and role attributes over class names. See content/selectors.js for the registry.
When selectors break after an OWA update, check the console for [Outlook Relook] warnings, inspect the live DOM, and update selectors.js.
Adding a New Theme
- Create
themes/yourtheme.css— define the same CSS custom properties asswiss.css - Add an option to the theme dropdown in
popup/popup.html - That's it — the content script handles injection automatically
Adding a New Toggle
- Add the key and default to
DEFAULTSin bothcontent/settings-defaults.jsandpopup/popup.js - Add the toggle HTML to the appropriate section in
popup/popup.html - If CSS-based: add a
data-or-*attribute mapping incontent/content.jsand the CSS rule inthemes/base.css - If observer-based: add a selector entry to
content/selectors.jsand a mapping incontent/observer.js - If behavior-based: add a setup function in
content/behavior.js
Description
Languages
JavaScript
50.8%
CSS
42.9%
HTML
6.3%