# PLEASE READ THE MAN PAGE BEFORE EDITING THIS FILE!
# https://htmlpreview.github.io/?https://github.com/conformal/spectrwm/blob/master/spectrwm.html
# NOTE: all rgb color values in this file are in hex! see XQueryColor for examples

 workspace_limit	= 10
# focus_mode		= default
# focus_close		= previous
# focus_close_wrap	= 1
# focus_default		= last
# spawn_position		= next
# workspace_clamp	= 1
# warp_focus		= 1
# warp_pointer		= 1

# Window Decoration
border_width          = 1
color_focus           = rgb:bb/c5/ff
color_focus_maximized = yellow
color_unfocus         = rgb:88/88/88
color_unfocus_maximized	= rgb:88/88/00
region_padding	      = 8
tile_gap              = 8

# Region containment
# Distance window must be dragged/resized beyond the region edge before it is
# allowed outside the region.
# boundary_width     = 50

# Remove window border when bar is disabled and there is only one window in workspace
# disable_border		= 1

# Bar Settings
bar_action              = ~/.config/spectrwm/baraction.sh
bar_action_expand       = 200
bar_enabled             = 1
bar_border_width        = 6
bar_border[1]           = rgb:28/2a/36
bar_border_unfocus[1]	= rgb:28/2a/36
bar_color[1]            = rgb:28/2a/36, rgb:00/80/80
bar_color_selected[1]	= rgb:00/80/80
bar_delay               = 5
bar_font_color[1]       = rgb:bb/c5/ff, rgb:e1/ac/ff, rgb:dd/ff/a7, rgb:ff/8b/92, rgb:ff/e5/85, rgb:89/dd/ff
bar_font_color_selected	= black
#bar_font                = Mononoki Nerd Font:size=9, JoyPixels:size=9
#bar_font                = Mononoki Nerd Font:size=9
bar_font               = Noto Sans Font:size=9
bar_justify             = center # Don't touch

#bar_format              =  +|L+1<+N:+I +S (+D) +P +|R+A+1< # Bars on the sides
#bar_format              =  +|L+1<+N:+I +S (+D) +W +|R+A+1< # Bars on the sides + window titles
bar_format             = +N:+I +S (+D) +P +4< +8<+A+4<+V # Bar in the center
#bar_format             = +N:+I +S (+D) +C +4< +8<+A+4<+V # Bar in the center (more simple)
#bar_format             = +N:+I +S <+D>+4< +8<+A+4<+V # Bar in the center (minimal)

workspace_indicator     = listcurrent,listactive,markcurrent,printnames
bar_at_bottom           = 0
stack_enabled           = 1
#clock_enabled           = 1
#clock_format            = %a %b %d %R %Z %Y
iconic_enabled          = 0
maximize_hide_bar	    = 0
window_class_enabled	= 1
window_instance_enabled	= 1
window_name_enabled 	= 1
verbose_layout	    	= 1
urgent_enabled	    	= 1

# Dialog box size ratio when using TRANSSZ quirk; 0.3 < dialog_ratio <= 1.0
# dialog_ratio		= 0.6

# Split a non-RandR dual head setup into one region per monitor
# (non-standard driver-based multihead is not seen by spectrwm)
# region		= screen[1]:1280x1024+0+0
# region		= screen[1]:1280x1024+1280+0

# Launch applications in a workspace of choice
#autorun		= ws[1]:xterm
# autorun		= ws[2]:xombrero http://www.openbsd.org
autorun = ws[1]:~/.config/spectrwm/startwallpaper.sh

# Configure screens and resolution
autorun = ws[1]:~/.config/spectrwm/startxrandr.sh

# Load compton of picom
autorun = ws[1]:~/.config/spectrwm/startcompositor.sh

# Start xscreensaver
autorun = ws[1]:xscreensaver

# Autostart script
autorun = ws[1]:~/.config/spectrwm/autostart.sh

# Autostart tray on Workspace 7
autorun = ws[7]:~/.config/spectrwm/showtray.sh

# Customize workspace layout at start
# layout		= ws[1]:4:0:0:0:vertical
# layout		= ws[2]:0:0:0:0:horizontal
# layout		= ws[3]:0:0:0:0:fullscreen
# layout		= ws[4]:4:0:0:0:vertical_flip
# layout		= ws[5]:0:0:0:0:horizontal_flip

# Set workspace name at start
name      = ws[1]:term
name      = ws[2]:www
name      = ws[3]:chat
name      = ws[4]:files
name      = ws[5]:media
name      = ws[6]:game
name      = ws[7]:mail
name      = ws[8]:dev
name      = ws[9]:vm
name      = ws[10]:all

# Mod key, (Windows key is Mod4) (Apple key on OSX is Mod2)
modkey = Mod4

# This allows you to include pre-defined key bindings for your keyboard layout.
# keyboard_mapping = ~/.spectrwm_us.conf

# PROGRAMS

# Validated default programs:
# program[lock]		= xlock
 program[term]		= alacritty
 program[menu]		= dmenu_run $dmenu_bottom -fn $bar_font -nb $bar_color -nf $bar_font_color -sb $bar_color_selected -sf $bar_font_color_selected
 #program[search]	= dmenu $dmenu_bottom -i -fn $bar_font -nb $bar_color -nf $bar_font_color -sb $bar_color_selected -sf $bar_font_color_selected
 #program[name_workspace]	= dmenu $dmenu_bottom -p Workspace -fn $bar_font -nb $bar_color -nf $bar_font_color -sb $bar_color_selected -sf $bar_font_color_selected

# Key bindings for United States (us) keyboards
# unbind with: bind[] = <keys>
#bind[bar_toggle]	= MOD+b
#bind[bar_toggle_ws]	= MOD+Shift+b
bind[button2]		= MOD+v
bind[cycle_layout]	= MOD+space
bind[flip_layout]	= MOD+Shift+backslash
bind[float_toggle]	= MOD+t
bind[focus_main]	= MOD+m
bind[focus_next]	= MOD+j
bind[focus_next]	= MOD+Tab
bind[focus_prev]	= MOD+k
bind[focus_prev]	= MOD+Shift+Tab
#bind[focus_urgent]	= MOD+u
bind[height_grow]	= MOD+Shift+equal
bind[height_shrink]	= MOD+Shift+minus
#bind[iconify]		= MOD+w
bind[initscr]		= MOD+Shift+i
#bind[lock]		= MOD+Shift+Delete
#bind[master_add]	= MOD+Shift+comma
#bind[master_del]	= MOD+Shift+period
#bind[master_grow]	= MOD+l
#bind[master_shrink]	= MOD+h
bind[maximize_toggle]	= MOD+e
bind[move_down]		= MOD+Shift+bracketright
bind[move_left]		= MOD+bracketleft
bind[move_right]	= MOD+bracketright
bind[move_up]		= MOD+Shift+bracketleft
bind[mvrg_1]		= MOD+Shift+KP_End
bind[mvrg_2]		= MOD+Shift+KP_Down
bind[mvrg_3]		= MOD+Shift+KP_Next
bind[mvrg_4]		= MOD+Shift+KP_Left
bind[mvrg_5]		= MOD+Shift+KP_Begin
bind[mvrg_6]		= MOD+Shift+KP_Right
bind[mvrg_7]		= MOD+Shift+KP_Home
bind[mvrg_8]		= MOD+Shift+KP_Up
bind[mvrg_9]		= MOD+Shift+KP_Prior
bind[mvws_1]		= MOD+Shift+1
bind[mvws_2]		= MOD+Shift+2
bind[mvws_3]		= MOD+Shift+3
bind[mvws_4]		= MOD+Shift+4
bind[mvws_5]		= MOD+Shift+5
bind[mvws_6]		= MOD+Shift+6
bind[mvws_7]		= MOD+Shift+7
bind[mvws_8]		= MOD+Shift+8
bind[mvws_9]		= MOD+Shift+9
bind[mvws_10]		= MOD+Shift+0
bind[mvws_11]		= MOD+Shift+F1
bind[mvws_12]		= MOD+Shift+F2
bind[mvws_13]		= MOD+Shift+F3
bind[mvws_14]		= MOD+Shift+F4
bind[mvws_15]		= MOD+Shift+F5
bind[mvws_16]		= MOD+Shift+F6
bind[mvws_17]		= MOD+Shift+F7
bind[mvws_18]		= MOD+Shift+F8
bind[mvws_19]		= MOD+Shift+F9
bind[mvws_20]		= MOD+Shift+F10
bind[mvws_21]		= MOD+Shift+F11
bind[mvws_22]		= MOD+Shift+F12
bind[name_workspace]	= MOD+Shift+slash
#bind[quit]		= MOD+Shift+q
bind[quit]		= MOD+Shift+Delete
bind[raise_toggle]	= MOD+Control+r
bind[restart]		= MOD+Shift+r
bind[rg_1]		= MOD+KP_End
bind[rg_2]		= MOD+KP_Down
bind[rg_3]		= MOD+KP_Next
bind[rg_4]		= MOD+KP_Left
bind[rg_5]		= MOD+KP_Begin
bind[rg_6]		= MOD+KP_Right
bind[rg_7]		= MOD+KP_Home
bind[rg_8]		= MOD+KP_Up
bind[rg_9]		= MOD+KP_Prior
bind[rg_next]   = MOD+period
bind[rg_prev]   = MOD+comma
#bind[screenshot_all]	= MOD+s
bind[screenshot_wind]	= MOD+Shift+s
bind[search_win]  = MOD+f
bind[search_workspace]  = MOD+slash
bind[stack_dec]   = MOD+Shift+period
bind[stack_inc]   = MOD+Shift+comma
bind[stack_reset] = MOD+Shift+space
# bind[swap_main] = MOD+Return
#bind[swap_next]  = MOD+Shift+j
#bind[swap_prev]  = MOD+Shift+k
#bind[uniconify]  = MOD+Shift+w
bind[version]		= MOD+Shift+v
bind[width_grow]	= MOD+equal
bind[width_shrink]	= MOD+minus
bind[wind_del]		= MOD+Shift+c
bind[wind_kill]		= MOD+Shift+x
bind[ws_1]		= MOD+1
bind[ws_2]		= MOD+2
bind[ws_3]		= MOD+3
bind[ws_4]		= MOD+4
bind[ws_5]		= MOD+5
bind[ws_6]		= MOD+6
bind[ws_7]		= MOD+7
bind[ws_8]		= MOD+8
bind[ws_9]		= MOD+9
bind[ws_10]		= MOD+0
bind[ws_11]		= MOD+F1
bind[ws_12]		= MOD+F2
bind[ws_13]		= MOD+F3
bind[ws_14]		= MOD+F4
bind[ws_15]		= MOD+F5
bind[ws_16]		= MOD+F6
bind[ws_17]		= MOD+F7
bind[ws_18]		= MOD+F8
bind[ws_19]		= MOD+F9
bind[ws_20]		= MOD+F10
bind[ws_21]		= MOD+F11
bind[ws_22]		= MOD+F12
bind[ws_next]		= MOD+Right
bind[ws_next_all]	= MOD+Up
bind[ws_next_move]	= MOD+Shift+Up
bind[ws_prev]		= MOD+Left
bind[ws_prev_all]	= MOD+Down
bind[ws_prev_move]	= MOD+Shift+Down
bind[ws_prior]		= MOD+a

# To disable validation of the above, free the respective binding(s):
# bind[]		= MOD+Shift+Delete	# disable lock
# bind[]		= MOD+Shift+Return	# disable term
# bind[]		= MOD+p			# disable menu
bind[]      = MOD+Shift+q # Disable close session
bind[]      = MOD+q # Disable restart spectrwm (Use Win+Shift+r)

# Optional default programs that will only be validated if you override:
# program[screenshot_all]	= screenshot.sh full	# optional
# program[screenshot_wind]	= screenshot.sh window	# optional
# program[initscr]	= initscreen.sh			# optional

## Volume Bindings
program[volup]      = pactl set-sink-volume @DEFAULT_SINK@ +5%
program[voldown]    = pactl set-sink-volume @DEFAULT_SINK@ -5%
program[mute]       = pactl set-sink-mute @DEFAULT_SINK@ toggle
bind[volup]         = XF86_AudioRaiseVolume
bind[voldown]       = XF86_AudioLowerVolume
bind[mute]          = XF86_AudioMute

## Brightmess Bindings
program[brightup]   = light -A 10
#program[brightup]   = xrandr --output HDMI1 --brightness 1.0
program[brightdown] = light -U 10
#program[brightdown] = xrandr --output HDMI1 --brightness 0.75
bind[brightup]      = XF86_MonBrightnessUp
bind[brightdown]    = XF86_MonBrightnessDown

# EXAMPLE: Define 'firefox' action and bind to key.
program[firefox]   = firefox
bind[firefox]      = MOD+b

# Choose between NetworkManager or Connman
program[connection]   = nm-connection-editor
#program[connection]   = connman-gtk --no-icon
bind[connection]      = MOD+c

program[pavucontrol]  = pavucontrol
bind[pavucontrol]     = MOD+v

program[alacritty]  = alacritty
bind[alacritty]	    = MOD+Return

program[terminal]  = xterm
bind[terminal]	   = MOD+u

program[downscreen]  = ~/.config/spectrwm/down-screen.sh
bind[downscreen]     = MOD+Delete

program[pcmanfm]  = pcmanfm
bind[pcmanfm]     = MOD+n

program[rofirun]  = rofi -show run
bind[rofirun]     = MOD+p

program[rofitheme]  = rofi-theme-selector
bind[rofitheme]     = MOD+d

program[rofidrun]  = rofi -modi drun,run -show drun
bind[rofidrun]     = MOD+o

program[rofiwindow]  = rofi -show window
bind[rofiwindow]     = MOD+Shift+w

program[lxappearance]  = lxappearance
bind[lxappearance]     = MOD+i

program[lxrandr]  = lxrandr
bind[lxrandr]     = MOD+x

program[xfce4-screenshooter]  = xfce4-screenshooter
bind[xfce4-screenshooter]     = MOD+s

program[nitrogen]  = nitrogen
bind[nitrogen]     = MOD+z

program[showtray] = ~/.config/spectrwm/showtray.sh
bind[showtray]    = MOD+Shift+t

# QUIRKS
# Default quirks, remove with: quirk[class:name] = NONE
quirk[Nitrogen:nitrogen]  = FLOAT
quirk[Lxrandr:lxrandr]  = FLOAT
quirk[Connman-gtk:connman-gtk]  = FLOAT
quirk[Nm-connection-editor:nm-connection-editor]  = FLOAT
quirk[Pavucontrol:pavucontrol]  = FLOAT
quirk[Lxappearance:lxappearance]  = FLOAT
quirk[vlc:vlc]  = FLOAT
quirk[mpv:gl]  = FLOAT
quirk[Engrampa:engrampa]  = FLOAT
quirk[Xarchiver:xarchiver]  = FLOAT
quirk[Ristretto:ristretto]  = FLOAT
quirk[Gimp:gimp]  = FLOAT + ANYWHERE
quirk[Gimp-2.10:gimp-2.10]  = FLOAT + ANYWHERE
quirk[Mozilla VPN:mozillavpn]  = FLOAT
quirk[VirtualBoxVM:VirtualBoxVM]  = FLOAT + ANYWHERE
quirk[VirtualBox Machine:VirtualBox Machine]  = FLOAT + ANYWHERE
# quirk[MPlayer:xv]			= FLOAT + FULLSCREEN + FOCUSPREV
# quirk[OpenOffice.org 2.4:VCLSalFrame]	= FLOAT
# quirk[OpenOffice.org 3.0:VCLSalFrame]	= FLOAT
# quirk[OpenOffice.org 3.1:VCLSalFrame]	= FLOAT
# quirk[Firefox-bin:firefox-bin]		= TRANSSZ
# quirk[Firefox:Dialog]			= FLOAT
# quirk[Gimp:gimp]			= FLOAT + ANYWHERE
# quirk[XTerm:xterm]			= XTERM_FONTADJ
# quirk[xine:Xine Window]			= FLOAT + ANYWHERE
# quirk[Xitk:Xitk Combo]			= FLOAT + ANYWHERE
# quirk[xine:xine Panel]			= FLOAT + ANYWHERE
# quirk[Xitk:Xine Window]			= FLOAT + ANYWHERE
# quirk[xine:xine Video Fullscreen Window] = FULLSCREEN + FLOAT
# quirk[pcb:pcb]				= FLOAT