diff options
| author | bd <bdunahu@operationnull.com> | 2025-12-13 23:43:10 -0500 |
|---|---|---|
| committer | bdunahu <bdunahu@operationnull.com> | 2026-01-03 21:46:06 -0700 |
| commit | 288ccb3984c7cb46b67d0f6bf7fb6d53c5d7a2d3 (patch) | |
| tree | 47091f5aeede90e1364546e8122cd55e6d7f2971 /.config/emacs/modules/bd--browse.el | |
| parent | df14036eb22ff9326c2806eb3f8cafc0d3042efa (diff) | |
guix: full refactor of configuration structure
Diffstat (limited to '.config/emacs/modules/bd--browse.el')
| -rw-r--r-- | .config/emacs/modules/bd--browse.el | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/.config/emacs/modules/bd--browse.el b/.config/emacs/modules/bd--browse.el deleted file mode 100644 index 33bc951..0000000 --- a/.config/emacs/modules/bd--browse.el +++ /dev/null @@ -1,146 +0,0 @@ -;;; -*- lexical-binding: t; -*- -;;; Commentary: -;;; Code: - -(require 'selector) -(require 'dash) -(require 'fill-column) - -(defun bd/browse (url &optional pref &rest _) - "Given PREF, launches URL in an external browser or eww." - (interactive) - (pcase pref - ('eww (eww url)) - ('tor (start-process "torbrowser" nil "torbrowser" "--new-window" url)) - ('chromium (start-process "chromium" nil "chromium" "--new-window" url)) - (_ (start-process "browser" nil (getenv "BROWSER") "--new-window" url)))) - -(defun bd/selector-bookmarks () - "Selector source for all bookmarks." - (selector-source-create - "Bookmarks" - :candidates - (-map - (lambda (b) (selector-candidate-create (car b) :value (cdr b))) - bd/bookmarks) - :actions - (list (lambda (x) (apply #'bd/browse x))))) - -(defmacro bd/search-candidate (name url pref) - "Syntax for a search candidate given NAME, URL, and PREF." - `(selector-candidate-create - ,(concat "Search " name) - :type 'dummy - :action (lambda (_) (browse-url (concat ,url (selector-input)) ,pref)))) - -(defun rip-video (url) - "Play URL (or search string) in mpv." - (message "Ludu %s" url) - (start-process "rip" nil - "mpv" "--force-window=yes" - (concat (if (string-match "https://.*" url) - "ytdl://" - "ytdl://ytsearch:") url))) - -(defun rip-html (url) - "Open an HTML document in an emacs org buffer." - (with-current-buffer-window url - '((display-buffer-same-window)) - nil - (princ - (shell-command-to-string - (concat "curl --silent " url " | pandoc --from=html --to=org --standalone"))) - (org-mode))) - -(defun bd/selector-rip-video () - "Selector source for streaming a video off of youtube." - (selector-candidate-create - "Search Immediate" - :type 'dummy - :action (lambda (_) (rip-video (selector-input))))) - -(defun bd/selector-search () - "Selector source for all search engines." - (selector-source-create - "Browser" - :candidates - (list (bd/search-candidate "SearXNG" "https://searx.operationnull.com/searxng/search?q=" 'wolf) - (bd/search-candidate "DuckDuckGo" "https://duckduckgo.com/html/?q=" 'eww) - (bd/search-candidate "SearXNG-E" "https://searx.operationnull.com/searxng/search?q=" 'eww) - (bd/search-candidate "Wikipedia" "https://en.wikipedia.org/w/index.php?search=" 'eww) - (bd/search-candidate "Invidious" "https://inv.nadeko.net/search?q=" 'eww) - (bd/search-candidate "Urban Dictionary" "https://www.urbandictionary.com/define.php?term=" 'wolf) - (bd/search-candidate "Nethack Wiki" "https://nethackwiki.com/w/index.php?search=" 'eww) - (bd/search-candidate "Archive of Our Own" "https://archiveofourown.org/works/search?work_search%5Bquery%5D=" 'eww) - (bd/search-candidate "Archwiki" "https://wiki.archlinux.org/index.php?title=Special%3ASearch&search=" 'eww) - - (bd/selector-rip-video) - (bd/search-candidate "Torbrowser" "" 'tor) - (bd/search-candidate "Librewolf" "" 'wolf)))) - -(defun bd/browse-dispatcher () - "Select and `browse-url' a bookmark or search feature." - (interactive) - (unwind-protect - (selector - (list (bd/selector-bookmarks) - (bd/selector-search))))) - -(setopt browse-url-handlers - `((,(regexp-opt '("youtube.com" "youtu.be" "vid.puffyan.us" "deezer.page" "deezer.com")) . - (lambda (url &rest _) (rip-video url)))) - url-privacy-level '(email os emacs lastloc cookies)) - -(use-package elpher - :bind - (:map elpher-mode-map - ("l" . #'elpher-back) - ("d" . #'elpher-download) - ("w" . #'elpher-copy-current-url) - ("A" . #'elpher-copy-link-url) - ("E" . #'elpher-bookmark-current) - ("TAB" . #'elpher-next-link) - ("g" . #'elpher-reload) - ("G" . #'elpher-go)) - :config - (defun bd/elpher (original url &optional new-window) - "Handle gemini links." - (cond ((string-match-p "\\`\\(gemini\\|gopher\\)://" url) - (elpher-go url)) - (t (funcall original url new-window)))) - (advice-add 'eww :around 'bd/elpher) - (setopt elpher-default-url-type "gemini" - elpher-connection-timeout 120 - elpher-gemini-max-fill-width 85 - elpher-use-emacs-bookmark-menu t)) - -(use-package eww - :defer 1 - :bind - (:map eww-mode-map - ("i" . eww-toggle-images) - ("o" . (lambda () (interactive) (rip-html (eww-current-url))))) - :hook - ;; eww-mode by default sets this as local var to eww-browse-url - ((eww-mode . - (lambda () - (setq-local browse-url-browser-function #'bd/browse))) - (eww-after-render . eww-readable)) - :config - (setopt eww-search-prefix "https://searx.operationnull.com/searxng/search?q=" - eww-auto-rename-buffer 'title - eww-browse-url-new-window-is-tab nil - browse-url-browser-function 'bd/browse - browse-url-secondary-browser-function #'browse-url-default-browser - eww-header-line-format "" - eww-use-browse-url (regexp-opt '("mailto:" - "youtube.com" - "youtu.be")) - shr-use-fonts nil - shr-inhibit-images t - shr-cookie-policy nil - shr-max-width 90)) - - -(provide 'bd--browse) -;;; bd--browse.el ends here |
