diff options
| author | Thomas Schneider <qsx@chaotikum.eu> | 2024-09-11 21:52:27 +0200 |
|---|---|---|
| committer | Thomas Schneider <qsx@chaotikum.eu> | 2024-09-11 21:52:27 +0200 |
| commit | 3e1c65e72ed1391200aa6ad4471a0b8d3634ff78 (patch) | |
| tree | 2875907d143ec2e64424cbe18e222e5943dd9031 | |
| parent | 814a35d77d0bcd4cc3d8d577bb11cc1cc5519a37 (diff) | |
| parent | 1d22be5e4469dd04dddd823ab3672dcbed591c4c (diff) | |
Merge remote-tracking branch 'refs/remotes/origin/main'
| -rw-r--r-- | dot.XCompose | 3 | ||||
| -rw-r--r-- | dot.config-git-ignore | 3 | ||||
| -rw-r--r-- | dot.config-nvim-init.vim | 1 | ||||
| -rw-r--r-- | dot.config-rofi-config.rasi | 2 | ||||
| -rw-r--r-- | dot.config-wireplumber-policy.lua.d-11--bluetooth--policy.lua | 1 | ||||
| -rw-r--r-- | dot.emacs.d/.gitignore | 4 | ||||
| -rw-r--r-- | dot.emacs.d/early-init.el | 1 | ||||
| -rw-r--r-- | dot.emacs.d/init.el | 232 | ||||
| -rw-r--r-- | dot.gitconfig | 2 | ||||
| -rwxr-xr-x | dot.local-bin-batt | 35 | ||||
| -rw-r--r-- | dot.zshenv | 6 | ||||
| -rw-r--r-- | dot.zshrc.local | 10 | ||||
| m--------- | grml-etc-core | 0 |
13 files changed, 242 insertions, 58 deletions
diff --git a/dot.XCompose b/dot.XCompose new file mode 100644 index 0000000..a9c0630 --- /dev/null +++ b/dot.XCompose @@ -0,0 +1,3 @@ +include "%L" +<Multi_key> <quotedbl> <quotedbl> : "″" # DOUBLE PRIME +<Multi_key> <apostrophe> <apostrophe> : "′" # PRIME diff --git a/dot.config-git-ignore b/dot.config-git-ignore new file mode 100644 index 0000000..e16c0c7 --- /dev/null +++ b/dot.config-git-ignore @@ -0,0 +1,3 @@ +\#*\# +.\#* +*~ diff --git a/dot.config-nvim-init.vim b/dot.config-nvim-init.vim new file mode 100644 index 0000000..0bb4ceb --- /dev/null +++ b/dot.config-nvim-init.vim @@ -0,0 +1 @@ +set mouse= diff --git a/dot.config-rofi-config.rasi b/dot.config-rofi-config.rasi index f362710..2c506fd 100644 --- a/dot.config-rofi-config.rasi +++ b/dot.config-rofi-config.rasi @@ -1,6 +1,6 @@ configuration { modi: "drun,run,ssh"; dpi: 0; - theme: "DarkBlue"; show-icons: true; } +@theme "DarkBlue" diff --git a/dot.config-wireplumber-policy.lua.d-11--bluetooth--policy.lua b/dot.config-wireplumber-policy.lua.d-11--bluetooth--policy.lua new file mode 100644 index 0000000..eab8f92 --- /dev/null +++ b/dot.config-wireplumber-policy.lua.d-11--bluetooth--policy.lua @@ -0,0 +1 @@ +bluetooth_policy.policy["media-role.use-headset-profile"] = false diff --git a/dot.emacs.d/.gitignore b/dot.emacs.d/.gitignore index 368c9cc..124687e 100644 --- a/dot.emacs.d/.gitignore +++ b/dot.emacs.d/.gitignore @@ -14,3 +14,7 @@ /abbrev_defs /elpy /eln-cache +/.cache +/.cask +/projects +/tree-sitter diff --git a/dot.emacs.d/early-init.el b/dot.emacs.d/early-init.el new file mode 100644 index 0000000..512068a --- /dev/null +++ b/dot.emacs.d/early-init.el @@ -0,0 +1 @@ +(setq package-enable-at-startup nil) diff --git a/dot.emacs.d/init.el b/dot.emacs.d/init.el index 56945a0..992421f 100644 --- a/dot.emacs.d/init.el +++ b/dot.emacs.d/init.el @@ -1,18 +1,23 @@ +;; See early-init.el for further package stuff (require 'package) -(setq package-enable-at-startup nil) (setq package-archives - '(("melpa" . "https://melpa.org/packages/") - ("gnu" . "https://elpa.gnu.org/packages/"))) + '(("melpa-stable" . "https://stable.melpa.org/packages/") + ("melpa-unstable" . "https://melpa.org/packages/") + ("gnu" . "https://elpa.gnu.org/packages/")) + ;; Use melpa-unstable only when explicitly requested + package-archive-priorities '(("melpa-stable" . 1) + ("gnu" . 1))) (package-initialize) (unless (package-installed-p 'use-package) (package-refresh-contents) - (package-install 'use-package t)) + (package-install 'use-package)) (require 'use-package) (setq use-package-always-ensure t - use-package-verbose t) + use-package-verbose t + use-package-always-defer t) -(let ((--backup-directory (concat user-emacs-directory "backups"))) +(let ((--backup-directory (locate-user-emacs-file "backups"))) (unless (file-exists-p --backup-directory) (make-directory --backup-directory t)) (setq backup-directory-alist `(("." . ,--backup-directory)))) @@ -28,30 +33,38 @@ auto-save-interval 200 ; number of keystrokes between auto-saves (default: 300) ) (defun qsx-backup-enable-predicate (name) - (let ((directory (file-name-directory (file-truename (expand-file-name name)))) + (let ((directory + (file-name-directory (file-truename (expand-file-name name)))) (auto-save-list-directory - (file-name-as-directory - (file-truename (expand-file-name "auto-save-list" user-emacs-directory))))) + (file-truename + (expand-file-name + (file-name-as-directory + (locate-user-emacs-file "auto-save-list")))))) (if (string= directory auto-save-list-directory) nil (normal-backup-enable-predicate name)))) (setq backup-enable-predicate #'qsx-backup-enable-predicate) -(let ((default-directory - (concat user-emacs-directory - (convert-standard-filename "elisp/")))) +(let ((default-directory (locate-user-emacs-file "elisp"))) (normal-top-level-add-to-load-path '(".")) (normal-top-level-add-subdirs-to-load-path)) (load "server") (unless (server-running-p) (server-start)) -(setq custom-file - (concat user-emacs-directory - (convert-standard-filename "custom.el"))) -(load custom-file :noerror) +(use-package modus-themes + :defer nil + :init + (dolist + (hash + '("7613ef56a3aebbec29618a689e47876a72023bbd1b8393efc51c38f5ed3f33d1" + "c7a926ad0e1ca4272c90fce2e1ffa7760494083356f6bb6d72481b879afce1f2")) + (add-to-list 'custom-safe-themes hash)) + :config + (load-theme 'modus-vivendi-tinted)) -(load-theme 'deeper-blue) +(setq custom-file (locate-user-emacs-file "custom.el")) +(load custom-file :noerror) (setq display-time-day-and-date t display-time-24hr-format t) @@ -64,12 +77,16 @@ :init (exec-path-from-shell-initialize)) (setenv "LANG" "de_DE.UTF-8")) +(use-package yasnippet) + (use-package company :bind (:map company-mode-map ([remap completion-at-point] . #'company-complete)) :config - (setq company-tooltip-align-annotations t - company-minimum-prefix-length 1)) + (setq company-tooltip-align-annotations t) + :hook ((company-mode . yas-minor-mode) + (prog-mode . company-mode))) + (use-package company-math :config (add-hook 'TeX-mode-hook (defun qsx-TeX-mode-hook-company () @@ -94,21 +111,67 @@ (semantic-mode 1) (use-package srefactor :bind (:map c-mode-map - ("M-RET" . #'srefactor-refactor-at-point))) + ("M-RET" . #'srefactor-refactor-at-point)) + :after project) -(use-package elpy - :ensure t - :defer t +(use-package python + :ensure nil + :hook ((python-mode python-ts-mode) . lsp)) +(use-package pet :init - (advice-add 'python-mode :before 'elpy-enable)) + (add-hook 'python-base-mode-hook 'pet-mode -10)) -(use-package lsp-mode - :commands lsp) +(use-package highlight-indentation + :hook python-base-mode) + +(defun qsx-no-indent-tabs-mode () + (setq indent-tabs-mode nil)) + +(use-package cperl-mode + :ensure nil + :init + (add-to-list 'major-mode-remap-alist '(perl-mode . cperl-mode)) + (add-hook 'cperl-mode-hook #'qsx-no-indent-tabs-mode)) -(use-package lsp-ui) +(use-package flymake-perlcritic + :pin melpa-unstable ; Last release in 2012 + :config + (dolist (h '(flymake-mode + flymake-perlcritic-setup)) + (add-hook 'cperl-mode-hook h)) + (setq flymake-perlcritic-severity 1)) + +(use-package treesit-auto + :demand t + :custom + (treesit-auto-install 'prompt) + :config + (setq treesit-auto-langs (seq-difference treesit-auto-langs '(go gomod yaml))) + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode)) -(use-package company-lsp - :hook (company-mode . yas-minor-mode)) +(use-package editorconfig + :defer nil + :config + (editorconfig-mode 1)) + +(use-package tide + :after (company flycheck) + :hook ((typescript-ts-mode . tide-setup) + (tsx-ts-mode . tide-setup) + (typescript-ts-mode . tide-hl-identifier-mode))) + +(use-package lsp-mode + :commands lsp + :bind-keymap ("s-l" . lsp-command-map) + ;; https://emacs-lsp.github.io/lsp-mode/page/performance/ + :init + (setq read-process-output-max (* 1024 1024) ;; 1 MiB + gc-cons-threshold 6400000)) +(use-package lsp-ui + :commands lsp-ui-mode) +(use-package helm-lsp + :commands helm-lsp-workspace-symbol) (use-package mercurial :ensure nil @@ -119,8 +182,20 @@ ("C-c m m" . #'magit-status) ("C-c m p" . #'magit-dispatch-popup) ("C-c m f" . #'magit-file-popup) - ("C-c m d" . #'magit-diff-buffer-file)) - :config (global-magit-file-mode)) + ("C-c m d" . #'magit-diff-buffer-file))) + +(use-package transpose-frame + :init + (dolist (i '(("j" . transpose-frame) + ("i" . flip-frame) + ("o" . flop-frame) + ("r" . rotate-frame) + ("c" . rotate-frame-clockwise) + ("C" . rotate-frame-anticlockwise))) + (dolist (p '("s-j " "s-j s-")) + (bind-key + (concat p (car i)) + (cdr i))))) (use-package ace-window :bind ("M-o" . ace-window) @@ -129,19 +204,20 @@ (use-package avy :bind (("C-." . avy-goto-char-timer) ("C-:" . avy-goto-char-2) - ("C-," . avy-goto-line))) + ("C-," . avy-goto-line)) + :custom (avy-keys '(?c ?t ?i ?e ?n ?r ?s ?g))) -(use-package helm-config - :ensure nil - :bind-keymap ("C-c h" . helm-command-prefix) - :bind (:map helm-command-map - ("o" . #'helm-occur))) (use-package helm + :demand t + :bind-keymap ("C-c h" . helm-command-map) :bind (("M-x" . #'helm-M-x) + ("s-x" . #'execute-extended-command) ("M-y" . #'helm-show-kill-ring) ("C-x b" . #'helm-mini) ("C-x C-f" . #'helm-find-files) - ("C-h SPC" . #'helm-all-mark-rings)) + ("C-h SPC" . #'helm-all-mark-rings) + :map helm-command-map + ("o" . #'helm-occur)) :config (helm-mode 1) (helm-autoresize-mode t) @@ -166,14 +242,9 @@ (use-package meson-mode) -(if (< emacs-major-version 26) - (use-package linum-relative - :ensure t - :config - (linum-mode) - (linum-relative-global-mode) - (setq linum-relative-current-symbol "")) - (setq-default display-line-numbers 'relative)) +(use-package systemd) + +(setq-default display-line-numbers 'relative) (use-package stripe-buffer :config @@ -196,8 +267,19 @@ (use-package yaml-mode :config (add-hook 'yaml-mode-hook - (defun qsx-hl-indent-mode-hook () - (highlight-indentation-mode)))) + (defun qsx-yaml-hl-indent-mode-hook () + (highlight-indentation-mode) + (highlight-indentation-set-offset yaml-indent-offset))) + (add-hook 'yaml-mode-hook #'qsx-no-indent-tabs-mode)) + +(use-package elisp-mode + :ensure nil + :config + (add-hook 'emacs-lisp-mode-hook #'qsx-no-indent-tabs-mode)) + +(use-package macrostep + :bind (:map emacs-lisp-mode-map + ("C-c e" . macrostep-expand))) (use-package k8s-mode :hook (k8s-mode . yas-minor-mode)) @@ -210,7 +292,8 @@ (dolist (h '(Man-mode-hook eshell-mode-hook - ledger-report-mode-hook)) + ledger-report-mode-hook + special-mode-hook)) (add-hook h #'qsx-dont-show-line-numbers-hook)) (use-package pdf-tools @@ -247,7 +330,17 @@ (dolist (f '(qsx-enable-TeX-fold-mode turn-on-auto-fill prettify-symbols-mode)) - (add-hook 'TeX-mode-hook f))) + (add-hook 'TeX-mode-hook f)) + (TeX-add-symbols + '("cref" TeX-arg-ref) + '("Cref" TeX-arg-ref) + '("cpageref" TeX-arg-ref) + '("Cpageref" TeX-arg-ref)) + (TeX-ispell-skip-setcar + '(("\\\\[cC]ref" ispell-tex-arg-end 1) + ("\\\\cite" ispell-tex-arg-end) + ("\\\\iac" ispell-tex-arg-end) + ("\\\\\\(text\\)?tt" ispell-tex-arg-end)))) (use-package reftex :if (display-graphic-p) @@ -307,12 +400,39 @@ (setq column-number-mode t) (global-set-key (kbd "C-x C-k") #'kill-this-buffer) -(global-set-key (kbd "C-M-y") '(lambda () - (interactive) - (insert (gui-get-primary-selection)))) +(global-set-key (kbd "C-M-y") #'(lambda () + (interactive) + (insert (gui-get-primary-selection)))) -(add-hook 'org-mode-hook #'turn-on-auto-fill) -(setq org-list-allow-alphabetical t) +(use-package org + :ensure nil + :config + (add-hook 'org-mode-hook #'turn-on-auto-fill) + (setq org-list-allow-alphabetical t) + (org-babel-do-load-languages + 'org-babel-load-languages + '((emacs-lisp . t) + (dot . t) + (sqlite . t))) + (add-to-list + 'org-latex-packages-alist + '("AUTO" "polyglossia" t ("xelatex" "lualatex"))) + (add-to-list + 'org-latex-packages-alist + '("AUTO" "babel" t ("pdflatex"))) + (add-to-list + 'org-latex-packages-alist + '("" "booktabs" nil)) + (add-to-list + 'org-latex-classes + '("scrartcl" + "\\documentclass{scrartcl}" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + (setq org-latex-default-class "scrartcl")) (setq-default fill-column 80) @@ -329,6 +449,7 @@ (use-package haskell-mode) (use-package ledger-mode + :pin melpa-unstable ; Last release 4.0.0 is incompatible :config (setq ledger-default-date-format "%Y-%m-%d" ledger-use-iso-dates t)) @@ -345,6 +466,7 @@ ;;; Mail (use-package gnus + :defer t :config (setq message-kill-buffer-on-exit t diff --git a/dot.gitconfig b/dot.gitconfig index 82b0e9e..b4342de 100644 --- a/dot.gitconfig +++ b/dot.gitconfig @@ -13,7 +13,7 @@ praise = blame rofl = log --all --graph --format='%C(green)%h%Creset %C(yellow)%an%Creset %C(blue bold)%ad%Creset %C(red bold)%d%Creset%s' --date=relative --abbrev-commit --decorate [push] - default = simple + default = current [instaweb] local = true httpd = webrick diff --git a/dot.local-bin-batt b/dot.local-bin-batt new file mode 100755 index 0000000..415afba --- /dev/null +++ b/dot.local-bin-batt @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +import datetime + +import gi + +gi.require_version("UPowerGlib", "1.0") +from gi.repository import UPowerGlib as upower + +client = upower.Client.new() +dev = client.get_display_device() + +items = [] + +pct = dev.get_property("percentage") +energy = dev.get_property("energy") +energy_full = dev.get_property("energy-full") +items.append(f"{pct} % ({energy:.4g} Wh / {energy_full:.4g} Wh), ") + +state = upower.Device.state_to_string(dev.get_property("state")) +items.append(state) + +energy_rate = dev.get_property("energy-rate") +if energy_rate != 0: + items.append(f" @ {energy_rate:.4g} W") + +time_to_empty = dev.get_property("time-to-empty") +if time_to_empty > 0: + items.append(f", {datetime.timedelta(seconds=time_to_empty)} until empty") + +time_to_full = dev.get_property("time-to-full") +if time_to_full > 0: + items.append(f", {datetime.timedelta(seconds=time_to_full)} until full") + +print("".join(items)) @@ -24,7 +24,11 @@ manpath=( ~/.local/share/man(/N) $manpath ) -typeset -xU path manpath +fpath=( + ~/.local/share/zsh(/N) + $fpath +) +typeset -xU path manpath fpath [ -S ~/.gnupg/S.gpg-agent.ssh ] && export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh [ -S /run/user/$EUID/gnupg/S.gpg-agent.ssh ] && export SSH_AUTH_SOCK=/run/user/$EUID/gnupg/S.gpg-agent.ssh [ -S $XDG_RUNTIME_DIR/mpd/socket ] && export MPD_HOST=$XDG_RUNTIME_DIR/mpd/socket diff --git a/dot.zshrc.local b/dot.zshrc.local index 19fb1f6..f48bf28 100644 --- a/dot.zshrc.local +++ b/dot.zshrc.local @@ -63,6 +63,11 @@ qsx_fix_vcs_info # Reset terminal cursor printf "\033[0 q" } +if ! (( $+commands[open] )) && (( $+commands[gio] )); then + function open { + gio open "$@" >/dev/null 2>/dev/null + } +fi alias g=git alias ec="emacsclient -n" alias et="emacsclient -t" @@ -72,6 +77,11 @@ if (( $+commands[exa] )); then alias l="exa -g -l --git" alias la="exa -g -la --git" fi +if (( $+commands[eza] )); then + alias ls="eza" + alias l="eza -g -l --git" + alias la="eza -g -la --git" +fi if (( $+commands[rsync] )); then alias rs="rsync -vahPi" fi diff --git a/grml-etc-core b/grml-etc-core -Subproject 2f64ae016b211b59ddd38b1ad2026b2ff933632 +Subproject bdc51f9788c98839cfcb248b9a16d87c8f99c3e |
