mesh/merge-gate pass: builds dunst → g14, shanks; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery superseded: a newer delivery to the same trunk took over its walk
Review of hq issue 360: rofi without -no-custom hands typed text to dunst as if chosen.
111 lines
3.6 KiB
Plaintext
111 lines
3.6 KiB
Plaintext
# dunst, the notifier (module dunst, novox/hq ADR 0208). Owned by the mesh: this file is replaced
|
|
# at every push. Adopted from the laptop's file of 2026-10-04 (the two workstations differed in
|
|
# position, transparency and corner radius; the laptop's square, opaque, top-right one matches the
|
|
# rest of the desktop). Only what differs from dunst's defaults, and what the desktop relies on.
|
|
#
|
|
# Other modules' rules go in ~/.config/dunst/dunstrc.d/*.conf, which dunst reads after this file,
|
|
# so a drop-in outranks it. dunst is started by D-Bus on the first notification: nothing starts it.
|
|
# When the mesh rewrites this file (a font-size or width setting changed), it tells a running dunst
|
|
# to read it again (its unit's reload, dunstctl reload); what is on screen stays.
|
|
|
|
[global]
|
|
monitor = 0
|
|
follow = none
|
|
|
|
# Geometry
|
|
width = ${setting:width}
|
|
height = (0, 300)
|
|
origin = top-right
|
|
offset = (10, 50)
|
|
notification_limit = 20
|
|
|
|
progress_bar = true
|
|
progress_bar_height = 10
|
|
progress_bar_frame_width = 1
|
|
progress_bar_min_width = 150
|
|
progress_bar_max_width = 300
|
|
|
|
indicate_hidden = yes
|
|
transparency = 0
|
|
separator_height = 2
|
|
padding = 8
|
|
horizontal_padding = 8
|
|
text_icon_padding = 0
|
|
frame_width = 3
|
|
frame_color = "#de5200"
|
|
gap_size = 0
|
|
separator_color = frame
|
|
sort = yes
|
|
corner_radius = 0
|
|
|
|
# Text: the interface face (research 026/04)
|
|
font = Inter ${setting:font-size}
|
|
line_height = 0
|
|
markup = full
|
|
format = "<b>%s</b>\n%b"
|
|
alignment = left
|
|
vertical_alignment = center
|
|
show_age_threshold = 60
|
|
ellipsize = middle
|
|
ignore_newline = no
|
|
stack_duplicates = true
|
|
hide_duplicate_count = false
|
|
show_indicators = yes
|
|
|
|
# Icons, from the desktop's icon theme
|
|
enable_recursive_icon_lookup = true
|
|
icon_theme = Adwaita
|
|
icon_position = left
|
|
min_icon_size = 32
|
|
max_icon_size = 128
|
|
|
|
# History
|
|
sticky_history = yes
|
|
history_length = 20
|
|
|
|
# The context menu is rofi (installed by the rofi module); -no-custom keeps typed text from becoming a choice. Not `dmenu`, the node-launcher's command in
|
|
# ~/.local/bin: dunst runs in the account's service manager, whose PATH does not hold that
|
|
# directory (seen on the laptop on 2026-10-10), so the menu never opened. Links open in the
|
|
# desktop's default browser.
|
|
dmenu = rofi -dmenu -no-custom -p dunst
|
|
browser = /usr/bin/xdg-open
|
|
always_run_script = true
|
|
|
|
title = Dunst
|
|
class = Dunst
|
|
ignore_dbusclose = false
|
|
|
|
# A tap answers (the touchpads have no middle button). do_action runs the notification's only
|
|
# action, or opens the context menu when it has several; without actions it opens its one link,
|
|
# if it has one. The notification then closes; a menu dismissed with Escape leaves it shown.
|
|
mouse_left_click = do_action, close_current
|
|
mouse_middle_click = do_action, close_current
|
|
mouse_right_click = close_all
|
|
|
|
[urgency_low]
|
|
background = "#000000"
|
|
foreground = "#ffffff"
|
|
timeout = 10
|
|
|
|
[urgency_normal]
|
|
background = "#000000"
|
|
foreground = "#ffffff"
|
|
timeout = 10
|
|
|
|
[urgency_critical]
|
|
background = "#000000"
|
|
foreground = "#ffffff"
|
|
frame_color = "#ff0000"
|
|
timeout = 0
|
|
|
|
# What is shown once is never kept (the review of 2026-10-09): a notification marked secret (a link's
|
|
# code, category mesh.secret) and any transient one leave no entry in the history, which
|
|
# node-notifier.history serves to every caller of the mesh's verbs.
|
|
[mesh-secret]
|
|
category = "mesh.secret"
|
|
history_ignore = yes
|
|
|
|
[transient-history-ignore]
|
|
match_transient = yes
|
|
history_ignore = yes
|