Add configurable night light, smooth gamma transitions, and shell controls. Update documentation and panel tests, and fix portal test startup synchronization.
239 lines
6.3 KiB
KDL
239 lines
6.3 KiB
KDL
// Commands run directly, without a shell. Install optional apps before using them.
|
|
commands {
|
|
terminal "foot"
|
|
browser "firefox"
|
|
editor "zed"
|
|
lock "ferese-lock"
|
|
screenshot "ferese-screenshot"
|
|
screenshot-full "ferese-screenshot" "--full"
|
|
|
|
brightness-up "brightnessctl" "set" "2%+"
|
|
brightness-down "brightnessctl" "set" "2%-"
|
|
volume-up "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%+"
|
|
volume-down "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%-"
|
|
mute "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"
|
|
mic-mute "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"
|
|
}
|
|
|
|
xwayland {
|
|
enabled #true
|
|
startup on-demand
|
|
path "xwayland-satellite"
|
|
}
|
|
|
|
// These supplement the built-in shortcuts listed in docs/shortcuts.md.
|
|
binding "Super+B" "spawn" "browser"
|
|
binding "Super+Z" "spawn" "editor"
|
|
binding "Super+Alt+L" "spawn" "lock"
|
|
binding "XF86MonBrightnessUp" "spawn" "brightness-up"
|
|
binding "XF86MonBrightnessDown" "spawn" "brightness-down"
|
|
binding "XF86AudioRaiseVolume" "spawn" "volume-up"
|
|
binding "XF86AudioLowerVolume" "spawn" "volume-down"
|
|
binding "XF86AudioMute" "spawn" "mute"
|
|
binding "XF86AudioMicMute" "spawn" "mic-mute"
|
|
|
|
binding "Super+Left" "focus" "left"
|
|
binding "Super+Down" "focus" "down"
|
|
binding "Super+Up" "focus" "up"
|
|
binding "Super+Right" "focus" "right"
|
|
binding "Super+Ctrl+Left" "move" "left"
|
|
binding "Super+Ctrl+Down" "move" "down"
|
|
binding "Super+Ctrl+Up" "move" "up"
|
|
binding "Super+Ctrl+Right" "move" "right"
|
|
binding "Super+Alt+Left" "resize" "left"
|
|
binding "Super+Alt+Down" "resize" "down"
|
|
binding "Super+Alt+Up" "resize" "up"
|
|
binding "Super+Alt+Right" "resize" "right"
|
|
|
|
// Replace a swipe action with "toggle-overview", "move" "left", or another action.
|
|
binding "Swipe3Up" "workspace-next"
|
|
binding "Swipe3Down" "workspace-previous"
|
|
binding "Swipe3Left" "focus" "right"
|
|
binding "Swipe3Right" "focus" "left"
|
|
|
|
input {
|
|
xkb-layout "us"
|
|
xkb-variant ""
|
|
xkb-options
|
|
focus-follows-mouse #false
|
|
repeat-rate 25
|
|
repeat-delay-ms 600
|
|
|
|
touchpad {
|
|
tap #true
|
|
natural-scroll #true
|
|
disable-while-typing #true
|
|
swipe-threshold 80
|
|
}
|
|
}
|
|
|
|
layout {
|
|
mode "scrolling"
|
|
inner-gap 4
|
|
outer-gap 4
|
|
smart-gaps #false
|
|
}
|
|
|
|
workspaces {
|
|
// Press the current workspace's shortcut again to return to the previous one.
|
|
auto-back-and-forth #false
|
|
}
|
|
|
|
scrolling {
|
|
default-column-width 0.5
|
|
focus-strategy "paged"
|
|
width-presets 0.33333 0.5 0.66667 "full"
|
|
}
|
|
|
|
animations {
|
|
enabled #true
|
|
reduced-motion #false
|
|
speed 0.9
|
|
spring {
|
|
duration-ms 240.0
|
|
bounce 0.0
|
|
overshoot #false
|
|
}
|
|
viewport-spring {
|
|
duration-ms 350.0
|
|
bounce 0.0
|
|
overshoot #false
|
|
}
|
|
}
|
|
|
|
appearance {
|
|
focus-effect {
|
|
enabled #true
|
|
active-opacity 1.0
|
|
inactive-opacity 1.0
|
|
inactive-dim 0.0
|
|
duration-ms 150
|
|
}
|
|
}
|
|
|
|
theme {
|
|
mode "dark"
|
|
family "ferese-blue"
|
|
split #false
|
|
schedule { source "schedule"; timezone "system"; light-at "07:00"; dark-at "19:00"; }
|
|
accessibility { increase-contrast #false; reduce-transparency #false; }
|
|
background {
|
|
mode "fill"
|
|
// path "/absolute/path/to/wallpaper.png"
|
|
}
|
|
material {
|
|
style "translucent"
|
|
}
|
|
geometry {
|
|
window-radius 12
|
|
shell-radius 12
|
|
border-width 1
|
|
focus-ring-width 1
|
|
control-gap 12
|
|
}
|
|
shadow {
|
|
soft {
|
|
blur 10
|
|
offset-y 2
|
|
opacity 0.07
|
|
}
|
|
}
|
|
// typography { font-family "JetBrainsMono Nerd Font"; }
|
|
}
|
|
|
|
status {
|
|
keybinding-guide #true
|
|
low-battery-threshold 20
|
|
}
|
|
|
|
// Panel composition is explicit; visibility and item options belong to each item.
|
|
// Opacity follows the shell; corners follow the panel style unless overridden here.
|
|
panel "main" {
|
|
geometry {
|
|
height 30
|
|
side-margins 18
|
|
edge-margin 6
|
|
window-clearance 4
|
|
}
|
|
edge "top"
|
|
style "flat"
|
|
border #false
|
|
start {
|
|
spacing 3
|
|
group "overview" {
|
|
padding 0 0
|
|
item "overview" kind="overview" overflow="never" priority=100
|
|
}
|
|
group "workspaces" {
|
|
padding 2 3
|
|
item "workspaces" kind="workspaces" overflow="never" priority=100
|
|
}
|
|
}
|
|
center {
|
|
group "title" {
|
|
padding 0 0
|
|
item "focused-window" kind="focused-window" visible=#true overflow="never"
|
|
}
|
|
}
|
|
end {
|
|
spacing 8
|
|
group "status" {
|
|
padding 2 3
|
|
item "media" kind="media"
|
|
item "quick-settings" kind="quick-settings"
|
|
item "night-light" kind="night-light"
|
|
item "network" kind="network"
|
|
item "audio" kind="audio"
|
|
item "recording" kind="recording"
|
|
item "notifications" kind="notifications"
|
|
item "battery" kind="battery" percentage=#true
|
|
}
|
|
group "time" {
|
|
padding 2 3
|
|
item "clock" kind="clock"
|
|
}
|
|
group "display" {
|
|
padding 0 0
|
|
item "display-mode" kind="display-mode"
|
|
}
|
|
}
|
|
}
|
|
|
|
window-rule app-id="dev.ferese.Settings" floating=#true
|
|
window-rule app-id="dev.ferese.ScreenShare" floating=#true
|
|
window-rule app-id="dev.ferese.Authentication" floating=#true
|
|
window-rule app-id="org.gnome.Calculator" floating=#true
|
|
window-rule app-id="org.pulseaudio.pavucontrol" floating=#true
|
|
window-rule title="Picture-in-Picture" floating=#true
|
|
window-rule title="Choose a wallpaper" floating=#true
|
|
|
|
notifications {
|
|
show-popups #true
|
|
do-not-disturb #false
|
|
timeout-ms 6000
|
|
}
|
|
|
|
lock-screen {
|
|
clock-format "12h"
|
|
background-dim 0.26
|
|
background-blur 14
|
|
dim-after-seconds 30
|
|
sleep-after-seconds 120
|
|
}
|
|
|
|
// Install swayidle and test unlocking before enabling automatic locking.
|
|
// autostart "swayidle" "-w" "timeout" "300" "ferese-lock" "before-sleep" "ferese-lock" "lock" "ferese-lock"
|
|
|
|
// Fullscreen MPRIS playback keeps the session awake until paused or hidden.
|
|
// idle-inhibit { fullscreen-playback #false; }
|
|
// window-rule app-id="org.example.Presentation" idle-inhibit="visible"
|
|
|
|
// Find display names with feresectl outputs, then adjust and uncomment.
|
|
// output-profile "docked" {
|
|
// output "HDMI-A-1" scale=1.5 { position 0 0; }
|
|
// output "eDP-1" scale=1.5 { position 2560 0; }
|
|
// }
|
|
// output-profile "laptop" {
|
|
// output "eDP-1" scale=1.5
|
|
// }
|