From ce37118369217d1189f2ed2163eaf4f6016b8d8f Mon Sep 17 00:00:00 2001 From: SqrtMinusOne Date: Sat, 5 Aug 2023 22:11:08 +0500 Subject: [PATCH] feat(desktop): one theme to rule them all --- .config/dunst/dunstrc | 2 +- .config/tridactyl/.tridactylrc | 31 -- .config/tridactyl/themes/base16-dracula.css | 159 ---------- .config/yadm/hooks/post_alt | 2 - .emacs.d/desktop.el | 10 +- Desktop.org | 328 +++++++++++++++++++- Emacs.org | 13 +- bin/firefox-theme/README.org | 22 ++ bin/firefox-theme/main.js | 7 + bin/firefox-theme/package.json | 6 + bin/firefox-theme/yarn.lock | 139 +++++++++ themes/emacs.css | 163 ++++++++++ 12 files changed, 677 insertions(+), 205 deletions(-) delete mode 100644 .config/tridactyl/.tridactylrc delete mode 100644 .config/tridactyl/themes/base16-dracula.css create mode 100644 bin/firefox-theme/README.org create mode 100644 bin/firefox-theme/main.js create mode 100644 bin/firefox-theme/package.json create mode 100644 bin/firefox-theme/yarn.lock create mode 100644 themes/emacs.css diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc index 54db9b7..af50262 100644 --- a/.config/dunst/dunstrc +++ b/.config/dunst/dunstrc @@ -79,7 +79,7 @@ context = ctrl+shift+period [urgency_low] - background = "#222637" + background = "#222634" frame_color = "#A6Accd" foreground = "#EEFFFF" timeout = 10 diff --git a/.config/tridactyl/.tridactylrc b/.config/tridactyl/.tridactylrc deleted file mode 100644 index 732ddf5..0000000 --- a/.config/tridactyl/.tridactylrc +++ /dev/null @@ -1,31 +0,0 @@ -sanitize tridactyllocal tridactylsync - -bind gn tabnew -bind gN tabclose - -bind O fillcmdline tabopen - -bind n findnext 1 -bind N findnext -1 - -bind F hint -t - -set smoothscroll false -set findcase sensitive -colorscheme base16-dracula - -bind j scrollline 3 -bind k scrollline -3 - -guiset_quiet gui full -guiset_quiet statuspanel left -guiset_quiet navbar none -guiset_quiet tabs always - -set searchurls.g https://google.com/search?q= - -set newtab about:blank - -command fixamo_quiet jsb tri.excmds.setpref("privacy.resistFingerprinting.block_mozAddonManager", "true").then(tri.excmds.setpref("extensions.webextensions.restrictedDomains", '""')) -command fixamo js tri.excmds.setpref("privacy.resistFingerprinting.block_mozAddonManager", "true").then(tri.excmds.setpref("extensions.webextensions.restrictedDomains", '""').then(tri.excmds.fillcmdline_tmp(3000, "Permissions added to user.js. Please restart Firefox to make them take affect."))) -fixamo_quiet \ No newline at end of file diff --git a/.config/tridactyl/themes/base16-dracula.css b/.config/tridactyl/themes/base16-dracula.css deleted file mode 100644 index a32cb73..0000000 --- a/.config/tridactyl/themes/base16-dracula.css +++ /dev/null @@ -1,159 +0,0 @@ -:root { /* Dracula by Chris Kempson (http://chriskempson.com) */ - --base00: #292d3e; - --base01: #3a3c4e; - --base02: #434758; - --base03: #626483; - --base04: #82aaff; - --base05: #e9e9f4; - --base06: #f1f2f8; - --base07: #f7f7fb; - --base08: #f07178; - --base09: #c792ea; - --base0A: #c3e88d; - --base0B: #ffcb6b; - --base0C: #89ddff; - --base0D: #82aaff; - --base0E: #c792ea; - --base0F: #c3e88d; - - --tridactyl-fg: var(--base05); - --tridactyl-bg: var(--base00); - --tridactyl-url-fg: var(--base08); - --tridactyl-url-bg: var(--base00); - --tridactyl-highlight-box-bg: var(--base0B); - --tridactyl-highlight-box-fg: var(--base00); - - /* Hint character tags */ - --tridactyl-hintspan-fg: var(--base00) !important; - --tridactyl-hintspan-bg: var(--base0A) !important; - - /* Element Highlights */ - --tridactyl-hint-active-fg: none; - --tridactyl-hint-active-bg: none; - --tridactyl-hint-active-outline: none; - /* --tridactyl-hint-activy-outline: var(--base08); */ - --tridactyl-hint-bg: none; - --tridactyl-hint-outline: none; - /* --tridactyl-hint-outline: var(--base08); */ -} - -/* a { */ -/* color: var(--base04); */ -/* } */ - -#command-line-holder { order: 1; - border: 2px solid var(--base0B); - color: var(--tridactyl-bg); -} - -#tridactyl-input { padding: 1rem; - color: var(--tridactyl-fg); - width: 90%; - font-size: 1.2rem; - line-height: 1.5; - background: var(--tridactyl-bg); - padding-left: unset; - padding: 1rem; -} - -#completions table { font-size: 0.8rem; - font-weight: 200; - border-spacing: 0; - table-layout: fixed; - padding: 1rem; - padding-top: 1rem; - padding-bottom: 1rem; -} - -#completions > div { max-height: calc(20 * var(--option-height)); - min-height: calc(10 * var(--option-height)); -} - -/* COMPLETIONS */ - -#completions { --option-height: 1.4em; - color: var(--tridactyl-fg); - background: var(--tridactyl-bg); - display: inline-block; - font-size: unset; - font-weight: 200; - overflow: hidden; - width: 100%; - border-top: unset; - order: 2; -} - -/* Olie doesn't know how CSS inheritance works */ -#completions .HistoryCompletionSource { max-height: unset; - min-height: unset; -} - -#completions .HistoryCompletionSource table { width: 100%; - font-size: 11pt; - border-spacing: 0; - table-layout: fixed; -} - -/* redundancy 2: redundancy 2: more redundancy */ -#completions .BmarkCompletionSource { max-height: unset; - min-height: unset; -} - -#completions table tr td.prefix,#completions table tr td.privatewindow,#completions table tr td.container,#completions table tr td.icon { display: none; -} - -#completions .BufferCompletionSource table { width: unset; - font-size: unset; - border-spacing: unset; - table-layout: unset; -} - -#completions table tr .title { width: 50%; -} - -#completions table tr { white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -#completions .sectionHeader { background: unset; - font-weight: 200; - border-bottom: unset; - padding: 1rem !important; - padding-left: unset; - padding-bottom: 0.2rem; -} - -#cmdline_iframe { position: fixed !important; - bottom: unset; - top: 25% !important; - left: 10% !important; - z-index: 2147483647 !important; - width: 80% !important; - box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 20px !important; -} - -.TridactylStatusIndicator { position: fixed !important; - bottom: 0 !important; - background: var(--tridactyl-bg) !important; - border: unset !important; - border: 1px var(--base0B) solid !important; - font-size: 12pt !important; - /*font-weight: 200 !important;*/ - padding: 0.8ex !important; -} - -#completions .focused { background: var(--base0B); - color: var(--base00); -} - -#completions .focused .url { background: var(--base0B); - color: var(--base00); -} -/* #Ocean-normal { */ -/* border-color: green !important; */ -/* } */ - -/* #Ocean-insert { */ -/* border-color: yellow !important; */ -/* } */ diff --git a/.config/yadm/hooks/post_alt b/.config/yadm/hooks/post_alt index 30ff810..8a95c9c 100755 --- a/.config/yadm/hooks/post_alt +++ b/.config/yadm/hooks/post_alt @@ -1,7 +1,5 @@ #!/usr/bin/env bash LINKS=( - "$HOME/.config/tridactyl/themes $HOME/themes" - "$HOME/.config/tridactyl/.tridactylrc $HOME/.tridactylrc" "$HOME/.config/vnstat/.vnstatrc $HOME/.vnstatrc" "$HOME/.config/vim/vimrc $HOME/.vimrc" ) diff --git a/.emacs.d/desktop.el b/.emacs.d/desktop.el index a3b6ea0..c9489a8 100644 --- a/.emacs.d/desktop.el +++ b/.emacs.d/desktop.el @@ -586,6 +586,11 @@ _d_: Discord (defun my/exwm-update-class () (exwm-workspace-rename-buffer (format "EXWM :: %s" exwm-class-name))) +(defun my/exwm-set-alpha (alpha) + (setf (alist-get 'alpha default-frame-alist) + `(,alpha . ,alpha)) + (set-frame-parameter (selected-frame) 'alpha `(,alpha . ,alpha))) + (use-package exwm :straight t :config @@ -727,8 +732,9 @@ _d_: Discord (backtrace) (buffer-string)))))) - (set-frame-parameter (selected-frame) 'alpha '(90 . 90)) - (add-to-list 'default-frame-alist '(alpha . (90 . 90))) + (if (my/light-p) + (my/exwm-set-alpha 100) + (my/exwm-set-alpha 90)) (perspective-exwm-mode) (exwm-enable)) diff --git a/Desktop.org b/Desktop.org index 818f525..1a40a3c 100644 --- a/Desktop.org +++ b/Desktop.org @@ -3,6 +3,7 @@ #+PROPERTY: header-args :mkdirp yes #+PROPERTY: header-args:emacs-lisp :eval never-export #+PROPERTY: header-args:conf-space :comments link +#+PROPERTY: header-args:js :comments link #+PROPERTY: header-args:conf-unix :comments link #+PROPERTY: header-args:conf-windows :comments link #+PROPERTY: header-args:conf-xdefaults :comments link @@ -138,9 +139,23 @@ A few programs I use to customize the apperance are listed below. [[https://github.com/derat/xsettingsd][xsettingsd]] is a lightweight daemon which configures X11 applications. It is launched with shepherd in the [[*Services][Services]] section. -#+begin_src conf-space :tangle ~/.config/xsettingsd/xsettingsd.conf -Net/ThemeName "Matcha-dark-azul" -Net/IconThemeName "Papirus-Dark" +#+NAME: get-gtk-theme +#+begin_src emacs-lisp +(if (my/light-p) + "Matcha-light-azul" + "Matcha-dark-azul") +#+end_src + +#+NAME: get-icons-theme +#+begin_src emacs-lisp +(if (my/light-p) + "Papirus" + "Papirus-Dark") +#+end_src + +#+begin_src conf-space :tangle ~/.config/xsettingsd/xsettingsd.conf :noweb yes +Net/ThemeName "<>" +Net/IconThemeName "<>" Gtk/DecorationLayout "menu:minimize,maximize,close" Gtk/FontName "Sans 10" Gtk/MonospaceFontName "JetBrainsMono Nerd Mono 12" @@ -1178,6 +1193,11 @@ And the EXWM config itself. (defun my/exwm-update-class () (exwm-workspace-rename-buffer (format "EXWM :: %s" exwm-class-name))) +(defun my/exwm-set-alpha (alpha) + (setf (alist-get 'alpha default-frame-alist) + `(,alpha . ,alpha)) + (set-frame-parameter (selected-frame) 'alpha `(,alpha . ,alpha))) + (use-package exwm :straight t :config @@ -1201,8 +1221,9 @@ And the EXWM config itself. <> <> - (set-frame-parameter (selected-frame) 'alpha '(90 . 90)) - (add-to-list 'default-frame-alist '(alpha . (90 . 90))) + (if (my/light-p) + (my/exwm-set-alpha 100) + (my/exwm-set-alpha 90)) (perspective-exwm-mode) (exwm-enable)) @@ -1796,7 +1817,7 @@ My polybar has: *** Colors +The "colors" part is straightforward enough+. Once upon the time it was so... -Polybar can use =Xresources=, but the problem with that is you're supposed to use =colorX= as foreground, whereas I need them as background. This usually works fine with dark themes from =doom-themes=, but not so much with high-contrast =modus-themes=. +Polybar can use =Xresources=, but the problem with that is you're supposed to use =colorX= as foreground, not as background. This usually works fine with dark themes from =doom-themes=, but not so much with high-contrast =modus-themes=. So... #+NAME: get-polybar-colors @@ -1824,7 +1845,8 @@ So... acc) '("black" "red" "green" "yellow" "blue" "magenta" "cyan" "white") :initial-value nil)) - `(("background" . ,(my/color-value 'bg)) + `(("background" . ,(or (my/color-value 'bg-active) + (my/color-value 'bg))) ("foreground" . "#000000"))) "\n") #+end_src @@ -3153,6 +3175,298 @@ References: frame_color = <> timeout = 0 #+end_src +* Firefox +[[https://www.mozilla.org/en-US/firefox/new/][Firefox]] is my web browser of choice. + +** Tridactyl +[[https://github.com/tridactyl/tridactyl][Tridactyl]] is a Firefox add-on that provides vim-like interface. + +Run =:nativeinstall= at the first start. + +*** Config +The native messenger allows to configure the addon with a config file. + +#+begin_src conf :tangle ~/.tridactylrc +sanitize tridactyllocal tridactylsync + +bind gn tabnew +bind gN tabclose + +bind O fillcmdline tabopen + +bind n findnext 1 +bind N findnext -1 +bind F hint -t + +unbind + +set smoothscroll false +set findcase sensitive +colorscheme emacs + +bind j scrollline 3 +bind k scrollline -3 + +guiset_quiet gui full +guiset_quiet statuspanel left +guiset_quiet navbar none +guiset_quiet tabs always + +set searchurls.g https://google.com/search?q= + +set newtab about:blank + +command fixamo_quiet jsb tri.excmds.setpref("privacy.resistFingerprinting.block_mozAddonManager", "true").then(tri.excmds.setpref("extensions.webextensions.restrictedDomains", '""')) +command fixamo js tri.excmds.setpref("privacy.resistFingerprinting.block_mozAddonManager", "true").then(tri.excmds.setpref("extensions.webextensions.restrictedDomains", '""').then(tri.excmds.fillcmdline_tmp(3000, "Permissions added to user.js. Please restart Firefox to make them take affect."))) +fixamo_quiet +#+end_src + +*** Theme +Then, the package has its separate theme. + +I based it on =base16-dracula= by [[http://chriskempson.com][Chris Kempson]], but replaced the colors with my Emacs theme. + +#+begin_src css :tangle ~/themes/emacs.css :noweb yes +:root { + --tridactyl-fg: <>; + --tridactyl-bg: <>; + --tridactyl-url-fg: <>; + --tridactyl-url-bg: <>; + --tridactyl-highlight-box-bg: <>; + --tridactyl-highlight-box-fg: <>; + + /* Command line */ + --tridactyl-cmdl-bg: <> + --tridactyl-cmdl-fg: <> + + /* Hint character tags */ + --tridactyl-hintspan-fg: <> !important; + --tridactyl-hintspan-bg: <> !important; + + /* Element Highlights */ + --tridactyl-hint-active-fg: none; + --tridactyl-hint-active-bg: none; + --tridactyl-hint-active-outline: none; + /* --tridactyl-hint-activy-outline: var(--base08); */ + --tridactyl-hint-bg: none; + --tridactyl-hint-outline: none; + /* --tridactyl-hint-outline: var(--base08); */ +} + +/* a { */ +/* color: var(--base04); */ +/* } */ + +#command-line-holder { + order: 1; + border: 2px solid <>; + background: <>; +} + +#tridactyl-input { + padding: 1rem; + color: var(--tridactyl-fg); + width: 90%; + font-size: 1.2rem; + line-height: 1.5; + background: var(--tridactyl-bg); + padding-left: unset; + padding: 1rem; +} + +#completions table { + font-size: 0.8rem; + font-weight: 200; + border-spacing: 0; + table-layout: fixed; + padding: 1rem; + padding-top: 1rem; + padding-bottom: 1rem; +} + +#completions > div { + max-height: calc(20 * var(--option-height)); + min-height: calc(10 * var(--option-height)); +} + +/* COMPLETIONS */ + +#completions { + --option-height: 1.4em; + color: var(--tridactyl-fg); + background: var(--tridactyl-bg); + display: inline-block; + font-size: unset; + font-weight: 200; + overflow: hidden; + width: 100%; + border-top: unset; + order: 2; +} + +/* Olie doesn't know how CSS inheritance works */ +#completions .HistoryCompletionSource { + max-height: unset; + min-height: unset; +} + +#completions .HistoryCompletionSource table { + width: 100%; + font-size: 11pt; + border-spacing: 0; + table-layout: fixed; +} + +/* redundancy 2: redundancy 2: more redundancy */ +#completions .BmarkCompletionSource { + max-height: unset; + min-height: unset; +} + +#completions table tr td.prefix,#completions table tr td.privatewindow,#completions table tr td.container,#completions table tr td.icon { + display: none; +} + +#completions .BufferCompletionSource table { + width: unset; + font-size: unset; + border-spacing: unset; + table-layout: unset; +} + +#completions table tr .title { + width: 50%; +} + +#completions table tr { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +#completions .sectionHeader { + background: unset; + font-weight: 200; + border-bottom: unset; + padding: 1rem !important; + padding-left: unset; + padding-bottom: 0.2rem; +} + +#cmdline_iframe { + position: fixed !important; + bottom: unset; + top: 25% !important; + left: 10% !important; + z-index: 2147483647 !important; + width: 80% !important; + box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 20px !important; +} + +.TridactylStatusIndicator { + position: fixed !important; + bottom: 0 !important; + background: var(--tridactyl-bg) !important; + border: unset !important; + border: 1px <> solid !important; + font-size: 12pt !important; + /*font-weight: 200 !important;*/ + padding: 0.8ex !important; +} + +#completions .focused { + background: <>; + color: <>; +} + +#completions .focused .url { + background: <>; + color: <>; +} +/* #Ocean-normal { */ +/* border-color: green !important; */ +/* } */ + +/* #Ocean-insert { */ +/* border-color: yellow !important; */ +/* } */ +#+end_src +** Firefox Color +[[https://color.firefox.com/][Firefox Color]] is a system that allows for easy experimentation with Firefox themes. + +It can serialize themes into URLs like =https://color.firefox.com/?theme==, so I thought it would be a piece of cake to generate one from my Emacs theme, right? Well... + +As it turns out, Firefox uses npm package called [[https://github.com/masotime/json-url][json-url]] to create ==, which this package does by the following sequence: +- msgpack v5 +- lzma +- url-safe base64 +I tried to reproduce the above in Emacs, but in the end gave up and used the package in a simple node script: + +#+begin_src js :tangle ~/bin/firefox-theme/main.js +const JsonUrl = require('json-url'); +const jsonCodec = JsonUrl('lzma'); + +const json = JSON.parse(process.argv[2]); +jsonCodec.compress(json).then((r) => process.stdout.write(r)); +#+end_src + +Which I then can use to create the URL. + +#+begin_src emacs-lisp +(defun my/firefox-encode-json (string) + (with-output-to-string + (with-current-buffer standard-output + (call-process "node" nil t nil + (expand-file-name "~/bin/firefox-theme/main.js") + string)))) + +(defun my/color-value-rgb (color) + (let ((color (if (stringp color) + color + (my/color-value color)))) + `((r . ,(* 2.55 (ct-get-rgb-r color))) + (g . ,(* 2.55 (ct-get-rgb-g color))) + (b . ,(* 2.55 (ct-get-rgb-b color)))))) + +(defun my/firefox-get-json () + (let ((toolbar-color + (my/color-value-rgb + (or + (my/color-value 'bg-mode-line-active) + (if (my/light-p) + (ct-edit-hsl-l-dec (my/color-value 'bg-alt) 10) + (ct-edit-hsl-l-inc (my/color-value 'bg-alt) 15))))) + (text-color + (my/color-value-rgb + (if (my/light-p) 'fg 'yellow)))) + `((colors . ((toolbar . ,toolbar-color) + (toolbar_text . ,text-color) + (frame . ,(my/color-value-rgb 'bg)) + (tab_background_text . ,(my/color-value-rgb 'fg)) + (toolbar_field . ,(my/color-value-rgb 'bg)) + (toolbar_field_text . ,(my/color-value-rgb 'blue)) + (tab_line . ,text-color) + (popup . ,(my/color-value-rgb 'bg-alt)) + (popup_text . ,(my/color-value-rgb 'fg)) + (tab_loading . ,text-color)))))) + +(defun my/firefox-get-color-url () + (concat + "https://color.firefox.com/?theme=" + (my/firefox-encode-json + (json-encode + (my/firefox-get-json))))) + +(defun my/firefox-kill-color-url () + (interactive) + (kill-new (my/firefox-get-color-url))) + +(my/firefox-get-color-url) +#+end_src + +#+RESULTS: +: https://color.firefox.com/?theme=XQAAAAJrAQAAAAAAAABAqYhm849SCia3ftKEGccwS-xMDPsqcRvzbzAAd4k2kmKXySkP4TMALpTiAcE8Rgs7Uh-5qAVfhLcwaZT2bTD-29a13URGpYcmL606LIDWim8VmsoOSfdgHHz_mXYNmDrybfpFjF8MrhAxhCR9CUaEeVVThQwXiNyFKB47dmsAcqhUUHP9tqgY6YXG2A5n1PqZq7QowpQn__84yaYA + * keynav | Guix dependency | |-----------------| diff --git a/Emacs.org b/Emacs.org index 514f31a..f76f117 100644 --- a/Emacs.org +++ b/Emacs.org @@ -1669,7 +1669,9 @@ The built-in =load-theme= does not deactivate the previous theme, so here's a fu if (not (or (eq enabled-theme 'my-theme-1) (eq enabled-theme theme))) do (disable-theme enabled-theme)) - (load-theme theme t)) + (load-theme theme t) + (when current-prefix-arg + (my/regenerate-desktop))) #+end_src *** Dim inactive buffers Dim inactive buffers. @@ -3223,7 +3225,7 @@ Remove all advice from function. Source: https://emacs.stackexchange.com/questio #+end_src **** IELM #+begin_src emacs-lisp -(add-hook 'inferior-emacs-lisp-mode-hook #'lispy-mode) +(add-hook 'inferior-emacs-lisp-mode-hook #'smartparens-mode) #+end_src *** Common lisp **** SLIME @@ -6074,7 +6076,12 @@ Somewhat similar to the previous one... Occasinally I want to re-tangle all desk (org-babel-tangle-file "/home/pavel/Console.org") (call-process "xrdb" nil nil nil "-load" "/home/pavel/.Xresources") (call-process "~/bin/polybar.sh") - (call-process "pkill" nil nil nil "dunst")) + (call-process "pkill" nil nil nil "dunst") + (call-process "herd" nil nil nil "") + (when (fboundp #'my/exwm-set-alpha) + (if (my/light-p) + (my/exwm-set-alpha 100) + (my/exwm-set-alpha 90)))) #+end_src *** Folders diff --git a/bin/firefox-theme/README.org b/bin/firefox-theme/README.org new file mode 100644 index 0000000..5e4ccf7 --- /dev/null +++ b/bin/firefox-theme/README.org @@ -0,0 +1,22 @@ +#+TITLE: firefox-theme + +Encode JSON with [[https://www.npmjs.com/package/json-url][json-url]]. Use to create URLs for [[https://color.firefox.com/][Firefox Color]]. + +https://color.firefox.com/?theme=XQAAAAIHAQAAAAAAAABBKYhm849SCia2CaaEGccwS-xMDPsARMm2k1ATMvUAbztT0nA8jHzZWxmH53Zcl6OKO9FFdj7vQjqbs2NpDdIj_5EdCmTYWQeNMeHNc-M6G8YzO_5VKkeZvPZ5U3zNt3zGuy0f9c_R7jIQIdtxDf4DqBQVVO_0s7pB4c_FT2sS57mp_xSoRfHqN00wGpGMExz90em9-Qlsg8kUhIlwvQw__OjqYQ + +#+begin_src json +{ + colors: { + toolbar: { r: 67, g: 71, b: 88 }, + toolbar_text: { r: 255, g: 203, b: 107 }, + frame: { r: 41, g: 45, b: 62 }, + tab_background_text: { r: 255, g: 255, b: 255 }, + toolbar_field: { r: 41, g: 45, b: 62 }, + toolbar_field_text: { r: 156, g: 196, b: 255 }, + tab_line: { r: 255, g: 203, b: 107 }, + popup: { r: 67, g: 71, b: 88 }, + popup_text: { r: 255, g: 255, b: 255 } + }, + images: { additional_backgrounds: [ './bg-000.svg' ] } +} +#+end_src diff --git a/bin/firefox-theme/main.js b/bin/firefox-theme/main.js new file mode 100644 index 0000000..582d09e --- /dev/null +++ b/bin/firefox-theme/main.js @@ -0,0 +1,7 @@ +// [[file:../../Desktop.org::*Firefox Color][Firefox Color:1]] +const JsonUrl = require('json-url'); +const jsonCodec = JsonUrl('lzma'); + +const json = JSON.parse(process.argv[2]); +jsonCodec.compress(json).then((r) => process.stdout.write(r)); +// Firefox Color:1 ends here diff --git a/bin/firefox-theme/package.json b/bin/firefox-theme/package.json new file mode 100644 index 0000000..6697719 --- /dev/null +++ b/bin/firefox-theme/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "@babel/runtime": "^7.22.6", + "json-url": "^3.1.0" + } +} diff --git a/bin/firefox-theme/yarn.lock b/bin/firefox-theme/yarn.lock new file mode 100644 index 0000000..2bcc13b --- /dev/null +++ b/bin/firefox-theme/yarn.lock @@ -0,0 +1,139 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime-corejs2@^7.0.0": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.22.6.tgz#618b2219a7d82fa8fd4213c9e44c3bda7732ecde" + integrity sha512-GTJVRjzQIHUBwRzuWxPII87XoWxXzILBJrQh5gqIV6q6m231Y0BBA9NKta5FV5Lbl8z5gS3+m6YSoKJp0KQJ4g== + dependencies: + core-js "^2.6.12" + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" + integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== + dependencies: + regenerator-runtime "^0.13.11" + +bl@^2.0.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" + integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bluebird@^3.0.6: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +core-js@^2.6.12: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +json-url@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/json-url/-/json-url-3.1.0.tgz#dcd70a19eb098d88bd00917b3253e414f434f0dc" + integrity sha512-fhmtxBOQYJCshMV/omtzjBLv0ruLBz4dt+28y2+959fM45Oc8s+uL1jdLu/4yGeKATylgV022gAPfxCwQ5KgFA== + dependencies: + "@babel/runtime-corejs2" "^7.0.0" + bluebird "^3.0.6" + lz-string "^1.4.4" + lzma "^2.3.2" + msgpack5 "^4.2.1" + node-lzw "^0.3.1" + urlsafe-base64 "^1.0.0" + +lz-string@^1.4.4: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +lzma@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/lzma/-/lzma-2.3.2.tgz#3783b24858b9c0e747a0df3cbf1fb5fcaa92c441" + integrity sha512-DcfiawQ1avYbW+hsILhF38IKAlnguc/fjHrychs9hdxe4qLykvhT5VTGNs5YRWgaNePh7NTxGD4uv4gKsRomCQ== + +msgpack5@^4.2.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/msgpack5/-/msgpack5-4.5.1.tgz#2da4dba4ea20c09fd4309c9c04f046e38cb4975e" + integrity sha512-zC1vkcliryc4JGlL6OfpHumSYUHWFGimSI+OgfRCjTFLmKA2/foR9rMTOhWiqfOrfxJOctrpWPvrppf8XynJxw== + dependencies: + bl "^2.0.1" + inherits "^2.0.3" + readable-stream "^2.3.6" + safe-buffer "^5.1.2" + +node-lzw@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/node-lzw/-/node-lzw-0.3.1.tgz#f50e37968976aca83320028b91f101df4a436b2d" + integrity sha512-BGjQRR92HJsEsm1Ebp3Qvn2Jq+tlXEGY8zorNdal+FxOWpLMyyZBHoQWeyOc/TxsCzCvGbcCG4mU0u/RBSWxjQ== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +readable-stream@^2.3.5, readable-stream@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +safe-buffer@^5.1.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +urlsafe-base64@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/urlsafe-base64/-/urlsafe-base64-1.0.0.tgz#23f89069a6c62f46cf3a1d3b00169cefb90be0c6" + integrity sha512-RtuPeMy7c1UrHwproMZN9gN6kiZ0SvJwRaEzwZY0j9MypEkFqyBaKv176jvlPtg58Zh36bOkS0NFABXMHvvGCA== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== diff --git a/themes/emacs.css b/themes/emacs.css new file mode 100644 index 0000000..7fcc58d --- /dev/null +++ b/themes/emacs.css @@ -0,0 +1,163 @@ +:root { + --tridactyl-fg: #EEFFFF; + --tridactyl-bg: #292D3E; + --tridactyl-url-fg: #f07178; + --tridactyl-url-bg: #292D3E; + --tridactyl-highlight-box-bg: #82aaff; + --tridactyl-highlight-box-fg: #292D3E; + + /* Command line */ + --tridactyl-cmdl-bg: #242837 + --tridactyl-cmdl-fg: #EEFFFF + + /* Hint character tags */ + --tridactyl-hintspan-fg: #292D3E !important; + --tridactyl-hintspan-bg: #82aaff !important; + + /* Element Highlights */ + --tridactyl-hint-active-fg: none; + --tridactyl-hint-active-bg: none; + --tridactyl-hint-active-outline: none; + /* --tridactyl-hint-activy-outline: var(--base08); */ + --tridactyl-hint-bg: none; + --tridactyl-hint-outline: none; + /* --tridactyl-hint-outline: var(--base08); */ +} + +/* a { */ +/* color: var(--base04); */ +/* } */ + +#command-line-holder { + order: 1; + border: 2px solid #82aaff; + background: #292D3E; +} + +#tridactyl-input { + padding: 1rem; + color: var(--tridactyl-fg); + width: 90%; + font-size: 1.2rem; + line-height: 1.5; + background: var(--tridactyl-bg); + padding-left: unset; + padding: 1rem; +} + +#completions table { + font-size: 0.8rem; + font-weight: 200; + border-spacing: 0; + table-layout: fixed; + padding: 1rem; + padding-top: 1rem; + padding-bottom: 1rem; +} + +#completions > div { + max-height: calc(20 * var(--option-height)); + min-height: calc(10 * var(--option-height)); +} + +/* COMPLETIONS */ + +#completions { + --option-height: 1.4em; + color: var(--tridactyl-fg); + background: var(--tridactyl-bg); + display: inline-block; + font-size: unset; + font-weight: 200; + overflow: hidden; + width: 100%; + border-top: unset; + order: 2; +} + +/* Olie doesn't know how CSS inheritance works */ +#completions .HistoryCompletionSource { + max-height: unset; + min-height: unset; +} + +#completions .HistoryCompletionSource table { + width: 100%; + font-size: 11pt; + border-spacing: 0; + table-layout: fixed; +} + +/* redundancy 2: redundancy 2: more redundancy */ +#completions .BmarkCompletionSource { + max-height: unset; + min-height: unset; +} + +#completions table tr td.prefix,#completions table tr td.privatewindow,#completions table tr td.container,#completions table tr td.icon { + display: none; +} + +#completions .BufferCompletionSource table { + width: unset; + font-size: unset; + border-spacing: unset; + table-layout: unset; +} + +#completions table tr .title { + width: 50%; +} + +#completions table tr { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +#completions .sectionHeader { + background: unset; + font-weight: 200; + border-bottom: unset; + padding: 1rem !important; + padding-left: unset; + padding-bottom: 0.2rem; +} + +#cmdline_iframe { + position: fixed !important; + bottom: unset; + top: 25% !important; + left: 10% !important; + z-index: 2147483647 !important; + width: 80% !important; + box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 20px !important; +} + +.TridactylStatusIndicator { + position: fixed !important; + bottom: 0 !important; + background: var(--tridactyl-bg) !important; + border: unset !important; + border: 1px #82aaff solid !important; + font-size: 12pt !important; + /*font-weight: 200 !important;*/ + padding: 0.8ex !important; +} + +#completions .focused { + background: #82aaff; + color: #292D3E; +} + +#completions .focused .url { + background: #82aaff; + color: #292D3E; +} +/* #Ocean-normal { */ +/* border-color: green !important; */ +/* } */ + +/* #Ocean-insert { */ +/* border-color: yellow !important; */ +/* } */