[cleanup] remove unused config
This commit is contained in:
41
README.md
41
README.md
@@ -4,48 +4,23 @@ dots for my laptop 「itomori」, managed with `gnu stow`.
|
|||||||
|
|
||||||
Files can be `stow`'ed and un'`stow`'ed with `stow.sh`.
|
Files can be `stow`'ed and un'`stow`'ed with `stow.sh`.
|
||||||
It will link all dotfiles to their correct place.
|
It will link all dotfiles to their correct place.
|
||||||
|
Un-`stow` with `./stow.sh -D`.
|
||||||
## fonts
|
|
||||||
SFMono is a patched Nerdfont.
|
|
||||||
|
|
||||||
## ssh-agent(1)
|
|
||||||
Move `ssh-agent.service` to `~/.config/systemd/user/ssh-agent.service`
|
|
||||||
and start it appropriately.
|
|
||||||
Only used in sway.
|
|
||||||
|
|
||||||
## deps
|
## deps
|
||||||
### for sway
|
|
||||||
+ `waybar`
|
|
||||||
+ `SwayNotificationCenter`
|
|
||||||
+ `wob` (progress bar; audio, brightness)
|
|
||||||
+ `wofi` (program launcher)
|
|
||||||
+ `slurp`, `grim`, `swappy` (screenshot)
|
|
||||||
+ `swaylock-effects` (fancy locker)
|
|
||||||
+ [`wmrctl`](https://git.sr.ht/~brocellous/wlrctl) (advanced window switcher)
|
|
||||||
|
|
||||||
### other
|
|
||||||
+ `fzf` (`zsh`, `nvim`)
|
+ `fzf` (`zsh`, `nvim`)
|
||||||
+ `ripgrep` (`nvim`)
|
+ `ripgrep` (`nvim`)
|
||||||
+ `ripgrep-all` (`zsh`, `wofi`, `sway`)
|
+ `ripgrep-all` (`zsh`)
|
||||||
+ `fd` (rust find; `sway`, `nvim`)
|
+ `fd` (rust find; `nvim`)
|
||||||
+ all `fcitx5` stuff (data, gtk, qt, mozc)
|
|
||||||
|
|
||||||
### theming stuff (sway)
|
|
||||||
+ main bg: #323232
|
|
||||||
+ accent: #93b259
|
|
||||||
+ icons: `Flat-Remix-Green-Light-darkPanel` (from `flat-remix-icon-theme`)
|
|
||||||
+ theme: `Flat-Remix-GTK-Green-Light-solid` with adjusted accent
|
|
||||||
+ or `/usr/share/themes/Flat-Remix-Marc`
|
|
||||||
|
|
||||||
## 日本語入力
|
## 日本語入力
|
||||||
|
With `ibus-anthy` under GNOME use:
|
||||||
|
+ `GTK_IM_MODULE=ibus`
|
||||||
|
+ `QT_IM_MODULE=ibus`
|
||||||
|
+ `XMODIFIERS=@im=ibus`
|
||||||
|
|
||||||
With `fcitx5` under `sway` use:
|
With `fcitx5` under `sway` use:
|
||||||
+ `GTK_IM_MODULE=fcitx5`
|
+ `GTK_IM_MODULE=fcitx5`
|
||||||
+ `QT_IM_MODULE=fcitx5`
|
+ `QT_IM_MODULE=fcitx5`
|
||||||
+ `SDL_IM_MODULE=fcitx5`
|
+ `SDL_IM_MODULE=fcitx5`
|
||||||
+ `GLFW_IM_MODULE=ibus`
|
+ `GLFW_IM_MODULE=ibus`
|
||||||
+ `XMODIFIERS="@im=fcitx5"`
|
+ `XMODIFIERS="@im=fcitx5"`
|
||||||
|
|
||||||
With `ibus-anthy` under GNOME use:
|
|
||||||
+ `GTK_IM_MODULE=ibus`
|
|
||||||
+ `QT_IM_MODULE=ibus`
|
|
||||||
+ `XMODIFIERS=@im=ibus`
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ font:
|
|||||||
family: SFMono Nerd Font
|
family: SFMono Nerd Font
|
||||||
style: Regular
|
style: Regular
|
||||||
|
|
||||||
size: 11.0
|
size: 13.0
|
||||||
|
|
||||||
draw_bold_text_with_bright_colors: false
|
draw_bold_text_with_bright_colors: false
|
||||||
|
|
||||||
|
|||||||
@@ -1,858 +0,0 @@
|
|||||||
#+TITLE:emacs configuration
|
|
||||||
#+AUTHOR: Marco Thomas
|
|
||||||
#+PROPERTY: header-args :tangle "~/.emacs.d/init.el"
|
|
||||||
|
|
||||||
* Meta
|
|
||||||
** init.el vs init.org
|
|
||||||
All changes to the configuration should be done in =init.org=, *not* in
|
|
||||||
=init.el=.
|
|
||||||
|
|
||||||
This is what the initial =init.el= should look like.
|
|
||||||
#+BEGIN_SRC emacs-lisp :tangle no
|
|
||||||
(require 'org)
|
|
||||||
(find-file (concat (getenv "HOME") "/.dots/files/emacs/init.org"))
|
|
||||||
(org-babel-tangle)
|
|
||||||
(load-file (concat (getenv "HOME") "/.emacs.d/init.el"))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
|
||||||
** Startup
|
|
||||||
=lexical-binding= can improve speed.
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
;;; -*- lexical-binding: t -*-
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
|
||||||
** Tangle
|
|
||||||
The =init.el= should (after the first run) mirror the source blocks in
|
|
||||||
the =init.org=. We can use =C-c C-v t= to run =org-babel-tangle=, which
|
|
||||||
extracts the code blocks from the current file into a source-specific
|
|
||||||
file (in this case a =.el=-file).
|
|
||||||
|
|
||||||
To avoid doing this each time a change is made we can add a function to
|
|
||||||
the =after-save-hook= ensuring to always tangle and byte-compile the
|
|
||||||
=org=-document after changes.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(defun tangle-init ()
|
|
||||||
(when (equal (buffer-file-name)
|
|
||||||
(expand-file-name (concat (getenv "HOME") "/.dots/files/emacs/init.org")))
|
|
||||||
;; Avoid running hooks when tangling.
|
|
||||||
(let ((prog-mode-hook nil))
|
|
||||||
(org-babel-tangle))))
|
|
||||||
|
|
||||||
(add-hook 'after-save-hook 'tangle-init)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
|
||||||
** Performance for start-up
|
|
||||||
A common optimization is to temporarily disable garbage collection during
|
|
||||||
initialization. Here, we set the =gc-cons-threshold= to a ridiculously large
|
|
||||||
number, and restore the default value after initialization.
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq gc-cons-threshold most-positive-fixnum)
|
|
||||||
(add-hook 'emacs-startup-hook
|
|
||||||
(lambda ()
|
|
||||||
(setq gc-cons-threshold (* 32 1024 1024))))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
|
||||||
* Configuration
|
|
||||||
** Performance
|
|
||||||
*** lsp-mode
|
|
||||||
Some optimization for =lsp-mode=
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq read-process-output-max (* 3 1024 1024))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Scrolling
|
|
||||||
Disable bidirectional text scanning for a modest performance boost. I've set
|
|
||||||
this to =nil= in the past, but the =bidi-display-reordering='s docs say that
|
|
||||||
is an undefined state and suggest this to be just as good:
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq-default bidi-display-reordering 'left-to-right
|
|
||||||
bidi-paragraph-direction 'left-to-right)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Disabling the BPA makes redisplay faster, but might produce incorrect display
|
|
||||||
reordering of bidirectional text with embedded parentheses and other bracket
|
|
||||||
characters whose =paired-bracket= Unicode property is non-nil.
|
|
||||||
Emacs 27+ only.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq bidi-inhibit-bpa t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Reduce rendering/line scan work for Emacs by not rendering cursors or regions
|
|
||||||
in non-focused windows.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq-default cursor-in-non-selected-windows nil)
|
|
||||||
(setq highlight-nonselected-windows nil)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Emacs "updates" its ui more often than it needs to, so slow it down slightly.
|
|
||||||
Default is 0.5.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq idle-update-delay 1.0)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Introduced in Emacs HEAD (b2f8c9f), this inhibits fontification while
|
|
||||||
receiving input, which should help a little with scrolling performance.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq redisplay-skip-fontification-on-input t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** General
|
|
||||||
*** Super general
|
|
||||||
Some defaults, which i forget the reason of using them.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq make-backup-files nil
|
|
||||||
auto-mode-case-fold nil
|
|
||||||
auto-save-default nil
|
|
||||||
inhibit-startup-screen t
|
|
||||||
tramp-default-method "ssh"
|
|
||||||
initial-major-mode 'fundamental-mode
|
|
||||||
initial-scratch-message nil
|
|
||||||
fast-but-imprecise-scrolling t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Short yes/no
|
|
||||||
Answering /yes/ and /no/ to each question from Emacs can be tedious, a
|
|
||||||
single /y/ or /n/ will suffice.
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(fset 'yes-or-no-p 'y-or-n-p)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
*** Quit prompts
|
|
||||||
Make ESC quit prompts.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Soft wrap
|
|
||||||
#+begin_src emacs-lisp :tangle no
|
|
||||||
(global-visual-line-mode t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** straight.el (Packages)
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq straight-check-for-modifications 'live)
|
|
||||||
(defvar bootstrap-version)
|
|
||||||
|
|
||||||
(let ((bootstrap-file
|
|
||||||
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
|
|
||||||
(bootstrap-version 5))
|
|
||||||
(unless (file-exists-p bootstrap-file)
|
|
||||||
(with-current-buffer
|
|
||||||
(url-retrieve-synchronously
|
|
||||||
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
|
|
||||||
'silent 'inhibit-cookies)
|
|
||||||
(goto-char (point-max))
|
|
||||||
(eval-print-last-sexp)))
|
|
||||||
(load bootstrap-file nil 'nomessage))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Inhibit =package.el= from loading, as we don't need it.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq package-enable-at-startup nil)
|
|
||||||
(straight-use-package 'use-package)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** Keybindings
|
|
||||||
*** leader key
|
|
||||||
=general= allows me to use key-binds with a leader key, just like =vim=.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package general
|
|
||||||
:straight t
|
|
||||||
:init
|
|
||||||
(general-create-definer vim-leader-def :prefix "SPC"))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** which-key
|
|
||||||
Show me a cool completion bar at the bottom of the screen, with all possible keybindings.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package which-key
|
|
||||||
:straight t
|
|
||||||
:init
|
|
||||||
(which-key-mode)
|
|
||||||
:diminish
|
|
||||||
(which-key-mode)
|
|
||||||
:config
|
|
||||||
(setq which-key-idle-delay 1))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** evil-mode
|
|
||||||
Forgive me, but I'm =evil=.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package evil
|
|
||||||
:straight t
|
|
||||||
:bind
|
|
||||||
(:map evil-motion-state-map
|
|
||||||
("C-y" . nil))
|
|
||||||
(:map evil-insert-state-map
|
|
||||||
("C-y" . nil))
|
|
||||||
:init
|
|
||||||
;; so C-z works for background
|
|
||||||
(setq evil-toggle-key "C-~"
|
|
||||||
evil-want-C-d-scroll t
|
|
||||||
evil-want-C-u-scroll t
|
|
||||||
evil-want-integration t
|
|
||||||
evil-want-keybinding nil)
|
|
||||||
:config
|
|
||||||
(evil-mode))
|
|
||||||
|
|
||||||
(use-package evil-collection
|
|
||||||
:straight t
|
|
||||||
:after evil
|
|
||||||
:config
|
|
||||||
(evil-collection-init))
|
|
||||||
|
|
||||||
(use-package evil-matchit
|
|
||||||
:straight t
|
|
||||||
:after evil
|
|
||||||
:config
|
|
||||||
(global-evil-matchit-mode 1))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** Appearance
|
|
||||||
*** Fonts
|
|
||||||
I mainly use these fonts:
|
|
||||||
+ =SFMono Nerd Font Mono= as main mono-spaced (+ Icons)
|
|
||||||
+ =JuliaMono= for all other characters
|
|
||||||
+ =Noto Emoji= to show emojis in emacs
|
|
||||||
+ =Noto JP= for japanese characters
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(set-face-attribute 'default nil :font "SFMono Nerd Font" :height 110 :weight 'medium)
|
|
||||||
(set-fontset-font t 'unicode "JuliaMono" nil 'prepend)
|
|
||||||
(set-fontset-font t 'unicode "Noto Color Emoji" nil 'prepend)
|
|
||||||
(set-fontset-font t 'unicode "Noto Sans Mono CJK JP" nil 'append)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Bars
|
|
||||||
I don't need ugly bars.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(menu-bar-mode -1)
|
|
||||||
(tool-bar-mode -1)
|
|
||||||
(scroll-bar-mode -1)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Parenthesis
|
|
||||||
Show me the friend of my parenthesis.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(show-paren-mode t)
|
|
||||||
(setq show-paren-style 'paranthesis)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Line numbers
|
|
||||||
Show me relative line numbers, when in =normal= mode and absolute ones, when in =insert= mode.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq-default display-line-numbers 'relative
|
|
||||||
display-line-numbers-widen t
|
|
||||||
;; this is the default
|
|
||||||
display-line-numbers-current-absolute t)
|
|
||||||
|
|
||||||
;; Display absolute numbers, when in normal mode
|
|
||||||
(defun noct:relative ()
|
|
||||||
(setq-local display-line-numbers 'relative))
|
|
||||||
|
|
||||||
(defun noct:absolute ()
|
|
||||||
(setq-local display-line-numbers t))
|
|
||||||
|
|
||||||
(add-hook 'evil-insert-state-entry-hook #'noct:absolute)
|
|
||||||
(add-hook 'evil-insert-state-exit-hook #'noct:relative)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Show me both line and column counter in my bar.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(line-number-mode)
|
|
||||||
(column-number-mode)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Theme
|
|
||||||
Setting my beloved light theme with some icons.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package doom-themes
|
|
||||||
:straight (doom-themes :type git :host github :repo "hlissner/emacs-doom-themes")
|
|
||||||
:config
|
|
||||||
(setq doom-themes-enable-bold t
|
|
||||||
doom-themes-enable-italic t
|
|
||||||
doom-solarized-light-padded-modeline nil)
|
|
||||||
(load-theme 'doom-solarized-light t)
|
|
||||||
(doom-themes-org-config))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Modeline
|
|
||||||
Use =doom-modeline= as a bar... together with icons and nyan cat!
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package doom-modeline
|
|
||||||
:straight t
|
|
||||||
:config
|
|
||||||
(doom-modeline-mode 1)
|
|
||||||
(setq doom-modeline-indent-info t
|
|
||||||
doom-modeline-buffer-file-name-style 'file-name
|
|
||||||
doom-modeline-height 1))
|
|
||||||
|
|
||||||
(use-package all-the-icons
|
|
||||||
:straight t)
|
|
||||||
|
|
||||||
(use-package nyan-mode
|
|
||||||
:straight t
|
|
||||||
:init
|
|
||||||
(nyan-mode)
|
|
||||||
:config
|
|
||||||
(setq nyan-cat-face-number 4
|
|
||||||
nyan-minimum-window-width 120))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Inline colors
|
|
||||||
Show me color codes as colors!
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package rainbow-mode
|
|
||||||
:straight t
|
|
||||||
:hook
|
|
||||||
(prog-mode . rainbow-mode)
|
|
||||||
(org-mode . rainbow-mode)
|
|
||||||
(c-mode . (lambda() (rainbow-mode -1))))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Whitespaces
|
|
||||||
Show me trailing white-spaces.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(global-whitespace-mode t)
|
|
||||||
(setq whitespace-style '(face trailing tabs tab-mark))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** ivy
|
|
||||||
Ivy - a generic completion frontend for Emacs.
|
|
||||||
Swiper - isearch with an overview, and more. Oh, man!
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package ivy
|
|
||||||
:straight t
|
|
||||||
:diminish
|
|
||||||
:bind (("C-s" . swiper)
|
|
||||||
:map ivy-minibuffer-map
|
|
||||||
("TAB" . ivy-alt-done)
|
|
||||||
("C-l" . ivy-alt-done)
|
|
||||||
("C-j" . ivy-next-line)
|
|
||||||
("C-k" . ivy-previous-line)
|
|
||||||
:map ivy-switch-buffer-map
|
|
||||||
("C-k" . ivy-previous-line)
|
|
||||||
("C-l" . ivy-done)
|
|
||||||
("C-d" . ivy-switch-buffer-kill)
|
|
||||||
:map ivy-reverse-i-search-map
|
|
||||||
("C-k" . ivy-previous-line)
|
|
||||||
("C-d" . ivy-reverse-i-search-kill))
|
|
||||||
:config
|
|
||||||
(ivy-mode 1))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** counsel
|
|
||||||
Spice up some of those old mini buffers.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package counsel
|
|
||||||
:straight t
|
|
||||||
:bind (("M-x" . counsel-M-x)
|
|
||||||
("C-x b" . counsel-ibuffer)
|
|
||||||
("C-x C-f" . counsel-find-file)
|
|
||||||
("C-x C-g" . counsel-git)
|
|
||||||
:map minibuffer-local-map
|
|
||||||
("C-r" . 'counsel-minibuffer-history)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** ORG MODE <3
|
|
||||||
*** Setup and keys
|
|
||||||
Bootstrap =org-mode= together with keybindings.
|
|
||||||
=C-c C-t= for =org-todo=.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package org
|
|
||||||
:straight t
|
|
||||||
:general
|
|
||||||
(vim-leader-def 'normal 'global
|
|
||||||
"oci" 'org-clock-in
|
|
||||||
"oco" 'org-clock-out
|
|
||||||
"ocd" 'org-clock-display
|
|
||||||
"oa" 'org-agenda
|
|
||||||
"oca" 'org-capture
|
|
||||||
"oes" 'org-edit-src-code
|
|
||||||
"oti" 'org-toggle-inline-images
|
|
||||||
"odi" 'org-display-inline-images)
|
|
||||||
:hook
|
|
||||||
(org-mode . (lambda () (electric-indent-local-mode -1))) ;; dont make real spaces at the start of a line
|
|
||||||
(org-mode . org-indent-mode)) ;; add virtual spaces (only visual)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Misc
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq org-startup-with-inline-images nil ;; start with inline images disabled
|
|
||||||
org-image-actual-width nil ;; rescale inline images
|
|
||||||
org-directory "~/org" ;; set org file directory
|
|
||||||
org-edit-src-content-indentation 0 ;; don't indent stupidly in org-edit-src-code
|
|
||||||
org-log-done nil ;; just mark DONE without a time stamp
|
|
||||||
org-log-repeat nil ;; don't set a time after marking sth DONE
|
|
||||||
org-descriptive-links t ;; Always show links
|
|
||||||
)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** org-todo faces
|
|
||||||
Which =org-todo= keywords should be used and how they look.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq org-todo-keywords '((sequence "TODO" "PROGRESS" "REVIEW" "|" "DONE"))
|
|
||||||
org-todo-keyword-faces '(("TODO" . "#cc241d") ("PROGRESS" . "#a6cc70") ("REVIEW" . "#b16286") ("DONE" . "#abb0b6")))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** org-babel
|
|
||||||
Executing code inline is just a breeze.
|
|
||||||
Firstly tho, they must be enabled here.
|
|
||||||
Also be *careful* with =haskell= recursion, it can lead to system crashes (at least for me).
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(org-babel-do-load-languages 'org-babel-load-languages '((python . t)
|
|
||||||
(shell . t)
|
|
||||||
(haskell . t)
|
|
||||||
(C . t)
|
|
||||||
(dot . t)
|
|
||||||
(octave . t)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** org-agenda
|
|
||||||
The default =agenda= looks a bit messy.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package org-super-agenda
|
|
||||||
:straight t
|
|
||||||
:after org
|
|
||||||
:config
|
|
||||||
(setq org-super-agenda-groups '((:auto-outline-path t)))
|
|
||||||
(org-super-agenda-mode))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Setup some stuff for =agenda=
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq org-agenda-files (quote ("~/org")) ;; indexed files by org agenda
|
|
||||||
org-agenda-start-on-weekday nil ;; my week starts on a monday
|
|
||||||
calendar-week-start-day 1 ;; my week starts on a monday
|
|
||||||
)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
I need my =hjkl= :(
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(define-key org-agenda-mode-map (kbd "h") 'org-agenda-earlier)
|
|
||||||
(define-key org-agenda-mode-map (kbd "l") 'org-agenda-later)
|
|
||||||
(define-key org-agenda-mode-map (kbd "j") 'org-agenda-next-line)
|
|
||||||
(define-key org-agenda-mode-map (kbd "k") 'org-agenda-previous-line)
|
|
||||||
(define-key org-agenda-mode-map (kbd "t") 'org-agenda-goto-today)
|
|
||||||
|
|
||||||
(define-key org-super-agenda-header-map (kbd "h") 'org-agenda-earlier)
|
|
||||||
(define-key org-super-agenda-header-map (kbd "l") 'org-agenda-later)
|
|
||||||
(define-key org-super-agenda-header-map (kbd "j") 'org-agenda-next-line)
|
|
||||||
(define-key org-super-agenda-header-map (kbd "k") 'org-agenda-previous-line)
|
|
||||||
(define-key org-super-agenda-header-map (kbd "t") 'org-agenda-goto-today)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** org-ref
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package org-ref
|
|
||||||
:straight t
|
|
||||||
:after org
|
|
||||||
:init
|
|
||||||
(setq org-ref-completion-library 'org-ref-ivy-cite))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** org-alert
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package org-alert
|
|
||||||
:straight t
|
|
||||||
:config
|
|
||||||
(setq alert-default-style 'libnotify)
|
|
||||||
(org-alert-enable))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** LaTeX Export
|
|
||||||
Enable LaTeX export with =pdflatex= and use =minted= for code highlighting.
|
|
||||||
Also fix math =utf8= chars.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq org-latex-listings 'minted
|
|
||||||
org-latex-minted-options '(("breaklines" "true")
|
|
||||||
("breakanywhere" "true")
|
|
||||||
("bgcolor" "bg"))
|
|
||||||
org-latex-pdf-process
|
|
||||||
'("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
|
|
||||||
"bibtex %b"
|
|
||||||
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
|
|
||||||
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")
|
|
||||||
org-latex-inputenc-alist '(("utf8" . "utf8x"))
|
|
||||||
org-latex-default-packages-alist (cons '("mathletters" "ucs" nil) org-latex-default-packages-alist)
|
|
||||||
org-format-latex-options (plist-put org-format-latex-options :scale 1))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
For some reason =\alert= is misinterpreted in LaTeX.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defun mth/beamer-bold (contents backend info)
|
|
||||||
(when (eq backend 'beamer)
|
|
||||||
(replace-regexp-in-string "\\`\\\\[A-Za-z0-9]+" "\\\\textbf" contents)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Use the above fix and disable creating of =.tex= files.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package ox
|
|
||||||
:after org
|
|
||||||
:config
|
|
||||||
(add-to-list 'org-export-filter-bold-functions 'mth/beamer-bold)
|
|
||||||
(add-to-list 'org-latex-logfiles-extensions "tex")
|
|
||||||
(add-to-list 'org-latex-logfiles-extensions "bbl"))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Use graphivz to draw graphs.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package graphviz-dot-mode
|
|
||||||
:straight t
|
|
||||||
:hook
|
|
||||||
(graphviz-dot-mode . (lambda () (set-input-method "math")))
|
|
||||||
:config
|
|
||||||
(setq graphviz-dot-indent-width 4))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Fonts and fancy
|
|
||||||
Some custom fonts stuff.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq org-ellipsis " ⮷" ;; folding icon
|
|
||||||
;; org-hide-emphasis-markers t ;; hide markers such as *, =, _
|
|
||||||
)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
I want my =org-bullets= to look fancy, so I'm using some UTF8 chars.
|
|
||||||
Use =(setq inhibit-compacting-font-caches t)=, if performance is low.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package org-superstar
|
|
||||||
:straight t
|
|
||||||
:after org
|
|
||||||
:hook
|
|
||||||
(org-mode . org-superstar-mode)
|
|
||||||
:config
|
|
||||||
(setq org-superstar-remove-leading-stars t
|
|
||||||
org-superstar-headline-bullets-list '(9673 10061 10040)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** General programming tools
|
|
||||||
*** Indentation
|
|
||||||
Use some magic heuristics for indentation.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package dtrt-indent
|
|
||||||
:straight t
|
|
||||||
:hook
|
|
||||||
(prog-mode . dtrt-indent-mode)
|
|
||||||
(text-mode . dtrt-indent-mode)
|
|
||||||
(org-mode . dtrt-indent-mode)
|
|
||||||
(markdown-mode . dtrt-indent-mode))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq ; c-default-style "bsd"
|
|
||||||
c-basic-offset 4)
|
|
||||||
(setq-default indent-tabs-mode nil)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Auto pairs
|
|
||||||
Auto matching pairs is nice.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package electric-pair
|
|
||||||
:config
|
|
||||||
(setq electric-pair-open-newline-between-pairs nil)
|
|
||||||
:hook
|
|
||||||
(prog-mode . electric-pair-mode)
|
|
||||||
(text-mode . electric-pair-mode)
|
|
||||||
(org-mode . electric-pair-mode)
|
|
||||||
(markdown-mode . electric-pair-mode))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** =git=
|
|
||||||
=magit= aka most convenient git client, I've ever used.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package magit
|
|
||||||
:straight t
|
|
||||||
:general
|
|
||||||
(vim-leader-def 'normal 'global
|
|
||||||
"gb" 'magit-blame
|
|
||||||
"gc" 'magit-checkout
|
|
||||||
"gc" 'magit-commit
|
|
||||||
"gd" 'magit-diff
|
|
||||||
"gg" 'counsel-git-grep
|
|
||||||
"gi" 'magit-gitignore-in-topdir
|
|
||||||
"gl" 'magit-log
|
|
||||||
"gp" 'magit-push
|
|
||||||
"gs" 'magit-status
|
|
||||||
"gu" 'magit-pull))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Highlight todo's
|
|
||||||
Sometimes, a big red TODO is more intimidating than one with normal text color.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package hl-todo
|
|
||||||
:straight t
|
|
||||||
:hook
|
|
||||||
(prog-mode . hl-todo-mode)
|
|
||||||
:config
|
|
||||||
(defface hl-todo-TODO
|
|
||||||
'((t :background "#cc241d" :foreground "#ffffff"))
|
|
||||||
"TODO Face")
|
|
||||||
(defface hl-todo-UNUSED
|
|
||||||
'((t :background "#B58900" :foreground "#ffffff"))
|
|
||||||
"TODO Face")
|
|
||||||
(setq hl-todo-highlight-punctuation ":"
|
|
||||||
hl-todo-color-background t
|
|
||||||
hl-todo-keyword-faces '(("TODO" . hl-todo-TODO)
|
|
||||||
("XXX" . hl-todo-TODO)
|
|
||||||
("FIXME" . hl-todo-TODO)
|
|
||||||
("UNUSED" . hl-todo-UNUSED))))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** Code suggestions
|
|
||||||
*** company
|
|
||||||
First of all, we need a backend for our completion and analysis.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package company
|
|
||||||
:straight t
|
|
||||||
:hook
|
|
||||||
(lsp-mode . company-mode)
|
|
||||||
(prog-mode . company-mode)
|
|
||||||
(LaTeX-mode . company-mode)
|
|
||||||
(org-mode . company-mode)
|
|
||||||
:custom
|
|
||||||
(company-minimum-prefix-length 3)
|
|
||||||
(conpany-idle-delay 0.5)
|
|
||||||
:bind (:map company-active-map
|
|
||||||
("C-j" . company-select-next-or-abort)
|
|
||||||
("C-k" . company-select-previous-or-abort)
|
|
||||||
("C-l" . company-complete-selection)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Then we can sprinkle in a fancy front-end for it. (only works in GUI emacs)
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package company-box
|
|
||||||
:straight t
|
|
||||||
:config
|
|
||||||
(setq company-box-doc-delay 1.0
|
|
||||||
company-box-max-candidates 10)
|
|
||||||
:hook
|
|
||||||
(company-mode . company-box-mode))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** snippets
|
|
||||||
**** completion
|
|
||||||
Here I use =company= to display snippet recommendations.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defun company-mode/backend-with-yas (backend)
|
|
||||||
(if (and (listp backend) (member 'company-yasnippet backend))
|
|
||||||
backend
|
|
||||||
(append (if (consp backend) backend (list backend))
|
|
||||||
'(:with company-yasnippet))))
|
|
||||||
|
|
||||||
(defun company-mode/add-yasnippet ()
|
|
||||||
(setq company-backends (mapcar #'company-mode/backend-with-yas company-backends)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
**** yasnippet
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package yasnippet
|
|
||||||
:straight t
|
|
||||||
:init
|
|
||||||
:bind (:map yas-minor-mode-map
|
|
||||||
("C-y" . yas-expand))
|
|
||||||
:hook
|
|
||||||
(company-mode . yas-minor-mode)
|
|
||||||
(company-mode . company-mode/add-yasnippet))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
We also need the actual snippets.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package yasnippet-snippets
|
|
||||||
:straight (yasnippet-snippets :type git :host github :repo "AndreaCrotti/yasnippet-snippets"
|
|
||||||
:fork (:host github
|
|
||||||
:repo "marcothms/yasnippet-snippets"))
|
|
||||||
:after yasnippet)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** LSP and language specific settings
|
|
||||||
*** lsp-mode
|
|
||||||
=lsp-mode= is feature-richer than =eglot=, so I'm using this one.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package lsp-mode
|
|
||||||
:straight t
|
|
||||||
:commands (lsp lsp-deferred)
|
|
||||||
:init
|
|
||||||
(setq lsp-keymap-prefix "C-l")
|
|
||||||
:config
|
|
||||||
(lsp-enable-which-key-integration t)
|
|
||||||
(setq lsp-auto-guess-root t
|
|
||||||
lsp-idle-delay 1
|
|
||||||
lsp-enable-file-watchers nil
|
|
||||||
lsp-headerline-breadcrumb-icons-enable t))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Code Lens can show error inline.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package lsp-ui
|
|
||||||
:straight t
|
|
||||||
:after lsp)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
In order for =lsp-mode= to work, it needs to compile code on the =fly=.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package flycheck
|
|
||||||
:straight t
|
|
||||||
:after lsp)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** tags
|
|
||||||
=tags= can be used to search for =tagged= entities, such as =structs= etc.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package lsp-ivy
|
|
||||||
:straight t
|
|
||||||
:after lsp-mode
|
|
||||||
:bind(:map lsp-mode-map ("C-l g a" . lsp-ivy-workspace-symbol)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** language configurations
|
|
||||||
**** rust
|
|
||||||
Basic =rust-mode= with some fancy characters.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package rust-mode
|
|
||||||
:straight t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
I want to use =rust-analyzer= and see inlay type hints for variables.
|
|
||||||
Warning: If inlay hints don't work, make sure to use the lastest:
|
|
||||||
+ rust version
|
|
||||||
+ =rust-analyzer=
|
|
||||||
+ =rust-mode=
|
|
||||||
+ =lsp-mode=
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq lsp-rust-server 'rust-analyzer
|
|
||||||
lsp-rust-analyzer-server-display-inlay-hints t)
|
|
||||||
(add-hook 'rust-mode 'lsp-rust-analyzer-inlay-hints-mode)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
**** haskell
|
|
||||||
=ghcup install hls=
|
|
||||||
and
|
|
||||||
=cabal install stylish-haskell=
|
|
||||||
are required.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package haskell-mode
|
|
||||||
:straight t
|
|
||||||
:config
|
|
||||||
(setq haskell-stylish-on-save t)
|
|
||||||
:hook
|
|
||||||
(haskell-mode . interactive-haskell-mode))
|
|
||||||
|
|
||||||
(use-package lsp-haskell
|
|
||||||
:straight t
|
|
||||||
:after lsp)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
**** octave
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package octave-mode
|
|
||||||
:mode ("\\.m\\'" . octave-mode)
|
|
||||||
:hook
|
|
||||||
(octave-mode . company-mode))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
** Input methods
|
|
||||||
*** spelling
|
|
||||||
Sjoe my speling misttakes.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package ispell
|
|
||||||
:straight t
|
|
||||||
:if (executable-find "hunspell")
|
|
||||||
:config
|
|
||||||
(setq ispell-program-name "hunspell"
|
|
||||||
ispell-dictionary "de_DE,en_GB,en_US")
|
|
||||||
(ispell-set-spellchecker-params)
|
|
||||||
(ispell-hunspell-add-multi-dic "de_DE,en_GB,en_US")
|
|
||||||
:hook
|
|
||||||
(org-mode . flyspell-mode)
|
|
||||||
(markdown-mode . flyspell-mode)
|
|
||||||
(text-mode . flyspell-mode))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** math
|
|
||||||
Who needs LaTeX when you can have the power of unicode?
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package math-symbol-lists
|
|
||||||
:straight t
|
|
||||||
:config
|
|
||||||
(quail-define-package "math" "UTF-8" "Ω" t)
|
|
||||||
(quail-define-rules
|
|
||||||
; Equality and order
|
|
||||||
("<=" ?≤) (">=" ?≥) ("\\prec" ?≺) ("\\preceq" ?≼) ("\\succ" ?≻)
|
|
||||||
("\\succeq" ?≽)
|
|
||||||
("/=" ?≠) ("\\neq" ?≠) ("\\=n" ?≠)("\\equiv" ?≡) ("\\nequiv" ?≢)
|
|
||||||
("\\approx" ?≈) ("\\~~" ?≈) ("\\t=" ?≜) ("\\def=" ?≝)
|
|
||||||
|
|
||||||
; Set theory
|
|
||||||
("\\sub" ?⊆) ("\\subset" ?⊂) ("\\subseteq" ?⊆) ("\\in" ?∈)
|
|
||||||
("\\inn" ?∉) ("\\:" ?∈) ("\\cap" ?∩) ("\\inter" ?∩)
|
|
||||||
("\\cup" ?∪) ("\\uni" ?∪) ("\\emptyset" ?∅) ("\\empty" ?∅)
|
|
||||||
("\\times" ?×) ("\\x" ?×)
|
|
||||||
|
|
||||||
; Number stuff
|
|
||||||
("\\mid" ?∣) ("\\infty" ?∞) ("\\sqrt" ?√) ("\\Im" ?ℑ) ("\\Re" ?ℜ)
|
|
||||||
|
|
||||||
; Logic
|
|
||||||
("\\/" ?∨) ("\\and" ?∧) ("/\\" ?∧) ("\\or" ?∨) ("~" ?¬) ("\neg" ?¬)
|
|
||||||
("|-" ?⊢) ("|-n" ?⊬) ("\\bot" ?⊥) ("\\top" ?⊤)
|
|
||||||
("\\r" ?→) ("\\lr" ?↔)
|
|
||||||
("\\R" ?⇒) ("\\Lr" ?⇔)
|
|
||||||
("\\qed" ?∎)
|
|
||||||
|
|
||||||
; Predicate logic
|
|
||||||
("\\all" ?∀) ("\\ex" ?∃) ("\\exn" ?∄)
|
|
||||||
|
|
||||||
; functions
|
|
||||||
("\\to" ?→) ("\\mapsto" ?↦) ("\\circ" ?∘) ("\\comp" ?∘) ("\\integral" ?∫)
|
|
||||||
("\\fun" ?λ)
|
|
||||||
|
|
||||||
; Sets of numbers
|
|
||||||
("\\nat" ?ℕ) ("\\N" ?ℕ) ("\\int" ?ℤ) ("\\Z" ?ℤ) ("\\rat" ?ℚ) ("\\Q" ?ℚ)
|
|
||||||
("\\real" ?ℝ) ("\\R" ?ℝ) ("\\complex" ?ℂ) ("\\C" ?ℂ) ("\\prime" ?ℙ)
|
|
||||||
("\\P" ?ℙ)
|
|
||||||
|
|
||||||
; Complexity
|
|
||||||
("\\bigo" ?𝒪)
|
|
||||||
|
|
||||||
; Greek
|
|
||||||
("\\Ga" ?α) ("\\GA" ?Α) ("\\alpha" ?α)
|
|
||||||
("\\Gb" ?β) ("\\GB" ?Β) ("\\beta" ?β)
|
|
||||||
("\\Gg" ?γ) ("\\GG" ?Γ) ("\\gamma" ?γ) ("\\Gamma" ?Γ)
|
|
||||||
("\\Gd" ?δ) ("\\GD" ?Δ) ("\\delta" ?δ) ("\\Delta" ?Δ)
|
|
||||||
("\\Ge" ?ε) ("\\GE" ?Ε) ("\\epsilon" ?ε)
|
|
||||||
("\\Gz" ?ζ) ("\\GZ" ?Ζ)
|
|
||||||
("\\Gh" ?η) ("\\Gh" ?Η) ("\\mu" ?μ)
|
|
||||||
("\\Gth" ?θ) ("\\GTH" ?Θ) ("\\theta" ?θ) ("\\Theta" ?Θ)
|
|
||||||
("\\Gi" ?ι) ("\\GI" ?Ι) ("\\iota" ?ι)
|
|
||||||
("\\Gk" ?κ) ("\\GK" ?Κ)
|
|
||||||
("\\Gl" ?λ) ("\\GL" ?Λ) ("\\lambda" ?λ)
|
|
||||||
("\\Gm" ?μ) ("\\GM" Μ) ("\\mu" ?μ)
|
|
||||||
("\\Gx" ?ξ) ("\\GX" ?Ξ) ("\\xi" ?ξ) ("\\Xi" ?Ξ)
|
|
||||||
("\\Gp" ?π) ("\\GP" ?Π) ("\\pi" ?π) ("\\Pi" ?Π)
|
|
||||||
("\\Gr" ?ρ) ("\\GR" ?Ρ) ("\\rho" ?ρ)
|
|
||||||
("\\Gs" ?σ) ("\\GS" ?Σ) ("\\sigma" ?σ) ("\\Sigma" ?Σ)
|
|
||||||
("\\Gt" ?τ) ("\\GT" ?Τ) ("\\tau" ?τ)
|
|
||||||
("\\Gph" ?ϕ) ("\\GPH" ?Φ) ("\\phi" ?ϕ) ("\\Phi" ?Φ)
|
|
||||||
("\\Gc" ?χ) ("\\GC" ?Χ) ("\\chi" ?χ)
|
|
||||||
("\\Gp" ?ψ) ("\\GP" ?Ψ) ("\\psi" ?ψ)
|
|
||||||
("\\Go" ?ω) ("\\GO" ?Ω) ("\\omega" ?ω) ("\\Omega" ?Ω)
|
|
||||||
)
|
|
||||||
(mapc (lambda (x)
|
|
||||||
(if (cddr x)
|
|
||||||
(quail-defrule (cadr x) (car (cddr x)))))
|
|
||||||
(append math-symbol-list-superscripts
|
|
||||||
math-symbol-list-subscripts)))
|
|
||||||
#+end_src
|
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
PATH=$HOME/.dots/scripts:$HOME/.cargo/bin:$HOME/.ghcup/bin:$HOME/.local/bin:$HOME/.cabal/bin:$PATH
|
PATH=$HOME/.dots/scripts:$HOME/.cargo/bin:$HOME/.ghcup/bin:$HOME/.local/bin:$HOME/.cabal/bin:$PATH
|
||||||
EDITOR=vim
|
EDITOR=vim
|
||||||
VISUAL=vim
|
VISUAL=vim
|
||||||
_JAVA_AWT_WM_NONREPARENTING=1
|
|
||||||
SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"
|
|
||||||
GTK_IM_MODULE=ibus
|
GTK_IM_MODULE=ibus
|
||||||
QT_IM_MODULE=ibus
|
QT_IM_MODULE=ibus
|
||||||
XMODIFIERS=@im=ibus
|
XMODIFIERS=@im=ibus
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,261 +0,0 @@
|
|||||||
# config for sway
|
|
||||||
# Read `man 5 sway` for a complete reference.
|
|
||||||
|
|
||||||
# Font in sway
|
|
||||||
font pango: SFMono Nerd Font 9
|
|
||||||
|
|
||||||
# Variables
|
|
||||||
set $mod Mod4
|
|
||||||
set $left h
|
|
||||||
set $down j
|
|
||||||
set $up k
|
|
||||||
set $right l
|
|
||||||
|
|
||||||
# Color
|
|
||||||
# old solarized
|
|
||||||
set $yellow #b58900
|
|
||||||
set $orange #cb4b16
|
|
||||||
set $red #dc322f
|
|
||||||
set $magenta #d33682
|
|
||||||
set $violet #6c71c4
|
|
||||||
set $blue #268bd2
|
|
||||||
set $cyan #2aa198
|
|
||||||
set $green #859900
|
|
||||||
|
|
||||||
set $baseA3 #fdf6e3
|
|
||||||
set $baseA2 #eee8d5
|
|
||||||
set $baseA1 #93a1a1
|
|
||||||
set $baseA0 #839496
|
|
||||||
set $baseB0 #657b83
|
|
||||||
set $baseB1 #586e75
|
|
||||||
set $baseB2 #073642
|
|
||||||
set $baseB3 #002b36
|
|
||||||
set $custom #e1cab3
|
|
||||||
|
|
||||||
# new everforest
|
|
||||||
set $bar_bg #323232
|
|
||||||
set $green #93b259
|
|
||||||
set $orange #f85551
|
|
||||||
|
|
||||||
# clientclass border backgr. text indicator
|
|
||||||
client.focused $green $green $bar_bg $green
|
|
||||||
client.focused_inactive $bar_bg $bar_bg $baseB0 $bar_bg
|
|
||||||
client.unfocused $bar_bg $bar_bg $baseB0 $bar_bg
|
|
||||||
client.urgent $orange $orange $baseB3 $orange
|
|
||||||
|
|
||||||
# always start on the same brightness
|
|
||||||
exec light -S 20
|
|
||||||
|
|
||||||
# Wallpaper: generate wallpaper with: https://source.unsplash.com/random/3840x2160/?japan
|
|
||||||
# set normal wp
|
|
||||||
output * bg ~/images/wallpaper/wallpaper.png fill
|
|
||||||
|
|
||||||
# create a blurred counter part for locking
|
|
||||||
exec_always convert ~/images/wallpaper/wallpaper.png -blur 0x8 /tmp/lock.png
|
|
||||||
|
|
||||||
# turn off screen, when lid closed
|
|
||||||
set $laptop eDP-1
|
|
||||||
bindswitch --reload --locked lid:on output $laptop disable
|
|
||||||
bindswitch --reload --locked lid:off output $laptop enable
|
|
||||||
|
|
||||||
# Idle configuration
|
|
||||||
set $lock 'bash ~/.dots/lock.sh'
|
|
||||||
|
|
||||||
# Lock after 20 minutes, lock before suspend
|
|
||||||
exec swayidle -w \
|
|
||||||
timeout 1200 ~/.dots/lock.sh \
|
|
||||||
before-sleep ~/.dots/lock.sh
|
|
||||||
#timeout 1320 'systemctl suspend' \
|
|
||||||
|
|
||||||
# Input configuration
|
|
||||||
# mouse/trackpad
|
|
||||||
input type:pointer {
|
|
||||||
accel_profile "flat"
|
|
||||||
}
|
|
||||||
|
|
||||||
# keyboard
|
|
||||||
input type:keyboard {
|
|
||||||
# Umlauts on RAlt + {a,u,o,s}
|
|
||||||
xkb_layout eu
|
|
||||||
# Make Caps Lock an additional Esc
|
|
||||||
# https://man.archlinux.org/man/xkeyboard-config.7
|
|
||||||
xkb_options caps:escape
|
|
||||||
# Keyboard repeats
|
|
||||||
repeat_delay 300
|
|
||||||
repeat_rate 50
|
|
||||||
}
|
|
||||||
|
|
||||||
# Key bindings
|
|
||||||
# Basics:
|
|
||||||
# Terminal
|
|
||||||
bindsym $mod+Return exec alacritty
|
|
||||||
|
|
||||||
# Kill focused window
|
|
||||||
bindsym $mod+Shift+Backspace kill
|
|
||||||
|
|
||||||
# wofi
|
|
||||||
# show normal applications
|
|
||||||
bindsym $mod+d exec wofi --show drun -p 'Open application'
|
|
||||||
|
|
||||||
# show binaries in PATH
|
|
||||||
bindsym $mod+Shift+d exec wofi --show run -p 'dmenu'
|
|
||||||
|
|
||||||
# show all pdfs in HOME
|
|
||||||
bindsym $mod+p exec \
|
|
||||||
fd -I "\.pdf$" $HOME \
|
|
||||||
| cut -f 4- -d "/" \
|
|
||||||
| wofi -d -p 'Search pdfs' -W 70% \
|
|
||||||
| xargs -d '\n' -r xdg-open
|
|
||||||
|
|
||||||
# show shutdown menu
|
|
||||||
bindsym $mod+Ctrl+Backspace exec \
|
|
||||||
printf "~/.dots/lock.sh\nsystemctl suspend\nswaymsg reload\nshutdown now\nloginctl terminate-user marc" \
|
|
||||||
| wofi -d -p "Power" -L 6 \
|
|
||||||
| xargs -d '\n' -r /bin/bash -c
|
|
||||||
|
|
||||||
# switch windows
|
|
||||||
bindsym $mod+w exec \
|
|
||||||
wlrctl window list \
|
|
||||||
| awk '{print $1}' \
|
|
||||||
| sed 's/://' \
|
|
||||||
| wofi --dmenu -p "Switch window" \
|
|
||||||
| xargs -r wlrctl window focus
|
|
||||||
|
|
||||||
# Screenshot
|
|
||||||
bindsym $mod+Shift+s exec grim -g "$(slurp)" - | wl-copy
|
|
||||||
bindsym $mod+Ctrl+Shift+s exec grim -g "$(slurp)" - | swappy -f -
|
|
||||||
|
|
||||||
# Show notifications
|
|
||||||
bindsym $mod+v exec swaync-client -t -sw
|
|
||||||
|
|
||||||
# Normal applications
|
|
||||||
# echo 'tmux a || tmux' > ~/.local/bin/tmux_detect.sh
|
|
||||||
bindsym $mod+Ctrl+1 exec alacritty --command bash tmux_detect.sh
|
|
||||||
bindsym $mod+Ctrl+2 exec firefox
|
|
||||||
bindsym $mod+Ctrl+3 exec discord
|
|
||||||
bindsym $mod+Ctrl+4 exec spotify
|
|
||||||
bindsym $mod+Ctrl+8 exec evolution
|
|
||||||
bindsym $mod+Ctrl+9 exec keepassxc
|
|
||||||
bindsym $mod+Ctrl+p exec pavucontrol
|
|
||||||
|
|
||||||
# Brightness
|
|
||||||
set $SHOW_LIGHT light -G | cut -d'.' -f1 > $WOBSOCK
|
|
||||||
bindsym XF86MonBrightnessUp exec light -A 5 && $SHOW_LIGHT
|
|
||||||
bindsym XF86MonBrightnessDown exec light -U 5 && $SHOW_LIGHT
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
bindsym XF86AudioPlay exec playerctl play-pause
|
|
||||||
bindsym XF86AudioPrev exec playerctl previous
|
|
||||||
bindsym XF86AudioNext exec playerctl next
|
|
||||||
set $SHOW_VOL pactl get-sink-volume @DEFAULT_SINK@ | head -n 1| awk '{print substr($5, 1, length($5)-1)}' > $WOBSOCK
|
|
||||||
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && $SHOW_VOL
|
|
||||||
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && $SHOW_VOL
|
|
||||||
set $SHOW_MUTE_OUT notify-send "Audio" "$(pactl get-sink-mute @DEFAULT_SINK@)" -i speaker -u low
|
|
||||||
set $SHOW_MUTE_IN notify-send "Microphone" "$(pactl get-source-mute @DEFAULT_SOURCE@)" -i microphone -u low
|
|
||||||
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle && $SHOW_MUTE_IN
|
|
||||||
bindsym $mod+m exec pactl set-source-mute @DEFAULT_SOURCE@ toggle && $SHOW_MUTE_IN
|
|
||||||
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle && $SHOW_MUTE_OUT
|
|
||||||
|
|
||||||
# Moving around:
|
|
||||||
# Move your focus around
|
|
||||||
bindsym $mod+$left focus left
|
|
||||||
bindsym $mod+$down focus down
|
|
||||||
bindsym $mod+$up focus up
|
|
||||||
bindsym $mod+$right focus right
|
|
||||||
|
|
||||||
# Move the focused window with the same, but add Shift
|
|
||||||
bindsym $mod+Shift+$left move left
|
|
||||||
bindsym $mod+Shift+$down move down
|
|
||||||
bindsym $mod+Shift+$up move up
|
|
||||||
bindsym $mod+Shift+$right move right
|
|
||||||
|
|
||||||
# Workspaces:
|
|
||||||
# Declare workspaces
|
|
||||||
set $ws1 '1'
|
|
||||||
set $ws2 '2'
|
|
||||||
set $ws3 '3'
|
|
||||||
set $ws4 '4'
|
|
||||||
set $ws5 '5'
|
|
||||||
set $ws6 '6'
|
|
||||||
set $ws7 '7'
|
|
||||||
set $ws8 '8'
|
|
||||||
set $ws9 '9'
|
|
||||||
set $ws10 '10'
|
|
||||||
|
|
||||||
# Switch to workspace
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
|
||||||
bindsym $mod+2 workspace number $ws2
|
|
||||||
bindsym $mod+3 workspace number $ws3
|
|
||||||
bindsym $mod+4 workspace number $ws4
|
|
||||||
bindsym $mod+5 workspace number $ws5
|
|
||||||
bindsym $mod+6 workspace number $ws6
|
|
||||||
bindsym $mod+7 workspace number $ws7
|
|
||||||
bindsym $mod+8 workspace number $ws8
|
|
||||||
bindsym $mod+9 workspace number $ws9
|
|
||||||
bindsym $mod+0 workspace number $ws10
|
|
||||||
|
|
||||||
# Move focused container to workspace
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10
|
|
||||||
|
|
||||||
# Move between displays
|
|
||||||
bindsym $mod+Control+$left move workspace to output left
|
|
||||||
bindsym $mod+Control+$right move workspace to output right
|
|
||||||
|
|
||||||
# Layout stuff:
|
|
||||||
titlebar_padding 1
|
|
||||||
workspace_layout tabbed
|
|
||||||
title_align center
|
|
||||||
default_border pixel 4
|
|
||||||
hide_edge_borders smart
|
|
||||||
|
|
||||||
# Make the current focus fullscreen
|
|
||||||
bindsym $mod+f fullscreen
|
|
||||||
|
|
||||||
# Resize windows with $mod + mouse
|
|
||||||
floating_modifier $mod normal
|
|
||||||
|
|
||||||
# Toggle the current focus between tiling and floating mode
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# Swap focus between the tiling area and the floating area
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# Window rules
|
|
||||||
for_window [app_id="firefox" title="Firefox — Sharing Indicator"] kill
|
|
||||||
for_window [app_id="firefox"] move container to workspace number $ws2
|
|
||||||
for_window [class="discord"] move container to workspace number $ws3
|
|
||||||
for_window [app_id="org.telegram.desktop"] move container to workspace number $ws3
|
|
||||||
for_window [class="Spotify"] move container to workspace number $ws4
|
|
||||||
for_window [app_id="evolution"] move container to workspace number $ws8
|
|
||||||
for_window [app_id="org.keepassxc.KeePassXC"] move container to workspace number $ws9
|
|
||||||
|
|
||||||
for_window [app_id="pavucontrol"] floating enable
|
|
||||||
|
|
||||||
# Status Bar
|
|
||||||
bar {
|
|
||||||
swaybar_command waybar
|
|
||||||
}
|
|
||||||
|
|
||||||
# Startup programs
|
|
||||||
exec syncthing
|
|
||||||
exec swaync
|
|
||||||
exec fcitx5
|
|
||||||
exec nm-applet --indicator
|
|
||||||
exec blueman-applet
|
|
||||||
exec pasystray
|
|
||||||
|
|
||||||
# On-screen progress bar
|
|
||||||
set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock
|
|
||||||
exec_always rm -f $WOBSOCK && mkfifo $WOBSOCK && tail -f $WOBSOCK | wob
|
|
||||||
|
|
||||||
# Include some defaults
|
|
||||||
include /etc/sway/config.d/*
|
|
||||||
@@ -1,165 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "bottom",
|
|
||||||
"position": "left",
|
|
||||||
|
|
||||||
"modules-left": [
|
|
||||||
"sway/workspaces"
|
|
||||||
],
|
|
||||||
"modules-center": [
|
|
||||||
],
|
|
||||||
"modules-right": [
|
|
||||||
"tray",
|
|
||||||
"pulseaudio#mic",
|
|
||||||
"battery",
|
|
||||||
"clock#time",
|
|
||||||
],
|
|
||||||
|
|
||||||
|
|
||||||
// MODULES
|
|
||||||
|
|
||||||
"idle_inhibitor": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"activated": "",
|
|
||||||
"deactivated": "鈴"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"backlight": {
|
|
||||||
// "device": "acpi_video1",
|
|
||||||
//"format": "{icon} {percent}%",
|
|
||||||
"format": "{percent}",
|
|
||||||
"format-icons": ["", "", "", "", "", "", "", "", ""]
|
|
||||||
},
|
|
||||||
|
|
||||||
"battery": {
|
|
||||||
"interval": 5,
|
|
||||||
"states": {
|
|
||||||
"good": 100,
|
|
||||||
"ok": 50,
|
|
||||||
"warning": 15,
|
|
||||||
"critical": 10
|
|
||||||
},
|
|
||||||
"format": "{capacity}",
|
|
||||||
"format-discharging": "{capacity}",
|
|
||||||
"format-icons": [
|
|
||||||
"", // Icon: battery-full
|
|
||||||
"", // Icon: battery-three-quarters
|
|
||||||
"", // Icon: battery-half
|
|
||||||
"", // Icon: battery-quarter
|
|
||||||
"" // Icon: battery-empty
|
|
||||||
],
|
|
||||||
"tooltip": true
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock#time": {
|
|
||||||
"interval": 5,
|
|
||||||
"format": "{:%I\n%M}",
|
|
||||||
"tooltip-format": "{:%A, %e %B %Y}"
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock#date": {
|
|
||||||
"interval": 10,
|
|
||||||
"format": "{:%a,%e}",
|
|
||||||
"tooltip-format": "{:%A, %e %B %Y}"
|
|
||||||
},
|
|
||||||
|
|
||||||
"cpu": {
|
|
||||||
"interval": 5,
|
|
||||||
"format": " {load}", // Icon: microchip
|
|
||||||
"states": {
|
|
||||||
"warning": 70,
|
|
||||||
"critical": 90
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"memory": {
|
|
||||||
"interval": 5,
|
|
||||||
"format": " {percentage}% ({used:0.1f})", // Icon: memory
|
|
||||||
"states": {
|
|
||||||
"warning": 70,
|
|
||||||
"critical": 90
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"network": {
|
|
||||||
"interval": 5,
|
|
||||||
"format-wifi": " {essid} ({signalStrength}%)", // Icon: wifi
|
|
||||||
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
|
|
||||||
"format-disconnected": "⚠ Disconnected",
|
|
||||||
"tooltip-format": "{ifname}: {ipaddr}"
|
|
||||||
},
|
|
||||||
|
|
||||||
"sway/window": {
|
|
||||||
"format": "{}",
|
|
||||||
"max-length": 120
|
|
||||||
},
|
|
||||||
|
|
||||||
"sway/workspaces": {
|
|
||||||
"all-outputs": false,
|
|
||||||
"disable-scroll": false,
|
|
||||||
"disable-scroll-wraparound": true,
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"1": "一",
|
|
||||||
"2": "二",
|
|
||||||
"3": "三",
|
|
||||||
"4": "四",
|
|
||||||
"5": "五",
|
|
||||||
"6": "六",
|
|
||||||
"7": "七",
|
|
||||||
"8": "八",
|
|
||||||
"9": "九",
|
|
||||||
"10": "十",
|
|
||||||
"urgent": "",
|
|
||||||
"focused": "",
|
|
||||||
"default": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"pulseaudio": {
|
|
||||||
//"scroll-step": 1,
|
|
||||||
//"format": "{icon} {volume}%",
|
|
||||||
//"format": "{volume}%",
|
|
||||||
//"format-bluetooth": "{icon} {volume}% ",
|
|
||||||
"format-bluetooth": "{volume}% ",
|
|
||||||
"format-muted": "Mute",
|
|
||||||
"format-icons": {
|
|
||||||
"headphones": "",
|
|
||||||
"handsfree": "",
|
|
||||||
"headset": "",
|
|
||||||
"phone": "",
|
|
||||||
"portable": "",
|
|
||||||
"car": "",
|
|
||||||
"default": ["奄","奔", "墳", "墳", "墳", "墳", "墳"]
|
|
||||||
},
|
|
||||||
"on-click": "pavucontrol"
|
|
||||||
},
|
|
||||||
|
|
||||||
"pulseaudio#mic": {
|
|
||||||
"format": "{format_source}",
|
|
||||||
"format-source": "",
|
|
||||||
"format-source-muted": ""
|
|
||||||
},
|
|
||||||
|
|
||||||
"temperature": {
|
|
||||||
"critical-threshold": 80,
|
|
||||||
"thermal-zone": 10,
|
|
||||||
"interval": 5,
|
|
||||||
"format": "{icon} {temperatureC}°C",
|
|
||||||
"format-icons": [
|
|
||||||
"", // Icon: temperature-empty
|
|
||||||
"", // Icon: temperature-quarter
|
|
||||||
"", // Icon: temperature-half
|
|
||||||
"", // Icon: temperature-three-quarters
|
|
||||||
"" // Icon: temperature-full
|
|
||||||
],
|
|
||||||
"tooltip": true
|
|
||||||
},
|
|
||||||
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 18,
|
|
||||||
"spacing": 10
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
/*
|
|
||||||
* Colors
|
|
||||||
*/
|
|
||||||
|
|
||||||
@define-color bg rgb (50, 50, 50);
|
|
||||||
@define-color green rgb (147, 178, 89);
|
|
||||||
@define-color red rgb (248, 85, 81);
|
|
||||||
@define-color blue rgb (58, 148, 197);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Keyframe functions
|
|
||||||
*/
|
|
||||||
|
|
||||||
@keyframes blink-warning {
|
|
||||||
70% {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
color: white;
|
|
||||||
background-color: orange;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes blink-critical {
|
|
||||||
70% {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
color: white;
|
|
||||||
background-color: red;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Base config
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Reset all styles */
|
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
min-height: 0;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The whole bar */
|
|
||||||
#waybar {
|
|
||||||
background: @bg;
|
|
||||||
color: white;
|
|
||||||
font-family: SFMono Nerd Font;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* All modules */
|
|
||||||
#idle_inhibitor,
|
|
||||||
#battery,
|
|
||||||
#backlight,
|
|
||||||
#clock,
|
|
||||||
#cpu,
|
|
||||||
#custom-keyboard-layout,
|
|
||||||
#memory,
|
|
||||||
#mode,
|
|
||||||
#network,
|
|
||||||
#pulseaudio,
|
|
||||||
#temperature,
|
|
||||||
#window,
|
|
||||||
#workspaces button,
|
|
||||||
#tray {
|
|
||||||
padding: 10px
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Modules
|
|
||||||
*/
|
|
||||||
|
|
||||||
#workspaces {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery {
|
|
||||||
animation-timing-function: linear;
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-direction: alternate;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.charging {
|
|
||||||
border-left: 2px solid @green;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.full {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.good {
|
|
||||||
color: @green;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.ok{
|
|
||||||
color: yellow;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.warning {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.critical {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.warning.discharging {
|
|
||||||
animation-name: blink-warning;
|
|
||||||
animation-duration: 3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.critical.discharging {
|
|
||||||
animation-name: blink-critical;
|
|
||||||
animation-duration: 2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock.time {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: bold;
|
|
||||||
/* hack, cause width parameter is bugged */
|
|
||||||
margin-left: 2px;
|
|
||||||
margin-right: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu {
|
|
||||||
/* No styles */
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu.warning {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu.critical {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#memory {
|
|
||||||
animation-timing-function: linear;
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-direction: alternate;
|
|
||||||
}
|
|
||||||
|
|
||||||
#memory.warning {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
#memory.critical {
|
|
||||||
color: red;
|
|
||||||
animation-name: blink-critical;
|
|
||||||
animation-duration: 2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mode {
|
|
||||||
background: #64727D;
|
|
||||||
border-top: 2px solid white;
|
|
||||||
/* To compensate for the top border and still have vertical centering */
|
|
||||||
padding-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network {
|
|
||||||
/* No styles */
|
|
||||||
}
|
|
||||||
|
|
||||||
#network.disconnected {
|
|
||||||
color: orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio {
|
|
||||||
/* No styles */
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio.muted {
|
|
||||||
/* No styles */
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio.mic {
|
|
||||||
padding-top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#temperature {
|
|
||||||
/* No styles */
|
|
||||||
}
|
|
||||||
|
|
||||||
#temperature.critical {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.focused {
|
|
||||||
border-left: 2px solid @green;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
border-left: 2px solid @red;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove weird GTK hover effect */
|
|
||||||
#workspaces button:hover {
|
|
||||||
box-shadow: inherit;
|
|
||||||
text-shadow: inherit;
|
|
||||||
background: #585858;
|
|
||||||
border: #585858;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.focused:hover {
|
|
||||||
border-left: 2px solid @green;
|
|
||||||
background: #585858;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent:hover {
|
|
||||||
border-left: 2px solid @red;
|
|
||||||
background: #585858;
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
width=40%
|
|
||||||
allow_images=true
|
|
||||||
insensitive=true
|
|
||||||
no_actions=true
|
|
||||||
|
|
||||||
key_up=Control_L-k
|
|
||||||
key_down=Control_L-j
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
@define-color bg rgb (50, 50, 50);
|
|
||||||
@define-color fg rgb (255, 255, 255);
|
|
||||||
@define-color green rgb (147, 178, 89);
|
|
||||||
@define-color red rgb (248, 85, 81);
|
|
||||||
@define-color blue rgb (58, 148, 197);
|
|
||||||
|
|
||||||
* {
|
|
||||||
font-family: "SFMono Nerd Font"
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
margin: 0px;
|
|
||||||
border-radius: 5px;
|
|
||||||
background-color: @bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input {
|
|
||||||
margin: 5px;
|
|
||||||
border: none;
|
|
||||||
color: @fg;
|
|
||||||
background-color: #44475a;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inner-box {
|
|
||||||
margin: -5px;
|
|
||||||
border: none;
|
|
||||||
background-color: @bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#outer-box {
|
|
||||||
margin: 5px;
|
|
||||||
border: none;
|
|
||||||
background-color: @bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#scroll {
|
|
||||||
margin: 0px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text {
|
|
||||||
margin: 5px;
|
|
||||||
border: none;
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:selected {
|
|
||||||
background-color: @green;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
29
lock.sh
29
lock.sh
@@ -1,29 +0,0 @@
|
|||||||
# requires swaylock-effects
|
|
||||||
|
|
||||||
FG="5c6a72"
|
|
||||||
RED="f85552"
|
|
||||||
BLUE="3a94c5"
|
|
||||||
YELLOW="dfa000"
|
|
||||||
GREEN="8da101"
|
|
||||||
|
|
||||||
loginctl lock-session && swaylock \
|
|
||||||
--show-failed-attempts \
|
|
||||||
--image /tmp/lock.png \
|
|
||||||
--indicator-idle-visible \
|
|
||||||
--clock --timestr "%I:%M" --datestr "" \
|
|
||||||
--font "SFMono Nerd Font" \
|
|
||||||
--indicator-radius 80 \
|
|
||||||
--fade-in 0.2 \
|
|
||||||
--line-uses-inside \
|
|
||||||
--line-uses-ring \
|
|
||||||
--key-hl-color "606e01" \
|
|
||||||
--bs-hl-color $RED \
|
|
||||||
--ring-color $GREEN \
|
|
||||||
--separator-color $GREEN \
|
|
||||||
--ring-clear-color $YELLOW \
|
|
||||||
--text-clear-color "00000000" \
|
|
||||||
--ring-ver-color $BLUE \
|
|
||||||
--text-ver-color "00000000" \
|
|
||||||
--ring-wrong-color $RED \
|
|
||||||
--text-wrong-color "00000000" \
|
|
||||||
--text-color $GREEN || loginctl terminate-user $USER
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
# Requires SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
|
|
||||||
[Unit]
|
|
||||||
ConditionEnvironment=!SSH_AGENT_PID
|
|
||||||
Description=OpenSSH key agent
|
|
||||||
Documentation=man:ssh-agent(1) man:ssh-add(1) man:ssh(1)
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
|
|
||||||
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
|
|
||||||
PassEnvironment=SSH_AGENT_PID
|
|
||||||
SuccessExitStatus=2
|
|
||||||
Type=forking
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
Reference in New Issue
Block a user