chore: migrate to unique git repo
This commit is contained in:
commit
492c91a204
42
cfg.fnl
Normal file
42
cfg.fnl
Normal file
@ -0,0 +1,42 @@
|
||||
(local fun (require :lib.fun))
|
||||
|
||||
(local awful (require :awful))
|
||||
(require :awful.autofocus)
|
||||
(local naughty (require :naughty))
|
||||
(local beautiful (require :beautiful))
|
||||
|
||||
(beautiful.init (require :conf.theme))
|
||||
|
||||
(require :module.decorate)
|
||||
(require :module.sidebar)
|
||||
|
||||
(require :conf.client)
|
||||
(require :conf.tags)
|
||||
(_G.root.keys (require :conf.keys))
|
||||
|
||||
;; TEMP Next release should support this through `beautiful'.
|
||||
(set naughty.config.defaults.border_width beautiful.notification_border_width)
|
||||
(set naughty.config.defaults.icon_size beautiful.notification_icon_size)
|
||||
|
||||
;;;
|
||||
;; Post-config -- wiring it all up
|
||||
|
||||
(->> {:manage (lambda [c] nil
|
||||
(when (and awesome.startup
|
||||
(not c.size_hints.user_position)
|
||||
(not c.size_hints.program_position))
|
||||
;; Prevent clients from being unreachable after screen count changes.
|
||||
(awful.placement.no_offscreen c)))
|
||||
:mouse::enter (lambda [c]
|
||||
(when (and (~= (awful.layout.get c.screen)
|
||||
awful.layout.suit.magnifier)
|
||||
(awful.client.focus.filter c))
|
||||
(set client.focus c)))
|
||||
:focus (lambda [c] (set c.border_color beautiful.border_focus))
|
||||
:unfocus (lambda [c] (set c.border_color beautiful.border_normal))}
|
||||
(fun.each (fn [event callback] (client.connect_signal event callback))))
|
||||
|
||||
(awful.spawn.with_shell "~/.config/awesome/autostart")
|
||||
|
||||
;; Empty return
|
||||
{}
|
9
conf/apps.fnl
Normal file
9
conf/apps.fnl
Normal file
@ -0,0 +1,9 @@
|
||||
;;; conf/apps.fnl --- Common program parameters
|
||||
|
||||
;;; Code:
|
||||
|
||||
{:terminal "xfce4-terminal"
|
||||
:dropdown "xfce4-terminal --drop-down"
|
||||
:editor "emacs"
|
||||
:rofi "rofi -show drun"}
|
||||
;;; conf/apps.fnl ends here
|
1
conf/client.fnl
Normal file
1
conf/client.fnl
Normal file
@ -0,0 +1 @@
|
||||
(require :conf.client.rules)
|
17
conf/client/buttons.fnl
Normal file
17
conf/client/buttons.fnl
Normal file
@ -0,0 +1,17 @@
|
||||
;;; buttons.fnl --- Client buttons
|
||||
|
||||
;;; Code:
|
||||
|
||||
(var buttons {})
|
||||
|
||||
(local awful (require :awful))
|
||||
(local gears (require :gears))
|
||||
|
||||
(local button (. (require :lib.keys) :button))
|
||||
|
||||
(gears.table.join
|
||||
(button [] 1 (lambda [c] (set client.focus c) (: c :raise)))
|
||||
(button [:mod] 1 awful.mouse.client.move)
|
||||
(button [:mod] 3 awful.mouse.client.resize))
|
||||
|
||||
;;; buttons.fnl ends here
|
45
conf/client/keys.fnl
Normal file
45
conf/client/keys.fnl
Normal file
@ -0,0 +1,45 @@
|
||||
;;; conf/client/keys.fnl --- Client keys
|
||||
|
||||
;;; Code:
|
||||
|
||||
(var keys {})
|
||||
|
||||
(local awful (require :awful))
|
||||
(local beautiful (require :beautiful))
|
||||
(local gears (require :gears))
|
||||
|
||||
(local key (. (require :lib.keys) :key))
|
||||
|
||||
;;;
|
||||
;; Functions
|
||||
|
||||
(fn register [field ...]
|
||||
(tset keys field (gears.table.join ...)))
|
||||
|
||||
(fn cinv [k]
|
||||
(fn [c]
|
||||
(let [v (. c k)]
|
||||
(tset c k (not v)))))
|
||||
|
||||
;;;
|
||||
;; Configuration
|
||||
|
||||
(register :client
|
||||
(key [:mod] :q (lambda [c] (: c :kill)))
|
||||
(key [:mod] :w (lambda [c] (set c.minimized true)))
|
||||
|
||||
(key [:mod] :t (lambda [c] (awful.titlebar.toggle c beautiful.titlebar_position)))
|
||||
(key [:mod :shift] :t (lambda [c] (awful.titlebar.toggle c :left)))
|
||||
(key [:mod :ctrl] :t (lambda [c] (awful.titlebar.toggle c)))
|
||||
|
||||
(key [:mod] :a (cinv :floating))
|
||||
(key [:mod] :f (cinv :fullscreen))
|
||||
(key [:mod] :m (cinv :maximized)) ;; FIXME behaves weird
|
||||
(key [:mod] :s (cinv :sticky)))
|
||||
|
||||
(register :floating
|
||||
(. keys :client)
|
||||
(key [:alt :shift] :h (lambda [c] (: c :relative_move {:x -100}))))
|
||||
|
||||
keys
|
||||
;;; conf/client/keys.fnl ends here
|
51
conf/client/rules.fnl
Normal file
51
conf/client/rules.fnl
Normal file
@ -0,0 +1,51 @@
|
||||
;;; conf/client/rules.fnl --- Client placement rules
|
||||
|
||||
;;; Code:
|
||||
|
||||
(local awful (require :awful))
|
||||
(local beautiful (require :beautiful))
|
||||
|
||||
(local keys (require :conf.client.keys))
|
||||
(local buttons (require :conf.client.buttons))
|
||||
|
||||
;;;
|
||||
;; Functions
|
||||
|
||||
(local
|
||||
rules
|
||||
[{:rule {}
|
||||
:properties {:border_width beautiful.border_width
|
||||
:border_color beautiful.border_normal
|
||||
:focus true
|
||||
:keys (. keys :client)
|
||||
:buttons buttons
|
||||
:placement (+ awful.placement.no_overlap
|
||||
awful.placement.no_offscreen)}}
|
||||
|
||||
{:rule {:floating true}
|
||||
:properties {:keys (. keys :floating)}}
|
||||
|
||||
;; Floating clients.
|
||||
{:rule_any {:class ["Gpick"]
|
||||
:name ["Event Tester"] ;; xev
|
||||
:role ["pop-up"
|
||||
"xfce4-terminal-dropdown"]}
|
||||
:properties {:floating true}}
|
||||
|
||||
;; Add titlebars to normal clients and dialogs.
|
||||
{:rule_any {:type ["normal" "dialog"]}
|
||||
:properties {:titlebars_enabled true}}
|
||||
|
||||
;; Awesome reserves space for tint2, but doesn't actually fucking place it.
|
||||
{:rule {:class "Tint2"}
|
||||
:properties {:x 0 :y 0}}
|
||||
|
||||
;; Set Firefox to always map on the tag named "2" on screen 1.
|
||||
;; {:rule {:class "Firefox"}
|
||||
;; :properties {:screen 1 :tag "2"}}
|
||||
])
|
||||
|
||||
(tset awful.rules :rules rules)
|
||||
|
||||
{}
|
||||
;;; conf/client/rules.fnl ends here
|
119
conf/keys.fnl
Normal file
119
conf/keys.fnl
Normal file
@ -0,0 +1,119 @@
|
||||
;;; conf/keys.fnl --- Global keys
|
||||
|
||||
;;; Code:
|
||||
|
||||
(var keys {})
|
||||
|
||||
(local gears (require :gears))
|
||||
(local awful (require :awful))
|
||||
|
||||
(local apps (require :conf.apps))
|
||||
(local key (. (require :lib.keys) :key))
|
||||
|
||||
;;;
|
||||
;; Functions
|
||||
|
||||
(fn register [...]
|
||||
(set keys (gears.table.join keys ...)))
|
||||
|
||||
;; Spawn lamda
|
||||
(fn run [prog]
|
||||
(fn [] (awful.spawn prog)))
|
||||
|
||||
;; Run silent
|
||||
(fn run! [prog]
|
||||
(fn [] (awful.spawn prog false)))
|
||||
|
||||
(fn playerctl [a]
|
||||
(run! (.. "playerctl " a)))
|
||||
|
||||
(fn mpc [a]
|
||||
(run! (.. "mpc " a)))
|
||||
|
||||
(fn amixer [args]
|
||||
(run! (.. "amixer sset Master " args)))
|
||||
|
||||
(fn light [a v]
|
||||
(let [flag (. {:up "-A" :down "-U"} a)]
|
||||
(run! (.. "light " flag " " (tostring v)))))
|
||||
|
||||
(fn with-tag [i fun]
|
||||
(lambda [] (when client.focus
|
||||
(let [tag (. client.focus.screen.tags i)]
|
||||
(when tag
|
||||
(fun tag))))))
|
||||
|
||||
(fn apply-focus [i attr]
|
||||
(with-tag i (lambda [t] (: client.focus attr t))))
|
||||
|
||||
(fn current-tag []
|
||||
(. (awful.screen.focused) :selected_tag))
|
||||
|
||||
(fn focused-tag-by-index [i]
|
||||
(. (awful.screen.focused) :tags i))
|
||||
|
||||
(fn with-focused-tag [i fun]
|
||||
(lambda [] (let [tag (focused-tag-by-index i)]
|
||||
(when tag
|
||||
(fun tag)))))
|
||||
|
||||
(fn focus [c]
|
||||
(when c
|
||||
(set client.focus c)
|
||||
(: c :raise)))
|
||||
|
||||
;;;
|
||||
;; Configuration
|
||||
|
||||
(register
|
||||
(key [:mod :ctrl :shift] :q awesome.quit)
|
||||
(key [:mod :ctrl] :r awesome.restart)
|
||||
(key [:mod :ctrl] :q (run "oblogout"))
|
||||
|
||||
(key [:mod] :equal (lambda []
|
||||
(doto (current-tag)
|
||||
(tset :master_width_factor 0.5)
|
||||
(tset :master_count 1)
|
||||
(tset :column_count 1))))
|
||||
(key [:mod :ctrl] :l (lambda [] (awful.tag.incmwfact 0.05)))
|
||||
(key [:mod :ctrl] :h (lambda [] (awful.tag.incmwfact -0.05)))
|
||||
(key [:mod] :comma (lambda [] (awful.tag.incnmaster 1 nil true)))
|
||||
(key [:mod] :period (lambda [] (awful.tag.incnmaster -1 nil true)))
|
||||
(key [:mod :ctrl] :period (lambda [] (awful.tag.incncol 1 nil true)))
|
||||
(key [:mod :ctrl] :comma (lambda [] (awful.tag.incncol -1 nil true)))
|
||||
|
||||
(key [:mod] :Return (run apps.terminal))
|
||||
(key [:mod] :d (run apps.dropdown))
|
||||
|
||||
(key [:mod] :space (lambda [] (awful.layout.inc 1)))
|
||||
(key [:mod] :r (run apps.rofi))
|
||||
(key [:mod] :p (run "xfce4-display-settings"))
|
||||
|
||||
(key [:mod] :e (run apps.editor))
|
||||
|
||||
(key [:mod] :BackSpace (lambda [] (focus (awful.client.restore))))
|
||||
|
||||
(key [] :XF86AudioPlay (playerctl :play-pause))
|
||||
(key [] :XF86AudioNext (playerctl :next))
|
||||
(key [] :XF86AudioPrev (playerctl :previous))
|
||||
(key [] :XF86AudioRaiseVolume (amixer "5%+"))
|
||||
(key [] :XF86AudioLowerVolume (amixer "5%-"))
|
||||
(key [] :XF86AudioMute (amixer "toggle"))
|
||||
(key [] :XF86MonBrightnessUp (light :up 5))
|
||||
(key [] :XF86MonBrightnessDown (light :down 5)))
|
||||
|
||||
(each [_key dir (pairs {:h :left :j :down :k :up :l :right})]
|
||||
(register
|
||||
(key [:mod] _key (lambda [] (awful.client.focus.bydirection dir)))
|
||||
(key [:mod :shift] _key (lambda [] (awful.client.swap.bydirection dir)))))
|
||||
|
||||
(for [i 1 9]
|
||||
(let [ksym (.. "#" (+ i 9))]
|
||||
(register
|
||||
(key [:mod] ksym (with-focused-tag i (lambda [t] (: t :view_only))))
|
||||
(key [:mod :ctrl] ksym (with-focused-tag i (lambda [t] (awful.tag.viewtoggle t))))
|
||||
(key [:mod :shift] ksym (apply-focus i :move_to_tag))
|
||||
(key [:mod :ctrl :shift] ksym (apply-focus i :toggle_tag)))))
|
||||
|
||||
keys
|
||||
;;; conf/keys.fnl ends here
|
10
conf/rules.fnl
Normal file
10
conf/rules.fnl
Normal file
@ -0,0 +1,10 @@
|
||||
;;; rules.fnl --- Rule definitions
|
||||
|
||||
;;; Code:
|
||||
|
||||
(var rules {})
|
||||
|
||||
|
||||
|
||||
rules
|
||||
;;; rules.fnl ends here
|
21
conf/tags.fnl
Normal file
21
conf/tags.fnl
Normal file
@ -0,0 +1,21 @@
|
||||
;;; conf/tags.fnl --- Tag configuration
|
||||
|
||||
;;; Code:
|
||||
|
||||
(local awful (require :awful))
|
||||
|
||||
;;;
|
||||
;; Configuration
|
||||
|
||||
(local layouts [awful.layout.suit.tile
|
||||
awful.layout.suit.floating])
|
||||
|
||||
(set awful.layout.layouts layouts)
|
||||
|
||||
(awful.screen.connect_for_each_screen
|
||||
(lambda [s]
|
||||
(awful.tag ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
|
||||
s (. layouts 1))))
|
||||
|
||||
{}
|
||||
;;; conf/tags.fnl ends here
|
35
conf/theme.fnl
Normal file
35
conf/theme.fnl
Normal file
@ -0,0 +1,35 @@
|
||||
;; Have to use underscores for `beautiful' compat.
|
||||
;; Non-beautiful variables are commented with an asterisk.
|
||||
{
|
||||
:font "Sarasa Mono J"
|
||||
:variable_font "Sarasa UI J"
|
||||
|
||||
:sidebar_position :left ;; *
|
||||
:sidebar_width 36 ;; *
|
||||
:sidebar_bg "#1a1e24" ;; *
|
||||
:sidebar_subbox "#252b33" ;; *
|
||||
|
||||
:bg_focus "#252b33"
|
||||
:bg_normal "#1a1e24"
|
||||
:fg_focus "#cfcfcf"
|
||||
:fg_normal "#cfcfcf"
|
||||
|
||||
:useless_gap 0
|
||||
:border_width 0
|
||||
:border_focus "#5bb3b4"
|
||||
:border_normal "#1a1e24"
|
||||
:use_titlebars_for_borders nil ;; *
|
||||
:titlebar_border_width 1 ;; *
|
||||
|
||||
:titlebar_position :left ;; *
|
||||
:titlebar_size 15 ;; *
|
||||
:titlebar_bg_focus "#926b3e"
|
||||
:titlebar_bg_normal "#252b33"
|
||||
:titlebar_fg_focus "#1a1e24"
|
||||
:titlebar_fg_normal "#cfcfcf"
|
||||
|
||||
:icon_theme "Vertex Maia"
|
||||
:notification_icon_size 48
|
||||
:notification_border_width 0
|
||||
:notification_bg "#252b33"
|
||||
}
|
8
lib/README.md
Normal file
8
lib/README.md
Normal file
@ -0,0 +1,8 @@
|
||||
## lib
|
||||
|
||||
These would normally be installed by `luarocks`; however, given how central they are to the config, they are vendored in instead.
|
||||
|
||||
### Versions
|
||||
|
||||
- `fennel`: 0.1.1-2
|
||||
- `fun`: 0.1.3-1
|
1964
lib/fennel.lua
Normal file
1964
lib/fennel.lua
Normal file
File diff suppressed because it is too large
Load Diff
1056
lib/fun.lua
Normal file
1056
lib/fun.lua
Normal file
File diff suppressed because it is too large
Load Diff
35
lib/keys.fnl
Normal file
35
lib/keys.fnl
Normal file
@ -0,0 +1,35 @@
|
||||
;;; lib/keys.fnl --- Key configuration utilities
|
||||
|
||||
;;; Commentary:
|
||||
;; Comments
|
||||
|
||||
;;; Code:
|
||||
|
||||
(var keys {})
|
||||
|
||||
(local awful (require :awful))
|
||||
(local fun (require :lib.fun))
|
||||
|
||||
(local modifiers
|
||||
{:mod "Mod4"
|
||||
:alt "Mod1"
|
||||
:super "Mod4"
|
||||
:shift "Shift"
|
||||
:ctrl "Control"})
|
||||
|
||||
;;;
|
||||
;; Functions
|
||||
|
||||
(fn map-mods [mods]
|
||||
(->> mods
|
||||
(fun.map (partial . modifiers))
|
||||
(fun.totable)))
|
||||
|
||||
(fn keys.key [mods kc fun]
|
||||
(awful.key (map-mods mods) kc fun))
|
||||
|
||||
(fn keys.button [mods bc fun]
|
||||
(awful.button (map-mods mods) bc fun))
|
||||
|
||||
keys
|
||||
;;; lib/keys.fnl ends here
|
17
lib/std.fnl
Normal file
17
lib/std.fnl
Normal file
@ -0,0 +1,17 @@
|
||||
;;; std.fnl --- A small standard library
|
||||
|
||||
;;; Commentary:
|
||||
;; Porting a few functions that I'm used to from other Lisps.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(var std {})
|
||||
|
||||
;;;
|
||||
;; Functions
|
||||
|
||||
(fn std.zero? [n]
|
||||
(= 0 n))
|
||||
|
||||
std
|
||||
;;; std.fnl ends here
|
74
module/decorate.fnl
Normal file
74
module/decorate.fnl
Normal file
@ -0,0 +1,74 @@
|
||||
;;; decorate.fnl --- Client decorations
|
||||
|
||||
;;; Commentary:
|
||||
;; Comments
|
||||
|
||||
;;; Code:
|
||||
|
||||
(local awful (require :awful))
|
||||
(local beautiful (require :beautiful))
|
||||
(local gears (require :gears))
|
||||
(local wibox (require :wibox))
|
||||
|
||||
(local std (require :lib.std))
|
||||
|
||||
;; TODO Properly abstract these into a library
|
||||
|
||||
(local fun (require :lib.fun))
|
||||
(local modifiers
|
||||
{:mod "Mod4"
|
||||
:alt "Mod1"
|
||||
:super "Mod4"
|
||||
:shift "Shift"
|
||||
:ctrl "Control"})
|
||||
|
||||
(fn map-mods [mods]
|
||||
(->> mods
|
||||
(fun.map (partial . modifiers))
|
||||
(fun.totable)))
|
||||
|
||||
(fn button [mods bc fun]
|
||||
(awful.button (map-mods mods) bc fun))
|
||||
|
||||
;;;
|
||||
;; Functions
|
||||
|
||||
(fn mouse-button [c bc cmd]
|
||||
(button [] bc (lambda []
|
||||
(: c :emit_signal
|
||||
:request::activate :titlebar {:raise true})
|
||||
((. awful.mouse.client cmd) c))))
|
||||
|
||||
(fn make-titlebar [c side -size]
|
||||
(let [size (or -size beautiful.titlebar_size 10)]
|
||||
(awful.titlebar c {:size size :position side})))
|
||||
|
||||
(fn setup-empty-titlebar [bar buttons]
|
||||
;; Placeholder layouts
|
||||
(: bar :setup
|
||||
{1 {:layout wibox.layout.fixed.vertical}
|
||||
2 {:buttons buttons
|
||||
:layout wibox.layout.flex.vertical}
|
||||
3 {:layout (wibox.layout.fixed.vertical)}
|
||||
:layout wibox.layout.align.vertical}))
|
||||
|
||||
(fn titlebar-hook [c]
|
||||
(let [buttons (gears.table.join
|
||||
(mouse-button c 1 :move)
|
||||
(mouse-button c 3 :resize))
|
||||
mainbar (make-titlebar c beautiful.titlebar_position)]
|
||||
(setup-empty-titlebar mainbar buttons)
|
||||
|
||||
(when (and (not (std.zero? beautiful.titlebar_border_width))
|
||||
beautiful.use_titlebars_for_borders)
|
||||
(let [size beautiful.titlebar_border_width]
|
||||
(each [_ side (ipairs [:top :right :bottom])]
|
||||
(setup-empty-titlebar (make-titlebar c side size) buttons))))))
|
||||
|
||||
;;;
|
||||
;; Processing
|
||||
|
||||
(_G.client.connect_signal :request::titlebars titlebar-hook)
|
||||
|
||||
{}
|
||||
;;; decorate.fnl ends here
|
74
module/sidebar.fnl
Normal file
74
module/sidebar.fnl
Normal file
@ -0,0 +1,74 @@
|
||||
;;; module/sidebar.fnl --- Informational sidebar
|
||||
|
||||
;;; Code:
|
||||
|
||||
(local awful (require :awful))
|
||||
(local beautiful (require :beautiful))
|
||||
(local wibox (require :wibox))
|
||||
|
||||
(local sb-clock (wibox.widget.textclock "%H\n%M"))
|
||||
(local sb-systray (doto (wibox.widget.systray)
|
||||
(: :set_base_size 24)))
|
||||
(local fill-width (doto (wibox.layout.fixed.horizontal)
|
||||
(: :fill_space true)
|
||||
(: :set_spacing 10)))
|
||||
|
||||
(local bounding (wibox.container.margin
|
||||
(wibox.container.place
|
||||
(wibox.container.margin
|
||||
nil
|
||||
10 10 10 10 beautiful.sidebar_subbox))
|
||||
1 1 1 1 beautiful.sidebar_bg))
|
||||
|
||||
;;;
|
||||
;; Functions
|
||||
|
||||
(fn draw-sidebar [s]
|
||||
(set s.sb-tag (awful.widget.taglist
|
||||
{:screen s
|
||||
:filter awful.widget.taglist.filter.selected
|
||||
:style {:font (.. beautiful.font " Bold 10")}
|
||||
;; :widget_template
|
||||
;; {1
|
||||
;; {:id "index_role"
|
||||
;; :widget wibox.widget.textbox}
|
||||
;; :widget wibox.container.margin
|
||||
;; :margins 5
|
||||
;; :create_callback
|
||||
;; (lambda [self, c3, index, objects])}
|
||||
:layout wibox.layout.fixed.vertical
|
||||
}
|
||||
))
|
||||
(set s.sb-tasks (awful.widget.tasklist
|
||||
{:screen s
|
||||
:filter awful.widget.tasklist.filter.currenttags
|
||||
:style {:disable_task_name true}
|
||||
}))
|
||||
|
||||
(set s.sb (awful.wibar {:position beautiful.sidebar_position
|
||||
:width beautiful.sidebar_width
|
||||
:screen s}))
|
||||
|
||||
(: s.sb :setup
|
||||
{:layout wibox.layout.align.vertical
|
||||
1 {:layout wibox.layout.fixed.vertical
|
||||
1 {1 s.sb-tag
|
||||
:halign "center"
|
||||
:layout (wibox.container.margin nil 10 10 10 10)}
|
||||
2 s.sb-tasks}
|
||||
2 {:layout wibox.layout.fixed.vertical}
|
||||
3 {:layout wibox.layout.fixed.vertical
|
||||
1 sb-systray
|
||||
2 {1 sb-clock
|
||||
:valign "center"
|
||||
:halign "center"
|
||||
:layout bounding}}}))
|
||||
|
||||
;;;
|
||||
;; Configuration
|
||||
|
||||
;; (awful.screen.connect_for_each_screen
|
||||
;; draw-sidebar)
|
||||
|
||||
{}
|
||||
;;; module/sidebar.fnl ends here
|
Loading…
Reference in New Issue
Block a user