dotfiles/awesome/rules.fnl
2021-12-06 06:07:34 -06:00

230 lines
8.4 KiB
Fennel

(local awful (require "awful"))
(local gears (require "gears"))
(local beautiful (require "beautiful"))
(local keybindings (require "keybindings"))
(local xresources (require "beautiful.xresources"))
(local dpi xresources.apply_dpi)
(local rules [
;; All clients match this rule
{
:rule { }
:propertites {
:border_width beautiful.border_width
:border_color beautiful.border_normal
:focus awful.client.focus.filter
:raise true
;; :keys keys
;; :buttons clientbuttons
:screen awful.screen.preferred
:size_hints_honor false
;; :placement awful.placement.no_overlap
:shape_clip gears.shape.rounded_rect
:shape_bounding gears.shape.rounded_rect
}
}
;; floating and centered videos from mpv or firefox pnp
{
:rule_any {
:class [
"mpv"
]
:name [
"Picture-in-Picture"
]
}
:properties {
:floating true
:raise true
:height (dpi 800)
:screen (screen.count)
:sticky true
:placement (+ awful.placement.no_offscreen awful.placement.centered)
}
}
;; Davinci Resolve is fullscreen
{
:rule_any {
:instance [
"resolve"
]
:class [
"resolve"
]
}
:properties {
:floating true
:fullscreen true
}
}
{
:rule_any {
:name [
"Secondary Screen"
]
}
:properties {
:screen 2
:floating true
:fullscreen true
:size_hints_honor false
}
}
;; sxiv floating on main screen for quick picture viewing
{
:rule_any {
:class [
"sxiv"
"Sxiv"
"imv"
"Imv"
]
}
:properties {
:floating true
:raise true
:height (dpi 800)
:width (dpi 1200)
:placement awful.placement.centered
}
}
;; Emacs
{
:rule_any {
:instance [
"emacs"
"scribus"
]
:class [
"scribus"
]
}
:properties {
:size_hints_honor false
}
}
;; Org-Agenda
{
:rule_any {
:name [
"org-agenda"
]
:class [
"org-agenda"
]
:instance [
"org-agenda"
]
}
:properties {
:floating true
:raise true
:sticky true
:placement (+ awful.placement.no_offscreen awful.placement.centered)
}
}
;; Org Capture
{
:rule_any {
:name [
"org-capture"
]
}
:properties {
:floating true
:raise true
:screen 1
:placement (+ awful.placement.no_offscreen awful.placement.centered)
}
}
;; Pulsemixer center and smaller
{
:rule_any {
:instance [
"pulsemixer"
]
}
:properties {
:floating true
:raise true
:ontop true
:screen awful.screen.preferred
;; :width (dpi 600)
;; :height (dpi 200)
:placement awful.placement.centered
}
}
;; Tell qb to open primarily on the secondary monitor
{
:rule_any {
:class [
"qutebrowser"
"nyxt"
]
:instance [
"nyxt"
]
}
:properties {
:screen (screen.count)
:focus awful.client.focus.filter
:raise true
}
}
;; floating windows
{
:rule_any {
:class [
"dolphin"
"feh"
"Arandr"
"gcr-prompter"
"ffplay"
]
:name [
"Event Tester"
"remove images?"
"Blender Preferences"
"Unlock Login Keyring"
]
:role [
"pop-up"
"GtkFileChooserDialog"
]}
:properties {
:floating true
:raise true
:placement awful.placement.centered
}
}
{
:rule_any {
:class [
"fp64"
"vlc"
"Vlc"
]
:instance [
"fp64"
"vlc"
"Vlc"
]
:name [
"Display Window"
"OpenLP"
]
}
:properties {
:fullscreen true
:raise true
:ontop true
:screen (screen.count)
:placement (+ awful.placement.no_offscreen awful.placement.centered)
}
}
])
rules