Compare commits
10 Commits
master
...
feat/per-h
| Author | SHA1 | Date | |
|---|---|---|---|
| 504daea61e | |||
| d06a382cbf | |||
| fac4a09eeb | |||
| fe90a0f607 | |||
| dfa689633f | |||
| c40210ab31 | |||
| f507d53c42 | |||
| c659d00098 | |||
| f45387456b | |||
| 75df6d502a |
@@ -1,3 +1,2 @@
|
||||
archive/
|
||||
scripts/
|
||||
secrets/
|
||||
|
||||
53
Makefile
53
Makefile
@@ -1,40 +1,37 @@
|
||||
# Define list of directories you want to stow
|
||||
CONFIG_DIRS := btop doom hypr kitty exokortex nvim rclone starship tmux wallpapers waybar wireplumber wofi yazi zsh
|
||||
CONFIG_DIRS := btop doom hypr kitty local nvim rclone starship tmux wallpapers waybar wireplumber wofi yazi zsh
|
||||
|
||||
# Default target for a fully-equipped workstation
|
||||
all: stow_all stow_rclone stow_exokortex
|
||||
all: stow_all
|
||||
wal -i ~/.config/wallpapers/green_yellow_forest.jpg -o ~/.config/waybar/launch.sh
|
||||
fastfetch
|
||||
neofetch
|
||||
|
||||
# Base configurations common to ALL hosts (excludes host-specific network/system automation)
|
||||
stow_all: $(filter-out rclone exokortex, $(CONFIG_DIRS))
|
||||
@echo "Removing legacy shell symlinks if they exist..."
|
||||
# Main target to handle stowing for all directories except rclone
|
||||
stow_all: $(filter-out rclone, $(CONFIG_DIRS))
|
||||
@echo "Cleaning broken symlinks in ~/.config..."
|
||||
find ~/.config -xtype l -delete -print
|
||||
@echo "Removing symlink ~/.zshrc if it exists..."
|
||||
@if [ -L $$HOME/.zshrc ]; then rm $$HOME/.zshrc; fi
|
||||
@echo "Removing symlink ~/.tmux.conf if it exists..."
|
||||
@if [ -L $$HOME/.tmux.conf ]; then rm $$HOME/.tmux.conf; fi
|
||||
@echo "Stowing baseline configurations..."
|
||||
@$(foreach dir,$(filter-out rclone exokortex, $(CONFIG_DIRS)), $(MAKE) stow_$(dir);)
|
||||
@echo "Stowing all configurations except rclone..."
|
||||
@$(foreach dir,$(filter-out rclone, $(CONFIG_DIRS)), $(MAKE) stow_$(dir);)
|
||||
|
||||
# Generic atomic stow command using Restow (-R) for clean tracking
|
||||
# Generic stow command for user-scoped directories
|
||||
stow_%:
|
||||
@echo "Stowing package: $*"
|
||||
stow -R -v -t $(HOME) $*
|
||||
@echo "Stowing $*"
|
||||
stow -v -t $(HOME) $*
|
||||
|
||||
# Dedicated target for rclone (Omit this target on hosts that don't need it)
|
||||
stow_rclone:
|
||||
@echo "Stowing rclone securely..."
|
||||
stow -R -v -t $(HOME) rclone
|
||||
# Post-installation script for rclone (executed after stowing)
|
||||
post_install_rclone:
|
||||
@echo "Running post-installation script for rclone"
|
||||
@bash $(CURDIR)/scripts/rclone_post_install.sh
|
||||
|
||||
# Dedicated target for exokortex (Omit this target on sterile servers if needed)
|
||||
stow_exokortex:
|
||||
@echo "Stowing exokortex automation layers..."
|
||||
stow -R -v -t $(HOME) exokortex
|
||||
@echo "Running post-installation script for exokortex"
|
||||
@bash $(CURDIR)/scripts/exokortex_post_install.sh
|
||||
|
||||
# Optional: Global cleanup target you only run manually when you want a deep system purge
|
||||
prune_dead_links:
|
||||
@echo "Purging all broken symlinks across core configuration profiles..."
|
||||
find ~/.config -xtype l -delete -print
|
||||
find ~/.local/bin -xtype l -delete -print
|
||||
# Special target for rclone to run post-install after stowing
|
||||
stow_rclone:
|
||||
@echo "Cleaning broken symlinks in ~/.config/rclone/..."
|
||||
find ~/.config/rclone/ -xtype l -delete -print
|
||||
@echo "Removing symlink ~/.local/bin/rclone_mount_check.sh if it exists..."
|
||||
@if [ -L $$HOME/.local/bin/rclone_mount_check.sh ]; then rm $$HOME/.local/bin/rclone_mount_check.sh; fi
|
||||
@echo "Stowing rclone"
|
||||
stow -v -t $(HOME) rclone
|
||||
@$(MAKE) post_install_rclone
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#? Config file for btop v.1.4.7
|
||||
#? Config file for btop v.1.4.6
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
@@ -14,11 +14,6 @@ truecolor = true
|
||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||
force_tty = false
|
||||
|
||||
#* Option to disable presets. Either the default preset, custom presets, or all presets.
|
||||
#* "Off" All presets are enabled.
|
||||
#* "Default" preset is disabled.#* "Custom" presets are disabled.#* "All" presets are disabled.
|
||||
disable_presets = "Off"
|
||||
|
||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||
#* Use whitespace " " as separator between different presets.
|
||||
@@ -29,9 +24,6 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
|
||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||
vim_keys = true
|
||||
|
||||
#* Disable all mouse events.
|
||||
disable_mouse = false
|
||||
|
||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||
rounded_corners = true
|
||||
|
||||
@@ -100,9 +92,6 @@ proc_left = false
|
||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||
proc_filter_kernel = false
|
||||
|
||||
#* Should the process list follow the selected process when detailed view is open.
|
||||
proc_follow_detailed = true
|
||||
|
||||
#* In tree-view, always accumulate child process resources in the parent process.
|
||||
proc_aggregate = true
|
||||
|
||||
@@ -219,9 +208,6 @@ io_graph_combined = false
|
||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||
io_graph_speeds = ""
|
||||
|
||||
#* Swap the positions of the upload and download speed graphs. When true, upload will be on top.
|
||||
swap_upload_download = false
|
||||
|
||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||
net_download = 100
|
||||
|
||||
@@ -264,7 +250,7 @@ rsmi_measure_pcie_speeds = true
|
||||
#* Horizontally mirror the GPU graph.
|
||||
gpu_mirror_graph = true
|
||||
|
||||
#* Set which GPU vendors to show. Available values are "nvidia amd intel apple"
|
||||
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
|
||||
shown_gpus = "nvidia amd intel"
|
||||
|
||||
#* Custom gpu0 model name, empty string to disable.
|
||||
|
||||
1
doom/.config/doom/.gitignore
vendored
1
doom/.config/doom/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
*.bak
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 5.4 KiB |
@@ -14,8 +14,6 @@
|
||||
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(setq +literate-config-file "~/.config/doom/README.org")
|
||||
|
||||
(doom! :input
|
||||
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
@@ -33,7 +31,7 @@
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
dashboard ; a nifty splash screen for Emacs
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
@@ -70,7 +68,7 @@
|
||||
;;word-wrap ; soft wrapping with language-aware indent
|
||||
|
||||
:emacs
|
||||
(dired +dirvish +icons) ; making dired pretty [functional]
|
||||
(dired +dirvish + icons) ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
eww ; the internet is gross
|
||||
|
||||
@@ -165,7 +163,7 @@
|
||||
+pretty
|
||||
+journal
|
||||
+present
|
||||
+roam
|
||||
+roam2
|
||||
+pandoc
|
||||
+noter)
|
||||
;;php ; perl's insecure younger brother
|
||||
@@ -203,11 +201,11 @@
|
||||
|
||||
:app
|
||||
calendar
|
||||
emms ; Multimedia system
|
||||
;;emms ; Multimedia system
|
||||
everywhere ; *leave* Emacs!? You must be joking
|
||||
irc ; how neckbeards socialize
|
||||
(rss +org +youtube) ; emacs as an RSS reader
|
||||
;;(rss +org) ; emacs as an RSS reader
|
||||
|
||||
:config
|
||||
literate
|
||||
;;literate
|
||||
(default +bindings +smartparens))
|
||||
|
||||
@@ -1,297 +0,0 @@
|
||||
;;; hermes-preview.el --- Preview & apply Emacs Lisp edits with inline diff overlays -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2026 Thierry Pouplier
|
||||
;; Version: 0.1
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Takes a list of Emacs Lisp command forms, executes each on a copy
|
||||
;; of the current buffer, diffs the result, and presents the diff as
|
||||
;; an inline overlay (green/red, +/- lines) on the original buffer.
|
||||
;;
|
||||
;; Each overlay has its own accept/reject commands — you can approve
|
||||
;; changes one by one. On accept, the exact same command is replayed
|
||||
;; on the real buffer, ensuring org timestamps, LOGBOOK entries,
|
||||
;; properties drawers etc. are formatted correctly.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'cl-lib)
|
||||
|
||||
(defvar hermes-preview-alist nil
|
||||
"List of active preview entries.
|
||||
Each element is (COMMAND BUFFER OVERLAY STATUS) where
|
||||
COMMAND — the Emacs Lisp form to execute
|
||||
BUFFER — the temp buffer holding the result
|
||||
OVERLAY — the overlay on the real buffer
|
||||
STATUS — 'pending, 'accepted, or 'rejected")
|
||||
|
||||
(defvar-keymap hermes-preview-actions-map
|
||||
:doc "Keymap for hermes preview overlays."
|
||||
"RET" #'hermes-preview-dispatch
|
||||
"C-c C-a" #'hermes-preview-accept
|
||||
"C-c C-k" #'hermes-preview-reject
|
||||
"C-c C-d" #'hermes-preview-diff
|
||||
"C-c C-n" #'hermes-preview-next
|
||||
"C-c C-p" #'hermes-preview-previous)
|
||||
|
||||
(defface hermes-preview-removed
|
||||
'((t (:inherit diff-removed)))
|
||||
"Face for removed lines in the preview overlay."
|
||||
:group 'hermes-preview)
|
||||
|
||||
(defface hermes-preview-added
|
||||
'((t (:inherit diff-added)))
|
||||
"Face for added lines in the preview overlay."
|
||||
:group 'hermes-preview)
|
||||
|
||||
;;;###autoload
|
||||
(defun hermes-preview-start (commands &optional file)
|
||||
"Execute COMMANDS (list of Emacs Lisp forms) as previews on FILE.
|
||||
Each command is run on a temp copy, diffed, and an inline overlay
|
||||
is placed on the real buffer showing the +/- diff in green/red.
|
||||
You can then accept or reject each overlay individually."
|
||||
(interactive)
|
||||
(let ((file (or file (buffer-file-name))))
|
||||
(unless file
|
||||
(user-error "Buffer is not visiting a file"))
|
||||
(unless (listp commands)
|
||||
(user-error "COMMANDS must be a list of Emacs Lisp forms"))
|
||||
(dolist (cmd commands)
|
||||
(hermes-preview--process-one cmd file))
|
||||
(hermes-preview--status-message)))
|
||||
|
||||
(defun hermes-preview--process-one (cmd file)
|
||||
"Preview a single COMMAND on FILE, creating an overlay."
|
||||
(let* ((orig-buf (current-buffer))
|
||||
(temp-buf (generate-new-buffer (format " *hermes-preview-%d*"
|
||||
(length hermes-preview-alist))))
|
||||
(cmd-str (prin1-to-string cmd))
|
||||
(ov nil))
|
||||
;; Copy file content to temp buffer
|
||||
(with-current-buffer temp-buf
|
||||
(insert-file-contents file)
|
||||
(delay-mode-hooks (funcall major-mode))
|
||||
(goto-char (point-min)))
|
||||
;; Execute command on temp buffer
|
||||
(condition-case err
|
||||
(with-current-buffer temp-buf
|
||||
(eval cmd t))
|
||||
(error
|
||||
(kill-buffer temp-buf)
|
||||
(display-warning '(hermes-preview)
|
||||
(format "Command failed: %s\n %s" cmd-str err))
|
||||
(cl-return-from hermes-preview--process-one nil)))
|
||||
;; Diff original vs temp
|
||||
(let* ((diff-buf (get-buffer-create " *hermes-preview-diff*"))
|
||||
(patch-text
|
||||
(with-current-buffer diff-buf
|
||||
(erase-buffer)
|
||||
(save-excursion
|
||||
(insert (shell-command-to-string
|
||||
(format "diff -u \"%s\" /dev/stdin <<< \"%s\""
|
||||
file
|
||||
(shell-quote-argument
|
||||
(with-current-buffer temp-buf
|
||||
(buffer-string)))))))
|
||||
(buffer-string))))
|
||||
;; Actually we need a proper diff between two buffers
|
||||
;; Let's use Emacs's diff-no-select
|
||||
(let ((diff-buf (diff-no-select orig-buf temp-buf nil t)))
|
||||
(with-current-buffer diff-buf
|
||||
;; Parse the hunks
|
||||
(goto-char (point-min))
|
||||
;; Find the first hunk
|
||||
(when (re-search-forward "^@@ -\\([0-9]+\\),\\([0-9]*\\) \\+\\([0-9]+\\),\\([0-9]*\\) @@" nil t)
|
||||
(let* ((orig-line (string-to-number (match-string 1)))
|
||||
(orig-count (string-to-number (or (match-string 2) "1")))
|
||||
(new-line (string-to-number (match-string 3)))
|
||||
(new-count (string-to-number (or (match-string 4) "1")))
|
||||
(ov-end (save-excursion
|
||||
(goto-char (point-min))
|
||||
(forward-line (1- orig-line))
|
||||
(if (zerop orig-count)
|
||||
(point)
|
||||
(forward-line orig-count)
|
||||
(point))))
|
||||
;; Build the diff display string
|
||||
(diff-lines (hermes-preview--parse-hunk diff-buf))
|
||||
(display-str (hermes-preview--diff-to-string diff-lines)))
|
||||
;; Create overlay on the real buffer
|
||||
(with-current-buffer orig-buf
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(forward-line (1- orig-line))
|
||||
(setq ov (make-overlay (point)
|
||||
(if (zerop orig-count)
|
||||
(point)
|
||||
(progn (forward-line orig-count)
|
||||
(point)))
|
||||
nil t nil)))
|
||||
;; If 0 lines removed, overlay at insertion point
|
||||
(when (and (zerop orig-count) (not (zerop new-count)))
|
||||
(move-overlay ov (1- (point)) (point)))
|
||||
;; Store data in overlay
|
||||
(overlay-put ov 'hermes-preview t)
|
||||
(overlay-put ov 'hermes-preview-cmd cmd)
|
||||
(overlay-put ov 'hermes-preview-temp-buf temp-buf)
|
||||
(overlay-put ov 'hermes-preview-diff-str display-str)
|
||||
(overlay-put ov 'hermes-preview-status 'pending)
|
||||
;; Face: grey out original text
|
||||
(overlay-put ov 'face '(:inherit shadow :strike-through t))
|
||||
;; Display the diff inline
|
||||
(overlay-put ov 'after-string
|
||||
(propertize (concat "\n" display-str "\n")
|
||||
'face '(:inherit default)))
|
||||
;; Keymap
|
||||
(overlay-put ov 'keymap hermes-preview-actions-map)
|
||||
;; Add to alist
|
||||
(push (list cmd temp-buf ov 'pending) hermes-preview-alist)))))))))
|
||||
|
||||
(defun hermes-preview--parse-hunk (diff-buf)
|
||||
"Parse diff hunks in DIFF-BUF into a list of (type . text) entries.
|
||||
TYPE is 'context, 'removed, or 'added."
|
||||
(let ((lines))
|
||||
(with-current-buffer diff-buf
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
(let ((line (buffer-substring-no-properties
|
||||
(point) (min (1+ (line-end-position)) (point-max)))))
|
||||
(cond ((string-match-p "^[-+][^-+]" line)
|
||||
(push (cons (if (eq (aref line 0) ?-) 'removed 'added)
|
||||
(substring line 1))
|
||||
lines))
|
||||
((string-match-p "^[ ]" line)
|
||||
(push (cons 'context (substring line 1)) lines))
|
||||
;; skip header lines
|
||||
(t nil)))
|
||||
(forward-line 1)))
|
||||
(nreverse lines)))
|
||||
|
||||
(defun hermes-preview--diff-to-string (lines)
|
||||
"Convert LINES (from `hermes-preview--parse-hunk') to a propertized string."
|
||||
(mapconcat
|
||||
(lambda (entry)
|
||||
(pcase (car entry)
|
||||
('removed (propertize (concat "- " (cdr entry)) 'face 'hermes-preview-removed))
|
||||
('added (propertize (concat "+ " (cdr entry)) 'face 'hermes-preview-added))
|
||||
('context (propertize (concat " " (cdr entry)) 'face '(:inherit shadow)))))
|
||||
lines "\n"))
|
||||
|
||||
(defun hermes-preview--status-message ()
|
||||
"Show how many pending previews there are."
|
||||
(let ((pending (cl-count-if (lambda (e) (eq (nth 3 e) 'pending)) hermes-preview-alist)))
|
||||
(message "%d preview(s) pending — RET to act, C-c C-n/p to navigate"
|
||||
pending)))
|
||||
|
||||
;;; Actions
|
||||
|
||||
(defun hermes-preview-overlay-at (&optional pt)
|
||||
"Get the hermes-preview overlay at PT (or point)."
|
||||
(let ((ov (car-safe (get-char-property-and-overlay
|
||||
(or pt (point)) 'hermes-preview))))
|
||||
(unless ov (user-error "No preview overlay at point"))
|
||||
ov))
|
||||
|
||||
(defun hermes-preview--entry-for-overlay (ov)
|
||||
"Find the preview entry for overlay OV."
|
||||
(cl-find-if (lambda (e) (eq (nth 2 e) ov)) hermes-preview-alist))
|
||||
|
||||
(defun hermes-preview-accept (ov)
|
||||
"Accept the preview at OV — replay command on the real file."
|
||||
(interactive (list (hermes-preview-overlay-at)))
|
||||
(when-let ((entry (hermes-preview--entry-for-overlay ov)))
|
||||
(let ((cmd (nth 0 entry))
|
||||
(temp-buf (nth 1 entry)))
|
||||
;; Replay the exact command on the real buffer
|
||||
(condition-case err
|
||||
(eval cmd t)
|
||||
(error (user-error "Accept failed: %s" err)))
|
||||
;; Clean up overlay
|
||||
(hermes-preview--cleanup ov)
|
||||
(setf (nth 3 entry) 'accepted)
|
||||
;; Also delete the temp buffer if 0 refs remain
|
||||
(hermes-preview--maybe-kill-temp temp-buf)
|
||||
(message "Preview accepted."))))
|
||||
|
||||
(defun hermes-preview-reject (ov)
|
||||
"Reject the preview at OV — discard change."
|
||||
(interactive (list (hermes-preview-overlay-at)))
|
||||
(when-let ((entry (hermes-preview--entry-for-overlay ov)))
|
||||
(let ((temp-buf (nth 1 entry)))
|
||||
(hermes-preview--cleanup ov)
|
||||
(setf (nth 3 entry) 'rejected)
|
||||
(hermes-preview--maybe-kill-temp temp-buf)
|
||||
(message "Preview rejected."))))
|
||||
|
||||
(defun hermes-preview-dispatch (ov)
|
||||
"Dispatch menu for a preview overlay."
|
||||
(interactive (list (hermes-preview-overlay-at)))
|
||||
(let ((action (read-char-choice
|
||||
(concat "Action: [a]ccept, [r]eject, [d]iff, [q]uit? ")
|
||||
'(?a ?r ?d ?q))))
|
||||
(pcase action
|
||||
(?a (hermes-preview-accept ov))
|
||||
(?r (hermes-preview-reject ov))
|
||||
(?d (hermes-preview-show-diff ov))
|
||||
(?q nil))))
|
||||
|
||||
(defun hermes-preview-show-diff (ov)
|
||||
"Show a proper unified diff buffer for OV."
|
||||
(interactive (list (hermes-preview-overlay-at)))
|
||||
(when-let ((entry (hermes-preview--entry-for-overlay ov)))
|
||||
(let* ((orig-buf (current-buffer))
|
||||
(temp-buf (nth 1 entry))
|
||||
(diff-buf (get-buffer-create "*hermes-preview-full-diff*")))
|
||||
(with-current-buffer diff-buf
|
||||
(erase-buffer)
|
||||
(diff-no-select orig-buf temp-buf nil nil diff-buf)
|
||||
(diff-mode))
|
||||
(display-buffer diff-buf))))
|
||||
|
||||
(defun hermes-preview-next ()
|
||||
"Move to the next pending preview."
|
||||
(interactive)
|
||||
(let ((pt (next-single-char-property-change (point) 'hermes-preview)))
|
||||
(if (get-char-property pt 'hermes-preview)
|
||||
(goto-char pt)
|
||||
(user-error "No next preview"))))
|
||||
|
||||
(defun hermes-preview-previous ()
|
||||
"Move to the previous pending preview."
|
||||
(interactive)
|
||||
(let ((pt (previous-single-char-property-change (point) 'hermes-preview)))
|
||||
(if (get-char-property (max (1- pt) (point-min)) 'hermes-preview)
|
||||
(goto-char (max (1- pt) (point-min)))
|
||||
(user-error "No previous preview"))))
|
||||
|
||||
;;; Cleanup
|
||||
|
||||
(defun hermes-preview--cleanup (ov)
|
||||
"Remove overlay OV and any display artifacts."
|
||||
(overlay-put ov 'after-string nil)
|
||||
(overlay-put ov 'face nil)
|
||||
(overlay-put ov 'hermes-preview nil)
|
||||
(delete-overlay ov))
|
||||
|
||||
(defun hermes-preview--maybe-kill-temp (buf)
|
||||
"Kill temp BUF if no other entry references it."
|
||||
(when (buffer-live-p buf)
|
||||
(unless (cl-find-if (lambda (e)
|
||||
(and (eq (nth 3 e) 'pending)
|
||||
(eq (nth 1 e) buf)))
|
||||
hermes-preview-alist)
|
||||
(kill-buffer buf))))
|
||||
|
||||
(defun hermes-preview-clear-all ()
|
||||
"Reject all pending previews and clean up."
|
||||
(interactive)
|
||||
(dolist (entry hermes-preview-alist)
|
||||
(when (eq (nth 3 entry) 'pending)
|
||||
(hermes-preview--cleanup (nth 2 entry))
|
||||
(hermes-preview--maybe-kill-temp (nth 1 entry))
|
||||
(setf (nth 3 entry) 'rejected)))
|
||||
(message "All previews cleared."))
|
||||
|
||||
(provide 'hermes-preview)
|
||||
;;; hermes-preview.el ends here
|
||||
@@ -7,16 +7,6 @@
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;; (package! some-package)
|
||||
|
||||
;; Emacs = kirby
|
||||
;; (package! emacs-application-framework
|
||||
;; :recipe (:host github
|
||||
;; :repo "emacs-eaf/emacs-application-framework"
|
||||
;; :files ("*")
|
||||
;; ;; Automatically pull the browser and video-player modules during doom sync
|
||||
;; :post-build (shell-command "python3 install-eaf.py --install browser video-player")))
|
||||
(package! emskin
|
||||
:recipe (:host github :repo "emskin/emskin"))
|
||||
|
||||
;; pywal for emacs
|
||||
(package! ewal)
|
||||
|
||||
@@ -26,30 +16,6 @@
|
||||
;; Pointer highlight
|
||||
(package! beacon)
|
||||
|
||||
;; Centered view
|
||||
(package! olivetti)
|
||||
|
||||
;; The real gruvbox
|
||||
(package! gruvbox-theme)
|
||||
|
||||
;; token theme
|
||||
(package! token-theme
|
||||
:recipe (:host github :repo "ThorstenRhau/token"
|
||||
:protocol ssh
|
||||
:files ("contrib/emacs/*.el")))
|
||||
|
||||
;; vscode theme
|
||||
(package! vscode-dark-plus-theme)
|
||||
|
||||
;; tomorrow theme
|
||||
(package! color-theme-sanityinc-tomorrow)
|
||||
|
||||
;; Prot themes
|
||||
(package! ef-themes)
|
||||
|
||||
;; Colored parenthesis
|
||||
(package! rainbow-delimiters)
|
||||
|
||||
;; Weather in the agenda
|
||||
;; (package! weather-metno) ;; Not working.. :(
|
||||
|
||||
@@ -169,13 +135,11 @@
|
||||
(package! passage
|
||||
:recipe (:host github :repo "anticomputer/passage.el" :protocol ssh))
|
||||
|
||||
;; Server is down, deactivated for now
|
||||
;; (package! krl-mode
|
||||
;; :recipe (:host nil
|
||||
;; :repo "ssh://code.lazyworkhorse.net:2222/gortium/krl-mode.git"
|
||||
;; :files ("*.el")))
|
||||
(package! krl-mode
|
||||
:recipe (:local-repo "/home/tpouplier/ExoKortex/3-Resources/krl-mode"
|
||||
:files ("*.el")))
|
||||
|
||||
(package! auto-highlight-symbol)
|
||||
|
||||
@@ -224,6 +188,3 @@
|
||||
;; (unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;; (unpin! t)
|
||||
|
||||
;; Transmission BitTorrent client interface
|
||||
(package! transmission)
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
[Unit]
|
||||
Description=Automated ExoKortex PARA Node Git Sweep
|
||||
Documentation=https://github.com/gortium
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=%h/.local/bin/exokortex_auto_commit.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
@@ -1,9 +0,0 @@
|
||||
[Unit]
|
||||
Description=Run Automated ExoKortex Sweep Hourly
|
||||
|
||||
[Timer]
|
||||
OnCalendar=hourly
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# ==============================================================================
|
||||
# PARA TARGET CONTROLS
|
||||
# Comment out (#) any directory to completely deactivate it from the sweep.
|
||||
# ==============================================================================
|
||||
TARGETS=(
|
||||
"$HOME/ExoKortex/1-Projects"
|
||||
"$HOME/ExoKortex/2-Areas"
|
||||
# "$HOME/ExoKortex/3-Resources"
|
||||
# "$HOME/ExoKortex/4-Archives/"
|
||||
)
|
||||
|
||||
# Protect against empty arrays if all targets get disabled
|
||||
if [ ${#TARGETS[@]} -eq 0 ]; then
|
||||
echo "Drop execution: No active PARA targets configured."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Root ExoKortex repo (root-level org files only; see ~/ExoKortex/.gitignore)
|
||||
if git -C "$HOME/ExoKortex" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
||||
if [ -n "$(git -C "$HOME/ExoKortex" status --porcelain)" ]; then
|
||||
git -C "$HOME/ExoKortex" add -A
|
||||
git -C "$HOME/ExoKortex" commit -m "System: Automated background sweep $(date +'%Y-%m-%d %H:%M')"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Execute strict structural scanning on active paths only
|
||||
find "${TARGETS[@]}" -mindepth 2 -maxdepth 2 -type d -name ".git" | while read -r gitdir; do
|
||||
repo_dir=$(dirname "$gitdir")
|
||||
cd "$repo_dir"
|
||||
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
git add .
|
||||
git commit -m "System: Automated background sweep $(date +'%Y-%m-%d %H:%M')"
|
||||
fi
|
||||
done
|
||||
55
hypr/.config/hypr/hosts/laptop.conf
Normal file
55
hypr/.config/hypr/hosts/laptop.conf
Normal file
@@ -0,0 +1,55 @@
|
||||
# Laptop (Ingenuity/Valkyrie) — NVIDIA + external monitors
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
$LAPTOP=eDP-1
|
||||
$EXTERNAL_L1=DP-4
|
||||
$EXTERNAL_R1=DP-5
|
||||
$EXTERNAL_L2=DP-6
|
||||
$EXTERNAL_R2=DP-7
|
||||
|
||||
monitor=$LAPTOP, 1920x1080, 0x0, 1
|
||||
monitor=DP-3, 1920x1080, 1920x0, 1
|
||||
|
||||
monitor=$EXTERNAL_L1, 1920x1080, 0x-1080, 1, transform, 0
|
||||
monitor=$EXTERNAL_L2, 1920x1080,0x-1080,1,transform,0
|
||||
monitor=$EXTERNAL_R1, 1920x1080, 1920x-1480, 1, transform, 1
|
||||
monitor=$EXTERNAL_R2, 1920x1080,1920x-1480,1,transform,1
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
env = LIBVA_DRIVER_NAME,nvidia
|
||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
env = WLR_NO_HARDWARE_CURSOR,1
|
||||
env = GBM_BACKEND,nvidia-drm
|
||||
env = WLR_RENDERER_ALLOW_SOFTWARE,1
|
||||
|
||||
####################
|
||||
### WORKSPACES ###
|
||||
####################
|
||||
|
||||
workspace = 1, name:short-1, monitor:DP-4
|
||||
workspace = 2, name:short-2, monitor:DP-4
|
||||
workspace = 3, name:long-1, monitor:DP-5
|
||||
workspace = 4, name:long-2, monitor:DP-5
|
||||
workspace = 5, name:smoll, monitor:eDP-1
|
||||
workspace = special:tools, layout:dwindle, gapsin:0
|
||||
|
||||
### WALLPAPER ###
|
||||
|
||||
exec-once = swww img ~/.config/wallpapers/green_yellow_forest.jpg --outputs $LAPTOP
|
||||
exec-once = swww img ~/.config/wallpapers/green_yellow_forest.jpg --outputs $EXTERNAL_L1
|
||||
exec-once = swww img ~/.config/wallpapers/green_yellow_forest.jpg --outputs $EXTERNAL_L2
|
||||
exec-once = swww img ~/.config/wallpapers/buck_head.jpg --outputs $EXTERNAL_R1
|
||||
exec-once = swww img ~/.config/wallpapers/buck_head.jpg --outputs $EXTERNAL_R2
|
||||
|
||||
####################
|
||||
### MODIFIER ###
|
||||
####################
|
||||
|
||||
$mainMod = SUPER
|
||||
|
||||
46
hypr/.config/hypr/hosts/uconsole.conf
Normal file
46
hypr/.config/hypr/hosts/uconsole.conf
Normal file
@@ -0,0 +1,46 @@
|
||||
# uConsole CM5 — DSI display
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
monitor=DSI-2, 720x1280, 0x0, 1, transform, 3
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
env = WLR_NO_HARDWARE_CURSOR,1
|
||||
|
||||
####################
|
||||
### KEYBOARD ###
|
||||
####################
|
||||
|
||||
# The key with the house icon (between Fn and left Alt) IS Super_L.
|
||||
# On uConsole: that bottom-row key left of spacebar = SUPER.
|
||||
# If it doesn't work, use ALT instead:
|
||||
# $mainMod = ALT (affects ALL binds below)
|
||||
#
|
||||
# Additional ALT bindings for convenience (work alongside SUPER):
|
||||
# Note: SUPER+KEY and ALT+KEY both trigger the same action
|
||||
|
||||
####################
|
||||
### WORKSPACES ###
|
||||
####################
|
||||
|
||||
workspace = 1, name:short-1, monitor:DSI-2
|
||||
workspace = 2, name:short-2, monitor:DSI-2
|
||||
workspace = 3, name:long-1, monitor:DSI-2
|
||||
|
||||
####################
|
||||
### AUTOSTART ###
|
||||
####################
|
||||
|
||||
exec-once = swww img ~/.config/wallpapers/green_yellow_forest.jpg --outputs DSI-2
|
||||
|
||||
####################
|
||||
### MODIFIER ###
|
||||
####################
|
||||
|
||||
$mainMod = CTRL ALT
|
||||
|
||||
@@ -1,59 +1,14 @@
|
||||
# This is an example Hyprland config file.
|
||||
# Refer to the wiki for more information.
|
||||
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
|
||||
# Common Hyprland configuration — shared across all hosts
|
||||
# Host-specific settings (monitors, env, workspaces) in host/monitors.conf
|
||||
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
|
||||
# You can split this configuration into multiple files
|
||||
# Create your files separately and then link them to this file like this:
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
source = mocha.conf
|
||||
source = ~/.cache/wal/colors-hyprland.conf
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
$LAPTOP=eDP-1
|
||||
$EXTERNAL_L1=DP-4
|
||||
$EXTERNAL_R1=DP-5
|
||||
$EXTERNAL_L2=DP-6
|
||||
$EXTERNAL_R2=DP-7
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
# Useful command:
|
||||
# hyprctl monitors all
|
||||
|
||||
## Valkyrie setup
|
||||
# monitor=eDP-1,highres,auto,2 #3200x1800,0x0,2
|
||||
# monitor=HDMI-A-2,2560x1600,auto,1 #1600x0,1 #x-370,1,transform,1
|
||||
|
||||
## Ingenuity setup
|
||||
monitor=$LAPTOP, 1920x1080, 0x0, 1
|
||||
monitor=DP-3, 1920x1080, 1920x0, 1 # HDMI screen
|
||||
|
||||
# Horizontal setup
|
||||
#monitor=DP-4,1920x1080,-960x-1080,1 # Left screen
|
||||
#monitor=DP-6,1920x1080,-960x-1080,1 # Left screen
|
||||
#monitor=DP-5,1920x1080,960x-1080,1 # Right screen
|
||||
#monitor=DP-7,1920x1080,960x-1080,1 # Right screen
|
||||
|
||||
# Vertical setup (left horizontal, right vertical)
|
||||
# monitor=desc:Dell Inc. DELL SE2725H BML2X14, 1920x1080, 0x-1080, 1, transform, 0 # Left screen (horizontal)
|
||||
# monitor=desc:Dell Inc. DELL SE2725H 34R2X14, 1920x1080, 1920x-1480, 1, transform, 1 # Right screen (vertical)
|
||||
|
||||
# Double Vertical setup
|
||||
monitor=desc:Dell Inc. DELL SE2725H BML2X14, 1920x1080, -1080x-1480, 1, transform, 3 # Left screen (vertical)
|
||||
monitor=desc:Dell Inc. DELL SE2725H 34R2X14, 1920x1080, 1920x-1480, 1, transform, 1 # Right screen (vertical)
|
||||
# source = ~/.cache/wal/colors-hyprland.conf (disabled — no pywal on uConsole)
|
||||
source = hosts/monitors.conf
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$editor = emacsclient -c -a emacs
|
||||
$menu = wofi --show drun
|
||||
@@ -65,81 +20,48 @@ $monitoring = kitty btop
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
# exec-once = $terminal
|
||||
# exec-once = nm-applet &
|
||||
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE
|
||||
exec = hyprshade auto
|
||||
exec-once = udiskie
|
||||
exec-once = waybar
|
||||
exec-once = swww-daemon
|
||||
exec-once = swaync
|
||||
exec-once = hypridle
|
||||
exec-once = hyprlock
|
||||
exec-once = /usr/bin/emacs --daemon
|
||||
exec-once = swww-daemon
|
||||
exec-once = sleep 1 && swww img ~/.config/wallpapers/green_yellow_forest.jpg --outputs $LAPTOP,$EXTERNAL_L1,$EXTERNAL_L2
|
||||
exec-once = sleep 1 && swww img ~/.config/wallpapers/buck_head.jpg --outputs $EXTERNAL_R1,$EXTERNAL_R2
|
||||
exec-once = emacs --daemon
|
||||
exec-once = dbus-update-activation-environment --systemd HYPRLAND_INSTANCE_SIGNATURE
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
env = LIBVA_DRIVER_NAME,nvidia
|
||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
env = WLR_NO_HARDWARE_CURSOR,1
|
||||
env = XDG_SESSION_TYPE,wayland
|
||||
env = GBM_BACKEND,nvidia-drm
|
||||
env = WLR_RENDERER_ALLOW_SOFTWARE,1
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 7.5
|
||||
gaps_out = 15
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = $color1 $color1 $color2 45deg
|
||||
col.inactive_border = $background
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 4
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 0.9
|
||||
inactive_opacity = 0.75
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = true
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
|
||||
animation = windows, 1, 1.6, myBezier
|
||||
animation = windowsOut, 1, 1.6, default, popin 80%
|
||||
animation = border, 1, 1.6, default
|
||||
@@ -149,59 +71,37 @@ animations {
|
||||
animation = specialWorkspace, 1, 1.6, myBezier, slidefadevert -10%
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
# Note: pseudotile variable removed in 0.55+. Use `pseudo` dispatcher to toggle per-window.
|
||||
# Bound to $mainMod + P below.
|
||||
|
||||
# This prevents the layout from collapsing if you close one window
|
||||
preserve_split = true # You probably want this
|
||||
|
||||
# 0 -> follow mouse, 1 -> always left/top, 2 -> always right/bottom
|
||||
preserve_split = true
|
||||
force_split = 2
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
||||
force_default_wallpaper = 0
|
||||
disable_hyprland_logo = true
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us,ca #,halmak
|
||||
kb_layout = us,ca
|
||||
kb_options = grp:win_space_toggle, ctrl:nocaps
|
||||
# kb_variant =
|
||||
# kb_model =
|
||||
# kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0.5 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
sensitivity = 0.5
|
||||
touchpad {
|
||||
natural_scroll = true
|
||||
disable_while_typing = true
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
# workspace_swipe = false
|
||||
}
|
||||
gestures {}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
@@ -211,73 +111,54 @@ device {
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
$dotfiles = ~/ExoKortex/2-Areas/Home-Infra/4-Outputs/dotfiles
|
||||
$mainMod = CTRL ALT
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, T, exec, $terminal
|
||||
bind = $mainMod, D, killactive,
|
||||
bind = $mainMod SHIFT, Q, exit,
|
||||
# Restart compositor (fixes MST dock screens stuck black after hotplug) — wrapper respawns
|
||||
bind = $mainMod SHIFT, R, exec, pkill -f '^Hyprland'
|
||||
bind = $mainMod, U, exec, $dotfiles/scripts/make_all.sh && swww img ~/.config/wallpapers/green_yellow_forest.jpg --outputs $LAPTOP,$EXTERNAL_L1,$EXTERNAL_L2 && swww img ~/.config/wallpapers/buck_head.jpg --outputs $EXTERNAL_R1,$EXTERNAL_R2
|
||||
bind = $mainMod, U, exec, ~/ExoKortex/4-Automata/dotfiles/scripts/make_all.sh
|
||||
bind = $mainMod, M, exec, $monitoring
|
||||
bind = $mainMod, E, exec, $editor
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, R, exec, $menu
|
||||
bind = $mainMod, Z, exec, $zen
|
||||
# togglesplit removed as standalone dispatcher in 0.55+; use `layoutmsg togglesplit` instead
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, P, pseudo,
|
||||
bind = $mainMod, N, movecurrentworkspacetomonitor, -1
|
||||
bind = $mainMod SHIFT, N, movecurrentworkspacetomonitor, +1
|
||||
bind = $mainMod, X, swapwindow
|
||||
bind = $mainMod, B, exec, python $dotfiles/recordntrans/record_transcribe.py
|
||||
bind = $mainMod, i, exec, $dotfiles/scripts/scrot-ocr.sh
|
||||
# bind = $mainMod, G, exec, nerd-dictation end
|
||||
bind = $mainMod, B, exec, python /home/tpouplier/ExoKortex/4-Automata/recordntrans/record_transcribe.py
|
||||
bind = $mainMod, A, exec, $music
|
||||
bind = $mainMod, C, exec, emacsclient -n -c -e '(gortium/hermes-vterm)'
|
||||
|
||||
# Full screen
|
||||
bind = SUPER, F, fullscreen
|
||||
|
||||
# Screenshot
|
||||
bind = SUPER, F, fullscreen
|
||||
bind = , PRINT, exec, hyprshot -m output
|
||||
bind = $mainMod, PRINT, exec, hyprshot -m window
|
||||
bind = shift, PRINT, exec, hyprshot -m region
|
||||
|
||||
# hyprlock
|
||||
bind = $mainMod, o, exec, hyprlock
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, h, movefocus, l
|
||||
bind = $mainMod, j, movefocus, d
|
||||
bind = $mainMod, k, movefocus, u
|
||||
bind = $mainMod, l, movefocus, r
|
||||
|
||||
# Forward and reverse cycle (to focus floating)
|
||||
bind = $mainMod, Tab, cyclenext
|
||||
bind = $mainMod SHIFT, Tab, cyclenext, prev
|
||||
|
||||
# Resize windows
|
||||
bind = $mainMod CTRL, l, resizeactive, 20 0
|
||||
bind = $mainMod CTRL, h, resizeactive, -20 0
|
||||
bind = $mainMod CTRL, k, resizeactive, 0 -20
|
||||
bind = $mainMod CTRL, j, resizeactive, 0 20
|
||||
|
||||
# Swap window position
|
||||
bind = $mainMod SHIFT, h, swapwindow, l
|
||||
bind = $mainMod SHIFT, j, swapwindow, d
|
||||
bind = $mainMod SHIFT, k, swapwindow, u
|
||||
bind = $mainMod SHIFT, l, swapwindow, r
|
||||
|
||||
# Move floating window
|
||||
bind = $mainMod SHIFT, l, moveactive, 100 0
|
||||
bind = $mainMod SHIFT, h, moveactive, -100 0
|
||||
bind = $mainMod SHIFT, k, moveactive, 0 -100
|
||||
bind = $mainMod SHIFT, j, moveactive, 0 100
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
@@ -289,7 +170,6 @@ bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
@@ -301,19 +181,15 @@ bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, tools
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:tools
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
@@ -321,13 +197,11 @@ bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
# Emacs-everywhere
|
||||
bind = $mainMod, W, exec, emacsclient --eval '(thanos/type)'
|
||||
windowrule {
|
||||
name = float-emacs
|
||||
@@ -335,45 +209,16 @@ windowrule {
|
||||
float = true
|
||||
}
|
||||
|
||||
# Play/Pause
|
||||
# bind = $mainMod, P, exec, playerctl play-pause
|
||||
|
||||
# Next Track
|
||||
# bind = $mainmod SHIFT, L, exec, playerctl next
|
||||
|
||||
# Previous Track
|
||||
# bind = $mainmod SHIFT, H, exec, playerctl previous
|
||||
|
||||
# Volume Up (player volume)
|
||||
# bind = $mainmod , U, exec, playerctl volume 0.05+
|
||||
|
||||
# Volume Down (player volume)
|
||||
# bind = $mainmod, D, exec, playerctl volume 0.05-
|
||||
|
||||
# Stop Playback
|
||||
# bind = $mainmod, S, exec, playerctl stop
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule v1
|
||||
# windowrule = float, ^(kitty)$
|
||||
|
||||
# Example windowrule v2
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule {
|
||||
name = suppress-maximize-events
|
||||
match:class = .*
|
||||
suppress_event = maximize
|
||||
}
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule {
|
||||
name = nofocus-xwayland-float
|
||||
match:class = ^$
|
||||
@@ -385,15 +230,7 @@ windowrule {
|
||||
no_focus = true
|
||||
}
|
||||
|
||||
workspace = 1, name:short-1, monitor:DP-4 # Left screen
|
||||
workspace = 2, name:short-2, monitor:DP-4 # Left screen
|
||||
workspace = 3, name:long-1, monitor:DP-5 # Right screen
|
||||
workspace = 4, name:long-2, monitor:DP-5 # Right screen
|
||||
workspace = 5, name:smoll, monitor:eDP-1 # Laptop screen
|
||||
#workspace = 4, name:windows, monitor:DP-4, on-created-empty:VBoxManage startvm "Windows 11"
|
||||
workspace = special:tools, layout:dwindle, gapsin:0
|
||||
|
||||
# Top Left: btop
|
||||
# Dashboard windows for special workspace
|
||||
windowrule {
|
||||
name = dashboard-btop
|
||||
match:class = ^(btop)$
|
||||
@@ -401,7 +238,6 @@ windowrule {
|
||||
workspace = special:tools
|
||||
}
|
||||
|
||||
# Top Right: ncspot
|
||||
windowrule {
|
||||
name = dashboard-ncspot
|
||||
match:class = ^(ncspot)$
|
||||
@@ -409,7 +245,6 @@ windowrule {
|
||||
workspace = special:tools
|
||||
}
|
||||
|
||||
# Bottom Left: ncpamixer
|
||||
windowrule {
|
||||
name = dashboard-ncpamixer
|
||||
match:class = ^(ncpamixer)$
|
||||
@@ -417,7 +252,6 @@ windowrule {
|
||||
workspace = special:tools
|
||||
}
|
||||
|
||||
# Bottom Right: bluetuith
|
||||
windowrule {
|
||||
name = dashboard-bluetuith
|
||||
match:class = ^(bluetuith)$
|
||||
@@ -425,7 +259,6 @@ windowrule {
|
||||
workspace = special:tools
|
||||
}
|
||||
|
||||
# Bind to launch the suite (Run this once)
|
||||
bind = $mainMod, grave, exec, kitty --class btop btop
|
||||
bind = $mainMod, grave, exec, kitty --class ncspot ncspot
|
||||
bind = $mainMod, grave, exec, kitty --class ncpamixer ncpamixer
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
source = $HOME/.cache/wal/colors-hyprland.conf
|
||||
|
||||
general {
|
||||
# ignore_empty_input = true
|
||||
ignore_empty_input = true
|
||||
}
|
||||
|
||||
background {
|
||||
|
||||
@@ -2,26 +2,14 @@
|
||||
Description=Mount Rclone FTP
|
||||
After=network-online.target network.target
|
||||
Wants=network-online.target
|
||||
StartLimitIntervalSec=0
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
# Use Environment to explicitly set $HOME
|
||||
Environment=HOME=%h
|
||||
RestartSec=60
|
||||
ExecStartPre=%h/.local/bin/rclone_mount_check.sh
|
||||
ExecStartPre=-/bin/fusermount -uz %h/mnt/tdnde_server
|
||||
ExecStart=/usr/bin/rclone mount tdnde_ftp: %h/mnt/tdnde_server \
|
||||
--vfs-cache-mode full \
|
||||
--vfs-cache-max-size 4G \
|
||||
--vfs-read-chunk-size 4M \
|
||||
--vfs-read-chunk-size-limit 128M \
|
||||
--buffer-size 32M \
|
||||
--ftp-concurrency 20 \
|
||||
--timeout 300s \
|
||||
--contimeout 60s \
|
||||
--dir-cache-time 1h
|
||||
ExecStop=/bin/fusermount -uz %h/mnt/tdnde_server
|
||||
ExecStopPost=/bin/fusermount -uz %h/mnt/tdnde_server
|
||||
ExecStart=/usr/bin/rclone mount tdnde_ftp: %h/mnt/tdnde_server --vfs-cache-mode full --vfs-cache-max-size 1G --ftp-concurrency 20 --timeout 60s --contimeout 30s --dir-cache-time 1h
|
||||
ExecStop=/bin/fusermount -u %h/mnt/tdnde_server
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define paths
|
||||
SWEEP_SCRIPT="$HOME/.local/bin/exokortex_auto_commit.sh"
|
||||
TIMER_FILE="$HOME/.config/systemd/user/exokortex_auto_commit.timer"
|
||||
|
||||
# Ensure the sweeper script is executable
|
||||
if [ -f "$SWEEP_SCRIPT" ] && [ ! -x "$SWEEP_SCRIPT" ]; then
|
||||
echo "Making the exokortex sweep script executable: $SWEEP_SCRIPT"
|
||||
chmod +x "$SWEEP_SCRIPT" || { echo "Failed to make the script executable"; exit 1; }
|
||||
else
|
||||
echo "Sweep script already executable or doesn't exist yet."
|
||||
fi
|
||||
|
||||
# Reload user systemd to recognize the new units
|
||||
systemctl --user daemon-reload
|
||||
|
||||
# Enable and start the timer if the configuration file is in place
|
||||
if [ -f "$TIMER_FILE" ]; then
|
||||
if ! systemctl --user is-enabled --quiet exokortex_auto_commit.timer; then
|
||||
echo "Enabling the exokortex_auto_commit timer."
|
||||
systemctl --user enable exokortex_auto_commit.timer || { echo "Failed to enable the timer"; exit 1; }
|
||||
else
|
||||
echo "Exokortex timer already enabled."
|
||||
fi
|
||||
else
|
||||
echo "Timer file does not exist at $TIMER_FILE."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Start the timer if it is not currently ticking
|
||||
if systemctl --user is-active --quiet exokortex_auto_commit.timer; then
|
||||
echo "exokortex_auto_commit timer is already running."
|
||||
else
|
||||
echo "Starting the exokortex_auto_commit timer."
|
||||
systemctl --user start exokortex_auto_commit.timer || echo "Warning: ExoKortex timer failed to start, skipping..."
|
||||
fi
|
||||
|
||||
echo "Post-installation steps for exokortex completed."
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
cd ~/ExoKortex/2-Areas/Home-Infra/4-Outputs/dotfiles
|
||||
cd ~/ExoKortex/4-Automata/dotfiles/
|
||||
make all
|
||||
if [ $? -eq 0 ]; then
|
||||
notify-send "Dotfiles" "Configuration reloaded successfully!"
|
||||
|
||||
@@ -33,7 +33,7 @@ if systemctl --user is-active --quiet rclone_ftp_mount.service; then
|
||||
echo "Rclone service is already running."
|
||||
else
|
||||
echo "Starting the rclone service."
|
||||
systemctl --user start rclone_ftp_mount.service || echo "Warning: Rclone service failed to start, skipping..."
|
||||
systemctl --user start rclone_ftp_mount.service || { echo "Failed to start the service"; exit 1; }
|
||||
fi
|
||||
|
||||
echo "Post-installation steps for rclone completed."
|
||||
echo "Post-installation steps for rclone completed successfully."
|
||||
|
||||
@@ -60,7 +60,7 @@ play = [
|
||||
[open]
|
||||
rules = [
|
||||
# Folder
|
||||
{ url = "*/", use = [ "edit", "open", "reveal" ] },
|
||||
{ name = "*/", use = [ "edit", "open", "reveal" ] },
|
||||
# Text
|
||||
{ mime = "text/*", use = [ "edit", "reveal" ] },
|
||||
# Image
|
||||
@@ -75,7 +75,7 @@ rules = [
|
||||
# Empty file
|
||||
{ mime = "inode/empty", use = [ "edit", "reveal" ] },
|
||||
# Fallback
|
||||
{ url = "*", use = [ "open", "reveal" ] },
|
||||
{ name = "*", use = [ "open", "reveal" ] },
|
||||
]
|
||||
|
||||
[tasks]
|
||||
|
||||
12
zsh/.zshrc
12
zsh/.zshrc
@@ -20,7 +20,7 @@ alias emacs="emacsclient -c -a emacs"
|
||||
alias oc="opencode"
|
||||
|
||||
# Hermes Agent - SSH directly to remote server
|
||||
hermes-rmt() {
|
||||
hermes() {
|
||||
if [[ -n "$1" ]]; then
|
||||
ssh -t lazyworkhorse \
|
||||
"docker exec -e HERMES_HONCHO_PEER_NAME=$1 -it hermes \
|
||||
@@ -32,7 +32,7 @@ hermes-rmt() {
|
||||
fi
|
||||
}
|
||||
|
||||
hermes-rmt-cp() {
|
||||
hermes-cp() {
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: hermes-cp <file_or_directory> [...]"
|
||||
echo ""
|
||||
@@ -67,9 +67,6 @@ function yy() {
|
||||
rm -f -- "$tmp"
|
||||
}
|
||||
|
||||
# dua
|
||||
alias dua="dua i"
|
||||
|
||||
# Nvim
|
||||
export LANG=en_CA.UTF-8
|
||||
export LC_ALL=en_CA.UTF-8
|
||||
@@ -79,7 +76,7 @@ export EDITOR="nvim"
|
||||
source <(fzf --zsh)
|
||||
|
||||
# Capitalization fixing in tab completion
|
||||
autoload -Uz compinit && compinit -u
|
||||
autoload -Uz compinit && compinit
|
||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
|
||||
|
||||
# Bat
|
||||
@@ -168,6 +165,3 @@ export HYPRSHOT_DIR="Images"
|
||||
|
||||
# Created by `pipx` on 2026-03-03 16:51:31
|
||||
export PATH="$PATH:/home/tpouplier/.local/bin"
|
||||
|
||||
# autosuggestions
|
||||
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
|
||||
Reference in New Issue
Block a user