// Whether new windows should go to the top or bottom of the window stack
attach_mode top
// Number of windows in the primary stack
primary_count 1
// Proportion of output width taken by the primary stack
primary_ratio 0.55
// Proportion of output width taken by a window if it's the only visible tiled window
// This is intended to be useful for ultrawides where a very wide window might not look very nice
// When this is < 1.0 and only one window is being tiled, the window will have width
// output_width * single_window_ratio and be centered on the output
single_window_ratio 0.70
/// Side the primary should be on
primary_side left 
// Whether mousing over a new window should move focus
focus_follows_pointer #true
// Whether the focus should warp to the center of newly-focused windows
pointer_warp_on_focus_change #true
// Path to image to use as wallpaper
// The same image is displayed on all outputs, but scaled separately
// If this config is missing, then the background is blank black screen
wallpaper_image_path "~/Pictures/the_valley.png"
borders {
    width 2
    // 8 or 10 digit hex color
    color_focused "0x89b4fa"
    color_unfocused "0x1e1e2e"
}
// Bar widget; shows the time
bar {
    position top
    time_format "%H:%M"
}
// Tag overlay widget; shown briefly when switching tags
// Remove this block to disable the overlay entirely
tag_overlay {
    tag_amount 10
    background_color "0x1e1e2e"
    border_color "0x6c7086"
    square_active_background_color "0x89b4fa"
    square_active_border_color "0x6c7086"
    square_active_occupied_color "0xcdd6f4"
    square_inactive_background_color "0x585b70"
    square_inactive_border_color "0x6c7086"
    square_inactive_occupied_color "0xcdd6f4"
}
// Window rules; applied once when a window first appears
// Rules are evaluated top-to-bottom; later rules override earlier ones
window_rules {
    // Float Firefox picture-in-picture windows
    float app_id="firefox" title="Picture-in-Picture"
    // Float any window with "Preferences" in the title
    float title="*Preferences*"
    // Keep mpv windows tiled
    no_float app_id="mpv"
    // Send Slack to tag 3 (1<<2 = 0x0004)
    tags 0x0004 app_id="Slack"
}
keybinds {
    // Swap a window
    spawn Mod4 T foot
    // Move focus up or down the windows stack
    focus_next_window Mod4 J
    focus_prev_window Mod4 K
    // Move focus between windows
    focus_next_output Mod4 Period
    focus_prev_output Mod4 Comma
    // Move windows between outputs
    send_to_next_output Mod4+Shift Period
    send_to_prev_output Mod4+Shift Comma
    // Swap the currently-focused window with the current primary
    zoom Mod4 Z
    // Float/unfloat the currently-focused window
    toggle_float Mod4+Shift F
    // Change the primary ratio of the current output
    change_primary_ratio Mod4 H 0.05
    change_primary_ratio Mod4 L -0.05
    // Change the number of windows in the primary side
    increment_primary_count Mod4 I
    decrement_primary_count Mod4 D
    // Reload config file
    reload_config Mod4+Shift R
    // Toggle fullscreen on the currently-focused window
    toggle_fullscreen Mod4 F
    // Close the currently-focused window
    close_window Mod4+Shift Q
    // Exit the entire river session
    exit_river Ctrl+Alt Delete
    // Move windows up or down the stack
    swap_next Mod4+Shift N
    swap_prev Mod4+Shift P
    // Move floating windows; noop on tiled windows
    move_left Mod4+Shift H 100
    move_down Mod4+Shift J 100
    move_up Mod4+Shift K 100
    move_right Mod4+Shift L 100
    // Resize floating windows; noop on tiled windows
    resize_width Mod4+Alt+Shift H -100
    resize_height Mod4+Alt+Shift J 100
    resize_height Mod4+Alt+Shift K -100
    resize_width Mod4+Alt+Shift L 100
    // Media keys (no modifier)
    spawn None XF86AudioRaiseVolume "~/.config/river/volume-up.sh"
    spawn None XF86AudioLowerVolume "~/.config/river/volume-down.sh"
    spawn None XF86AudioMute "~/.config/river/volume-toggle-mute.sh"
    spawn None XF86AudioMedia "playerctl play-pause"
    spawn None XF86AudioPlay "playerctl play-pause"
    spawn None XF86AudioPrev "playerctl previous"
    spawn None XF86AudioNext "playerctl next"
    // Brightness keys (no modifier)
    spawn None XF86MonBrightnessUp "~/.config/river/brightness-up.sh"
    spawn None XF86MonBrightnessDown "~/.config/river/brightness-down.sh"
    // Special command to generate keybinds for keys 1-9 and tags 1<<0 through 1<<8
    tag_bind Mod4 set_output_tags
    tag_bind Mod4+Shift set_window_tags
    tag_bind Mod4+Ctrl toggle_output_tags
    tag_bind Mod4+Ctrl+Shift toggle_window_tags
}
pointer_binds {
    // Mod4 + Left click to move floating windows;
    // tiled windows will automatically float if moved
    move_window Mod4 BTN_LEFT
    // Mod4 + Right click to resize floating windows;
    // tiled windows will automatically float if resized
    resize_window Mod4 BTN_RIGHT
}

// Keyboard layout configuration
// All fields are optional and default to system/xkbcommon defaults
keyboard_layout {
    layout "us"
    // variant "dvorak"
    options "compose:rctrl"
}
// Default input config for all devices
input {
    accel_profile "flat"
}
// Framework 13 Touchpad
input name="PIXA3854:00 093A:0274 Touchpad" {
    accel_profile "adaptive"
    click_method "clickfinger"
    natural_scroll "enabled"
    tap "disabled"
}
// Per-host config using the host= property
// Nodes with a host property are only applied when the hostname matches
wallpaper_image_path "~/Pictures/desktop.png" host="desktop"
wallpaper_image_path "~/Pictures/laptop.png" host="laptop"

