Repository navigation
Sidebar Dashboard
The Sidebar Dashboard is the shell's control center: system toggles, notifications, quick sliders and productivity widgets in one Material 3 surface, a single keypress away. If the Bar is where you glance, the Dashboard is where you act.
It's built from four independent sections, top to bottom:
- Header — your profile, greeting and quick identity info
- Quick Settings — toggles and sliders, in Classic or Android flavor
- Notifications — the integrated notification list
- Bottom widgets — Calendar, To Do, Timer and Notes pages
Each section loads and updates on its own, so the Dashboard never behaves like one monolithic panel.
Open it with Super + N. Click anywhere outside (or press Esc) to dismiss it. If you prefer the mouse, the screen corner can be turned into a trigger — see Screen corner activation below.
The small button row in the header gives you, left to right: edit quick toggles (pencil — Android layout only), reload Hyprland & Quickshell, Settings, and the session menu (lock / suspend / power off).
- Connect to Wi-Fi — open the Wi-Fi toggle's expanded view (the arrow/dialog part of the tile): a network list appears inside the Dashboard, with connect, disconnect and password entry right there.
- Pair Bluetooth — same idea: expand the Bluetooth toggle for device management, pairing and battery levels.
- Switch Quick Settings layout — Settings (Super + I) → Sidebars → Quick Toggle style: Classic or Android.
- Rearrange your toggles (Android layout) — click the pencil in the header. In Edit Mode: left-click a tile to enable/disable it, drag its icon to move it (across pages too), drag the handles to resize, and use the page controls to add or delete pages. Click the pencil again to finish.
- Add a task — the To Do page at the bottom; if TickTick is connected it syncs to your phone within moments (setup steps below).
- Start a timer — the Timer page; a running timer follows you into the Dynamic Island.
The Dashboard is a Wayland panel that can live on either side of the screen:
| Position | Behavior |
|---|---|
| Default | The standard control-sidebar side |
| Inverted | The opposite side |
| Left / Right | Forced to a specific side |
A Keep sidebar loaded option trades a little memory for instant opening; the left sidebar has a matching switch (on by default), so it reopens where you left it instead of rebuilding from scratch. And when a system dialog opens inside the Dashboard (more below), the interface transitions to spotlight it rather than stacking a popup on top.
The screen edge can act as a Dashboard trigger. Options include: opening from the corner (optionally on hover alone, without a click), requiring the absolute corner or a wider activation region (configurable width and height), moving the region to the bottom, a vertical offset, a visualization overlay so you can see exactly where the hot zone is — and value scrolling, where scrolling on the corner region adjusts volume or brightness directly.
Two layouts are available in Settings → Sidebars:
- Classic — the traditional ii toggle rows
- Android — a paged, swipeable Quick Settings grid straight out of a Material phone
The Android layout is a proper grid system: configurable column count, multiple horizontally-swipeable pages, and per-toggle sizes (a toggle can span half a row, a full row, or be a slider strip). Panel height adapts to the current page's content.
Edit Mode turns the grid into a little layout editor — add and delete pages, reorder toggles, move them between pages, and resize — with the bottom widgets politely collapsing to give you room while editing. Optional three-state capsule controls (off / on / open-dialog) pack more function into each tile.
Frequently-used sliders — brightness, gamma, volume, microphone — can either live inside the pages or stay fixed above the paged area so they're always reachable. A vertical slider orientation is also available.
The set of available Quick Toggles is genuinely large. System basics: Wi-Fi/Network, Bluetooth, Audio output, Microphone, Volume/Brightness/Gamma/Mic sliders, Power Profile, Notifications/Do-Not-Disturb (plus an automatic DND mode), System Sounds. Display & comfort: Dark Mode, Night Light, Anti-Flashbang, Screen Shader, Keyboard Backlight. Networking & privacy: VPN, Tailscale, DNS over TLS, Cloudflare WARP, LocalSend. Tools: Screen Snip, Screen Record, Color Picker, Music Recognition, Video Editor, On-Screen Keyboard, Media Widget, EasyEffects, Game Mode, Keep Awake (idle inhibitor), Notes, and Soundcore ANC control for compatible earbuds.
Added in September:
- KDE Connect — the service as a toggle, with the connected device and its battery on the tile and a dialog behind it. See Phone Integration.
-
Laptop Keyboard — disables the built-in laptop keyboard (handy with an external one on top of it). It is incompatible with the
keyddaemon: while keyd is active the tile says so and the change only takes effect once keyd is stopped.
-
One layout per family — the desktop sidebar is 460 px wide and the tablet family's shade is the whole screen, so each keeps its own Android grid (
sidebar.quickToggles.androidTabletfor the tablet). A family that has never been edited borrows the desktop's arrangement until its first edit. -
Dashboard entrance animations (Settings → Sidebars,
Config.options.sidebar.dashboardEntranceAnimations) turns on entrance animations for the Dashboard's sections; off by default.
Toggles with depth expand into full dialogs inside the Dashboard — no separate windows:
- Wi-Fi — network list, connect/disconnect, password entry
- Bluetooth — device management, battery levels, connect/pair
- Audio — output/input device selection and volume mixer
- VPN / Tailscale / DNS over TLS — connection state and configuration
- Night Light / Dark Mode / Screen Shader / Keep Awake / LocalSend — their expanded controls
The center of the Dashboard is the notification list — it occupies the flexible space between Quick Settings and the bottom widgets, so your notifications live in the same surface as your controls instead of a separate notification center. See Notifications for grouping, actions and history behavior.
The bottom section hosts up to four pages. The selected page is remembered across sessions, you can cycle them with Ctrl + Page Up / Ctrl + Page Down, and the whole section collapses into a compact row showing the date and remaining tasks when you want the notification list to breathe.
The integrated calendar interface with date information and upcoming events.
More than a local task list — it's a full task manager that can operate standalone or as a frontend for TickTick or Google Tasks (Config.options.todo.provider: local, ticktick or googleTasks). Tasks are split into Unfinished and Done; entries with due dates float to the top.
The September rework added a proper new-task sheet — title, due date (Today, Tomorrow, No date or a date), priority (Low, Medium, High), tags and free-form notes.
TickTick sync. With the TickTick Open API configured, the widget switches from local storage to your TickTick Inbox. Creating, completing, deleting and refreshing tasks all sync — so a task added from the sidebar shows up on your phone moments later. The service also refreshes itself every few minutes.
A cloud indicator in the widget shows the sync state (connected / syncing / not configured), doubles as a manual refresh button, and — if TickTick isn't set up yet — clicking it takes you straight to the right Settings page.
To connect TickTick:
- Open Settings (Super + I) → Accounts & Backup.
- Follow the link to the TickTick Developer Center and register an app to get a Client ID and Secret.
- Paste both into the TickTick fields, then click authorize — your browser opens for the OAuth grant, and the token is generated for you.
- Back in the Dashboard, the cloud indicator on the To Do widget turns to connected.
Credentials are stored securely in the GNOME Keyring (with .env as a legacy fallback) — never in config.json, and never included in exported presets.
And TickTick is entirely optional: with no credentials, the same interface quietly uses local task storage.
Three tabs: the Pomodoro (with custom durations), a stopwatch, and a countdown. Running timers also surface in the Dynamic Island and keep counting wherever you are.
A tab for the Notes app's store — a quick way to read and jot without opening the full window. Settings → Sidebars → Notes tab in dashboard turns it off.
Settings → User Profile → Right Sidebar Banner → Enable sidebar banner (also linked from the Sidebars page) puts a banner across the top of the Dashboard — the wallpaper by default, or a Custom banner image.
The sidebar header's avatar can also take a shape of its own, separate from the one used elsewhere.
The Dashboard uses the same Appearance system as everything else: surfaces, colors, typography and motion all follow the active Material palette, and when expressive bar colors are enabled the Dashboard can adopt the selected expressive theme too. It never looks like a guest on your desktop.
Settings → Sidebars — position, keep-loaded, Quick Toggle style, Android grid columns, three-state capsules, fixed sliders (brightness/gamma/volume/mic), slider orientation, and the screen-corner activation block.
Settings → User Profile — profile picture, custom name and greeting, avatar shape and color, plus what the Dashboard header shows: profile image type (user profile / distro icon / none) and header text (username / uptime / custom / none).
Persistent options live under Config.options.sidebar.
The implementation lives in modules/ii/sidebarDashboard/:
| File | Role |
|---|---|
SidebarDashboard.qml |
The Wayland panel window: positioning, keyboard focus, dismissal, content lifecycle |
SidebarDashboardContent.qml |
Coordinates header, Quick Toggles, notifications, bottom widgets and the inline dialogs |
quickToggles/AndroidQuickPanel.qml + androidStyle/
|
The Android Quick Settings system: grid, pages, edit mode, per-toggle components (Android*Toggle.qml), catalog and layout logic |
quickToggles/ClassicQuickPanel.qml + classicStyle/
|
The classic layout |
CenterWidgetGroup.qml |
Hosts the notification list |
BottomWidgetGroup.qml |
Calendar / To Do / Timer / Notes tabs, persistence, collapse state, keyboard navigation |
modules/common/dashboardWidgets/ |
The bottom widgets themselves (todo/ with the task list and the new-task sheet, timers, the Notes tab) — shared across families |
modules/common/quickToggles/ + modules/common/models/quickToggles/
|
The toggle catalogue, the Android and classic styles and their edit controller — shared across families |
wifiNetworks/, bluetoothDevices/, volumeMixer/, vpn/, tailscale/, dnsOverTls/, nightLight/, darkMode/, screenShader/, idleInhibitor/, localSend/
|
The inline dialog implementations |
The toggles don't own any system logic themselves — they talk to the shared services (Network, BluetoothStatus, Audio, VpnService, TailscaleService, DnsOverTls, LocalSend, Hyprsunset, Idle, …), which is why the same state shows up consistently in the Bar, the Dynamic Island and here. See System Integration.