# Noctalia configuration — all settings at their defaults. # Copy to ~/.config/noctalia/config.toml and edit what you need. # Changes are hot-reloaded via inotify — no restart required. # ── Shell ───────────────────────────────────────────────────────────────────── [shell] ui_scale = 1.0 font_family = "sans-serif" time_format = "{:%H:%M}" # default shell UI time format date_format = "%A, %x" # default shell UI date format offline_mode = false # block all outgoing HTTP when true telemetry_enabled = false # send an anonymous usage ping on startup polkit_agent = false password_style = "default" # default | random settings_show_advanced = false # show advanced settings by default in Settings middle_click_opens_widget_settings = true # middle-click bar widgets to open their Settings entry show_location = true # hide weather location text in shell UI when false clipboard_auto_paste = "auto" # off | auto | ctrl_v | ctrl_shift_v | shift_insert clipboard_image_action_command = "" # image preview action: gimp {path}, or satty -f - via stdin # avatar_path = "~/Pictures/avatar.png" # lang = "en" [shell.animation] enabled = true speed = 1.0 # 0.5 = 2× slower, 2.0 = 2× faster [shell.shadow] blur = 12 # global surface shadow blur radius offset_x = 2 offset_y = 2 # positive = down alpha = 0.55 # multiplied by each component's background opacity [shell.panel] background_blur = true # request compositor blur behind panels attach_launcher = false # attach launcher to the bar when a suitable bar is available attach_clipboard = false # attach clipboard history to the bar when a suitable bar is available attach_control_center = true # attach Control Center to the bar when a suitable bar is available attach_wallpaper = true # attach wallpaper picker to the bar when a suitable bar is available [shell.mpris] blacklist = [] # ignore MPRIS players by bus/identity/desktop entry token # ── Wallpaper ───────────────────────────────────────────────────────────────── [wallpaper] enabled = true fill_mode = "crop" # center | crop | fit | stretch | repeat fill_color = "" # optional fallback/fill color: #RRGGBB, #RRGGBBAA, or color role transition = ["fade", "wipe", "disc", "stripes", "zoom", "honeycomb"] transition_duration = 1500 # milliseconds edge_smoothness = 0.3 directory = "~/Pictures/Wallpapers" directory_light = "" # optional day-mode directory directory_dark = "" # optional night-mode directory [wallpaper.automation] enabled = false interval_minutes = 0 # 0 = disabled order = "random" # random | alphabetical recursive = true # include subdirectories when picking random wallpapers # ── Theme ───────────────────────────────────────────────────────────────────── [theme] mode = "dark" # dark | light | auto source = "builtin" # builtin | wallpaper | community builtin = "Noctalia" # Ayu | Catppuccin | Dracula | Eldritch | Gruvbox | # Kanagawa | Noctalia | Nord | Rosé Pine | Tokyo-Night # community_palette = "Noctalia" # fetched from api.noctalia.dev, cached locally # wallpaper_scheme = "m3-content" # m3-tonal-spot | m3-content | m3-fruit-salad | # m3-rainbow | m3-monochrome | vibrant | faithful | # dysfunctional | muted [theme.templates] enable_builtin_templates = true builtin_ids = [] # opt-in; list ids with: noctalia theme --list-builtins enable_community_templates = true community_ids = [] # fetched from api.noctalia.dev/templates, cached locally enable_user_templates = false user_config = "~/.config/noctalia/user-templates.toml" # ── Backdrop ────────────────────────────────────────────────────────────────── [backdrop] enabled = false blur_intensity = 0.5 # 0.0 = no blur, 1.0 = maximum tint_intensity = 0.3 # 0.0 = no tint, 1.0 = opaque # ── Notifications ───────────────────────────────────────────────────────────── [notification] enable_daemon = true layer = "top" # top | overlay background_opacity = 0.97 # IPC examples: # noctalia msg notification-clear-active # noctalia msg notification-clear-history # ── OSD ─────────────────────────────────────────────────────────────────────── [osd] position = "top_right" # top_right | top_left | top_center | bottom_right | bottom_left | bottom_center # ── System Monitor ──────────────────────────────────────────────────────────── [system.monitor] enabled = true # sample CPU, memory, network, load, temperature, and disk statistics # ── Weather ─────────────────────────────────────────────────────────────────── [weather] enabled = false auto_locate = false # resolve location from IP when true address = "Toronto, ON" # geocoded when auto_locate = false refresh_minutes = 30 unit = "celsius" # celsius | fahrenheit # ── Audio ───────────────────────────────────────────────────────────────────── [audio] enable_overdrive = false # allow volume above 100% (up to 150%) enable_sounds = false # master toggle for UI feedback sounds sound_volume = 0.5 # 0.0 - 1.0 volume_change_sound = "" # empty = bundled sounds/volume-change.wav notification_sound = "" # empty = bundled sounds/notification.wav # ── Brightness ──────────────────────────────────────────────────────────────── [brightness] enable_ddcutil = false # ignore_mmids = [] # skip these monitors from ddcutil; run: ddcutil --verbose detect # Per-monitor backend override: # [brightness.monitor.eDP-1] # backend = "backlight" # auto | none | backlight | ddcutil # [brightness.monitor.DP-1] # backend = "ddcutil" # ── Night Light ─────────────────────────────────────────────────────────────── [nightlight] enabled = false force = false use_weather_location = true temperature_day = 6500 # Kelvin temperature_night = 4000 # Kelvin # start_time = "20:30" # HH:MM — explicit schedule takes priority over geolocation # stop_time = "07:30" # latitude = 52.5200 # longitude = 13.4050 # ── Idle ────────────────────────────────────────────────────────────────────── [idle.behavior.lock] timeout = 660 command = "noctalia:screen-lock" enabled = false # [idle.behavior.screen-off] # timeout = 600 # command = "noctalia:dpms-off" # resume_command = "noctalia:dpms-on" # ── Keybinds ────────────────────────────────────────────────────────────────── [keybinds] validate = ["return", "kp_enter"] cancel = ["escape"] left = ["left"] right = ["right"] up = ["up"] down = ["down"] # ── Bar ─────────────────────────────────────────────────────────────────────── [bar.main] position = "top" # top | bottom | left | right thickness = 34 background_opacity = 1.0 radius = 12 margin_h = 180 margin_v = 10 padding = 14 widget_spacing = 6 scale = 1.0 shadow = true auto_hide = false reserve_space = true attach_panels = true capsule = false # capsule_fill = "surface_variant" # capsule_opacity = 1.0 # capsule_border = "outline" # uncomment for a border on all widgets start = ["launcher", "wallpaper", "workspaces"] center = ["clock"] end = ["media", "tray", "notifications", "clipboard", "network", "bluetooth", "volume", "brightness", "battery", "control-center", "session"] # Per-monitor override example — only the fields you list are overridden: # [bar.main.monitor.dp1] # match = "DP-1" # thickness = 44 # ── Dock ────────────────────────────────────────────────────────────────────── [dock] enabled = false # set true to activate position = "bottom" # top | bottom | left | right icon_size = 48 padding = 8 item_spacing = 6 background_opacity = 0.88 radius = 16 margin_h = 0 margin_v = 8 shadow = true show_running = true auto_hide = false reserve_space = false active_scale = 1.0 inactive_scale = 0.85 active_opacity = 1.0 inactive_opacity = 0.85 show_instance_count = true active_monitor_only = false pinned = [] # e.g. ["firefox", "code", "kitty"] # ── Desktop Widgets ─────────────────────────────────────────────────────────── [desktop_widgets] enabled = false # ── Control Center ──────────────────────────────────────────────────────────── # Shortcut buttons shown on the right side of the dashboard (up to 6). # [[control_center.shortcuts]] # type = "wifi" # [[control_center.shortcuts]] # type = "bluetooth" # [[control_center.shortcuts]] # type = "nightlight" # [[control_center.shortcuts]] # type = "notification" # [[control_center.shortcuts]] # type = "wallpaper" # [[control_center.shortcuts]] # type = "session" # ── Hooks ───────────────────────────────────────────────────────────────────── [hooks] battery_low_percent_threshold = 0 # set to e.g. 15 to enable battery_under_threshold hook # started = "notify-send 'Noctalia' 'Shell started'" # wallpaper_changed = [] # colors_changed = [] # session_locked = [] # session_unlocked = [] # logging_out = [] # rebooting = [] # shutting_down = [] # wifi_enabled = [] # wifi_disabled = [] # bluetooth_enabled = [] # bluetooth_disabled = [] # battery_state_changed = "notify-send 'Power' \"Battery: $NOCTALIA_BATTERY_STATE\"" # battery_under_threshold = "notify-send 'Power' \"Battery at ${NOCTALIA_BATTERY_PERCENT}%\"" # [widget.launcher] # custom_image = "/path/to/image.png" # [widget.control-center] # custom_image = "/path/to/image.png" # [widget.notifications] # hide_when_no_unread = true # [widget.clock] # format = "{:%H:%M}\n{:%d/%m}" # vertical_format = "{:%H\n%M}"