aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Son Struschka <me@peter-struschka.com>2020-10-11 12:15:08 +0800
committerPeter Son Struschka <me@peter-struschka.com>2020-10-11 20:22:03 +0800
commite5209aad576fe44d3965fcb94d6709348b0a93bf (patch)
tree3f8c4388d5b2511d78debf5e2d9b1357c3187b38
parent37dd411698bd6eae8365260dde39b8ae9c7cbd36 (diff)
downloaddotfiles-e5209aad576fe44d3965fcb94d6709348b0a93bf.tar.gz
dotfiles-e5209aad576fe44d3965fcb94d6709348b0a93bf.tar.bz2
dotfiles-e5209aad576fe44d3965fcb94d6709348b0a93bf.tar.lz
dotfiles-e5209aad576fe44d3965fcb94d6709348b0a93bf.tar.xz
dotfiles-e5209aad576fe44d3965fcb94d6709348b0a93bf.tar.zst
dotfiles-e5209aad576fe44d3965fcb94d6709348b0a93bf.zip
all: overhaul
all: Remove old symlinks herbstluftwm: use polybar instead of dzen2 polybar: update config doom-emacs: update repository
-rw-r--r--.gitattributes1
-rw-r--r--Makefile2
-rw-r--r--basics/.config/rofi/config.rasi4
l---------basics/.local/share/config-files/alacritty1
l---------basics/.local/share/config-files/dotfiles1
l---------basics/.local/share/config-files/dunst1
l---------basics/.local/share/config-files/kitty1
l---------basics/.local/share/config-files/ranger1
l---------basics/.local/share/config-files/rofi1
l---------bspwm/.local/share/config-files/bspwm1
l---------bspwm/.local/share/config-files/sxhkd1
-rw-r--r--doom-emacs/.config/doom/config.el37
-rw-r--r--doom-emacs/.config/doom/config.org51
-rw-r--r--doom-emacs/.config/doom/custom.el23
-rw-r--r--doom-emacs/.config/doom/init.el48
-rw-r--r--doom-emacs/.config/doom/packages.el4
m---------doom-emacs/.emacs.d0
l---------doom-emacs/.local/share/config-files/doom-emacs_config1
l---------doom-emacs/.local/share/config-files/doom-emacs_init1
-rw-r--r--git/.config/git/gitk63
-rwxr-xr-xherbstluftwm/.config/herbstluftwm/autostart112
-rwxr-xr-xherbstluftwm/.config/herbstluftwm/bring_sticky.sh29
-rwxr-xr-xherbstluftwm/.config/herbstluftwm/herbstcommander.sh88
-rwxr-xr-xherbstluftwm/.config/herbstluftwm/lasttag.sh35
-rwxr-xr-xherbstluftwm/.config/herbstluftwm/panel.sh4
-rwxr-xr-xherbstluftwm/.config/herbstluftwm/polybar.sh58
-rwxr-xr-xherbstluftwm/.config/herbstluftwm/rules49
-rwxr-xr-xherbstluftwm/.config/herbstluftwm/windowmenu.sh50
-rwxr-xr-xherbstluftwm/.local/bin/dmenu_run_hlwm45
-rwxr-xr-xherbstluftwm/.local/bin/hlwm_goto_tag7
-rwxr-xr-xherbstluftwm/.local/bin/hlwm_moveto_tag7
-rwxr-xr-xherbstluftwm/.local/bin/hlwm_run.sh12
-rwxr-xr-xherbstluftwm/.local/bin/hlwm_select_tag10
-rwxr-xr-xherbstluftwm/.local/bin/restartpanels.sh27
-rwxr-xr-xherbstluftwm/.local/bin/run_list.sh20
-rwxr-xr-xherbstluftwm/.local/bin/scratchpad.sh26
-rwxr-xr-xherbstluftwm/.local/bin/statusbar/polybar_hlwm_workspaces.sh102
l---------herbstluftwm/.local/share/config-files/herbstluftwm1
l---------herbstluftwm/.local/share/config-files/herbstluftwm-panel1
-rwxr-xr-xi3wm/.local/bin/rofi_goto_workspace (renamed from polybar/.local/bin/rofi_goto_workspace)0
-rwxr-xr-xi3wm/.local/bin/rofi_moveto_workspace (renamed from polybar/.local/bin/rofi_moveto_workspace)0
-rwxr-xr-xi3wm/.local/bin/rofi_workspace_prompt (renamed from polybar/.local/bin/rofi_workspace_prompt)0
l---------i3wm/.local/share/config-files/i31
-rw-r--r--meta/herbstluftwm_deps4
-rw-r--r--nvim/.config/nvim/init.vim7
l---------nvim/.local/share/config-files/nvim1
-rw-r--r--picom/.config/picom/picom.conf396
l---------picom/.local/share/dotfiles/edit-config.d/picom.conf1
-rw-r--r--polybar/.config/polybar/config122
-rwxr-xr-xpolybar/.config/polybar/launch.sh6
l---------polybar/.local/share/config-files/polybar1
l---------vim/.local/share/config-files/vim1
-rwxr-xr-xx/.config/x/Xresources2
l---------x/.local/share/config-files/xinit1
l---------x/.local/share/config-files/xprofile1
l---------x/.local/share/config-files/xresources1
-rw-r--r--zsh/.config/zsh/.gitignore1
-rw-r--r--zsh/.config/zsh/.zshrc3
l---------zsh/.local/share/config-files/zprofile1
l---------zsh/.local/share/config-files/zshenv1
l---------zsh/.local/share/config-files/zshrc1
-rw-r--r--zsh/.local/share/zsh/functions/_deno2
62 files changed, 1292 insertions, 188 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..1e8daef
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+basics/.config/npm/npmrc filter=remove-fontawesome
diff --git a/Makefile b/Makefile
index 5e18912..7d97e5f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
special_files := git nvim tmux zsh
-simple_files := emacs spacemacs doom-emacs vim fish
+simple_files := emacs spacemacs doom-emacs vim fish picom
pkg_dependent_files := basics i3wm bspwm herbstluftwm xmonad x polybar
all_files := $(special_files) $(simple_files) $(pkg_dependent_files)
diff --git a/basics/.config/rofi/config.rasi b/basics/.config/rofi/config.rasi
new file mode 100644
index 0000000..0fba3e1
--- /dev/null
+++ b/basics/.config/rofi/config.rasi
@@ -0,0 +1,4 @@
+configuration {
+ modi: "window,run,ssh,drun";
+ theme: "~/.config/rofi/themes/gruvbox/gruvbox-dark-soft.rasi";
+}
diff --git a/basics/.local/share/config-files/alacritty b/basics/.local/share/config-files/alacritty
deleted file mode 120000
index 2f6fb52..0000000
--- a/basics/.local/share/config-files/alacritty
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/alacritty/alacritty.yml \ No newline at end of file
diff --git a/basics/.local/share/config-files/dotfiles b/basics/.local/share/config-files/dotfiles
deleted file mode 120000
index 11a54ed..0000000
--- a/basics/.local/share/config-files/dotfiles
+++ /dev/null
@@ -1 +0,0 @@
-../../../../ \ No newline at end of file
diff --git a/basics/.local/share/config-files/dunst b/basics/.local/share/config-files/dunst
deleted file mode 120000
index 0faa1f8..0000000
--- a/basics/.local/share/config-files/dunst
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/dunst/dunstrc \ No newline at end of file
diff --git a/basics/.local/share/config-files/kitty b/basics/.local/share/config-files/kitty
deleted file mode 120000
index 71c3f1a..0000000
--- a/basics/.local/share/config-files/kitty
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/kitty/kitty.conf \ No newline at end of file
diff --git a/basics/.local/share/config-files/ranger b/basics/.local/share/config-files/ranger
deleted file mode 120000
index 5ecd95a..0000000
--- a/basics/.local/share/config-files/ranger
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/ranger/rc.conf \ No newline at end of file
diff --git a/basics/.local/share/config-files/rofi b/basics/.local/share/config-files/rofi
deleted file mode 120000
index 2695e7e..0000000
--- a/basics/.local/share/config-files/rofi
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/rofi/config \ No newline at end of file
diff --git a/bspwm/.local/share/config-files/bspwm b/bspwm/.local/share/config-files/bspwm
deleted file mode 120000
index 37a4903..0000000
--- a/bspwm/.local/share/config-files/bspwm
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/bspwm/bspwmrc \ No newline at end of file
diff --git a/bspwm/.local/share/config-files/sxhkd b/bspwm/.local/share/config-files/sxhkd
deleted file mode 120000
index 6b3d56f..0000000
--- a/bspwm/.local/share/config-files/sxhkd
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/sxhkd/sxhkdrc \ No newline at end of file
diff --git a/doom-emacs/.config/doom/config.el b/doom-emacs/.config/doom/config.el
index e363dfc..1925650 100644
--- a/doom-emacs/.config/doom/config.el
+++ b/doom-emacs/.config/doom/config.el
@@ -3,6 +3,10 @@
doom-big-font (font-spec :family "Fira Code" :size 24)
doom-variable-pitch-font (font-spec :family "Fira Code" :size 16))
+(use-package! paper-theme)
+(use-package! modus-operandi-theme)
+(use-package! modus-vivendi-theme)
+
(setq projectile-project-search-path '("~/code"))
(setq display-line-numbers-type 'relative)
@@ -16,15 +20,16 @@
))
(after! org
+ (defvar org-capture-todo-file "~/org/todo.org" )
(setq org-capture-templates '(("t" "Personal todo" entry
- (file+headline +org-capture-todo-file "Inbox")
+ (file+headline org-capture-todo-file "Inbox")
"* TODO %?\n%i\n%a" :prepend t :kill-buffer t)
("n" "Personal notes" entry
(file+headline +org-capture-notes-file "Inbox")
"* %u %?\n%i\n%a" :prepend t :kill-buffer t)
("p" "Templates for projects")
("pt" "Project todo" entry
- (file+headline +org-capture-project-todo-file "Inbox")
+ (file+headline org-capture-project-todo-file "Inbox")
"* TODO %?\n%i\n%a" :prepend t :kill-buffer t)
("pn" "Project notes" entry
(file+headline +org-capture-project-notes-file "Inbox")
@@ -87,8 +92,26 @@
(setq dired-dwim-target t)
-(use-package! tide
- :after (typescript-mode company flycheck)
- :hook ((typescript-mode . tide-setup)
- (typescript-mode . tide-hl-identifier-mode)
- (before-save . tide-format-before-save)))
+(use-package! cmake-ide
+ :after rtags
+ :config
+ (require 'rtags)
+ (cmake-ide-setup))
+
+(use-package! eglot
+ :config
+ (add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd"))
+ (add-hook! (c++-mode c-mode) 'eglot-ensure))
+
+;; (after! eglot
+ ;; (defconst my-eclipse-jdt-home "/home/peter/.emacs.d/.cache/lsp/eclipse.jdt.ls/plugins/org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar")
+ ;; (defun my-eglot-eclipse-jdt-contact (interactive)
+ ;; "contact with the jdt server input INETRACTIVE."
+ ;; (let ((cp (getenv "CLASSPATH")))
+ ;; (setenv "CLASSPATH" (concat my-eclipse-jdt-home ":" cp))
+ ;; (unwind-protect (eglot--eclipse-jdt-contact nil)
+ ;; (setenv "CLASSPATH" cp))))
+ ;; (setcdr (assq 'java-mode eglot-server-programs) #'my-eglot-eclipse-jdt-contact)
+ ;; (add-hook 'java-mode-hook 'eglot-ensure))
+
+(setq ledger-default-date-format "%Y-%m-%d")
diff --git a/doom-emacs/.config/doom/config.org b/doom-emacs/.config/doom/config.org
index e6fb8df..7f00a60 100644
--- a/doom-emacs/.config/doom/config.org
+++ b/doom-emacs/.config/doom/config.org
@@ -8,6 +8,13 @@
doom-variable-pitch-font (font-spec :family "Fira Code" :size 16))
#+END_SRC
+* Themes
+#+BEGIN_SRC emacs-lisp
+(use-package! paper-theme)
+(use-package! modus-operandi-theme)
+(use-package! modus-vivendi-theme)
+#+END_SRC
+
* Projectile
Projectile Path
#+BEGIN_SRC emacs-lisp
@@ -35,15 +42,16 @@ Projectile Path
Org capture
#+BEGIN_SRC emacs-lisp
(after! org
+ (defvar org-capture-todo-file "~/org/todo.org" )
(setq org-capture-templates '(("t" "Personal todo" entry
- (file+headline +org-capture-todo-file "Inbox")
+ (file+headline org-capture-todo-file "Inbox")
"* TODO %?\n%i\n%a" :prepend t :kill-buffer t)
("n" "Personal notes" entry
(file+headline +org-capture-notes-file "Inbox")
"* %u %?\n%i\n%a" :prepend t :kill-buffer t)
("p" "Templates for projects")
("pt" "Project todo" entry
- (file+headline +org-capture-project-todo-file "Inbox")
+ (file+headline org-capture-project-todo-file "Inbox")
"* TODO %?\n%i\n%a" :prepend t :kill-buffer t)
("pn" "Project notes" entry
(file+headline +org-capture-project-notes-file "Inbox")
@@ -119,11 +127,38 @@ Do what I mean target allows dired to use window context for copying and moving
(setq dired-dwim-target t)
#+END_SRC
* Laguages
-Typescript
+c++
+#+BEGIN_SRC emacs-lisp
+(use-package! cmake-ide
+ :after rtags
+ :config
+ (require 'rtags)
+ (cmake-ide-setup))
+#+END_SRC
+
+* LSP
+** C++
+#+BEGIN_SRC emacs-lisp
+(use-package! eglot
+ :config
+ (add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd"))
+ (add-hook! (c++-mode c-mode) 'eglot-ensure))
+#+END_SRC
+** Java
+#+BEGIN_SRC emacs-lisp
+;; (after! eglot
+ ;; (defconst my-eclipse-jdt-home "/home/peter/.emacs.d/.cache/lsp/eclipse.jdt.ls/plugins/org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar")
+ ;; (defun my-eglot-eclipse-jdt-contact (interactive)
+ ;; "contact with the jdt server input INETRACTIVE."
+ ;; (let ((cp (getenv "CLASSPATH")))
+ ;; (setenv "CLASSPATH" (concat my-eclipse-jdt-home ":" cp))
+ ;; (unwind-protect (eglot--eclipse-jdt-contact nil)
+ ;; (setenv "CLASSPATH" cp))))
+ ;; (setcdr (assq 'java-mode eglot-server-programs) #'my-eglot-eclipse-jdt-contact)
+ ;; (add-hook 'java-mode-hook 'eglot-ensure))
+#+END_SRC
+
+* Ledger
#+BEGIN_SRC emacs-lisp
-(use-package! tide
- :after (typescript-mode company flycheck)
- :hook ((typescript-mode . tide-setup)
- (typescript-mode . tide-hl-identifier-mode)
- (before-save . tide-format-before-save)))
+(setq ledger-default-date-format "%Y-%m-%d")
#+END_SRC
diff --git a/doom-emacs/.config/doom/custom.el b/doom-emacs/.config/doom/custom.el
new file mode 100644
index 0000000..8b17112
--- /dev/null
+++ b/doom-emacs/.config/doom/custom.el
@@ -0,0 +1,23 @@
+(custom-set-variables
+ ;; custom-set-variables was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(custom-safe-themes
+ '("77613b9add591bc59875ccf9171c2373bf351346c29bfa3df84fd3009d9296e9" "5310a2d34612a68db8557433fe9fd3d2af1e6a3b284b4e77ce09858ccfd8c1b7" "09c6d2f5114b42dc9522856de47d9dc331acd051011e451c8402ea2174d22d56" "5d09b4ad5649fea40249dd937eaaa8f8a229db1cec9a1a0ef0de3ccf63523014" default))
+ '(fci-rule-color "#5B6268")
+ '(jdee-db-active-breakpoint-face-colors (cons "#1B2229" "#51afef"))
+ '(jdee-db-requested-breakpoint-face-colors (cons "#1B2229" "#98be65"))
+ '(jdee-db-spec-breakpoint-face-colors (cons "#1B2229" "#3f444a"))
+ '(objed-cursor-color "#ff6c6b")
+ '(org-agenda-files '("/home/peter/org/todo.org"))
+ '(package-selected-packages '(lsp-ui lsp-java lsp-mode cmake-ide))
+ '(pdf-view-midnight-colors (cons "#bbc2cf" "#282c34"))
+ '(rustic-ansi-faces
+ ["#282c34" "#ff6c6b" "#98be65" "#ECBE7B" "#51afef" "#c678dd" "#46D9FF" "#bbc2cf"]))
+(custom-set-faces
+ ;; custom-set-faces was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ )
diff --git a/doom-emacs/.config/doom/init.el b/doom-emacs/.config/doom/init.el
index 735cb8e..1e2a0ad 100644
--- a/doom-emacs/.config/doom/init.el
+++ b/doom-emacs/.config/doom/init.el
@@ -17,15 +17,16 @@
(doom! :input
;;chinese
;;japanese
+ ;;layout ; auie,ctsrnm is the superior home row
:completion
company ; the ultimate code completion backend
- ;;helm ; the *other* search engine for love and life
+ helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
- ivy ; a search engine for love and life
+ ;;ivy ; a search engine for love and life
:ui
- ;;deft ; notational velocity for Emacs
+ deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
doom-quit ; DOOM quit-message prompts when you quit Emacs
@@ -33,15 +34,15 @@
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
hydra
indent-guides ; highlighted indent columns
+ ligatures ; ligatures and symbols to make your code pretty again
minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API
nav-flash ; blink the current line after jumping
;;neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup +defaults) ; tame sudden yet inevitable temporary windows
- ;;pretty-code ; ligatures or substitute text with pretty symbols
- ;;tabs ; a tab bar for Emacs
- ;;treemacs ; a project drawer, like neotree but cooler
+ tabs ; a tab bar for Emacs
+ treemacs ; a project drawer, like neotree but cooler
;;unicode ; extended unicode support for various languages
vc-gutter ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
@@ -71,10 +72,10 @@
vc ; version-control and Emacs, sitting in a tree
:term
- eshell ; a consistent, cross-platform shell (WIP)
- ;;shell ; a terminal REPL for Emacs
- term ; terminals in Emacs
- ;;vterm ; another terminals in Emacs
+ eshell ; the elisp shell that works everywhere
+ ;;shell ; simple shell REPL for Emacs
+ ;;term ; basic terminal emulator for Emacs
+ vterm ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
@@ -82,28 +83,31 @@
;;grammer ; tasing grammer mistakes every you make
:tools
- ;;ansible
+ ansible
debugger ; FIXME stepping through code, to help you add bugs
- ;;direnv
- ;;docker
+ direnv
+ docker
editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
;;gist ; interacting with github gists
lookup ; navigate your code and its documentation
- lsp
- ;;macos ; MacOS-specific commands
+ (lsp +eglot +peek)
magit ; a git porcelain for Emacs
make ; run make tasks from Emacs
;;pass ; password manager for nerds
pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
rgb ; creating color strings
- ;;taskrunner ; taskrunner for all your projects
+ taskrunner ; taskrunner for all your projects
;;terraform ; infrastructure as code
tmux ; an API for interacting with tmux
upload ; map local to remote projects via ssh/ftp
+ :os
+ (:if IS-MAC macos) ; improved compatibility with macOS
+ ;;tty ; improve the terminal Emacs experience
+
:lang
;;agda ; types of types of types of types...
(cc ; C/C++/Obj-C madness
@@ -130,8 +134,8 @@
;;hy ; readability of scheme w/ speed of python
;;idris
json ; At least it ain't XML
- (java +meghanada) ; the poster child for carpal tunnel syndrome
- ;;javascript ; all(hope(abandon(ye(who(enter(here))))))
+ (java +meghanada) ; the poster child for carpal tunnel syndrome
+ (javascript +lsp) ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
kotlin ; a better, slicker Java(Script)
latex ; writing papers in Emacs has never been so fun
@@ -143,8 +147,10 @@
;;nim ; python + lisp at the speed of c
;;nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
- org ; organize your plain life in plain text
- ;;php ; perl's insecure younger brother
+ (org ; organize your plain life in plain text
+ +pomodoro
+ +present)
+ php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
python ; beautiful is better than ugly
@@ -171,7 +177,7 @@
;;(wanderlust +gmail)
:app
- ;;calendar
+ calendar
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
;;twitter ; twitter client https://twitter.com/vnought
diff --git a/doom-emacs/.config/doom/packages.el b/doom-emacs/.config/doom/packages.el
index 7655397..0abc342 100644
--- a/doom-emacs/.config/doom/packages.el
+++ b/doom-emacs/.config/doom/packages.el
@@ -1,6 +1,10 @@
;; -*- no-byte-compile: t; -*-
;;; ~/repos/dotfiles/doom-emacs/.doom.d/packages.el
+(package! paper-theme)
+(package! modus-vivendi-theme)
+(package! modus-operandi-theme)
+
(package! org-super-agenda)
(package! imenu-list)
diff --git a/doom-emacs/.emacs.d b/doom-emacs/.emacs.d
-Subproject b3077c96258cd8569fb1523251b5823199e2433
+Subproject 3e2c98a0a3e02237da952dac78d265dc9503f07
diff --git a/doom-emacs/.local/share/config-files/doom-emacs_config b/doom-emacs/.local/share/config-files/doom-emacs_config
deleted file mode 120000
index 444f7a3..0000000
--- a/doom-emacs/.local/share/config-files/doom-emacs_config
+++ /dev/null
@@ -1 +0,0 @@
-../../../.doom.d/config.org \ No newline at end of file
diff --git a/doom-emacs/.local/share/config-files/doom-emacs_init b/doom-emacs/.local/share/config-files/doom-emacs_init
deleted file mode 120000
index 69c2377..0000000
--- a/doom-emacs/.local/share/config-files/doom-emacs_init
+++ /dev/null
@@ -1 +0,0 @@
-../../../.doom.d/init.el \ No newline at end of file
diff --git a/git/.config/git/gitk b/git/.config/git/gitk
new file mode 100644
index 0000000..cd49b1f
--- /dev/null
+++ b/git/.config/git/gitk
@@ -0,0 +1,63 @@
+set mainfont {sans 9}
+set textfont {monospace 9}
+set uifont {sans 9 bold}
+set tabstop 8
+set findmergefiles 0
+set maxgraphpct 50
+set maxwidth 16
+set cmitmode patch
+set wrapcomment none
+set autoselect 1
+set autosellen 40
+set showneartags 1
+set maxrefs 20
+set visiblerefs {"master"}
+set hideremotes 0
+set showlocalchanges 1
+set datetimeformat {%Y-%m-%d %H:%M:%S}
+set limitdiffs 1
+set uicolor grey85
+set want_ttk 1
+set bgcolor white
+set fgcolor black
+set uifgcolor black
+set uifgdisabledcolor #999
+set colors {"#00ff00" red blue magenta darkgrey brown orange}
+set diffcolors {red "#00a000" blue}
+set mergecolors {red blue "#00ff00" purple brown "#009090" magenta "#808000" "#009000" "#ff0080" cyan "#b07070" "#70b0f0" "#70f0b0" "#f0b070" "#ff70b0"}
+set markbgcolor #e0e0ff
+set diffcontext 3
+set selectbgcolor gray85
+set foundbgcolor yellow
+set currentsearchhitbgcolor orange
+set extdifftool meld
+set perfile_attrs 0
+set headbgcolor #00ff00
+set headfgcolor black
+set headoutlinecolor black
+set remotebgcolor #ffddaa
+set tagbgcolor yellow
+set tagfgcolor black
+set tagoutlinecolor black
+set reflinecolor black
+set filesepbgcolor #aaaaaa
+set filesepfgcolor black
+set linehoverbgcolor #ffff80
+set linehoverfgcolor black
+set linehoveroutlinecolor black
+set mainheadcirclecolor yellow
+set workingfilescirclecolor red
+set indexcirclecolor #00ff00
+set circlecolors {white blue gray blue blue}
+set linkfgcolor blue
+set circleoutlinecolor black
+set web_browser xdg-open
+set geometry(main) 1912x1026+2+18
+set geometry(state) normal
+set geometry(topwidth) 1912
+set geometry(topheight) 225
+set geometry(pwsash0) "1300 1"
+set geometry(pwsash1) "1795 1"
+set geometry(botwidth) 1268
+set geometry(botheight) 796
+set permviews {}
diff --git a/herbstluftwm/.config/herbstluftwm/autostart b/herbstluftwm/.config/herbstluftwm/autostart
index 7605dd2..052f191 100755
--- a/herbstluftwm/.config/herbstluftwm/autostart
+++ b/herbstluftwm/.config/herbstluftwm/autostart
@@ -2,6 +2,8 @@
# this is a simple config for herbstluftwm
+dir="$XDG_CONFIG_HOME/herbstluftwm"
+
hc() {
herbstclient "$@"
}
@@ -9,9 +11,10 @@ hc() {
hc emit_hook reload
if hc silent new_attr bool my_not_first_autostart; then
- [ ! "$(pidof -x picom)" ] && picom &
+ [ ! "$(pidof -x picom)" ] && herbstclient spawn picom
xset s 600 5
- [ ! "$(pidof -x xss-lock)" ] && xss-lock -n /usr/lib/xsecurelock/dimmer -l -- xsecurelock &
+ #[ ! "$(pidof -x xss-lock)" ] && xss-lock -n /usr/lib/xsecurelock/dimmer -l -- xsecurelock &
+ [ ! "$(pidof -x xss-lock)" ] && herbstclient spawn xss-lock -n /usr/lib/xsecurelock/dimmer -l -- slock
fi
#xsetroot -solid '#5A8E3A'
@@ -31,8 +34,8 @@ hc keybind $Mod-Shift-q close
hc keybind $Mod-Shift-c close
hc keybind $Mod-Return spawn "${TERMINAL:-xterm}" # use your $TERMINAL with xterm as fallback
-hc keybind $Mod-x spawn dmenu_run
-hc keybind $Mod-d spawn /etc/xdg/herbstluftwm/dmenu_run_hlwm
+hc keybind $Mod-x spawn dmenu_run_hlwm
+hc keybind $Mod-d spawn rofi -show drun
hc keybind $Mod-backslash rotate
@@ -84,7 +87,7 @@ for i in "${!tag_names[@]}" ; do
hc add "${tag_names[$i]}"
key="${tag_keys[$i]}"
if ! [ -z "$key" ] ; then
- hc keybind "$Mod-$key" use_index "$i"
+ hc keybind "$Mod-$key" and . use_index "$i" . spawn "$dir/bring_sticky.sh"
hc keybind "$Mod-Shift-$key" move_index "$i"
fi
done
@@ -93,11 +96,15 @@ done
hc keybind $Mod-period use_index +1 --skip-visible
hc keybind $Mod-comma use_index -1 --skip-visible
-hc keybind $Mod-b use_previous
+# Previous tag
+hc spawn "$dir/lasttag.sh"
+hc keybind $Mod-b emit_hook goto_last_tag
+hc keybind $Mod-Shift-b emit_hook moveto_last_tag
+#hc keybind $Mod-b use_previous
# layouting
hc keybind $Mod-r remove
-hc keybind $Mod-s floating toggle
+hc keybind $Mod-Shift-space floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-Shift-f set_attr clients.focus.floating toggle
hc keybind $Mod-p pseudotile toggle
@@ -109,13 +116,36 @@ hc keybind $Mod-space
. compare tags.focus.curframe_wcount = 2 \
. cycle_layout +1 vertical horizontal max vertical grid \
, cycle_layout +1
+sticky_attr="my_sticky_client"
+hc keybind $Mod-s or , set_attr clients.focus."$sticky_attr" toggle \
+ , new_attr bool clients.focus."$sticky_attr" true
+
hc keybind $ModAlt-Tab spawn rofi -show window
# scratchpad
hc keybind $Mod-grave spawn ~/.local/bin/scratchpad.sh
-# media
+# hidden
+hidden_tag="hidden"
+hc add "$hidden_tag"
+# hide window
+hc keybind $Mod-t move "$hidden_tag"
+# bring all hidden windows to current tag
+hc keybind $Mod-Shift-t \
+ foreach T clients. \
+ sprintf S "%c.tag" T \
+ and . compare S "=" "$hidden_tag" \
+ . sprintf IDATTR "%c.winid" T \
+ sprintf ID "%s" IDATTR \
+ bring ID
+
+hc keybind $Mod-m spawn "$dir/windowmenu.sh"
+hc keybind $Mod-n spawn hlwm_goto_tag
+
+hc keybind $Mod-w spawn "$dir/herbstcommander.sh"
+
+# XF86 keys
hc keybind XF86AudioLowerVolume spawn change-vol -
hc keybind XF86AudioRaiseVolume spawn change-vol +
hc keybind XF86AudioMute spawn pactl set-sink-mute 0 toggle
@@ -128,6 +158,7 @@ hc keybind XF86AudioPrev spawn playerctl previous
hc keybind XF86MonBrightnessDown spawn brightnessctl s "5%-"
hc keybind XF86MonBrightnessUp spawn brightnessctl s "+5%"
+# lock
hc keybind $Mod-Shift-Delete spawn xset s activate
# mouse
@@ -154,16 +185,6 @@ hc keybind $Mod-i jumpto urgent
# theme
hc attr theme.tiling.reset 1
hc attr theme.floating.reset 1
-hc set frame_border_active_color '#222222'
-hc set frame_border_normal_color '#101010'
-hc set frame_bg_normal_color '#565656'
-hc set frame_bg_active_color '#345F0C'
-hc set frame_border_width 1
-hc set always_show_frame on
-hc set frame_bg_transparent on
-hc set frame_transparent_width 5
-hc set frame_gap 4
-
hc attr theme.active.color '#9fbc00'
hc attr theme.normal.color '#454545'
hc attr theme.urgent.color orange
@@ -177,33 +198,33 @@ hc attr theme.active.inner_color '#3E4A00'
hc attr theme.active.outer_color '#3E4A00'
hc attr theme.background_color '#141414'
-hc set window_gap 2
+hc set frame_border_active_color '#222222'
+hc set frame_border_normal_color '#101010'
+hc set frame_bg_normal_color '#565656'
+hc set frame_bg_active_color '#345F0C'
+hc set frame_border_width 1
+hc set always_show_frame off
+hc set frame_bg_transparent on
+hc set frame_transparent_width 5
+hc set frame_gap 4
+hc set window_gap 0
hc set frame_padding 0
hc set smart_window_surroundings off
hc set smart_frame_surroundings on
hc set mouse_recenter_gap 0
-hc set focus_crosses_monitor_boundaries off
-
-# rules
-hc unrule -F
-#hc rule class=XTerm tag=3 # move all xterms to tag 3
-hc rule focus=on # normally focus new clients
-#hc rule focus=off # normally do not focus new clients
-# give focus to most common terminals
-#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
-hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on
-hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
-hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
-
-hc rule class='jetbrains-toolbox' floating=on
-hc rule class='jetbrains-idea' instance='jetbrains-idea' title='win0' floating=on
-hc rule class=Steam instance=Steam title~'Steam( .*)'
-hc rule class=Steam instance=Steam title~'(.*)List(.*)'
-hc rule instance=scratchpad tag=scratchpad
+hc set hide_covered_windows off
+hc set focus_crosses_monitor_boundaries on
+hc set swap_monitors_to_get_tag on
+hc set focus_stealing_prevention off
+hc set focus_follows_mouse true
hc set tree_style '╾│ ├└╼─┐'
+# rules
+rules="$XDG_CONFIG_HOME/herbstluftwm/rules"
+[ -x "$rules" ] && source "$rules"
+
# unlock, just to be sure
hc unlock
@@ -212,16 +233,7 @@ hc unlock
# or simply:
hc detect_monitors
-# find the panel
-panel=~/.config/herbstluftwm/panel.sh
-[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
-for monitor in $(hc list_monitors | cut -d: -f1) ; do
- # start it on each monitor
- hc spawn "$panel" "$monitor"
-done
-killall -q stalonetray
-while pgrep -u "$UID" -x stalonetray >/dev/null; do
- sleep 1
-done
-sleep 5
-hc spawn stalonetray --geometry 1x1+1250+0 --window-layer top -c "$XDG_CONFIG_HOME/stalonetray/stalonetrayrc"
+# restartpanels
+"$dir/polybar.sh" hlwm
+#restartpanels.sh
+
diff --git a/herbstluftwm/.config/herbstluftwm/bring_sticky.sh b/herbstluftwm/.config/herbstluftwm/bring_sticky.sh
new file mode 100755
index 0000000..d0f1250
--- /dev/null
+++ b/herbstluftwm/.config/herbstluftwm/bring_sticky.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Script to bring non visible sticky windows over
+# to the current tag
+
+hc() {
+ herbstclient "$@"
+}
+
+hc lock
+
+read -ra other_monitor <<< "$(hc tag_status | tr '\t' '\n' | sed -n 's/-//p')"
+declare -A other_monitor_map
+for key in "${!other_monitor[@]}"; do other_monitor_map[${other_monitor[$key]}]="$key"; done
+
+win_ids=$(hc foreach T clients. \
+ sprintf S "%c.my_sticky_client" T \
+ and . silent compare S "=" "true" \
+ . sprintf WINIDATTR "%c.winid" T \
+ attr WINIDATTR 2>&1)
+win_array=($win_ids)
+
+for sticky_winid in "${win_array[@]}"; do
+ tag=$(hc attr "clients.$sticky_winid.tag")
+ if [ ! ${other_monitor_map[$tag]+_} ]; then hc bring "$sticky_winid"; fi
+done
+
+hc unlock
+
diff --git a/herbstluftwm/.config/herbstluftwm/herbstcommander.sh b/herbstluftwm/.config/herbstluftwm/herbstcommander.sh
new file mode 100755
index 0000000..efe5f20
--- /dev/null
+++ b/herbstluftwm/.config/herbstluftwm/herbstcommander.sh
@@ -0,0 +1,88 @@
+#!/usr/bin/env bash
+
+# herbstcommander.sh - launch herbstluftwm-commands via dmenu
+# Written by Florian Bruhin <me@the-compiler.org>
+
+# To customize dmenu-colors, create a file named "herbstcommander" in your
+# herbstluftwm config-directory, with something like this in it:
+#
+# dmenu_command=(dmenu -i -b -nb '#313131' -nf '#686868' -sb '#454545' -sf '#898989')
+#
+# You can also directly pass dmenu-arguments to this script instead, as long
+# as dmenu_command is undefined.
+
+config_1="$XDG_CONFIG_HOME/herbstluftwm/herbstcommander"
+config_2="$HOME/.config/herbstluftwm/herbstcommander"
+[[ -f "$config_1" ]] && source "$config_1"
+[[ -f "$config_2" ]] && source "$config_2"
+
+dm() {
+ if [[ "${dmenu_command[@]}" ]]; then
+ "${dmenu_command[@]}" "$@"
+ else
+ dmenu -i "$@"
+ fi
+}
+
+hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
+prompt=${prompt:-herbstluft: }
+display_reply=${display_reply:-true}
+
+cmd=( "$@" )
+forceexec=0
+
+while :; do
+ dmenu_args=""
+ if [[ "$forceexec" != 1 ]]; then
+ completion=$(hc complete "${#cmd[@]}" "${cmd[@]}")
+ if [[ "$?" = 7 ]] ; then
+ forceexec=1
+ fi
+ fi
+ if [[ "$forceexec" == 1 ]]; then
+ echo "Executing ${cmd[@]}"
+ reply=$(hc "${cmd[@]}")
+ status=$?
+ if [[ "$display_reply" && "$reply" ]]; then
+ dm -p "${cmd[*]}" <<< "$reply" >/dev/null
+ fi
+ exit $status
+ else
+ case "${cmd[*]}" in
+ raise|jumpto|bring)
+ IFS=$'\t' read -ra tags <<< "$(hc tag_status)"
+ i=1
+ completion=$(
+ wmctrl -l | while read line; do
+ IFS=' ' read -ra fields <<< "$line"
+ id=${fields[0]}
+ tag=${tags[ ${fields[1]} ]}
+ class=$(xprop -notype -id $id WM_CLASS |
+ sed 's/.*\?= *//; s/"\(.*\?\)", *"\(.*\?\)".*/\1,\2/')
+ title=${fields[@]:3}
+ printf "%-3s %s %-3s [%s] %s\n" "$i)" "$id" "$tag" "$class" "$title"
+ i=$((i+1))
+ done
+ )
+
+ dmenu_args="-l 10"
+ ;;
+ esac
+ next=$(dm $dmenu_args -p "${prompt}${cmd[*]}" <<< "$completion")
+ (( $? != 0 )) && exit 125 # dmenu was killed
+ if [[ -z "$next" ]]; then
+ forceexec=1 # empty reply instead of completion
+ else
+ case "${cmd[*]}" in
+ raise|jumpto|bring)
+ # add the WINID only (second field)
+ IFS=' ' read -ra fields <<< "$next"
+ cmd+=( ${fields[1]} )
+ ;;
+ *)
+ cmd+=( $next )
+ ;;
+ esac
+ fi
+ fi
+done
diff --git a/herbstluftwm/.config/herbstluftwm/lasttag.sh b/herbstluftwm/.config/herbstluftwm/lasttag.sh
new file mode 100755
index 0000000..d4c328c
--- /dev/null
+++ b/herbstluftwm/.config/herbstluftwm/lasttag.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+
+# usage: start this script in anywhere your autostart (but *after* the
+# emit_hook reload line)
+
+# to switch to the last tag, call: herbstclient emit_hook goto_last_tag
+# or bind it: herbstclient keybind Mod1-Escape emit_hook goto_last_tag
+
+
+dir="$XDG_CONFIG_HOME/herbstluftwm"
+
+hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
+
+tag="$(hc attr tags.focus.name)"
+lasttag="$tag"
+
+hc --idle '(tag_changed|goto_last_tag|reload)' \
+ | while read line ; do
+ IFS=$'\t' read -ra args <<< "$line"
+ case ${args[0]} in
+ tag_changed)
+ lasttag="$tag"
+ tag=${args[1]}
+ ;;
+ goto_last_tag)
+ [ "$lasttag" ] && hc and . use "$lasttag" . spawn "$dir/bring_sticky.sh"
+ ;;
+ moveto_last_tag)
+ [ "$lasttag" ] && hc and . move "$lasttag" . spawn "$dir/bring_sticky.sh"
+ ;;
+ reload)
+ exit
+ ;;
+ esac
+ done
diff --git a/herbstluftwm/.config/herbstluftwm/panel.sh b/herbstluftwm/.config/herbstluftwm/panel.sh
index ebdd59a..229e31e 100755
--- a/herbstluftwm/.config/herbstluftwm/panel.sh
+++ b/herbstluftwm/.config/herbstluftwm/panel.sh
@@ -128,6 +128,8 @@ hc pad $monitor $panel_height
for i in "${tags[@]}" ; do
# don't render these hidden tags
case ${i:1} in
+ 'hidden')
+ ;&
'scratchpad')
continue ;;
esac
@@ -185,7 +187,7 @@ hc pad $monitor $panel_height
IFS=$'\t' read -ra cmd || break
# log events for debugging
- echo "${cmd[@]}" >> /tmp/panel_${monitor}.log
+ #echo "${cmd[@]}" >> /tmp/panel_${monitor}.log
# find out event origin
case "${cmd[0]}" in
diff --git a/herbstluftwm/.config/herbstluftwm/polybar.sh b/herbstluftwm/.config/herbstluftwm/polybar.sh
new file mode 100755
index 0000000..01d3d91
--- /dev/null
+++ b/herbstluftwm/.config/herbstluftwm/polybar.sh
@@ -0,0 +1,58 @@
+#!/bin/env bash
+
+killall -q polybar
+
+while pgrep -u $UID -x polybar >/dev/null; do
+ sleep 0.5
+done
+
+hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
+
+# manually set padding
+hc set auto_detect_panels false
+
+monitor_bound() {
+ echo "$1" | cut -d' ' -f2
+}
+
+name() {
+ echo "$1" | sed -e 's/:.*$//g'
+}
+
+hlwm_id() {
+ while read -r bound; do
+ hc list_monitors | grep "$bound" | sed -e 's/:.*$//g'
+ done <<< "$(monitor_bound "$1")"
+}
+
+primary_mon=$(polybar -m | grep '(primary)')
+primary_mon_name=$(name "$primary_mon")
+all_monitors=$(polybar -m |
+ sed -e 's/:.*$//g')
+for name in $all_monitors; do
+ declare "${name}_height=16"
+done
+
+wm=${1:+"-$1"}
+
+#
+MONITOR=$(name "$primary_mon_name") polybar "topbar${wm}" &
+primary_height_var="${primary_mon_name}_height"
+declare "${primary_mon_name}_height=$((${!primary_height_var}+16))"
+
+while read -r mon; do
+ echo "launching bar on $(name "$mon")"
+ height_var="$(name "$mon")_height"
+ echo "${height_var}"
+ echo "${!height_var}"
+ OFFSET_Y="$((${!height_var}-16))" MONITOR="$(name "$mon")" polybar "topbar2${wm}" &
+ #sleep 2
+ echo -n "name: "
+ name "$mon"
+ echo
+ echo -n "id hlwm: "
+ hlwm_id "$mon"
+ hc pad "$(hlwm_id "$mon")" "${!height_var}"
+done <<< "$(polybar -m)"
+
+echo "Bars launched"
diff --git a/herbstluftwm/.config/herbstluftwm/rules b/herbstluftwm/.config/herbstluftwm/rules
new file mode 100755
index 0000000..9fedcae
--- /dev/null
+++ b/herbstluftwm/.config/herbstluftwm/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/env bash
+
+hc() {
+ herbstclient "$@"
+}
+
+# rules
+hc unrule -F
+#hc rule class=XTerm tag=3 # move all xterms to tag 3
+hc rule focus=on # normally focus new clients
+#hc rule focus=off # normally do not focus new clients
+
+# give focus to most common terminals
+#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
+hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' \
+ floating=on
+hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' \
+ focus=on
+hc rule windowrole='pop-up' \
+ floating=on
+hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' \
+ manage=off
+
+# use xprop with mouse or
+# DISPLAY=:0 xprop -name "..."
+# xprop to rule conditions
+# WM_CLASS(STRING) = "<instance>", "<class>"
+# WM_NAME(STRING) = "<title>"
+# _NET_WM_WINDOW_TYPE_(ATOM) = <windowtype>
+# WM_WINDOW_ROLE(STRING) = "<windowrole>"
+hc rule class='jetbrains-toolbox' \
+ floating=on floatplacement=none focus=off
+hc rule instance~'jetbrains-[a-z]*' class~'jetbrains-[a-z]*' title='win0' \
+ floating=on floatplacement=center focus=off
+hc rule instance~'jetbrains-[a-z]*' class~'jetbrains-[a-z]*' \
+ title='Cannot execute command' \
+ floating=on floatplacement=center focus=off
+hc rule instance~'jetbrains-[a-z]*' class~'jetbrains-[a-z]*' \
+ title~'(Welcome.*)|(Java)' \
+ floating=on floatplacement=center focus=off
+hc rule instance='gcr-prompter' class='Gcr-prompter' title='Unlock Keyring' \
+ floating=on floatplacement=center focus=off
+hc rule instance=Steam class=Steam title~'Steam( .*)' \
+ focus=off
+hc rule instance=Steam class=Steam title~'(.*)List(.*)' \
+ focus=off
+hc rule instance=scratchpad \
+ tag=scratchpad
+
diff --git a/herbstluftwm/.config/herbstluftwm/windowmenu.sh b/herbstluftwm/.config/herbstluftwm/windowmenu.sh
new file mode 100755
index 0000000..9de0f46
--- /dev/null
+++ b/herbstluftwm/.config/herbstluftwm/windowmenu.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+set -e
+#
+# dependencies:
+#
+# - rofi
+
+# offer a window menu offering possible actions on that window like
+# moving to a different tag or toggling its fullscreen state
+
+action_list() {
+ local a="$1"
+ "$a" "Close" herbstclient close
+ "$a" "Toggle fullscreen" herbstclient fullscreen toggle
+ "$a" "Toggle pseudotile" herbstclient pseudotile toggle
+ for tag in $(herbstclient complete 1 move) ; do
+ "$a" "Move to tag $tag" herbstclient move "$tag"
+ done
+}
+
+print_menu() {
+ echo "$1"
+}
+
+title=$(herbstclient attr clients.focus.title)
+title=${title//&/&amp;}
+rofiflags=(
+ -p "herbstclient:"
+ -mesg "<i>$title</i>"
+ -columns 3
+ -location 2
+ -width 100
+ #-no-custom
+)
+result=$(action_list print_menu | rofi -i -dmenu -m -2 "${rofiflags[@]}")
+[ $? -ne 0 ] && exit 0
+
+exec_entry() {
+ if [ "$1" = "$result" ] ; then
+ shift
+ "$@"
+ exit 0
+ else
+ herbstclient add "$result"
+ herbstclient move "$result"
+ fi
+}
+
+action_list exec_entry
+
diff --git a/herbstluftwm/.local/bin/dmenu_run_hlwm b/herbstluftwm/.local/bin/dmenu_run_hlwm
new file mode 100755
index 0000000..612ee48
--- /dev/null
+++ b/herbstluftwm/.local/bin/dmenu_run_hlwm
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+
+if ! command -v dmenu > /dev/null 2>/dev/null ; then
+ echo "Error: Requirement dmenu not found in your PATH." >&2
+ exit 1
+fi
+
+# Get the currently active tag
+tag=$(herbstclient attr tags.focus.name)
+
+# Redirect to dmenu_path if available
+if command -v dmenu_path > /dev/null 2>/dev/null ; then
+ selectedPath=$(dmenu_path | dmenu "$@")
+
+# If at least stest is present use the code from latest dmenu_path directly
+elif command -v stest > /dev/null 2>/dev/null ; then
+ cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
+ if [ -d "$cachedir" ]; then
+ cache=$cachedir/dmenu_run
+ else
+ cache=$HOME/.dmenu_cache # if no xdg dir, fall back to dotfile in ~
+ fi
+ IFS=:
+ if stest -dqr -n "$cache" $PATH; then
+ selectedPath=$(stest -flx $PATH | sort -u | tee "$cache" | dmenu "$@")
+ else
+ selectedPath=$(dmenu "$@" < "$cache")
+ fi
+
+# Both not found -> unable to continue
+else
+ echo "Error: Requirements dmenu_path or stest not found in your PATH." >&2
+ exit 2
+fi
+
+# Stop here if the user aborted
+[ -z $selectedPath ] && exit 0
+
+# Move next window from this process to this tag. Prepend the rule so
+# that it may be overwritten by existing custom rules e.g. in the
+# autostart. Also set a maximum age for this rule of 120 seconds and
+# mark it as one-time-only rule.
+herbstclient rule prepend maxage="120" pid="$$" tag="$tag" once
+
+exec $selectedPath
diff --git a/herbstluftwm/.local/bin/hlwm_goto_tag b/herbstluftwm/.local/bin/hlwm_goto_tag
new file mode 100755
index 0000000..12c93c0
--- /dev/null
+++ b/herbstluftwm/.local/bin/hlwm_goto_tag
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
+
+tag=$(hlwm_select_tag)
+
+hc use "$tag"
diff --git a/herbstluftwm/.local/bin/hlwm_moveto_tag b/herbstluftwm/.local/bin/hlwm_moveto_tag
new file mode 100755
index 0000000..17be186
--- /dev/null
+++ b/herbstluftwm/.local/bin/hlwm_moveto_tag
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
+
+tag=$(hlwm_select_tag)
+
+hc move "$tag"
diff --git a/herbstluftwm/.local/bin/hlwm_run.sh b/herbstluftwm/.local/bin/hlwm_run.sh
new file mode 100755
index 0000000..49fdc28
--- /dev/null
+++ b/herbstluftwm/.local/bin/hlwm_run.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+tag=$(herbstclient attr tags.focus.name)
+
+selectedPath=$(run_list.sh | rofi -dmenu)
+
+[ -z $selectedPath ] && exit 0
+
+herbstclient rule prepend maxage="120" pid="$$" tag="$tag" once
+
+exec $selectedPath
diff --git a/herbstluftwm/.local/bin/hlwm_select_tag b/herbstluftwm/.local/bin/hlwm_select_tag
new file mode 100755
index 0000000..3b23188
--- /dev/null
+++ b/herbstluftwm/.local/bin/hlwm_select_tag
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
+#IFS=$'\t' read -ra tags <<< "$(hc tag_status "")"
+tags="$(hc tag_status "" | tr '\t' '\n')"
+tags_list=$(echo "$tags" | sed 's/^.//g')
+
+selected_tag=$(echo "$tags_list" | rofi -dmenu)
+hc add "$selected_tag"
+echo "$selected_tag"
diff --git a/herbstluftwm/.local/bin/restartpanels.sh b/herbstluftwm/.local/bin/restartpanels.sh
new file mode 100755
index 0000000..20d779e
--- /dev/null
+++ b/herbstluftwm/.local/bin/restartpanels.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+installdir=/
+
+XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+defaultpanel="$XDG_CONFIG_HOME/herbstluftwm/panel.sh"
+
+[ -x "$defaultpanel" ] || defaultpanel="$installdir/etc/xdg/herbstluftwm/panel.sh"
+
+panelcmd="${1:-$defaultpanel}"
+
+herbstclient emit_hook quit_panel
+
+monitors=$(herbstclient list_monitors)
+
+for i in $(echo "$monitors" | cut -d':' -f1) ; do
+ "$panelcmd" "$i" &
+done
+
+# wait and restart stalonetray
+sleep 1
+killall -q stalonetray
+while pgrep -u "$UID" -x stalonetray >/dev/null; do
+ sleep 1
+done
+herbstclient spawn stalonetray --geometry 1x1+1250+0 --window-layer top -c "$XDG_CONFIG_HOME/stalonetray/stalonetrayrc"
+
diff --git a/herbstluftwm/.local/bin/run_list.sh b/herbstluftwm/.local/bin/run_list.sh
new file mode 100755
index 0000000..463bbaf
--- /dev/null
+++ b/herbstluftwm/.local/bin/run_list.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env sh
+set -eu #o pipefail
+
+cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
+if [ -d "$cachedir" ]; then
+ cache=$cachedir/run_list
+else
+ cache=$HOME/.run_list
+fi
+
+#if [ ! -f "$cache" ] || [ $(find "$cache" -mmin +180) = "$cache" ]; then
+IFS=':'
+if [ ! -f "$cache" ] || [ $(find $PATH -prune -cnewer "$cache" 2>/dev/null |\
+ head -c1 | wc -c) -eq 1 ]; then
+
+ find -L $PATH -maxdepth 1 -type f -executable -printf "%f\n" 2>/dev/null |\
+ sort -u | tee "$cache"
+else
+ cat "$cache"
+fi
diff --git a/herbstluftwm/.local/bin/scratchpad.sh b/herbstluftwm/.local/bin/scratchpad.sh
index d168ad7..3e550e4 100755
--- a/herbstluftwm/.local/bin/scratchpad.sh
+++ b/herbstluftwm/.local/bin/scratchpad.sh
@@ -18,17 +18,25 @@ hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
scratchpad=(urxvt -title "$tag" -name "scratchpad")
#scratchpad=(xterm -title "$tag" -name "scratchpad")
-#mrect=( $(hc monitor_rect "") )
read -r -a mrect < <(hc monitor_rect "")
-width=${mrect[2]}
-height=${mrect[3]}
+monitor_w=${mrect[2]}
+monitor_h=${mrect[3]}
+monitor_w_offset=${mrect[0]}
+monitor_h_offset=${mrect[1]}
+
+scratchpad_scale_factor=0.75
+
+scratch_w=$(printf "%d" "$(bc -l <<< "$monitor_w * $scratchpad_scale_factor")")
+scratch_h=$(printf "%d" "$(bc -l <<< "$monitor_h * $scratchpad_scale_factor")")
+scratch_w_offset=$(((monitor_w-scratch_w)/2))
+scratch_h_offset=$(((monitor_h-scratch_h)/2))
rect=(
- $((width/2))
- $((height/2))
- $((mrect[0]+(width/4)))
- $((mrect[1]+(height/4)))
+ "$scratch_w"
+ "$scratch_h"
+ $((monitor_w_offset+scratch_w_offset))
+ $((monitor_h_offset+scratch_h_offset))
)
hc add "$tag"
@@ -36,8 +44,8 @@ hc add "$tag"
monitor=scratchpad
exists=false
-if ! hc add_monitor $(printf "%dx%d%+d%+d" "${rect[@]}") \
- "$tag" $monitor 2> /dev/null ; then
+if ! hc add_monitor "$(printf "%dx%d%+d%+d" "${rect[@]}")" \
+ "$tag" "$monitor" 2> /dev/null ; then
exists=true
else
# remember which monitor was focused previously
diff --git a/herbstluftwm/.local/bin/statusbar/polybar_hlwm_workspaces.sh b/herbstluftwm/.local/bin/statusbar/polybar_hlwm_workspaces.sh
new file mode 100755
index 0000000..b7cf5e6
--- /dev/null
+++ b/herbstluftwm/.local/bin/statusbar/polybar_hlwm_workspaces.sh
@@ -0,0 +1,102 @@
+#!/usr/bin/env bash
+
+hc() {
+ "${herbstclient_command[@]:-herbstclient}" "$@"
+}
+
+monitor_bound() {
+ echo "$1" | cut -d' ' -f2
+}
+
+hlwm_id() {
+ while read -r bound; do
+ hc list_monitors | grep "$bound" | sed -e 's/:.*$//g'
+ done <<< "$(monitor_bound "$1")"
+}
+
+this_monitor=$(polybar -m | grep "$MONITOR")
+
+
+monitor=$(hlwm_id "$this_monitor")
+
+get_layout() {
+ currenttag=$(hc tag_status | tr '\t' '\n' | sed -n 's/#//p')
+ focusedtaglayout=$(hc layout "$currenttag" @ | awk '{print $2}' | sed 's/://')
+ case "$focusedtaglayout" in
+ vertical)
+ echo "V" ;;
+ horizontal)
+ echo "H" ;;
+ max)
+ echo "M" ;;
+ grid)
+ echo "G" ;;
+ esac
+}
+
+layout=$(get_layout)
+
+herbstclient --idle "(tag_*|focus_changed|window_title_changed)" 2>/dev/null | {
+
+ while true; do
+ # Read tags into $tags array
+ IFS=$'\t' read -ra tags <<< "$(hc tag_status "$monitor")"
+ {
+ # Read the prefix from each tag
+ for i in "${tags[@]}" ; do
+ case ${i:1} in
+ 'hidden')
+ ;&
+ 'scratchpad')
+ continue
+ ;;
+ esac
+ case ${i:0:1} in
+ '#')
+ echo -n "%{B#9fbc00}%{F#101010}"
+ # Tag in focus on this monitor
+ ;;
+ '%')
+ echo -n "%{B#9ca668}%{F#141414}"
+ # Tag in focus on other monitor
+ ;;
+ '+')
+ echo -n "%{B#9ca668}%{F#141414}"
+ # tag viewed on this monitor
+ ;;
+ '-')
+ echo -n "%{B#9ca668}%{F#141414}"
+ # Tag viewed on other monitor
+ ;;
+ ':')
+ echo -n "%{B#222}%{F#ffffff}"
+ # Tag is not empty
+ ;;
+ '!')
+ echo -n "%{B#ff0675}%{F#141414}"
+ # Tag contains urgent window
+ ;;
+ *)
+ echo -n "%{B#222}%{F#7a7a7a}"
+ ;;
+ esac
+
+ echo "%{A1:herbstclient use ${i:1}:} ${i:1} %{A -u -o F- B-}"
+ done
+
+ echo "%{F-}%{B-}"
+
+ echo "| [$layout]"
+
+ } | tr -d "\n"
+ echo
+ IFS=$'\t' read -ra cmd || break
+
+ case "${cmd[0]}" in
+ focus_changed|window_title_changed|layout_changed)
+ layout=$(get_layout)
+ esac
+ # wait for next event from herbstclient --idle
+ # read -r || break
+ done
+} 2>/dev/null
diff --git a/herbstluftwm/.local/share/config-files/herbstluftwm b/herbstluftwm/.local/share/config-files/herbstluftwm
deleted file mode 120000
index 9e20763..0000000
--- a/herbstluftwm/.local/share/config-files/herbstluftwm
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/herbstluftwm/autostart \ No newline at end of file
diff --git a/herbstluftwm/.local/share/config-files/herbstluftwm-panel b/herbstluftwm/.local/share/config-files/herbstluftwm-panel
deleted file mode 120000
index 439ccbe..0000000
--- a/herbstluftwm/.local/share/config-files/herbstluftwm-panel
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/herbstluftwm/panel.sh \ No newline at end of file
diff --git a/polybar/.local/bin/rofi_goto_workspace b/i3wm/.local/bin/rofi_goto_workspace
index 35e8762..35e8762 100755
--- a/polybar/.local/bin/rofi_goto_workspace
+++ b/i3wm/.local/bin/rofi_goto_workspace
diff --git a/polybar/.local/bin/rofi_moveto_workspace b/i3wm/.local/bin/rofi_moveto_workspace
index 9cc0b9d..9cc0b9d 100755
--- a/polybar/.local/bin/rofi_moveto_workspace
+++ b/i3wm/.local/bin/rofi_moveto_workspace
diff --git a/polybar/.local/bin/rofi_workspace_prompt b/i3wm/.local/bin/rofi_workspace_prompt
index f59d1fa..f59d1fa 100755
--- a/polybar/.local/bin/rofi_workspace_prompt
+++ b/i3wm/.local/bin/rofi_workspace_prompt
diff --git a/i3wm/.local/share/config-files/i3 b/i3wm/.local/share/config-files/i3
deleted file mode 120000
index 97ca8a9..0000000
--- a/i3wm/.local/share/config-files/i3
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/i3/config \ No newline at end of file
diff --git a/meta/herbstluftwm_deps b/meta/herbstluftwm_deps
index 1cc5107..544f110 100644
--- a/meta/herbstluftwm_deps
+++ b/meta/herbstluftwm_deps
@@ -1,5 +1,5 @@
dmenu
-dzen2
-herbstluftwm
+dzen2-xft-xpm-xinerama-git
+herbstluftwm-git
xsecurelock
xss-lock
diff --git a/nvim/.config/nvim/init.vim b/nvim/.config/nvim/init.vim
index 7f66a49..eedad06 100644
--- a/nvim/.config/nvim/init.vim
+++ b/nvim/.config/nvim/init.vim
@@ -6,13 +6,17 @@ Plug 'tpope/vim-vinegar'
Plug 'tpope/vim-eunuch'
Plug 'tpope/vim-surround'
-Plug 'morhetz/gruvbox'
+"Plug 'morhetz/gruvbox'
+Plug 'gruvbox-community/gruvbox'
Plug 'itchyny/lightline.vim'
+Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'junegunn/vim-easy-align'
+Plug 'stsewd/fzf-checkout.vim'
+
Plug 'kien/rainbow_parentheses.vim'
Plug 'liuchengxu/vim-which-key'
@@ -92,6 +96,7 @@ set timeoutlen=500
"keys
map <leader>ff :Files<CR>
map <leader>fp :CtrlP<CR>
+nnoremap <leader>gc :GCheckout<CR>
" Disable Arrow keys in Normal mode
map <up> <nop>
diff --git a/nvim/.local/share/config-files/nvim b/nvim/.local/share/config-files/nvim
deleted file mode 120000
index 5edb2c0..0000000
--- a/nvim/.local/share/config-files/nvim
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/nvim/init.vim \ No newline at end of file
diff --git a/picom/.config/picom/picom.conf b/picom/.config/picom/picom.conf
new file mode 100644
index 0000000..b9898bc
--- /dev/null
+++ b/picom/.config/picom/picom.conf
@@ -0,0 +1,396 @@
+#################################
+# Shadows #
+#################################
+
+
+# Enabled client-side shadows on windows. Note desktop windows
+# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
+# unless explicitly requested using the wintypes option.
+#
+# shadow = false
+shadow = true;
+
+# The blur radius for shadows, in pixels. (defaults to 12)
+# shadow-radius = 12
+shadow-radius = 7;
+
+# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
+# shadow-opacity = .75
+
+# The left offset for shadows, in pixels. (defaults to -15)
+# shadow-offset-x = -15
+shadow-offset-x = -7;
+
+# The top offset for shadows, in pixels. (defaults to -15)
+# shadow-offset-y = -15
+shadow-offset-y = -7;
+
+# Red color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-red = 0
+
+# Green color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-green = 0
+
+# Blue color value of shadow (0.0 - 1.0, defaults to 0).
+# shadow-blue = 0
+
+# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
+# shadow-color = "#000000"
+
+# Specify a list of conditions of windows that should have no shadow.
+#
+# examples:
+# shadow-exclude = "n:e:Notification";
+#
+# shadow-exclude = []
+shadow-exclude = [
+ "name = 'Notification'",
+ "class_g = 'Conky'",
+ "class_g ?= 'Notify-osd'",
+ "class_g = 'Cairo-clock'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+# Specify a X geometry that describes the region in which shadow should not
+# be painted in, such as a dock window region. Use
+# shadow-exclude-reg = "x10+0+0"
+# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
+#
+# shadow-exclude-reg = ""
+
+# Crop shadow of a window fully on a particular Xinerama screen to the screen.
+# xinerama-shadow-crop = false
+
+
+#################################
+# Fading #
+#################################
+
+
+# Fade windows in/out when opening/closing and when opacity changes,
+# unless no-fading-openclose is used.
+# fading = false
+fading = true;
+
+# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
+# fade-in-step = 0.028
+fade-in-step = 0.03;
+
+# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
+# fade-out-step = 0.03
+fade-out-step = 0.03;
+
+# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
+# fade-delta = 10
+
+# Specify a list of conditions of windows that should not be faded.
+# fade-exclude = []
+
+# Do not fade on window open/close.
+# no-fading-openclose = false
+
+# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
+# no-fading-destroyed-argb = false
+
+
+#################################
+# Transparency / Opacity #
+#################################
+
+
+# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
+# inactive-opacity = 1
+inactive-opacity = 1;
+
+# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
+# frame-opacity = 1.0
+frame-opacity = 0.7;
+
+# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
+# inactive-opacity-override = true
+inactive-opacity-override = false;
+
+# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
+# active-opacity = 1.0
+
+# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
+# inactive-dim = 0.0
+
+# Specify a list of conditions of windows that should always be considered focused.
+# focus-exclude = []
+focus-exclude = [ "class_g = 'Cairo-clock'" ];
+
+# Use fixed inactive dim value, instead of adjusting according to window opacity.
+# inactive-dim-fixed = 1.0
+
+# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
+# like `50:name *= "Firefox"`. picom-trans is recommended over this.
+# Note we don't make any guarantee about possible conflicts with other
+# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
+# example:
+# opacity-rule = [ "80:class_g = 'URxvt'" ];
+#
+# opacity-rule = []
+
+
+#################################
+# Background-Blurring #
+#################################
+
+
+# Parameters for background blurring, see the *BLUR* section for more information.
+# blur-method =
+# blur-size = 12
+#
+# blur-deviation = false
+#
+# blur-strength = 5
+
+# Blur background of semi-transparent / ARGB windows.
+# Bad in performance, with driver-dependent behavior.
+# The name of the switch may change without prior notifications.
+#
+# blur-background = false
+
+# Blur background of windows when the window frame is not opaque.
+# Implies:
+# blur-background
+# Bad in performance, with driver-dependent behavior. The name may change.
+#
+# blur-background-frame = false
+
+
+# Use fixed blur strength rather than adjusting according to window opacity.
+# blur-background-fixed = false
+
+
+# Specify the blur convolution kernel, with the following format:
+# example:
+# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
+#
+# blur-kern = ""
+blur-kern = "3x3box";
+
+
+# Exclude conditions for background blur.
+# blur-background-exclude = []
+blur-background-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+#################################
+# General Settings #
+#################################
+
+# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
+# daemon = false
+
+# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
+# `xrender` is the default one.
+#
+# backend = "glx"
+backend = "xrender";
+
+# Enable/disable VSync.
+# vsync = false
+vsync = true;
+
+# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
+# dbus = false
+
+# Try to detect WM windows (a non-override-redirect window with no
+# child that has 'WM_STATE') and mark them as active.
+#
+# mark-wmwin-focused = false
+mark-wmwin-focused = true;
+
+# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
+# mark-ovredir-focused = false
+mark-ovredir-focused = true;
+
+# Try to detect windows with rounded corners and don't consider them
+# shaped windows. The accuracy is not very high, unfortunately.
+#
+# detect-rounded-corners = false
+detect-rounded-corners = true;
+
+# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
+# not passing '_NET_WM_OPACITY' of client windows to frame windows.
+#
+# detect-client-opacity = false
+detect-client-opacity = true;
+
+# Specify refresh rate of the screen. If not specified or 0, picom will
+# try detecting this with X RandR extension.
+#
+# refresh-rate = 60
+refresh-rate = 0;
+
+# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
+# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
+# provided that the WM supports it.
+#
+# use-ewmh-active-win = false
+
+# Unredirect all windows if a full-screen opaque window is detected,
+# to maximize performance for full-screen windows. Known to cause flickering
+# when redirecting/unredirecting windows.
+#
+# unredir-if-possible = false
+
+# Delay before unredirecting the window, in milliseconds. Defaults to 0.
+# unredir-if-possible-delay = 0
+
+# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
+# unredir-if-possible-exclude = []
+
+# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
+# in the same group focused at the same time.
+#
+# detect-transient = false
+detect-transient = true;
+
+# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
+# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
+# detect-transient is enabled, too.
+#
+# detect-client-leader = false
+detect-client-leader = true;
+
+# Resize damaged region by a specific number of pixels.
+# A positive value enlarges it while a negative one shrinks it.
+# If the value is positive, those additional pixels will not be actually painted
+# to screen, only used in blur calculation, and such. (Due to technical limitations,
+# with use-damage, those pixels will still be incorrectly painted to screen.)
+# Primarily used to fix the line corruption issues of blur,
+# in which case you should use the blur radius value here
+# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
+# with a 5x5 one you use `--resize-damage 2`, and so on).
+# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
+#
+# resize-damage = 1
+
+# Specify a list of conditions of windows that should be painted with inverted color.
+# Resource-hogging, and is not well tested.
+#
+# invert-color-include = []
+
+# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
+# Might cause incorrect opacity when rendering transparent content (but never
+# practically happened) and may not work with blur-background.
+# My tests show a 15% performance boost. Recommended.
+#
+# glx-no-stencil = false
+
+# GLX backend: Avoid rebinding pixmap on window damage.
+# Probably could improve performance on rapid window content changes,
+# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
+# Recommended if it works.
+#
+# glx-no-rebind-pixmap = false
+
+# Disable the use of damage information.
+# This cause the whole screen to be redrawn everytime, instead of the part of the screen
+# has actually changed. Potentially degrades the performance, but might fix some artifacts.
+# The opposing option is use-damage
+#
+# no-use-damage = false
+use-damage = true;
+
+# Use X Sync fence to sync clients' draw calls, to make sure all draw
+# calls are finished before picom starts drawing. Needed on nvidia-drivers
+# with GLX backend for some users.
+#
+# xrender-sync-fence = false
+
+# GLX backend: Use specified GLSL fragment shader for rendering window contents.
+# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
+# in the source tree for examples.
+#
+# glx-fshader-win = ""
+
+# Force all windows to be painted with blending. Useful if you
+# have a glx-fshader-win that could turn opaque pixels transparent.
+#
+# force-win-blend = false
+
+# Do not use EWMH to detect fullscreen windows.
+# Reverts to checking if a window is fullscreen based only on its size and coordinates.
+#
+# no-ewmh-fullscreen = false
+
+# Dimming bright windows so their brightness doesn't exceed this set value.
+# Brightness of a window is estimated by averaging all pixels in the window,
+# so this could comes with a performance hit.
+# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
+#
+# max-brightness = 1.0
+
+# Make transparent windows clip other windows like non-transparent windows do,
+# instead of blending on top of them.
+#
+# transparent-clipping = false
+
+# Set the log level. Possible values are:
+# "trace", "debug", "info", "warn", "error"
+# in increasing level of importance. Case doesn't matter.
+# If using the "TRACE" log level, it's better to log into a file
+# using *--log-file*, since it can generate a huge stream of logs.
+#
+# log-level = "debug"
+log-level = "warn";
+
+# Set the log file.
+# If *--log-file* is never specified, logs will be written to stderr.
+# Otherwise, logs will to written to the given file, though some of the early
+# logs might still be written to the stderr.
+# When setting this option from the config file, it is recommended to use an absolute path.
+#
+# log-file = '/path/to/your/log/file'
+
+# Show all X errors (for debugging)
+# show-all-xerrors = false
+
+# Write process ID to a file.
+# write-pid-path = '/path/to/your/log/file'
+
+# Window type settings
+#
+# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
+# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
+# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
+# "tooltip", "notification", "combo", and "dnd".
+#
+# Following per window-type options are available: ::
+#
+# fade, shadow:::
+# Controls window-type-specific shadow and fade settings.
+#
+# opacity:::
+# Controls default opacity of the window type.
+#
+# focus:::
+# Controls whether the window of this type is to be always considered focused.
+# (By default, all window types except "normal" and "dialog" has this on.)
+#
+# full-shadow:::
+# Controls whether shadow is drawn under the parts of the window that you
+# normally won't be able to see. Useful when the window has parts of it
+# transparent, and you want shadows in those areas.
+#
+# redir-ignore:::
+# Controls whether this type of windows should cause screen to become
+# redirected again after been unredirected. If you have unredir-if-possible
+# set, and doesn't want certain window to cause unnecessary screen redirection,
+# you can set this to `true`.
+#
+wintypes:
+{
+ tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
+ dock = { shadow = false; }
+ dnd = { shadow = false; }
+ popup_menu = { opacity = 1; shadow = false; }
+ dropdown_menu = { opacity = 1; shawod = false; }
+};
diff --git a/picom/.local/share/dotfiles/edit-config.d/picom.conf b/picom/.local/share/dotfiles/edit-config.d/picom.conf
new file mode 120000
index 0000000..b2cbc07
--- /dev/null
+++ b/picom/.local/share/dotfiles/edit-config.d/picom.conf
@@ -0,0 +1 @@
+../../../../.config/picom/picom.conf \ No newline at end of file
diff --git a/polybar/.config/polybar/config b/polybar/.config/polybar/config
index 4628468..050b0a5 100644
--- a/polybar/.config/polybar/config
+++ b/polybar/.config/polybar/config
@@ -64,13 +64,6 @@ modules-left =
modules-center =
modules-right =
-tray-position = right
-tray-padding = 2
-;tray-transparent = true
-;tray-background = #0063ff
-tray-scale = 1
-tray-detached = false
-
;wm-restack = bspwm
;wm-restack = i3
@@ -88,17 +81,14 @@ double-click-right =
cursor-click = pointer
cursor-scroll = ns-resize
-[bar/topbar-i3]
+[bar/topbar-base]
inherit = bar/base
-wm-restack = i3
-override-redirect = false
-
click-left =
click-middle =
click-right =
-scroll-up = i3wm-wsnext
-scroll-down = i3wm-wsprev
+scroll-up =
+scroll-down =
double-click-left =
double-click-middle =
double-click-right =
@@ -106,53 +96,53 @@ double-click-right =
cursor-click = pointer
cursor-scroll = ns-resize
+tray-position = right
+tray-padding = 2
+;tray-transparent = true
+;tray-background = #0063ff
+tray-scale = 1
+tray-detached = false
+
+
modules-left = hostname xwindow
modules-center =
modules-right = filesystem backlight pulseaudio xkeyboard memory cpu wlan eth ethvpn battery temperature
+[bar/topbar-i3]
+inherit = bar/topbar-base
+
+wm-restack = i3
+override-redirect = false
+scroll-up = i3wm-wsnext
+scroll-down = i3wm-wsprev
+
[bar/topbar-bspwm]
-inherit = bar/base
+inherit = bar/topbar-base
wm-restack = bspwm
override-redirect = false
-
-click-left =
-click-middle =
-click-right =
scroll-up = bspwm-desknext
scroll-down = bspwm-deskprev
-double-click-left =
-double-click-middle =
-double-click-right =
-cursor-click = pointer
-cursor-scroll = ns-resize
-
-modules-left = hostname xwindow
-modules-center =
-modules-right = filesystem backlight pulseaudio xkeyboard memory cpu wlan eth ethvpn battery temperature
-
-[bar/topbar-herbstluftwm]
-inherit = bar/base
+[bar/topbar-hlwm]
+inherit = bar/topbar-base
+offset-y = ${env:OFFSET_Y:0}
scroll-up = herbstclient use_index +1
scroll-down = herbstclient use_index -1
-modules-left = hostname xwindow
-modules-right = filesystem backlight pulseaudio xkeyboard memory cpu wlan eth ethvpn battery temperature
-[bar/topbar2-i3]
+[bar/topbar2-base]
inherit = bar/base
offset-y = 0
fixed-center = true
-wm-restack = i3
override-redirect = false
click-left =
click-middle =
click-right =
-scroll-up = i3wm-wsnext
-scroll-down = i3wm-wsprev
+scroll-up =
+scroll-down =
double-click-left =
double-click-middle =
double-click-right =
@@ -160,40 +150,50 @@ double-click-right =
cursor-click = pointer
cursor-scroll = ns-resize
-modules-left = i3
+modules-left =
modules-center = spotify
modules-right = date
+[bar/topbar2-i3]
+inherit = bar/topbar2-base
+
+wm-restack = i3
+scroll-up = i3wm-wsnext
+scroll-down = i3wm-wsprev
+modules-left = i3
+
[bar/topbar2-bspwm]
-inherit = bar/base
+inherit = bar/topbar2-base
offset-y = 40
-fixed-center = true
+override-redirect = false
wm-restack = bspwm
-override-redirect = false
-click-left =
-click-middle =
-click-right =
scroll-up = bspwm-desknext
scroll-down = bspwm-deskprev
-double-click-left =
-double-click-middle =
-double-click-right =
-
-cursor-click = pointer
-cursor-scroll = ns-resize
modules-left = bspwm
-modules-center = spotify
-modules-right = date
+
+[bar/topbar2-hlwm]
+inherit = bar/topbar2-base
+offset-y = ${env:OFFSET_Y:40}
+override-redirect = false
+
+scroll-up = herbstclient use_index +1
+scroll-down = herbstclient use_index -1
+
+modules-left = hlwm
;=============================================================================
; modules
;=============================================================================
-[module/herbstluftwm]
+[module/hlwm]
type = custom/script
+exec = ~/.local/bin/statusbar/polybar_hlwm_workspaces.sh
+tail = true
+scroll-up = herbstclient use_index -1 --skip-visible &
+scroll-down = herbstclient use_index +1 --skip-visible &
[module/hostname]
type = custom/script
@@ -212,11 +212,11 @@ tail = true
format = <label>
format-foreground = ${colors.foreground-alt}
format-underline = ${colors.primary}
-click-right = playerctl play-pause
-click-left = playerctl play-pause
-click-middle = playerctl next
-scroll-up = playerctl next
-scroll-down = playerctl previous
+click-right = playerctl --player=spotify play-pause
+click-left = playerctl --player=spotify play-pause
+click-middle = playerctl --player=spotify next
+scroll-up = playerctl --player=spotify next
+scroll-down = playerctl --player=spotify previous
label-maxlen = 120
label-ellipsis = true
@@ -393,7 +393,8 @@ interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.foreground}
format-underline = #4bffdc
-label = %percentage_used%%
+label = %percentage_used%% free: %mb_free% (swap: %mb_swap_used%)
+;label = %percentage_used%% swap: %mb_swap_used%
[module/wlan]
type = internal/network
@@ -404,7 +405,8 @@ accumulate-stats = true
format-connected-prefix = " "
format-connected = <label-connected>
format-connected-underline = #9f78e1
-label-connected = %essid% %local_ip% ↓%downspeed% ↑%upspeed% (%signal%)
+label-connected = %local_ip% ↓%downspeed% ↑%upspeed% (%signal%)
+;label-connected = %essid% %local_ip% ↓%downspeed% ↑%upspeed% (%signal%)
format-disconnected =
;format-disconnected = <label-disconnected>
@@ -527,7 +529,7 @@ type = internal/battery
time-format = %H:%M
battery = BAT0
adapter = AC
-full-at = 89
+full-at = 95
format-charging = <animation-charging> <label-charging>
format-charging-underline = #ffb52a
diff --git a/polybar/.config/polybar/launch.sh b/polybar/.config/polybar/launch.sh
index fe2791e..b74f9e8 100755
--- a/polybar/.config/polybar/launch.sh
+++ b/polybar/.config/polybar/launch.sh
@@ -13,14 +13,14 @@ primary_monitor=$(polybar -m | grep '(primary)' |
all_monitors=$(polybar -m |
sed -e 's/:.*$//g')
-WM=${1:+"-$1"}
+wm=${1:+"-$1"}
# Launch bar1 and bar2
-MONITOR=${primary_monitor} polybar "topbar${WM}" &
+MONITOR=${primary_monitor} polybar "topbar${wm}" &
sleep 1
while read -r monitor; do
echo "launching bar on $monitor"
- MONITOR=$monitor polybar "topbar2${WM}" &
+ MONITOR=$monitor polybar "topbar2${wm}" &
sleep 1
done <<< "$all_monitors"
diff --git a/polybar/.local/share/config-files/polybar b/polybar/.local/share/config-files/polybar
deleted file mode 120000
index 87fad9e..0000000
--- a/polybar/.local/share/config-files/polybar
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/polybar/config \ No newline at end of file
diff --git a/vim/.local/share/config-files/vim b/vim/.local/share/config-files/vim
deleted file mode 120000
index 639f1ed..0000000
--- a/vim/.local/share/config-files/vim
+++ /dev/null
@@ -1 +0,0 @@
-../../../.vimrc \ No newline at end of file
diff --git a/x/.config/x/Xresources b/x/.config/x/Xresources
index 00fef46..1a3ddee 100755
--- a/x/.config/x/Xresources
+++ b/x/.config/x/Xresources
@@ -22,7 +22,7 @@ Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb
-URxvt.font: xft:FiraCode Nerd Font Mono:size=8
+URxvt.font: xft:FiraCode Nerd Font Mono:size=10
!URxvt*transparent: true
!URxvt*shading: 50
diff --git a/x/.local/share/config-files/xinit b/x/.local/share/config-files/xinit
deleted file mode 120000
index 82ae9c7..0000000
--- a/x/.local/share/config-files/xinit
+++ /dev/null
@@ -1 +0,0 @@
-../../../.xinitrc \ No newline at end of file
diff --git a/x/.local/share/config-files/xprofile b/x/.local/share/config-files/xprofile
deleted file mode 120000
index 38d3742..0000000
--- a/x/.local/share/config-files/xprofile
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/X11/xprofile \ No newline at end of file
diff --git a/x/.local/share/config-files/xresources b/x/.local/share/config-files/xresources
deleted file mode 120000
index eef1e02..0000000
--- a/x/.local/share/config-files/xresources
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/X11/Xresources \ No newline at end of file
diff --git a/zsh/.config/zsh/.gitignore b/zsh/.config/zsh/.gitignore
new file mode 100644
index 0000000..dea2d4f
--- /dev/null
+++ b/zsh/.config/zsh/.gitignore
@@ -0,0 +1 @@
+.zcompdump
diff --git a/zsh/.config/zsh/.zshrc b/zsh/.config/zsh/.zshrc
index 1bea1e6..91c966c 100644
--- a/zsh/.config/zsh/.zshrc
+++ b/zsh/.config/zsh/.zshrc
@@ -45,8 +45,7 @@ compinit -d $XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION
_comp_options+=(globdots)
autoload -U +X bashcompinit && bashcompinit
-
-source /usr/share/bash-completion/bash_completion 2> \dev\null
+#source /usr/share/bash-completion/bash_completion 2> /dev/null
# Keys
bindkey -e
diff --git a/zsh/.local/share/config-files/zprofile b/zsh/.local/share/config-files/zprofile
deleted file mode 120000
index f566496..0000000
--- a/zsh/.local/share/config-files/zprofile
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/zsh/.zprofile \ No newline at end of file
diff --git a/zsh/.local/share/config-files/zshenv b/zsh/.local/share/config-files/zshenv
deleted file mode 120000
index fcf44e5..0000000
--- a/zsh/.local/share/config-files/zshenv
+++ /dev/null
@@ -1 +0,0 @@
-../../../.zshenv \ No newline at end of file
diff --git a/zsh/.local/share/config-files/zshrc b/zsh/.local/share/config-files/zshrc
deleted file mode 120000
index 899e05e..0000000
--- a/zsh/.local/share/config-files/zshrc
+++ /dev/null
@@ -1 +0,0 @@
-../../../.config/zsh/.zshrc \ No newline at end of file
diff --git a/zsh/.local/share/zsh/functions/_deno b/zsh/.local/share/zsh/functions/_deno
index 7a6a7b4..1d820f4 100644
--- a/zsh/.local/share/zsh/functions/_deno
+++ b/zsh/.local/share/zsh/functions/_deno
@@ -263,6 +263,7 @@ _arguments "${_arguments_options[@]}" \
'--no-check[Skip type checking modules]' \
'--no-remote[Do not resolve remote modules]' \
'--cached-only[Require that remote dependencies are already cached]' \
+'--watch[Watch for file changes and restart process automatically]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
@@ -304,6 +305,7 @@ _arguments "${_arguments_options[@]}" \
'--cached-only[Require that remote dependencies are already cached]' \
'--failfast[Stop on first error]' \
'--allow-none[Don'\''t return error code if no test files are found]' \
+'(--inspect --inspect-brk)--coverage[Collect coverage information]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \