mirror of
https://github.com/starr-dusT/dotfiles.git
synced 2025-02-19 19:27:31 -08:00
mostly changes to xmonad
This commit is contained in:
parent
4847647bd8
commit
d38f7b377e
3
.bashrc
3
.bashrc
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# ~/.bashrc
|
# ~/.bashrc
|
||||||
#
|
|
||||||
|
|
||||||
|
export PATH=$PATH:~/.cabal/bin
|
||||||
#export PATH=$PATH:~/.local/bin
|
#export PATH=$PATH:~/.local/bin
|
||||||
alias lol="sudo sh -c 'sysctl -w abi.vsyscall32=0'"
|
alias lol="sudo sh -c 'sysctl -w abi.vsyscall32=0'"
|
||||||
alias dired="emacsclient -c -nw -a '' --eval '(dired nil)'"
|
alias dired="emacsclient -c -nw -a '' --eval '(dired nil)'"
|
||||||
@ -24,3 +24,4 @@ dot config --local status.showUntrackedFiles no
|
|||||||
#export PATH="$PATH:$(ruby -e 'print Gem.user_dir')/bin"
|
#export PATH="$PATH:$(ruby -e 'print Gem.user_dir')/bin"
|
||||||
#export GEM_HOME=$(ruby -e 'print Gem.user_dir')
|
#export GEM_HOME=$(ruby -e 'print Gem.user_dir')
|
||||||
|
|
||||||
|
[ -f "/home/tstarr/.ghcup/env" ] && source "/home/tstarr/.ghcup/env" # ghcup-env
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from os.path import expanduser
|
from os.path import expanduser
|
||||||
from json import load
|
from yaml import load
|
||||||
|
|
||||||
# Get color config from pywal
|
# Get color config from pywal
|
||||||
wal_loc = expanduser('~/.cache/wal/colors.json')
|
wal_loc = expanduser("~/.config/qtile/themes/dracula.yml")
|
||||||
wal = load(open(wal_loc))
|
wal = load(open(wal_loc))
|
||||||
|
19
.config/qtile/themes/dracula.yml
Normal file
19
.config/qtile/themes/dracula.yml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
wallpaper: ""
|
||||||
|
|
||||||
|
special:
|
||||||
|
background: "#282A36"
|
||||||
|
foreground: "#F8F8F2"
|
||||||
|
cursor: "#44475A"
|
||||||
|
|
||||||
|
colors:
|
||||||
|
color0: "#282A36"
|
||||||
|
color1: "#44475A"
|
||||||
|
color2: "#F8F8F2"
|
||||||
|
color3: "#6272A4"
|
||||||
|
color4: "#8BE9FD"
|
||||||
|
color5: "#50FA7B"
|
||||||
|
color6: "#FFB86C"
|
||||||
|
color7: "#FF79C6"
|
||||||
|
color8: "#BD93F9"
|
||||||
|
color9: "#FF5555"
|
||||||
|
color10: "#F1FA8C"
|
4
.config/xmobar/xmobarrc1 → .config/xmobar/\
Executable file → Normal file
4
.config/xmobar/xmobarrc1 → .config/xmobar/\
Executable file → Normal file
@ -9,11 +9,11 @@ Config { font = "xft:Mononoki Nerd Font:pixelsize=12:antialias=true:hinting=true
|
|||||||
, Run Network "enp4s0" [ "-t", "<fc=#fb4934><tx></fc>kb/<fc=#fb4934><rx></fc>kb" ] 10
|
, Run Network "enp4s0" [ "-t", "<fc=#fb4934><tx></fc>kb/<fc=#fb4934><rx></fc>kb" ] 10
|
||||||
, Run Com "/home/tstarr/.config/xmobar/volume" [] "volume" 10
|
, Run Com "/home/tstarr/.config/xmobar/volume" [] "volume" 10
|
||||||
, Run Com "/home/tstarr/.config/xmobar/gamemode" [] "gamemode" 10
|
, Run Com "/home/tstarr/.config/xmobar/gamemode" [] "gamemode" 10
|
||||||
|
, Run Com "/home/tstarr/.config/xmobar/mouse_battery" [] "mouse_battery" 1
|
||||||
, Run Date " %a %d/%m/%y %H:%M:%S" "date" 10
|
, Run Date " %a %d/%m/%y %H:%M:%S" "date" 10
|
||||||
, Run MPD ["-M","15","-t", "<artist> (<fc=#fb4934><lapsed></fc>/<length>)"] 10
|
|
||||||
, Run StdinReader
|
, Run StdinReader
|
||||||
]
|
]
|
||||||
, sepChar = "%"
|
, sepChar = "%"
|
||||||
, alignSep = "}{"
|
, alignSep = "}{"
|
||||||
, template = " <fc=#fb4934>%StdinReader%</fc>}%date%{%enp4s0% | %mpd% | %volume% | 閭%cpu% | %memory% |%gamemode% "
|
, template = " <fc=#fb4934>%StdinReader%</fc>}%date%{%enp4s0% | %mouse_battery% | %volume% | 閭%cpu% | %memory% |%gamemode% "
|
||||||
}
|
}
|
10
.config/xmobar/mouse_battery
Executable file
10
.config/xmobar/mouse_battery
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
status=$(cat /sys/class/power_supply/hidpp_battery_*/uevent | grep POWER_SUPPLY_VOLTAGE)
|
||||||
|
voltage=$(echo $status | cut -c26-29)
|
||||||
|
if [ "$voltage" -ge 3200 ]; then
|
||||||
|
color="#b8bb26"
|
||||||
|
else
|
||||||
|
color="#fb4934"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "<fc=$color>${voltage}mV</fc>"
|
@ -4,17 +4,16 @@ Config { font = "xft:Mononoki Nerd Font:pixelsize=12:antialias=true:hinting=true
|
|||||||
, position = Static {xpos = 0, ypos = 0, width = 2560, height = 20}
|
, position = Static {xpos = 0, ypos = 0, width = 2560, height = 20}
|
||||||
, iconRoot = "X"
|
, iconRoot = "X"
|
||||||
, allDesktops = False
|
, allDesktops = False
|
||||||
, overrideRedirect = False
|
|
||||||
, commands = [ Run Cpu ["-t", " <fc=#fb4934><total></fc>%","-H", "2"] 10
|
, commands = [ Run Cpu ["-t", " <fc=#fb4934><total></fc>%","-H", "2"] 10
|
||||||
, Run Memory ["-t", "<fc=#fb4934><usedratio></fc>%"] 10
|
, Run Memory ["-t", "<fc=#fb4934><usedratio></fc>%"] 10
|
||||||
, Run Network "enp4s0" [ "-t", "<fc=#fb4934><tx></fc>kb/<fc=#fb4934><rx></fc>kb" ] 10
|
, Run Network "enp4s0" [ "-t", "<fc=#fb4934><tx></fc>kb/<fc=#fb4934><rx></fc>kb" ] 10
|
||||||
, Run Com "/home/tstarr/.config/xmobar/volume" [] "volume" 10
|
, Run Com "/home/tstarr/.config/xmobar/volume" [] "volume" 10
|
||||||
, Run Com "/home/tstarr/.config/xmobar/gamemode" [] "gamemode" 10
|
, Run Com "/home/tstarr/.config/xmobar/gamemode" [] "gamemode" 10
|
||||||
|
, Run Com "/home/tstarr/.config/xmobar/mouse_battery" [] "mouse_battery" 30
|
||||||
, Run Date " %a %d/%m/%y %H:%M:%S" "date" 10
|
, Run Date " %a %d/%m/%y %H:%M:%S" "date" 10
|
||||||
, Run MPD ["-M","15","-t", "<artist> (<fc=#fb4934><lapsed></fc>/<length>)"] 10
|
|
||||||
, Run StdinReader
|
, Run StdinReader
|
||||||
]
|
]
|
||||||
, sepChar = "%"
|
, sepChar = "%"
|
||||||
, alignSep = "}{"
|
, alignSep = "}{"
|
||||||
, template = " <fc=#fb4934>%StdinReader%</fc>}%date%{%enp4s0% | %mpd% | %volume% | 閭%cpu% | %memory% |%gamemode% "
|
, template = " <fc=#fb4934>%StdinReader%</fc>}%date%{%enp4s0% | %mouse_battery% | %volume% | 閭%cpu% | %memory% |%gamemode% "
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,15 @@
|
|||||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
(setq display-line-numbers-type 'relative)
|
(setq display-line-numbers-type 'relative)
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
; Add to the "open" menu in Doom
|
||||||
|
(:prefix-map ("o" . "open")
|
||||||
|
(:prefix-map ("o" . "org-ql")
|
||||||
|
:desc "views" "v" #'org-ql-view
|
||||||
|
:desc "Weekly Agenda" "w" (cmd! (org-ql-view "Weekly Agenda"))
|
||||||
|
:desc "Tasks to Refile" "r" (cmd! (org-ql-view "Tasks to Refile"))
|
||||||
|
:desc "This Weeks Progress" "p" (cmd! (org-ql-view "This Weeks Progress")))))
|
||||||
|
|
||||||
(setq org-directory "~/documents/org/")
|
(setq org-directory "~/documents/org/")
|
||||||
(setq org-capture (directory-files-recursively
|
(setq org-capture (directory-files-recursively
|
||||||
(concat org-directory "gtd/capture/") "\.org$"))
|
(concat org-directory "gtd/capture/") "\.org$"))
|
||||||
@ -112,71 +121,45 @@
|
|||||||
("DONE" :foreground "forest green" :weight bold))))
|
("DONE" :foreground "forest green" :weight bold))))
|
||||||
|
|
||||||
(setq org-use-tag-inheritance t)
|
(setq org-use-tag-inheritance t)
|
||||||
|
(setq org-tags-exclude-from-inheritance '("prj" "prg" "subprj"))
|
||||||
(setq org-tag-alist
|
(setq org-tag-alist
|
||||||
'((:startgroup)
|
'((:startgroup)
|
||||||
; Put mutually exclusive tags here
|
; Put mutually exclusive tags here
|
||||||
(:endgroup)
|
(:endgroup)
|
||||||
("@home" . ?H)
|
("@home" . ?h)
|
||||||
("@work" . ?W)
|
("@work" . ?w)
|
||||||
("note" . ?n)
|
|
||||||
("question" . ?q)
|
("question" . ?q)
|
||||||
|
("prj" . ?p)
|
||||||
|
("subprj" . ?s)
|
||||||
|
("prg" . ?P)
|
||||||
("habit" . ?h)
|
("habit" . ?h)
|
||||||
("recurring" . ?r)))
|
("me" . ?m)
|
||||||
|
("Aaron" . ?a)
|
||||||
|
("Landon" . ?l)
|
||||||
|
("Valerie" . ?v)
|
||||||
|
("David" . ?d)))
|
||||||
|
|
||||||
(setq org-capture-todo (concat org-directory "gtd/capture/inbox.org"))
|
(setq org-capture-todo (concat org-directory "gtd/capture/inbox.org"))
|
||||||
|
|
||||||
(setq org-capture-templates
|
(setq org-capture-templates
|
||||||
(doct '(("personal" :keys "p"
|
(doct '(("todo" :keys "t"
|
||||||
:children (("todo" :keys "t"
|
|
||||||
:file org-capture-todo
|
:file org-capture-todo
|
||||||
:template ("* TODO %? :@home:" "%a" "%U"))
|
:template ("* TODO %?" "%U"))
|
||||||
("question" :keys "q"
|
("question" :keys "q"
|
||||||
:file org-capture-todo
|
:file org-capture-todo
|
||||||
:template ("* TODO Find out %? :question:@home:"
|
:template ("* TODO Find out %? :question:@home:"
|
||||||
"%a"
|
|
||||||
"%U"))
|
"%U"))
|
||||||
("habit" :keys "h"
|
("habit" :keys "h"
|
||||||
:file org-capture-todo
|
:file org-capture-todo
|
||||||
:template ("* NEXT %? :habit:@home:" "%U"
|
:template ("* NEXT %? :habit" "%U"
|
||||||
"SCHEDULED: %(format-time-string
|
"SCHEDULED: %(format-time-string
|
||||||
\"%<<%Y-%m-%d %a .+1d/3d>>\")"
|
\"%<<%Y-%m-%d %a .+1d/3d>>\")"
|
||||||
":PROPERTIES:" ":STYLE: habit"
|
":PROPERTIES:" ":STYLE: habit"
|
||||||
":REPEAT_TO_STATE: NEXT" ":END:"))
|
":REPEAT_TO_STATE: NEXT" ":END:"))
|
||||||
("meeting" :keys "m"
|
("meeting" :keys "m"
|
||||||
:children (("reoccuring" :keys "r"
|
|
||||||
:file org-capture-todo
|
:file org-capture-todo
|
||||||
:template ("* NEXT %? :meeting:@home:"
|
:template ("* NEXT %? :meeting:"
|
||||||
"%U" "SCHEDULED:
|
"%U")))))
|
||||||
%(format-time-string
|
|
||||||
\"%<<%Y-%m-%d %a +7d>>\")"
|
|
||||||
":PROPERTIES:"
|
|
||||||
":REPEAT_TO_STATE: NEXT"
|
|
||||||
":END:"))))))
|
|
||||||
("work" :keys "w"
|
|
||||||
:children (("todo" :keys "t"
|
|
||||||
:file org-capture-todo
|
|
||||||
:template ("* TODO %? :@work:" "%U"))
|
|
||||||
("question" :keys "q"
|
|
||||||
:file org-capture-todo
|
|
||||||
:template ("* TODO Find out %? :question:@work:"
|
|
||||||
"%U"))
|
|
||||||
("habit" :keys "h"
|
|
||||||
:file org-capture-todo
|
|
||||||
:template ("* NEXT %? :habit:@work:" "%U"
|
|
||||||
"SCHEDULED: %(format-time-string
|
|
||||||
\"%<<%Y-%m-%d %a .+1d/3d>>\")"
|
|
||||||
":PROPERTIES:" ":STYLE: habit"
|
|
||||||
":REPEAT_TO_STATE: NEXT" ":END:"))
|
|
||||||
("meeting" :keys "m"
|
|
||||||
:children (("reoccuring" :keys "r"
|
|
||||||
:file org-capture-todo
|
|
||||||
:template ("* NEXT %? :meeting:@work:"
|
|
||||||
"%U" "SCHEDULED:
|
|
||||||
%(format-time-string
|
|
||||||
\"%<<%Y-%m-%d %a +7d>>\")"
|
|
||||||
":PROPERTIES:"
|
|
||||||
":REPEAT_TO_STATE: NEXT"
|
|
||||||
":END:")))))))))
|
|
||||||
|
|
||||||
(setq org-refile-targets (quote ((nil :maxlevel . 3)
|
(setq org-refile-targets (quote ((nil :maxlevel . 3)
|
||||||
(org-agenda-files :maxlevel . 3))))
|
(org-agenda-files :maxlevel . 3))))
|
||||||
@ -235,14 +218,33 @@
|
|||||||
:scheduled future
|
:scheduled future
|
||||||
:deadline future)))))))
|
:deadline future)))))))
|
||||||
|
|
||||||
|
(defun open-org-ql-project (program)
|
||||||
|
(org-ql-search (list program)
|
||||||
|
'(and (todo)
|
||||||
|
(ancestors (todo))))
|
||||||
|
:super-groups '((:auto-outline-path t)))
|
||||||
|
|
||||||
|
(setq org-ql-project-view
|
||||||
|
(cons "Project View"
|
||||||
|
(lambda ()
|
||||||
|
"launch a project view for a given program."
|
||||||
|
(interactive)
|
||||||
|
(ivy-read "Project: "
|
||||||
|
(org-agenda-files)
|
||||||
|
:require-match t
|
||||||
|
:action #'open-org-ql-project))))
|
||||||
|
|
||||||
(setq org-super-agenda-header-map (make-sparse-keymap))
|
(setq org-super-agenda-header-map (make-sparse-keymap))
|
||||||
(setq org-ql-views
|
(setq org-ql-views
|
||||||
(list org-ql-weekly-agenda
|
(list org-ql-weekly-agenda
|
||||||
org-ql-refile-tasks
|
org-ql-refile-tasks
|
||||||
org-ql-weeks-progress))
|
org-ql-weeks-progress
|
||||||
|
org-ql-project-view))
|
||||||
(after! org-agenda
|
(after! org-agenda
|
||||||
(org-super-agenda-mode))
|
(org-super-agenda-mode))
|
||||||
|
|
||||||
(setq org-startup-folded t)
|
(setq org-startup-folded t)
|
||||||
(setq org-src-preserve-indentation t)) ; Close the after! org expression from
|
(setq org-src-preserve-indentation t)) ; Close the after! org expression from
|
||||||
; Org File Paths
|
; Org File Paths
|
||||||
|
|
||||||
|
(add-hook 'haskell-mode-hook #'hindent-mode)
|
||||||
|
1
.doom.d/custom.el
Normal file
1
.doom.d/custom.el
Normal file
@ -0,0 +1 @@
|
|||||||
|
(put 'upcase-region 'disabled nil)
|
@ -363,6 +363,9 @@ We start by simply defining the standard headers used by the three files. These
|
|||||||
(:host github
|
(:host github
|
||||||
:repo "starr-dusT/burly.el"
|
:repo "starr-dusT/burly.el"
|
||||||
:branch "master"))
|
:branch "master"))
|
||||||
|
|
||||||
|
(package! hindent)
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
* General Configuration
|
* General Configuration
|
||||||
** This System
|
** This System
|
||||||
@ -400,6 +403,23 @@ We start by simply defining the standard headers used by the three files. These
|
|||||||
(setq display-line-numbers-type 'relative)
|
(setq display-line-numbers-type 'relative)
|
||||||
#+end_src
|
#+end_src
|
||||||
** Keybindings
|
** Keybindings
|
||||||
|
|
||||||
|
Add all my additional keybinds to Doom's standard SPC lead keymapping system.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
||||||
|
(map! :leader
|
||||||
|
; Add to the "open" menu in Doom
|
||||||
|
(:prefix-map ("o" . "open")
|
||||||
|
(:prefix-map ("o" . "org-ql")
|
||||||
|
:desc "views" "v" #'org-ql-view
|
||||||
|
:desc "Weekly Agenda" "w" (cmd! (org-ql-view "Weekly Agenda"))
|
||||||
|
:desc "Tasks to Refile" "r" (cmd! (org-ql-view "Tasks to Refile"))
|
||||||
|
:desc "This Weeks Progress" "p" (cmd! (org-ql-view "This Weeks Progress")))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
| lambda | (&rest _) | (interactive) | (org-ql-view This Weeks Progress) |
|
||||||
|
|
||||||
* Org mode
|
* Org mode
|
||||||
** Org directories
|
** Org directories
|
||||||
|
|
||||||
@ -449,16 +469,23 @@ Define the A tier tags.
|
|||||||
|
|
||||||
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
||||||
(setq org-use-tag-inheritance t)
|
(setq org-use-tag-inheritance t)
|
||||||
|
(setq org-tags-exclude-from-inheritance '("prj" "prg" "subprj"))
|
||||||
(setq org-tag-alist
|
(setq org-tag-alist
|
||||||
'((:startgroup)
|
'((:startgroup)
|
||||||
; Put mutually exclusive tags here
|
; Put mutually exclusive tags here
|
||||||
(:endgroup)
|
(:endgroup)
|
||||||
("@home" . ?H)
|
("@home" . ?h)
|
||||||
("@work" . ?W)
|
("@work" . ?w)
|
||||||
("note" . ?n)
|
|
||||||
("question" . ?q)
|
("question" . ?q)
|
||||||
|
("prj" . ?p)
|
||||||
|
("subprj" . ?s)
|
||||||
|
("prg" . ?P)
|
||||||
("habit" . ?h)
|
("habit" . ?h)
|
||||||
("recurring" . ?r)))
|
("me" . ?m)
|
||||||
|
("Aaron" . ?a)
|
||||||
|
("Landon" . ?l)
|
||||||
|
("Valerie" . ?v)
|
||||||
|
("David" . ?d)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Capture
|
*** Capture
|
||||||
@ -478,57 +505,24 @@ Allowable tags: @work, @home, note, question, habit
|
|||||||
|
|
||||||
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
||||||
(setq org-capture-templates
|
(setq org-capture-templates
|
||||||
(doct '(("personal" :keys "p"
|
(doct '(("todo" :keys "t"
|
||||||
:children (("todo" :keys "t"
|
|
||||||
:file org-capture-todo
|
:file org-capture-todo
|
||||||
:template ("* TODO %? :@home:" "%a" "%U"))
|
:template ("* TODO %?" "%U"))
|
||||||
("question" :keys "q"
|
("question" :keys "q"
|
||||||
:file org-capture-todo
|
:file org-capture-todo
|
||||||
:template ("* TODO Find out %? :question:@home:"
|
:template ("* TODO Find out %? :question:@home:"
|
||||||
"%a"
|
|
||||||
"%U"))
|
"%U"))
|
||||||
("habit" :keys "h"
|
("habit" :keys "h"
|
||||||
:file org-capture-todo
|
:file org-capture-todo
|
||||||
:template ("* NEXT %? :habit:@home:" "%U"
|
:template ("* NEXT %? :habit" "%U"
|
||||||
"SCHEDULED: %(format-time-string
|
"SCHEDULED: %(format-time-string
|
||||||
\"%<<%Y-%m-%d %a .+1d/3d>>\")"
|
\"%<<%Y-%m-%d %a .+1d/3d>>\")"
|
||||||
":PROPERTIES:" ":STYLE: habit"
|
":PROPERTIES:" ":STYLE: habit"
|
||||||
":REPEAT_TO_STATE: NEXT" ":END:"))
|
":REPEAT_TO_STATE: NEXT" ":END:"))
|
||||||
("meeting" :keys "m"
|
("meeting" :keys "m"
|
||||||
:children (("reoccuring" :keys "r"
|
|
||||||
:file org-capture-todo
|
:file org-capture-todo
|
||||||
:template ("* NEXT %? :meeting:@home:"
|
:template ("* NEXT %? :meeting:"
|
||||||
"%U" "SCHEDULED:
|
"%U")))))
|
||||||
%(format-time-string
|
|
||||||
\"%<<%Y-%m-%d %a +7d>>\")"
|
|
||||||
":PROPERTIES:"
|
|
||||||
":REPEAT_TO_STATE: NEXT"
|
|
||||||
":END:"))))))
|
|
||||||
("work" :keys "w"
|
|
||||||
:children (("todo" :keys "t"
|
|
||||||
:file org-capture-todo
|
|
||||||
:template ("* TODO %? :@work:" "%U"))
|
|
||||||
("question" :keys "q"
|
|
||||||
:file org-capture-todo
|
|
||||||
:template ("* TODO Find out %? :question:@work:"
|
|
||||||
"%U"))
|
|
||||||
("habit" :keys "h"
|
|
||||||
:file org-capture-todo
|
|
||||||
:template ("* NEXT %? :habit:@work:" "%U"
|
|
||||||
"SCHEDULED: %(format-time-string
|
|
||||||
\"%<<%Y-%m-%d %a .+1d/3d>>\")"
|
|
||||||
":PROPERTIES:" ":STYLE: habit"
|
|
||||||
":REPEAT_TO_STATE: NEXT" ":END:"))
|
|
||||||
("meeting" :keys "m"
|
|
||||||
:children (("reoccuring" :keys "r"
|
|
||||||
:file org-capture-todo
|
|
||||||
:template ("* NEXT %? :meeting:@work:"
|
|
||||||
"%U" "SCHEDULED:
|
|
||||||
%(format-time-string
|
|
||||||
\"%<<%Y-%m-%d %a +7d>>\")"
|
|
||||||
":PROPERTIES:"
|
|
||||||
":REPEAT_TO_STATE: NEXT"
|
|
||||||
":END:")))))))))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
*** Refile
|
*** Refile
|
||||||
|
|
||||||
@ -609,13 +603,32 @@ Following config items will utilizes the awesome [[https://github.com/alphapapa/
|
|||||||
:scheduled future
|
:scheduled future
|
||||||
:deadline future)))))))
|
:deadline future)))))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
***** Project View
|
||||||
|
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
||||||
|
(defun open-org-ql-project (program)
|
||||||
|
(org-ql-search (list program)
|
||||||
|
'(and (todo)
|
||||||
|
(not (children)))
|
||||||
|
:super-groups '((:auto-outline-path t))))
|
||||||
|
|
||||||
|
(setq org-ql-project-view
|
||||||
|
(cons "Project View"
|
||||||
|
(lambda ()
|
||||||
|
"launch a project view for a given program."
|
||||||
|
(interactive)
|
||||||
|
(ivy-read "Project: "
|
||||||
|
(org-agenda-files)
|
||||||
|
:require-match t
|
||||||
|
:action #'open-org-ql-project))))
|
||||||
|
#+end_src
|
||||||
***** Final
|
***** Final
|
||||||
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
||||||
(setq org-super-agenda-header-map (make-sparse-keymap))
|
(setq org-super-agenda-header-map (make-sparse-keymap))
|
||||||
(setq org-ql-views
|
(setq org-ql-views
|
||||||
(list org-ql-weekly-agenda
|
(list org-ql-weekly-agenda
|
||||||
org-ql-refile-tasks
|
org-ql-refile-tasks
|
||||||
org-ql-weeks-progress))
|
org-ql-weeks-progress
|
||||||
|
org-ql-project-view))
|
||||||
(after! org-agenda
|
(after! org-agenda
|
||||||
(org-super-agenda-mode))
|
(org-super-agenda-mode))
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -625,3 +638,11 @@ Following config items will utilizes the awesome [[https://github.com/alphapapa/
|
|||||||
(setq org-src-preserve-indentation t)) ; Close the after! org expression from
|
(setq org-src-preserve-indentation t)) ; Close the after! org expression from
|
||||||
; Org File Paths
|
; Org File Paths
|
||||||
#+end_src
|
#+end_src
|
||||||
|
* Devel
|
||||||
|
** Haskell
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :tangle (if (member this-system system-category-1) "config.el" "no")
|
||||||
|
|
||||||
|
(add-hook 'haskell-mode-hook #'hindent-mode)
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
@ -68,3 +68,5 @@
|
|||||||
(:host github
|
(:host github
|
||||||
:repo "starr-dusT/burly.el"
|
:repo "starr-dusT/burly.el"
|
||||||
:branch "master"))
|
:branch "master"))
|
||||||
|
|
||||||
|
(package! hindent)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Speed up scrolling for the document viewer
|
# Speed up scrolling for the document viewer
|
||||||
"^brave-browser$"
|
"^brave-browser$"
|
||||||
None, Up, Button4, 4
|
None, Up, Button4, 6
|
||||||
None, Down, Button5, 4
|
None, Down, Button5, 6
|
||||||
|
|
||||||
"^Steam$"
|
"^Steam$"
|
||||||
None, Up, Button4, 4
|
None, Up, Button4, 6
|
||||||
None, Down, Button5, 4
|
None, Down, Button5, 6
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
import XMonad
|
import XMonad
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
import System.Exit
|
import System.Exit
|
||||||
import System.IO (hPutStrLn)
|
import System.IO
|
||||||
import qualified XMonad.StackSet as W
|
import qualified XMonad.StackSet as W
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import System.Directory (getHomeDirectory)
|
import System.Directory (getHomeDirectory)
|
||||||
@ -19,17 +19,28 @@ import XMonad.Layout.NoBorders
|
|||||||
import XMonad.Layout.Gaps
|
import XMonad.Layout.Gaps
|
||||||
import XMonad.Layout.Spacing
|
import XMonad.Layout.Spacing
|
||||||
import XMonad.Layout.ThreeColumns
|
import XMonad.Layout.ThreeColumns
|
||||||
|
import XMonad.Layout.Tabbed
|
||||||
|
import XMonad.Layout.Renamed
|
||||||
|
import XMonad.Layout.LayoutModifier
|
||||||
|
import XMonad.Layout.Combo
|
||||||
|
import XMonad.Layout.TwoPane
|
||||||
|
import XMonad.Layout.WindowNavigation
|
||||||
|
|
||||||
-- Utilities
|
-- Utilities
|
||||||
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
|
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
|
||||||
import XMonad.Util.SpawnOnce
|
import XMonad.Util.SpawnOnce
|
||||||
import XMonad.Util.NamedScratchpad
|
import XMonad.Util.NamedScratchpad
|
||||||
import XMonad.Util.EZConfig (additionalKeysP, removeKeys)
|
import XMonad.Util.EZConfig (additionalKeysP, removeKeys)
|
||||||
|
import XMonad.Util.NamedActions
|
||||||
|
import XMonad.Util.NamedScratchpad
|
||||||
|
import XMonad.Util.NamedWindows (getName)
|
||||||
|
|
||||||
-- Actions
|
-- Actions
|
||||||
import XMonad.Actions.CycleWS (moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
|
import XMonad.Actions.CycleWS (moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
|
||||||
import XMonad.Actions.DynamicProjects
|
import XMonad.Actions.DynamicProjects
|
||||||
import XMonad.Actions.DynamicWorkspaces
|
import XMonad.Actions.DynamicWorkspaces
|
||||||
|
import XMonad.Actions.CopyWindow
|
||||||
|
import XMonad.Actions.Commands
|
||||||
|
|
||||||
-- Prompt
|
-- Prompt
|
||||||
import XMonad.Prompt
|
import XMonad.Prompt
|
||||||
@ -90,9 +101,16 @@ myStartupHook = do
|
|||||||
spawnOnce "nitrogen --restore &"
|
spawnOnce "nitrogen --restore &"
|
||||||
spawnOnce "lxsession &"
|
spawnOnce "lxsession &"
|
||||||
spawnOnce "xsetroot -cursor_name left_ptr"
|
spawnOnce "xsetroot -cursor_name left_ptr"
|
||||||
spawnOnce "imwheel -b 45"
|
spawnOnce "imwheel -b 45 &"
|
||||||
|
spawnOnce "play-with-mpv &"
|
||||||
|
|
||||||
myLayout = spacing 2 $ smartBorders (tiled ||| Mirror tiled ||| Full ||| ThreeCol 1 (3/100) (1/2))
|
------------------------------------------------------------------------}}}
|
||||||
|
-- Layouts {{{
|
||||||
|
--
|
||||||
|
-- Alot stolen from https://github.com/altercation/dotfiles-tilingwm
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
myLayout = windowNavigation $ spacing 2 $ smartBorders (tiled ||| Mirror tiled ||| Full ||| ThreeColMid 1 (3/100) (1/2) ||| tabTwoPane)
|
||||||
where
|
where
|
||||||
-- default tiling algorithm partitions the screen into two panes
|
-- default tiling algorithm partitions the screen into two panes
|
||||||
tiled = Tall nmaster delta ratio
|
tiled = Tall nmaster delta ratio
|
||||||
@ -103,6 +121,19 @@ myLayout = spacing 2 $ smartBorders (tiled ||| Mirror tiled ||| Full ||| ThreeCo
|
|||||||
-- Percent of screen to increment by when resizing panes
|
-- Percent of screen to increment by when resizing panes
|
||||||
delta = 2/100
|
delta = 2/100
|
||||||
|
|
||||||
|
tabTwoPane = renamed [Replace "TwoPane Tabs"] $ combineTwo (TwoPane 0.03 0.5) (tabs) (tabs)
|
||||||
|
|
||||||
|
tabs = tabbed shrinkText myTabTheme
|
||||||
|
|
||||||
|
myTabTheme = def { fontName = myFont
|
||||||
|
, activeColor = "#46d9ff"
|
||||||
|
, inactiveColor = "#313846"
|
||||||
|
, activeBorderColor = "#46d9ff"
|
||||||
|
, inactiveBorderColor = "#282c34"
|
||||||
|
, activeTextColor = "#282c34"
|
||||||
|
, inactiveTextColor = "#d0d0d0"
|
||||||
|
}
|
||||||
|
|
||||||
myScratchPads :: [NamedScratchpad]
|
myScratchPads :: [NamedScratchpad]
|
||||||
myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
|
myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
|
||||||
, NS "scr-mpv" spawnMpv findMpv manageMpv
|
, NS "scr-mpv" spawnMpv findMpv manageMpv
|
||||||
@ -153,35 +184,41 @@ myLogHook = return ()
|
|||||||
myKeys :: String -> [([Char], X ())]
|
myKeys :: String -> [([Char], X ())]
|
||||||
myKeys home =
|
myKeys home =
|
||||||
[
|
[
|
||||||
-- close focused window
|
--------------------------------------------------
|
||||||
("M-q", kill)
|
-- Window/Focus Manipulation
|
||||||
|
--------------------------------------------------
|
||||||
-- Rotate through the available layout algorithms
|
-- Rotate through the available layout algorithms
|
||||||
, ("M-<Space>", sendMessage NextLayout)
|
("M-<Tab>", sendMessage NextLayout)
|
||||||
-- Resize viewed windows to the correct size
|
|
||||||
, ("M-z", refresh)
|
|
||||||
-- Move focus to the next window
|
-- Move focus to the next window
|
||||||
, ("M-j", windows W.focusDown)
|
, ("M-j", windows W.focusDown)
|
||||||
-- Move focus to the previous window
|
-- Move focus to the previous window
|
||||||
, ("M-k", windows W.focusUp)
|
, ("M-k", windows W.focusUp)
|
||||||
|
-- Switch focus to next monitor
|
||||||
|
, ("M-.", nextScreen)
|
||||||
|
-- Switch focus to prev monitor
|
||||||
|
, ("M-,", prevScreen)
|
||||||
|
-- Swap the focused window with the next window/tabs
|
||||||
|
, ("M-S-j", sequence_ [windows W.swapDown, sendMessage $ Move R])
|
||||||
|
-- Swap the focused window with the previous window/tabs
|
||||||
|
, ("M-S-k", sequence_ [windows W.swapUp, sendMessage $ Move L])
|
||||||
-- Move focus to the master window
|
-- Move focus to the master window
|
||||||
, ("M-m", windows W.focusMaster)
|
, ("M-m", windows W.focusMaster)
|
||||||
-- Swap the focused window and the master window
|
-- Swap the focused window and the master window
|
||||||
, ("M-c", windows W.swapMaster)
|
, ("M-c", windows W.swapMaster)
|
||||||
-- Swap the focused window with the next window
|
|
||||||
, ("M-S-j", windows W.swapDown)
|
|
||||||
-- Swap the focused window with the previous window
|
|
||||||
, ("M-S-k", windows W.swapUp)
|
|
||||||
-- Shrink the master area
|
-- Shrink the master area
|
||||||
, ("M-h", sendMessage Shrink)
|
, ("M-h", sendMessage Shrink)
|
||||||
-- Expand the master area
|
-- Expand the master area
|
||||||
, ("M-l", sendMessage Expand)
|
, ("M-l", sendMessage Expand)
|
||||||
|
-- Copy window to all workspaces
|
||||||
|
, ("M-x c", toggleCopyToAll)
|
||||||
-- Push window back into tiling
|
-- Push window back into tiling
|
||||||
, ("M-t", withFocused $ windows . W.sink)
|
, ("M-t", withFocused $ windows . W.sink)
|
||||||
, ("M-.", nextScreen) -- Switch focus to next monitor
|
-- close focused window
|
||||||
, ("M-,", prevScreen) -- Switch focus to prev monitor
|
, ("M-q", kill)
|
||||||
, ("M-S-<KP_Add>", shiftTo Next nonNSP >> moveTo Next nonNSP) -- Shifts focused window to next ws
|
|
||||||
, ("M-S-<KP_Subtract>", shiftTo Prev nonNSP >> moveTo Prev nonNSP) -- Shifts focused window to prev ws
|
|
||||||
|
|
||||||
|
--------------------------------------------------
|
||||||
|
-- Basic Utils
|
||||||
|
--------------------------------------------------
|
||||||
-- Spawn terminal
|
-- Spawn terminal
|
||||||
, ("M-<Return>" , spawn "alacritty")
|
, ("M-<Return>" , spawn "alacritty")
|
||||||
-- Spawn rofi drun
|
-- Spawn rofi drun
|
||||||
@ -189,13 +226,9 @@ myKeys home =
|
|||||||
-- Spawn rofi window
|
-- Spawn rofi window
|
||||||
, ("M-S-w", spawn "rofi -show window")
|
, ("M-S-w", spawn "rofi -show window")
|
||||||
|
|
||||||
-- mute overall volume
|
--------------------------------------------------
|
||||||
, ("<XF86AudioMute>", spawn muteVolumeCmd)
|
-- Scratchpads
|
||||||
-- raise overall volume
|
--------------------------------------------------
|
||||||
, ("<XF86AudioRaiseVolume>", spawn raiseVolumeCmd)
|
|
||||||
-- lower overall volume
|
|
||||||
, ("<XF86AudioLowerVolume>", spawn lowerVolumeCmd)
|
|
||||||
|
|
||||||
-- Spawn rofi window
|
-- Spawn rofi window
|
||||||
, ("M-S-<Return>", namedScratchpadAction myScratchPads "terminal")
|
, ("M-S-<Return>", namedScratchpadAction myScratchPads "terminal")
|
||||||
-- Spawn rofi window
|
-- Spawn rofi window
|
||||||
@ -203,6 +236,9 @@ myKeys home =
|
|||||||
-- Spawn rofi window
|
-- Spawn rofi window
|
||||||
, ("M-v", namedScratchpadAction myScratchPads "scr-mpv")
|
, ("M-v", namedScratchpadAction myScratchPads "scr-mpv")
|
||||||
|
|
||||||
|
--------------------------------------------------
|
||||||
|
-- Open Applications
|
||||||
|
--------------------------------------------------
|
||||||
-- Spawn firefox
|
-- Spawn firefox
|
||||||
, ("M-o b" , spawn "brave")
|
, ("M-o b" , spawn "brave")
|
||||||
-- Spawn lutris
|
-- Spawn lutris
|
||||||
@ -214,6 +250,9 @@ myKeys home =
|
|||||||
-- Spawn emacs
|
-- Spawn emacs
|
||||||
, ("M-o e" , spawn "emacs")
|
, ("M-o e" , spawn "emacs")
|
||||||
|
|
||||||
|
--------------------------------------------------
|
||||||
|
-- System Utils
|
||||||
|
--------------------------------------------------
|
||||||
-- Recompile and restart xmonad
|
-- Recompile and restart xmonad
|
||||||
, ("M-x r", spawn "xmonad --recompile; xmonad --restart")
|
, ("M-x r", spawn "xmonad --recompile; xmonad --restart")
|
||||||
-- Quit xmonad
|
-- Quit xmonad
|
||||||
@ -222,9 +261,17 @@ myKeys home =
|
|||||||
, ("M-x g", spawn "gamemoded -r")
|
, ("M-x g", spawn "gamemoded -r")
|
||||||
-- Stop gamemode
|
-- Stop gamemode
|
||||||
, ("M-x S-g", spawn "killall gamemoded")
|
, ("M-x S-g", spawn "killall gamemoded")
|
||||||
|
-- mute overall volume
|
||||||
|
, ("<XF86AudioMute>", spawn muteVolumeCmd)
|
||||||
|
-- raise overall volume
|
||||||
|
, ("<XF86AudioRaiseVolume>", spawn raiseVolumeCmd)
|
||||||
|
-- lower overall volume
|
||||||
|
, ("<XF86AudioLowerVolume>", spawn lowerVolumeCmd)
|
||||||
]
|
]
|
||||||
where nonNSP = WSIs (return (\ws -> W.tag ws /= "nsp"))
|
where
|
||||||
nonEmptyNonNSP = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "nsp"))
|
toggleCopyToAll = wsContainingCopies >>= \ws -> case ws of
|
||||||
|
[] -> windows copyToAll
|
||||||
|
_ -> killAllOtherCopies
|
||||||
|
|
||||||
rmKeys :: String -> [(KeyMask, KeySym)]
|
rmKeys :: String -> [(KeyMask, KeySym)]
|
||||||
rmKeys keys =
|
rmKeys keys =
|
||||||
|
@ -1,414 +0,0 @@
|
|||||||
+TITLE: Custom Xmonad Config
|
|
||||||
#+PROPERTY: header-args :tangle xmonad.hs
|
|
||||||
|
|
||||||
* Table of Contents
|
|
||||||
:PROPERTIES:
|
|
||||||
:TOC: :include all :depth 3
|
|
||||||
:END:
|
|
||||||
:CONTENTS:
|
|
||||||
- [[#table-of-contents][Table of Contents]]
|
|
||||||
- [[#imports][Imports]]
|
|
||||||
- [[#variables][Variables]]
|
|
||||||
- [[#start-up][Start Up]]
|
|
||||||
- [[#layout][Layout]]
|
|
||||||
- [[#scrathpads][Scrathpads]]
|
|
||||||
- [[#hooks][Hooks]]
|
|
||||||
- [[#events][Events]]
|
|
||||||
- [[#logging][Logging]]
|
|
||||||
- [[#keybinds][Keybinds]]
|
|
||||||
- [[#add-normal-binds][Add "Normal" Binds]]
|
|
||||||
- [[#window-management][Window Management]]
|
|
||||||
- [[#basics][Basics]]
|
|
||||||
- [[#media-control][Media Control]]
|
|
||||||
- [[#scratchpads][Scratchpads]]
|
|
||||||
- [[#add-open-binds][Add Open Binds]]
|
|
||||||
- [[#add-system-utils-binds][Add System Utils Binds]]
|
|
||||||
- [[#remove-unneeded-default-binds][Remove Unneeded Default Binds]]
|
|
||||||
- [[#main][Main]]
|
|
||||||
:END:
|
|
||||||
|
|
||||||
* Imports
|
|
||||||
|
|
||||||
Import Haskel modules that are used later in the config.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
-- Base
|
|
||||||
import XMonad
|
|
||||||
import Data.Monoid
|
|
||||||
import System.Exit
|
|
||||||
import System.IO (hPutStrLn)
|
|
||||||
import qualified XMonad.StackSet as W
|
|
||||||
import qualified Data.Map as M
|
|
||||||
import System.Directory (getHomeDirectory)
|
|
||||||
|
|
||||||
-- Hooks
|
|
||||||
import XMonad.Hooks.EwmhDesktops
|
|
||||||
import XMonad.Hooks.ManageDocks
|
|
||||||
import XMonad.Hooks.ManageHelpers
|
|
||||||
import XMonad.Hooks.WorkspaceHistory
|
|
||||||
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
|
|
||||||
|
|
||||||
-- Layouts
|
|
||||||
import XMonad.Layout.NoBorders
|
|
||||||
import XMonad.Layout.Gaps
|
|
||||||
import XMonad.Layout.Spacing
|
|
||||||
import XMonad.Layout.ThreeColumns
|
|
||||||
|
|
||||||
-- Utilities
|
|
||||||
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
|
|
||||||
import XMonad.Util.SpawnOnce
|
|
||||||
import XMonad.Util.NamedScratchpad
|
|
||||||
import XMonad.Util.EZConfig (additionalKeysP, removeKeys)
|
|
||||||
|
|
||||||
-- Actions
|
|
||||||
import XMonad.Actions.CycleWS (moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
|
|
||||||
import XMonad.Actions.DynamicProjects
|
|
||||||
import XMonad.Actions.DynamicWorkspaces
|
|
||||||
|
|
||||||
-- Prompt
|
|
||||||
import XMonad.Prompt
|
|
||||||
|
|
||||||
-- Data
|
|
||||||
import Data.Maybe (isJust)
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Variables
|
|
||||||
|
|
||||||
Set variable used later in the config, often a handful of times.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
-- Terminal to use
|
|
||||||
myTerminal = "alacritty"
|
|
||||||
|
|
||||||
-- Focus follows mouse pointer
|
|
||||||
myFocusFollowsMouse :: Bool
|
|
||||||
myFocusFollowsMouse = True
|
|
||||||
|
|
||||||
-- Define mod keys
|
|
||||||
myModMask = mod4Mask
|
|
||||||
altMask = mod1Mask
|
|
||||||
|
|
||||||
-- Define volume keys and commands
|
|
||||||
lowerVolumeCmd = "pulseaudio-ctl down 2"
|
|
||||||
raiseVolumeCmd = "pulseaudio-ctl up 2"
|
|
||||||
muteVolumeCmd = "pulseaudio-ctl mute"
|
|
||||||
|
|
||||||
-- Count windows
|
|
||||||
windowCount :: X (Maybe String)
|
|
||||||
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
|
|
||||||
|
|
||||||
-- Define workspaces
|
|
||||||
myWorkspaces = ["1","2","3","4","5","6","7","8","9"]
|
|
||||||
|
|
||||||
-- Width of window border
|
|
||||||
myBorderWidth = 2
|
|
||||||
|
|
||||||
-- Border colors
|
|
||||||
myNormalBorderColor = "#ebdbb2"
|
|
||||||
myFocusedBorderColor = "#d3869b"
|
|
||||||
|
|
||||||
-- Prompt theming
|
|
||||||
myFont = "xft:Mononoki Nerd Font:bold:size=9:antialias=true:hinting=true"
|
|
||||||
yellow = "#504945"
|
|
||||||
base03 = "#ebdbb2"
|
|
||||||
active = "#b8bb26"
|
|
||||||
prompt = 20
|
|
||||||
|
|
||||||
myPromptTheme = def
|
|
||||||
{ font = myFont
|
|
||||||
, bgColor = base03
|
|
||||||
, fgColor = active
|
|
||||||
, fgHLight = base03
|
|
||||||
, bgHLight = active
|
|
||||||
, borderColor = base03
|
|
||||||
, promptBorderWidth = 0
|
|
||||||
, height = prompt
|
|
||||||
, position = Top
|
|
||||||
}
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Start Up
|
|
||||||
|
|
||||||
Set variable used later in the config, often a handful of times.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
myStartupHook = do
|
|
||||||
spawnOnce "nitrogen --restore &"
|
|
||||||
spawnOnce "lxsession &"
|
|
||||||
spawnOnce "xsetroot -cursor_name left_ptr"
|
|
||||||
spawnOnce "imwheel -b 45"
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Layout
|
|
||||||
|
|
||||||
Set the possible layouts for great justice.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
myLayout = spacing 2 $ smartBorders (tiled ||| Mirror tiled ||| Full ||| ThreeCol 1 (3/100) (1/2))
|
|
||||||
where
|
|
||||||
-- default tiling algorithm partitions the screen into two panes
|
|
||||||
tiled = Tall nmaster delta ratio
|
|
||||||
-- The default number of windows in the master pane
|
|
||||||
nmaster = 1
|
|
||||||
-- Default proportion of screen occupied by master pane
|
|
||||||
ratio = 1/2
|
|
||||||
-- Percent of screen to increment by when resizing panes
|
|
||||||
delta = 2/100
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Scrathpads
|
|
||||||
|
|
||||||
Define all my scrathpads.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
myScratchPads :: [NamedScratchpad]
|
|
||||||
myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
|
|
||||||
, NS "scr-mpv" spawnMpv findMpv manageMpv
|
|
||||||
, NS "discord" spawnDiscord findDiscord manageDiscord ]
|
|
||||||
where
|
|
||||||
spawnTerm = myTerminal ++ " -t terminal"
|
|
||||||
findTerm = title =? "terminal"
|
|
||||||
manageTerm = customFloating $ W.RationalRect l t w h
|
|
||||||
where
|
|
||||||
h = 0.9
|
|
||||||
w = 0.9
|
|
||||||
t = 0.95 -h
|
|
||||||
l = 0.95 -w
|
|
||||||
|
|
||||||
spawnMpv = "mpv --player-operation-mode=pseudo-gui --title=scr-mpv"
|
|
||||||
findMpv = title =? "scr-mpv"
|
|
||||||
manageMpv = customFloating $ W.RationalRect l t w h
|
|
||||||
where
|
|
||||||
h = 0.9
|
|
||||||
w = 0.9
|
|
||||||
t = 0.95 -h
|
|
||||||
l = 0.95 -w
|
|
||||||
|
|
||||||
spawnDiscord = "discord"
|
|
||||||
findDiscord = appName =? "discord"
|
|
||||||
manageDiscord = customFloating $ W.RationalRect l t w h
|
|
||||||
where
|
|
||||||
h = 0.9
|
|
||||||
w = 0.9
|
|
||||||
t = 0.95 -h
|
|
||||||
l = 0.95 -w
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Hooks
|
|
||||||
|
|
||||||
Define some wicked hooks.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
myManageHook = composeAll
|
|
||||||
-- Float fullscreen apps (mostly games)
|
|
||||||
[isDialog --> doCenterFloat,
|
|
||||||
isFullscreen --> doFullFloat,
|
|
||||||
className =? "Gimp" --> doFullFloat,
|
|
||||||
className =? "Anki" --> doFullFloat,
|
|
||||||
className =? "mpv" --> doRectFloat (W.RationalRect 0.55 0.05 0.4 0.4),
|
|
||||||
className =? "Steam" --> doFullFloat,
|
|
||||||
className =? "microsoft teams - preview" --> doFullFloat,
|
|
||||||
namedScratchpadManageHook myScratchPads]
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
* Events
|
|
||||||
|
|
||||||
Define some Events.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
myEventHook = mempty
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Logging
|
|
||||||
|
|
||||||
Define some Events.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
myLogHook = return ()
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
* Keybinds
|
|
||||||
** Add "Normal" Binds
|
|
||||||
|
|
||||||
Set all of the keybinds I use to control the universe from within Xmonad.
|
|
||||||
|
|
||||||
*** Window Management
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
myKeys :: String -> [([Char], X ())]
|
|
||||||
myKeys home =
|
|
||||||
[
|
|
||||||
-- close focused window
|
|
||||||
("M-q", kill)
|
|
||||||
-- Rotate through the available layout algorithms
|
|
||||||
, ("M-<Space>", sendMessage NextLayout)
|
|
||||||
-- Resize viewed windows to the correct size
|
|
||||||
, ("M-z", refresh)
|
|
||||||
-- Move focus to the next window
|
|
||||||
, ("M-j", windows W.focusDown)
|
|
||||||
-- Move focus to the previous window
|
|
||||||
, ("M-k", windows W.focusUp)
|
|
||||||
-- Move focus to the master window
|
|
||||||
, ("M-m", windows W.focusMaster)
|
|
||||||
-- Swap the focused window and the master window
|
|
||||||
, ("M-c", windows W.swapMaster)
|
|
||||||
-- Swap the focused window with the next window
|
|
||||||
, ("M-S-j", windows W.swapDown)
|
|
||||||
-- Swap the focused window with the previous window
|
|
||||||
, ("M-S-k", windows W.swapUp)
|
|
||||||
-- Shrink the master area
|
|
||||||
, ("M-h", sendMessage Shrink)
|
|
||||||
-- Expand the master area
|
|
||||||
, ("M-l", sendMessage Expand)
|
|
||||||
-- Push window back into tiling
|
|
||||||
, ("M-t", withFocused $ windows . W.sink)
|
|
||||||
, ("M-.", nextScreen) -- Switch focus to next monitor
|
|
||||||
, ("M-,", prevScreen) -- Switch focus to prev monitor
|
|
||||||
, ("M-S-<KP_Add>", shiftTo Next nonNSP >> moveTo Next nonNSP) -- Shifts focused window to next ws
|
|
||||||
, ("M-S-<KP_Subtract>", shiftTo Prev nonNSP >> moveTo Prev nonNSP) -- Shifts focused window to prev ws
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Basics
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
-- Spawn terminal
|
|
||||||
, ("M-<Return>" , spawn "alacritty")
|
|
||||||
-- Spawn rofi drun
|
|
||||||
, ("M-w" , spawn "rofi -show drun")
|
|
||||||
-- Spawn rofi window
|
|
||||||
, ("M-S-w", spawn "rofi -show window")
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Media Control
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
-- mute overall volume
|
|
||||||
, ("<XF86AudioMute>", spawn muteVolumeCmd)
|
|
||||||
-- raise overall volume
|
|
||||||
, ("<XF86AudioRaiseVolume>", spawn raiseVolumeCmd)
|
|
||||||
-- lower overall volume
|
|
||||||
, ("<XF86AudioLowerVolume>", spawn lowerVolumeCmd)
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Scratchpads
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
-- Spawn rofi window
|
|
||||||
, ("M-S-<Return>", namedScratchpadAction myScratchPads "terminal")
|
|
||||||
-- Spawn rofi window
|
|
||||||
, ("M-d", namedScratchpadAction myScratchPads "discord")
|
|
||||||
-- Spawn rofi window
|
|
||||||
, ("M-v", namedScratchpadAction myScratchPads "scr-mpv")
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Add Open Binds
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
-- Spawn firefox
|
|
||||||
, ("M-o b" , spawn "brave")
|
|
||||||
-- Spawn lutris
|
|
||||||
, ("M-o l" , spawn "lutris")
|
|
||||||
-- Spawn steam
|
|
||||||
, ("M-o s" , spawn "steam")
|
|
||||||
-- Spawn flameshot
|
|
||||||
, ("M-o c" , spawn "flameshot gui")
|
|
||||||
-- Spawn emacs
|
|
||||||
, ("M-o e" , spawn "emacs")
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Add System Utils Binds
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
-- Recompile and restart xmonad
|
|
||||||
, ("M-x r", spawn "xmonad --recompile; xmonad --restart")
|
|
||||||
-- Quit xmonad
|
|
||||||
, ("M-x q", io (exitWith ExitSuccess))
|
|
||||||
-- Start gamemode
|
|
||||||
, ("M-x g", spawn "gamemoded -r")
|
|
||||||
-- Stop gamemode
|
|
||||||
, ("M-x S-g", spawn "killall gamemoded")
|
|
||||||
]
|
|
||||||
where nonNSP = WSIs (return (\ws -> W.tag ws /= "nsp"))
|
|
||||||
nonEmptyNonNSP = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "nsp"))
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Remove Unneeded Default Binds
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
rmKeys :: String -> [(KeyMask, KeySym)]
|
|
||||||
rmKeys keys =
|
|
||||||
[
|
|
||||||
-- Remove the default quit xmonad bind
|
|
||||||
(myModMask .|. shiftMask, xK_q)
|
|
||||||
]
|
|
||||||
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Main
|
|
||||||
|
|
||||||
The main function that gets it all done.
|
|
||||||
|
|
||||||
#+begin_src haskell
|
|
||||||
|
|
||||||
main = do
|
|
||||||
home <- getHomeDirectory
|
|
||||||
xmproc0 <- spawnPipe "xmobar -x 0 ~/.config/xmobar/xmobarrc"
|
|
||||||
--
|
|
||||||
xmonad $ docks $ ewmh $ ewmhFullscreen def
|
|
||||||
{
|
|
||||||
-- Simple items
|
|
||||||
terminal = myTerminal,
|
|
||||||
focusFollowsMouse = myFocusFollowsMouse,
|
|
||||||
borderWidth = myBorderWidth,
|
|
||||||
modMask = myModMask,
|
|
||||||
workspaces = myWorkspaces,
|
|
||||||
normalBorderColor = myNormalBorderColor,
|
|
||||||
focusedBorderColor = myFocusedBorderColor,
|
|
||||||
|
|
||||||
-- Hooks, Layouts
|
|
||||||
layoutHook = avoidStruts $ myLayout,
|
|
||||||
manageHook = myManageHook,
|
|
||||||
handleEventHook = myEventHook,
|
|
||||||
logHook = workspaceHistoryHook <+> myLogHook <+> dynamicLogWithPP xmobarPP
|
|
||||||
{ ppOutput = \x -> hPutStrLn xmproc0 x
|
|
||||||
, ppCurrent = xmobarColor "#b8bb26" "" . wrap "[" "]" -- Current workspace in xmobar
|
|
||||||
, ppVisible = xmobarColor "#83a598" "" -- Visible but not current workspace
|
|
||||||
, ppHidden = xmobarColor "#83a598" "" . wrap "*" "" -- Hidden workspaces in xmobar
|
|
||||||
, ppHiddenNoWindows= \( _ ) -> "" -- Only shows visible workspaces. Useful for TreeSelect.
|
|
||||||
, ppTitle = xmobarColor "#ebdbb2" "" . shorten 60 -- Title of active window in xmobar
|
|
||||||
, ppSep = "<fc=#ebdbb2> | </fc>" -- Separators in xmobar
|
|
||||||
, ppUrgent = xmobarColor "#fb4934" "" . wrap "!" "!" -- Urgent workspace
|
|
||||||
, ppExtras = [windowCount] -- # of windows current workspace
|
|
||||||
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]},
|
|
||||||
startupHook = myStartupHook
|
|
||||||
} `removeKeys` rmKeys home
|
|
||||||
`additionalKeysP` myKeys home
|
|
||||||
|
|
||||||
#+end_src
|
|
Loading…
x
Reference in New Issue
Block a user