fuzzel could only answer "which app", so launching Brave at a URL meant picking the app, waiting for it, then typing the address somewhere else. The launcher now takes a verb and an object in one line: type `gitlab.enqs.de` and every app that can open it sorts to the top, default browser first, ready for Enter — or arrow/hjkl down to Brave's New Incognito Window, which is offered as a peer of Brave itself rather than hidden behind a submenu. services/Apps.qml is the brain and holds no UI: it flattens desktop entries and their actions into one index, classifies the typed argument (url / mail / path), ranks by fuzzy match plus handler affinity plus frecency, and launches. Launching through `uwsm app` keeps each app in its own scope; entries whose Exec declares no field code (Brave's `--incognito` action, among others) are launched by tokenising Exec per the Desktop Entry spec and appending the argument, never via `sh -c`. Four prefixes reuse the same window, so there is one picker and one set of keys: `>` runs a command, `=` evaluates arithmetic, `:` is clipboard history (cliphist, which had been a second fuzzel invocation), and a dmenu mode is driven over IPC. quickshell/scripts/takemi-dmenu is the bridge for that last one — a `fuzzel --dmenu` drop-in for scripts that want a picker, symlinked into ~/.local/bin. fluxo's bt menu now goes through it. Living in the Quickshell process means the window is on screen on the frame the bind fires, with no process to spawn. Removes fuzzel entirely: its config, its theme submodule, the package, and the last consumers (the bar sigil, fluxo's menu_command). Also drops hypr/scripts/powermenu.sh, which was fuzzel-based and bound to nothing.
113 lines
3.4 KiB
TOML
113 lines
3.4 KiB
TOML
# fluxo-rs configuration
|
|
# Location: ~/.config/fluxo/config.toml
|
|
#
|
|
# The hardware modules below emit raw pipe-delimited values rather than display
|
|
# strings. The Quickshell config (~/.config/quickshell/services/Sys.qml) parses
|
|
# them and does its own formatting. The previous human-readable Waybar formats
|
|
# are preserved in config.toml.waybar-bak.
|
|
#
|
|
# Quickshell only consumes cpu, mem, gpu, disk, net, sys and power from fluxo.
|
|
# Everything else it gets natively — Quickshell.Services.Mpris, .Pipewire,
|
|
# .UPower, .Notifications, Quickshell.Bluetooth — and Brightness.qml reads
|
|
# sysfs directly. Those fluxo modules are therefore switched off below: left on,
|
|
# they held a libpulse context, a BlueZ D-Bus poll every 2 s and an MPRIS
|
|
# marquee ticker firing twice a second, all feeding a bar that does not exist.
|
|
|
|
[general]
|
|
menu_command = "takemi-dmenu --prompt \"$FLUXO_PROMPT\""
|
|
|
|
[signals]
|
|
network = 1
|
|
cpu = 2
|
|
memory = 3
|
|
gpu = 4
|
|
sys = 5
|
|
disk = 6
|
|
game = 7
|
|
audio = 8
|
|
bt = 9
|
|
power = 10
|
|
mpris = 11
|
|
backlight = 12
|
|
dnd = 13
|
|
|
|
[network]
|
|
format = "{interface}|{ip}|{rx:.3}|{tx:.3}"
|
|
|
|
[cpu]
|
|
format = "{usage:.1}|{temp:.1}"
|
|
|
|
[memory]
|
|
format = "{used:.2}|{total:.2}"
|
|
|
|
[sys]
|
|
format = "{uptime}|{load1:.2}|{load5:.2}|{load15:.2}"
|
|
|
|
[disk]
|
|
format = "{mount}|{used:.1}|{total:.1}"
|
|
|
|
|
|
[power]
|
|
format = "{percentage}"
|
|
|
|
[audio]
|
|
# Quickshell.Services.Pipewire drives Audio.qml; leaving this on kept a
|
|
# libpulse context and its callbacks alive for nothing.
|
|
enabled = false
|
|
format_sink_unmuted = "{name} {volume:>3}% <span size='large'>{icon}</span>"
|
|
format_sink_muted = "{name} <span size='large'> {icon}</span>"
|
|
format_source_unmuted = "{name} {volume:>3}% <span size='large'>{icon}</span>"
|
|
format_source_muted = "{name} <span size='large'>{icon}</span>"
|
|
|
|
[bt]
|
|
# Quickshell.Bluetooth drives Bt.qml. This module polled BlueZ over D-Bus every
|
|
# 2 seconds regardless.
|
|
enabled = false
|
|
format_plugin = "{alias} [{left}|{right}] {anc} <span size='large'></span>"
|
|
format_connected = "{alias} <span size='large'></span>"
|
|
format_disconnected = "Disconnected <span size='large'></span>"
|
|
format_disabled = "<span size='large'></span>"
|
|
|
|
[game]
|
|
format_active = "<span size='large'></span>"
|
|
format_inactive = "<span size='large'></span>"
|
|
|
|
[mpris]
|
|
# Quickshell.Services.Mpris drives Media.qml, and MediaPill/MediaPopout do their
|
|
# own eliding and scrolling. This module was the single most expensive thing in
|
|
# the daemon: `scroll` woke a ticker every `scroll_speed` ms to advance a marquee
|
|
# offset for a Waybar that is not running, and each tick drove the signaler.
|
|
enabled = false
|
|
format = "{artist} - {title}"
|
|
max_length = 20
|
|
scroll = true
|
|
scroll_speed = 500
|
|
scroll_separator = " /// "
|
|
|
|
[pool]
|
|
enabled = false
|
|
format = "{used:>4.0}G / {total:>4.0}G"
|
|
|
|
[gpu]
|
|
enabled = true
|
|
format_amd = "{usage:.0}|{vram_used:.2}|{vram_total:.2}|{temp:.1}"
|
|
format_intel = "{usage:.0}|0|0|0"
|
|
format_nvidia = "{usage:.0}|{vram_used:.2}|{vram_total:.2}|{temp:.1}"
|
|
|
|
[keyboard]
|
|
enabled = false
|
|
format = "{layout}"
|
|
|
|
[backlight]
|
|
# Was `enable = true` — not a key fluxo reads, so this section was silently
|
|
# running on its default of enabled. Brightness.qml reads
|
|
# /sys/class/backlight directly, so the D-Bus watcher here is redundant.
|
|
enabled = false
|
|
format = "{percentage}"
|
|
|
|
[dnd]
|
|
# Notifs.qml owns do-not-disturb via Quickshell.Services.Notifications.
|
|
enabled = false
|
|
format_dnd = "<span size='large'></span>"
|
|
format_normal = "<span size='large'></span>"
|