Configuration Reference
Complete reference for all configuration options in ~/.config/ashell/config.toml.
Top-Level Options
| Field | Type | Default | Description |
|---|---|---|---|
log_level | String | "warn" | Log level (env_logger syntax) |
position | "Top" | "Bottom" | "Bottom" | Bar position on screen |
layer | "Top" | "Bottom" | "Overlay" | "Bottom" | Wayland layer (Bottom = below floating windows) |
outputs | "All" | "Active" | { Targets = [...] } | "All" | Which monitors show the bar |
enable_esc_key | bool | false | Whether ESC key closes menus |
Module Layout
[modules]
left = ["Workspaces"]
center = ["Tempo"]
right = [["SystemInfo", "Settings"], "Tray"]
Module names: "Workspaces", "WindowTitle", "SystemInfo", "KeyboardLayout", "KeyboardSubmap", "Tray", "Clock", "Tempo", "Privacy", "Settings", "MediaPlayer", "Updates", "Custom:name".
Appearance
[appearance]
style = "Islands" # "Islands", "Solid", or "Gradient"
opacity = 0.9 # 0.0-1.0
font_name = "JetBrains Mono" # Optional custom font
scale_factor = 1.0 # DPI scale factor
Colors
# Simple hex color
[appearance]
background = "#1e1e2e"
# Complete color with variants
[appearance.primary]
base = "#cba6f7"
strong = "#dbbcff"
weak = "#a385d8"
text = "#1e1e2e"
Available color fields: background, text, primary, secondary, success, danger.
Menu Appearance
[appearance.menu]
opacity = 0.95
backdrop_blur = true
Workspace Colors
[appearance]
workspace_colors = ["#cba6f7", "#f38ba8", "#a6e3a1", "#89b4fa"]
special_workspace_colors = ["#fab387"]
Updates Module
[updates]
check_cmd = "checkupdates | wc -l" # Command to check for updates
update_cmd = "foot -e sudo pacman -Syu" # Command to run updates
interval = 3600 # Check interval in seconds
If the [updates] section is omitted entirely, the Updates module is disabled.
Workspaces Module
[workspaces]
visibility_mode = "All" # "All", "MonitorSpecific", "MonitorSpecificExclusive"
group_by_monitor = false
enable_workspace_filling = false # Fill empty workspace slots
disable_special_workspaces = false
max_workspaces = 10 # Optional: limit workspace count
workspace_names = ["1", "2", "3"] # Optional: custom names
enable_virtual_desktops = false
Window Title Module
[window_title]
mode = "Title" # "Title", "Class", "InitialTitle", "InitialClass"
truncate_title_after_length = 150
Keyboard Layout Module
[keyboard_layout]
labels = { "English (US)" = "EN", "Italian" = "IT" }
System Info Module
[system_info]
# CPU thresholds
[system_info.cpu]
warn_threshold = 60
alert_threshold = 80
# Memory thresholds
[system_info.memory]
warn_threshold = 60
alert_threshold = 80
# Temperature thresholds
[system_info.temperature]
warn_threshold = 60
alert_threshold = 80
# Disk thresholds
[system_info.disk]
warn_threshold = 60
alert_threshold = 80
Clock Module (Deprecated)
[clock]
format = "%H:%M" # chrono format string
Tempo Module
[tempo]
format = "%H:%M"
date_format = "%A, %B %d"
timezones = ["America/New_York", "Europe/London"]
weather_location = "Rome" # Or coordinates
weather_format = "{temp}°C"
Settings Module
[settings]
# Custom buttons in the settings panel
[[settings.custom_buttons]]
icon = "\u{f023}"
label = "VPN"
status_cmd = "vpn-status"
on_click = "vpn-toggle"
Media Player Module
[media_player]
format = "{artist} - {title}"
Custom Modules
[[CustomModule]]
name = "mymodule"
type = "Text" # "Text" or "Button"
cmd = "echo Hello"
interval = 5
format = "Result: {}"
[[CustomModule]]
name = "launcher"
type = "Button"
icon = "\u{f0e7}"
on_click = "rofi -show drun"
Custom module fields:
| Field | Type | Required | Description |
|---|---|---|---|
name | String | Yes | Unique identifier |
type | "Text" | "Button" | No | Display mode |
cmd | String | No | Command to execute for display text |
on_click | String | No | Command on click (Button type) |
icon | String | No | Icon character |
interval | u64 | No | Refresh interval in seconds |
format | String | No | Output format string |
Reference a custom module in the layout as "Custom:name":
[modules]
right = ["Custom:mymodule", "Settings"]