aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emacs/.emacs.d/init/ycp-markup.el3
-rw-r--r--emacs/.emacs.d/lisp/my/belf.el6
-rw-r--r--emacs/.emacs.d/lisp/my/infobox.el5
-rw-r--r--emacs/.emacs.d/lisp/my/my-emms.el9
-rw-r--r--emacs/.emacs.d/lisp/my/my-libgen.el58
-rw-r--r--emacs/.emacs.d/lisp/my/my-utils.el7
-rw-r--r--emacs/.emacs.d/lisp/my/my-wget.el33
-rw-r--r--misc/.bashrc2
-rw-r--r--misc/.config/mpv/mpv.conf1
9 files changed, 76 insertions, 48 deletions
diff --git a/emacs/.emacs.d/init/ycp-markup.el b/emacs/.emacs.d/init/ycp-markup.el
index bee0c2a..6a6e8b8 100644
--- a/emacs/.emacs.d/init/ycp-markup.el
+++ b/emacs/.emacs.d/init/ycp-markup.el
@@ -107,8 +107,7 @@
(add-hook 'nov-mode-hook 'visual-line-mode)
(add-hook 'nov-mode-hook 'follow-mode)
(add-hook 'nov-mode-hook (lambda ()
- (setq next-screen-context-lines 4
- line-spacing .1)))
+ (setq line-spacing .1)))
(add-hook 'nov-post-html-render-hook 'my-nov-set-margins)
(require 'my-nov)
(my-override nov-render-title)
diff --git a/emacs/.emacs.d/lisp/my/belf.el b/emacs/.emacs.d/lisp/my/belf.el
index 4278927..35175be 100644
--- a/emacs/.emacs.d/lisp/my/belf.el
+++ b/emacs/.emacs.d/lisp/my/belf.el
@@ -397,9 +397,9 @@ Compare without leading \"The \"."
(setf (alist-get 'Title info)
(concat (alist-get 'Title info)
" -- "
- (buttonize
- "xdg-open"
- (lambda (_) (call-process "xdg-open" nil 0 nil file-name)))
+ (buttonize "context"
+ (lambda (_)
+ (funcall my-file-context-function file-name)))
" " (buttonize "find-file" (lambda (_) (find-file file-name))))
(alist-get 'Thumbnail info)
(belf-book-cover file-name)
diff --git a/emacs/.emacs.d/lisp/my/infobox.el b/emacs/.emacs.d/lisp/my/infobox.el
index 0e5e054..ff4adb6 100644
--- a/emacs/.emacs.d/lisp/my/infobox.el
+++ b/emacs/.emacs.d/lisp/my/infobox.el
@@ -171,9 +171,4 @@ something like
(lambda (line) (string-match-p "^[0-9]" line))
(split-string (buffer-string) "\n"))))
-(defun my-call-process-out (command &rest args)
- (with-temp-buffer
- (apply 'call-process (append (list command nil t nil) args))
- (buffer-string)))
-
(provide 'infobox)
diff --git a/emacs/.emacs.d/lisp/my/my-emms.el b/emacs/.emacs.d/lisp/my/my-emms.el
index 054d3d9..331f309 100644
--- a/emacs/.emacs.d/lisp/my/my-emms.el
+++ b/emacs/.emacs.d/lisp/my/my-emms.el
@@ -448,8 +448,8 @@ under /zzz-seren/."
;; How many tracks have been from the start of the album
;; (exclusive)
(past (- current-ln start-ln))
- ;; How many tracks to go (inclusive)
- (remain (- end-ln current-ln))
+ ;; ;; How many tracks to go (inclusive)
+ ;; (remain (- end-ln current-ln))
(idx (/ past my-emms-playlist-group-length))
(maybe-group-start (+ start-ln (* idx my-emms-playlist-group-length)))
(group-start
@@ -457,10 +457,11 @@ under /zzz-seren/."
;; Too close to the end of the album
(max start-ln (- maybe-group-start my-emms-playlist-group-length))
maybe-group-start))
+ (maybe-group-end (+ group-start my-emms-playlist-group-length))
(group-end
- (if (<= remain my-emms-playlist-tail-group-length)
+ (if (<= (- end-ln maybe-group-end) my-emms-playlist-tail-group-length)
end-ln
- (min end-ln (+ group-start my-emms-playlist-group-length)))))
+ (min end-ln maybe-group-end))))
(cons group-start group-end))))
(defun my-emms-playlist-random-group ()
diff --git a/emacs/.emacs.d/lisp/my/my-libgen.el b/emacs/.emacs.d/lisp/my/my-libgen.el
index 9d3a9db..84d9728 100644
--- a/emacs/.emacs.d/lisp/my/my-libgen.el
+++ b/emacs/.emacs.d/lisp/my/my-libgen.el
@@ -176,19 +176,32 @@
(defun my-libgen-plus-download-action ()
(interactive)
- (let ((info (get-text-property (point) 'button-data)))
+ (let* ((info (get-text-property (point) 'button-data))
+ (filename (file-name-concat (expand-file-name my-libgen-download-dir)
+ (my-libgen-format-filename info)))
+ (md5 (alist-get 'md5 info)))
(my-wget-async
(my-libgen-plus-get-download-url info)
- (file-name-concat (expand-file-name my-libgen-download-dir)
- (my-libgen-format-filename info)))))
+ filename
+ nil
+ (lambda () (my-libgen-check-md5 filename md5)))))
+
+(defun my-libgen-check-md5 (file md5)
+ (let ((actual (substring (my-call-process-out "md5sum" file) 0 32)))
+ (unless (equal actual md5)
+ (warn "MD5 checksum of %s mismatch: should be %s but actually %s"
+ file md5 actual))))
(defun my-libgen-download-library-action ()
(interactive)
- (let ((info (get-text-property (point) 'button-data)))
+ (let* ((info (get-text-property (point) 'button-data))
+ (filename (file-name-concat (expand-file-name my-libgen-download-dir)
+ (my-libgen-format-filename info)))
+ (md5 (alist-get 'md5 info)))
(my-wget-async
(my-libgen-make-download-link-library info)
- (format "%s/%s" (expand-file-name my-libgen-download-dir)
- (my-libgen-format-filename info)))))
+ nil
+ (lambda () (my-libgen-check-md5 filename md5)))))
(defun my-libgen-download-onion-action ()
(interactive)
@@ -291,22 +304,23 @@
(title "")
identifier
edition-id)
- (while (and as (string-empty-p title))
- (setq title (string-trim (dom-texts (car as) ""))
- edition-id (string-remove-prefix
- "edition.php?id="
- (dom-attr (car as) 'href))
- as (cdr as)))
- (when (string-empty-p title)
- (error "Title is empty: %s" dom))
(when as
- (setq identifier
- (replace-regexp-in-string
- "; " ","
- (string-trim (dom-texts (dom-by-tag (car as) 'i))))))
- `((title . ,title)
- (edition-id . ,edition-id)
- (identifier . ,identifier))))
+ (while (and as (string-empty-p title))
+ (setq title (string-trim (dom-texts (car as) ""))
+ edition-id (string-remove-prefix
+ "edition.php?id="
+ (dom-attr (car as) 'href))
+ as (cdr as)))
+ (when (string-empty-p title)
+ (error "Title is empty: %s" dom))
+ (when as
+ (setq identifier
+ (replace-regexp-in-string
+ "; " ","
+ (string-trim (dom-texts (dom-by-tag (car as) 'i))))))
+ `((title . ,title)
+ (edition-id . ,edition-id)
+ (identifier . ,identifier)))))
(defun my-libgen-plus-search-parse-tr (tr)
(let* ((tds (dom-by-tag tr 'td))
@@ -328,7 +342,7 @@
(mirrors-td (elt tds 8))
(mirrors (seq-map (lambda (mirror) (dom-attr mirror 'href))
(dom-by-tag mirrors-td 'a)))
- (md5 (substring (car mirrors) 4 36))
+ (md5 (when mirrors (substring (car mirrors) 4 36)))
)
`((title . ,title)
(identifier . ,identifier)
diff --git a/emacs/.emacs.d/lisp/my/my-utils.el b/emacs/.emacs.d/lisp/my/my-utils.el
index 3ecd0a9..0743227 100644
--- a/emacs/.emacs.d/lisp/my/my-utils.el
+++ b/emacs/.emacs.d/lisp/my/my-utils.el
@@ -304,6 +304,13 @@ Example: (format-time-string ... (my-time-from-epoch 1698582504))"
,@body
(setq default-directory saved)))
+
+(defun my-call-process-out (command &rest args)
+ "Call `call-process' on COMMAND with ARGS and return the output."
+ (with-temp-buffer
+ (apply 'call-process (append (list command nil t nil) args))
+ (buffer-string)))
+
(defun my-call-process-with-torsocks
(program &optional infile destination display &rest args)
(apply 'call-process
diff --git a/emacs/.emacs.d/lisp/my/my-wget.el b/emacs/.emacs.d/lisp/my/my-wget.el
index 5349257..e7283aa 100644
--- a/emacs/.emacs.d/lisp/my/my-wget.el
+++ b/emacs/.emacs.d/lisp/my/my-wget.el
@@ -48,20 +48,31 @@
(kill-new full-path)
(message "Saved webpage to %s (path copied)." full-path)))
-(defun my-wget-async (url filename &optional no-tor move-if-video-or-large)
+(defun my-wget-async (url filename &optional no-tor on-success on-fail)
(set-process-sentinel
(my-start-process-with-torsocks
no-tor "wget" "*wget*" "wget" url "-c" "-O" filename)
- (lambda (_process _event)
- (when (and move-if-video-or-large
- (or
- (> (file-attribute-size (file-attributes filename))
- my-wget-size-threshold)
- (member (file-name-extension filename) my-wget-video-extensions)))
- (setq filename
- (my-rename-and-symlink-back
- filename (expand-file-name my-wget-video-archive-directory) nil)))
- (message "Fetched %s and saved to: %s" url filename))))
+ (lambda (proc event)
+ (let ((ps (process-status proc))
+ (status (process-exit-status proc)))
+ (if (eq status 0)
+ (progn
+ (message "[DONE] Fetched %s to %s" url filename)
+ (when on-success (funcall on-success)))
+ (message "[FAIL] Fetching %s to %s: %s" url filename event)
+ (when on-fail (funcall on-fail))))
+ )
+ ))
+
+(defun my-wget-move-if-video-or-large (url filename _process _event)
+ (when (or
+ (> (file-attribute-size (file-attributes filename))
+ my-wget-size-threshold)
+ (member (file-name-extension filename) my-wget-video-extensions))
+ (setq filename
+ (my-rename-and-symlink-back
+ filename (expand-file-name my-wget-video-archive-directory) nil)))
+ (message "Fetched %s and saved to: %s" url filename))
(defun wget-async-urls-with-prefix (urls prefix &optional no-tor move-if-video-or-large)
(let ((i 1))
diff --git a/misc/.bashrc b/misc/.bashrc
index 814098d..2d44565 100644
--- a/misc/.bashrc
+++ b/misc/.bashrc
@@ -275,7 +275,7 @@ fi
# gs-extract 4 11 page-4-thru-11.pdf original.pdf
gs-extract() {
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=$1 -dLastPage=$2 \
- -sOutputFile=$3 $4
+ -sOutputFile="$3" "$4"
}
# ghostscript, merge files: gs-merge merged.pdf 1.pdf 2.pdf
diff --git a/misc/.config/mpv/mpv.conf b/misc/.config/mpv/mpv.conf
index a3f5d24..3b49398 100644
--- a/misc/.config/mpv/mpv.conf
+++ b/misc/.config/mpv/mpv.conf
@@ -6,6 +6,7 @@ save-position-on-quit
script-opts=ytdl_hook-ytdl_path=/usr/bin/yt-dlp
ytdl-format="bestvideo[height<=?720]+bestaudio/best"
osc=no
+stop-screensaver = "yes"
[emacsconf-talks]
# Positioning