(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%)))) ;; Create a function to launch mpv with given url (defun mpv (url) "MPV launches with given url using the fast profile." (uiop:run-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:run-program (list "alacritty" "-e" "youtube-dl" "-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 mpv (let* ((url (format nil "~a" (url (first nyxt/web-mode::result))))) ;; here we take that string and pipe it into mpv (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 "C-v 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 status-buffer ((style (str:concat %slot-default% (cl-css:css '((body :background "#282a36" :color "#e2e4e5" :line-height "1fr") ("#container" :grid-template-columns "2fr 0px 0px") ("#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" :background-color "#282a36" :color "#57c7ff") ("#prompt" :background-color "#282a36" :color "#e2e4e5") ("#input" :background-color "#282a36" :color "#e2e4e5") ("#suggestions" :background-color "#282a36" :color "#e2e4e5") (.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")))))))