adding nyxt and zola base
This commit is contained in:
		
							parent
							
								
									f7c0143e18
								
							
						
					
					
						commit
						240df1fa41
					
				
					 17 changed files with 8481 additions and 337 deletions
				
			
		| 
						 | 
				
			
			@ -138,7 +138,7 @@ bind = SUPER,w,exec,/home/chris/bin/window.sh
 | 
			
		|||
bind = SUPER,E,exec,/home/chris/bin/emacslof
 | 
			
		||||
bind = SUPER,d,exec,emacsclient -c -e '(dired-jump)'
 | 
			
		||||
bind = SUPER,v,exec,emacsclient -e '(chris/dired-open-videos)'
 | 
			
		||||
bind = SUPER,B,exec,/home/chris/bin/fflof
 | 
			
		||||
bind = SUPER,B,exec,/home/chris/bin/nyxtlof
 | 
			
		||||
bind = SUPER,A,exec,alacritty --class pulsemixer -e pulsemixer
 | 
			
		||||
bind = SUPERCTRL,i,exec,alacritty --class btop -e btop
 | 
			
		||||
bind = ,Print,exec,screenshot
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										0
									
								
								.config/nyxt/auto-config.3.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								.config/nyxt/auto-config.3.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -1,16 +0,0 @@
 | 
			
		|||
(DEFINE-CONFIGURATION NYXT/REDUCE-TRACKING-MODE:REDUCE-TRACKING-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/FORCE-HTTPS-MODE:FORCE-HTTPS-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/AUTO-MODE:AUTO-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/CERTIFICATE-EXCEPTION-MODE:CERTIFICATE-EXCEPTION-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/HELP-MODE:HELP-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/WEB-MODE:WEB-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION NYXT/VI-MODE:USER-VI-NORMAL-MODE
 | 
			
		||||
  ((VISIBLE-IN-STATUS-P NIL)))
 | 
			
		||||
(DEFINE-CONFIGURATION BUFFER
 | 
			
		||||
                      ((CURRENT-ZOOM-RATIO 0.75)))
 | 
			
		||||
							
								
								
									
										215
									
								
								.config/nyxt/config.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								.config/nyxt/config.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,215 @@
 | 
			
		|||
(in-package #:nyxt-user) ; While implicit, this allows SLY to know which package we are in.
 | 
			
		||||
 | 
			
		||||
#+nyxt-3 (reset-asdf-registries)
 | 
			
		||||
 | 
			
		||||
(defvar *web-buffer-modes*
 | 
			
		||||
  '(:blocker-mode :force-https-mode
 | 
			
		||||
    :reduce-tracking-mode
 | 
			
		||||
    :user-script-mode :bookmarklets-mode)
 | 
			
		||||
  "The modes to enable in any web-buffer by default.
 | 
			
		||||
Extension files (like dark-reader.lisp) are to append to this list.
 | 
			
		||||
 | 
			
		||||
Why the variable? Because it's too much hassle copying it everywhere.")
 | 
			
		||||
 | 
			
		||||
;; Create a function to launch mpv with given url
 | 
			
		||||
(defun mpv (url)
 | 
			
		||||
  "MPV launches with given url using the fast profile."
 | 
			
		||||
  (uiop:launch-program (list "mpv" "--profile=fast" url "&")))
 | 
			
		||||
 | 
			
		||||
;; Create a function to download videos with youtube-dl in alacritty
 | 
			
		||||
(defun youtube-dl (url)
 | 
			
		||||
  "Download videos and audio with youtube-dl in alacritty for feedback"
 | 
			
		||||
  (uiop:launch-program
 | 
			
		||||
   (list "dlvideo" url)))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(define-configuration :web-buffer
 | 
			
		||||
  ((default-modes (append (list :vi-normal-mode) %slot-value%))))
 | 
			
		||||
 | 
			
		||||
(define-configuration (:modable-buffer :prompt-buffer :editor-buffer)
 | 
			
		||||
    "Set up Emacs keybindings everywhere possible.
 | 
			
		||||
 | 
			
		||||
If you're the VI person, then use this:
 | 
			
		||||
(define-configuration :web-buffer
 | 
			
		||||
  ((default-modes (append (list :vi-normal-mode) %slot-value%))))
 | 
			
		||||
 | 
			
		||||
You probably want to stay with CUA in :prompt-buffer, because it's too
 | 
			
		||||
weird using it with VI bindings. But if you're feeling risky, then:
 | 
			
		||||
(define-configuration :prompt-buffer
 | 
			
		||||
  ((default-modes (append (list :vi-insert-mode) %slot-value%))))"
 | 
			
		||||
  ((default-modes `(:vi-insert-mode ,@%slot-value%))))
 | 
			
		||||
 | 
			
		||||
(define-configuration :prompt-buffer
 | 
			
		||||
  "Make the attribute widths adjust to the content in them.
 | 
			
		||||
 | 
			
		||||
It's not exactly necessary on master, because there are more or less
 | 
			
		||||
intuitive default widths, but these are sometimes inefficient (and
 | 
			
		||||
note that I made this feature so I want to have it :P)."
 | 
			
		||||
  ((dynamic-attribute-width-p t)))
 | 
			
		||||
 | 
			
		||||
(define-configuration :prompt-buffer
 | 
			
		||||
  ((hide-single-source-header-p
 | 
			
		||||
    t
 | 
			
		||||
    :doc "This is to hide the header is there's only one source.
 | 
			
		||||
There also used to be other settings to make prompt-buffer a bit
 | 
			
		||||
more minimalist, but those are internal APIs :(")))
 | 
			
		||||
 | 
			
		||||
(define-configuration :web-buffer
 | 
			
		||||
  "Basic modes setup for web-buffer."
 | 
			
		||||
  ((default-modes `(,@*web-buffer-modes* ,@%slot-value%))))
 | 
			
		||||
 | 
			
		||||
(define-configuration :browser
 | 
			
		||||
  "Set new buffer URL (a.k.a. start page, new tab page)."
 | 
			
		||||
  ((default-new-buffer-url (quri:uri "nyxt:nyxt/mode/repl:repl"))))
 | 
			
		||||
 | 
			
		||||
(define-configuration :nosave-buffer
 | 
			
		||||
  "Enable proxy in nosave (private, incognito) buffers."
 | 
			
		||||
  ((default-modes `(:proxy-mode ,@*web-buffer-modes* ,@%slot-value%))))
 | 
			
		||||
 | 
			
		||||
(define-configuration :hint-mode
 | 
			
		||||
  "Set up QWERTY home row as the hint keys."
 | 
			
		||||
  ((hints-alphabet "DSJKHLFAGNMXCWEIO")))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(defmethod ffi-buffer-make :after ((buffer nyxt/renderer/gtk::gtk-buffer))
 | 
			
		||||
  "Setting WebKit-specific settings.
 | 
			
		||||
WARNING: Not exactly the best way to configure Nyxt, because it relies
 | 
			
		||||
on internal APIs and CFFI...
 | 
			
		||||
 | 
			
		||||
See
 | 
			
		||||
https://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html
 | 
			
		||||
for the full list of settings you can tweak this way."
 | 
			
		||||
  (when (slot-boundp buffer 'nyxt/renderer/gtk::gtk-object)
 | 
			
		||||
    (let* ((settings (webkit:webkit-web-view-get-settings
 | 
			
		||||
                      (nyxt/renderer/gtk::gtk-object buffer))))
 | 
			
		||||
      (setf
 | 
			
		||||
       ;; Resizeable textareas. It's not perfect, but still a cool feature to have.
 | 
			
		||||
       (webkit:webkit-settings-enable-resizable-text-areas settings) t
 | 
			
		||||
       ;; Write console errors/warnings to the shell, to ease debugging.
 | 
			
		||||
       (webkit:webkit-settings-enable-write-console-messages-to-stdout settings) t
 | 
			
		||||
       ;; "Inspect element" context menu option available at any moment.
 | 
			
		||||
       (webkit:webkit-settings-enable-developer-extras settings) t
 | 
			
		||||
       ;; Enable WebRTC.
 | 
			
		||||
       (webkit:webkit-settings-enable-media-stream settings) t
 | 
			
		||||
       ;; Use Cantarell-18 as the default font.
 | 
			
		||||
       (webkit:webkit-settings-default-font-family settings) "VictorMono Nerd Font"
 | 
			
		||||
       (webkit:webkit-settings-default-font-size settings) 16
 | 
			
		||||
       ;; Use Hack-17 as the monospace font.
 | 
			
		||||
       (webkit:webkit-settings-monospace-font-family settings) "VictorMono Nerd Font"
 | 
			
		||||
       (webkit:webkit-settings-default-monospace-font-size settings) 14
 | 
			
		||||
       ;; Use Unifont for pictograms.
 | 
			
		||||
       (webkit:webkit-settings-pictograph-font-family settings) "Unifont")))
 | 
			
		||||
  ;; Set the view background to black.
 | 
			
		||||
  (cffi:foreign-funcall
 | 
			
		||||
   "webkit_web_view_set_background_color"
 | 
			
		||||
   :pointer (g:pointer (nyxt/renderer/gtk:gtk-object buffer))
 | 
			
		||||
   ;; GdkRgba is simply an array of four doubles.
 | 
			
		||||
   :pointer (cffi:foreign-alloc
 | 
			
		||||
             :double
 | 
			
		||||
             :count 4
 | 
			
		||||
             ;; red green blue alpha
 | 
			
		||||
             :initial-contents '(0d0 0d0 0d0 1d0))))
 | 
			
		||||
 | 
			
		||||
;; (defmethod customize-instance ((input-buffer input-buffer) &key)
 | 
			
		||||
;;   (disable-modes* 'nyxt/mode/emacs:emacs-mode input-buffer)
 | 
			
		||||
;;   (enable-modes* 'nyxt/mode/vi:vi-normal-mode input-buffer))
 | 
			
		||||
 | 
			
		||||
;; (define-configuration browser
 | 
			
		||||
;;     ((external-editor-program '("emacsclient -c"))))
 | 
			
		||||
 | 
			
		||||
;; Let's create a function to hint videos, convert the url to a sting, and play them in MPV
 | 
			
		||||
(define-command hint-mpv nil
 | 
			
		||||
                "Show a set of element hints, and copy the URL of the user inputted one."
 | 
			
		||||
                (nyxt/mode/hint:query-hints "Copy element URL"
 | 
			
		||||
                                           (lambda (nyxt/mode/hint::results)
 | 
			
		||||
                                             ;; this converts the url to a string to be used in mpv
 | 
			
		||||
                                             (let*
 | 
			
		||||
                                                 ((url
 | 
			
		||||
                                                   (format nil "~a"
 | 
			
		||||
                                                           (url (first nyxt/mode/hint::results)))))
 | 
			
		||||
                                               ;; here we take that string and pipe it into mpv
 | 
			
		||||
                                               (mpv url)))))
 | 
			
		||||
 | 
			
		||||
;; Let's create a function to hint videos, convert the url to a sting, and download with ytdl
 | 
			
		||||
(define-command hint-ytdl nil
 | 
			
		||||
                "Show a set of element hints, and copy the URL of the user inputted one."
 | 
			
		||||
                (nyxt/mode/hint:query-hints "Copy element URL"
 | 
			
		||||
                                           (lambda (nyxt/mode/hint::results)
 | 
			
		||||
                                             ;; this converts the url to a string to be used in yt-dlp
 | 
			
		||||
                                             (let*
 | 
			
		||||
                                                 ((url
 | 
			
		||||
                                                   (format nil "~a"
 | 
			
		||||
                                                           (url (first nyxt/mode/hint::results)))))
 | 
			
		||||
                                               ;; here we take that string and pipe it into yt-dlp
 | 
			
		||||
                                               (youtube-dl url)))))
 | 
			
		||||
 | 
			
		||||
(define-configuration :web-buffer
 | 
			
		||||
  "set better scroll distance"
 | 
			
		||||
  ((scroll-distance 350)))
 | 
			
		||||
 | 
			
		||||
(define-configuration :document-mode
 | 
			
		||||
  "Add basic keybindings."
 | 
			
		||||
  ((keyscheme-map
 | 
			
		||||
    (keymaps:define-keyscheme-map
 | 
			
		||||
        "custom" (list :import %slot-value%)
 | 
			
		||||
      ;; If you want to have VI bindings overriden, just use
 | 
			
		||||
      ;; `scheme:vi-normal' or `scheme:vi-insert' instead of
 | 
			
		||||
      ;; `scheme:emacs'.
 | 
			
		||||
      nyxt/keyscheme:vi-normal
 | 
			
		||||
      (list "K" 'switch-buffer-next
 | 
			
		||||
            "J" 'switch-buffer-previous
 | 
			
		||||
            "b" 'switch-buffer
 | 
			
		||||
            "d" 'delete-current-buffer
 | 
			
		||||
            "D" 'delete-buffer
 | 
			
		||||
            "r" 'reload-current-buffer
 | 
			
		||||
            "R" 'reload-buffers
 | 
			
		||||
            "v" 'hint-mpv
 | 
			
		||||
            "V" 'hint-ytdl
 | 
			
		||||
            "L" 'history-forwards
 | 
			
		||||
            "H" 'history-backwards
 | 
			
		||||
            "gv" :visual-mode
 | 
			
		||||
            "C-i" :input-edit-mode)))))
 | 
			
		||||
 | 
			
		||||
(defvar *my-search-engines*
 | 
			
		||||
  (list
 | 
			
		||||
   '("google" "https://google.com/search?q=~a" "https://google.com")
 | 
			
		||||
   '("searx" "https://search.tfcconnection.org/search?q=~a" "https://search.tfcconnection.org/"))
 | 
			
		||||
  "List of search engines.")
 | 
			
		||||
 | 
			
		||||
(define-configuration context-buffer
 | 
			
		||||
  "Go through the search engines above and make-search-engine out of them."
 | 
			
		||||
  ((search-engines
 | 
			
		||||
    (append
 | 
			
		||||
     (mapcar (lambda (engine) (apply 'make-search-engine engine))
 | 
			
		||||
             *my-search-engines*)
 | 
			
		||||
     %slot-default%))))
 | 
			
		||||
 | 
			
		||||
(define-nyxt-user-system-and-load "nyxt-user/search-engines"
 | 
			
		||||
  :depends-on (:nx-search-engines) :components ("search-engines.lisp"))
 | 
			
		||||
 | 
			
		||||
(define-nyxt-user-system-and-load "nyxt-user/dark-reader"
 | 
			
		||||
  :components ("dark-reader.lisp")
 | 
			
		||||
  :depends-on (:nx-dark-reader))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;; (define-configuration :prompt-buffer-mode
 | 
			
		||||
;;   "Add basic keybindings for prompt-buffer."
 | 
			
		||||
;;   ((keyscheme-map
 | 
			
		||||
;;     (keymaps:define-keyscheme-map
 | 
			
		||||
;;         "custom" (list :import %slot-value%)
 | 
			
		||||
;;       nyxt/keyscheme:emacs
 | 
			
		||||
;;       (list "C-j" 'nyxt/mode/prompt-buffer:next-suggestion
 | 
			
		||||
;;             "C-k" 'nyxt/mode/prompt-buffer:previous-suggestion)))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;; (define-configuration buffer
 | 
			
		||||
;;   ((search-engines
 | 
			
		||||
;;     (list
 | 
			
		||||
;;      (make-instance 'search-engine
 | 
			
		||||
;;                     :shortcut "s"
 | 
			
		||||
;;                     :search-url "https://search.tfcconnection.org/?q=~a"
 | 
			
		||||
;;                     :fallback-url "https://search.tfcconnection.org")))))
 | 
			
		||||
 | 
			
		||||
;;; Loading files from the same directory.
 | 
			
		||||
(define-nyxt-user-system-and-load nyxt-user/basic-config
 | 
			
		||||
  :components ("status" "style"))
 | 
			
		||||
							
								
								
									
										10
									
								
								.config/nyxt/dark-reader.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.config/nyxt/dark-reader.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
(in-package #:nyxt-user)
 | 
			
		||||
 | 
			
		||||
(define-configuration nx-dark-reader:dark-reader-mode
 | 
			
		||||
  ((nxdr:brightness 80)
 | 
			
		||||
   (nxdr:contrast 80)
 | 
			
		||||
   (nxdr:text-color "white")))
 | 
			
		||||
 | 
			
		||||
;; Add dark-reader to default modes
 | 
			
		||||
;; (define-configuration web-buffer
 | 
			
		||||
;;   ((default-modes `(nxdr:dark-reader-mode ,@%slot-value%))))
 | 
			
		||||
| 
						 | 
				
			
			@ -1,24 +0,0 @@
 | 
			
		|||
(in-package #:nyxt-user)
 | 
			
		||||
 | 
			
		||||
;;allow setting glyphs
 | 
			
		||||
(define-configuration status-buffer
 | 
			
		||||
  ((glyph-mode-presentation-p t)))
 | 
			
		||||
 | 
			
		||||
;;various glyph settings with no additional configs
 | 
			
		||||
(define-configuration nyxt/force-https-mode:force-https-mode ((glyph "ϕ")))
 | 
			
		||||
(define-configuration nyxt/blocker-mode:blocker-mode ((glyph "β")))
 | 
			
		||||
(define-configuration nyxt/proxy-mode:proxy-mode ((glyph "π")))
 | 
			
		||||
(define-configuration nyxt/reduce-tracking-mode:reduce-tracking-mode ((glyph "∅")))
 | 
			
		||||
(define-configuration nyxt/certificate-exception-mode:certificate-exception-mode ((glyph "ɛ")))
 | 
			
		||||
(define-configuration nyxt/style-mode:style-mode ((glyph "s")))
 | 
			
		||||
(define-configuration nyxt/help-mode:help-mode ((glyph "?")))
 | 
			
		||||
 | 
			
		||||
;;configure web mode hints to home row and set glyph
 | 
			
		||||
(define-configuration nyxt/web-mode:web-mode
 | 
			
		||||
  ((nyxt/web-mode:hints-alphabet "ASDFGHJKL")
 | 
			
		||||
   (glyph "ω")))
 | 
			
		||||
 | 
			
		||||
;;auto-mode config and set glyph
 | 
			
		||||
(define-configuration nyxt/auto-mode:auto-mode
 | 
			
		||||
  ((nyxt/auto-mode:prompt-on-mode-toggle t)
 | 
			
		||||
   (glyph "α")))
 | 
			
		||||
							
								
								
									
										25
									
								
								.config/nyxt/hsplit.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								.config/nyxt/hsplit.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
(in-package #:nyxt-user)
 | 
			
		||||
 | 
			
		||||
(define-panel-command hsplit-internal (&key (url (quri:render-uri (url (current-buffer)))))
 | 
			
		||||
    (panel "*Duplicate panel*" :right)
 | 
			
		||||
  "Duplicate the current buffer URL in the panel buffer on the right.
 | 
			
		||||
 | 
			
		||||
A poor man's hsplit :)"
 | 
			
		||||
  (setf (ffi-width panel) 550)
 | 
			
		||||
  (run-thread "URL loader"
 | 
			
		||||
    (sleep 0.3)
 | 
			
		||||
    (buffer-load (quri:uri url) :buffer panel))
 | 
			
		||||
  "")
 | 
			
		||||
 | 
			
		||||
(define-command-global close-all-panels ()
 | 
			
		||||
  "Close all the panel buffers there are."
 | 
			
		||||
  (alexandria:when-let ((panels (nyxt/renderer/gtk::panel-buffers-right (current-window))))
 | 
			
		||||
    (delete-panel-buffer :window (current-window) :panels panels))
 | 
			
		||||
  (alexandria:when-let ((panels (nyxt/renderer/gtk::panel-buffers-left (current-window))))
 | 
			
		||||
    (delete-panel-buffer :window (current-window) :panels panels)))
 | 
			
		||||
 | 
			
		||||
(define-command-global hsplit ()
 | 
			
		||||
  "Based on `hsplit-internal' above."
 | 
			
		||||
  (if (nyxt/renderer/gtk::panel-buffers-right (current-window))
 | 
			
		||||
      (delete-all-panel-buffers (current-window))
 | 
			
		||||
      (hsplit-internal)))
 | 
			
		||||
| 
						 | 
				
			
			@ -1,255 +0,0 @@
 | 
			
		|||
(in-package #:nyxt-user) ; While implicit, this allows SLY to know which package we are in.
 | 
			
		||||
 | 
			
		||||
(dolist (file (list (nyxt-init-file "slynk.lisp"))))
 | 
			
		||||
(dolist (file (list (nyxt-init-file "glyphs.lisp"))))
 | 
			
		||||
 | 
			
		||||
(load-after-system :slynk (nyxt-init-file "slynk.lisp"))
 | 
			
		||||
;; (defvar *chris-prompt-keymap (make-keymap "chris-prompt-map"))
 | 
			
		||||
;; (define-key *chris-prompt-keymap*
 | 
			
		||||
;;   "escape" 'cancel-input
 | 
			
		||||
;;   "C-j" 'select-next
 | 
			
		||||
;;   "C-k" 'select-previous)
 | 
			
		||||
 | 
			
		||||
;; (define-mode chris-prompt-mode ()
 | 
			
		||||
;;   "Dummy mode for the custom key bindings in `*chris-prompt-keymap*'."
 | 
			
		||||
;;   ((keymap-scheme (keymap:make-scheme
 | 
			
		||||
;;                    scheme:vi-insert *chris-prompt-keymap*))
 | 
			
		||||
;;    (visible-in-status-p nil)))
 | 
			
		||||
 | 
			
		||||
;; Always restore history and don't ask
 | 
			
		||||
(define-configuration browser
 | 
			
		||||
    ((session-restore-prompt :always-restore)))
 | 
			
		||||
 | 
			
		||||
(define-configuration (prompt-buffer)
 | 
			
		||||
  ((default-modes
 | 
			
		||||
    (append
 | 
			
		||||
     '(vi-insert-mode)
 | 
			
		||||
     %slot-default%))))
 | 
			
		||||
 | 
			
		||||
(define-configuration browser
 | 
			
		||||
  ((external-editor-program '("/usr/bin/emacsclient"))))
 | 
			
		||||
 | 
			
		||||
;; Create a function to launch mpv with given url
 | 
			
		||||
(defun mpv (url)
 | 
			
		||||
  "MPV launches with given url using the fast profile."
 | 
			
		||||
  (uiop:launch-program (list "mpv" "--profile=fast" url "&")))
 | 
			
		||||
 | 
			
		||||
;; Create a function to download videos with youtube-dl in alacritty
 | 
			
		||||
(defun youtube-dl (url)
 | 
			
		||||
  "Download videos and audio with youtube-dl in alacritty for feedback"
 | 
			
		||||
  (uiop:launch-program
 | 
			
		||||
   (list "alacritty" "-e" "yt-dlp" "-o ~/Videos/%(title)s.%(ext)s" url)))
 | 
			
		||||
 | 
			
		||||
;; Let's create a function to hint videos, convert the url to a sting, and play them in MPV
 | 
			
		||||
(define-command hint-mpv (&key nyxt/web-mode::annotate-visible-only-p)
 | 
			
		||||
                "Show a set of element hints, and copy the URL of the user inputted one."
 | 
			
		||||
                (nyxt/web-mode:query-hints "Copy element URL"
 | 
			
		||||
                                           (lambda (nyxt/web-mode::result)
 | 
			
		||||
                                             ;; this converts the url to a string to be used in mpv
 | 
			
		||||
                                             (let*
 | 
			
		||||
                                                 ((url
 | 
			
		||||
                                                   (format nil "~a"
 | 
			
		||||
                                                           (url (first nyxt/web-mode::result)))))
 | 
			
		||||
                                               ;; here we take that string and pipe it into mpv
 | 
			
		||||
                                               (mpv url)))
 | 
			
		||||
                                           :annotate-visible-only-p
 | 
			
		||||
                                           nyxt/web-mode::annotate-visible-only-p))
 | 
			
		||||
 | 
			
		||||
;; Let's create a function to hint videos, convert the url to a sting, and download with ytdl
 | 
			
		||||
(define-command hint-ytdl (&key nyxt/web-mode::annotate-visible-only-p)
 | 
			
		||||
                "Show a set of element hints, and copy the URL of the user inputted one."
 | 
			
		||||
                (nyxt/web-mode:query-hints "Copy element URL"
 | 
			
		||||
                                           (lambda (nyxt/web-mode::result)
 | 
			
		||||
                                             ;; this converts the url to a string to be used in yt-dlp
 | 
			
		||||
                                             (let*
 | 
			
		||||
                                                 ((url
 | 
			
		||||
                                                   (format nil "~a"
 | 
			
		||||
                                                           (url (first nyxt/web-mode::result)))))
 | 
			
		||||
                                               ;; here we take that string and pipe it into yt-dlp
 | 
			
		||||
                                               (youtube-dl url)))
 | 
			
		||||
                                           :annotate-visible-only-p
 | 
			
		||||
                                           nyxt/web-mode::annotate-visible-only-p))
 | 
			
		||||
 | 
			
		||||
;; These are my own keys that are layered over vi-normal. A lot of these
 | 
			
		||||
;; are similar to qutebrowser.
 | 
			
		||||
(defvar *chris-keymap* (make-keymap "chris-map"))
 | 
			
		||||
(define-key *chris-keymap*
 | 
			
		||||
  "K" 'switch-buffer-next
 | 
			
		||||
  "J" 'switch-buffer-previous
 | 
			
		||||
  "b" 'switch-buffer
 | 
			
		||||
  "v" 'hint-mpv
 | 
			
		||||
  "V" 'hint-ytdl
 | 
			
		||||
  "d" 'delete-current-buffer
 | 
			
		||||
  "D" 'delete-buffer
 | 
			
		||||
  "r" 'reload-current-buffer
 | 
			
		||||
  "R" 'reload-buffers)
 | 
			
		||||
 | 
			
		||||
(define-mode chris-mode ()
 | 
			
		||||
  "Dummy mode for the custom key bindings in `*chris-keymap*'."
 | 
			
		||||
  ((keymap-scheme
 | 
			
		||||
    (keymap:make-scheme
 | 
			
		||||
     scheme:vi-normal *chris-keymap*))
 | 
			
		||||
   (visible-in-status-p nil)))
 | 
			
		||||
 | 
			
		||||
(define-configuration buffer
 | 
			
		||||
  ((default-modes
 | 
			
		||||
    (append
 | 
			
		||||
     '(vi-normal-mode
 | 
			
		||||
       auto-mode
 | 
			
		||||
       reduce-tracking-mode
 | 
			
		||||
       force-https-mode
 | 
			
		||||
       chris-mode)
 | 
			
		||||
     %slot-default%))))
 | 
			
		||||
 | 
			
		||||
(define-configuration buffer
 | 
			
		||||
  ((search-engines
 | 
			
		||||
    (list
 | 
			
		||||
     (make-instance 'search-engine
 | 
			
		||||
                    :shortcut "s"
 | 
			
		||||
                    :search-url "https://search.tfcconnection.org/?q=~a"
 | 
			
		||||
                    :fallback-url "https://search.tfcconnection.org")))))
 | 
			
		||||
 | 
			
		||||
(define-configuration nyxt/vi-mode:vi-normal-mode
 | 
			
		||||
  ((visible-in-status-p nil)))
 | 
			
		||||
 | 
			
		||||
(define-configuration nyxt/vi-mode:vi-insert-mode
 | 
			
		||||
  ((visible-in-status-p nil)))
 | 
			
		||||
 | 
			
		||||
(define-configuration status-buffer
 | 
			
		||||
  ((style
 | 
			
		||||
    (str:concat
 | 
			
		||||
     %slot-default%
 | 
			
		||||
     (cl-css:css
 | 
			
		||||
      '((body
 | 
			
		||||
         :background "#282a36"
 | 
			
		||||
         :color "#e2e4e5"
 | 
			
		||||
         :line-height "1fr")
 | 
			
		||||
        ("#container-vi"
 | 
			
		||||
         :grid-template-columns "0px 30px 2fr 0px 240px")
 | 
			
		||||
        ("#controls"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#f3f99d"
 | 
			
		||||
         :width "0px"
 | 
			
		||||
         :padding-left "0px"
 | 
			
		||||
         :hidden)
 | 
			
		||||
        ("#url"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        ("#modes"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#f3f99d")
 | 
			
		||||
        ("#tabs"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        (".tab"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#9aedfe")
 | 
			
		||||
        (".tab:hover"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#f1f1f0")
 | 
			
		||||
        (".button"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        (".button:hover"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#f1f1f0")
 | 
			
		||||
        (".arrow"
 | 
			
		||||
         :width "0px"
 | 
			
		||||
         :height "0px")
 | 
			
		||||
        (".arrow-right"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        (".arrow-left"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#5af78e")
 | 
			
		||||
        ))))))
 | 
			
		||||
 | 
			
		||||
(define-configuration internal-buffer
 | 
			
		||||
    ((style
 | 
			
		||||
      (str:concat
 | 
			
		||||
       %slot-default%
 | 
			
		||||
       (cl-css:css
 | 
			
		||||
        '((body
 | 
			
		||||
           :background "#282a36"
 | 
			
		||||
           :color "#e2e4e5")
 | 
			
		||||
          (.button
 | 
			
		||||
           :color "#e2e4e5")))))))
 | 
			
		||||
 | 
			
		||||
(define-configuration window
 | 
			
		||||
  ((message-buffer-style
 | 
			
		||||
    (str:concat
 | 
			
		||||
     %slot-default%
 | 
			
		||||
     (cl-css:css
 | 
			
		||||
      '((body
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")))))))
 | 
			
		||||
 | 
			
		||||
(define-configuration prompt-buffer
 | 
			
		||||
  ((style
 | 
			
		||||
    (str:concat
 | 
			
		||||
     %slot-default%
 | 
			
		||||
     (cl-css:css
 | 
			
		||||
      '((body
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#prompt-area-vi"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#57c7ff")
 | 
			
		||||
        ("#prompt"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#input"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#suggestions"
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (.vi-insert-mode
 | 
			
		||||
         :background-color "#282a36")
 | 
			
		||||
        (.vi-normal-mode
 | 
			
		||||
         :background-color "#282a36")
 | 
			
		||||
        (.source
 | 
			
		||||
         :margin-left "5px")
 | 
			
		||||
        (.source-name
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        (.source-content
 | 
			
		||||
         :background-color "#282a36"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ;; (".source-content td"
 | 
			
		||||
        ;;  :background-color "#282a36"
 | 
			
		||||
        ;;  :color "#e2e4e5")
 | 
			
		||||
        (".source-content th"
 | 
			
		||||
         :background-color "#43454f"
 | 
			
		||||
         :color "#e2e4e5")
 | 
			
		||||
        ("#selection"
 | 
			
		||||
         :background-color "#57c7ff"
 | 
			
		||||
         :color "#34353e")
 | 
			
		||||
        (.marked
 | 
			
		||||
         :background-color "#5af78e"
 | 
			
		||||
         :color "#34353e")
 | 
			
		||||
        (.selected
 | 
			
		||||
         :background-color "#57c7ff"
 | 
			
		||||
         :color "#34353e")
 | 
			
		||||
        (.button
 | 
			
		||||
         :color "#e2e4e5")))))))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(in-package #:nyxt-user) ; While implicit, this allows SLY to know which package we are in.
 | 
			
		||||
 | 
			
		||||
;; (load "~/quicklisp/setup.lisp")
 | 
			
		||||
;; (ql:quickload :slynk)
 | 
			
		||||
 | 
			
		||||
;; (define-command-global start-slynk (&optional (slynk-port *swank-port*))
 | 
			
		||||
;;   "Start a Slynk server that can be connected to, for instance, in
 | 
			
		||||
;; Emacs via SLY.
 | 
			
		||||
 | 
			
		||||
;; Warning: This allows Nyxt to be controlled remotely, that is, to execute
 | 
			
		||||
;; arbitrary code with the privileges of the user running Nyxt.  Make sure
 | 
			
		||||
;; you understand the security risks associated with this before running
 | 
			
		||||
;; this command."
 | 
			
		||||
;;   (slynk:create-server :port slynk-port :dont-close t)
 | 
			
		||||
;;   (echo "Slynk server started at port ~a" slynk-port))
 | 
			
		||||
 | 
			
		||||
;; (start-slynk)
 | 
			
		||||
							
								
								
									
										20
									
								
								.config/nyxt/search-engines.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.config/nyxt/search-engines.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
(in-package #:nyxt-user)
 | 
			
		||||
 | 
			
		||||
(define-configuration (buffer web-buffer)
 | 
			
		||||
  ((search-engines (list (engines:google :shortcut "gmaps"
 | 
			
		||||
                                         :object :maps)
 | 
			
		||||
                         (engines:wordnet :shortcut "wn"
 | 
			
		||||
                                          :show-word-frequencies t)
 | 
			
		||||
                         (engines:google :shortcut "g"
 | 
			
		||||
                                         :safe-search nil)
 | 
			
		||||
                         (engines:duckduckgo :theme :terminal
 | 
			
		||||
                                             :help-improve-duckduckgo nil
 | 
			
		||||
                                             :homepage-privacy-tips nil
 | 
			
		||||
                                             :privacy-newsletter nil
 | 
			
		||||
                                             :newsletter-reminders nil
 | 
			
		||||
                                             :install-reminders nil
 | 
			
		||||
                                             :install-duckduckgo nil)
 | 
			
		||||
                         (engines:searx :base-search-url "https://search.tfcconnection.org/search?q=~a"
 | 
			
		||||
                                        :request-method :get
 | 
			
		||||
                                        :infinite-scroll t
 | 
			
		||||
                                        :query-title t)))))
 | 
			
		||||
| 
						 | 
				
			
			@ -1,17 +0,0 @@
 | 
			
		|||
(in-package #:nyxt-user) ; While implicit, this allows SLY to know which package we are in.
 | 
			
		||||
 | 
			
		||||
(load "~/quicklisp/setup.lisp")
 | 
			
		||||
(ql:quickload :slynk)
 | 
			
		||||
 | 
			
		||||
(define-command-global start-slynk (&optional (slynk-port *swank-port*))
 | 
			
		||||
  "Start a Slynk server that can be connected to, for instance, in
 | 
			
		||||
Emacs via SLY.
 | 
			
		||||
 | 
			
		||||
Warning: This allows Nyxt to be controlled remotely, that is, to execute
 | 
			
		||||
arbitrary code with the privileges of the user running Nyxt.  Make sure
 | 
			
		||||
you understand the security risks associated with this before running
 | 
			
		||||
this command."
 | 
			
		||||
  (slynk:create-server :port slynk-port :dont-close t)
 | 
			
		||||
  (echo "Slynk server started at port ~a" slynk-port))
 | 
			
		||||
 | 
			
		||||
(start-slynk)
 | 
			
		||||
							
								
								
									
										23
									
								
								.config/nyxt/status.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								.config/nyxt/status.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
(in-package #:nyxt-user)
 | 
			
		||||
 | 
			
		||||
;;allow setting glyphs
 | 
			
		||||
(define-configuration status-buffer
 | 
			
		||||
  ((glyph-mode-presentation-p t)))
 | 
			
		||||
 | 
			
		||||
;; ;;various glyph settings with no additional configs
 | 
			
		||||
(define-configuration :force-https-mode ((glyph "ϕ")))
 | 
			
		||||
(define-configuration :blocker-mode ((glyph "β")))
 | 
			
		||||
(define-configuration :proxy-mode ((glyph "π")))
 | 
			
		||||
(define-configuration :reduce-tracking-mode ((glyph "∅")))
 | 
			
		||||
(define-configuration :certificate-exception-mode ((glyph "ɛ")))
 | 
			
		||||
(define-configuration :style-mode ((glyph "s")))
 | 
			
		||||
(define-configuration :user-script-mode ((glyph "ω")))
 | 
			
		||||
 | 
			
		||||
(define-configuration status-buffer
 | 
			
		||||
  ((style (str:concat %slot-value%
 | 
			
		||||
                      (theme:themed-css (theme *browser*)
 | 
			
		||||
                        ;; See the `describe-class' of `status-buffer' to
 | 
			
		||||
                        ;; understand what to customize
 | 
			
		||||
                        '("#controls"
 | 
			
		||||
                          :display "none"
 | 
			
		||||
                          :important))))))
 | 
			
		||||
							
								
								
									
										73
									
								
								.config/nyxt/style.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								.config/nyxt/style.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,73 @@
 | 
			
		|||
(in-package #:nyxt-user) ; While implicit, this allows SLY to know which package we are in.
 | 
			
		||||
 | 
			
		||||
(setf (uiop:getenv "GTK_THEME") "Adwaita:dark")
 | 
			
		||||
 | 
			
		||||
(define-configuration browser
 | 
			
		||||
  "Configuring my reddish theme."
 | 
			
		||||
  ((theme (make-instance
 | 
			
		||||
           'theme:theme
 | 
			
		||||
           :background-color "#282a36"
 | 
			
		||||
           :on-background-color "#e2e4e5"
 | 
			
		||||
           :accent-color "#5af78e"
 | 
			
		||||
           :on-accent-color "#282a36"
 | 
			
		||||
           :accent-alt-color "#9aedfe"
 | 
			
		||||
           :on-accent-alt-color "#282a36"
 | 
			
		||||
           :warning-color "#ff5c57"
 | 
			
		||||
           :on-warning-color "#e2e4e5"
 | 
			
		||||
           :primary-color "#43454f"
 | 
			
		||||
           :on-primary-color "#57c7ff"
 | 
			
		||||
           :on-secondary-color "#f3f99d"
 | 
			
		||||
           :secondary-color "#282a36"
 | 
			
		||||
           :font-family "VictorMono Nerd Font"))))
 | 
			
		||||
 | 
			
		||||
(define-configuration :dark-mode
 | 
			
		||||
  "Dark-mode is a simple mode for simple HTML pages to color those in a darker palette.
 | 
			
		||||
 | 
			
		||||
I don't like the default gray-ish colors, though. Thus, I'm overriding
 | 
			
		||||
those to be a bit more laconia-like.
 | 
			
		||||
 | 
			
		||||
I'm not using this mode, though: I have nx-dark-reader."
 | 
			
		||||
  ((style
 | 
			
		||||
    (theme:themed-css (theme *browser*)
 | 
			
		||||
                      `(*
 | 
			
		||||
                        :background-color ,(if (theme:dark-p theme:theme)
 | 
			
		||||
                                               theme:background
 | 
			
		||||
                                             theme:on-background)
 | 
			
		||||
                        "!important"
 | 
			
		||||
                        :background-image none "!important"
 | 
			
		||||
                        :color ,(if (theme:dark-p theme:theme)
 | 
			
		||||
                                    theme:on-background
 | 
			
		||||
                                  theme:background)
 | 
			
		||||
                        "!important")
 | 
			
		||||
                      `(a
 | 
			
		||||
                        :background-color ,(if (theme:dark-p theme:theme)
 | 
			
		||||
                                               theme:background
 | 
			
		||||
                                             theme:on-background)
 | 
			
		||||
                        "!important"
 | 
			
		||||
                        :background-image none "!important"
 | 
			
		||||
                        :color ,theme:primary "!important")))))
 | 
			
		||||
 | 
			
		||||
(define-configuration :hint-mode
 | 
			
		||||
  ((style
 | 
			
		||||
    (theme:themed-css (theme *browser*)
 | 
			
		||||
      `(".nyxt-hint" :background-color ,theme:accent :color
 | 
			
		||||
                     ,theme:on-accent :font-family "monospace,monospace" :padding
 | 
			
		||||
                     "0px 0.3em" :border-color ,theme:primary :border-radius "0.4em"
 | 
			
		||||
                     :border-width "0.2em" :border-style "solid" :z-index 2147483647)
 | 
			
		||||
      `(".nyxt-hint.nyxt-mark-hint" :background-color ,theme:secondary :color
 | 
			
		||||
                                    ,theme:on-secondary :font-weight "bold")
 | 
			
		||||
      `(".nyxt-hint.nyxt-select-hint" :background-color ,theme:on-primary :color
 | 
			
		||||
                                      ,theme:primary)
 | 
			
		||||
      `(".nyxt-hint.nyxt-match-hint" :padding "0px" :border-style "none" :opacity
 | 
			
		||||
                                     "0.5")
 | 
			
		||||
      `(".nyxt-element-hint" :background-color ,theme:on-primary)))))
 | 
			
		||||
 | 
			
		||||
;; (define-configuration :buffer
 | 
			
		||||
;;   ((style
 | 
			
		||||
;;     (theme:themed-css (theme *browser*)
 | 
			
		||||
;;       `("h1,h2,h3,h4,h5,h6" :color ,theme:on-primary)
 | 
			
		||||
;;       `(.button :background-color ,theme:primary
 | 
			
		||||
;;                 :color ,theme:on-primary
 | 
			
		||||
;;                 :border-radius "0.6em")
 | 
			
		||||
;;       `(.link :color ,theme:on-primary)
 | 
			
		||||
;;       `(a :color ,theme:on-primary))))
 | 
			
		||||
							
								
								
									
										86
									
								
								.config/nyxt/unpdf.lisp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								.config/nyxt/unpdf.lisp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,86 @@
 | 
			
		|||
(in-package #:nyxt-user)
 | 
			
		||||
 | 
			
		||||
;; I'm definining a new scheme to redirect PDF requests to. What it does is:
 | 
			
		||||
;; - Get the original file (if the URL is a filesystem path, simply use it).
 | 
			
		||||
;; - Save it to disk (if remote).
 | 
			
		||||
;; - Run pdftotext over the file.
 | 
			
		||||
;; - Display pdftotext output in a nice HTML page with interlinkable
 | 
			
		||||
;;   page numbers and page contents as <pre> tags.
 | 
			
		||||
(define-internal-scheme "unpdf"
 | 
			
		||||
    (lambda (url buffer)
 | 
			
		||||
      (let* ((url (quri:uri url))
 | 
			
		||||
             (original-url (quri:uri (quri:url-decode (quri:uri-path url))))
 | 
			
		||||
             (local-p (or (null (quri:uri-scheme original-url))
 | 
			
		||||
                          (string= "file" (quri:uri-scheme original-url))))
 | 
			
		||||
             (original-content (unless local-p
 | 
			
		||||
                                 (dex:get (quri:render-uri original-url) :force-binary t))))
 | 
			
		||||
        (flet ((display-pdf-contents (file)
 | 
			
		||||
                 (if (uiop:file-exists-p file)
 | 
			
		||||
                     (let ((pages (ignore-errors
 | 
			
		||||
                                   (uiop:split-string
 | 
			
		||||
                                    (uiop:run-program `("pdftotext" "-nodiag" ,(uiop:native-namestring file) "-")
 | 
			
		||||
                                                      :output '(:string :stripped t))
 | 
			
		||||
                                    :separator '(#\Page)))))
 | 
			
		||||
                       (spinneret:with-html-string
 | 
			
		||||
                         (:head
 | 
			
		||||
                          (:style (style buffer))
 | 
			
		||||
                          ;; A class to override the <pre> colors.
 | 
			
		||||
                          (:style (theme:themed-css (theme *browser*)
 | 
			
		||||
                                    #+(or nyxt-2 nyxt-3-pre-release-1)
 | 
			
		||||
                                    (.override
 | 
			
		||||
                                     :background-color theme:background
 | 
			
		||||
                                     :color theme:on-background
 | 
			
		||||
                                     :font-size "150%"
 | 
			
		||||
                                     :line-height "150%")
 | 
			
		||||
                                    #+(and nyxt-3 (not (or nyxt-2 nyxt-3-pre-release-1)))
 | 
			
		||||
                                    `(.override
 | 
			
		||||
                                      :background-color ,theme:background
 | 
			
		||||
                                      :color ,theme:on-background
 | 
			
		||||
                                      :font-size "150%"
 | 
			
		||||
                                      :line-height "150%"))))
 | 
			
		||||
                         (loop for page in pages
 | 
			
		||||
                               for number from 1
 | 
			
		||||
                               unless (uiop:emptyp page)
 | 
			
		||||
                                 do (:section
 | 
			
		||||
                                     :id (princ-to-string number)
 | 
			
		||||
                                     (:h2.override (:a :href (format nil "#~d" number)
 | 
			
		||||
                                              (princ-to-string number)))
 | 
			
		||||
                                     (:pre.override (or page ""))))))
 | 
			
		||||
                     "")))
 | 
			
		||||
          (if local-p
 | 
			
		||||
              (display-pdf-contents (pathname (quri:uri-path original-url)))
 | 
			
		||||
              (uiop:with-temporary-file (:pathname path :type "pdf" :keep t)
 | 
			
		||||
                (log:debug "Temp file for ~a is ~a" url path)
 | 
			
		||||
                (alexandria:write-byte-vector-into-file
 | 
			
		||||
                 (coerce original-content '(vector (unsigned-byte 8))) path :if-exists :supersede)
 | 
			
		||||
                (display-pdf-contents path))))))
 | 
			
		||||
  :local-p t)
 | 
			
		||||
 | 
			
		||||
(define-command-global unpdf-download-this ()
 | 
			
		||||
  "A helper for unpdf: pages to download the original PDF to the regular destination.
 | 
			
		||||
 | 
			
		||||
Unpdf redirects all requests, even those that you need to read
 | 
			
		||||
elsewhere, thus I need this command."
 | 
			
		||||
  (let* ((buffer (current-buffer))
 | 
			
		||||
         (url (url buffer)))
 | 
			
		||||
    (if (string= "unpdf" (quri:uri-scheme url))
 | 
			
		||||
        (ffi-buffer-download buffer (quri:uri-path url))
 | 
			
		||||
        ;; I need to turn it into a mode someday...
 | 
			
		||||
        (echo-warning "This command is for unpdf: pages only, it's useless elsewhere!"))))
 | 
			
		||||
 | 
			
		||||
(defun redirect-pdf (request-data)
 | 
			
		||||
  (if (and (toplevel-p request-data)
 | 
			
		||||
           (uiop:string-prefix-p "application/pdf" (mime-type request-data)))
 | 
			
		||||
      ;; I should somehow prompt about downloading instead...
 | 
			
		||||
      (progn
 | 
			
		||||
        (echo "Redirecting to the unpdf URL...")
 | 
			
		||||
        (make-buffer-focus :url (quri:uri (str:concat "unpdf:" (render-url (url request-data)))))
 | 
			
		||||
        ;; Return nil to prevent Nyxt from downloading this PDF.
 | 
			
		||||
        nil)
 | 
			
		||||
      request-data))
 | 
			
		||||
 | 
			
		||||
(define-configuration :web-buffer
 | 
			
		||||
  ((request-resource-hook (hooks:add-hook %slot-value% 'redirect-pdf))))
 | 
			
		||||
 | 
			
		||||
(define-configuration nyxt/mode/file-manager:file-source
 | 
			
		||||
  ((supported-media-types `("pdf" ,@%slot-value%))))
 | 
			
		||||
							
								
								
									
										7970
									
								
								.config/nyxt/userscripts/block-cosmetic.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7970
									
								
								.config/nyxt/userscripts/block-cosmetic.js
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -75,6 +75,9 @@
 | 
			
		|||
        "imv"
 | 
			
		||||
        "phinger-cursors-theme"
 | 
			
		||||
        "firefox"
 | 
			
		||||
        "icecat"
 | 
			
		||||
        "qutebrowser"
 | 
			
		||||
        "nyxt"
 | 
			
		||||
        "openjdk"
 | 
			
		||||
        "kwallet"
 | 
			
		||||
        "kwallet-pam"
 | 
			
		||||
| 
						 | 
				
			
			@ -119,6 +122,7 @@
 | 
			
		|||
        "blesh"
 | 
			
		||||
        "ncurses"
 | 
			
		||||
        "transmission"
 | 
			
		||||
        "sbcl"
 | 
			
		||||
 | 
			
		||||
        ;; Emacs and packages
 | 
			
		||||
        "emacs-next-pgtk"
 | 
			
		||||
| 
						 | 
				
			
			@ -176,6 +180,7 @@
 | 
			
		|||
        "emacs-projectile"
 | 
			
		||||
        "emacs-simple-httpd"
 | 
			
		||||
        "emacs-direnv"
 | 
			
		||||
        "emacs-sly"
 | 
			
		||||
        "emacs-diredfl"
 | 
			
		||||
        "emacs-pdf-tools"
 | 
			
		||||
        "emacs-vterm"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										37
									
								
								guix/pkgs/zola.scm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								guix/pkgs/zola.scm
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
(define-module (zola)
 | 
			
		||||
  #:use-module (gnu packages)
 | 
			
		||||
  #:use-module (gnu packages base)
 | 
			
		||||
  #:use-module (gnu packages compression)
 | 
			
		||||
  #:use-module (gnu services)
 | 
			
		||||
  #:use-module (guix utils)
 | 
			
		||||
  #:use-module (guix gexp)
 | 
			
		||||
  #:use-module (guix packages)
 | 
			
		||||
  #:use-module (guix git-download)
 | 
			
		||||
  #:use-module (guix build-system cargo)
 | 
			
		||||
  #:use-module ((guix licenses) #:prefix license:))
 | 
			
		||||
 | 
			
		||||
(define-public zola
 | 
			
		||||
  (let ((commit "8dd1b30594dcfa5344ba36b6b057a5b0aa9bd277")
 | 
			
		||||
        (revision "0"))
 | 
			
		||||
    (package
 | 
			
		||||
      (name "zola")
 | 
			
		||||
      (version "0.17.2")
 | 
			
		||||
      (source (origin
 | 
			
		||||
                (method git-fetch)
 | 
			
		||||
                (uri (git-reference
 | 
			
		||||
                      (url "https://github.com/getzola/zola.git")
 | 
			
		||||
                      (commit commit)))
 | 
			
		||||
                (sha256
 | 
			
		||||
                 (base32
 | 
			
		||||
                  "11ynfizxgfm0dy8i4s0dfws4g9chf12n41hzai8n936wxb3vb3r0"))))
 | 
			
		||||
      (build-system cargo-build-system)
 | 
			
		||||
      (native-inputs (list tar bzip2))
 | 
			
		||||
      ;; (arguments
 | 
			
		||||
      ;;  )
 | 
			
		||||
      (home-page "https://github.com/phisch/phinger-cursors")
 | 
			
		||||
      (synopsis "Most likely the most over engineered cursor theme out there")
 | 
			
		||||
      (description
 | 
			
		||||
       "Say hello to your new cursor theme. Phinger cursors is most likely the most over engineered cursor theme out there.")
 | 
			
		||||
      (license license:cc-by-sa4.0))))
 | 
			
		||||
 | 
			
		||||
zola
 | 
			
		||||
| 
						 | 
				
			
			@ -1,45 +1,37 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Check to see if nyxt is running
 | 
			
		||||
if pgrep -x nyxt > /dev/null; then
 | 
			
		||||
    echo running
 | 
			
		||||
if [ $(pgrep -c nyxt) -gt 0 ]; then
 | 
			
		||||
    echo "ff running"
 | 
			
		||||
 | 
			
		||||
    if [ $XDG_SESSION_TYPE = "x11" ]; then
 | 
			
		||||
    if [ "$XDG_SESSION_TYPE" = "x11" ]; then
 | 
			
		||||
        #X11
 | 
			
		||||
        nyxtrg=$(wmctrl -lx | rg nyxt | awk '{print $1}')
 | 
			
		||||
        ffrg=$(wmctrl -lx | rg nyxt | awk '{print $1}')
 | 
			
		||||
        # echo $emacsrg
 | 
			
		||||
 | 
			
		||||
        if [ -z $nyxtrg ]; then
 | 
			
		||||
            echo regnyxt
 | 
			
		||||
            nyxt
 | 
			
		||||
        if [ -z $ffrg ]; then
 | 
			
		||||
            exec nyxt
 | 
			
		||||
            exit
 | 
			
		||||
        else
 | 
			
		||||
            wmctrl -ia $nyxtrg
 | 
			
		||||
            exec wmctrl -ia $ffrg
 | 
			
		||||
            exit
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        echo wayland
 | 
			
		||||
        if [ $KDE_FULL_SESSION = "true" ]; then
 | 
			
		||||
            ww -f nyxt -c nyxt
 | 
			
		||||
        if [ "$KDE_FULL_SESSION" = "true" ]; then
 | 
			
		||||
            echo "KDE"
 | 
			
		||||
            exec /home/chris/bin/ww -fa nyxt -c nyxt
 | 
			
		||||
            exit
 | 
			
		||||
        else
 | 
			
		||||
            # WAYLAND
 | 
			
		||||
            nyxtrg=$(wlrctl window list | rg nyxt:)
 | 
			
		||||
            ffrg=$(hyprctl clients | rg nyxt)
 | 
			
		||||
 | 
			
		||||
            nyxtwin=$(echo $nyxtrg | sed 's/.*\: //')
 | 
			
		||||
            # echo $nyxtwin
 | 
			
		||||
            ffwin=$(echo $ffrg | sed 's/.*\: //')
 | 
			
		||||
            # echo $ffwin
 | 
			
		||||
 | 
			
		||||
            wlrctl toplevel focus nyxt
 | 
			
		||||
            exec hyprctl dispatch focuswindow nyxt
 | 
			
		||||
            exit
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
else
 | 
			
		||||
    echo not running
 | 
			
		||||
    machine=$(hostname)
 | 
			
		||||
    if [ $machine = "syl" ]; then
 | 
			
		||||
        # env GDK_DPI_SCALE=0.5 GDK_SCALE=2 nyxt
 | 
			
		||||
        nyxt
 | 
			
		||||
    else
 | 
			
		||||
        nyxt
 | 
			
		||||
    fi
 | 
			
		||||
    exec nyxt
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue