summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config/nyxt/commands.lisp9
-rw-r--r--.config/nyxt/config.lisp58
-rw-r--r--.config/nyxt/keybinds.lisp8
-rwxr-xr-x.config/nyxt/scripts/weather3
-rw-r--r--.config/nyxt/search-engines.lisp45
-rw-r--r--.config/nyxt/status.lisp29
-rw-r--r--.config/nyxt/themes/cafebabe-dark.lisp37
-rw-r--r--.config/nyxt/url-redirects.lisp30
8 files changed, 219 insertions, 0 deletions
diff --git a/.config/nyxt/commands.lisp b/.config/nyxt/commands.lisp
new file mode 100644
index 0000000..159916f
--- /dev/null
+++ b/.config/nyxt/commands.lisp
@@ -0,0 +1,9 @@
+(in-package #:nyxt-user)
+
+(define-command-global show-weather ()
+ (echo (uiop:run-program "~/.config/nyxt/scripts/weather" :output :string)))
+
+;;opens current url in different browser replace firefox with your browser/path
+(define-command-global open-external-browser ()
+ "Open the current url in external browser"
+ (uiop:run-program (list "firefox-bin" (render-url (url (current-buffer))))))
diff --git a/.config/nyxt/config.lisp b/.config/nyxt/config.lisp
new file mode 100644
index 0000000..c28b669
--- /dev/null
+++ b/.config/nyxt/config.lisp
@@ -0,0 +1,58 @@
+(in-package #:nyxt-user)
+
+(reset-asdf-registries)
+
+(defvar *web-buffer-modes*
+ '(:emacs-mode
+ :blocker-mode
+ :force-https-mode
+ :reduce-tracking-mode
+ :user-script-mode
+ :no-script-mode
+ :no-webgl-mode))
+
+(define-nyxt-user-system-and-load nyxt-user/basic-config
+ :components ("commands" "keybinds" "status" "url-redirects" "themes/cafebabe-dark.lisp"))
+
+;;; EXAMPLE
+;; (define-nyxt-user-system-and-load "nyxt-user/nx-fruit-proxy"
+;; :description "This proxy system saves us if nx-fruit fails to load.
+;; Otherwise it will break all the config loading."
+;; :depends-on ("nx-fruit"))
+
+(define-nyxt-user-system-and-load "nyxt-user/search-engines"
+ :depends-on (:nx-search-engines) :components ("search-engines"))
+
+(define-configuration browser
+ ((restore-session-on-startup-p nil)
+ (remote-execution-p t)
+ (external-editor-program
+ (list "emacsclient" "-cn" "-a" "" "-F"))))
+
+(define-configuration nyxt/mode/user-script:user-script-mode
+ ((nyxt/mode/user-script:user-scripts
+ (list
+ (make-instance 'nyxt/mode/user-script:user-script :base-path #p"~/.config/nyxt/scripts/4chan-x.user.js")))))
+
+(define-configuration (:modable-buffer :prompt-buffer :editor-buffer)
+ ((default-modes `(:emacs-mode ,@%slot-value%))))
+
+(define-configuration :prompt-buffer
+ ((dynamic-attribute-width-p t)))
+
+(define-configuration :web-buffer
+ ((search-always-auto-complete-p nil)
+ (global-history-p t)))
+
+(define-configuration :browser
+ ((default-new-buffer-url (quri:uri "nyxt:nyxt/mode/repl:repl"))))
+
+(define-configuration :web-buffer
+ ((default-modes `(,@*web-buffer-modes* ,@%slot-value%))))
+
+(define-configuration :reduce-tracking-mode
+ ((query-tracking-parameters
+ (append '("utm_source" "utm_medium" "utm_campaign" "utm_term" "utm_content")
+ %slot-value%))
+ (preferred-user-agent
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36")))
diff --git a/.config/nyxt/keybinds.lisp b/.config/nyxt/keybinds.lisp
new file mode 100644
index 0000000..3e96620
--- /dev/null
+++ b/.config/nyxt/keybinds.lisp
@@ -0,0 +1,8 @@
+(in-package #:nyxt-user)
+
+(define-configuration buffer
+ ((override-map (let ((map (make-keymap "my-override-map")))
+ (define-key map
+ "M-I" 'show-weather
+ "C-2" 'open-external-browser)
+ map))))
diff --git a/.config/nyxt/scripts/weather b/.config/nyxt/scripts/weather
new file mode 100755
index 0000000..0992d24
--- /dev/null
+++ b/.config/nyxt/scripts/weather
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+curl wttr.in/Ludwigshafen?format=3
diff --git a/.config/nyxt/search-engines.lisp b/.config/nyxt/search-engines.lisp
new file mode 100644
index 0000000..718ab11
--- /dev/null
+++ b/.config/nyxt/search-engines.lisp
@@ -0,0 +1,45 @@
+(in-package #:nyxt-user)
+
+(defvar *duckduckgo-keywords*
+ '(:theme :dark
+ :help-improve-duckduckgo nil
+ :homepage-privacy-tips nil
+ :privacy-newsletter nil
+ :newsletter-reminders nil
+ :install-reminders nil
+ :install-duckduckgo nil
+ :units-of-measure :metric
+ :keyboard-shortcuts t
+ :advertisements nil
+ :open-in-new-tab nil
+ :infinite-scroll t
+ :safe-search :off
+ :font-size :medium
+ :header-behavior :on-fixed
+ :font :helvetica
+ :background-color "000000")
+ "My DDG settings, shared between the usual, image-search and other
+types of DuckDuckGo.")
+
+(define-configuration (buffer web-buffer)
+ ((search-engines (list (engines:duckduckgo-html-only :shortcut "dho")
+ (apply #'engines:duckduckgo
+ :shortcut "d" *duckduckgo-keywords*)
+ (apply #'engines:duckduckgo-images
+ :shortcut "i" *duckduckgo-keywords*)
+ (make-instance 'search-engine
+ :shortcut "aw"
+ :search-url "https://wiki.archlinux.org/index.php?search=~a&title=Special%3ASearch&fulltext=Search"
+ :fallback-url "https://wiki.archlinux.org")
+ (make-instance 'search-engine
+ :shortcut "gen"
+ :search-url "https://wiki.gentoo.org/index.php?title=Sepcial%3ASearch&search=~a&go=Go"
+ :fallback-url "https://wiki.gentoo.org")
+ (make-instance 'search-engine
+ :shortcut "lbx"
+ :search-url "https://search.cafebabe.gay/search.php?q=~a"
+ :fallback-url "https://search.cafebabe.gay")
+ (engines:invidious
+ :shortcut "yt"
+ :base-search-url "https://invidious.cafebabe.gay/search?q=~a"
+ :fallback-url "https://invidious.cafebabe.gay")))))
diff --git a/.config/nyxt/status.lisp b/.config/nyxt/status.lisp
new file mode 100644
index 0000000..50d2090
--- /dev/null
+++ b/.config/nyxt/status.lisp
@@ -0,0 +1,29 @@
+(in-package #:nyxt-user)
+
+(define-configuration :status-buffer
+ "Display modes as short glyphs."
+ ((glyph-mode-presentation-p t)))
+
+(define-configuration :force-https-mode ((glyph "ϕ")))
+(define-configuration :reduce-tracking-mode ((glyph "τ")))
+(define-configuration :no-script-mode ((glyph "σ")))
+(define-configuration :no-webgl-mode ((glyph "ω")))
+(define-configuration :blocker-mode ((glyph "β")))
+
+(define-configuration status-buffer
+ "Hide most of the status elements but URL and modes."
+ ((style (str:concat
+ %slot-value%
+ (theme:themed-css (theme *browser*)
+ `("#controls,#tabs"
+ :display none !important))))))
+
+(defmethod format-status-load-status ((status status-buffer))
+ "A fancier load status."
+ (spinneret:with-html-string
+ (:span (if (web-buffer-p (current-buffer))
+ (case (slot-value (current-buffer) 'nyxt::status)
+ (:unloaded "∅")
+ (:loading "∞")
+ (:finished ""))
+ ""))))
diff --git a/.config/nyxt/themes/cafebabe-dark.lisp b/.config/nyxt/themes/cafebabe-dark.lisp
new file mode 100644
index 0000000..0ccffe1
--- /dev/null
+++ b/.config/nyxt/themes/cafebabe-dark.lisp
@@ -0,0 +1,37 @@
+(in-package #:nyxt-user)
+
+;; this automatically darkens Webkit-native interfaces and sends the
+;; "prefers-color-scheme: dark" to all the supporting websites.
+(setf (uiop:getenv "GTK_THEME") "Adwaita:dark")
+
+(define-configuration browser
+ ((theme (make-instance
+ 'theme:theme
+ :background-color "#000000"
+ :accent-color "#CD5C5C"
+ :accent-alt-color "#6C2429"
+ :warning-color "#CEFF00"
+ :primary-color "rgb(170, 170, 170)"
+ :secondary-color "rgb(100, 100, 100)"))))
+
+(define-configuration :dark-mode
+ "Overriding the ugly gray-ish default colors"
+ ((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")))))
diff --git a/.config/nyxt/url-redirects.lisp b/.config/nyxt/url-redirects.lisp
new file mode 100644
index 0000000..5069c1c
--- /dev/null
+++ b/.config/nyxt/url-redirects.lisp
@@ -0,0 +1,30 @@
+(in-package #:nyxt-user)
+
+(defparameter old-reddit-handler
+ (url-dispatching-handler
+ 'old-reddit-dispatcher
+ (match-regex "https?\:\/\/?.*?reddit\.com")
+ (lambda (url)
+ (quri:copy-uri url :host "old.reddit.com"))))
+
+(defparameter invidious-handler
+ (url-dispatching-handler
+ 'invidious-dispatcher
+ (match-regex "https?\:\/\/?.*?(?:youtube\.com|youtu\.be|youtube-nocookie\.com).*")
+ (lambda (url)
+ (quri:copy-uri url :host "invidious.cafebabe.gay"))))
+
+(defparameter wikiless-handler
+ (url-dispatching-handler
+ 'wikiless-dispatcher
+ (match-regex "https?\:\/\/?.*?wikipedia\.org.*")
+ (lambda (url)
+ (quri:copy-uri url :host "wikiless.org"))))
+
+(define-configuration buffer
+ ((request-resource-hook
+ (reduce #'hooks:add-hook
+ (list old-reddit-handler
+ invidious-handler
+ wikiless-handler)
+ :initial-value %slot-default%))))