From e5209aad576fe44d3965fcb94d6709348b0a93bf Mon Sep 17 00:00:00 2001 From: Peter Son Struschka Date: Sun, 11 Oct 2020 12:15:08 +0800 Subject: all: overhaul all: Remove old symlinks herbstluftwm: use polybar instead of dzen2 polybar: update config doom-emacs: update repository --- .gitattributes | 1 + Makefile | 2 +- basics/.config/rofi/config.rasi | 4 + basics/.local/share/config-files/alacritty | 1 - basics/.local/share/config-files/dotfiles | 1 - basics/.local/share/config-files/dunst | 1 - basics/.local/share/config-files/kitty | 1 - basics/.local/share/config-files/ranger | 1 - basics/.local/share/config-files/rofi | 1 - bspwm/.local/share/config-files/bspwm | 1 - bspwm/.local/share/config-files/sxhkd | 1 - doom-emacs/.config/doom/config.el | 37 +- doom-emacs/.config/doom/config.org | 51 ++- doom-emacs/.config/doom/custom.el | 23 ++ doom-emacs/.config/doom/init.el | 48 +-- doom-emacs/.config/doom/packages.el | 4 + doom-emacs/.emacs.d | 2 +- .../.local/share/config-files/doom-emacs_config | 1 - .../.local/share/config-files/doom-emacs_init | 1 - git/.config/git/gitk | 63 ++++ herbstluftwm/.config/herbstluftwm/autostart | 112 +++--- herbstluftwm/.config/herbstluftwm/bring_sticky.sh | 29 ++ .../.config/herbstluftwm/herbstcommander.sh | 88 +++++ herbstluftwm/.config/herbstluftwm/lasttag.sh | 35 ++ herbstluftwm/.config/herbstluftwm/panel.sh | 4 +- herbstluftwm/.config/herbstluftwm/polybar.sh | 58 +++ herbstluftwm/.config/herbstluftwm/rules | 49 +++ herbstluftwm/.config/herbstluftwm/windowmenu.sh | 50 +++ herbstluftwm/.local/bin/dmenu_run_hlwm | 45 +++ herbstluftwm/.local/bin/hlwm_goto_tag | 7 + herbstluftwm/.local/bin/hlwm_moveto_tag | 7 + herbstluftwm/.local/bin/hlwm_run.sh | 12 + herbstluftwm/.local/bin/hlwm_select_tag | 10 + herbstluftwm/.local/bin/restartpanels.sh | 27 ++ herbstluftwm/.local/bin/run_list.sh | 20 ++ herbstluftwm/.local/bin/scratchpad.sh | 26 +- .../bin/statusbar/polybar_hlwm_workspaces.sh | 102 ++++++ .../.local/share/config-files/herbstluftwm | 1 - .../.local/share/config-files/herbstluftwm-panel | 1 - i3wm/.local/bin/rofi_goto_workspace | 4 + i3wm/.local/bin/rofi_moveto_workspace | 4 + i3wm/.local/bin/rofi_workspace_prompt | 3 + i3wm/.local/share/config-files/i3 | 1 - meta/herbstluftwm_deps | 4 +- nvim/.config/nvim/init.vim | 7 +- nvim/.local/share/config-files/nvim | 1 - picom/.config/picom/picom.conf | 396 +++++++++++++++++++++ .../.local/share/dotfiles/edit-config.d/picom.conf | 1 + polybar/.config/polybar/config | 122 +++---- polybar/.config/polybar/launch.sh | 6 +- polybar/.local/bin/rofi_goto_workspace | 4 - polybar/.local/bin/rofi_moveto_workspace | 4 - polybar/.local/bin/rofi_workspace_prompt | 3 - polybar/.local/share/config-files/polybar | 1 - vim/.local/share/config-files/vim | 1 - x/.config/x/Xresources | 2 +- x/.local/share/config-files/xinit | 1 - x/.local/share/config-files/xprofile | 1 - x/.local/share/config-files/xresources | 1 - zsh/.config/zsh/.gitignore | 1 + zsh/.config/zsh/.zshrc | 3 +- zsh/.local/share/config-files/zprofile | 1 - zsh/.local/share/config-files/zshenv | 1 - zsh/.local/share/config-files/zshrc | 1 - zsh/.local/share/zsh/functions/_deno | 2 + 65 files changed, 1304 insertions(+), 200 deletions(-) create mode 100644 .gitattributes create mode 100644 basics/.config/rofi/config.rasi delete mode 120000 basics/.local/share/config-files/alacritty delete mode 120000 basics/.local/share/config-files/dotfiles delete mode 120000 basics/.local/share/config-files/dunst delete mode 120000 basics/.local/share/config-files/kitty delete mode 120000 basics/.local/share/config-files/ranger delete mode 120000 basics/.local/share/config-files/rofi delete mode 120000 bspwm/.local/share/config-files/bspwm delete mode 120000 bspwm/.local/share/config-files/sxhkd create mode 100644 doom-emacs/.config/doom/custom.el delete mode 120000 doom-emacs/.local/share/config-files/doom-emacs_config delete mode 120000 doom-emacs/.local/share/config-files/doom-emacs_init create mode 100644 git/.config/git/gitk create mode 100755 herbstluftwm/.config/herbstluftwm/bring_sticky.sh create mode 100755 herbstluftwm/.config/herbstluftwm/herbstcommander.sh create mode 100755 herbstluftwm/.config/herbstluftwm/lasttag.sh create mode 100755 herbstluftwm/.config/herbstluftwm/polybar.sh create mode 100755 herbstluftwm/.config/herbstluftwm/rules create mode 100755 herbstluftwm/.config/herbstluftwm/windowmenu.sh create mode 100755 herbstluftwm/.local/bin/dmenu_run_hlwm create mode 100755 herbstluftwm/.local/bin/hlwm_goto_tag create mode 100755 herbstluftwm/.local/bin/hlwm_moveto_tag create mode 100755 herbstluftwm/.local/bin/hlwm_run.sh create mode 100755 herbstluftwm/.local/bin/hlwm_select_tag create mode 100755 herbstluftwm/.local/bin/restartpanels.sh create mode 100755 herbstluftwm/.local/bin/run_list.sh create mode 100755 herbstluftwm/.local/bin/statusbar/polybar_hlwm_workspaces.sh delete mode 120000 herbstluftwm/.local/share/config-files/herbstluftwm delete mode 120000 herbstluftwm/.local/share/config-files/herbstluftwm-panel create mode 100755 i3wm/.local/bin/rofi_goto_workspace create mode 100755 i3wm/.local/bin/rofi_moveto_workspace create mode 100755 i3wm/.local/bin/rofi_workspace_prompt delete mode 120000 i3wm/.local/share/config-files/i3 delete mode 120000 nvim/.local/share/config-files/nvim create mode 100644 picom/.config/picom/picom.conf create mode 120000 picom/.local/share/dotfiles/edit-config.d/picom.conf delete mode 100755 polybar/.local/bin/rofi_goto_workspace delete mode 100755 polybar/.local/bin/rofi_moveto_workspace delete mode 100755 polybar/.local/bin/rofi_workspace_prompt delete mode 120000 polybar/.local/share/config-files/polybar delete mode 120000 vim/.local/share/config-files/vim delete mode 120000 x/.local/share/config-files/xinit delete mode 120000 x/.local/share/config-files/xprofile delete mode 120000 x/.local/share/config-files/xresources create mode 100644 zsh/.config/zsh/.gitignore delete mode 120000 zsh/.local/share/config-files/zprofile delete mode 120000 zsh/.local/share/config-files/zshenv delete mode 120000 zsh/.local/share/config-files/zshrc 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 index b3077c9..3e2c98a 160000 --- a/doom-emacs/.emacs.d +++ b/doom-emacs/.emacs.d @@ -1 +1 @@ -Subproject commit b3077c96258cd8569fb1523251b5823199e2433a +Subproject commit 3e2c98a0a3e02237da952dac78d265dc9503f07f 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 + +# 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) = "", "" +# WM_NAME(STRING) = "" +# _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//&/&} +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/i3wm/.local/bin/rofi_goto_workspace b/i3wm/.local/bin/rofi_goto_workspace new file mode 100755 index 0000000..35e8762 --- /dev/null +++ b/i3wm/.local/bin/rofi_goto_workspace @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +NAME=`rofi_workspace_prompt` +i3-msg workspace $NAME diff --git a/i3wm/.local/bin/rofi_moveto_workspace b/i3wm/.local/bin/rofi_moveto_workspace new file mode 100755 index 0000000..9cc0b9d --- /dev/null +++ b/i3wm/.local/bin/rofi_moveto_workspace @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +NAME=`rofi_workspace_prompt` +i3-msg move container to workspace $NAME diff --git a/i3wm/.local/bin/rofi_workspace_prompt b/i3wm/.local/bin/rofi_workspace_prompt new file mode 100755 index 0000000..f59d1fa --- /dev/null +++ b/i3wm/.local/bin/rofi_workspace_prompt @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +echo `i3-msg -t get_workspaces | jq '.[].name' | sed 's/\"//g' | rofi -dmenu` 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/bin/rofi_goto_workspace b/polybar/.local/bin/rofi_goto_workspace deleted file mode 100755 index 35e8762..0000000 --- a/polybar/.local/bin/rofi_goto_workspace +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - -NAME=`rofi_workspace_prompt` -i3-msg workspace $NAME diff --git a/polybar/.local/bin/rofi_moveto_workspace b/polybar/.local/bin/rofi_moveto_workspace deleted file mode 100755 index 9cc0b9d..0000000 --- a/polybar/.local/bin/rofi_moveto_workspace +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - -NAME=`rofi_workspace_prompt` -i3-msg move container to workspace $NAME diff --git a/polybar/.local/bin/rofi_workspace_prompt b/polybar/.local/bin/rofi_workspace_prompt deleted file mode 100755 index f59d1fa..0000000 --- a/polybar/.local/bin/rofi_workspace_prompt +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -echo `i3-msg -t get_workspaces | jq '.[].name' | sed 's/\"//g' | rofi -dmenu` 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]' \ -- cgit v1.2.3