diff options
Diffstat (limited to 'home-manager/general')
107 files changed, 22846 insertions, 0 deletions
diff --git a/home-manager/general/default.nix b/home-manager/general/default.nix new file mode 100644 index 0000000..4f1326e --- /dev/null +++ b/home-manager/general/default.nix @@ -0,0 +1,71 @@ +{ pkgs, ... }: +let + username = "jerpo"; + homeDirectory = "/home/${username}"; + configHome = "${homeDirectory}/.config"; + + cliPkgs = with pkgs; [ + gcc + cmake + gnumake + fd + pkg-config + glib + tldr + wget + btop + # jq + bat + python311 + fzf + nix-prefetch-scripts + libtool + steam-run + unzip + ghostscript + xdragon + ]; + gamingPkgs = with pkgs; [ + vkd3d + # mangohud + gamemode + # opentabletdriver + bottles + steam + ]; + guiPkgs = with pkgs; [ + libreoffice-fresh + clash-verge + pokemon-colorscripts + telegram-desktop + transmission-gtk + osu-lazer-bin + easyeffects + ]; + fonts = with pkgs; [ + rubik + source-code-pro + material-design-icons + font-awesome + ]; + imports = builtins.concatMap import [ + ./programs + ] ++ [ ./themes ]; +in +{ + inherit imports; + + home = { + inherit username homeDirectory; + stateVersion = "23.05"; + packages = guiPkgs ++ gamingPkgs ++ cliPkgs ++ fonts; + }; + + xdg = { + inherit configHome; + enable = true; + }; + + programs.home-manager.enable = true; + +} diff --git a/home-manager/general/home.nix~ b/home-manager/general/home.nix~ new file mode 100644 index 0000000..b5a5886 --- /dev/null +++ b/home-manager/general/home.nix~ @@ -0,0 +1,72 @@ +{ config, pkgs, lib, inputs, ... }: +let + username = "jerpo"; + homeDirectory = "/home/${username}"; + configHome = "${homeDirectory}/.config"; + + cliPkgs = with pkgs; [ + gcc + cmake + gnumake + fd + pkg-config + glib + tldr + wget + btop + # jq + bat + python311 + fzf + nix-prefetch-scripts + libtool + steam-run + unzip + ghostscript + xdragon + ]; + gamingPkgs = with pkgs; [ + vkd3d + # mangohud + gamemode + # opentabletdriver + bottles + steam + ]; + guiPkgs = with pkgs; [ + libreoffice-fresh + clash-verge + pokemon-colorscripts + telegram-desktop + transmission-gtk + osu-lazer-bin + easyeffects + ]; + fonts = with pkgs; [ + rubik + source-code-pro + material-design-icons + font-awesome + ]; + imports = builtins.concatMap import [ + ./programs + ./services + ] ++ [ ./themes ]; +in +{ + inherit imports; + + home = { + inherit username homeDirectory; + stateVersion = "23.05"; + packages = guiPkgs ++ gamingPkgs ++ cliPkgs ++ fonts; + }; + + xdg = { + inherit configHome; + enable = true; + }; + + programs.home-manager.enable = true; + +} diff --git a/home-manager/general/programs/alacritty/default.nix b/home-manager/general/programs/alacritty/default.nix new file mode 100644 index 0000000..930952d --- /dev/null +++ b/home-manager/general/programs/alacritty/default.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: + +{ + home.packages = [ pkgs.alacritty-theme ]; + programs.alacritty = { + enable = true; + settings = { + import = [ "${pkgs.alacritty-theme}/catppuccin_macchiato.yaml" ]; + font = { + normal = { + family = "Source Code Pro"; + style = "Medium"; + }; + size = 11.5; + }; + window.opacity = 0.7; + cursor = { + style = "Beam"; + thickness = 0.27; + }; + }; + }; +} diff --git a/home-manager/general/programs/default.nix b/home-manager/general/programs/default.nix new file mode 100644 index 0000000..cf86795 --- /dev/null +++ b/home-manager/general/programs/default.nix @@ -0,0 +1,7 @@ +[ + ./fish + ./firefox + ./emacs + ./ranger + ./alacritty +] diff --git a/home-manager/general/programs/emacs/#init.el# b/home-manager/general/programs/emacs/#init.el# new file mode 100644 index 0000000..b17a54b --- /dev/null +++ b/home-manager/general/programs/emacs/#init.el# @@ -0,0 +1,735 @@ +(setq gc-cons-threshold (* 50 1000 1000)) + +(require 'use-package) +(eval-and-compile + (setq use-package-always-ensure t + use-package-expand-minimally t)) + +(use-package savehist + :init + (setq savehist-file "~/.config/emacs/var/savehist.el") + :config + (setq history-length 500) + (setq savehist-additional-variables '(kill-ring search-ring)) + (savehist-mode t)) + +(use-package meow + :config + (defun meow-setup () + (setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty) + (meow-motion-overwrite-define-key + '("j" . meow-next) + '("k" . meow-prev) + '("<escape>" . ignore)) + (meow-leader-define-key + ;; SPC j/k will run the original command in MOTION state. + '("j" . "H-j") + '("k" . "H-k") + ;; Use SPC (0-9) for digit arguments. + '("1" . meow-digit-argument) + '("2" . meow-digit-argument) + '("3" . meow-digit-argument) + '("4" . meow-digit-argument) + '("5" . meow-digit-argument) + '("6" . meow-digit-argument) + '("7" . meow-digit-argument) + '("8" . meow-digit-argument) + '("9" . meow-digit-argument) + '("0" . meow-digit-argument) + '("/" . meow-keypad-describe-key) + '("?" . meow-cheatsheet) + '("bk" . kill-this-buffer)) + (meow-normal-define-key + '("0" . meow-expand-0) + '("9" . meow-expand-9) + '("8" . meow-expand-8) + '("7" . meow-expand-7) + '("6" . meow-expand-6) + '("5" . meow-expand-5) + '("4" . meow-expand-4) + '("3" . meow-expand-3) + '("2" . meow-expand-2) + '("1" . meow-expand-1) + '("-" . negative-argument) + '(";" . meow-reverse) + '("," . meow-inner-of-thing) + '("." . meow-bounds-of-thing) + '("[" . meow-beginning-of-thing) + '("]" . meow-end-of-thing) + '("a" . meow-append) + '("A" . meow-open-below) + '("b" . meow-back-word) + '("B" . meow-back-symbol) + '("c" . meow-change) + '("d" . meow-delete) + '("D" . meow-backward-delete) + '("e" . meow-next-word) + '("E" . meow-next-symbol) + '("f" . meow-find) + '("g" . meow-cancel-selection) + '("G" . meow-grab) + '("h" . meow-left) + '("H" . meow-left-expand) + '("i" . meow-insert) + '("I" . meow-open-above) + '("j" . meow-next) + '("J" . meow-next-expand) + '("k" . meow-prev) + '("K" . meow-prev-expand) + '("l" . meow-right) + '("L" . meow-right-expand) + '("m" . meow-join) + '("n" . meow-search) + '("o" . meow-block) + '("O" . meow-to-block) + '("p" . meow-yank) + '("q" . meow-quit) + '("Q" . meow-goto-line) + '("r" . meow-replace) + '("R" . meow-swap-grab) + '("s" . meow-kill) + '("t" . meow-till) + '("u" . meow-undo) + '("U" . meow-undo-in-selection) + '("v" . meow-visit) + '("w" . meow-mark-word) + '("W" . meow-mark-symbol) + '("x" . meow-line) + '("X" . meow-goto-line) + '("y" . meow-save) + '("Y" . meow-sync-grab) + '("z" . meow-pop-selection) + '("'" . repeat) + '("<escape>" . ignore))) + (setq meow-use-enhanced-selection-effect t) + (meow-setup)) + ;; (meow-global-mode 1)) + +(use-package kakoune + ;; Having a non-chord way to escape is important, since key-chords don't work in macros + :bind ("C-z" . ryo-modal-mode) + :hook (after-init . my/kakoune-setup) + :config + (defun ryo-enter () "Enter normal mode" (interactive) (ryo-modal-mode 1)) + (defun my/kakoune-setup () + "Call kakoune-setup-keybinds and then add some personal config." + (kakoune-setup-keybinds) + (setq ryo-modal-cursor-type 'box) + (add-hook 'prog-mode-hook #'ryo-enter) + (define-key ryo-modal-mode-map (kbd "SPC h") 'help-command) + ;; Access all C-x bindings easily + (define-key ryo-modal-mode-map (kbd "z") ctl-x-map) + (ryo-modal-keys + ("," save-buffer) + ("P" counsel-yank-pop) + ("m" mc/mark-next-like-this) + ("M" mc/skip-to-next-like-this) + ("n" mc/mark-previous-like-this) + ("N" mc/skip-to-previous-like-this) + ("M-m" mc/edit-lines) + ("*" mc/mark-all-like-this) + ("v" er/expand-region) + ("C-v" set-rectangular-region-anchor) + ("M-s" mc/split-region) + (";" (("q" delete-window) + ("v" split-window-horizontally) + ("s" split-window-vertically))) + ("C-h" windmove-left) + ("C-j" windmove-down) + ("C-k" windmove-up) + ("C-l" windmove-right) + ("C-u" scroll-down-command :first '(deactivate-mark)) + ("C-d" scroll-up-command :first '(deactivate-mark))))) + +;; This overrides the default mark-in-region with a prettier-looking one, +;; and provides a couple extra commands +(use-package visual-regexp + :ryo + ("s" vr/mc-mark) + ("?" vr/replace) + ("M-/" vr/query-replace)) + +;; Emacs incremental search doesn't work with multiple cursors, but this fixes that +(use-package phi-search + :bind (("C-s" . phi-search) + ("C-r" . phi-search-backward))) + +;; Probably the first thing you'd miss is undo and redo, which requires an extra package +;; to work like it does in kakoune (and almost every other editor). +(use-package undo-tree + :config + (global-undo-tree-mode) + :ryo + ("u" undo-tree-undo) + ("U" undo-tree-redo) + ("SPC u" undo-tree-visualize) + :bind (:map undo-tree-visualizer-mode-map + ("h" . undo-tree-visualize-switch-branch-left) + ("j" . undo-tree-visualize-redo) + ("k" . undo-tree-visualize-undo) + ("l" . undo-tree-visualize-switch-branch-right))) + + +(use-package general + :config + ;; SPC as the global leader key + (general-create-definer spl3g/leader-keys + :prefix "C-c") + + (spl3g/leader-keys + ;; Buffers + "b" '(:ignore t :wk "Buffer") + "bi" '(ibuffer :wk "ibuffer") + "bk" '(kill-this-buffer :wk "Kill this buffer") + "bn" '(next-buffer :wk "Next buffer") + "bp" '(previous-buffer :wk "Previous buffer") + "br" '(revert-buffer :wk "Reload buffer") + "." '(find-file :wk "Find file") + ;; Splits + "w" '(:ignore t :wk "Splits") + "wv" '(split-window-right :wk "Split vertical") + "ws" '(split-window-below :wk "Split") + "ww" '(other-window :wk "Cycle throug windows") + "wc" '(delete-window :wk "Close window") + "wd" '(delete-window :wk "Close window") + "wl" '(evil-window-right :wk "") + "wj" '(evil-window-down :wk "") + "wk" '(evil-window-up :wk "") + "wh" '(evil-window-left :wk "") + "wo" '(delete-other-windows :wk "") + ;; Files + "f" '(:ignore t :wk "Files") + "fc" '((lambda () (interactive) (find-file "~/nixfiles/home-manager/programs/emacs/config.org")) :wk "Edit emacs config") + "fu" '(crux-sudo-edit :wk "Sudo edit file") + ;; Compilation + "c" '(:ignore t :wk "Compilation") + "cc" '(compile :wk "Compile") + "cr" '(recompile :wk "Recompile") + )) + +(defun spl3g/disable-scroll-bars (frame) + (modify-frame-parameters frame + '((vertical-scroll-bars . nil) + (horizontal-scroll-bars . nil)))) +(add-hook 'after-make-frame-functions 'spl3g/disable-scroll-bars) + +(setq default-frame-alist '((font . "Source Code Pro"))) +(set-face-attribute 'default nil + :font "Source Code Pro" + :height 110 + :weight 'medium) +(set-face-attribute 'fixed-pitch nil + :font "Source Code Pro" + :height 110 + :weight 'medium) +(set-face-attribute 'variable-pitch nil + :font "Rubik" + :height 110 + :weight 'medium) +(set-face-attribute 'font-lock-comment-face nil + :slant 'italic) +(set-face-attribute 'font-lock-keyword-face nil + :weight 'bold) + +(add-hook 'prog-mode-hook 'display-line-numbers-mode) +(visual-line-mode 1) + +(use-package catppuccin-theme + :ensure t + :config + (load-theme 'catppuccin t) + (setq catppuccin-flavor 'macchiato) + (catppuccin-reload)) + +(use-package all-the-icons + :ensure t + :if (display-graphic-p)) + +(use-package mood-line + + ;; Enable mood-line + :config + (mood-line-mode) + :custom + (mood-line-segment-modal-meow-state-alist + '((normal "N" . mood-line-meow-normal) + (insert "I" . mood-line-meow-insert) + (keypad "K" . mood-line-meow-keypad) + (beacon "B" . mood-line-meow-beacon) + (motion "M" . mood-line-meow-motion))) + (mood-line-glyph-alist mood-line-glyphs-fira-code) + :custom-face + (mood-line-meow-beacon ((t (:foreground "#f9e2af" :weight bold)))) + (mood-line-meow-insert ((t (:foreground "#a6e3a1" :weight bold)))) + (mood-line-meow-keypad ((t (:foreground "#cba6f7" :weight bold)))) + (mood-line-meow-motion ((t (:foreground "#fab387" :weight bold)))) + (mood-line-meow-normal ((t (:weight bold)))) + (mode-line-inactive ((t (:box (:line-width (2 . 6) :color "#11111b") :inverse-video nil :foreground "#6c7086" :background "#11111b")))) + (mode-line ((t (:box (:line-width (2 . 6) :color "#181825") :background "#181825"))))) + +(use-package good-scroll + :init (good-scroll-mode)) + +(use-package dashboard + :init + (dashboard-setup-startup-hook) + :config + (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) + (setq dashboard-banner-logo-title "Yep, it's emacs, not vim") + (setq dashboard-startup-banner 'logo) + (setq dashboard-center-content t) + (add-to-list 'dashboard-item-generators '(config . dashboard-open-config)) + (setq dashboard-items '((recents . 5) + (agenda . 5)))) + +(setq ring-bell-function 'ignore) + +(use-package indent-guide + :hook (prog-mode . indent-guide-mode)) + +(setq window-resize-pixelwise t) +(setq frame-resize-pixelwise t) +(save-place-mode t) +(defalias 'yes-or-no #'y-or-n-p) + +(add-hook 'org-mode-hook 'org-indent-mode) +(require 'org-tempo) + +(use-package toc-org + :hook (org-mode . toc-org-mode)) + +(use-package org-bullets + :hook (org-mode . org-bullets-mode)) + +(use-package org-auto-tangle + :hook (org-mode . org-auto-tangle-mode)) + +(use-package org-download + :hook + (dired-mode . org-download-enable)) + +(use-package direnv + :config + (direnv-mode)) + +(use-package vertico + :init + (vertico-mode) + :bind (:map vertico-map + ("M-j" . vertico-next) + ("M-k" . vertico-previous) + ("RET" . vertico-directory-enter) + ("DEL" . vertico-directory-delete-char) + ("M-DEL" . vertico-directory-delete-word))) + +(use-package emacs + :init + ;; Add prompt indicator to `completing-read-multiple'. + ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma. + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + + ;; Do not allow the cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + ;; Emacs 28: Hide commands in M-x which do not work in the current mode. + ;; Vertico commands are hidden in normal buffers. + ;; (setq read-extended-command-predicate + ;; #'command-completion-default-include-p) + + ;; Enable recursive minibuffers + (setq enable-recursive-minibuffers t)) + +(use-package orderless + :init + (setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) + +(use-package marginalia + :bind (:map minibuffer-local-map + ("M-A" . marginalia-cycle)) + :init + (marginalia-mode)) + +(use-package consult + ;; Replace bindings. Lazily loaded due by `use-package'. + :bind (;; C-c bindings in `mode-specific-map' + ("C-c k" . consult-kmacro) + ("C-c m" . consult-man) + ("C-c i" . consult-info) + ([remap Info-search] . consult-info) + ("C-c f r" . consult-recent-file) + ("C-c ," . consult-buffer) + ;; C-x bindings in `ctl-x-map' + ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command + ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window + ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame + ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer + ;; Custom M-# bindings for fast register access + ("M-#" . consult-register-load) + ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated) + ("C-M-#" . consult-register) + ;; Other custom bindings + ("M-y" . consult-yank-pop) ;; orig. yank-pop + ;; M-g bindings in `goto-map' + ("C-c c e" . consult-compile-error) + ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck + ("M-g g" . consult-goto-line) ;; orig. goto-line + ("M-g M-g" . consult-goto-line) ;; orig. goto-line + ("M-g o" . consult-outline) ;; Alternative: consult-org-heading + ;; M-s bindings in `search-map' + ("M-s d" . consult-fd) + ("M-s g" . consult-grep) + ("M-s G" . consult-git-grep) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + ("M-s k" . consult-keep-lines) + ("M-s u" . consult-focus-lines) + ;; Isearch integration + ("M-s e" . consult-isearch-history) + :map isearch-mode-map + ("M-e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s l" . consult-line) ;; needed by consult-line to detect isearch + ("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch + ("M-r" . consult-history) + ;; Minibuffer history + :map minibuffer-local-map + ("M-s" . consult-history) ;; orig. next-matching-history-element + ("M-r" . consult-history)) ;; orig. previous-matching-history-element) + + ;; Enable automatic preview at point in the *Completions* buffer. This is + ;; relevant when you use the default completion UI. + :hook + (completion-list-mode . consult-preview-at-point-mode) + (eshell-mode . (lambda () + (keymap-set eshell-mode-map "M-h" 'consult-history))) + + ;; The :init configuration is always executed (Not lazy) + :init + + ;; Optionally configure the register formatting. This improves the register + ;; preview for `consult-register', `consult-register-load', + ;; `consult-register-store' and the Emacs built-ins. + (setq register-preview-delay 0.5 + register-preview-function #'consult-register-format) + + ;; Optionally tweak the register preview window. + ;; This adds thin lines, sorting and hides the mode line of the window. + (advice-add #'register-preview :override #'consult-register-window) + + ;; Configure other variables and modes in the :config section, + ;; after lazily loading the package. + :config + + ;; Optionally configure preview. The default value + ;; is 'any, such that any key triggers the preview. + ;; (setq consult-preview-key 'any) + ;; (setq consult-preview-key "M-.") + ;; (setq consult-preview-key '("S-<down>" "S-<up>")) + ;; For some commands and buffer sources it is useful to configure the + ;; :preview-key on a per-command basis using the `consult-customize' macro. + (consult-customize + consult-ripgrep consult-git-grep consult-grep + consult-bookmark consult-recent-file consult-xref + consult--source-bookmark consult--source-file-register + consult--source-recent-file consult--source-project-recent-file) + ;; :preview-key "M-." + + ;; Optionally configure the narrowing key. + ;; Both < and C-+ work reasonably well. + (setq consult-narrow-key "<") ;; "C-+" + + ;; Optionally make narrowing help available in the minibuffer. + ;; You may want to use `embark-prefix-help-command' or which-key instead. + ;; (define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help) + + ;; By default `consult-project-function' uses `project-root' from project.el. + ;; Optionally configure a different project root function. +;;;; 1. project.el (the default) + ;; (setq consult-project-function #'consult--default-project--function) +;;;; 2. vc.el (vc-root-dir) + ;; (setq consult-project-function (lambda (_) (vc-root-dir))) +;;;; 3. locate-dominating-file + ;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git"))) +;;;; 4. projectile.el (projectile-project-root) + ;; (autoload 'projectile-project-root "projectile") + ;; (setq consult-project-function (lambda (_) (projectile-project-root))) +;;;; 5. No project support + ;; (setq consult-project-function nil) + ) + +(use-package smartparens + :init (smartparens-global-mode) + :config + ;; Snitched from doom + (let ((unless-list '(sp-point-before-word-p + sp-point-after-word-p + sp-point-before-same-p))) + (sp-pair "'" nil :unless unless-list) + (sp-pair "\"" nil :unless unless-list)) + (dolist (brace '("(" "{" "[")) + (sp-pair brace nil + :post-handlers '(("||\n[i]" "RET") ("| " "SPC")) + :unless '(sp-point-before-word-p sp-point-before-same-p))) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + + (sp-local-pair '(python-mode python-ts-mode) "f'" "'") + + ;; Major-mode specific fixes + (sp-local-pair 'ruby-mode "{" "}" + :pre-handlers '(:rem sp-ruby-pre-handler) + :post-handlers '(:rem sp-ruby-post-handler)) + + ;; Don't do square-bracket space-expansion where it doesn't make sense to + (sp-local-pair '(emacs-lisp-mode org-mode markdown-mode gfm-mode) + "[" nil :post-handlers '(:rem ("| " "SPC"))) + + (sp-local-pair '(emacs-lisp-mode org-mode) + "'" nil) + + ;; Reasonable default pairs for HTML-style comments + (sp-local-pair (append sp--html-modes '(markdown-mode gfm-mode)) + "<!--" "-->" + :unless '(sp-point-before-word-p sp-point-before-same-p) + :actions '(insert) :post-handlers '(("| " "SPC"))) + ;; Expand C-style comment blocks. + (defun +default-open-doc-comments-block (&rest _ignored) + (save-excursion + (newline) + (indent-according-to-mode))) + (sp-local-pair + '(js2-mode typescript-mode rjsx-mode rust-mode c-mode c++-mode objc-mode + csharp-mode java-mode php-mode css-mode scss-mode less-css-mode + stylus-mode scala-mode) + "/*" "*/" + :actions '(insert) + :post-handlers '(("| " "SPC") + (" | " "*") + ("|[i]\n[i]" "RET")))) + +;; (use-package dap-mode +;; :defer t +;; :config +;; (require 'dap-python) +;; (setq dap-python-debugger 'debugpy)) + +(use-package move-text + :bind (("C-M-k" . move-text-up) + ("C-M-j" . move-text-down))) + +(global-visual-line-mode t) + +(use-package no-littering) + +(use-package rainbow-delimiters + :hook (prog-mode . rainbow-delimiters-mode)) + +(use-package crux + :bind (("C-c o t" . crux-visit-shell-buffer))) + +(use-package helpful + :bind (("C-h f" . 'helpful-callable) + ("C-h v" . 'helpful-variable) + ("C-h k" . 'helpful-key) + ("C-h x" . 'helpful-command) + ("C-c C-d" . 'helpful-at-point) + ("C-h F" . 'helpful-function))) + +(add-hook 'eshell-mode-hook + (lambda () + (keymap-set eshell-mode-map "M-<tab>" 'consult-fish-completions))) + +(use-package eat + :hook (eshell-mode . eat-eshell-mode) + :custom + (eat-enable-auto-line-mode t)) + +;; (defun eat-toggle () +;; "Open eat terminal as a popup." +;; (interactive) +;; (if (eq major-mode 'eat-mode) +;; (delete-window) +;; (let ((buff (get-buffer-create eat-buffer-name))) +;; (cl-assert (and buff (buffer-live-p buff))) +;; (funcall #'pop-to-buffer buff) +;; (with-current-buffer buff +;; (setq-local split-width-threshold nil) +;; (setq-local window-min-height 2) +;; (unless (derived-mode-p 'eat-mode) +;; (eat)))))) + +;; (defun eat-modes() +;; (cond +;; ((and (eq major-mode 'eat-mode) (member 'meow-normal-mode local-minor-modes)) +;; (eat-emacs-mode)) +;; ((and (eq major-mode 'eat-mode) (member 'meow-insert-mode local-minor-modes)) +;; (eat-semi-char-mode)))) +;; (add-hook 'meow-normal-mode-hook #'eat-modes) +;; (add-hook 'meow-insert-mode-hook #'eat-modes) + +(use-package fish-completion + :hook (eshell-mode . fish-completion-mode)) + +(use-package eglot + :bind (("C-c s e e" . eglot) + ("C-c s e d" . eldoc) + ("C-c s e r" . eglot-rename) + ("C-c s e s" . eglot-shutdown) + ("C-c s e f" . eglot-find-declaration) + ("C-c s e i" . eglot-find-implementation)) + :hook + (nix-mode . eglot-ensure) + (python-ts-mode . eglot-ensure) + :config + (add-to-list 'eglot-server-programs '(python-ts-mode . ("pylsp")))) + +(use-package lsp-pyright) +(use-package py-autopep8 + :hook (python-mode . py-autopep8-mode)) + +(use-package rust-mode + :mode "\\.rs\\'") +(use-package flycheck-rust + :config + (with-eval-after-load 'rust-mode + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) + +(use-package fish-mode + :mode "\\.fish\\'") + +(use-package nix-mode + :mode ("\\.nix\\'" "\\.nix.in\\'")) +(use-package nix-drv-mode + :ensure nix-mode + :mode "\\.drv\\'") +(use-package nix-shell + :ensure nix-mode + :commands (nix-shell-unpack nix-shell-configure nix-shell-build)) +(use-package nix-repl + :ensure nix-mode + :commands (nix-repl)) + +(use-package web-mode + :mode + ("\\.phtml\\'" + "\\.tpl\\.php\\'" + "\\.[agj]sp\\'" + "\\.as[cp]x\\'" + "\\.erb\\'" + "\\.mustache\\'" + "\\.djhtml\\'")) + +(use-package js2-mode) + +(use-package corfu + :custom + (corfu-cycle t) + (corfu-preselect 'prompt) + (corfu-auto t) + (corfu-popupinfo-delay 0.0) + :bind + (:map corfu-map + ("TAB" . corfu-next) + ([tab] . corfu-next) + ("S-TAB" . corfu-previous) + ([backtab] . corfu-previous)) + + :init + (global-corfu-mode) + (corfu-history-mode) + (corfu-popupinfo-mode) + :config + (add-to-list 'savehist-additional-variables 'corfu-history)) +(use-package emacs + :init + (setq completion-cycle-threshold 3) + + (setq read-extended-command-predicate + #'command-completion-default-include-p) + + (setq tab-always-indent 'complete)) + +(use-package cape + :demand t + :config + (add-to-list 'completion-at-point-functions #'cape-dabbrev) + (add-to-list 'completion-at-point-functions #'cape-file) + (add-to-list 'completion-at-point-functions #'cape-elisp-block) + ) + +(use-package tree-sitter + :init + (global-tree-sitter-mode) + :config + (add-hook 'tree-sitter-mode-hook 'tree-sitter-hl-mode)) +(use-package treesit-auto + :custom + (treesit-auto-install 'prompt) + :config + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode)) + +(use-package tree-sitter-langs) + +;; (use-package yasnippet +;; :init (yas-global-mode)) +;; (use-package yasnippet-snippets) + +(use-package flymake + :after eglot + :bind (("C-c s f f" . flymake-start) + ("C-c s f l" . flymake-show-buffer-diagnostics) + ("C-c s f p" . flymake-show-project-diagnostics))) + +(use-package dired + :custom + (dired-listing-switches "-al --group-directories-first")) + + + +;; (add-to-list 'load-path "~/telega.el") +;; (require 'telega) + +(use-package magit + :bind (("C-c o g" . magit))) + +;; (use-package exwm) +;; (require 'exwm) +;; (require 'exwm-config) +;; (exwm-config-example) + +;; (use-package code-cells) + +;; (use-package orgnote +;; :defer t) + +(use-package copilot + :hook (python-ts-mode . copilot-mode) + :bind ("M-RET" . copilot-accept-completion)) + +(setq gc-cons-threshold (* 2 1000 1000)) +(setq read-process-output-max (* 1024 1024)) +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(package-selected-packages + '(dired web-mode vertico use-package treesit-auto tree-sitter-langs toc-org smartparens rust-mode rainbow-delimiters py-autopep8 org-download org-bullets org-auto-tangle orderless no-littering nix-mode move-text mood-line marginalia magit lsp-pyright kakoune js2-mode indent-guide helpful good-scroll general flycheck-rust fish-mode fish-completion eglot eat direnv dashboard crux corfu copilot consult catppuccin-theme cape all-the-icons snow meow))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + ) diff --git a/home-manager/general/programs/emacs/config.org b/home-manager/general/programs/emacs/config.org new file mode 100644 index 0000000..5cbd3b1 --- /dev/null +++ b/home-manager/general/programs/emacs/config.org @@ -0,0 +1,866 @@ +#+Title: spl3g's Emacs config +#+AUTHOR: spl3g +#+STARTUP: showeverything +#+PROPERTY: header-args :tangle init.el +#+OPTIONS: toc:2 +#+auto_tangle: t + +* Table Of Contents :toc: +- [[#progs-to-load-first][Progs to load first]] + - [[#optimise-gc][Optimise gc]] + - [[#use-package][use-package]] + - [[#save-history][Save history]] + - [[#meow-mode][Meow mode]] + - [[#general-keybindings][General keybindings]] +- [[#gui-tweaks][GUI tweaks]] + - [[#disable-gui-shit][Disable gui shit]] + - [[#fonts][Fonts]] + - [[#display-line-numbers][Display line numbers]] + - [[#theme][Theme]] + - [[#icons][Icons]] + - [[#modeline][Modeline]] + - [[#smooth-scroll][Smooth scroll]] + - [[#dashboard][Dashboard]] + - [[#disable-ring-bell][Disable ring-bell]] + - [[#indent-guide][Indent guide]] + - [[#misc][Misc]] +- [[#org-mode][Org mode]] + - [[#enabling-toc][Enabling toc]] + - [[#org-bullets][Org bullets]] + - [[#auto-tangle][Auto-tangle]] + - [[#org-download][Org-download]] + - [[#direnv][Direnv]] +- [[#better-ux][Better UX]] + - [[#vertico][Vertico]] + - [[#consult][Consult]] + - [[#pairs][Pairs]] + - [[#debugging][Debugging]] + - [[#move-lines][Move lines]] + - [[#truncate-lines][Truncate lines]] + - [[#no-littering][No littering]] + - [[#rainbow-delimiters][Rainbow delimiters]] + - [[#crux][Crux]] + - [[#better-help][Better *help*]] +- [[#eshell][Eshell]] + - [[#fish-completions][Fish completions]] + - [[#eat][Eat]] +- [[#lsp][LSP]] + - [[#languages][Languages]] + - [[#corfu][Corfu]] + - [[#tree-sitter][Tree-sitter]] + - [[#snippets][Snippets]] + - [[#flymake][Flymake]] +- [[#dired][Dired]] + - [[#bindings][Bindings]] + - [[#dired-filter][Dired filter]] +- [[#additional-apps][Additional apps]] + - [[#telegram-lol][Telegram lol]] + - [[#magit][Magit]] + - [[#exwm][EXWM]] + - [[#jupyter][Jupyter]] + - [[#orgnote][Orgnote]] + - [[#copilot][Copilot]] +- [[#runtime-performance][Runtime Performance]] + +* Progs to load first +** Optimise gc +#+begin_src emacs-lisp + (setq gc-cons-threshold (* 50 1000 1000)) +#+end_src +** use-package +#+begin_src emacs-lisp + (require 'use-package) + (eval-and-compile + (setq use-package-always-ensure t + use-package-expand-minimally t)) +#+end_src +** Save history +#+begin_src emacs-lisp + (use-package savehist + :init + (setq savehist-file "~/.config/emacs/var/savehist.el") + :config + (setq history-length 500) + (setq savehist-additional-variables '(kill-ring search-ring)) + (savehist-mode t)) +#+end_src +** Meow mode +#+begin_src emacs-lisp + (use-package meow + :config + (defun meow-setup () + (setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty) + (meow-motion-overwrite-define-key + '("j" . meow-next) + '("k" . meow-prev) + '("<escape>" . ignore)) + (meow-leader-define-key + ;; SPC j/k will run the original command in MOTION state. + '("j" . "H-j") + '("k" . "H-k") + ;; Use SPC (0-9) for digit arguments. + '("1" . meow-digit-argument) + '("2" . meow-digit-argument) + '("3" . meow-digit-argument) + '("4" . meow-digit-argument) + '("5" . meow-digit-argument) + '("6" . meow-digit-argument) + '("7" . meow-digit-argument) + '("8" . meow-digit-argument) + '("9" . meow-digit-argument) + '("0" . meow-digit-argument) + '("/" . meow-keypad-describe-key) + '("?" . meow-cheatsheet) + '("bk" . kill-this-buffer)) + (meow-normal-define-key + '("0" . meow-expand-0) + '("9" . meow-expand-9) + '("8" . meow-expand-8) + '("7" . meow-expand-7) + '("6" . meow-expand-6) + '("5" . meow-expand-5) + '("4" . meow-expand-4) + '("3" . meow-expand-3) + '("2" . meow-expand-2) + '("1" . meow-expand-1) + '("-" . negative-argument) + '(";" . meow-reverse) + '("," . meow-inner-of-thing) + '("." . meow-bounds-of-thing) + '("[" . meow-beginning-of-thing) + '("]" . meow-end-of-thing) + '("a" . meow-append) + '("A" . meow-open-below) + '("b" . meow-back-word) + '("B" . meow-back-symbol) + '("c" . meow-change) + '("d" . meow-delete) + '("D" . meow-backward-delete) + '("e" . meow-next-word) + '("E" . meow-next-symbol) + '("f" . meow-find) + '("g" . meow-cancel-selection) + '("G" . meow-grab) + '("h" . meow-left) + '("H" . meow-left-expand) + '("i" . meow-insert) + '("I" . meow-open-above) + '("j" . meow-next) + '("J" . meow-next-expand) + '("k" . meow-prev) + '("K" . meow-prev-expand) + '("l" . meow-right) + '("L" . meow-right-expand) + '("m" . meow-join) + '("n" . meow-search) + '("o" . meow-block) + '("O" . meow-to-block) + '("p" . meow-yank) + '("q" . meow-quit) + '("Q" . meow-goto-line) + '("r" . meow-replace) + '("R" . meow-swap-grab) + '("s" . meow-kill) + '("t" . meow-till) + '("u" . meow-undo) + '("U" . meow-undo-in-selection) + '("v" . meow-visit) + '("w" . meow-mark-word) + '("W" . meow-mark-symbol) + '("x" . meow-line) + '("X" . meow-goto-line) + '("y" . meow-save) + '("Y" . meow-sync-grab) + '("z" . meow-pop-selection) + '("'" . repeat) + '("<escape>" . ignore))) + (setq meow-use-enhanced-selection-effect t) + (meow-setup) + (meow-global-mode 1)) +#+end_src +** General keybindings +#+begin_src emacs-lisp + (use-package general + :config + ;; SPC as the global leader key + (general-create-definer spl3g/leader-keys + :prefix "C-c") + + (spl3g/leader-keys + ;; Buffers + "b" '(:ignore t :wk "Buffer") + "bi" '(ibuffer :wk "ibuffer") + "bk" '(kill-this-buffer :wk "Kill this buffer") + "bn" '(next-buffer :wk "Next buffer") + "bp" '(previous-buffer :wk "Previous buffer") + "br" '(revert-buffer :wk "Reload buffer") + "." '(find-file :wk "Find file") + ;; Splits + "w" '(:ignore t :wk "Splits") + "wv" '(split-window-right :wk "Split vertical") + "ws" '(split-window-below :wk "Split") + "ww" '(other-window :wk "Cycle throug windows") + "wc" '(delete-window :wk "Close window") + "wd" '(delete-window :wk "Close window") + "wl" '(evil-window-right :wk "") + "wj" '(evil-window-down :wk "") + "wk" '(evil-window-up :wk "") + "wh" '(evil-window-left :wk "") + "wo" '(delete-other-windows :wk "") + ;; Files + "f" '(:ignore t :wk "Files") + "fc" '((lambda () (interactive) (find-file "~/nixfiles/home-manager/programs/emacs/config.org")) :wk "Edit emacs config") + "fu" '(crux-sudo-edit :wk "Sudo edit file") + ;; Compilation + "c" '(:ignore t :wk "Compilation") + "cc" '(compile :wk "Compile") + "cr" '(recompile :wk "Recompile") + )) + +#+end_src +* GUI tweaks +** Disable gui shit +#+begin_src emacs-lisp + (defun spl3g/disable-scroll-bars (frame) + (modify-frame-parameters frame + '((vertical-scroll-bars . nil) + (horizontal-scroll-bars . nil)))) + (add-hook 'after-make-frame-functions 'spl3g/disable-scroll-bars) +#+end_src +** Fonts +#+begin_src emacs-lisp + (setq default-frame-alist '((font . "Source Code Pro"))) + (set-face-attribute 'default nil + :font "Source Code Pro" + :height 110 + :weight 'medium) + (set-face-attribute 'fixed-pitch nil + :font "Source Code Pro" + :height 110 + :weight 'medium) + (set-face-attribute 'variable-pitch nil + :font "Rubik" + :height 110 + :weight 'medium) + (set-face-attribute 'font-lock-comment-face nil + :slant 'italic) + (set-face-attribute 'font-lock-keyword-face nil + :weight 'bold) +#+end_src +** Display line numbers +#+begin_src emacs-lisp +(add-hook 'prog-mode-hook 'display-line-numbers-mode) +(visual-line-mode 1) +#+end_src + +** Theme +#+begin_src emacs-lisp +(use-package catppuccin-theme + :ensure t + :config + (load-theme 'catppuccin t) + (setq catppuccin-flavor 'macchiato) + (catppuccin-reload)) +#+end_src + +** Icons +#+begin_src emacs-lisp + (use-package all-the-icons + :ensure t + :if (display-graphic-p)) +#+end_src +** Modeline +#+begin_src emacs-lisp + (use-package mood-line + + ;; Enable mood-line + :config + (mood-line-mode) + :custom + (mood-line-segment-modal-meow-state-alist + '((normal "N" . mood-line-meow-normal) + (insert "I" . mood-line-meow-insert) + (keypad "K" . mood-line-meow-keypad) + (beacon "B" . mood-line-meow-beacon) + (motion "M" . mood-line-meow-motion))) + (mood-line-glyph-alist mood-line-glyphs-fira-code) + :custom-face + (mood-line-meow-beacon ((t (:foreground "#f9e2af" :weight bold)))) + (mood-line-meow-insert ((t (:foreground "#a6e3a1" :weight bold)))) + (mood-line-meow-keypad ((t (:foreground "#cba6f7" :weight bold)))) + (mood-line-meow-motion ((t (:foreground "#fab387" :weight bold)))) + (mood-line-meow-normal ((t (:weight bold)))) + (mode-line-inactive ((t (:box (:line-width (2 . 6) :color "#11111b") :inverse-video nil :foreground "#6c7086" :background "#11111b")))) + (mode-line ((t (:box (:line-width (2 . 6) :color "#181825") :background "#181825"))))) +#+end_src + +** Smooth scroll +#+begin_src emacs-lisp + (use-package good-scroll + :init (good-scroll-mode)) +#+end_src + +** Dashboard +#+begin_src emacs-lisp + (use-package dashboard + :init + (dashboard-setup-startup-hook) + :config + (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) + (setq dashboard-banner-logo-title "Yep, it's emacs, not vim") + (setq dashboard-startup-banner 'logo) + (setq dashboard-center-content t) + (add-to-list 'dashboard-item-generators '(config . dashboard-open-config)) + (setq dashboard-items '((recents . 5) + (agenda . 5)))) +#+end_src +** Disable ring-bell +#+begin_src emacs-lisp + (setq ring-bell-function 'ignore) +#+end_src +** Indent guide +#+begin_src emacs-lisp + (use-package indent-guide + :hook (prog-mode . indent-guide-mode)) +#+end_src +** Misc +#+begin_src emacs-lisp + (setq window-resize-pixelwise t) + (setq frame-resize-pixelwise t) + (save-place-mode t) + (defalias 'yes-or-no #'y-or-n-p) +#+end_src +* Org mode +#+begin_src emacs-lisp + (add-hook 'org-mode-hook 'org-indent-mode) + (require 'org-tempo) +#+end_src + +** Enabling toc +#+begin_src emacs-lisp + (use-package toc-org + :hook (org-mode . toc-org-mode)) +#+end_src + +** Org bullets +#+begin_src emacs-lisp + (use-package org-bullets + :hook (org-mode . org-bullets-mode)) +#+end_src +** Auto-tangle +#+begin_src emacs-lisp + (use-package org-auto-tangle + :hook (org-mode . org-auto-tangle-mode)) +#+end_src +** Org-download +#+begin_src emacs-lisp + (use-package org-download + :hook + (dired-mode . org-download-enable)) +#+end_src +** Direnv +#+begin_src emacs-lisp + (use-package direnv + :config + (direnv-mode)) +#+end_src +* Better UX +** Vertico +#+begin_src emacs-lisp + (use-package vertico + :init + (vertico-mode) + :bind (:map vertico-map + ("M-j" . vertico-next) + ("M-k" . vertico-previous) + ("RET" . vertico-directory-enter) + ("DEL" . vertico-directory-delete-char) + ("M-DEL" . vertico-directory-delete-word))) + + (use-package emacs + :init + ;; Add prompt indicator to `completing-read-multiple'. + ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma. + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + + ;; Do not allow the cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + ;; Emacs 28: Hide commands in M-x which do not work in the current mode. + ;; Vertico commands are hidden in normal buffers. + ;; (setq read-extended-command-predicate + ;; #'command-completion-default-include-p) + + ;; Enable recursive minibuffers + (setq enable-recursive-minibuffers t)) +#+end_src +*** Ordeless +#+begin_src emacs-lisp + (use-package orderless + :init + (setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) +#+end_src +*** Marginalia +#+begin_src emacs-lisp + (use-package marginalia + :bind (:map minibuffer-local-map + ("M-A" . marginalia-cycle)) + :init + (marginalia-mode)) +#+end_src +** Consult +#+begin_src emacs-lisp + (use-package consult + ;; Replace bindings. Lazily loaded due by `use-package'. + :bind (;; C-c bindings in `mode-specific-map' + ("C-c k" . consult-kmacro) + ("C-c m" . consult-man) + ("C-c i" . consult-info) + ([remap Info-search] . consult-info) + ("C-c f r" . consult-recent-file) + ("C-c ," . consult-buffer) + ;; C-x bindings in `ctl-x-map' + ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command + ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window + ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame + ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer + ;; Custom M-# bindings for fast register access + ("M-#" . consult-register-load) + ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated) + ("C-M-#" . consult-register) + ;; Other custom bindings + ("M-y" . consult-yank-pop) ;; orig. yank-pop + ;; M-g bindings in `goto-map' + ("C-c c e" . consult-compile-error) + ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck + ("M-g g" . consult-goto-line) ;; orig. goto-line + ("M-g M-g" . consult-goto-line) ;; orig. goto-line + ("M-g o" . consult-outline) ;; Alternative: consult-org-heading + ;; M-s bindings in `search-map' + ("M-s d" . consult-fd) + ("M-s g" . consult-grep) + ("M-s G" . consult-git-grep) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + ("M-s k" . consult-keep-lines) + ("M-s u" . consult-focus-lines) + ;; Isearch integration + ("M-s e" . consult-isearch-history) + :map isearch-mode-map + ("M-e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s l" . consult-line) ;; needed by consult-line to detect isearch + ("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch + ("M-r" . consult-history) + ;; Minibuffer history + :map minibuffer-local-map + ("M-s" . consult-history) ;; orig. next-matching-history-element + ("M-r" . consult-history)) ;; orig. previous-matching-history-element) + + ;; Enable automatic preview at point in the *Completions* buffer. This is + ;; relevant when you use the default completion UI. + :hook + (completion-list-mode . consult-preview-at-point-mode) + (eshell-mode . (lambda () + (keymap-set eshell-mode-map "M-h" 'consult-history))) + + ;; The :init configuration is always executed (Not lazy) + :init + + ;; Optionally configure the register formatting. This improves the register + ;; preview for `consult-register', `consult-register-load', + ;; `consult-register-store' and the Emacs built-ins. + (setq register-preview-delay 0.5 + register-preview-function #'consult-register-format) + + ;; Optionally tweak the register preview window. + ;; This adds thin lines, sorting and hides the mode line of the window. + (advice-add #'register-preview :override #'consult-register-window) + + ;; Configure other variables and modes in the :config section, + ;; after lazily loading the package. + :config + + ;; Optionally configure preview. The default value + ;; is 'any, such that any key triggers the preview. + ;; (setq consult-preview-key 'any) + ;; (setq consult-preview-key "M-.") + ;; (setq consult-preview-key '("S-<down>" "S-<up>")) + ;; For some commands and buffer sources it is useful to configure the + ;; :preview-key on a per-command basis using the `consult-customize' macro. + (consult-customize + consult-ripgrep consult-git-grep consult-grep + consult-bookmark consult-recent-file consult-xref + consult--source-bookmark consult--source-file-register + consult--source-recent-file consult--source-project-recent-file) + ;; :preview-key "M-." + + ;; Optionally configure the narrowing key. + ;; Both < and C-+ work reasonably well. + (setq consult-narrow-key "<") ;; "C-+" + + ;; Optionally make narrowing help available in the minibuffer. + ;; You may want to use `embark-prefix-help-command' or which-key instead. + ;; (define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help) + + ;; By default `consult-project-function' uses `project-root' from project.el. + ;; Optionally configure a different project root function. + ;;;; 1. project.el (the default) + ;; (setq consult-project-function #'consult--default-project--function) + ;;;; 2. vc.el (vc-root-dir) + ;; (setq consult-project-function (lambda (_) (vc-root-dir))) + ;;;; 3. locate-dominating-file + ;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git"))) + ;;;; 4. projectile.el (projectile-project-root) + ;; (autoload 'projectile-project-root "projectile") + ;; (setq consult-project-function (lambda (_) (projectile-project-root))) + ;;;; 5. No project support + ;; (setq consult-project-function nil) + ) +#+end_src +** Pairs +#+begin_src emacs-lisp + (use-package smartparens + :init (smartparens-global-mode) + :config + ;; Snitched from doom + (let ((unless-list '(sp-point-before-word-p + sp-point-after-word-p + sp-point-before-same-p))) + (sp-pair "'" nil :unless unless-list) + (sp-pair "\"" nil :unless unless-list)) + (dolist (brace '("(" "{" "[")) + (sp-pair brace nil + :post-handlers '(("||\n[i]" "RET") ("| " "SPC")) + :unless '(sp-point-before-word-p sp-point-before-same-p))) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + + (sp-local-pair '(python-mode python-ts-mode) "f'" "'") + + ;; Major-mode specific fixes + (sp-local-pair 'ruby-mode "{" "}" + :pre-handlers '(:rem sp-ruby-pre-handler) + :post-handlers '(:rem sp-ruby-post-handler)) + + ;; Don't do square-bracket space-expansion where it doesn't make sense to + (sp-local-pair '(emacs-lisp-mode org-mode markdown-mode gfm-mode) + "[" nil :post-handlers '(:rem ("| " "SPC"))) + + (sp-local-pair '(emacs-lisp-mode org-mode) + "'" nil) + + ;; Reasonable default pairs for HTML-style comments + (sp-local-pair (append sp--html-modes '(markdown-mode gfm-mode)) + "<!--" "-->" + :unless '(sp-point-before-word-p sp-point-before-same-p) + :actions '(insert) :post-handlers '(("| " "SPC"))) + ;; Expand C-style comment blocks. + (defun +default-open-doc-comments-block (&rest _ignored) + (save-excursion + (newline) + (indent-according-to-mode))) + (sp-local-pair + '(js2-mode typescript-mode rjsx-mode rust-mode c-mode c++-mode objc-mode + csharp-mode java-mode php-mode css-mode scss-mode less-css-mode + stylus-mode scala-mode) + "/*" "*/" + :actions '(insert) + :post-handlers '(("| " "SPC") + (" | " "*") + ("|[i]\n[i]" "RET")))) +#+end_src + +** Debugging +#+begin_src emacs-lisp + ;; (use-package dap-mode + ;; :defer t + ;; :config + ;; (require 'dap-python) + ;; (setq dap-python-debugger 'debugpy)) +#+end_src +** Move lines +#+begin_src emacs-lisp + (use-package move-text + :bind (("C-M-k" . move-text-up) + ("C-M-j" . move-text-down))) +#+end_src +** Truncate lines +#+begin_src emacs-lisp + (global-visual-line-mode t) +#+end_src +** No littering +#+begin_src emacs-lisp + (use-package no-littering) +#+end_src +** Rainbow delimiters +#+begin_src emacs-lisp + (use-package rainbow-delimiters + :hook (prog-mode . rainbow-delimiters-mode)) +#+end_src +** Crux +#+begin_src emacs-lisp + (use-package crux + :bind (("C-c o t" . crux-visit-shell-buffer))) +#+end_src +** Better *help* +#+begin_src emacs-lisp + (use-package helpful + :bind (("C-h f" . 'helpful-callable) + ("C-h v" . 'helpful-variable) + ("C-h k" . 'helpful-key) + ("C-h x" . 'helpful-command) + ("C-c C-d" . 'helpful-at-point) + ("C-h F" . 'helpful-function))) +#+end_src +* Eshell +#+begin_src emacs-lisp + (add-hook 'eshell-mode-hook + (lambda () + (keymap-set eshell-mode-map "M-<tab>" 'consult-fish-completions))) +#+end_src +** Fish completions +#+begin_src emacs-lisp + (use-package fish-completion + :hook (eshell-mode . fish-completion-mode)) +#+end_src +*** Consult fish completions +#+begin_src emacs-lisp + (use-package consult-fish-completions + :load-path "~/prog/elisp/fish-completions/consult-fish-completions.el" + :hook (eshell-mode . (lambda () + (keymap-set eshell-mode-map "M-<tab>" 'consult-fish-completions)))) +#+end_src +** Eat +#+begin_src emacs-lisp + (use-package eat + :hook (eshell-mode . eat-eshell-mode) + :custom + (eat-enable-auto-line-mode t)) +#+end_src +*** Eat-toggle +#+begin_src emacs-lisp + ;; (defun eat-toggle () + ;; "Open eat terminal as a popup." + ;; (interactive) + ;; (if (eq major-mode 'eat-mode) + ;; (delete-window) + ;; (let ((buff (get-buffer-create eat-buffer-name))) + ;; (cl-assert (and buff (buffer-live-p buff))) + ;; (funcall #'pop-to-buffer buff) + ;; (with-current-buffer buff + ;; (setq-local split-width-threshold nil) + ;; (setq-local window-min-height 2) + ;; (unless (derived-mode-p 'eat-mode) + ;; (eat)))))) +#+end_src +*** Eat modes +#+begin_src emacs-lisp + ;; (defun eat-modes() + ;; (cond + ;; ((and (eq major-mode 'eat-mode) (member 'meow-normal-mode local-minor-modes)) + ;; (eat-emacs-mode)) + ;; ((and (eq major-mode 'eat-mode) (member 'meow-insert-mode local-minor-modes)) + ;; (eat-semi-char-mode)))) + ;; (add-hook 'meow-normal-mode-hook #'eat-modes) + ;; (add-hook 'meow-insert-mode-hook #'eat-modes) +#+end_src +* LSP +#+begin_src emacs-lisp + (use-package eglot + :bind (("C-c s e e" . eglot) + ("C-c s e d" . eldoc) + ("C-c s e r" . eglot-rename) + ("C-c s e s" . eglot-shutdown) + ("C-c s e f" . eglot-find-declaration) + ("C-c s e i" . eglot-find-implementation)) + :hook + (nix-mode . eglot-ensure) + (python-ts-mode . eglot-ensure) + :config + (add-to-list 'eglot-server-programs '(python-ts-mode . ("pylsp")))) +#+end_src +** Languages +*** Python +#+begin_src emacs-lisp + (use-package lsp-pyright) + (use-package py-autopep8 + :hook (python-mode . py-autopep8-mode)) +#+end_src +*** Rust +#+begin_src emacs-lisp + (use-package rust-mode + :mode "\\.rs\\'") + (use-package flycheck-rust + :config + (with-eval-after-load 'rust-mode + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) +#+end_src +*** Fish +#+begin_src emacs-lisp + (use-package fish-mode + :mode "\\.fish\\'") +#+end_src +*** Nix +#+begin_src emacs-lisp + (use-package nix-mode + :mode ("\\.nix\\'" "\\.nix.in\\'")) + (use-package nix-drv-mode + :ensure nix-mode + :mode "\\.drv\\'") + (use-package nix-shell + :ensure nix-mode + :commands (nix-shell-unpack nix-shell-configure nix-shell-build)) + (use-package nix-repl + :ensure nix-mode + :commands (nix-repl)) +#+end_src +*** Web +#+begin_src emacs-lisp + (use-package web-mode + :mode + ("\\.phtml\\'" + "\\.tpl\\.php\\'" + "\\.[agj]sp\\'" + "\\.as[cp]x\\'" + "\\.erb\\'" + "\\.mustache\\'" + "\\.djhtml\\'")) +#+end_src +*** JavaScript +#+begin_src emacs-lisp + (use-package js2-mode) +#+end_src +** Corfu +#+begin_src emacs-lisp + (use-package corfu + :custom + (corfu-cycle t) + (corfu-preselect 'prompt) + (corfu-auto t) + (corfu-popupinfo-delay 0.0) + :bind + (:map corfu-map + ("TAB" . corfu-next) + ([tab] . corfu-next) + ("S-TAB" . corfu-previous) + ([backtab] . corfu-previous)) + + :init + (global-corfu-mode) + (corfu-history-mode) + (corfu-popupinfo-mode) + :config + (add-to-list 'savehist-additional-variables 'corfu-history)) + (use-package emacs + :init + (setq completion-cycle-threshold 3) + + (setq read-extended-command-predicate + #'command-completion-default-include-p) + + (setq tab-always-indent 'complete)) +#+end_src +*** Cape +#+begin_src emacs-lisp + (use-package cape + :demand t + :config + (add-to-list 'completion-at-point-functions #'cape-dabbrev) + (add-to-list 'completion-at-point-functions #'cape-file) + (add-to-list 'completion-at-point-functions #'cape-elisp-block) + ) +#+end_src +** Tree-sitter +#+begin_src emacs-lisp + (use-package tree-sitter + :init + (global-tree-sitter-mode) + :config + (add-hook 'tree-sitter-mode-hook 'tree-sitter-hl-mode)) + (use-package treesit-auto + :custom + (treesit-auto-install 'prompt) + :config + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode)) +#+end_src +*** Additional langs +#+begin_src emacs-lisp + (use-package tree-sitter-langs) +#+end_src +** Snippets +#+begin_src emacs-lisp + ;; (use-package yasnippet + ;; :init (yas-global-mode)) + ;; (use-package yasnippet-snippets) +#+end_src +** Flymake +#+begin_src emacs-lisp + (use-package flymake + :after eglot + :bind (("C-c s f f" . flymake-start) + ("C-c s f l" . flymake-show-buffer-diagnostics) + ("C-c s f p" . flymake-show-project-diagnostics))) +#+end_src +* Dired +** Bindings +#+begin_src emacs-lisp + (use-package dired + :custom + (dired-listing-switches "-al --group-directories-first")) + +#+end_src +** Dired filter +#+begin_src emacs-lisp + +#+end_src +* Additional apps +** Telegram lol +#+begin_src emacs-lisp + ;; (add-to-list 'load-path "~/telega.el") + ;; (require 'telega) +#+end_src +** Magit +#+begin_src emacs-lisp + (use-package magit + :bind (("C-c o g" . magit))) +#+end_src +** EXWM +#+begin_src emacs-lisp + ;; (use-package exwm) + ;; (require 'exwm) + ;; (require 'exwm-config) + ;; (exwm-config-example) +#+end_src +** Jupyter +#+begin_src emacs-lisp + ;; (use-package code-cells) +#+end_src +** Orgnote +#+begin_src emacs-lisp + ;; (use-package orgnote + ;; :defer t) +#+end_src +** Copilot +#+begin_src emacs-lisp + (use-package copilot + :hook (python-ts-mode . copilot-mode) + :bind ("M-RET" . copilot-accept-completion)) +#+end_src +* Runtime Performance +#+begin_src emacs-lisp + (setq gc-cons-threshold (* 2 1000 1000)) + (setq read-process-output-max (* 1024 1024)) +#+end_src diff --git a/home-manager/general/programs/emacs/default.nix b/home-manager/general/programs/emacs/default.nix new file mode 100644 index 0000000..7b61850 --- /dev/null +++ b/home-manager/general/programs/emacs/default.nix @@ -0,0 +1,118 @@ +{ pkgs, ... }: +let + pkgsForEmacs = with pkgs; [ + tree-sitter + emacs-all-the-icons-fonts + libappindicator + poppler_utils + nil + nodejs + ]; + + pkgsUsePackage = with pkgs; [ + (pkgs.emacsWithPackagesFromUsePackage { + package = pkgs.emacs29-pgtk; + config = ./init.el; + alwaysEnsure = true; + # TODO + # with next flake update delete this, if mood-line hash changes: + # "commit": "10b5195f1b400d64d646f73a21bf5469612a375b", + # "sha256": "0wj8rdgsqsdd2ps3w7sj8a7yhhz0iczwgnalalzws42x8s9yn4j0", + override = final: prev: { + mood-line = prev.melpaPackages.mood-line.overrideAttrs(old: { + src = pkgs.fetchgit { + url = "https://gitlab.com/jessieh/mood-line"; + sha256 = "00vbv40x04g5f9n8i1ylhawslf42fsz0046r3srs4ss6pq8s893r"; + rev = "10b5195f1b400d64d646f73a21bf5469612a375b"; + }; + }); + }; + extraEmacsPackages = epkgs: [ + epkgs.use-package + # (epkgs.melpaBuild rec { + # pname = "codeium"; + # version = "1.2.102"; + + # src = fetchFromGitHub { + # owner = "Exafunction"; + # repo = "codeium.el"; + # rev = "1.4.4"; + # sha256 = "1jjix7fn73ihjnhfivf72wris72f4kwf7xb6k5hxs41fm4kr9hdd"; + # }; + + # commit = "ddc9927ea231ecc5a32f7c9905f92fdfb7912e75"; + + # recipe = writeText "recipe" '' + # (codeium + # :repo "${src.owner}/${src.repo}" + # :fetcher github) + # ''; + # }) + # (epkgs.melpaBuild rec { + # pname = "telega"; + # version = "0.8.216"; + # src = fetchFromGitHub { + # owner = "zevlg"; + # repo = "telega.el"; + # rev = "3899aa8648b9e6deddbb34a2a817ca18acb9d97a"; + # sha256 = "05xrm86gp185mgwb62w720hcbn87salk8z0whq6zf2r2f24l6xbw"; + # }; + # commit = "3899aa8648b9e6deddbb34a2a817ca18acb9d97a"; + # recipe = writeText "recipe" '' + # (telega :fetcher github + # :repo "zevlg/telega.el" + # :files (:defaults "etc" "server" "contrib" "Makefile")) + # ''; + # }) + # (epkgs.melpaBuild rec { + # pname = "orgnote"; + # version = "0.7.17"; + + # src = fetchFromGitHub { + # owner = "Artawower"; + # repo = "orgnote.el"; + # rev = "v${version}"; + # sha256 = "1lrj47h244z4dqq2wyhpww7p3b4sy6bayk8lwlka517lhbcdgh33"; + # }; + + # commit = "ccc40cc346ebf5a6e6a55e3d4a147f0230337350"; + + # recipe = writeText "recipe" '' + # (orgnote + # :repo "${src.owner}/${src.repo}" + # :fetcher github) + # ''; + # }) + (epkgs.melpaBuild rec { + pname = "copilot"; + version = "20231219"; + + src = fetchFromGitHub { + owner = "zerolfx"; + repo = "copilot.el"; + rev = "d4fa14cea818e041b4a536c5052cf6d28c7223d7"; + sha256 = "1bn2im5ybzmwbwbi7v39s0qzmca5isp7zb0ls61y6sramh6k8fsg"; + }; + + packageRequires = with epkgs; [ editorconfig dash s ]; + + commit = "d4fa14cea818e041b4a536c5052cf6d28c7223d7"; + + recipe = writeText "recipe" '' + (copilot + :repo "${src.owner}/${src.repo}" + :fetcher github + :files ("*.el" "dist")) + ''; + }) + ]; + }) + ]; +in +{ + home.packages = pkgsForEmacs ++ pkgsUsePackage; + xdg.configFile = { + # "emacs/init.el".text = builtins.readFile ./init.el; + "emacs/early-init.el".text = builtins.readFile ./early-init.el; + }; +} diff --git a/home-manager/general/programs/emacs/early-init.el b/home-manager/general/programs/emacs/early-init.el new file mode 100644 index 0000000..6e306a1 --- /dev/null +++ b/home-manager/general/programs/emacs/early-init.el @@ -0,0 +1,4 @@ +(menu-bar-mode -1) +(tool-bar-mode -1) +(scroll-bar-mode -1) +(setq-default pgtk-wait-for-event-timeout 0) diff --git a/home-manager/general/programs/emacs/init.el b/home-manager/general/programs/emacs/init.el new file mode 100644 index 0000000..f1a4f90 --- /dev/null +++ b/home-manager/general/programs/emacs/init.el @@ -0,0 +1,675 @@ +(setq gc-cons-threshold (* 50 1000 1000)) + +(require 'use-package) +(eval-and-compile + (setq use-package-always-ensure t + use-package-expand-minimally t)) + +(use-package savehist + :init + (setq savehist-file "~/.config/emacs/var/savehist.el") + :config + (setq history-length 500) + (setq savehist-additional-variables '(kill-ring search-ring)) + (savehist-mode t)) + +(use-package meow + :config + (defun meow-setup () + (setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty) + (meow-motion-overwrite-define-key + '("j" . meow-next) + '("k" . meow-prev) + '("<escape>" . ignore)) + (meow-leader-define-key + ;; SPC j/k will run the original command in MOTION state. + '("j" . "H-j") + '("k" . "H-k") + ;; Use SPC (0-9) for digit arguments. + '("1" . meow-digit-argument) + '("2" . meow-digit-argument) + '("3" . meow-digit-argument) + '("4" . meow-digit-argument) + '("5" . meow-digit-argument) + '("6" . meow-digit-argument) + '("7" . meow-digit-argument) + '("8" . meow-digit-argument) + '("9" . meow-digit-argument) + '("0" . meow-digit-argument) + '("/" . meow-keypad-describe-key) + '("?" . meow-cheatsheet) + '("bk" . kill-this-buffer)) + (meow-normal-define-key + '("0" . meow-expand-0) + '("9" . meow-expand-9) + '("8" . meow-expand-8) + '("7" . meow-expand-7) + '("6" . meow-expand-6) + '("5" . meow-expand-5) + '("4" . meow-expand-4) + '("3" . meow-expand-3) + '("2" . meow-expand-2) + '("1" . meow-expand-1) + '("-" . negative-argument) + '(";" . meow-reverse) + '("," . meow-inner-of-thing) + '("." . meow-bounds-of-thing) + '("[" . meow-beginning-of-thing) + '("]" . meow-end-of-thing) + '("a" . meow-append) + '("A" . meow-open-below) + '("b" . meow-back-word) + '("B" . meow-back-symbol) + '("c" . meow-change) + '("d" . meow-delete) + '("D" . meow-backward-delete) + '("e" . meow-next-word) + '("E" . meow-next-symbol) + '("f" . meow-find) + '("g" . meow-cancel-selection) + '("G" . meow-grab) + '("h" . meow-left) + '("H" . meow-left-expand) + '("i" . meow-insert) + '("I" . meow-open-above) + '("j" . meow-next) + '("J" . meow-next-expand) + '("k" . meow-prev) + '("K" . meow-prev-expand) + '("l" . meow-right) + '("L" . meow-right-expand) + '("m" . meow-join) + '("n" . meow-search) + '("o" . meow-block) + '("O" . meow-to-block) + '("p" . meow-yank) + '("q" . meow-quit) + '("Q" . meow-goto-line) + '("r" . meow-replace) + '("R" . meow-swap-grab) + '("s" . meow-kill) + '("t" . meow-till) + '("u" . meow-undo) + '("U" . meow-undo-in-selection) + '("v" . meow-visit) + '("w" . meow-mark-word) + '("W" . meow-mark-symbol) + '("x" . meow-line) + '("X" . meow-goto-line) + '("y" . meow-save) + '("Y" . meow-sync-grab) + '("z" . meow-pop-selection) + '("'" . repeat) + '("<escape>" . ignore))) + (setq meow-use-enhanced-selection-effect t) + (meow-setup) + (meow-global-mode 1)) + +(use-package general + :config + ;; SPC as the global leader key + (general-create-definer spl3g/leader-keys + :prefix "C-c") + + (spl3g/leader-keys + ;; Buffers + "b" '(:ignore t :wk "Buffer") + "bi" '(ibuffer :wk "ibuffer") + "bk" '(kill-this-buffer :wk "Kill this buffer") + "bn" '(next-buffer :wk "Next buffer") + "bp" '(previous-buffer :wk "Previous buffer") + "br" '(revert-buffer :wk "Reload buffer") + "." '(find-file :wk "Find file") + ;; Splits + "w" '(:ignore t :wk "Splits") + "wv" '(split-window-right :wk "Split vertical") + "ws" '(split-window-below :wk "Split") + "ww" '(other-window :wk "Cycle throug windows") + "wc" '(delete-window :wk "Close window") + "wd" '(delete-window :wk "Close window") + "wl" '(evil-window-right :wk "") + "wj" '(evil-window-down :wk "") + "wk" '(evil-window-up :wk "") + "wh" '(evil-window-left :wk "") + "wo" '(delete-other-windows :wk "") + ;; Files + "f" '(:ignore t :wk "Files") + "fc" '((lambda () (interactive) (find-file "~/nixfiles/home-manager/programs/emacs/config.org")) :wk "Edit emacs config") + "fu" '(crux-sudo-edit :wk "Sudo edit file") + ;; Compilation + "c" '(:ignore t :wk "Compilation") + "cc" '(compile :wk "Compile") + "cr" '(recompile :wk "Recompile") + )) + +(defun spl3g/disable-scroll-bars (frame) + (modify-frame-parameters frame + '((vertical-scroll-bars . nil) + (horizontal-scroll-bars . nil)))) +(add-hook 'after-make-frame-functions 'spl3g/disable-scroll-bars) + +(setq default-frame-alist '((font . "Source Code Pro"))) +(set-face-attribute 'default nil + :font "Source Code Pro" + :height 110 + :weight 'medium) +(set-face-attribute 'fixed-pitch nil + :font "Source Code Pro" + :height 110 + :weight 'medium) +(set-face-attribute 'variable-pitch nil + :font "Rubik" + :height 110 + :weight 'medium) +(set-face-attribute 'font-lock-comment-face nil + :slant 'italic) +(set-face-attribute 'font-lock-keyword-face nil + :weight 'bold) + +(add-hook 'prog-mode-hook 'display-line-numbers-mode) +(visual-line-mode 1) + +(use-package catppuccin-theme + :ensure t + :config + (load-theme 'catppuccin t) + (setq catppuccin-flavor 'macchiato) + (catppuccin-reload)) + +(use-package all-the-icons + :ensure t + :if (display-graphic-p)) + +(use-package mood-line + + ;; Enable mood-line + :config + (mood-line-mode) + :custom + (mood-line-segment-modal-meow-state-alist + '((normal "N" . mood-line-meow-normal) + (insert "I" . mood-line-meow-insert) + (keypad "K" . mood-line-meow-keypad) + (beacon "B" . mood-line-meow-beacon) + (motion "M" . mood-line-meow-motion))) + (mood-line-glyph-alist mood-line-glyphs-fira-code) + :custom-face + (mood-line-meow-beacon ((t (:foreground "#f9e2af" :weight bold)))) + (mood-line-meow-insert ((t (:foreground "#a6e3a1" :weight bold)))) + (mood-line-meow-keypad ((t (:foreground "#cba6f7" :weight bold)))) + (mood-line-meow-motion ((t (:foreground "#fab387" :weight bold)))) + (mood-line-meow-normal ((t (:weight bold)))) + (mode-line-inactive ((t (:box (:line-width (2 . 6) :color "#11111b") :inverse-video nil :foreground "#6c7086" :background "#11111b")))) + (mode-line ((t (:box (:line-width (2 . 6) :color "#181825") :background "#181825"))))) + +(use-package good-scroll + :init (good-scroll-mode)) + +(use-package dashboard + :init + (dashboard-setup-startup-hook) + :config + (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) + (setq dashboard-banner-logo-title "Yep, it's emacs, not vim") + (setq dashboard-startup-banner 'logo) + (setq dashboard-center-content t) + (add-to-list 'dashboard-item-generators '(config . dashboard-open-config)) + (setq dashboard-items '((recents . 5) + (agenda . 5)))) + +(setq ring-bell-function 'ignore) + +(use-package indent-guide + :hook (prog-mode . indent-guide-mode)) + +(setq window-resize-pixelwise t) +(setq frame-resize-pixelwise t) +(save-place-mode t) +(defalias 'yes-or-no #'y-or-n-p) + +(add-hook 'org-mode-hook 'org-indent-mode) +(require 'org-tempo) + +(use-package toc-org + :hook (org-mode . toc-org-mode)) + +(use-package org-bullets + :hook (org-mode . org-bullets-mode)) + +(use-package org-auto-tangle + :hook (org-mode . org-auto-tangle-mode)) + +(use-package org-download + :hook + (dired-mode . org-download-enable)) + +(use-package direnv + :config + (direnv-mode)) + +(use-package vertico + :init + (vertico-mode) + :bind (:map vertico-map + ("M-j" . vertico-next) + ("M-k" . vertico-previous) + ("RET" . vertico-directory-enter) + ("DEL" . vertico-directory-delete-char) + ("M-DEL" . vertico-directory-delete-word))) + +(use-package emacs + :init + ;; Add prompt indicator to `completing-read-multiple'. + ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma. + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + + ;; Do not allow the cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + ;; Emacs 28: Hide commands in M-x which do not work in the current mode. + ;; Vertico commands are hidden in normal buffers. + ;; (setq read-extended-command-predicate + ;; #'command-completion-default-include-p) + + ;; Enable recursive minibuffers + (setq enable-recursive-minibuffers t)) + +(use-package orderless + :init + (setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) + +(use-package marginalia + :bind (:map minibuffer-local-map + ("M-A" . marginalia-cycle)) + :init + (marginalia-mode)) + +(use-package consult + ;; Replace bindings. Lazily loaded due by `use-package'. + :bind (;; C-c bindings in `mode-specific-map' + ("C-c k" . consult-kmacro) + ("C-c m" . consult-man) + ("C-c i" . consult-info) + ([remap Info-search] . consult-info) + ("C-c f r" . consult-recent-file) + ("C-c ," . consult-buffer) + ;; C-x bindings in `ctl-x-map' + ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command + ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window + ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame + ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer + ;; Custom M-# bindings for fast register access + ("M-#" . consult-register-load) + ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated) + ("C-M-#" . consult-register) + ;; Other custom bindings + ("M-y" . consult-yank-pop) ;; orig. yank-pop + ;; M-g bindings in `goto-map' + ("C-c c e" . consult-compile-error) + ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck + ("M-g g" . consult-goto-line) ;; orig. goto-line + ("M-g M-g" . consult-goto-line) ;; orig. goto-line + ("M-g o" . consult-outline) ;; Alternative: consult-org-heading + ;; M-s bindings in `search-map' + ("M-s d" . consult-fd) + ("M-s g" . consult-grep) + ("M-s G" . consult-git-grep) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + ("M-s k" . consult-keep-lines) + ("M-s u" . consult-focus-lines) + ;; Isearch integration + ("M-s e" . consult-isearch-history) + :map isearch-mode-map + ("M-e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s l" . consult-line) ;; needed by consult-line to detect isearch + ("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch + ("M-r" . consult-history) + ;; Minibuffer history + :map minibuffer-local-map + ("M-s" . consult-history) ;; orig. next-matching-history-element + ("M-r" . consult-history)) ;; orig. previous-matching-history-element) + + ;; Enable automatic preview at point in the *Completions* buffer. This is + ;; relevant when you use the default completion UI. + :hook + (completion-list-mode . consult-preview-at-point-mode) + (eshell-mode . (lambda () + (keymap-set eshell-mode-map "M-h" 'consult-history))) + + ;; The :init configuration is always executed (Not lazy) + :init + + ;; Optionally configure the register formatting. This improves the register + ;; preview for `consult-register', `consult-register-load', + ;; `consult-register-store' and the Emacs built-ins. + (setq register-preview-delay 0.5 + register-preview-function #'consult-register-format) + + ;; Optionally tweak the register preview window. + ;; This adds thin lines, sorting and hides the mode line of the window. + (advice-add #'register-preview :override #'consult-register-window) + + ;; Configure other variables and modes in the :config section, + ;; after lazily loading the package. + :config + + ;; Optionally configure preview. The default value + ;; is 'any, such that any key triggers the preview. + ;; (setq consult-preview-key 'any) + ;; (setq consult-preview-key "M-.") + ;; (setq consult-preview-key '("S-<down>" "S-<up>")) + ;; For some commands and buffer sources it is useful to configure the + ;; :preview-key on a per-command basis using the `consult-customize' macro. + (consult-customize + consult-ripgrep consult-git-grep consult-grep + consult-bookmark consult-recent-file consult-xref + consult--source-bookmark consult--source-file-register + consult--source-recent-file consult--source-project-recent-file) + ;; :preview-key "M-." + + ;; Optionally configure the narrowing key. + ;; Both < and C-+ work reasonably well. + (setq consult-narrow-key "<") ;; "C-+" + + ;; Optionally make narrowing help available in the minibuffer. + ;; You may want to use `embark-prefix-help-command' or which-key instead. + ;; (define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help) + + ;; By default `consult-project-function' uses `project-root' from project.el. + ;; Optionally configure a different project root function. +;;;; 1. project.el (the default) + ;; (setq consult-project-function #'consult--default-project--function) +;;;; 2. vc.el (vc-root-dir) + ;; (setq consult-project-function (lambda (_) (vc-root-dir))) +;;;; 3. locate-dominating-file + ;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git"))) +;;;; 4. projectile.el (projectile-project-root) + ;; (autoload 'projectile-project-root "projectile") + ;; (setq consult-project-function (lambda (_) (projectile-project-root))) +;;;; 5. No project support + ;; (setq consult-project-function nil) + ) + +(use-package smartparens + :init (smartparens-global-mode) + :config + ;; Snitched from doom + (let ((unless-list '(sp-point-before-word-p + sp-point-after-word-p + sp-point-before-same-p))) + (sp-pair "'" nil :unless unless-list) + (sp-pair "\"" nil :unless unless-list)) + (dolist (brace '("(" "{" "[")) + (sp-pair brace nil + :post-handlers '(("||\n[i]" "RET") ("| " "SPC")) + :unless '(sp-point-before-word-p sp-point-before-same-p))) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + + (sp-local-pair '(python-mode python-ts-mode) "f'" "'") + + ;; Major-mode specific fixes + (sp-local-pair 'ruby-mode "{" "}" + :pre-handlers '(:rem sp-ruby-pre-handler) + :post-handlers '(:rem sp-ruby-post-handler)) + + ;; Don't do square-bracket space-expansion where it doesn't make sense to + (sp-local-pair '(emacs-lisp-mode org-mode markdown-mode gfm-mode) + "[" nil :post-handlers '(:rem ("| " "SPC"))) + + (sp-local-pair '(emacs-lisp-mode org-mode) + "'" nil) + + ;; Reasonable default pairs for HTML-style comments + (sp-local-pair (append sp--html-modes '(markdown-mode gfm-mode)) + "<!--" "-->" + :unless '(sp-point-before-word-p sp-point-before-same-p) + :actions '(insert) :post-handlers '(("| " "SPC"))) + ;; Expand C-style comment blocks. + (defun +default-open-doc-comments-block (&rest _ignored) + (save-excursion + (newline) + (indent-according-to-mode))) + (sp-local-pair + '(js2-mode typescript-mode rjsx-mode rust-mode c-mode c++-mode objc-mode + csharp-mode java-mode php-mode css-mode scss-mode less-css-mode + stylus-mode scala-mode) + "/*" "*/" + :actions '(insert) + :post-handlers '(("| " "SPC") + (" | " "*") + ("|[i]\n[i]" "RET")))) + +;; (use-package dap-mode +;; :defer t +;; :config +;; (require 'dap-python) +;; (setq dap-python-debugger 'debugpy)) + +(use-package move-text + :bind (("C-M-k" . move-text-up) + ("C-M-j" . move-text-down))) + +(global-visual-line-mode t) + +(use-package no-littering) + +(use-package rainbow-delimiters + :hook (prog-mode . rainbow-delimiters-mode)) + +(use-package crux + :bind (("C-c o t" . crux-visit-shell-buffer))) + +(use-package helpful + :bind (("C-h f" . 'helpful-callable) + ("C-h v" . 'helpful-variable) + ("C-h k" . 'helpful-key) + ("C-h x" . 'helpful-command) + ("C-c C-d" . 'helpful-at-point) + ("C-h F" . 'helpful-function))) + +(add-hook 'eshell-mode-hook + (lambda () + (keymap-set eshell-mode-map "M-<tab>" 'consult-fish-completions))) + +(use-package fish-completion + :hook (eshell-mode . fish-completion-mode)) + +(use-package consult-fish-completions + :load-path "~/prog/elisp/fish-completions/" + :hook (eshell-mode . (lambda () + (keymap-set eshell-mode-map "M-<tab>" 'consult-fish-completions)))) + +(use-package eat + :hook (eshell-mode . eat-eshell-mode) + :custom + (eat-enable-auto-line-mode t)) + +;; (defun eat-toggle () +;; "Open eat terminal as a popup." +;; (interactive) +;; (if (eq major-mode 'eat-mode) +;; (delete-window) +;; (let ((buff (get-buffer-create eat-buffer-name))) +;; (cl-assert (and buff (buffer-live-p buff))) +;; (funcall #'pop-to-buffer buff) +;; (with-current-buffer buff +;; (setq-local split-width-threshold nil) +;; (setq-local window-min-height 2) +;; (unless (derived-mode-p 'eat-mode) +;; (eat)))))) + +;; (defun eat-modes() +;; (cond +;; ((and (eq major-mode 'eat-mode) (member 'meow-normal-mode local-minor-modes)) +;; (eat-emacs-mode)) +;; ((and (eq major-mode 'eat-mode) (member 'meow-insert-mode local-minor-modes)) +;; (eat-semi-char-mode)))) +;; (add-hook 'meow-normal-mode-hook #'eat-modes) +;; (add-hook 'meow-insert-mode-hook #'eat-modes) + +(use-package eglot + :bind (("C-c s e e" . eglot) + ("C-c s e d" . eldoc) + ("C-c s e r" . eglot-rename) + ("C-c s e s" . eglot-shutdown) + ("C-c s e f" . eglot-find-declaration) + ("C-c s e i" . eglot-find-implementation)) + :hook + (nix-mode . eglot-ensure) + (python-ts-mode . eglot-ensure) + :config + (add-to-list 'eglot-server-programs '(python-ts-mode . ("pylsp")))) + +(use-package lsp-pyright) +(use-package py-autopep8 + :hook (python-mode . py-autopep8-mode)) + +(use-package rust-mode + :mode "\\.rs\\'") +(use-package flycheck-rust + :config + (with-eval-after-load 'rust-mode + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) + +(use-package fish-mode + :mode "\\.fish\\'") + +(use-package nix-mode + :mode ("\\.nix\\'" "\\.nix.in\\'")) +(use-package nix-drv-mode + :ensure nix-mode + :mode "\\.drv\\'") +(use-package nix-shell + :ensure nix-mode + :commands (nix-shell-unpack nix-shell-configure nix-shell-build)) +(use-package nix-repl + :ensure nix-mode + :commands (nix-repl)) + +(use-package web-mode + :mode + ("\\.phtml\\'" + "\\.tpl\\.php\\'" + "\\.[agj]sp\\'" + "\\.as[cp]x\\'" + "\\.erb\\'" + "\\.mustache\\'" + "\\.djhtml\\'")) + +(use-package js2-mode) + +(use-package corfu + :custom + (corfu-cycle t) + (corfu-preselect 'prompt) + (corfu-auto t) + (corfu-popupinfo-delay 0.0) + :bind + (:map corfu-map + ("TAB" . corfu-next) + ([tab] . corfu-next) + ("S-TAB" . corfu-previous) + ([backtab] . corfu-previous)) + + :init + (global-corfu-mode) + (corfu-history-mode) + (corfu-popupinfo-mode) + :config + (add-to-list 'savehist-additional-variables 'corfu-history)) +(use-package emacs + :init + (setq completion-cycle-threshold 3) + + (setq read-extended-command-predicate + #'command-completion-default-include-p) + + (setq tab-always-indent 'complete)) + +(use-package cape + :demand t + :config + (add-to-list 'completion-at-point-functions #'cape-dabbrev) + (add-to-list 'completion-at-point-functions #'cape-file) + (add-to-list 'completion-at-point-functions #'cape-elisp-block) + ) + +(use-package tree-sitter + :init + (global-tree-sitter-mode) + :config + (add-hook 'tree-sitter-mode-hook 'tree-sitter-hl-mode)) +(use-package treesit-auto + :custom + (treesit-auto-install 'prompt) + :config + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode)) + +(use-package tree-sitter-langs) + +;; (use-package yasnippet +;; :init (yas-global-mode)) +;; (use-package yasnippet-snippets) + +(use-package flymake + :after eglot + :bind (("C-c s f f" . flymake-start) + ("C-c s f l" . flymake-show-buffer-diagnostics) + ("C-c s f p" . flymake-show-project-diagnostics))) + +(use-package dired + :custom + (dired-listing-switches "-al --group-directories-first")) + + + +;; (add-to-list 'load-path "~/telega.el") +;; (require 'telega) + +(use-package magit + :bind (("C-c o g" . magit))) + +;; (use-package exwm) +;; (require 'exwm) +;; (require 'exwm-config) +;; (exwm-config-example) + +;; (use-package code-cells) + +;; (use-package orgnote +;; :defer t) + +(use-package copilot + :hook (python-ts-mode . copilot-mode) + :bind ("M-RET" . copilot-accept-completion)) + +(setq gc-cons-threshold (* 2 1000 1000)) +(setq read-process-output-max (* 1024 1024)) +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(package-selected-packages + '(dired web-mode vertico use-package treesit-auto tree-sitter-langs toc-org smartparens rust-mode rainbow-delimiters py-autopep8 org-download org-bullets org-auto-tangle orderless no-littering nix-mode move-text mood-line marginalia magit lsp-pyright js2-mode indent-guide helpful good-scroll general flycheck-rust fish-mode fish-completion eglot eat direnv dashboard crux corfu copilot consult catppuccin-theme cape all-the-icons snow meow))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + ) diff --git a/home-manager/general/programs/emacs/init.old.el b/home-manager/general/programs/emacs/init.old.el new file mode 100644 index 0000000..766d86d --- /dev/null +++ b/home-manager/general/programs/emacs/init.old.el @@ -0,0 +1,592 @@ +(require 'use-package) + +;; Evil +;; (use-package evil +;; :init +;; (setq evil-want-integration t) +;; (setq evil-want-keybinding nil) +;; (setq evil-split-window-below t) +;; (setq evil-vsplit-window-right t) +;; (evil-mode)) +;; (use-package evil-collection +;; :after evil +;; :config +;; (setq evil-collection-mode-list '(dashboard dired ibuffer)) +;; (evil-collection-init)) + +;; Meow +(use-package meow + :config +(defun meow-setup () + (setq meow-use-clipboard t) + (setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty) + (meow-motion-overwrite-define-key + '("j" . meow-next) + '("k" . meow-prev) + '("<escape>" . ignore)) + (meow-leader-define-key + ;; SPC j/k will run the original command in MOTION state. + '("j" . "H-j") + '("k" . "H-k") + ;; Use SPC (0-9) for digit arguments. + '("1" . meow-digit-argument) + '("2" . meow-digit-argument) + '("3" . meow-digit-argument) + '("4" . meow-digit-argument) + '("5" . meow-digit-argument) + '("6" . meow-digit-argument) + '("7" . meow-digit-argument) + '("8" . meow-digit-argument) + '("9" . meow-digit-argument) + '("0" . meow-digit-argument) + '("/" . meow-keypad-describe-key) + '("?" . meow-cheatsheet) + '("bk" . kill-this-buffer)) + (meow-normal-define-key + '("0" . meow-expand-0) + '("9" . meow-expand-9) + '("8" . meow-expand-8) + '("7" . meow-expand-7) + '("6" . meow-expand-6) + '("5" . meow-expand-5) + '("4" . meow-expand-4) + '("3" . meow-expand-3) + '("2" . meow-expand-2) + '("1" . meow-expand-1) + '("-" . negative-argument) + '(";" . meow-reverse) + '("," . meow-inner-of-thing) + '("." . meow-bounds-of-thing) + '("[" . meow-beginning-of-thing) + '("]" . meow-end-of-thing) + '("a" . meow-append) + '("A" . meow-open-below) + '("b" . meow-back-word) + '("B" . meow-back-symbol) + '("c" . meow-change) + '("d" . meow-delete) + '("D" . meow-backward-delete) + '("e" . meow-next-word) + '("E" . meow-next-symbol) + '("f" . meow-find) + '("g" . meow-cancel-selection) + '("G" . meow-grab) + '("h" . meow-left) + '("H" . meow-left-expand) + '("i" . meow-insert) + '("I" . meow-open-above) + '("j" . meow-next) + '("J" . meow-next-expand) + '("k" . meow-prev) + '("K" . meow-prev-expand) + '("l" . meow-right) + '("L" . meow-right-expand) + '("m" . meow-join) + '("n" . meow-search) + '("o" . meow-block) + '("O" . meow-to-block) + '("p" . meow-yank) + '("q" . meow-quit) + '("Q" . meow-goto-line) + '("r" . meow-replace) + '("R" . meow-swap-grab) + '("s" . meow-kill) + '("t" . meow-till) + '("u" . meow-undo) + '("U" . meow-undo-in-selection) + '("v" . meow-visit) + '("w" . meow-mark-word) + '("W" . meow-mark-symbol) + '("x" . meow-line) + '("X" . meow-goto-line) + '("y" . meow-save) + '("Y" . meow-sync-grab) + '("z" . meow-pop-selection) + '("'" . repeat) + '("<escape>" . ignore))) +(meow-setup) +(meow-global-mode 1)) + +;; General Keybindings +(use-package general + :config + + ;; SPC as the global leader key + (general-create-definer spl3g/leader-keys + :prefix "C-c") + + (spl3g/leader-keys + ;; Buffers + "b" '(:ignore t :wk "Buffer") + "bi" '(ibuffer :wk "ibuffer") + "bk" '(kill-this-buffer :wk "Kill this buffer") + "bn" '(next-buffer :wk "Next buffer") + "bp" '(previous-buffer :wk "Previous buffer") + "br" '(revert-buffer :wk "Reload buffer") + "," '(consult-buffer :wk "Switch to buffer") + "." '(find-file :wk "Find file") + ;; Splits + "w" '(:ignore t :wk "Evil splits") + "wv" '(evil-window-vsplit :wk "Split vertical") + "ws" '(evil-window-split :wk "Split") + "ww" '(evil-window-next :wk "Cycle throug windows") + "wc" '(evil-window-delete :wk "Close window") + "wd" '(evil-window-delete :wk "Close window") + ;; Files + "f" '(:ignore t :wk "Files") + "fr" '(consult-recent-file :wk "Resent files") + "fc" '((lambda () (interactive) (find-file "~/.config/emacs/init.el")) :wk "Edit emacs config") + "fu" '(sudo-edit-find-file :wk "Sudo find file") + "fU" '(sudo-edit :wk "Sudo edit file") + ;; Quiting + "q" '(:ignore t :wk "Quiting") + "qq" '(:ignore t :wk "Quit TBD") + "qr" '(:ignore t :wk "Restart TBD") + "qe" '(eval-buffer :wk "Eval buffer") + "r" '(reload-init-file :wk "Reload config") + "l" '(lsp-keymap-prefix :wk "LSP"))) + +;; Which key +(use-package which-key + :init + (which-key-mode 1) + :config + (setq which-key-side-window-location 'bottom + which-key-sort-order #'which-key-key-order-alpha + which-key-sort-uppercase-first nil + which-key-add-column-padding 1 + which-key-max-display-columns nil + which-key-side-window-slot -10 + which-key-side-window-max-height 0.25 + which-key-idle-deley 0.8 + which-key-max-description-length 25 + which-key-allow-imprecise-window-fit t + which-key-separator " -> ")) + + + + +;; Vertico +(use-package vertico + :init + (vertico-mode)) + +;; For persistent history +(savehist-mode 1) +;; Idk what it means but they said that i need it +(use-package emacs + :init + ;; Add prompt indicator to `completing-read-multiple'. + ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma. + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + + ;; Do not allow the cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + ;; Emacs 28: Hide commands in M-x which do not work in the current mode. + ;; Vertico commands are hidden in normal buffers. + ;; (setq read-extended-command-predicate + ;; #'command-completion-default-include-p) + + ;; Enable recursive minibuffers + (setq enable-recursive-minibuffers t)) +;; Orderless +(use-package orderless + :init + (setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) +(use-package marginalia + :bind (:map minibuffer-local-map + ("M-A" . marginalia-cycle)) + :init + (marginalia-mode)) + +;; Consult +(use-package consult + ;; Replace bindings. Lazily loaded due by `use-package'. + :bind (;; C-c bindings in `mode-specific-map' + ("C-c M-x" . consult-mode-command) + ("C-c h" . consult-history) + ("C-c k" . consult-kmacro) + ("C-c m" . consult-man) + ("C-c i" . consult-info) + ([remap Info-search] . consult-info) + ;; C-x bindings in `ctl-x-map' + ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command + ("C-x b" . consult-buffer) ;; orig. switch-to-buffer + ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window + ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame + ("C-x r b" . consult-bookmark) ;; orig. bookmark-jump + ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer + ;; Custom M-# bindings for fast register access + ("M-#" . consult-register-load) + ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated) + ("C-M-#" . consult-register) + ;; Other custom bindings + ("M-y" . consult-yank-pop) ;; orig. yank-pop + ;; M-g bindings in `goto-map' + ("M-g e" . consult-compile-error) + ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck + ("M-g g" . consult-goto-line) ;; orig. goto-line + ("M-g M-g" . consult-goto-line) ;; orig. goto-line + ("M-g o" . consult-outline) ;; Alternative: consult-org-heading + ("M-g m" . consult-mark) + ("M-g k" . consult-global-mark) + ("M-g i" . consult-imenu) + ("M-g I" . consult-imenu-multi) + ;; M-s bindings in `search-map' + ("M-s d" . consult-find) + ("M-s D" . consult-locate) + ("M-s g" . consult-grep) + ("M-s G" . consult-git-grep) + ("M-s r" . consult-ripgrep) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + ("M-s k" . consult-keep-lines) + ("M-s u" . consult-focus-lines) + ;; Isearch integration + ("M-s e" . consult-isearch-history) + :map isearch-mode-map + ("M-e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s l" . consult-line) ;; needed by consult-line to detect isearch + ("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch + ;; Minibuffer history + :map minibuffer-local-map + ("M-s" . consult-history) ;; orig. next-matching-history-element + ("M-r" . consult-history)) ;; orig. previous-matching-history-element + + ;; Enable automatic preview at point in the *Completions* buffer. This is + ;; relevant when you use the default completion UI. + :hook (completion-list-mode . consult-preview-at-point-mode) + + ;; The :init configuration is always executed (Not lazy) + :init + + ;; Optionally configure the register formatting. This improves the register + ;; preview for `consult-register', `consult-register-load', + ;; `consult-register-store' and the Emacs built-ins. + (setq register-preview-delay 0.5 + register-preview-function #'consult-register-format) + + ;; Optionally tweak the register preview window. + ;; This adds thin lines, sorting and hides the mode line of the window. + (advice-add #'register-preview :override #'consult-register-window) + + ;; Use Consult to select xref locations with preview + (setq xref-show-xrefs-function #'consult-xref + xref-show-definitions-function #'consult-xref) + + ;; Configure other variables and modes in the :config section, + ;; after lazily loading the package. + :config + + ;; Optionally configure preview. The default value + ;; is 'any, such that any key triggers the preview. + ;; (setq consult-preview-key 'any) + ;; (setq consult-preview-key "M-.") + ;; (setq consult-preview-key '("S-<down>" "S-<up>")) + ;; For some commands and buffer sources it is useful to configure the + ;; :preview-key on a per-command basis using the `consult-customize' macro. + (consult-customize + consult-ripgrep consult-git-grep consult-grep + consult-bookmark consult-recent-file consult-xref + consult--source-bookmark consult--source-file-register + consult--source-recent-file consult--source-project-recent-file) + ;; :preview-key "M-." + + ;; Optionally configure the narrowing key. + ;; Both < and C-+ work reasonably well. + (setq consult-narrow-key "<") ;; "C-+" + + ;; Optionally make narrowing help available in the minibuffer. + ;; You may want to use `embark-prefix-help-command' or which-key instead. + ;; (define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help) + + ;; By default `consult-project-function' uses `project-root' from project.el. + ;; Optionally configure a different project root function. + ;;;; 1. project.el (the default) + ;; (setq consult-project-function #'consult--default-project--function) + ;;;; 2. vc.el (vc-root-dir) + ;; (setq consult-project-function (lambda (_) (vc-root-dir))) + ;;;; 3. locate-dominating-file + ;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git"))) + ;;;; 4. projectile.el (projectile-project-root) + ;; (autoload 'projectile-project-root "projectile") + ;; (setq consult-project-function (lambda (_) (projectile-project-root))) + ;;;; 5. No project support + ;; (setq consult-project-function nil) +) + +;; Hotfuzz +;; (use-package hotfuzz +;; :config +;; (setq completion-styles '(hotfuzz)) +;; (setq completion-ignore-case t)) + +;; Lsp +(use-package lsp-mode + :hook + (python-mode . lsp) + (rust-mode . lsp) + (lsp-mode . lsp-enable-which-key-integration) + (sh-mode . lsp) + :commands lsp) +(use-package lsp-pyright + :ensure t) +(use-package lsp-ui + :hook (lsp-mode-hook . lsp-ui-mode) + :custom + (lsp-ui-peek-always-show t) + (lsp-ui-sideline-show-hover t) + (lsp-ui-doc-enable t)) + +(use-package lsp-treemacs) + +;; Flycheck +(use-package flycheck) + +;; Corfu + Cape +(use-package corfu + :custom + (corfu-cycle t) + (corfu-auto t) + (corfu-preselect 'prompt) + :bind + (:map corfu-map + ("TAB" . corfu-next) + ([tab] . corfu-next) + ("S-TAB" . corfu-previous) + ([backtab] . corfu-previous)) + :init + (global-corfu-mode)) + ;;(use-package cape + ;; :bind (("C-c a f" . cape-file)) + ;; :init + ;; (add-to-list 'completion-at-point-functions # 'cape-file))) +(use-package cape + :init + (add-to-list 'completion-at-point-functions #'cape-file)) +(use-package emacs + :init + (setq completion-cycle-threshold 3) + (setq tab-always-indent 'complete)) + +;; Treemacs +(use-package treemacs + :config + (setq treemacs-no-png-images t)) +(use-package treemacs-evil) +(use-package treemacs-all-the-icons) + +;; Resent files +(recentf-mode 1) +(setq recentf-max-menu-items 25) +(setq recentf-max-saved-items 50) + +;; Sudo +(use-package sudo-edit) + +;; (defun sudo-find-file-hook () +;; (when (and (not (file-writable-p buffer-file-name)) +;; (y-or-n-p-with-timeout "File not writable. Open as root?" 2 t)) +;; (let ((obuf (current-buffer))) +;; (sudo-edit) +;; (unless (equal (current-buffer) obuf) +;; (let) + +;; Parinfer +(electric-pair-mode 1) + +;; NixOS +(use-package nix-mode + :mode "(.nix)$") +;; (use-package nix-drv-mode :elpaca nil +;; :ensure nix-mode +;; :mode ".drv") +;; (use-package nix-shell :elpaca nil +;; :ensure nix-mode +;; :commands (nix-shell-unpack nix-shell-configure nix-shell-build)) +;; (use-package nix-repl :elpaca nil +;; :ensure nix-mode +;; :commands (nix-repl)) + +;; Reload config +(defun reload-init-file () (interactive) + (load-file user-init-file) + (load-file user-init-file)) + +;; Magit +(use-package magit) + +;; Fish +(use-package fish-mode + :mode "(.fish)$") + +;; Rust +(use-package rustic + :ensure + :bind (:map rustic-mode-map + ("M-j" . lsp-ui-imenu) + ("M-?" . lsp-find-references) + ("C-c C-c l" . flycheck-list-errors) + ("C-c C-c a" . lsp-execute-code-action) + ("C-c C-c r" . lsp-rename) + ("C-c C-c q" . lsp-workspace-restart) + ("C-c C-c Q" . lsp-workspace-shutdown) + ("C-c C-c s" . lsp-rust-analyzer-status)) + :config + ;; uncomment for less flashiness + ;; (setq lsp-eldoc-hook nil) + ;; (setq lsp-enable-symbol-highlighting nil) + ;; (setq lsp-signature-auto-activate nil) + + ;; comment to disable rustfmt on save + (setq rustic-format-on-save t) + (add-hook 'rustic-mode-hook 'rk/rustic-mode-hook)) + +(defun rk/rustic-mode-hook () + ;; so that run C-c C-c C-r works without having to confirm, but don't try to + ;; save rust buffers that are not file visiting. Once + ;; https://github.com/brotzeit/rustic/issues/253 has been resolved this should + ;; no longer be necessary. + (when buffer-file-name + (setq-local buffer-save-without-query t)) + (add-hook 'before-save-hook 'lsp-format-buffer nil t)) + +;; Tree-sitter +(use-package treesit-auto + :config + (global-treesit-auto-mode) + (setq treesit-auto-install t)) + +;; Vterm +(use-package vterm) + +;; Org mode +(use-package toc-org + :hook (org-mode-hook . toc-org-enable)) +(add-hook 'org-mode-hook 'org-indent-mode) +(use-package org-bullets + :hook (org-mode-hook . (lambda () (org-bullets-mode)))) + +;; GUI tweaks +;; Display numbers +(global-display-line-numbers-mode 1) +(global-visual-line-mode t) + +;; Theme +(use-package autothemer) +(use-package catppuccin-theme + :ensure t + :config + (load-theme 'catppuccin t) + (setq catppuccin-flavor 'mocha) + (catppuccin-reload)) + +;; Fonts +(set-face-attribute 'default nil + :font "Source Code Pro" + :height 113 + :weight 'medium) +(set-face-attribute 'fixed-pitch nil + :font "Source Code Pro" + :height 113 + :weight 'medium) +(set-face-attribute 'variable-pitch nil + :font "Rubik" + :height 113 + :weight 'medium) +(set-face-attribute 'font-lock-comment-face nil + :slant 'italic) +(set-face-attribute 'font-lock-keyword-face nil + :weight 'bold) + +;; Icons +(use-package all-the-icons + :ensure t + :if (display-graphic-p)) +(use-package all-the-icons-dired + :hook (dired-mode . (lambda () + all-the-icons-dired-mode t))) + +;; Modeline +(use-package mood-line + :init + (mood-line-mode) + :config + (setq mood-line-glyph-alist mood-line-glyphs-unicode)) + +;; Scrolling +(use-package good-scroll + :init (good-scroll-mode)) + +;; Dashboard +(use-package dashboard + :init + (dashboard-setup-startup-hook) + :config + (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) + (setq dashboard-banner-logo-title "Yep, it's emacs, not vim") + (setq dashboard-startup-banner 'logo) + (setq dashboard-center-content t)) + +;; Vterm + + +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(package-selected-packages '(nix-mode)) + '(warning-suppress-types + '((comp) + (comp) + (comp) + (comp) + (comp) + (comp) + (comp) + (comp) + (comp) + (comp) + (comp) + (comp) + (comp)))) +(custom-set-faces) + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + diff --git a/home-manager/general/programs/emacs/tmpWCGTRZ b/home-manager/general/programs/emacs/tmpWCGTRZ new file mode 100644 index 0000000..b17a54b --- /dev/null +++ b/home-manager/general/programs/emacs/tmpWCGTRZ @@ -0,0 +1,735 @@ +(setq gc-cons-threshold (* 50 1000 1000)) + +(require 'use-package) +(eval-and-compile + (setq use-package-always-ensure t + use-package-expand-minimally t)) + +(use-package savehist + :init + (setq savehist-file "~/.config/emacs/var/savehist.el") + :config + (setq history-length 500) + (setq savehist-additional-variables '(kill-ring search-ring)) + (savehist-mode t)) + +(use-package meow + :config + (defun meow-setup () + (setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty) + (meow-motion-overwrite-define-key + '("j" . meow-next) + '("k" . meow-prev) + '("<escape>" . ignore)) + (meow-leader-define-key + ;; SPC j/k will run the original command in MOTION state. + '("j" . "H-j") + '("k" . "H-k") + ;; Use SPC (0-9) for digit arguments. + '("1" . meow-digit-argument) + '("2" . meow-digit-argument) + '("3" . meow-digit-argument) + '("4" . meow-digit-argument) + '("5" . meow-digit-argument) + '("6" . meow-digit-argument) + '("7" . meow-digit-argument) + '("8" . meow-digit-argument) + '("9" . meow-digit-argument) + '("0" . meow-digit-argument) + '("/" . meow-keypad-describe-key) + '("?" . meow-cheatsheet) + '("bk" . kill-this-buffer)) + (meow-normal-define-key + '("0" . meow-expand-0) + '("9" . meow-expand-9) + '("8" . meow-expand-8) + '("7" . meow-expand-7) + '("6" . meow-expand-6) + '("5" . meow-expand-5) + '("4" . meow-expand-4) + '("3" . meow-expand-3) + '("2" . meow-expand-2) + '("1" . meow-expand-1) + '("-" . negative-argument) + '(";" . meow-reverse) + '("," . meow-inner-of-thing) + '("." . meow-bounds-of-thing) + '("[" . meow-beginning-of-thing) + '("]" . meow-end-of-thing) + '("a" . meow-append) + '("A" . meow-open-below) + '("b" . meow-back-word) + '("B" . meow-back-symbol) + '("c" . meow-change) + '("d" . meow-delete) + '("D" . meow-backward-delete) + '("e" . meow-next-word) + '("E" . meow-next-symbol) + '("f" . meow-find) + '("g" . meow-cancel-selection) + '("G" . meow-grab) + '("h" . meow-left) + '("H" . meow-left-expand) + '("i" . meow-insert) + '("I" . meow-open-above) + '("j" . meow-next) + '("J" . meow-next-expand) + '("k" . meow-prev) + '("K" . meow-prev-expand) + '("l" . meow-right) + '("L" . meow-right-expand) + '("m" . meow-join) + '("n" . meow-search) + '("o" . meow-block) + '("O" . meow-to-block) + '("p" . meow-yank) + '("q" . meow-quit) + '("Q" . meow-goto-line) + '("r" . meow-replace) + '("R" . meow-swap-grab) + '("s" . meow-kill) + '("t" . meow-till) + '("u" . meow-undo) + '("U" . meow-undo-in-selection) + '("v" . meow-visit) + '("w" . meow-mark-word) + '("W" . meow-mark-symbol) + '("x" . meow-line) + '("X" . meow-goto-line) + '("y" . meow-save) + '("Y" . meow-sync-grab) + '("z" . meow-pop-selection) + '("'" . repeat) + '("<escape>" . ignore))) + (setq meow-use-enhanced-selection-effect t) + (meow-setup)) + ;; (meow-global-mode 1)) + +(use-package kakoune + ;; Having a non-chord way to escape is important, since key-chords don't work in macros + :bind ("C-z" . ryo-modal-mode) + :hook (after-init . my/kakoune-setup) + :config + (defun ryo-enter () "Enter normal mode" (interactive) (ryo-modal-mode 1)) + (defun my/kakoune-setup () + "Call kakoune-setup-keybinds and then add some personal config." + (kakoune-setup-keybinds) + (setq ryo-modal-cursor-type 'box) + (add-hook 'prog-mode-hook #'ryo-enter) + (define-key ryo-modal-mode-map (kbd "SPC h") 'help-command) + ;; Access all C-x bindings easily + (define-key ryo-modal-mode-map (kbd "z") ctl-x-map) + (ryo-modal-keys + ("," save-buffer) + ("P" counsel-yank-pop) + ("m" mc/mark-next-like-this) + ("M" mc/skip-to-next-like-this) + ("n" mc/mark-previous-like-this) + ("N" mc/skip-to-previous-like-this) + ("M-m" mc/edit-lines) + ("*" mc/mark-all-like-this) + ("v" er/expand-region) + ("C-v" set-rectangular-region-anchor) + ("M-s" mc/split-region) + (";" (("q" delete-window) + ("v" split-window-horizontally) + ("s" split-window-vertically))) + ("C-h" windmove-left) + ("C-j" windmove-down) + ("C-k" windmove-up) + ("C-l" windmove-right) + ("C-u" scroll-down-command :first '(deactivate-mark)) + ("C-d" scroll-up-command :first '(deactivate-mark))))) + +;; This overrides the default mark-in-region with a prettier-looking one, +;; and provides a couple extra commands +(use-package visual-regexp + :ryo + ("s" vr/mc-mark) + ("?" vr/replace) + ("M-/" vr/query-replace)) + +;; Emacs incremental search doesn't work with multiple cursors, but this fixes that +(use-package phi-search + :bind (("C-s" . phi-search) + ("C-r" . phi-search-backward))) + +;; Probably the first thing you'd miss is undo and redo, which requires an extra package +;; to work like it does in kakoune (and almost every other editor). +(use-package undo-tree + :config + (global-undo-tree-mode) + :ryo + ("u" undo-tree-undo) + ("U" undo-tree-redo) + ("SPC u" undo-tree-visualize) + :bind (:map undo-tree-visualizer-mode-map + ("h" . undo-tree-visualize-switch-branch-left) + ("j" . undo-tree-visualize-redo) + ("k" . undo-tree-visualize-undo) + ("l" . undo-tree-visualize-switch-branch-right))) + + +(use-package general + :config + ;; SPC as the global leader key + (general-create-definer spl3g/leader-keys + :prefix "C-c") + + (spl3g/leader-keys + ;; Buffers + "b" '(:ignore t :wk "Buffer") + "bi" '(ibuffer :wk "ibuffer") + "bk" '(kill-this-buffer :wk "Kill this buffer") + "bn" '(next-buffer :wk "Next buffer") + "bp" '(previous-buffer :wk "Previous buffer") + "br" '(revert-buffer :wk "Reload buffer") + "." '(find-file :wk "Find file") + ;; Splits + "w" '(:ignore t :wk "Splits") + "wv" '(split-window-right :wk "Split vertical") + "ws" '(split-window-below :wk "Split") + "ww" '(other-window :wk "Cycle throug windows") + "wc" '(delete-window :wk "Close window") + "wd" '(delete-window :wk "Close window") + "wl" '(evil-window-right :wk "") + "wj" '(evil-window-down :wk "") + "wk" '(evil-window-up :wk "") + "wh" '(evil-window-left :wk "") + "wo" '(delete-other-windows :wk "") + ;; Files + "f" '(:ignore t :wk "Files") + "fc" '((lambda () (interactive) (find-file "~/nixfiles/home-manager/programs/emacs/config.org")) :wk "Edit emacs config") + "fu" '(crux-sudo-edit :wk "Sudo edit file") + ;; Compilation + "c" '(:ignore t :wk "Compilation") + "cc" '(compile :wk "Compile") + "cr" '(recompile :wk "Recompile") + )) + +(defun spl3g/disable-scroll-bars (frame) + (modify-frame-parameters frame + '((vertical-scroll-bars . nil) + (horizontal-scroll-bars . nil)))) +(add-hook 'after-make-frame-functions 'spl3g/disable-scroll-bars) + +(setq default-frame-alist '((font . "Source Code Pro"))) +(set-face-attribute 'default nil + :font "Source Code Pro" + :height 110 + :weight 'medium) +(set-face-attribute 'fixed-pitch nil + :font "Source Code Pro" + :height 110 + :weight 'medium) +(set-face-attribute 'variable-pitch nil + :font "Rubik" + :height 110 + :weight 'medium) +(set-face-attribute 'font-lock-comment-face nil + :slant 'italic) +(set-face-attribute 'font-lock-keyword-face nil + :weight 'bold) + +(add-hook 'prog-mode-hook 'display-line-numbers-mode) +(visual-line-mode 1) + +(use-package catppuccin-theme + :ensure t + :config + (load-theme 'catppuccin t) + (setq catppuccin-flavor 'macchiato) + (catppuccin-reload)) + +(use-package all-the-icons + :ensure t + :if (display-graphic-p)) + +(use-package mood-line + + ;; Enable mood-line + :config + (mood-line-mode) + :custom + (mood-line-segment-modal-meow-state-alist + '((normal "N" . mood-line-meow-normal) + (insert "I" . mood-line-meow-insert) + (keypad "K" . mood-line-meow-keypad) + (beacon "B" . mood-line-meow-beacon) + (motion "M" . mood-line-meow-motion))) + (mood-line-glyph-alist mood-line-glyphs-fira-code) + :custom-face + (mood-line-meow-beacon ((t (:foreground "#f9e2af" :weight bold)))) + (mood-line-meow-insert ((t (:foreground "#a6e3a1" :weight bold)))) + (mood-line-meow-keypad ((t (:foreground "#cba6f7" :weight bold)))) + (mood-line-meow-motion ((t (:foreground "#fab387" :weight bold)))) + (mood-line-meow-normal ((t (:weight bold)))) + (mode-line-inactive ((t (:box (:line-width (2 . 6) :color "#11111b") :inverse-video nil :foreground "#6c7086" :background "#11111b")))) + (mode-line ((t (:box (:line-width (2 . 6) :color "#181825") :background "#181825"))))) + +(use-package good-scroll + :init (good-scroll-mode)) + +(use-package dashboard + :init + (dashboard-setup-startup-hook) + :config + (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) + (setq dashboard-banner-logo-title "Yep, it's emacs, not vim") + (setq dashboard-startup-banner 'logo) + (setq dashboard-center-content t) + (add-to-list 'dashboard-item-generators '(config . dashboard-open-config)) + (setq dashboard-items '((recents . 5) + (agenda . 5)))) + +(setq ring-bell-function 'ignore) + +(use-package indent-guide + :hook (prog-mode . indent-guide-mode)) + +(setq window-resize-pixelwise t) +(setq frame-resize-pixelwise t) +(save-place-mode t) +(defalias 'yes-or-no #'y-or-n-p) + +(add-hook 'org-mode-hook 'org-indent-mode) +(require 'org-tempo) + +(use-package toc-org + :hook (org-mode . toc-org-mode)) + +(use-package org-bullets + :hook (org-mode . org-bullets-mode)) + +(use-package org-auto-tangle + :hook (org-mode . org-auto-tangle-mode)) + +(use-package org-download + :hook + (dired-mode . org-download-enable)) + +(use-package direnv + :config + (direnv-mode)) + +(use-package vertico + :init + (vertico-mode) + :bind (:map vertico-map + ("M-j" . vertico-next) + ("M-k" . vertico-previous) + ("RET" . vertico-directory-enter) + ("DEL" . vertico-directory-delete-char) + ("M-DEL" . vertico-directory-delete-word))) + +(use-package emacs + :init + ;; Add prompt indicator to `completing-read-multiple'. + ;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma. + (defun crm-indicator (args) + (cons (format "[CRM%s] %s" + (replace-regexp-in-string + "\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" "" + crm-separator) + (car args)) + (cdr args))) + (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + + ;; Do not allow the cursor in the minibuffer prompt + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + ;; Emacs 28: Hide commands in M-x which do not work in the current mode. + ;; Vertico commands are hidden in normal buffers. + ;; (setq read-extended-command-predicate + ;; #'command-completion-default-include-p) + + ;; Enable recursive minibuffers + (setq enable-recursive-minibuffers t)) + +(use-package orderless + :init + (setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) + +(use-package marginalia + :bind (:map minibuffer-local-map + ("M-A" . marginalia-cycle)) + :init + (marginalia-mode)) + +(use-package consult + ;; Replace bindings. Lazily loaded due by `use-package'. + :bind (;; C-c bindings in `mode-specific-map' + ("C-c k" . consult-kmacro) + ("C-c m" . consult-man) + ("C-c i" . consult-info) + ([remap Info-search] . consult-info) + ("C-c f r" . consult-recent-file) + ("C-c ," . consult-buffer) + ;; C-x bindings in `ctl-x-map' + ("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command + ("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window + ("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame + ("C-x p b" . consult-project-buffer) ;; orig. project-switch-to-buffer + ;; Custom M-# bindings for fast register access + ("M-#" . consult-register-load) + ("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated) + ("C-M-#" . consult-register) + ;; Other custom bindings + ("M-y" . consult-yank-pop) ;; orig. yank-pop + ;; M-g bindings in `goto-map' + ("C-c c e" . consult-compile-error) + ("M-g f" . consult-flymake) ;; Alternative: consult-flycheck + ("M-g g" . consult-goto-line) ;; orig. goto-line + ("M-g M-g" . consult-goto-line) ;; orig. goto-line + ("M-g o" . consult-outline) ;; Alternative: consult-org-heading + ;; M-s bindings in `search-map' + ("M-s d" . consult-fd) + ("M-s g" . consult-grep) + ("M-s G" . consult-git-grep) + ("M-s l" . consult-line) + ("M-s L" . consult-line-multi) + ("M-s k" . consult-keep-lines) + ("M-s u" . consult-focus-lines) + ;; Isearch integration + ("M-s e" . consult-isearch-history) + :map isearch-mode-map + ("M-e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string + ("M-s l" . consult-line) ;; needed by consult-line to detect isearch + ("M-s L" . consult-line-multi) ;; needed by consult-line to detect isearch + ("M-r" . consult-history) + ;; Minibuffer history + :map minibuffer-local-map + ("M-s" . consult-history) ;; orig. next-matching-history-element + ("M-r" . consult-history)) ;; orig. previous-matching-history-element) + + ;; Enable automatic preview at point in the *Completions* buffer. This is + ;; relevant when you use the default completion UI. + :hook + (completion-list-mode . consult-preview-at-point-mode) + (eshell-mode . (lambda () + (keymap-set eshell-mode-map "M-h" 'consult-history))) + + ;; The :init configuration is always executed (Not lazy) + :init + + ;; Optionally configure the register formatting. This improves the register + ;; preview for `consult-register', `consult-register-load', + ;; `consult-register-store' and the Emacs built-ins. + (setq register-preview-delay 0.5 + register-preview-function #'consult-register-format) + + ;; Optionally tweak the register preview window. + ;; This adds thin lines, sorting and hides the mode line of the window. + (advice-add #'register-preview :override #'consult-register-window) + + ;; Configure other variables and modes in the :config section, + ;; after lazily loading the package. + :config + + ;; Optionally configure preview. The default value + ;; is 'any, such that any key triggers the preview. + ;; (setq consult-preview-key 'any) + ;; (setq consult-preview-key "M-.") + ;; (setq consult-preview-key '("S-<down>" "S-<up>")) + ;; For some commands and buffer sources it is useful to configure the + ;; :preview-key on a per-command basis using the `consult-customize' macro. + (consult-customize + consult-ripgrep consult-git-grep consult-grep + consult-bookmark consult-recent-file consult-xref + consult--source-bookmark consult--source-file-register + consult--source-recent-file consult--source-project-recent-file) + ;; :preview-key "M-." + + ;; Optionally configure the narrowing key. + ;; Both < and C-+ work reasonably well. + (setq consult-narrow-key "<") ;; "C-+" + + ;; Optionally make narrowing help available in the minibuffer. + ;; You may want to use `embark-prefix-help-command' or which-key instead. + ;; (define-key consult-narrow-map (vconcat consult-narrow-key "?") #'consult-narrow-help) + + ;; By default `consult-project-function' uses `project-root' from project.el. + ;; Optionally configure a different project root function. +;;;; 1. project.el (the default) + ;; (setq consult-project-function #'consult--default-project--function) +;;;; 2. vc.el (vc-root-dir) + ;; (setq consult-project-function (lambda (_) (vc-root-dir))) +;;;; 3. locate-dominating-file + ;; (setq consult-project-function (lambda (_) (locate-dominating-file "." ".git"))) +;;;; 4. projectile.el (projectile-project-root) + ;; (autoload 'projectile-project-root "projectile") + ;; (setq consult-project-function (lambda (_) (projectile-project-root))) +;;;; 5. No project support + ;; (setq consult-project-function nil) + ) + +(use-package smartparens + :init (smartparens-global-mode) + :config + ;; Snitched from doom + (let ((unless-list '(sp-point-before-word-p + sp-point-after-word-p + sp-point-before-same-p))) + (sp-pair "'" nil :unless unless-list) + (sp-pair "\"" nil :unless unless-list)) + (dolist (brace '("(" "{" "[")) + (sp-pair brace nil + :post-handlers '(("||\n[i]" "RET") ("| " "SPC")) + :unless '(sp-point-before-word-p sp-point-before-same-p))) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + (sp-local-pair sp-lisp-modes "(" ")" :unless '(:rem sp-point-before-same-p)) + + (sp-local-pair '(python-mode python-ts-mode) "f'" "'") + + ;; Major-mode specific fixes + (sp-local-pair 'ruby-mode "{" "}" + :pre-handlers '(:rem sp-ruby-pre-handler) + :post-handlers '(:rem sp-ruby-post-handler)) + + ;; Don't do square-bracket space-expansion where it doesn't make sense to + (sp-local-pair '(emacs-lisp-mode org-mode markdown-mode gfm-mode) + "[" nil :post-handlers '(:rem ("| " "SPC"))) + + (sp-local-pair '(emacs-lisp-mode org-mode) + "'" nil) + + ;; Reasonable default pairs for HTML-style comments + (sp-local-pair (append sp--html-modes '(markdown-mode gfm-mode)) + "<!--" "-->" + :unless '(sp-point-before-word-p sp-point-before-same-p) + :actions '(insert) :post-handlers '(("| " "SPC"))) + ;; Expand C-style comment blocks. + (defun +default-open-doc-comments-block (&rest _ignored) + (save-excursion + (newline) + (indent-according-to-mode))) + (sp-local-pair + '(js2-mode typescript-mode rjsx-mode rust-mode c-mode c++-mode objc-mode + csharp-mode java-mode php-mode css-mode scss-mode less-css-mode + stylus-mode scala-mode) + "/*" "*/" + :actions '(insert) + :post-handlers '(("| " "SPC") + (" | " "*") + ("|[i]\n[i]" "RET")))) + +;; (use-package dap-mode +;; :defer t +;; :config +;; (require 'dap-python) +;; (setq dap-python-debugger 'debugpy)) + +(use-package move-text + :bind (("C-M-k" . move-text-up) + ("C-M-j" . move-text-down))) + +(global-visual-line-mode t) + +(use-package no-littering) + +(use-package rainbow-delimiters + :hook (prog-mode . rainbow-delimiters-mode)) + +(use-package crux + :bind (("C-c o t" . crux-visit-shell-buffer))) + +(use-package helpful + :bind (("C-h f" . 'helpful-callable) + ("C-h v" . 'helpful-variable) + ("C-h k" . 'helpful-key) + ("C-h x" . 'helpful-command) + ("C-c C-d" . 'helpful-at-point) + ("C-h F" . 'helpful-function))) + +(add-hook 'eshell-mode-hook + (lambda () + (keymap-set eshell-mode-map "M-<tab>" 'consult-fish-completions))) + +(use-package eat + :hook (eshell-mode . eat-eshell-mode) + :custom + (eat-enable-auto-line-mode t)) + +;; (defun eat-toggle () +;; "Open eat terminal as a popup." +;; (interactive) +;; (if (eq major-mode 'eat-mode) +;; (delete-window) +;; (let ((buff (get-buffer-create eat-buffer-name))) +;; (cl-assert (and buff (buffer-live-p buff))) +;; (funcall #'pop-to-buffer buff) +;; (with-current-buffer buff +;; (setq-local split-width-threshold nil) +;; (setq-local window-min-height 2) +;; (unless (derived-mode-p 'eat-mode) +;; (eat)))))) + +;; (defun eat-modes() +;; (cond +;; ((and (eq major-mode 'eat-mode) (member 'meow-normal-mode local-minor-modes)) +;; (eat-emacs-mode)) +;; ((and (eq major-mode 'eat-mode) (member 'meow-insert-mode local-minor-modes)) +;; (eat-semi-char-mode)))) +;; (add-hook 'meow-normal-mode-hook #'eat-modes) +;; (add-hook 'meow-insert-mode-hook #'eat-modes) + +(use-package fish-completion + :hook (eshell-mode . fish-completion-mode)) + +(use-package eglot + :bind (("C-c s e e" . eglot) + ("C-c s e d" . eldoc) + ("C-c s e r" . eglot-rename) + ("C-c s e s" . eglot-shutdown) + ("C-c s e f" . eglot-find-declaration) + ("C-c s e i" . eglot-find-implementation)) + :hook + (nix-mode . eglot-ensure) + (python-ts-mode . eglot-ensure) + :config + (add-to-list 'eglot-server-programs '(python-ts-mode . ("pylsp")))) + +(use-package lsp-pyright) +(use-package py-autopep8 + :hook (python-mode . py-autopep8-mode)) + +(use-package rust-mode + :mode "\\.rs\\'") +(use-package flycheck-rust + :config + (with-eval-after-load 'rust-mode + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))) + +(use-package fish-mode + :mode "\\.fish\\'") + +(use-package nix-mode + :mode ("\\.nix\\'" "\\.nix.in\\'")) +(use-package nix-drv-mode + :ensure nix-mode + :mode "\\.drv\\'") +(use-package nix-shell + :ensure nix-mode + :commands (nix-shell-unpack nix-shell-configure nix-shell-build)) +(use-package nix-repl + :ensure nix-mode + :commands (nix-repl)) + +(use-package web-mode + :mode + ("\\.phtml\\'" + "\\.tpl\\.php\\'" + "\\.[agj]sp\\'" + "\\.as[cp]x\\'" + "\\.erb\\'" + "\\.mustache\\'" + "\\.djhtml\\'")) + +(use-package js2-mode) + +(use-package corfu + :custom + (corfu-cycle t) + (corfu-preselect 'prompt) + (corfu-auto t) + (corfu-popupinfo-delay 0.0) + :bind + (:map corfu-map + ("TAB" . corfu-next) + ([tab] . corfu-next) + ("S-TAB" . corfu-previous) + ([backtab] . corfu-previous)) + + :init + (global-corfu-mode) + (corfu-history-mode) + (corfu-popupinfo-mode) + :config + (add-to-list 'savehist-additional-variables 'corfu-history)) +(use-package emacs + :init + (setq completion-cycle-threshold 3) + + (setq read-extended-command-predicate + #'command-completion-default-include-p) + + (setq tab-always-indent 'complete)) + +(use-package cape + :demand t + :config + (add-to-list 'completion-at-point-functions #'cape-dabbrev) + (add-to-list 'completion-at-point-functions #'cape-file) + (add-to-list 'completion-at-point-functions #'cape-elisp-block) + ) + +(use-package tree-sitter + :init + (global-tree-sitter-mode) + :config + (add-hook 'tree-sitter-mode-hook 'tree-sitter-hl-mode)) +(use-package treesit-auto + :custom + (treesit-auto-install 'prompt) + :config + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode)) + +(use-package tree-sitter-langs) + +;; (use-package yasnippet +;; :init (yas-global-mode)) +;; (use-package yasnippet-snippets) + +(use-package flymake + :after eglot + :bind (("C-c s f f" . flymake-start) + ("C-c s f l" . flymake-show-buffer-diagnostics) + ("C-c s f p" . flymake-show-project-diagnostics))) + +(use-package dired + :custom + (dired-listing-switches "-al --group-directories-first")) + + + +;; (add-to-list 'load-path "~/telega.el") +;; (require 'telega) + +(use-package magit + :bind (("C-c o g" . magit))) + +;; (use-package exwm) +;; (require 'exwm) +;; (require 'exwm-config) +;; (exwm-config-example) + +;; (use-package code-cells) + +;; (use-package orgnote +;; :defer t) + +(use-package copilot + :hook (python-ts-mode . copilot-mode) + :bind ("M-RET" . copilot-accept-completion)) + +(setq gc-cons-threshold (* 2 1000 1000)) +(setq read-process-output-max (* 1024 1024)) +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(package-selected-packages + '(dired web-mode vertico use-package treesit-auto tree-sitter-langs toc-org smartparens rust-mode rainbow-delimiters py-autopep8 org-download org-bullets org-auto-tangle orderless no-littering nix-mode move-text mood-line marginalia magit lsp-pyright kakoune js2-mode indent-guide helpful good-scroll general flycheck-rust fish-mode fish-completion eglot eat direnv dashboard crux corfu copilot consult catppuccin-theme cape all-the-icons snow meow))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + ) diff --git a/home-manager/general/programs/firefox/default.nix b/home-manager/general/programs/firefox/default.nix new file mode 100644 index 0000000..b08ae0c --- /dev/null +++ b/home-manager/general/programs/firefox/default.nix @@ -0,0 +1,109 @@ +{ pkgs, config, inputs, ... }: +let + nur = import inputs.nurpkgs { + inherit pkgs; + nurpkgs = pkgs; + }; + extensions = with nur.repos.rycee.firefox-addons; [ + bitwarden + ublock-origin + switchyomega + sponsorblock + return-youtube-dislikes + firefox-color + tampermonkey + duckduckgo-privacy-essentials + sidebery + ]; + userConfig = builtins.readFile ./user.js; + configOverrides = '' + user_pref("browser.search.suggest.enabled", true); + user_pref("mousewheel.default.delta_multiplier_y", 75); + user_pref("network.captive-portal-service.enabled", true); + user_pref("captivedetect.canonicalURL", "http://detectportal.firefox.com/canonical.html"); + user_pref("network.connectivity-service.enabled", true); + ''; + extraConfig = userConfig + configOverrides; + engines = { + "Brave" = { + urls = [{ template = "https://search.brave.com/search?q={searchTerms}"; }]; + iconUpdateURL = "https://cdn.search.brave.com/serp/v2/_app/immutable/assets/safari-pinned-tab.539899c7.svg"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!br" ]; + }; + "NixOS" = { + urls = [{ template = "https://search.nixos.org/packages?channel=unstable&from=0&size=50&sort=relevance&type=packages&query={searchTerms}"; }]; + iconUpdateURL = "https://nixos.org/favicon.png"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!ns" ]; + }; + "HomeManager" = { + urls = [{ template = "https://mipmip.github.io/home-manager-option-search/?query={searchTerms}"; }]; + iconUpdateURL = "https://github.com/mipmip/home-manager-option-search/blob/main/images/favicon.png"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!hs" ]; + }; + "ai question" = { + urls = [{ template = "https://iask.ai/?mode=question&q={searchTerms}"; }]; + iconUpdateURL = "https://iask.ai/favicons/favicon-32x32-650bd8771fdea8866630408578e381cc.png?vsn=d"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!aq" ]; + }; + "ai forums" = { + urls = [{ template = "https://iask.ai/?mode=forums&q={searchTerms}"; }]; + iconUpdateURL = "https://iask.ai/favicons/favicon-32x32-650bd8771fdea8866630408578e381cc.png?vsn=d"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!af" ]; + }; + "ai wiki" = { + urls = [{ template = "https://iask.ai/?mode=wiki&q={searchTerms}"; }]; + iconUpdateURL = "https://iask.ai/favicons/favicon-32x32-650bd8771fdea8866630408578e381cc.png?vsn=d"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!aw" ]; + }; + "FastGPT" = { + urls = [{ template = "https://labs.kagi.com/fastgpt?query={searchTerms}"; }]; + definedAliases = [ "!fq" ]; + }; + "NixWiki" = { + urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}&go=Go"; }]; + iconUpdateURL = "https://nixos.org/favicon.png"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!nw" ]; + }; + "Kinopoisk" = { + urls = [{ template = "https://www.kinopoisk.ru/index.php?kp_query={searchTerms}"; }]; + iconUpdateURL = "https://www.kinopoisk.ru/favicon.ico"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!ks" ]; + }; + "AnimeGo" = { + urls = [{ template = "https://animego.org/search/all?q={searchTerms}"; }]; + iconUpdateURL = "https://animego.org/favicon-32x32.png"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = [ "!as" ]; + }; + }; + force = true; +in +{ + programs.firefox = { + enable = true; + profiles.nothing = { + isDefault = false; + id = 1; + }; + profiles.Betterfox = { + isDefault = true; + inherit extensions extraConfig; + search = { + inherit engines force; + default = "Brave"; + }; + }; + }; + home.file."chrome" = { + source = ./userChrome.css; + target = ".mozilla/firefox/Betterfox/chrome/userChrome.css"; + }; +} diff --git a/home-manager/general/programs/firefox/user.js b/home-manager/general/programs/firefox/user.js new file mode 100644 index 0000000..cbf15bb --- /dev/null +++ b/home-manager/general/programs/firefox/user.js @@ -0,0 +1,262 @@ +// +/* You may copy+paste this file and use it as it is. + * + * If you make changes to your about:config while the program is running, the + * changes will be overwritten by the user.js when the application restarts. + * + * To make lasting changes to preferences, you will have to edit the user.js. + */ + +/**************************************************************************** + * Betterfox * + * "Ad meliora" * + * version: 115 * + * url: https://github.com/yokoffing/Betterfox * +****************************************************************************/ + +/**************************************************************************** + * SECTION: FASTFOX * +****************************************************************************/ +user_pref("nglayout.initialpaint.delay", 0); +user_pref("nglayout.initialpaint.delay_in_oopif", 0); +user_pref("content.notify.interval", 100000); +user_pref("browser.startup.preXulSkeletonUI", false); + +/** EXPERIMENTAL ***/ +user_pref("layout.css.grid-template-masonry-value.enabled", true); +user_pref("dom.enable_web_task_scheduling", true); + +/** GFX ***/ +user_pref("gfx.webrender.all", true); +user_pref("gfx.webrender.precache-shaders", true); +user_pref("gfx.webrender.compositor", true); +user_pref("layers.gpu-process.enabled", true); +user_pref("media.hardware-video-decoding.enabled", true); +user_pref("gfx.canvas.accelerated", true); +user_pref("gfx.canvas.accelerated.cache-items", 32768); +user_pref("gfx.canvas.accelerated.cache-size", 4096); +user_pref("gfx.content.skia-font-cache-size", 80); +user_pref("image.cache.size", 10485760); +user_pref("image.mem.decode_bytes_at_a_time", 131072); +user_pref("image.mem.shared.unmap.min_expiration_ms", 120000); +user_pref("media.memory_cache_max_size", 1048576); +user_pref("media.memory_caches_combined_limit_kb", 2560000); +user_pref("media.cache_readahead_limit", 9000); +user_pref("media.cache_resume_threshold", 6000); + +/** BROWSER CACHE ***/ +user_pref("browser.cache.memory.max_entry_size", 153600); + +/** NETWORK ***/ +user_pref("network.buffer.cache.size", 262144); +user_pref("network.buffer.cache.count", 128); +user_pref("network.http.max-connections", 1800); +user_pref("network.http.max-persistent-connections-per-server", 10); +user_pref("network.ssl_tokens_cache_capacity", 32768); + +/**************************************************************************** + * SECTION: SECUREFOX * +****************************************************************************/ +/** TRACKING PROTECTION ***/ +user_pref("browser.contentblocking.category", "strict"); +user_pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"); +user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com"); +user_pref("privacy.query_stripping.strip_list", "__hsfp __hssc __hstc __s _hsenc _openstat dclid fbclid gbraid gclid hsCtaTracking igshid mc_eid ml_subscriber ml_subscriber_hash msclkid oft_c oft_ck oft_d oft_id oft_ids oft_k oft_lk oft_sk oly_anon_id oly_enc_id rb_clickid s_cid twclid vero_conv vero_id wbraid wickedid yclid"); +user_pref("browser.uitour.enabled", false); +user_pref("privacy.globalprivacycontrol.enabled", true); +user_pref("privacy.globalprivacycontrol.functionality.enabled", true); + +/** OCSP & CERTS / HPKP ***/ +user_pref("security.OCSP.enabled", 0); +user_pref("security.remote_settings.crlite_filters.enabled", true); +user_pref("security.pki.crlite_mode", 2); +user_pref("security.cert_pinning.enforcement_level", 2); + +/** SSL / TLS ***/ +user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true); +user_pref("browser.xul.error_pages.expert_bad_cert", true); +user_pref("security.tls.enable_0rtt_data", false); + +/** DISK AVOIDANCE ***/ +user_pref("browser.cache.disk.enable", false); +user_pref("browser.privatebrowsing.forceMediaMemoryCache", true); +user_pref("browser.sessionstore.privacy_level", 2); + +/** SHUTDOWN & SANITIZING ***/ +user_pref("privacy.history.custom", true); + +/** SPECULATIVE CONNECTIONS ***/ +user_pref("network.http.speculative-parallel-limit", 0); +user_pref("network.dns.disablePrefetch", true); +user_pref("browser.urlbar.speculativeConnect.enabled", false); +user_pref("browser.places.speculativeConnect.enabled", false); +user_pref("network.prefetch-next", false); +user_pref("network.predictor.enabled", false); +user_pref("network.predictor.enable-prefetch", false); + +/** SEARCH / URL BAR ***/ +user_pref("browser.search.separatePrivateDefault.ui.enabled", true); +user_pref("browser.urlbar.update2.engineAliasRefresh", true); +user_pref("browser.search.suggest.enabled", false); +user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); +user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); +user_pref("security.insecure_connection_text.enabled", true); +user_pref("security.insecure_connection_text.pbmode.enabled", true); +user_pref("network.IDN_show_punycode", true); + +/** HTTPS-FIRST MODE ***/ +user_pref("dom.security.https_first", true); + +/** PROXY / SOCKS / IPv6 ***/ +user_pref("network.proxy.socks_remote_dns", true); +user_pref("network.file.disable_unc_paths", true); +user_pref("network.gio.supported-protocols", ""); + +/** PASSWORDS AND AUTOFILL ***/ +user_pref("signon.formlessCapture.enabled", false); +user_pref("signon.privateBrowsingCapture.enabled", false); +user_pref("signon.autofillForms", false); +user_pref("signon.rememberSignons", false); +user_pref("editor.truncate_user_pastes", false); + +/** ADDRESS + CREDIT CARD MANAGER ***/ +user_pref("extensions.formautofill.addresses.enabled", false); +user_pref("extensions.formautofill.creditCards.enabled", false); +user_pref("extensions.formautofill.heuristics.enabled", false); +user_pref("browser.formfill.enable", false); + +/** MIXED CONTENT + CROSS-SITE ***/ +user_pref("network.auth.subresource-http-auth-allow", 1); +user_pref("pdfjs.enableScripting", false); +user_pref("extensions.postDownloadThirdPartyPrompt", false); +user_pref("permissions.delegation.enabled", false); + +/** HEADERS / REFERERS ***/ +user_pref("network.http.referer.XOriginTrimmingPolicy", 2); + +/** CONTAINERS ***/ +user_pref("privacy.userContext.ui.enabled", true); + +/** WEBRTC ***/ +user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); +user_pref("media.peerconnection.ice.default_address_only", true); + +/** SAFE BROWSING ***/ +user_pref("browser.safebrowsing.downloads.remote.enabled", false); + +/** MOZILLA ***/ +user_pref("accessibility.force_disabled", 1); +user_pref("identity.fxaccounts.enabled", false); +user_pref("browser.tabs.firefox-view", false); +user_pref("permissions.default.desktop-notification", 2); +user_pref("permissions.default.geo", 2); +user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"); +user_pref("geo.provider.ms-windows-location", false); // WINDOWS +user_pref("geo.provider.use_corelocation", false); // MAC +user_pref("geo.provider.use_gpsd", false); // LINUX +user_pref("geo.provider.use_geoclue", false); // LINUX +user_pref("permissions.manager.defaultsUrl", ""); +user_pref("webchannel.allowObject.urlWhitelist", ""); + +/** TELEMETRY ***/ +user_pref("toolkit.telemetry.unified", false); +user_pref("toolkit.telemetry.enabled", false); +user_pref("toolkit.telemetry.server", "data:,"); +user_pref("toolkit.telemetry.archive.enabled", false); +user_pref("toolkit.telemetry.newProfilePing.enabled", false); +user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); +user_pref("toolkit.telemetry.updatePing.enabled", false); +user_pref("toolkit.telemetry.bhrPing.enabled", false); +user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); +user_pref("toolkit.telemetry.coverage.opt-out", true); +user_pref("toolkit.coverage.opt-out", true); +user_pref("datareporting.healthreport.uploadEnabled", false); +user_pref("datareporting.policy.dataSubmissionEnabled", false); +user_pref("app.shield.optoutstudies.enabled", false); +user_pref("browser.discovery.enabled", false); +user_pref("breakpad.reportURL", ""); +user_pref("browser.tabs.crashReporting.sendReport", false); +user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); +user_pref("captivedetect.canonicalURL", ""); +user_pref("network.captive-portal-service.enabled", false); +user_pref("network.connectivity-service.enabled", false); +user_pref("default-browser-agent.enabled", false); +user_pref("app.normandy.enabled", false); +user_pref("app.normandy.api_url", ""); +user_pref("browser.ping-centre.telemetry", false); +user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); +user_pref("browser.newtabpage.activity-stream.telemetry", false); + +/**************************************************************************** + * SECTION: PESKYFOX * +****************************************************************************/ +/** MOZILLA UI ***/ +user_pref("layout.css.prefers-color-scheme.content-override", 2); +user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); +user_pref("app.update.suppressPrompts", true); +user_pref("browser.compactmode.show", true); +user_pref("browser.privatebrowsing.vpnpromourl", ""); +user_pref("extensions.getAddons.showPane", false); +user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); +user_pref("browser.shell.checkDefaultBrowser", false); +user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); +user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); +user_pref("browser.preferences.moreFromMozilla", false); +user_pref("browser.tabs.tabmanager.enabled", false); +user_pref("browser.aboutwelcome.enabled", false); +user_pref("findbar.highlightAll", true); +user_pref("middlemouse.contentLoadURL", false); +user_pref("browser.privatebrowsing.enable-new-indicator", false); + +/** FULLSCREEN ***/ +user_pref("full-screen-api.transition-duration.enter", "0 0"); +user_pref("full-screen-api.transition-duration.leave", "0 0"); +user_pref("full-screen-api.warning.delay", -1); +user_pref("full-screen-api.warning.timeout", 0); + +/** URL BAR ***/ +user_pref("browser.urlbar.suggest.engines", false); +user_pref("browser.urlbar.suggest.topsites", false); +user_pref("browser.urlbar.suggest.calculator", true); +user_pref("browser.urlbar.unitConversion.enabled", true); + +/** NEW TAB PAGE ***/ +user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); +user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); + +/*** POCKET ***/ +user_pref("extensions.pocket.enabled", false); + +/** DOWNLOADS ***/ +user_pref("browser.download.useDownloadDir", false); +user_pref("browser.download.alwaysOpenPanel", false); +user_pref("browser.download.manager.addToRecentDocs", false); +user_pref("browser.download.always_ask_before_handling_new_types", true); + +/** PDF ***/ +user_pref("browser.download.open_pdf_attachments_inline", true); + +/** TAB BEHAVIOR ***/ +user_pref("browser.tabs.loadBookmarksInTabs", true); +user_pref("browser.bookmarks.openInTabClosesMenu", false); +user_pref("layout.css.has-selector.enabled", true); +user_pref("cookiebanners.service.mode", 2); +user_pref("cookiebanners.service.mode.privateBrowsing", 2); + +/**************************************************************************** + * SECTION: SMOOTHFOX * +****************************************************************************/ +// visit https://github.com/yokoffing/Betterfox/blob/master/Smoothfox.js +// Enter your scrolling prefs below this line: +user_pref("apz.overscroll.enabled", true); +user_pref("general.smoothScroll", true); +user_pref("mousewheel.default.delta_multiplier_y", 275); + +/**************************************************************************** + * START: MY OVERRIDES * +****************************************************************************/ +// Enter your personal prefs below this line: + +/**************************************************************************** + * END: BETTERFOX * +****************************************************************************/ diff --git a/home-manager/general/programs/firefox/userChrome.css b/home-manager/general/programs/firefox/userChrome.css new file mode 100644 index 0000000..c4390dc --- /dev/null +++ b/home-manager/general/programs/firefox/userChrome.css @@ -0,0 +1,98 @@ +:root[tabsintitlebar]{ --uc-toolbar-height: 40px; } +:root[tabsintitlebar][uidensity="compact"]{ --uc-toolbar-height: 32px } + +#TabsToolbar{ visibility: collapse !important } + +:root[sizemode="fullscreen"] #TabsToolbar > :is(#window-controls,.titlebar-buttonbox-container){ + visibility: visible !important; + z-index: 2; +} + +:root:not([inFullscreen]) #nav-bar{ + margin-top: calc(0px - var(--uc-toolbar-height,0px)); +} + +:root[tabsintitlebar] #toolbar-menubar[autohide="true"]{ + min-height: unset !important; + height: var(--uc-toolbar-height,0px) !important; + position: relative; +} + +#toolbar-menubar[autohide="false"]{ + margin-bottom: var(--uc-toolbar-height,0px) +} + +:root[tabsintitlebar] #toolbar-menubar[autohide="true"] #main-menubar{ + flex-grow: 1; + align-items: stretch; + background-color: var(--toolbar-bgcolor,--toolbar-non-lwt-bgcolor); + background-clip: padding-box; + border-right: 30px solid transparent; + border-image: linear-gradient(to left, transparent, var(--toolbar-bgcolor,--toolbar-non-lwt-bgcolor) 30px) 20 / 30px +} + + +#toolbar-menubar:not([inactive]){ z-index: 2 } +#toolbar-menubar[autohide="true"][inactive] > #menubar-items { + opacity: 0; + pointer-events: none; + margin-left: var(--uc-window-drag-space-pre,0px) +} + +.titlebar-close { + display: none !important; +} + +element { + --toolbar-bgcolor: var(--lwt-accent-color) !important; +} + + +#appcontent +> #tabbrowser-tabbox +> #tabbrowser-tabpanels +> .deck-selected +> .browserContainer +> .browserStack +> browser { + border-radius: 10px; + margin: 10px; + border-color: transparent; +} + +.browserStack { + background: var(--lwt-accent-color); +} + +.browserContainer { + background-color: var(--lwt-accent-color); + background-position: right top, var(--lwt-background-alignment); +} + +#sidebar-button { + margin-left: 10px; +} + +#sidebar-box { + min-width: 250px; + max-width: 250px; + min-height: unset; + max-height: unset; + border-right: none; +} + +#sidebar-splitter { + display: none; +} + +#PersonalToolbar { + display: none; +} + +#navigator-toolbox { + border-bottom: none !important; +} + +#sidebar-header { + display: none; +} diff --git a/home-manager/general/programs/fish/default.nix b/home-manager/general/programs/fish/default.nix new file mode 100644 index 0000000..fc91367 --- /dev/null +++ b/home-manager/general/programs/fish/default.nix @@ -0,0 +1,46 @@ +{ pkgs, ... }: + +let + nixPlugins = [ + { name = "colored-man-output"; src = pkgs.fishPlugins.colored-man-pages.src; } + { name = "fzf-fish"; src = pkgs.fishPlugins.fzf-fish.src; } + { name = "pure"; src = pkgs.fishPlugins.pure.src; } + { name = "autopair"; src = pkgs.fishPlugins.autopair.src; } + ]; + customPlugins = []; + plugins = nixPlugins ++ customPlugins; + interactiveShellInit = '' + set fish_greeting + pokemon-colorscripts -r --no-title + ''; + # loginShellInit = '' + # Hyprland + # ''; + functions = { + ranger_func = '' + ranger $argv + set -l quit_cd_wd_file "$HOME/.ranger_quit_cd_wd" + if test -s "$quit_cd_wd_file" + cd "$(cat $quit_cd_wd_file)" + true > "$quit_cd_wd_file" + end + ''; + }; + shellAliases = { + rn = "ranger_func"; + ls = "ls --hyperlink=auto --color=auto"; + iamatomic = "sudo nixos-rebuild switch --flake ~/nixfiles#ltrr"; + }; + +in +{ + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; + + programs.fish = { + enable = true; + inherit plugins interactiveShellInit functions shellAliases; + }; +} diff --git a/home-manager/general/programs/ranger/commands.py b/home-manager/general/programs/ranger/commands.py new file mode 100644 index 0000000..a41d42f --- /dev/null +++ b/home-manager/general/programs/ranger/commands.py @@ -0,0 +1,183 @@ +from ranger.api.commands import Command +from ranger.container.file import File +from ranger.ext.get_executables import get_executables +from collections import deque +import os +import subprocess + +# fd search + + +class fd_search(Command): + """ + :fd_search [-d<depth>] <query> + Executes "fd -d<depth> <query>" in the current directory and focuses the + first match. <depth> defaults to 1, i.e. only the contents of the current + directory. + + See https://github.com/sharkdp/fd + """ + + SEARCH_RESULTS = deque() + + def execute(self): + import re + import subprocess + from ranger.ext.get_executables import get_executables + + self.SEARCH_RESULTS.clear() + + if "fdfind" in get_executables(): + fd = "fdfind" + elif "fd" in get_executables(): + fd = "fd" + else: + self.fm.notify("Couldn't find fd in the PATH.", bad=True) + return + + if self.arg(1): + if self.arg(1)[:2] == "-d": + depth = self.arg(1) + target = self.rest(2) + else: + depth = "-d1" + target = self.rest(1) + else: + self.fm.notify(":fd_search needs a query.", bad=True) + return + + hidden = "--hidden" if self.fm.settings.show_hidden else "" + exclude = "--no-ignore-vcs --exclude '.git' --exclude '*.py[co]' --exclude '__pycache__'" + command = "{} --follow {} {} {} --print0 {}".format( + fd, depth, hidden, exclude, target + ) + fd = self.fm.execute_command( + command, universal_newlines=True, stdout=subprocess.PIPE + ) + stdout, _ = fd.communicate() + + if fd.returncode == 0: + results = filter(None, stdout.split("\0")) + if not self.fm.settings.show_hidden and self.fm.settings.hidden_filter: + hidden_filter = re.compile(self.fm.settings.hidden_filter) + results = filter( + lambda res: not hidden_filter.search(os.path.basename(res)), results + ) + results = map( + lambda res: os.path.abspath(os.path.join(self.fm.thisdir.path, res)), + results, + ) + self.SEARCH_RESULTS.extend(sorted(results, key=str.lower)) + if len(self.SEARCH_RESULTS) > 0: + self.fm.notify( + "Found {} result{}.".format( + len(self.SEARCH_RESULTS), + ("s" if len(self.SEARCH_RESULTS) > 1 else ""), + ) + ) + self.fm.select_file(self.SEARCH_RESULTS[0]) + else: + self.fm.notify("No results found.") + + +class fd_next(Command): + """ + :fd_next + Selects the next match from the last :fd_search. + """ + + def execute(self): + if len(fd_search.SEARCH_RESULTS) > 1: + fd_search.SEARCH_RESULTS.rotate(-1) # rotate left + self.fm.select_file(fd_search.SEARCH_RESULTS[0]) + elif len(fd_search.SEARCH_RESULTS) == 1: + self.fm.select_file(fd_search.SEARCH_RESULTS[0]) + + +class fd_prev(Command): + """ + :fd_prev + Selects the next match from the last :fd_search. + """ + + def execute(self): + if len(fd_search.SEARCH_RESULTS) > 1: + fd_search.SEARCH_RESULTS.rotate(1) # rotate right + self.fm.select_file(fd_search.SEARCH_RESULTS[0]) + elif len(fd_search.SEARCH_RESULTS) == 1: + self.fm.select_file(fd_search.SEARCH_RESULTS[0]) + + +# yank content +class YankContentWl(Command): + def execute(self): + if "wl-copy" not in get_executables(): + self.fm.notify("wl-clipboard is not found.", bad=True) + return + + arg = self.rest(1) + if arg: + if not os.path.isfile(arg): + self.fm.notify("{} is not a file".format(arg)) + return + file = File(arg) + else: + file = self.fm.thisfile + if not file.is_file: + self.fm.notify("{} is not a file".format(file.relative_path)) + return + if file.is_binary or file.image: + subprocess.check_call("wl-copy" + " < " + file.path, shell=True) + else: + self.fm.notify( + "{} is not an image file or a text file".format(file.relative_path) + ) + + +import os +import subprocess +from ranger.api.commands import Command +from ranger.container.file import File +from ranger.ext.get_executables import get_executables + + +class YankContent(Command): + """ + Copy the content of image file and text file with xclip + """ + + def execute(self): + if "xclip" not in get_executables(): + self.fm.notify("xclip is not found.", bad=True) + return + + arg = self.rest(1) + if arg: + if not os.path.isfile(arg): + self.fm.notify("{} is not a file.".format(arg)) + return + file = File(arg) + else: + file = self.fm.thisfile + if not file.is_file: + self.fm.notify("{} is not a file.".format(file.relative_path)) + return + + relative_path = file.relative_path + cmd = ["xclip", "-selection", "clipboard"] + if not file.is_binary(): + with open(file.path, "rb") as fd: + subprocess.check_call(cmd, stdin=fd) + elif file.image: + cmd += ["-t", file.mimetype, file.path] + subprocess.check_call(cmd) + self.fm.notify( + "Content of {} is copied to x clipboard".format(relative_path) + ) + else: + self.fm.notify( + "{} is not an image file or a text file.".format(relative_path) + ) + + def tab(self, tabnum): + return self._tab_directory_content() diff --git a/home-manager/general/programs/ranger/default.nix b/home-manager/general/programs/ranger/default.nix new file mode 100644 index 0000000..4dbced5 --- /dev/null +++ b/home-manager/general/programs/ranger/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ ranger wl-clipboard ]; + xdg.configFile = { + "ranger/rc.conf".text = builtins.readFile ./rc.conf; + "ranger/rifle.conf".text = builtins.readFile ./rifle.conf; + "ranger/scope.sh".text = builtins.readFile ./scope.sh; + "ranger/commands.py".source = ./commands.py; + "ranger/plugins".source = ./plugins; + }; +} diff --git a/home-manager/general/programs/ranger/default.nix~ b/home-manager/general/programs/ranger/default.nix~ new file mode 100644 index 0000000..ea1b298 --- /dev/null +++ b/home-manager/general/programs/ranger/default.nix~ @@ -0,0 +1,7 @@ +{ pkgs, ... }: +let + "ranger/rc.conf".text = builtins.readFile ./rc.conf; + "ranger/rifle.conf".text = builtins.readFile ./rifle.conf; + "ranger/scope.sh".text = builtins.readFile ./scope.sh; + "ranger/commands.py".source = ./commands.py; + "ranger/plugins".source = ./plugins; diff --git a/home-manager/general/programs/ranger/plugins/__init__.py b/home-manager/general/programs/ranger/plugins/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/__init__.py diff --git a/home-manager/general/programs/ranger/plugins/__pycache__/__init__.cpython-310.pyc b/home-manager/general/programs/ranger/plugins/__pycache__/__init__.cpython-310.pyc Binary files differnew file mode 100644 index 0000000..1a26aa3 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/__pycache__/__init__.cpython-310.pyc diff --git a/home-manager/general/programs/ranger/plugins/__pycache__/__init__.cpython-311.pyc b/home-manager/general/programs/ranger/plugins/__pycache__/__init__.cpython-311.pyc Binary files differnew file mode 100644 index 0000000..87b2e7f --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/__pycache__/__init__.cpython-311.pyc diff --git a/home-manager/general/programs/ranger/plugins/__pycache__/fd.cpython-311.pyc b/home-manager/general/programs/ranger/plugins/__pycache__/fd.cpython-311.pyc Binary files differnew file mode 100644 index 0000000..146af23 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/__pycache__/fd.cpython-311.pyc diff --git a/home-manager/general/programs/ranger/plugins/__pycache__/quit_cd_wd.cpython-310.pyc b/home-manager/general/programs/ranger/plugins/__pycache__/quit_cd_wd.cpython-310.pyc Binary files differnew file mode 100644 index 0000000..49d1db9 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/__pycache__/quit_cd_wd.cpython-310.pyc diff --git a/home-manager/general/programs/ranger/plugins/__pycache__/quit_cd_wd.cpython-311.pyc b/home-manager/general/programs/ranger/plugins/__pycache__/quit_cd_wd.cpython-311.pyc Binary files differnew file mode 100644 index 0000000..7b3ac1c --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/__pycache__/quit_cd_wd.cpython-311.pyc diff --git a/home-manager/general/programs/ranger/plugins/quit_cd_wd.py b/home-manager/general/programs/ranger/plugins/quit_cd_wd.py new file mode 100644 index 0000000..e47837f --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/quit_cd_wd.py @@ -0,0 +1,38 @@ +import ranger.api +from ranger.api.commands import * +import os + +def save_wd(command): + with open(os.path.expanduser('~/.ranger_quit_cd_wd'), 'w') as f: + f.write(command.fm.thisdir.path); + +class quit_cd_wd(Command): + """:chdir to working directory of ranger after quiting on ranger. + + """ + def _exit_no_work(self): + if self.fm.loader.has_work(): + self.fm.notify('Not quitting: Tasks in progress: Use `quit!` to force quit') + else: + self.fm.exit() + + def execute(self): + if len(self.fm.tabs) >= 2: + self.fm.tab_close() + else: + save_wd(self) + self._exit_no_work() + +class quitall_cd_wd(Command): + """:chdir to working directory of ranger after quitalling on ranger. + + """ + def _exit_no_work(self): + if self.fm.loader.has_work(): + self.fm.notify('Not quitting: Tasks in progress: Use `quitall!` to force quit') + else: + self.fm.exit() + + def execute(self): + save_wd(self) + self._exit_no_work() diff --git a/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/.gitignore b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/.gitignore new file mode 100644 index 0000000..846dc44 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/.gitignore @@ -0,0 +1,132 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# Pycharm +.idea diff --git a/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/LICENSE b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/LICENSE new file mode 100644 index 0000000..bd840f1 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 MuXiu1997 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/README.md b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/README.md new file mode 100644 index 0000000..6a65e17 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/README.md @@ -0,0 +1,47 @@ +# ranger-fzf-filter +This is a plugin for [`ranger`](https://github.com/ranger/ranger) that add a fuzzy filter. It depends on [`fzf`](https://github.com/junegunn/fzf) + +https://user-images.githubusercontent.com/49554020/173509108-dc3edca4-8949-4026-a3ca-0ba8dac9bbce.mp4 + + +## Install + +For ranger >= 1.9.3, use Git to clone this repository into your `~/.config/ranger/plugins` folder. For example: + +```sh +git clone git@github.com:MuXiu1997/ranger-fzf-filter.git ~/.config/ranger/plugins/ranger_fzf_filter +``` + +**Legacy Install** + +For ranger versions older than 1.9.3, or to install without Git, download `__init__.py` to your `~/.config/ranger/plugins` directory. For example: + +```shell +mkdir -p ~/.config/ranger/plugins +wget -O ~/.config/ranger/plugins/ranger_fzf_filter.py https://raw.githubusercontent.com/MuXiu1997/ranger-fzf-filter/main/__init__.py +``` + + + +## Usage + +Command: + +- `:fzf_filter [query]`: filtering files with fzf, see this [search syntax](https://github.com/junegunn/fzf#search-syntax) + + + +## Keyboard Shortcut + +Add a binding to your `~/.config/ranger/rc.conf` file to quickly use `:fzf_filter`: + +``` +map f console fzf_filter%space +``` + + + +## License + +[MIT](LICENSE) + diff --git a/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/__init__.py b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/__init__.py new file mode 100644 index 0000000..b5d5b46 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/__init__.py @@ -0,0 +1,35 @@ +import ranger.api +import ranger.container.directory +# noinspection PyUnresolvedReferences +from .command import fzf_filter, KEY_FZF_FILTER + +# region overwrite hook_init +HOOK_INIT_OLD = ranger.api.hook_init + + +def hook_init(fm): + def clear_fzf_filter(signal): + if fm.settings.clear_filters_on_dir_change and signal.previous: + signal.previous.__dict__[KEY_FZF_FILTER] = None + signal.previous.refilter() + + fm.signal_bind('cd', clear_fzf_filter) + return HOOK_INIT_OLD(fm) + + +ranger.api.hook_init = hook_init +# endregion overwrite hook_init + +# region overwrite accept_file +ACCEPT_FILE_OLD = ranger.container.directory.accept_file + + +def accept_file(fobj, filters): + _fzf_filter = fobj.fm.thisdir.__dict__.get(KEY_FZF_FILTER, None) + if _fzf_filter: + filters.append(_fzf_filter) + return ACCEPT_FILE_OLD(fobj, filters) + + +ranger.container.directory.accept_file = accept_file +# endregion overwrite accept_file diff --git a/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/command.py b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/command.py new file mode 100644 index 0000000..92aee83 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/command.py @@ -0,0 +1,59 @@ +import ranger.api.commands +from .filter import FzfFilter + +# noinspection PyUnreachableCode +# This is done to enhance auto-completion and inference in the editor. +if False: + import ranger.core.fm + +KEY_FZF_FILTER = 'fzf_filter' + + +# noinspection PyPep8Naming,PyUnresolvedReferences +class fzf_filter(ranger.api.commands.Command): + """ + :fzf_filter <query> + + This command allows you to use fzf fuzzy search to filter files and directories in the ranger. + """ + + def execute(self): + fm = self.fm # type: ranger.core.fm.FM + # Check if a filter is already set + _filter = fm.thisdir.__dict__.get(KEY_FZF_FILTER, None) + if isinstance(_filter, FzfFilter): + # If a filter is set, just update the query + _filter.set_query(self._get_query()) + else: + # If no filter is set, build a new one + fm.thisdir.__dict__[KEY_FZF_FILTER] = self._build_filter() + + fm.thisdir.refilter() + if self.quickly_executed: + fm.open_console(self.line) + + def cancel(self): + fm = self.fm # type: ranger.core.fm.FM + fm.thisdir.__dict__[KEY_FZF_FILTER] = None + fm.thisdir.refilter() + + def quick(self): + return True + + def _get_query(self): + """ + Get the search query. + + Returns: + str: The search query. + """ + return self.rest(1) + + def _build_filter(self): + """ + Build a new FzfFilter. + + Returns: + FzfFilter: A new FzfFilter object with the current directory and search query. + """ + return FzfFilter(self.fm.thisdir, self._get_query()) diff --git a/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/filter.py b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/filter.py new file mode 100644 index 0000000..3d12756 --- /dev/null +++ b/home-manager/general/programs/ranger/plugins/ranger_fzf_filter/filter.py @@ -0,0 +1,84 @@ +import os.path +import subprocess + + +class FzfFilter: + """ + A filter class for FZF fuzzy search. + + Attributes: + thisdir (ranger.container.directory.Directory): The current directory. + query (str): The search query. + source (list[str]): List of relative paths of all files in the current directory. + result (list[str]): The result of fzf search. + """ + + def __init__(self, thisdir, query): + """ + Initialize the FzfFilter class. + + Args: + thisdir (ranger.container.directory.Directory): The current directory. + query (str): The search query. + """ + self.thisdir = thisdir + self.files_all = thisdir.files_all + + self.query = query + + self.source = [] + self.recalc_source() + + self.result = [] + self.recalc_result() + + def recalc_source(self): + """ + Recalculate the source list based on the files in the current directory. + """ + self.source = [f.relative_path for f in self.thisdir.files_all] + + def recalc_result(self): + """ + Recalculate the result list by executing the fzf command. + """ + cmd = subprocess.Popen( + ['fzf', '-f', self.query], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + ) + stdout, _ = cmd.communicate('\n'.join(self.source).encode('utf-8')) + self.result = stdout.decode('utf-8').strip().splitlines() + + def set_query(self, query): + """ + Update the query and recalculate the result list. + + Args: + query (str): The new search query. + """ + self.query = query + self.recalc_result() + + def __call__(self, fobj): + """ + Perform the actual filtering. + + Args: + fobj (ranger.container.file.File | ranger.container.directory.Directory): The file or directory to check. + + Returns: + bool: True if the file or directory is in the result list, False otherwise. + """ + # Check if the files in the current directory have changed, and if so, recalculate source and result + if self.thisdir.files_all is not self.files_all: + self.files_all = self.thisdir.files_all + self.recalc_source() + self.recalc_result() + + # Ensure the relative path start of the file or directory is in the current directory + if os.path.relpath(fobj.path, fobj.relative_path) != '.': + return True + + # Check if the relative path of the file or directory is in the result list + return fobj.relative_path in self.result diff --git a/home-manager/general/programs/ranger/rc.conf b/home-manager/general/programs/ranger/rc.conf new file mode 100644 index 0000000..271d239 --- /dev/null +++ b/home-manager/general/programs/ranger/rc.conf @@ -0,0 +1,12 @@ +map f console fzf_filter%space +map x quit_cd_wd +map X quitall_cd_wd +map <alt>/ console fd_search -d5%space +map <alt>n fd_next +map <alt>p fd_prev +map e shell dragon -x %p & +map yc YankContent +set preview_images true +set preview_images_method kitty +set use_preview_script True +map gj cd /run/media/jerpo/ diff --git a/home-manager/general/programs/ranger/rifle.conf b/home-manager/general/programs/ranger/rifle.conf new file mode 100644 index 0000000..3b565af --- /dev/null +++ b/home-manager/general/programs/ranger/rifle.conf @@ -0,0 +1,284 @@ +# vim: ft=cfg +# +# This is the configuration file of "rifle", ranger's file executor/opener. +# Each line consists of conditions and a command. For each line the conditions +# are checked and if they are met, the respective command is run. +# +# Syntax: +# <condition1> , <condition2> , ... = command +# +# The command can contain these environment variables: +# $1-$9 | The n-th selected file +# $@ | All selected files +# +# If you use the special command "ask", rifle will ask you what program to run. +# +# Prefixing a condition with "!" will negate its result. +# These conditions are currently supported: +# match <regexp> | The regexp matches $1 +# ext <regexp> | The regexp matches the extension of $1 +# mime <regexp> | The regexp matches the mime type of $1 +# name <regexp> | The regexp matches the basename of $1 +# path <regexp> | The regexp matches the absolute path of $1 +# has <program> | The program is installed (i.e. located in $PATH) +# env <variable> | The environment variable "variable" is non-empty +# file | $1 is a file +# directory | $1 is a directory +# number <n> | change the number of this command to n +# terminal | stdin, stderr and stdout are connected to a terminal +# X | A graphical environment is available (darwin, Xorg, or Wayland) +# +# There are also pseudo-conditions which have a "side effect": +# flag <flags> | Change how the program is run. See below. +# label <label> | Assign a label or name to the command so it can +# | be started with :open_with <label> in ranger +# | or `rifle -p <label>` in the standalone executable. +# else | Always true. +# +# Flags are single characters which slightly transform the command: +# f | Fork the program, make it run in the background. +# | New command = setsid $command >& /dev/null & +# r | Execute the command with root permissions +# | New command = sudo $command +# t | Run the program in a new terminal. If $TERMCMD is not defined, +# | rifle will attempt to extract it from $TERM. +# | New command = $TERMCMD -e $command +# Note: The "New command" serves only as an illustration, the exact +# implementation may differ. +# Note: When using rifle in ranger, there is an additional flag "c" for +# only running the current file even if you have marked multiple files. + +#------------------------------------------- +# Websites +#------------------------------------------- +# Rarely installed browsers get higher priority; It is assumed that if you +# install a rare browser, you probably use it. Firefox/konqueror/w3m on the +# other hand are often only installed as fallback browsers. +ext x?html?, has surf, X, flag f = surf -- file://"$1" +ext x?html?, has vimprobable, X, flag f = vimprobable -- "$@" +ext x?html?, has vimprobable2, X, flag f = vimprobable2 -- "$@" +ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@" +ext x?html?, has dwb, X, flag f = dwb -- "$@" +ext x?html?, has jumanji, X, flag f = jumanji -- "$@" +ext x?html?, has luakit, X, flag f = luakit -- "$@" +ext x?html?, has uzbl, X, flag f = uzbl -- "$@" +ext x?html?, has uzbl-tabbed, X, flag f = uzbl-tabbed -- "$@" +ext x?html?, has uzbl-browser, X, flag f = uzbl-browser -- "$@" +ext x?html?, has uzbl-core, X, flag f = uzbl-core -- "$@" +ext x?html?, has midori, X, flag f = midori -- "$@" +ext x?html?, has opera, X, flag f = opera -- "$@" +ext x?html?, has firefox, X, flag f = firefox -- "$@" +ext x?html?, has seamonkey, X, flag f = seamonkey -- "$@" +ext x?html?, has iceweasel, X, flag f = iceweasel -- "$@" +ext x?html?, has chromium-browser, X, flag f = chromium-browser -- "$@" +ext x?html?, has chromium, X, flag f = chromium -- "$@" +ext x?html?, has google-chrome, X, flag f = google-chrome -- "$@" +ext x?html?, has epiphany, X, flag f = epiphany -- "$@" +ext x?html?, has konqueror, X, flag f = konqueror -- "$@" +ext x?html?, has elinks, terminal = elinks "$@" +ext x?html?, has links2, terminal = links2 "$@" +ext x?html?, has links, terminal = links "$@" +ext x?html?, has lynx, terminal = lynx -- "$@" +ext x?html?, has w3m, terminal = w3m "$@" + +#------------------------------------------- +# Misc +#------------------------------------------- +# Define the "editor" for text files as first action +mime ^text, label editor = ${VISUAL:-$EDITOR} -- "$@" +mime ^text, label pager = "$PAGER" -- "$@" +!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@" +!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@" + +ext 1 = man "$1" +ext s[wmf]c, has zsnes, X = zsnes "$1" +ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1" +ext nes, has fceux, X = fceux "$1" +ext exe = wine "$1" +name ^[mM]akefile$ = make + +#-------------------------------------------- +# Scripts +#------------------------------------------- +ext py = python -- "$1" +ext pl = perl -- "$1" +ext rb = ruby -- "$1" +ext js = node -- "$1" +ext sh = sh -- "$1" +ext php = php -- "$1" + +#-------------------------------------------- +# Audio without X +#------------------------------------------- +mime ^audio|ogg$, terminal, has mpv = mpv -- "$@" +mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@" +mime ^audio|ogg$, terminal, has mplayer = mplayer -- "$@" +ext midi?, terminal, has wildmidi = wildmidi -- "$@" + +#-------------------------------------------- +# Video/Audio with a GUI +#------------------------------------------- +mime ^video|audio, has gmplayer, X, flag f = gmplayer -- "$@" +mime ^video|audio, has smplayer, X, flag f = smplayer "$@" +mime ^video, has mpv, X, flag f = mpv -- "$@" +mime ^video, has mpv, X, flag f = mpv --fs -- "$@" +mime ^video, has mplayer2, X, flag f = mplayer2 -- "$@" +mime ^video, has mplayer2, X, flag f = mplayer2 -fs -- "$@" +mime ^video, has mplayer, X, flag f = mplayer -- "$@" +mime ^video, has mplayer, X, flag f = mplayer -fs -- "$@" +mime ^video|audio, has vlc, X, flag f = vlc -- "$@" +mime ^video|audio, has totem, X, flag f = totem -- "$@" +mime ^video|audio, has totem, X, flag f = totem --fullscreen -- "$@" + +#-------------------------------------------- +# Video without X +#------------------------------------------- +mime ^video, terminal, !X, has mpv = mpv -- "$@" +mime ^video, terminal, !X, has mplayer2 = mplayer2 -- "$@" +mime ^video, terminal, !X, has mplayer = mplayer -- "$@" + +#------------------------------------------- +# Documents +#------------------------------------------- +ext pdf, has llpp, X, flag f = llpp "$@" +ext pdf, has zathura, X, flag f = zathura -- "$@" +ext pdf, has mupdf, X, flag f = mupdf "$@" +ext pdf, has mupdf-x11,X, flag f = mupdf-x11 "$@" +ext pdf, has apvlv, X, flag f = apvlv -- "$@" +ext pdf, has xpdf, X, flag f = xpdf -- "$@" +ext pdf, has evince, X, flag f = evince -- "$@" +ext pdf, has atril, X, flag f = atril -- "$@" +ext pdf, has okular, X, flag f = okular -- "$@" +ext pdf, has epdfview, X, flag f = epdfview -- "$@" +ext pdf, has qpdfview, X, flag f = qpdfview "$@" +ext pdf, has open, X, flag f = open "$@" + +ext docx?, has catdoc, terminal = catdoc -- "$@" | "$PAGER" + +ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@" +ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread, X, flag f = kspread -- "$@" +ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@" +ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has soffice, X, flag f = soffice "$@" +ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has ooffice, X, flag f = ooffice "$@" + +ext djvu, has zathura,X, flag f = zathura -- "$@" +ext djvu, has evince, X, flag f = evince -- "$@" +ext djvu, has atril, X, flag f = atril -- "$@" +ext djvu, has djview, X, flag f = djview -- "$@" + +ext epub, has ebook-viewer, X, flag f = ebook-viewer -- "$@" +ext epub, has zathura, X, flag f = zathura -- "$@" +ext epub, has mupdf, X, flag f = mupdf -- "$@" +ext mobi, has ebook-viewer, X, flag f = ebook-viewer -- "$@" + +ext cbr, has zathura, X, flag f = zathura -- "$@" +ext cbz, has zathura, X, flag f = zathura -- "$@" + +#------------------------------------------- +# Images +#------------------------------------------- +mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@" +mime ^image/svg, has display, X, flag f = display -- "$@" + +mime ^image, has geeqie, X, flag f = geeqie -- "$@" +mime ^image, has imv, X, flag f = imv -- "$@" +mime ^image, has pqiv, X, flag f = pqiv -- "$@" +mime ^image, has sxiv, X, flag f = sxiv -- "$@" +mime ^image, has feh, X, flag f = feh -- "$@" +mime ^image, has mirage, X, flag f = mirage -- "$@" +mime ^image, has ristretto, X, flag f = ristretto "$@" +mime ^image, has eog, X, flag f = eog -- "$@" +mime ^image, has eom, X, flag f = eom -- "$@" +mime ^image, has nomacs, X, flag f = nomacs -- "$@" +mime ^image, has gpicview, X, flag f = gpicview -- "$@" +mime ^image, has gwenview, X, flag f = gwenview -- "$@" +mime ^image, has gimp, X, flag f = gimp -- "$@" +ext xcf, X, flag f = gimp -- "$@" + +#------------------------------------------- +# Archives +#------------------------------------------- + +# avoid password prompt by providing empty password +ext 7z, has 7z = 7z -p l "$@" | "$PAGER" +# This requires atool +ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --list --each -- "$@" | "$PAGER" +ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --list --each -- "$@" | "$PAGER" +ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --extract --each -- "$@" +ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --extract --each -- "$@" + +# Listing and extracting archives without atool: +ext tar|gz|bz2|xz, has tar = tar vvtf "$1" | "$PAGER" +ext tar|gz|bz2|xz, has tar = for file in "$@"; do tar vvxf "$file"; done +ext bz2, has bzip2 = for file in "$@"; do bzip2 -dk "$file"; done +ext zip, has unzip = unzip -l "$1" | less +ext zip, has unzip = for file in "$@"; do unzip -d "${file%.*}" "$file"; done +ext ace, has unace = unace l "$1" | less +ext ace, has unace = for file in "$@"; do unace e "$file"; done +ext rar, has unrar = unrar l "$1" | less +ext rar, has unrar = for file in "$@"; do unrar x "$file"; done + +#------------------------------------------- +# Fonts +#------------------------------------------- +mime ^font, has fontforge, X, flag f = fontforge "$@" + +#------------------------------------------- +# Flag t fallback terminals +#------------------------------------------- +# Rarely installed terminal emulators get higher priority; It is assumed that +# if you install a rare terminal emulator, you probably use it. +# gnome-terminal/konsole/xterm on the other hand are often installed as part of +# a desktop environment or as fallback terminal emulators. +mime ^ranger/x-terminal-emulator, has terminology = terminology -e "$@" +mime ^ranger/x-terminal-emulator, has kitty = kitty -- "$@" +mime ^ranger/x-terminal-emulator, has alacritty = alacritty -e "$@" +mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@" +mime ^ranger/x-terminal-emulator, has lilyterm = lilyterm -e "$@" +#mime ^ranger/x-terminal-emulator, has cool-retro-term = cool-retro-term -e "$@" +mime ^ranger/x-terminal-emulator, has termite = termite -x '"$@"' +#mime ^ranger/x-terminal-emulator, has yakuake = yakuake -e "$@" +mime ^ranger/x-terminal-emulator, has guake = guake -ne "$@" +mime ^ranger/x-terminal-emulator, has tilda = tilda -c "$@" +mime ^ranger/x-terminal-emulator, has st = st -e "$@" +mime ^ranger/x-terminal-emulator, has terminator = terminator -x "$@" +mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@" +mime ^ranger/x-terminal-emulator, has pantheon-terminal = pantheon-terminal -e "$@" +mime ^ranger/x-terminal-emulator, has lxterminal = lxterminal -e "$@" +mime ^ranger/x-terminal-emulator, has mate-terminal = mate-terminal -x "$@" +mime ^ranger/x-terminal-emulator, has xfce4-terminal = xfce4-terminal -x "$@" +mime ^ranger/x-terminal-emulator, has konsole = konsole -e "$@" +mime ^ranger/x-terminal-emulator, has gnome-terminal = gnome-terminal -- "$@" +mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@" + +#------------------------------------------- +# Misc +#------------------------------------------- +label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1" +label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1" +label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1" +label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1" + +#------------------------------------------- +# Generic file openers +#------------------------------------------- +label open, has xdg-open = xdg-open -- "$@" +label open, has open = open -- "$@" + +# Define the editor for non-text files + pager as last action + !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask +label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@" +label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@" + + +###################################################################### +# The actions below are left so low down in this file on purpose, so # +# they are never triggered accidentally. # +###################################################################### + +# Execute a file as program/script. +mime application/x-executable = "$1" + +# Move the file to trash using trash-cli. +label trash, has trash-put = trash-put -- "$@" +label trash = mkdir -p -- ${XDG_DATA_DIR:-$HOME/.ranger}/ranger-trash; mv -- "$@" ${XDG_DATA_DIR:-$HOME/.ranger}/ranger-trash diff --git a/home-manager/general/programs/ranger/scope.sh b/home-manager/general/programs/ranger/scope.sh new file mode 100755 index 0000000..f9c7648 --- /dev/null +++ b/home-manager/general/programs/ranger/scope.sh @@ -0,0 +1,351 @@ +#!/usr/bin/env bash + +set -o noclobber -o noglob -o nounset -o pipefail +IFS=$'\n' + +## If the option `use_preview_script` is set to `true`, +## then this script will be called and its output will be displayed in ranger. +## ANSI color codes are supported. +## STDIN is disabled, so interactive scripts won't work properly + +## This script is considered a configuration file and must be updated manually. +## It will be left untouched if you upgrade ranger. + +## Because of some automated testing we do on the script #'s for comments need +## to be doubled up. Code that is commented out, because it's an alternative for +## example, gets only one #. + +## Meanings of exit codes: +## code | meaning | action of ranger +## -----+------------+------------------------------------------- +## 0 | success | Display stdout as preview +## 1 | no preview | Display no preview at all +## 2 | plain text | Display the plain content of the file +## 3 | fix width | Don't reload when width changes +## 4 | fix height | Don't reload when height changes +## 5 | fix both | Don't ever reload +## 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview +## 7 | image | Display the file directly as an image + +## Script arguments +FILE_PATH="${1}" # Full path of the highlighted file +PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters) +## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused +PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters) +IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview +PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise. + +FILE_EXTENSION="${FILE_PATH##*.}" +FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')" + +## Settings +HIGHLIGHT_SIZE_MAX=262143 # 256KiB +HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8} +HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo} +HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}" +PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn} +OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000} +OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night} + +handle_extension() { + case "${FILE_EXTENSION_LOWER}" in + ## Archive + a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\ + rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip) + atool --list -- "${FILE_PATH}" && exit 5 + bsdtar --list --file "${FILE_PATH}" && exit 5 + exit 1;; + rar) + ## Avoid password prompt by providing empty password + unrar lt -p- -- "${FILE_PATH}" && exit 5 + exit 1;; + 7z) + ## Avoid password prompt by providing empty password + 7z l -p -- "${FILE_PATH}" && exit 5 + exit 1;; + + ## PDF + pdf) + ## Preview as text conversion + pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \ + fmt -w "${PV_WIDTH}" && exit 5 + mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \ + fmt -w "${PV_WIDTH}" && exit 5 + exiftool "${FILE_PATH}" && exit 5 + exit 1;; + + ## BitTorrent + torrent) + transmission-show -- "${FILE_PATH}" && exit 5 + exit 1;; + + ## OpenDocument + odt|ods|odp|sxw) + ## Preview as text conversion + odt2txt "${FILE_PATH}" && exit 5 + ## Preview as markdown conversion + pandoc -s -t markdown -- "${FILE_PATH}" && exit 5 + exit 1;; + + ## XLSX + xlsx) + ## Preview as csv conversion + ## Uses: https://github.com/dilshod/xlsx2csv + xlsx2csv -- "${FILE_PATH}" && exit 5 + exit 1;; + + ## HTML + htm|html|xhtml) + ## Preview as text conversion + w3m -dump "${FILE_PATH}" && exit 5 + lynx -dump -- "${FILE_PATH}" && exit 5 + elinks -dump "${FILE_PATH}" && exit 5 + pandoc -s -t markdown -- "${FILE_PATH}" && exit 5 + ;; + + ## JSON + json) + jq --color-output . "${FILE_PATH}" && exit 5 + python -m json.tool -- "${FILE_PATH}" && exit 5 + ;; + + ## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected + ## by file(1). + dff|dsf|wv|wvc) + mediainfo "${FILE_PATH}" && exit 5 + exiftool "${FILE_PATH}" && exit 5 + ;; # Continue with next handler on failure + esac +} + +handle_image() { + ## Size of the preview if there are multiple options or it has to be + ## rendered from vector graphics. If the conversion program allows + ## specifying only one dimension while keeping the aspect ratio, the width + ## will be used. + local DEFAULT_SIZE="1920x1080" + + local mimetype="${1}" + case "${mimetype}" in + ## SVG + # image/svg+xml|image/svg) + # convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6 + # exit 1;; + + ## DjVu + # image/vnd.djvu) + # ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \ + # - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \ + # && exit 6 || exit 1;; + + ## Image + image/*) + local orientation + orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )" + ## If orientation data is present and the image actually + ## needs rotating ("1" means no rotation)... + if [[ -n "$orientation" && "$orientation" != 1 ]]; then + ## ...auto-rotate the image according to the EXIF data. + convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6 + fi + kitty +kitten icat "${IMAGE_CACHE_PATH}" + + ## `w3mimgdisplay` will be called for all images (unless overriden + ## as above), but might fail for unsupported types. + exit 7;; + + ## Video + video/*) + # Thumbnail + ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6 + exit 1;; + + ## PDF + application/pdf) + pdftoppm -f 1 -l 1 \ + -scale-to-x "${DEFAULT_SIZE%x*}" \ + -scale-to-y -1 \ + -singlefile \ + -jpeg -tiffcompression jpeg \ + -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \ + && exit 6 || exit 1;; + + + ## ePub, MOBI, FB2 (using Calibre) + application/epub+zip|application/x-mobipocket-ebook|\ + application/x-fictionbook+xml) + # ePub (using https://github.com/marianosimone/epub-thumbnailer) + epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \ + "${DEFAULT_SIZE%x*}" && exit 6 + ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \ + >/dev/null && exit 6 + exit 1;; + + ## Font + application/font*|application/*opentype) + preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png" + if fontimage -o "${preview_png}" \ + --pixelsize "120" \ + --fontname \ + --pixelsize "80" \ + --text " ABCDEFGHIJKLMNOPQRSTUVWXYZ " \ + --text " abcdefghijklmnopqrstuvwxyz " \ + --text " 0123456789.:,;(*!?') ff fl fi ffi ffl " \ + --text " The quick brown fox jumps over the lazy dog. " \ + "${FILE_PATH}"; + then + convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \ + && rm "${preview_png}" \ + && exit 6 + else + exit 1 + fi + ;; + + ## Preview archives using the first image inside. + ## (Very useful for comic book collections for example.) + # application/zip|application/x-rar|application/x-7z-compressed|\ + # application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar) + # local fn=""; local fe="" + # local zip=""; local rar=""; local tar=""; local bsd="" + # case "${mimetype}" in + # application/zip) zip=1 ;; + # application/x-rar) rar=1 ;; + # application/x-7z-compressed) ;; + # *) tar=1 ;; + # esac + # { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \ + # { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \ + # { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \ + # { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return + # + # fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \ + # [ print(l, end='') for l in sys.stdin if \ + # (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\ + # sort -V | head -n 1) + # [ "$fn" = "" ] && return + # [ "$bsd" ] && fn=$(printf '%b' "$fn") + # + # [ "$tar" ] && tar --extract --to-stdout \ + # --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6 + # fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g') + # [ "$bsd" ] && bsdtar --extract --to-stdout \ + # --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6 + # [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}" + # [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \ + # "${IMAGE_CACHE_PATH}" && exit 6 + # [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \ + # "${IMAGE_CACHE_PATH}" && exit 6 + # [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}" + # ;; + esac + + # openscad_image() { + # TMPPNG="$(mktemp -t XXXXXX.png)" + # openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \ + # --imgsize="${OPENSCAD_IMGSIZE/x/,}" \ + # -o "${TMPPNG}" "${1}" + # mv "${TMPPNG}" "${IMAGE_CACHE_PATH}" + # } + + # case "${FILE_EXTENSION_LOWER}" in + # ## 3D models + # ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH} + # ## is hardcoded as jpeg. So we make a tempfile.png and just + # ## move/rename it to jpg. This works because image libraries are + # ## smart enough to handle it. + # csg|scad) + # openscad_image "${FILE_PATH}" && exit 6 + # ;; + # 3mf|amf|dxf|off|stl) + # openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6 + # ;; + # esac +} + +handle_mime() { + local mimetype="${1}" + case "${mimetype}" in + ## RTF and DOC + text/rtf|*msword) + ## Preview as text conversion + ## note: catdoc does not always work for .doc files + ## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/ + catdoc -- "${FILE_PATH}" && exit 5 + exit 1;; + + ## DOCX, ePub, FB2 (using markdown) + ## You might want to remove "|epub" and/or "|fb2" below if you have + ## uncommented other methods to preview those formats + *wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml) + ## Preview as markdown conversion + pandoc -s -t markdown -- "${FILE_PATH}" && exit 5 + exit 1;; + + ## XLS + *ms-excel) + ## Preview as csv conversion + ## xls2csv comes with catdoc: + ## http://www.wagner.pp.ru/~vitus/software/catdoc/ + xls2csv -- "${FILE_PATH}" && exit 5 + exit 1;; + + ## Text + text/* | */xml) + ## Syntax highlight + if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then + exit 2 + fi + if [[ "$( tput colors )" -ge 256 ]]; then + local pygmentize_format='terminal256' + local highlight_format='xterm256' + else + local pygmentize_format='terminal' + local highlight_format='ansi' + fi + env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \ + --out-format="${highlight_format}" \ + --force -- "${FILE_PATH}" && exit 5 + env COLORTERM=8bit bat --color=always --style="plain" \ + -- "${FILE_PATH}" && exit 5 + pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\ + -- "${FILE_PATH}" && exit 5 + exit 2;; + + ## DjVu + image/vnd.djvu) + ## Preview as text conversion (requires djvulibre) + djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5 + exiftool "${FILE_PATH}" && exit 5 + exit 1;; + + ## Image + image/*) + ## Preview as text conversion + # img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4 + exiftool "${FILE_PATH}" && exit 5 + exit 1;; + + ## Video and audio + video/* | audio/*) + mediainfo "${FILE_PATH}" && exit 5 + exiftool "${FILE_PATH}" && exit 5 + exit 1;; + esac +} + +handle_fallback() { + echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5 + exit 1 +} + + +MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )" +if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then + handle_image "${MIMETYPE}" +fi +handle_extension +handle_mime "${MIMETYPE}" +handle_fallback + +exit 1 diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-checked-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-checked-symbolic.svg new file mode 100644 index 0000000..7b89e88 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-checked-symbolic.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="20" + height="20" + version="1.1" + viewBox="0 0 20 20" + id="svg4" + sodipodi:docname="checkbox-checked-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:snap-global="false" + inkscape:zoom="14.916666" + inkscape:cx="7.9776538" + inkscape:cy="5.1620113" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid825" /> + </sodipodi:namedview> + <path + id="path2" + d="m 16.091797,6.5468751 c 0.127806,-3.5e-6 0.255581,0.04855 0.353515,0.1464844 0.195869,0.1958684 0.195869,0.5111627 0,0.7070308 L 9.3730471,14.472656 c -0.02449,0.02449 -0.05035,0.04611 -0.07815,0.06443 -0.02772,0.01839 -0.05585,0.03268 -0.08593,0.04492 -0.03009,0.01224 -0.06226,0.02122 -0.09376,0.02734 -0.03149,0.0061 -0.06375,0.0098 -0.09571,0.0098 -0.03195,0 -0.06226,-0.0036 -0.09375,-0.0098 -0.03149,-0.0061 -0.06367,-0.0151 -0.09375,-0.02734 -0.03009,-0.01224 -0.05818,-0.02656 -0.08593,-0.04492 -0.01389,-0.0092 -0.02786,-0.02051 -0.04101,-0.03125 -0.01312,-0.01071 -0.02679,-0.02099 -0.03903,-0.03323 l -4.18665,-4.188623 c -0.1958683,-0.195869 -0.1958687,-0.511162 5e-7,-0.707032 0.1958681,-0.195867 0.5111624,-0.195868 0.7070307,1e-6 l 3.8331198,3.835099 6.7187499,-6.7187499 c 0.09793,-0.097934 0.225707,-0.1464831 0.353516,-0.146484 z" + sodipodi:nodetypes="cscscscscsccccsccccc" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-checked-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-checked-symbolic@2.svg new file mode 100644 index 0000000..17e3c4a --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-checked-symbolic@2.svg @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="40" + height="40" + version="1.1" + viewBox="0 0 40 40" + id="svg4" + sodipodi:docname="checkbox-checked-symbolic@2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:snap-global="false" + inkscape:zoom="7.458333" + inkscape:cx="-8.9832406" + inkscape:cy="11.061453" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid825" /> + </sodipodi:namedview> + <path + id="path2" + d="m 32.183594,13.09375 c 0.255612,-7e-6 0.511162,0.0971 0.70703,0.292969 0.391738,0.391737 0.391738,1.022325 0,1.414062 l -14.14453,14.144531 c -0.04898,0.04898 -0.1007,0.09222 -0.1563,0.12886 -0.05544,0.03678 -0.1117,0.06536 -0.17186,0.08984 -0.06018,0.02448 -0.12452,0.04244 -0.18752,0.05468 -0.06298,0.0122 -0.1275,0.0196 -0.19142,0.0196 -0.0639,0 -0.12452,-0.0072 -0.1875,-0.0196 -0.06298,-0.0122 -0.12734,-0.0302 -0.1875,-0.05468 -0.06018,-0.02448 -0.11636,-0.05312 -0.17186,-0.08984 -0.02778,-0.0184 -0.05572,-0.04102 -0.08202,-0.0625 -0.02624,-0.02142 -0.05358,-0.04198 -0.07806,-0.06646 L 8.9587542,20.567966 c -0.3917366,-0.391738 -0.3917374,-1.022324 1e-6,-1.414064 0.3917362,-0.391734 1.0223248,-0.391736 1.4140618,2e-6 l 7.666239,7.670198 13.4375,-13.4375 c 0.19586,-0.195868 0.451414,-0.292966 0.707032,-0.292968 z" + sodipodi:nodetypes="cscscscscsccccsccccc" + style="stroke-width:2" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-mixed-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-mixed-symbolic.svg new file mode 100644 index 0000000..b4808a6 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-mixed-symbolic.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="20" + height="20" + version="1.1" + viewBox="0 0 20 20" + id="svg4" + sodipodi:docname="checkbox-mixed-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="10.547676" + inkscape:cx="0.094807614" + inkscape:cy="19.340753" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" + width="20px"> + <inkscape:grid + type="xygrid" + id="grid825" /> + </sodipodi:namedview> + <path + id="path2" + d="m 5.5,10 h 9 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -9 C 5.223,11 5,10.777 5,10.5 5,10.223 5.223,10 5.5,10 Z" + sodipodi:nodetypes="sssssss" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-mixed-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-mixed-symbolic@2.svg new file mode 100644 index 0000000..3ea0541 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/checkbox-mixed-symbolic@2.svg @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="40" + height="40" + version="1.1" + viewBox="0 0 40 40" + id="svg4" + sodipodi:docname="checkbox-mixed-symbolic@2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="10.547676" + inkscape:cx="0" + inkscape:cy="19.29335" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" + width="20px"> + <inkscape:grid + type="xygrid" + id="grid825" /> + </sodipodi:namedview> + <path + id="path2" + d="m 11,20 h 18 c 0.554,0 1,0.446 1,1 0,0.554 -0.446,1 -1,1 H 11 c -0.554,0 -1,-0.446 -1,-1 0,-0.554 0.446,-1 1,-1 z" + sodipodi:nodetypes="sssssss" + style="stroke-width:2" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/close-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/close-symbolic.svg new file mode 100644 index 0000000..06201c3 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/close-symbolic.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16" + height="16" + viewBox="0 0 16 16" + version="1.1" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="close.svg" + id="svg824" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs5" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#424242" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="11.5625" + inkscape:cx="7.3513514" + inkscape:cy="13.837838" + inkscape:window-width="1440" + inkscape:window-height="742" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg824" /> + <path + d="m 4.464745,3.96488 c -0.12775,0 -0.2555,0.0486 -0.35339,0.14649 -0.19578,0.19586 -0.19578,0.51116 0,0.70703 L 7.292955,8 l -3.1816,3.1816 c -0.19578,0.19586 -0.19578,0.51116 0,0.70703 0.19578,0.19586 0.51118,0.19586 0.70704,0 l 3.18161,-3.1816 3.1816,3.1816 c 0.19578,0.19586 0.51114,0.19586 0.70704,0 0.19578,-0.19586 0.19578,-0.51116 0,-0.70703 L 8.707045,8 l 3.1816,-3.1816 c 0.19578,-0.19586 0.19578,-0.51116 0,-0.70703 -0.19578,-0.19586 -0.51117,-0.19586 -0.70704,0 l -3.1816,3.1816 -3.18161,-3.1816 C 4.720495,4.01347 4.592755,3.96488 4.465005,3.96488 Z" + id="path2928" + style="fill:#ffffff" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/close-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/close-symbolic@2.svg new file mode 100644 index 0000000..a26e6ff --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/close-symbolic@2.svg @@ -0,0 +1,3 @@ +<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> + <path d="m8.9295 7.9298c-0.2555 0-0.511 0.0972-0.70678 0.29298-0.39156 0.39172-0.39156 1.0223 0 1.4141l6.3632 6.3632-6.3632 6.3632c-0.39156 0.39172-0.39156 1.0223 0 1.4141 0.39156 0.39172 1.0224 0.39172 1.4141 0l6.3632-6.3632 6.3632 6.3632c0.39156 0.39172 1.0223 0.39172 1.4141 0 0.39156-0.39172 0.39156-1.0223 0-1.4141l-6.3632-6.3632 6.3632-6.3632c0.39156-0.39172 0.39156-1.0223 0-1.4141-0.39156-0.39172-1.0223-0.39172-1.4141 0l-6.3632 6.3632-6.3632-6.3632c-0.1958-0.1958-0.45128-0.29298-0.70678-0.29298z" fill="#ffffff" stroke-width="2"/> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/cursor-handle-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/cursor-handle-symbolic.svg new file mode 100644 index 0000000..e2a252b --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/cursor-handle-symbolic.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"> + <path d="M0 0h12A12 12 0 1 1 0 12z"/> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/maximize-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/maximize-symbolic.svg new file mode 100644 index 0000000..39316eb --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/maximize-symbolic.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16" + height="16" + viewBox="0 0 16 16" + version="1.1" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="maximize.svg" + id="svg825" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs5" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#424242" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="23.125" + inkscape:cx="11.243243" + inkscape:cy="11.978378" + inkscape:window-width="1440" + inkscape:window-height="742" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg825" /> + <path + d="M 6,4 C 4.892,4 4,4.892 4,6 v 4 c 0,1.108 0.89201,2 2,2 h 4 c 1.10801,0 2,-0.892 2,-2 V 6 C 12,4.892 11.10799,4 10,4 Z m 0,1 h 4 c 0.554,0 1,0.44602 1,1 v 4 c 0,0.55398 -0.44602,1 -1,1 H 6 C 5.44603,11 5.00001,10.55398 5.00001,10 V 6 C 5.00001,5.44602 5.44604,5 6,5 Z" + id="path2930" + style="fill:#ffffff" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/maximize-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/maximize-symbolic@2.svg new file mode 100644 index 0000000..8095f75 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/maximize-symbolic@2.svg @@ -0,0 +1,3 @@ +<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> + <path d="m12 8c-2.216 0-4 1.784-4 4v8c0 2.216 1.784 4 4 4h8c2.216 0 4-1.784 4-4v-8c0-2.216-1.784-4-4-4zm0 2h8c1.108 0 2 0.89204 2 2v8c0 1.108-0.89204 2-2 2h-8c-1.1079 0-2-0.89204-2-2v-8c0-1.108 0.89206-2 2-2z" fill="#ffffff" stroke-width="2"/> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/minimize-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/minimize-symbolic.svg new file mode 100644 index 0000000..f3683b9 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/minimize-symbolic.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16" + height="16" + viewBox="0 0 16 16" + version="1.1" + id="svg4" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + sodipodi:docname="minimize.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs5" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#424242" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="23.125" + inkscape:cx="5.7513514" + inkscape:cy="9.8162162" + inkscape:window-width="1440" + inkscape:window-height="742" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" /> + <rect + x="4" + y="8" + width="8" + height="1" + rx="0.5" + ry="0.5" + id="rect2932" + style="fill:#ffffff" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/minimize-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/minimize-symbolic@2.svg new file mode 100644 index 0000000..741534b --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/minimize-symbolic@2.svg @@ -0,0 +1,3 @@ +<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> + <rect x="8" y="15" width="16" height="2" rx="1" ry="1" fill="#ffffff" stroke-width="2"/> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/radio-checked-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/radio-checked-symbolic.svg new file mode 100644 index 0000000..67beb46 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/radio-checked-symbolic.svg @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="20" + height="20" + version="1.1" + viewBox="0 0 20 20" + id="svg4" + sodipodi:docname="radio-checked-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="29.833333" + inkscape:cx="9.6201118" + inkscape:cy="12" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid825" /> + </sodipodi:namedview> + <path + id="path2" + d="m 10,8 c 1.104569,0 2,0.895431 2,2 0,1.104569 -0.895431,2 -2,2 C 8.895431,12 8,11.104569 8,10 8,8.895431 8.895431,8 10,8 Z" + sodipodi:nodetypes="sssss" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/radio-checked-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/radio-checked-symbolic@2.svg new file mode 100644 index 0000000..bf51d9e --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/radio-checked-symbolic@2.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="40" + height="40" + version="1.1" + viewBox="0 0 40 40" + id="svg4" + sodipodi:docname="radio-checked-symbolic@2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.7291666" + inkscape:cx="-8.3128492" + inkscape:cy="25.877095" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid825" /> + </sodipodi:namedview> + <path + id="path2" + d="m 20,16 c 2.209138,0 4,1.790862 4,4 0,2.209138 -1.790862,4 -4,4 -2.209138,0 -4,-1.790862 -4,-4 0,-2.209138 1.790862,-4 4,-4 z" + sodipodi:nodetypes="sssss" + style="stroke-width:2" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/radio-mixed-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/radio-mixed-symbolic.svg new file mode 100644 index 0000000..b4808a6 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/radio-mixed-symbolic.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="20" + height="20" + version="1.1" + viewBox="0 0 20 20" + id="svg4" + sodipodi:docname="checkbox-mixed-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="10.547676" + inkscape:cx="0.094807614" + inkscape:cy="19.340753" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" + width="20px"> + <inkscape:grid + type="xygrid" + id="grid825" /> + </sodipodi:namedview> + <path + id="path2" + d="m 5.5,10 h 9 c 0.277,0 0.5,0.223 0.5,0.5 0,0.277 -0.223,0.5 -0.5,0.5 h -9 C 5.223,11 5,10.777 5,10.5 5,10.223 5.223,10 5.5,10 Z" + sodipodi:nodetypes="sssssss" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/radio-mixed-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/radio-mixed-symbolic@2.svg new file mode 100644 index 0000000..3ea0541 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/radio-mixed-symbolic@2.svg @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="40" + height="40" + version="1.1" + viewBox="0 0 40 40" + id="svg4" + sodipodi:docname="checkbox-mixed-symbolic@2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="10.547676" + inkscape:cx="0" + inkscape:cy="19.29335" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" + width="20px"> + <inkscape:grid + type="xygrid" + id="grid825" /> + </sodipodi:namedview> + <path + id="path2" + d="m 11,20 h 18 c 0.554,0 1,0.446 1,1 0,0.554 -0.446,1 -1,1 H 11 c -0.554,0 -1,-0.446 -1,-1 0,-0.554 0.446,-1 1,-1 z" + sodipodi:nodetypes="sssssss" + style="stroke-width:2" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/scale-horz-marks-after-slider-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/scale-horz-marks-after-slider-symbolic.svg new file mode 100644 index 0000000..de0d789 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/scale-horz-marks-after-slider-symbolic.svg @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="24" + height="24" + version="1.1" + viewBox="0 0 24 24" + id="svg17" + sodipodi:docname="scale-horz-marks-after-slider-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview19" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="29.833333" + inkscape:cx="12" + inkscape:cy="12" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg17" /> + <defs + id="defs6"> + <linearGradient + id="color-primary-dark"> + <stop + stop-color="#1A73E8" + offset="1" + id="stop2" /> + </linearGradient> + <linearGradient + id="a" + x1="-3.5527e-15" + x2="24" + gradientUnits="userSpaceOnUse" + xlink:href="#color-primary-dark" /> + </defs> + <path + d="m 12,20.485281 -4.2426407,-4.24264 a 6,6 0 1 1 8.4852817,0 z" + fill="#000000" + id="path10" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/scale-horz-marks-before-slider-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/scale-horz-marks-before-slider-symbolic.svg new file mode 100644 index 0000000..7f0235f --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/scale-horz-marks-before-slider-symbolic.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="24" + height="24" + version="1.1" + viewBox="0 0 24 24" + id="svg12" + sodipodi:docname="scale-horz-marks-before-slider-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview14" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="14.916667" + inkscape:cx="3.2178771" + inkscape:cy="15.821229" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg12" /> + <defs + id="defs5"> + <linearGradient + id="a" + x2="24" + gradientUnits="userSpaceOnUse"> + <stop + stop-color="#1A73E8" + offset="1" + id="stop2" /> + </linearGradient> + </defs> + <path + d="m 12,3.5147186 4.242641,4.2426407 a 6,6 0 1 1 -8.4852817,0 z" + id="path9" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/scale-slider-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/scale-slider-symbolic.svg new file mode 100644 index 0000000..4b00bc1 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/scale-slider-symbolic.svg @@ -0,0 +1,11 @@ +<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <linearGradient id="a" x2="24" gradientUnits="userSpaceOnUse"> + <stop stop-color="#1A73E8" offset="1"/> + </linearGradient> + </defs> + <g id="scale-slider"> + <rect width="24" height="24" fill="none"/> + <circle cx="12" cy="12" r="6"/> + </g> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/scale-vert-marks-after-slider-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/scale-vert-marks-after-slider-symbolic.svg new file mode 100644 index 0000000..37d9c04 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/scale-vert-marks-after-slider-symbolic.svg @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="24" + height="24" + version="1.1" + viewBox="0 0 24 24" + id="svg17" + sodipodi:docname="scale-vert-marks-after-slider-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview19" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="29.833333" + inkscape:cx="12" + inkscape:cy="12" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg17" /> + <defs + id="defs6"> + <linearGradient + id="color-primary-dark"> + <stop + stop-color="#1A73E8" + offset="1" + id="stop2" /> + </linearGradient> + <linearGradient + id="a" + x2="24" + gradientUnits="userSpaceOnUse" + xlink:href="#color-primary-dark" /> + </defs> + <path + d="m 20.485281,12 -4.24264,4.242641 a 6,6 0 1 1 0,-8.4852817 z" + fill="#000000" + id="path10" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/scale-vert-marks-before-slider-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/scale-vert-marks-before-slider-symbolic.svg new file mode 100644 index 0000000..1bc5cb6 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/scale-vert-marks-before-slider-symbolic.svg @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="24" + height="24" + version="1.1" + viewBox="0 0 24 24" + id="svg17" + sodipodi:docname="scale-vert-marks-before-slider-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview19" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="29.833333" + inkscape:cx="12" + inkscape:cy="12" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg17" /> + <defs + id="defs6"> + <linearGradient + id="color-primary-dark"> + <stop + stop-color="#1A73E8" + offset="1" + id="stop2" /> + </linearGradient> + <linearGradient + id="a" + x1="-2.6324e-15" + x2="24" + y1="-3.5527e-15" + y2="-3.5527e-15" + gradientUnits="userSpaceOnUse" + xlink:href="#color-primary-dark" /> + </defs> + <path + d="M 3.5147186,12 7.7573593,7.7573593 a 6,6 0 1 1 0,8.4852817 z" + fill="#000000" + id="path10" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-checked-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-checked-symbolic.svg new file mode 100644 index 0000000..4759e32 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-checked-symbolic.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16" + height="16" + version="1.1" + viewBox="0 0 16 16" + id="svg4" + sodipodi:docname="small-checkbox-checked-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:snap-global="false" + inkscape:zoom="15.821514" + inkscape:cx="10.176017" + inkscape:cy="9.0383259" + inkscape:window-width="1486" + inkscape:window-height="974" + inkscape:window-x="128" + inkscape:window-y="69" + inkscape:window-maximized="0" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid1068" /> + </sodipodi:namedview> + <path + id="path2" + d="m 11.943359,5.4550781 c 0.12781,0 0.255582,0.04855 0.353516,0.1464844 0.195869,0.1958686 0.195869,0.5111627 0,0.7070313 L 7.3457031,11.257812 c -0.1958686,0.19587 -0.5111626,0.19587 -0.7070312,0 L 3.8105469,8.4296875 c -0.1958686,-0.1958686 -0.1958686,-0.5111627 0,-0.7070313 0.1958686,-0.1958685 0.5111626,-0.1958685 0.7070312,0 L 6.9921875,10.197266 11.587891,5.6015625 c 0.09793,-0.097934 0.227659,-0.1464844 0.355468,-0.1464844 z" + sodipodi:nodetypes="sscccsssccs" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-checked-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-checked-symbolic@2.svg new file mode 100644 index 0000000..a44f5c9 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-checked-symbolic@2.svg @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="32" + height="32" + version="1.1" + viewBox="0 0 32 32" + id="svg4" + sodipodi:docname="small-checkbox-checked-symbolic@2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:snap-global="false" + inkscape:zoom="7.910757" + inkscape:cx="17.191781" + inkscape:cy="29.074335" + inkscape:window-width="1486" + inkscape:window-height="974" + inkscape:window-x="128" + inkscape:window-y="69" + inkscape:window-maximized="0" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid1068" /> + </sodipodi:namedview> + <path + id="path2" + d="m 23.886718,10.910156 c 0.25562,0 0.511164,0.0971 0.707032,0.292969 0.391738,0.391737 0.391738,1.022325 0,1.414063 l -9.902344,9.898436 c -0.391737,0.39174 -1.022325,0.39174 -1.414062,0 L 7.6210938,16.859375 c -0.3917372,-0.391737 -0.3917372,-1.022325 0,-1.414063 0.3917372,-0.391737 1.0223252,-0.391737 1.4140624,0 l 4.9492188,4.94922 9.191407,-9.191407 c 0.19586,-0.195868 0.455318,-0.292969 0.710936,-0.292969 z" + sodipodi:nodetypes="sscccsssccs" + style="stroke-width:2" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-mixed-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-mixed-symbolic.svg new file mode 100644 index 0000000..d621934 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-mixed-symbolic.svg @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16" + height="16" + version="1.1" + viewBox="0 0 16 16" + id="svg4" + sodipodi:docname="small-checkbox-mixed-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="22.375" + inkscape:cx="7.150838" + inkscape:cy="13.810056" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid967" /> + </sodipodi:namedview> + <path + id="path2" + d="m 4.5,8 h 7 C 11.777,8 12,8.223 12,8.5 12,8.777 11.777,9 11.5,9 h -7 C 4.223,9 4,8.777 4,8.5 4,8.223 4.223,8 4.5,8 Z" + sodipodi:nodetypes="sssssss" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-mixed-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-mixed-symbolic@2.svg new file mode 100644 index 0000000..91c7006 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/small-checkbox-mixed-symbolic@2.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="32" + height="32" + version="1.1" + viewBox="0 0 32 32" + id="svg4" + sodipodi:docname="small-checkbox-mixed-symbolic@2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="11.1875" + inkscape:cx="5.5418994" + inkscape:cy="19.843575" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid967" /> + </sodipodi:namedview> + <path + id="path2" + d="m 9,16 h 14 c 0.554,0 1,0.446 1,1 0,0.554 -0.446,1 -1,1 H 9 C 8.446,18 8,17.554 8,17 8,16.446 8.446,16 9,16 Z" + sodipodi:nodetypes="sssssss" + style="stroke-width:2" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-checked-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-checked-symbolic.svg new file mode 100644 index 0000000..f2c9cf9 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-checked-symbolic.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16" + height="16" + version="1.1" + viewBox="0 0 16 16" + id="svg4" + sodipodi:docname="small-radio-checked-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="22.375" + inkscape:cx="8.5363128" + inkscape:cy="11.486034" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" /> + <path + id="path2" + d="m 8,6 c 1.1045695,0 2,0.8954305 2,2 0,1.1045695 -0.8954305,2 -2,2 C 6.8954305,10 6,9.1045695 6,8 6,6.8954305 6.8954305,6 8,6 Z" + sodipodi:nodetypes="sssss" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-checked-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-checked-symbolic@2.svg new file mode 100644 index 0000000..a06db4c --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-checked-symbolic@2.svg @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="32" + height="32" + version="1.1" + viewBox="0 0 32 32" + id="svg4" + sodipodi:docname="small-radio-checked-symbolic@2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="22.375" + inkscape:cx="8.5363128" + inkscape:cy="11.486034" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" /> + <path + id="path2" + d="m 16,12 c 2.209139,0 4,1.790861 4,4 0,2.209139 -1.790861,4 -4,4 -2.209139,0 -4,-1.790861 -4,-4 0,-2.209139 1.790861,-4 4,-4 z" + sodipodi:nodetypes="sssss" + style="stroke-width:2" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-mixed-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-mixed-symbolic.svg new file mode 100644 index 0000000..d621934 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-mixed-symbolic.svg @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16" + height="16" + version="1.1" + viewBox="0 0 16 16" + id="svg4" + sodipodi:docname="small-checkbox-mixed-symbolic.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="22.375" + inkscape:cx="7.150838" + inkscape:cy="13.810056" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid967" /> + </sodipodi:namedview> + <path + id="path2" + d="m 4.5,8 h 7 C 11.777,8 12,8.223 12,8.5 12,8.777 11.777,9 11.5,9 h -7 C 4.223,9 4,8.777 4,8.5 4,8.223 4.223,8 4.5,8 Z" + sodipodi:nodetypes="sssssss" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-mixed-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-mixed-symbolic@2.svg new file mode 100644 index 0000000..91c7006 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/small-radio-mixed-symbolic@2.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="32" + height="32" + version="1.1" + viewBox="0 0 32 32" + id="svg4" + sodipodi:docname="small-checkbox-mixed-symbolic@2.svg" + inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs8" /> + <sodipodi:namedview + id="namedview6" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="11.1875" + inkscape:cx="5.5418994" + inkscape:cy="19.843575" + inkscape:window-width="1920" + inkscape:window-height="1012" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:current-layer="svg4"> + <inkscape:grid + type="xygrid" + id="grid967" /> + </sodipodi:namedview> + <path + id="path2" + d="m 9,16 h 14 c 0.554,0 1,0.446 1,1 0,0.554 -0.446,1 -1,1 H 9 C 8.446,18 8,17.554 8,17 8,16.446 8.446,16 9,16 Z" + sodipodi:nodetypes="sssssss" + style="stroke-width:2" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/unmaximize-symbolic.svg b/home-manager/general/themes/Catppuccin/assets/scalable/unmaximize-symbolic.svg new file mode 100644 index 0000000..492d47a --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/unmaximize-symbolic.svg @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16" + height="16" + viewBox="0 0 16 16" + version="1.1" + sodipodi:docname="unmaximize.svg" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + id="svg831" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs6" /> + <sodipodi:namedview + pagecolor="#424242" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1440" + inkscape:window-height="742" + id="namedview6" + showgrid="true" + inkscape:zoom="29.580633" + inkscape:cx="2.095966" + inkscape:cy="10.006547" + inkscape:window-x="0" + inkscape:window-y="32" + inkscape:window-maximized="1" + inkscape:pagecheckerboard="0" + inkscape:current-layer="svg831" /> + <path + d="M 6,6 C 4.892,6 4,6.892 4,8 v 2 c 0,1.108 0.892,2 2,2 h 2 c 1.108,0 2,-0.892 2,-2 V 8 C 10,6.892 9.108,6 8,6 Z m 0,1 h 2 c 0.554,0 1,0.446 1,1 v 2 c 0,0.554 -0.446,1 -1,1 H 6 C 5.446,11 5,10.554 5,10 V 8 C 5,7.446 5.446,7 6,7 Z" + id="path2896" + style="fill:#ffffff" /> + <path + d="M 8,4 C 6.892,4 6,4.892 6,6 H 7 C 7,5.446 7.446,5 8,5 h 2 c 0.554,0 1,0.446 1,1 v 2 c 0,0.554 -0.446,1 -1,1 v 1 c 1.108,0 2,-0.892 2,-2 V 6 C 12,4.892 11.108,4 10,4 Z" + opacity="0.35" + id="path2898" + style="fill:#ffffff" /> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scalable/unmaximize-symbolic@2.svg b/home-manager/general/themes/Catppuccin/assets/scalable/unmaximize-symbolic@2.svg new file mode 100644 index 0000000..85f4f3a --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scalable/unmaximize-symbolic@2.svg @@ -0,0 +1,4 @@ +<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> + <path d="m12 12c-2.216 0-4 1.784-4 4v4c0 2.216 1.784 4 4 4h4c2.216 0 4-1.784 4-4v-4c0-2.216-1.784-4-4-4zm0 2h4c1.108 0 2 0.892 2 2v4c0 1.108-0.892 2-2 2h-4c-1.108 0-2-0.892-2-2v-4c0-1.108 0.892-2 2-2z" fill="#ffffff" stroke-width="2"/> + <path d="m16 8c-2.216 0-4 1.784-4 4h2c0-1.108 0.892-2 2-2h4c1.108 0 2 0.892 2 2v4c0 1.108-0.892 2-2 2v2c2.216 0 4-1.784 4-4v-4c0-2.216-1.784-4-4-4z" fill="#ffffff" opacity=".35" stroke-width="2"/> +</svg> diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-dark.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-dark.png Binary files differnew file mode 100644 index 0000000..b2b92ef --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-dark@2.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-dark@2.png Binary files differnew file mode 100644 index 0000000..0e39be3 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled-dark.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled-dark.png Binary files differnew file mode 100644 index 0000000..391164d --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled-dark@2.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled-dark@2.png Binary files differnew file mode 100644 index 0000000..0e141b4 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled.png Binary files differnew file mode 100644 index 0000000..8ec0d53 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled@2.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled@2.png Binary files differnew file mode 100644 index 0000000..532ac30 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider-disabled@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider.png Binary files differnew file mode 100644 index 0000000..cb00cb8 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider@2.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider@2.png Binary files differnew file mode 100644 index 0000000..54f5b08 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-after-slider@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-dark.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-dark.png Binary files differnew file mode 100644 index 0000000..015821d --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-dark@2.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-dark@2.png Binary files differnew file mode 100644 index 0000000..cf7c20f --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled-dark.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled-dark.png Binary files differnew file mode 100644 index 0000000..735e3e8 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled-dark@2.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled-dark@2.png Binary files differnew file mode 100644 index 0000000..35b0aec --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled.png Binary files differnew file mode 100644 index 0000000..04785e3 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled@2.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled@2.png Binary files differnew file mode 100644 index 0000000..936a8c4 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider-disabled@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider.png Binary files differnew file mode 100644 index 0000000..1fe2485 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider@2.png b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider@2.png Binary files differnew file mode 100644 index 0000000..a96a0a7 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-horz-marks-before-slider@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-dark.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-dark.png Binary files differnew file mode 100644 index 0000000..d3debe8 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-dark@2.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-dark@2.png Binary files differnew file mode 100644 index 0000000..6caf95e --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled-dark.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled-dark.png Binary files differnew file mode 100644 index 0000000..4532913 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled-dark@2.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled-dark@2.png Binary files differnew file mode 100644 index 0000000..d6042e6 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled.png Binary files differnew file mode 100644 index 0000000..70eed02 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled@2.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled@2.png Binary files differnew file mode 100644 index 0000000..885d156 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider-disabled@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider.png Binary files differnew file mode 100644 index 0000000..a3cc4c0 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider@2.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider@2.png Binary files differnew file mode 100644 index 0000000..957eba3 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-after-slider@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-dark.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-dark.png Binary files differnew file mode 100644 index 0000000..2f21b00 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-dark@2.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-dark@2.png Binary files differnew file mode 100644 index 0000000..1d228e7 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled-dark.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled-dark.png Binary files differnew file mode 100644 index 0000000..eb5123d --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled-dark@2.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled-dark@2.png Binary files differnew file mode 100644 index 0000000..e6c0698 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled.png Binary files differnew file mode 100644 index 0000000..7e3487d --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled@2.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled@2.png Binary files differnew file mode 100644 index 0000000..ab5af6f --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider-disabled@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider.png Binary files differnew file mode 100644 index 0000000..8578df7 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider.png diff --git a/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider@2.png b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider@2.png Binary files differnew file mode 100644 index 0000000..e2f8b24 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/scale-vert-marks-before-slider@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked-dark.png b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked-dark.png Binary files differnew file mode 100644 index 0000000..c93dabf --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked-dark@2.png b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked-dark@2.png Binary files differnew file mode 100644 index 0000000..d796ce8 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked.png b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked.png Binary files differnew file mode 100644 index 0000000..0546a5e --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked.png diff --git a/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked@2.png b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked@2.png Binary files differnew file mode 100644 index 0000000..92dde69 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-checked@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked-dark.png b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked-dark.png Binary files differnew file mode 100644 index 0000000..f6b914e --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked-dark.png diff --git a/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked-dark@2.png b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked-dark@2.png Binary files differnew file mode 100644 index 0000000..29ecf2b --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked-dark@2.png diff --git a/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked.png b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked.png Binary files differnew file mode 100644 index 0000000..40ff92e --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked.png diff --git a/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked@2.png b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked@2.png Binary files differnew file mode 100644 index 0000000..8e87ea7 --- /dev/null +++ b/home-manager/general/themes/Catppuccin/assets/selectionmode-checkbox-unchecked@2.png diff --git a/home-manager/general/themes/Catppuccin/gtk-dark.css b/home-manager/general/themes/Catppuccin/gtk-dark.css new file mode 100644 index 0000000..c933a2f --- /dev/null +++ b/home-manager/general/themes/Catppuccin/gtk-dark.css @@ -0,0 +1,8024 @@ +@keyframes ripple { + to { + background-size: 1000% 1000%; + } +} + +@keyframes ripple-on-slider { + to { + background-size: auto, 1000% 1000%; + } +} + +@keyframes ripple-on-headerbar { + from { + background-image: radial-gradient(circle, #eebebe 0%, transparent 0%); + } + to { + background-image: radial-gradient(circle, #eebebe 100%, transparent 100%); + } +} + +/*************** + * Base States * + ***************/ +.background { + background-color: #303446; + color: #FFFFFF; +} + +#desktopwindow.background { + background-color: transparent; +} + +dnd { + color: #FFFFFF; +} + +.normal-icons { + -gtk-icon-size: 16px; +} + +.large-icons { + -gtk-icon-size: 32px; +} + +.aboutdialog .large-icons { + -gtk-icon-size: 128px; +} + +spinner:disabled, +arrow:disabled, +scrollbar:disabled, +check:disabled, +radio:disabled, +treeview.expander:disabled { + -gtk-icon-filter: opacity(0.5); +} + +iconview, .view { + background-color: #303446; + color: #FFFFFF; +} + +iconview:disabled, .view:disabled { + color: rgba(255, 255, 255, 0.5); +} + +iconview:selected, .view:selected { + color: #FFFFFF; +} + +textview text { + background-color: #303446; +} + +textview border { + background-color: #232634; + color: rgba(255, 255, 255, 0.7); +} + +iconview:hover, iconview:selected { + border-radius: 3px; +} + +rubberband, .content-view rubberband, .content-view columnview.view > rubberband, +.content-view treeview.view > rubberband, .content-view .rubberband, columnview.view > rubberband, .content-view columnview.view > .rubberband, +treeview.view > rubberband, +.content-view treeview.view > .rubberband, gridview > rubberband, flowbox > rubberband { + border: 1px solid #eebebe; + background-color: rgba(238, 190, 190, 0.3); +} + +flowbox > flowboxchild { + padding: 4px; + border-radius: 6px; +} + +.content-view .tile:selected { + background-color: transparent; +} + +gridview > child { + padding: 3px; +} + +gridview > child:selected { + outline-color: alpha(currentColor, 0.06); +} + +gridview > child box { + border-spacing: 8px; + margin: 12px; +} + +coverflow cover { + color: #FFFFFF; + background-color: #303446; + border: 1px solid black; +} + +label.separator { + color: rgba(255, 255, 255, 0.7); +} + +label:disabled { + opacity: 1; + color: rgba(255, 255, 255, 0.5); +} + +headerbar label:disabled, tab label:disabled, button label:disabled { + color: inherit; + opacity: 1; +} + +label.osd { + border-radius: 6px; + background-color: rgba(29, 31, 43, 0.9); + color: #FFFFFF; +} + +.dim-label, row.expander image.expander-row-arrow, row label.subtitle { + color: rgba(255, 255, 255, 0.7); + opacity: 1; +} + +.accent { + color: #eebebe; +} + +.success { + color: #66BB6A; +} + +.warning { + color: #FBC02D; +} + +.error { + color: #F44336; +} + +.large-title { + font-weight: 300; + font-size: 24pt; +} + +.title-1 { + font-weight: 800; + font-size: 20pt; +} + +.title-2 { + font-weight: 800; + font-size: 15pt; +} + +.title-3 { + font-weight: 700; + font-size: 15pt; +} + +.title-4 { + font-weight: 700; + font-size: 13pt; +} + +.heading { + font-weight: 700; + font-size: 11pt; +} + +.body { + font-weight: 400; + font-size: 11pt; +} + +.caption { + font-weight: 400; + font-size: 9pt; +} + +.caption-heading { + font-weight: 700; + font-size: 9pt; +} + +window.assistant .sidebar { + padding: 4px 0; +} + +window.assistant .sidebar label { + min-height: 36px; + padding: 0 12px; + color: rgba(255, 255, 255, 0.5); + font-weight: 500; +} + +window.assistant .sidebar label.highlight { + color: #FFFFFF; +} + +.osd .scale-popup > arrow, +.osd .scale-popup > contents, .osd popover > arrow, +.osd popover > contents, popover.touch-selection > arrow, +popover.touch-selection > contents, popover.magnifier > arrow, +popover.magnifier > contents, .osd { + color: #FFFFFF; + background-color: #303446; + background-clip: padding-box; + border-radius: 6px; + border: none; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15), 0 3px 3px 0 rgba(0, 0, 0, 0.18), 0 3px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); +} + +.osd { + padding: 6px; + margin: 6px; +} + +.osd.circular { + border-radius: 9999px; +} + +/********************* + * Spinner Animation * + *********************/ +@keyframes spin { + to { + transform: rotate(1turn); + } +} + +spinner { + background: none; + opacity: 0; + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); +} + +spinner:checked { + opacity: 1; + animation: spin 1s linear infinite; +} + +spinner:checked:disabled { + opacity: 0.5; +} + +/**************** + * Text Entries * + ****************/ + +entry headerbar popover.background entry, +headerbar popover.background entry entry, +entry { + min-height: 36px; + padding: 0 8px; + border-spacing: 6px; + border-radius: 6px; + caret-color: currentColor; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.7); + outline: 0 solid transparent; + outline-offset: 2px; +} + + +entry headerbar popover.background entry:focus-within, +headerbar popover.background entry entry:focus-within, +entry:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(255, 255, 255, 0.08); + box-shadow: inset 0 0 0 2px transparent; + color: #FFFFFF; + outline: 2px solid #eebebe; + outline-offset: -2px; +} + + +entry headerbar popover.background entry:drop(active), +headerbar popover.background entry entry:drop(active), +entry headerbar popover.background entry:hover:not(:focus-within), +headerbar popover.background entry entry:hover:not(:focus-within), +entry:drop(active), +entry:hover:not(:focus-within) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; + outline-offset: 2px; +} + + +entry headerbar popover.background entry:disabled, +headerbar popover.background entry entry:disabled, +entry:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.5); + outline: none; +} + + +entry headerbar popover.background entry.flat:focus-within, +headerbar popover.background entry entry.flat:focus-within, +entry headerbar popover.background entry.flat:disabled, +headerbar popover.background entry entry.flat:disabled, +entry headerbar popover.background entry.flat:hover, +headerbar popover.background entry entry.flat:hover, +entry headerbar popover.background entry.flat, +headerbar popover.background entry entry.flat, +entry.flat:focus-within, +entry.flat:disabled, +entry.flat:hover, +entry.flat { + min-height: 0; + padding: 2px; + background-color: transparent; + box-shadow: none; + border-radius: 0; + outline: none; +} + + +entry headerbar popover.background entry image, +headerbar popover.background entry entry image, +entry image { + color: rgba(255, 255, 255, 0.7); +} + + +entry headerbar popover.background entry image:hover, +headerbar popover.background entry entry image:hover, +entry headerbar popover.background entry image:active, +headerbar popover.background entry entry image:active, +entry image:hover, +entry image:active { + color: #FFFFFF; +} + + +entry headerbar popover.background entry image:disabled, +headerbar popover.background entry entry image:disabled, +entry image:disabled { + color: rgba(255, 255, 255, 0.5); +} + + +entry headerbar popover.background entry image.left, +headerbar popover.background entry entry image.left, +entry image.left { + margin: 0 6px 0 2px; +} + + +entry headerbar popover.background entry image.right, +headerbar popover.background entry entry image.right, +entry image.right { + margin: 0 2px 0 6px; +} + + +entry headerbar popover.background entry undershoot.left > undershoot.left, +headerbar popover.background entry entry undershoot.left > undershoot.left, +entry undershoot.left > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + + +entry headerbar popover.background entry undershoot.right > undershoot.right, +headerbar popover.background entry entry undershoot.right > undershoot.right, +entry undershoot.right > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + + +entry headerbar popover.background entry.error, +headerbar popover.background entry entry.error, +entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(244, 67, 54, 0.1); + color: rgba(244, 67, 54, 0.75); + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.error:focus-within, +headerbar popover.background entry entry.error:focus-within, +entry.error:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(244, 67, 54, 0.1); + box-shadow: inset 0 0 0 2px transparent; + color: #F44336; + outline: 2px solid #F44336; + outline-offset: -2px; + outline: none; +} + + +entry headerbar popover.background entry.error:drop(active), +headerbar popover.background entry entry.error:drop(active), +entry headerbar popover.background entry.error:hover:not(:focus-within), +headerbar popover.background entry entry.error:hover:not(:focus-within), +entry.error:drop(active), +entry.error:hover:not(:focus-within) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #F44336; + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.error:disabled, +headerbar popover.background entry entry.error:disabled, +entry.error:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(244, 67, 54, 0.1); + color: rgba(244, 67, 54, 0.35); + outline: none; + outline: none; +} + + +entry headerbar popover.background entry.error > text > selection, +headerbar popover.background entry entry.error > text > selection, +entry.error > text > selection { + background-color: rgba(244, 67, 54, 0.25); + color: #F44336; +} + + +entry headerbar popover.background entry.error image, +headerbar popover.background entry entry.error image, +entry.error image { + color: rgba(244, 67, 54, 0.75); +} + + +entry headerbar popover.background entry.error image:hover, +headerbar popover.background entry entry.error image:hover, +entry headerbar popover.background entry.error image:active, +headerbar popover.background entry entry.error image:active, +entry.error image:hover, +entry.error image:active { + color: #F44336; +} + + +entry headerbar popover.background entry.error image:disabled, +headerbar popover.background entry entry.error image:disabled, +entry.error image:disabled { + color: rgba(244, 67, 54, 0.35); +} + + +entry headerbar popover.background entry.warning, +headerbar popover.background entry entry.warning, +entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(251, 192, 45, 0.1); + color: rgba(251, 192, 45, 0.75); + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.warning:focus-within, +headerbar popover.background entry entry.warning:focus-within, +entry.warning:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(251, 192, 45, 0.1); + box-shadow: inset 0 0 0 2px transparent; + color: #FBC02D; + outline: 2px solid #FBC02D; + outline-offset: -2px; + outline: none; +} + + +entry headerbar popover.background entry.warning:drop(active), +headerbar popover.background entry entry.warning:drop(active), +entry headerbar popover.background entry.warning:hover:not(:focus-within), +headerbar popover.background entry entry.warning:hover:not(:focus-within), +entry.warning:drop(active), +entry.warning:hover:not(:focus-within) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #FBC02D; + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.warning:disabled, +headerbar popover.background entry entry.warning:disabled, +entry.warning:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(251, 192, 45, 0.1); + color: rgba(251, 192, 45, 0.35); + outline: none; + outline: none; +} + + +entry headerbar popover.background entry.warning > text > selection, +headerbar popover.background entry entry.warning > text > selection, +entry.warning > text > selection { + background-color: rgba(251, 192, 45, 0.25); + color: #FBC02D; +} + + +entry headerbar popover.background entry.warning image, +headerbar popover.background entry entry.warning image, +entry.warning image { + color: rgba(251, 192, 45, 0.75); +} + + +entry headerbar popover.background entry.warning image:hover, +headerbar popover.background entry entry.warning image:hover, +entry headerbar popover.background entry.warning image:active, +headerbar popover.background entry entry.warning image:active, +entry.warning image:hover, +entry.warning image:active { + color: #FBC02D; +} + + +entry headerbar popover.background entry.warning image:disabled, +headerbar popover.background entry entry.warning image:disabled, +entry.warning image:disabled { + color: rgba(251, 192, 45, 0.35); +} + + +entry headerbar popover.background entry.success, +headerbar popover.background entry entry.success, +entry.success { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(102, 187, 106, 0.1); + color: rgba(102, 187, 106, 0.75); + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.success:focus-within, +headerbar popover.background entry entry.success:focus-within, +entry.success:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(102, 187, 106, 0.1); + box-shadow: inset 0 0 0 2px transparent; + color: #66BB6A; + outline: 2px solid #66BB6A; + outline-offset: -2px; + outline: none; +} + + +entry headerbar popover.background entry.success:drop(active), +headerbar popover.background entry entry.success:drop(active), +entry headerbar popover.background entry.success:hover:not(:focus-within), +headerbar popover.background entry entry.success:hover:not(:focus-within), +entry.success:drop(active), +entry.success:hover:not(:focus-within) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #66BB6A; + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.success:disabled, +headerbar popover.background entry entry.success:disabled, +entry.success:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(102, 187, 106, 0.1); + color: rgba(102, 187, 106, 0.35); + outline: none; + outline: none; +} + + +entry headerbar popover.background entry.success > text > selection, +headerbar popover.background entry entry.success > text > selection, +entry.success > text > selection { + background-color: rgba(102, 187, 106, 0.25); + color: #66BB6A; +} + + +entry headerbar popover.background entry.success image, +headerbar popover.background entry entry.success image, +entry.success image { + color: rgba(102, 187, 106, 0.75); +} + + +entry headerbar popover.background entry.success image:hover, +headerbar popover.background entry entry.success image:hover, +entry headerbar popover.background entry.success image:active, +headerbar popover.background entry entry.success image:active, +entry.success image:hover, +entry.success image:active { + color: #66BB6A; +} + + +entry headerbar popover.background entry.success image:disabled, +headerbar popover.background entry entry.success image:disabled, +entry.success image:disabled { + color: rgba(102, 187, 106, 0.35); +} + + +entry > progress, +entry progress > trough > progress { + margin: 0 -4px; + border-bottom: 2px solid #eebebe; + background-color: transparent; +} + + +entry button.image-button { + min-height: 24px; + min-width: 24px; + padding: 0; +} + +treeview entry.flat, treeview entry { + background-color: #303446; +} + +treeview entry.flat, treeview entry.flat:focus-within, treeview entry, treeview entry:focus-within { + border-image: none; + box-shadow: none; +} + +.entry-tag { + margin: 2px; + border-radius: 9999px; + box-shadow: none; + background-color: rgba(255, 255, 255, 0.12); + color: #FFFFFF; +} + +.entry-tag:hover { + background-image: image(alpha(currentColor, 0.08)); +} + +:dir(ltr) .entry-tag { + margin-left: 4px; + margin-right: 0; + padding-left: 12px; + padding-right: 8px; +} + +:dir(rtl) .entry-tag { + margin-left: 0; + margin-right: 4px; + padding-left: 8px; + padding-right: 12px; +} + +.entry-tag.button { + box-shadow: none; + background-color: transparent; +} + +.entry-tag.button:not(:hover):not(:active) { + color: rgba(255, 255, 255, 0.7); +} + +editablelabel > stack > text { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.7); + outline: 0 solid transparent; + outline-offset: 2px; +} + +/*********** + * Buttons * + ***********/ +@keyframes needs-attention { + from { + background-image: radial-gradient(farthest-side, #eebebe 0%, rgba(238, 190, 190, 0) 0%); + } + to { + background-image: radial-gradient(farthest-side, #eebebe 95%, rgba(238, 190, 190, 0)); + } +} + +infobar.warning > revealer > box button, infobar.warning:backdrop > revealer > box button, popover.touch-selection button, popover.magnifier button, headerbar.selection-mode button:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.7); +} + +infobar.warning > revealer > box button:focus, popover.touch-selection button:focus, popover.magnifier button:focus, headerbar.selection-mode button:focus:not(.suggested-action):not(.destructive-action), infobar.warning > revealer > box button:hover, popover.touch-selection button:hover, popover.magnifier button:hover, headerbar.selection-mode button:hover:not(.suggested-action):not(.destructive-action), infobar.warning > revealer > box button:active, popover.touch-selection button:active, popover.magnifier button:active, headerbar.selection-mode button:active:not(.suggested-action):not(.destructive-action), infobar.warning > revealer > box button:checked, popover.touch-selection button:checked, popover.magnifier button:checked, headerbar.selection-mode button:checked:not(.suggested-action):not(.destructive-action) { + color: #FFFFFF; +} + +infobar.warning > revealer > box button:disabled, popover.touch-selection button:disabled, popover.magnifier button:disabled, headerbar.selection-mode button:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.32); +} + +infobar.warning > revealer > box button:checked:disabled, popover.touch-selection button:checked:disabled, popover.magnifier button:checked:disabled, headerbar.selection-mode button:checked:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.5); +} + +headerbar popover.background button:not(.suggested-action):not(.destructive-action):not(.flat), button { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(255, 255, 255, 0.08); + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + outline: 0 solid transparent; + outline-offset: 2px; + color: #FFFFFF; +} + +headerbar popover.background button:focus:not(.suggested-action):not(.destructive-action):not(.flat), button:focus { + outline: 2px solid rgba(238, 190, 190, 0.35); + outline-offset: 0; +} + +headerbar popover.background button:hover:not(.suggested-action):not(.destructive-action):not(.flat), button:hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; + -gtk-icon-filter: brightness(1.2); +} + +headerbar popover.background button.keyboard-activating:not(.suggested-action):not(.destructive-action):not(.flat), button.keyboard-activating, headerbar popover.background button:active:not(.suggested-action):not(.destructive-action):not(.flat), button:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +headerbar popover.background button:disabled:not(.suggested-action):not(.destructive-action):not(.flat), button:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + outline-color: transparent; +} + +headerbar popover.background button:checked:not(.suggested-action):not(.destructive-action):not(.flat), button:checked { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); +} + +headerbar popover.background button:checked:hover:not(.suggested-action):not(.destructive-action):not(.flat), button:checked:hover { + outline-color: transparent; + background-color: #f3d2d2; + color: rgba(0, 0, 0, 0.87); +} + +headerbar popover.background button:checked:disabled:not(.suggested-action):not(.destructive-action):not(.flat), button:checked:disabled { + outline-color: transparent; + background-color: rgba(238, 190, 190, 0.35); + color: rgba(0, 0, 0, 0.38); +} + +placessidebar row button.sidebar-button, calendar > header > button, scrollbar button, notebook > header > tabs > arrow, popover modelbutton, spinbutton > button, splitbutton.flat > button, +splitbutton.flat > menubutton > button { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1); + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + background-color: transparent; + outline: 0 solid transparent; + outline-offset: 2px; + color: rgba(255, 255, 255, 0.7); +} + +placessidebar row button.sidebar-button:focus:not(:hover):not(:active), calendar > header > button:focus:not(:hover):not(:active), scrollbar button:focus:not(:hover):not(:active), notebook > header > tabs > arrow:focus:not(:hover):not(:active), popover modelbutton:focus:not(:hover):not(:active), spinbutton > button:focus:not(:hover):not(:active), splitbutton.flat > button:focus:not(:hover):not(:active), +splitbutton.flat > menubutton > button:focus:not(:hover):not(:active) { + color: #FFFFFF; + outline: 2px solid rgba(255, 255, 255, 0.04); + outline-offset: -2px; +} + +placessidebar row button.sidebar-button:hover, calendar > header > button:hover, scrollbar button:hover, notebook > header > tabs > arrow:hover, popover modelbutton:hover, spinbutton > button:hover, splitbutton.flat > button:hover, +splitbutton.flat > menubutton > button:hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +placessidebar row button.sidebar-button:active, calendar > header > button:active, scrollbar button:active, notebook > header > tabs > arrow:active, popover modelbutton:active, spinbutton > button:active, splitbutton.flat > button:active, +splitbutton.flat > menubutton > button:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +placessidebar row button.sidebar-button:disabled, calendar > header > button:disabled, scrollbar button:disabled, notebook > header > tabs > arrow:disabled, popover modelbutton:disabled, spinbutton > button:disabled, splitbutton.flat > button:disabled, +splitbutton.flat > menubutton > button:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +filechooser #pathbarbox > stack > box > button, window.messagedialog .response-area > box > button, window.dialog.message .dialog-action-area > button, .app-notification button, headerbar button:not(.suggested-action):not(.destructive-action), .toolbar button, dropdown > .linked:not(.vertical) > button:not(:only-child), +combobox > .linked:not(.vertical) > button:not(:only-child), splitbutton.suggested-action > button, splitbutton.suggested-action > menubutton > button, splitbutton.destructive-action > button, splitbutton.destructive-action > menubutton > button, splitbutton.opaque > button, splitbutton.opaque > menubutton > button, menubutton.suggested-action > button, menubutton.destructive-action > button, menubutton.opaque > button, menubutton.flat > button, button.flat { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1); + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + background-color: transparent; + outline: 0 solid transparent; + outline-offset: 2px; + color: rgba(255, 255, 255, 0.7); +} + +filechooser #pathbarbox > stack > box > button:focus:not(:hover):not(:active), window.messagedialog .response-area > box > button:focus:not(:hover):not(:active), window.dialog.message .dialog-action-area > button:focus:not(:hover):not(:active), .app-notification button:focus:not(:hover):not(:active), headerbar button:focus:not(:hover):not(:active):not(.suggested-action):not(.destructive-action), .toolbar button:focus:not(:hover):not(:active), dropdown > .linked:not(.vertical) > button:focus:not(:hover):not(:active):not(:only-child), +combobox > .linked:not(.vertical) > button:focus:not(:hover):not(:active):not(:only-child), splitbutton.suggested-action > button:focus:not(:hover):not(:active), splitbutton.suggested-action > menubutton > button:focus:not(:hover):not(:active), splitbutton.destructive-action > button:focus:not(:hover):not(:active), splitbutton.destructive-action > menubutton > button:focus:not(:hover):not(:active), splitbutton.opaque > button:focus:not(:hover):not(:active), splitbutton.opaque > menubutton > button:focus:not(:hover):not(:active), menubutton.suggested-action > button:focus:not(:hover):not(:active), menubutton.destructive-action > button:focus:not(:hover):not(:active), menubutton.opaque > button:focus:not(:hover):not(:active), menubutton.flat > button:focus:not(:hover):not(:active), button.flat:focus:not(:hover):not(:active) { + color: #FFFFFF; + outline: 2px solid rgba(255, 255, 255, 0.04); + outline-offset: -2px; +} + +filechooser #pathbarbox > stack > box > button:hover, window.messagedialog .response-area > box > button:hover, window.dialog.message .dialog-action-area > button:hover, .app-notification button:hover, headerbar button:hover:not(.suggested-action):not(.destructive-action), .toolbar button:hover, dropdown > .linked:not(.vertical) > button:hover:not(:only-child), +combobox > .linked:not(.vertical) > button:hover:not(:only-child), splitbutton.suggested-action > button:hover, splitbutton.suggested-action > menubutton > button:hover, splitbutton.destructive-action > button:hover, splitbutton.destructive-action > menubutton > button:hover, splitbutton.opaque > button:hover, splitbutton.opaque > menubutton > button:hover, menubutton.suggested-action > button:hover, menubutton.destructive-action > button:hover, menubutton.opaque > button:hover, menubutton.flat > button:hover, button.flat:hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +filechooser #pathbarbox > stack > box > button:active, window.messagedialog .response-area > box > button:active, window.dialog.message .dialog-action-area > button:active, .app-notification button:active, headerbar button:active:not(.suggested-action):not(.destructive-action), .toolbar button:active, dropdown > .linked:not(.vertical) > button:active:not(:only-child), +combobox > .linked:not(.vertical) > button:active:not(:only-child), splitbutton.suggested-action > button:active, splitbutton.suggested-action > menubutton > button:active, splitbutton.destructive-action > button:active, splitbutton.destructive-action > menubutton > button:active, splitbutton.opaque > button:active, splitbutton.opaque > menubutton > button:active, menubutton.suggested-action > button:active, menubutton.destructive-action > button:active, menubutton.opaque > button:active, menubutton.flat > button:active, button.flat:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +filechooser #pathbarbox > stack > box > button:disabled, window.messagedialog .response-area > box > button:disabled, window.dialog.message .dialog-action-area > button:disabled, .app-notification button:disabled, headerbar button:disabled:not(.suggested-action):not(.destructive-action), .toolbar button:disabled, dropdown > .linked:not(.vertical) > button:disabled:not(:only-child), +combobox > .linked:not(.vertical) > button:disabled:not(:only-child), splitbutton.suggested-action > button:disabled, splitbutton.suggested-action > menubutton > button:disabled, splitbutton.destructive-action > button:disabled, splitbutton.destructive-action > menubutton > button:disabled, splitbutton.opaque > button:disabled, splitbutton.opaque > menubutton > button:disabled, menubutton.suggested-action > button:disabled, menubutton.destructive-action > button:disabled, menubutton.opaque > button:disabled, menubutton.flat > button:disabled, button.flat:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +filechooser #pathbarbox > stack > box > button:checked, window.messagedialog .response-area > box > button:checked, window.dialog.message .dialog-action-area > button:checked, .app-notification button:checked, headerbar button:checked:not(.suggested-action):not(.destructive-action), .toolbar button:checked, dropdown > .linked:not(.vertical) > button:checked:not(:only-child), +combobox > .linked:not(.vertical) > button:checked:not(:only-child), splitbutton.suggested-action > button:checked, splitbutton.suggested-action > menubutton > button:checked, splitbutton.destructive-action > button:checked, splitbutton.destructive-action > menubutton > button:checked, splitbutton.opaque > button:checked, splitbutton.opaque > menubutton > button:checked, menubutton.suggested-action > button:checked, menubutton.destructive-action > button:checked, menubutton.opaque > button:checked, menubutton.flat > button:checked, button.flat:checked { + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + +filechooser #pathbarbox > stack > box > button:checked:disabled, window.messagedialog .response-area > box > button:checked:disabled, window.dialog.message .dialog-action-area > button:checked:disabled, .app-notification button:checked:disabled, headerbar button:checked:disabled:not(.suggested-action):not(.destructive-action), .toolbar button:checked:disabled, dropdown > .linked:not(.vertical) > button:checked:disabled:not(:only-child), +combobox > .linked:not(.vertical) > button:checked:disabled:not(:only-child), splitbutton.suggested-action > button:checked:disabled, splitbutton.suggested-action > menubutton > button:checked:disabled, splitbutton.destructive-action > button:checked:disabled, splitbutton.destructive-action > menubutton > button:checked:disabled, splitbutton.opaque > button:checked:disabled, splitbutton.opaque > menubutton > button:checked:disabled, menubutton.suggested-action > button:checked:disabled, menubutton.destructive-action > button:checked:disabled, menubutton.opaque > button:checked:disabled, menubutton.flat > button:checked:disabled, button.flat:checked:disabled { + background-color: alpha(currentColor, 0.1); + color: rgba(255, 255, 255, 0.5); +} + +button.opaque { + box-shadow: none; +} + +.osd button.opaque:focus:focus-visible { + outline-color: rgba(255, 255, 255, 0.15); +} + +button.opaque:hover { + background-image: image(alpha(currentColor, 0.1)); +} + +button.keyboard-activating.opaque, button.opaque:active { + background-image: image(rgba(0, 0, 0, 0.2)); +} + +button.opaque:checked { + background-image: image(rgba(0, 0, 0, 0.15)); +} + +button.opaque:checked:hover { + background-image: image(rgba(0, 0, 0, 0.05)); +} + +button.opaque:checked.keyboard-activating, button.opaque:checked:active { + background-image: image(rgba(0, 0, 0, 0.3)); +} + +.nautilus-window .floating-bar button, placessidebar row button.sidebar-button, notebook > header > tabs > tab button.flat, popover.menu box.circular-buttons button.circular.image-button.model, spinbutton > button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 9999px; +} + +button { + min-height: 24px; + min-width: 16px; + padding: 6px 10px; + border-radius: 6px; + font-weight: 500; +} + +button:drop(active) { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +button separator { + margin: 4px 1px; +} + +button.opaque { + background-color: #595d6b; + color: #FFFFFF; +} + +button.text-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; +} + +button.image-button { + min-width: 24px; + padding: 6px; +} + +button.text-button.image-button, button.image-text-button { + min-width: 24px; + padding: 6px; + border-radius: 6px; +} + +button.text-button.image-button > box, +button.text-button.image-button > box > box, button.image-text-button > box, +button.image-text-button > box > box { + border-spacing: 4px; +} + +button.text-button.image-button > box > label, +button.text-button.image-button > box > box > label, button.image-text-button > box > label, +button.image-text-button > box > box > label { + padding-left: 2px; + padding-right: 2px; +} + +button.text-button.image-button label:first-child, button.image-text-button label:first-child { + margin-left: 10px; +} + +button.text-button.image-button label:last-child, button.image-text-button label:last-child { + margin-right: 10px; +} + +button.text-button.image-button.flat label:first-child, button.image-text-button.flat label:first-child { + margin-left: 6px; +} + +button.text-button.image-button.flat label:last-child, button.image-text-button.flat label:last-child { + margin-right: 6px; +} + +button.text-button.image-button image:not(:only-child), button.image-text-button image:not(:only-child) { + margin: 0 4px; +} + +button.arrow-button { + padding-left: 9px; + padding-right: 9px; +} + +button.arrow-button > box { + border-spacing: 4px; +} + +button.arrow-button.text-button { + padding-left: 16px; + padding-right: 16px; +} + +button.arrow-button.text-button > box { + border-spacing: 6px; +} + +menubutton.pill > button, button.pill { + padding: 9px 30px; + border-radius: 9999px; +} + +button.card { + background-color: rgba(255, 255, 255, 0.04); + background-clip: padding-box; + font-weight: inherit; + border: 1px solid rgba(255, 255, 255, 0.12); + background-clip: border-box; +} + +button.card:hover { + background-image: none; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +button.card.keyboard-activating, button.card:active { + background-image: none; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +button.card:checked { + background-image: none; + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); + border-color: #eebebe; +} + +button.card:checked:hover { + background-image: none; + outline-color: transparent; + background-color: #f3d2d2; + color: rgba(0, 0, 0, 0.87); +} + +button.card:checked:disabled { + outline-color: transparent; + background-color: rgba(238, 190, 190, 0.35); + color: rgba(0, 0, 0, 0.38); +} + +button.card:checked.keyboard-activating, button.card:checked:active { + background-image: none; +} + +button.card:checked.has-open-popup { + background-image: none; +} + +button.card:drop(active) { + color: #FF7043; + box-shadow: inset 0 0 0 1px #FF7043; +} + +.linked:not(.vertical) > button:focus, .linked.vertical > button:focus { + box-shadow: none; + outline: none; +} + +.linked:not(.vertical) > button.flat:not(:only-child), .linked.vertical > button.flat:not(:only-child) { + background-color: alpha(currentColor, 0.05); +} + +.linked:not(.vertical) > button.flat:focus, .linked.vertical > button.flat:focus { + box-shadow: none; + outline: none; +} + +.linked:not(.vertical) > menubutton > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +button.osd { + min-width: 24px; + min-width: 24px; + padding: 6px; + box-shadow: none; + background-color: rgba(0, 0, 0, 0.35); + color: white; +} + +button.osd > image { + padding: 0; +} + +button.osd.remove-button { + padding: 0; +} + +button.osd:focus { + outline-color: transparent; +} + +button.osd:hover { + background-color: rgba(0, 0, 0, 0.45); + color: white; +} + +button.osd:active { + background-color: rgba(0, 0, 0, 0.65); + color: white; +} + +button.osd:disabled { + background-color: rgba(0, 0, 0, 0.15); + color: rgba(255, 255, 255, 0.35); +} + +button.suggested-action { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); + box-shadow: none; +} + +button.suggested-action:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + outline-color: transparent; +} + +button.suggested-action:hover { + box-shadow: inset 0 0 0 9999px transparent, 0 2px 2.4px -1px rgba(238, 190, 190, 0.2), 0 4px 3px 0 rgba(238, 190, 190, 0.14), 0 1px 6px 0 rgba(238, 190, 190, 0.12); +} + +button.suggested-action:checked { + background-color: rgba(179, 143, 143, 0.961); +} + +button.suggested-action:checked:hover { + box-shadow: inset 0 0 0 9999px transparent, 0 3px 3px -3px rgba(238, 190, 190, 0.3), 0 2px 3px -1px rgba(238, 190, 190, 0.24), 0 2px 5px 0 rgba(238, 190, 190, 0.12); +} + +button.suggested-action:focus { + box-shadow: 0 0 0 2px rgba(238, 190, 190, 0.35); +} + +button.suggested-action.flat { + background-color: transparent; + color: #eebebe; +} + +button.suggested-action.flat:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +button.suggested-action.flat:checked { + background-color: rgba(238, 190, 190, 0.3); +} + +button.destructive-action { + background-color: #F44336; + color: #FFFFFF; + box-shadow: none; +} + +button.destructive-action:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + outline-color: transparent; +} + +button.destructive-action:hover { + box-shadow: inset 0 0 0 9999px transparent, 0 2px 2.4px -1px rgba(244, 67, 54, 0.2), 0 4px 3px 0 rgba(244, 67, 54, 0.14), 0 1px 6px 0 rgba(244, 67, 54, 0.12); +} + +button.destructive-action:checked { + background-color: #f77b72; +} + +button.destructive-action:checked:hover { + box-shadow: inset 0 0 0 9999px transparent, 0 3px 3px -3px rgba(244, 67, 54, 0.3), 0 2px 3px -1px rgba(244, 67, 54, 0.24), 0 2px 5px 0 rgba(244, 67, 54, 0.12); +} + +button.destructive-action:focus { + box-shadow: 0 0 0 2px rgba(244, 67, 54, 0.35); +} + +button.destructive-action.flat { + background-color: transparent; + color: #F44336; +} + +button.destructive-action.flat:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +button.destructive-action.flat:checked { + background-color: rgba(244, 67, 54, 0.3); +} + +stackswitcher > button > label { + margin: 0 -6px; + padding: 0 6px; +} + +stackswitcher > button > image { + margin: -3px -6px; + padding: 3px 6px; +} + +stackswitcher > button.needs-attention:checked > label, +stackswitcher > button.needs-attention:checked > image { + animation: none; + background-image: none; +} + +button.font > box, button.file > box { + border-spacing: 6px; +} + +button.font > box > box > label, button.file > box > box > label { + font-weight: bold; +} + +windowcontrols > button:not(.suggested-action):not(.destructive-action), filechooser #pathbarbox > stack > box > button, menubutton.circular > button, button.close, button.circular { + border-radius: 9999px; +} + +windowcontrols > button:not(.suggested-action):not(.destructive-action) label, filechooser #pathbarbox > stack > box > button label, menubutton.circular > button label, button.close label, button.circular label { + padding: 0; +} + +menubutton.osd { + background: none; + color: inherit; +} + +menubutton.suggested-action { + background-color: #eebebe; + color: white; +} + +menubutton.destructive-action { + background-color: #F44336; + color: white; +} + +menubutton.opaque { + background-color: #595d6b; + color: #FFFFFF; +} + +menubutton.suggested-action, menubutton.destructive-action, menubutton.opaque { + border-radius: 6px; +} + +menubutton.suggested-action.circular, menubutton.suggested-action.pill, menubutton.destructive-action.circular, menubutton.destructive-action.pill, menubutton.opaque.circular, menubutton.opaque.pill { + border-radius: 9999px; +} + +menubutton.suggested-action > button, menubutton.suggested-action > button:checked, menubutton.destructive-action > button, menubutton.destructive-action > button:checked, menubutton.opaque > button, menubutton.opaque > button:checked { + background-color: transparent; + color: inherit; +} + +menubutton.image-button > button { + min-width: 24px; + padding-left: 6px; + padding-right: 6px; +} + +menubutton arrow { + min-height: 16px; + min-width: 16px; +} + +menubutton arrow.none { + -gtk-icon-source: -gtk-icontheme("open-menu-symbolic"); +} + +menubutton arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +menubutton arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +menubutton arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +menubutton arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +splitbutton { + border-radius: 6px; +} + +splitbutton, splitbutton > separator { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + transition-property: background; +} + +splitbutton > separator { + margin-top: 6px; + margin-bottom: 6px; + background: none; +} + +splitbutton > menubutton > button { + padding: 6px 10px; +} + +splitbutton.image-button > button { + min-width: 24px; + padding-left: 6px; + padding-right: 6px; +} + +splitbutton.text-button.image-button > button, splitbutton.image-text-button > button { + padding-left: 9px; + padding-right: 9px; +} + +splitbutton.text-button.image-button > button > box, splitbutton.image-text-button > button > box { + border-spacing: 6px; +} + +splitbutton > button:dir(ltr), +splitbutton > menubutton > button:dir(rtl) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: -1px; +} + +splitbutton > button:dir(rtl), +splitbutton > menubutton > button:dir(ltr) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: -1px; +} + +splitbutton.flat > separator { + background: rgba(255, 255, 255, 0.12); +} + +splitbutton.flat:hover, splitbutton.flat:active, splitbutton.flat:checked { + background: alpha(currentColor, 0.07); +} + +splitbutton.flat:hover > separator, splitbutton.flat:active > separator, splitbutton.flat:checked > separator { + background: none; +} + +splitbutton.flat:focus-within:focus-visible > separator { + background: none; +} + +splitbutton.flat > button, +splitbutton.flat > menubutton > button { + border-radius: 6px; +} + +splitbutton.suggested-action { + background-color: #eebebe; + color: white; +} + +splitbutton.destructive-action { + background-color: #F44336; + color: white; +} + +splitbutton.opaque { + background-color: #595d6b; + color: #FFFFFF; +} + +splitbutton.suggested-action > button, splitbutton.suggested-action > button:checked, splitbutton.suggested-action > menubutton > button, splitbutton.suggested-action > menubutton > button:checked, splitbutton.destructive-action > button, splitbutton.destructive-action > button:checked, splitbutton.destructive-action > menubutton > button, splitbutton.destructive-action > menubutton > button:checked, splitbutton.opaque > button, splitbutton.opaque > button:checked, splitbutton.opaque > menubutton > button, splitbutton.opaque > menubutton > button:checked { + color: inherit; + background-color: transparent; +} + +splitbutton.suggested-action > menubutton > button:dir(ltr), splitbutton.destructive-action > menubutton > button:dir(ltr), splitbutton.opaque > menubutton > button:dir(ltr) { + box-shadow: inset 1px 0 rgba(255, 255, 255, 0.12); +} + +splitbutton.suggested-action > menubutton > button:dir(rtl), splitbutton.destructive-action > menubutton > button:dir(rtl), splitbutton.opaque > menubutton > button:dir(rtl) { + box-shadow: inset -1px 0 rgba(255, 255, 255, 0.12); +} + +splitbutton > menubutton > button > arrow.none { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +buttoncontent { + border-spacing: 6px; +} + +buttoncontent > label { + font-weight: bold; +} + +buttoncontent > label:dir(ltr) { + padding-right: 2px; +} + +buttoncontent > label:dir(rtl) { + padding-left: 2px; +} + +.arrow-button > box > buttoncontent > label:dir(ltr), splitbutton > button > buttoncontent > label:dir(ltr) { + padding-right: 0; +} + +.arrow-button > box > buttoncontent > label:dir(rtl), splitbutton > button > buttoncontent > label:dir(rtl) { + padding-left: 0; +} + +stacksidebar row.needs-attention > label, stackswitcher > button.needs-attention > label, +stackswitcher > button.needs-attention > image { + animation: needs-attention 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-repeat: no-repeat; + background-position: right 3px; + background-size: 6px 6px; +} + +stacksidebar row.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > label:dir(rtl), +stackswitcher > button.needs-attention > image:dir(rtl) { + background-position: left 3px; +} + +.linked:not(.vertical) > entry, .linked:not(.vertical) > button, .linked:not(.vertical) > button.image-button { + border-radius: 0; +} + +.linked:not(.vertical) > entry:first-child, .linked:not(.vertical) > button:first-child { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.linked:not(.vertical) > entry:last-child, .linked:not(.vertical) > button:last-child { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.linked:not(.vertical) > entry:only-child, .linked:not(.vertical) > button:only-child { + border-radius: 6px; +} + +.linked.vertical > entry, .linked.vertical > button, .linked.vertical > button.image-button { + border-radius: 0; +} + +.linked.vertical > entry:first-child, .linked.vertical > button:first-child { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +.linked.vertical > entry:last-child, .linked.vertical > button:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +.linked.vertical > entry:only-child, .linked.vertical > button:only-child { + border-radius: 6px; +} + +button.color { + min-height: 24px; + min-width: 24px; + padding: 6px; +} + + +list > row button.image-button:not(.flat) { + background-color: transparent; + box-shadow: none; + border: none; +} + + +list > row button.image-button:not(.flat):hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + + +list > row button.image-button:not(.flat):active, +list > row button.image-button:not(.flat):checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + + +list > row button.image-button:not(.flat).suggested-action { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); +} + + +list > row button.image-button:not(.flat).destructive-action { + background-color: #F44336; + color: #FFFFFF; +} + +/********* + * Links * + *********/ +link { + color: #3c84f7; +} + +link:visited { + color: #BA68C8; +} + +button.link:link, button.link:link:focus, button.link:link:hover, button.link:link:active { + color: #3c84f7; +} + +button.link:visited, button.link:visited:focus, button.link:visited:hover, button.link:visited:active { + color: #BA68C8; +} + +button.link > label { + text-decoration-line: underline; +} + +/***************** + * GtkSpinButton * + *****************/ +spinbutton { + border-radius: 6px; + padding: 0; + border-spacing: 0; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.7); + outline: 0 solid transparent; + outline-offset: 2px; +} + +spinbutton:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(255, 255, 255, 0.08); + box-shadow: inset 0 0 0 2px transparent; + color: #FFFFFF; + outline: 2px solid #eebebe; + outline-offset: -2px; +} + +spinbutton:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.5); + outline: none; +} + +spinbutton > text { + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; + margin: 0; +} + +spinbutton > button { + border: none; +} + +spinbutton > button:focus:not(:hover):not(:active):not(:disabled) { + box-shadow: none; +} + +spinbutton:not(.vertical) > text { + min-width: 32px; + padding-left: 12px; +} + +spinbutton:not(.vertical) > button { + padding: 0; + margin: 6px; +} + +spinbutton:not(.vertical) > button.up:dir(ltr), spinbutton:not(.vertical) > button.down:dir(rtl) { + margin-left: 3px; +} + +spinbutton:not(.vertical) > button.up:dir(rtl), spinbutton:not(.vertical) > button.down:dir(ltr) { + margin-right: 3px; +} + +cell.activatable spinbutton:not(.vertical) { + margin: 3px 0; +} + +cell.activatable spinbutton:not(.vertical) > button { + margin: 0; + padding: 0; + min-height: 24px; + border-radius: 0; +} + +cell.activatable spinbutton:not(.vertical) > button:last-child { + border-radius: 0 6px 6px 0; +} + +cell.activatable spinbutton:not(.vertical) > button.up:dir(ltr), cell.activatable spinbutton:not(.vertical) > button.down:dir(rtl) { + margin-left: 0; +} + +cell.activatable spinbutton:not(.vertical) > button.up:dir(rtl), cell.activatable spinbutton:not(.vertical) > button.down:dir(ltr) { + margin-right: 0; +} + +spinbutton.vertical > text { + min-height: 36px; + min-width: 42px; + padding: 0; +} + +spinbutton.vertical > button { + padding: 0; + margin: 6px 9px; +} + +/************** + * ComboBoxes * + **************/ +dropdown > button > box { + border-spacing: 6px; +} + +dropdown arrow, +combobox arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + min-height: 16px; + min-width: 16px; +} + +dropdown > popover.menu > contents modelbutton, +combobox > popover.menu > contents modelbutton { + padding-left: 9px; + padding-right: 9px; +} + +dropdown button.combo cellview:dir(ltr), +combobox button.combo cellview:dir(ltr) { + margin-left: -2px; +} + +dropdown button.combo cellview:dir(rtl), +combobox button.combo cellview:dir(rtl) { + margin-right: -2px; +} + +dropdown popover, +combobox popover { + margin-top: 4px; + padding: 0; +} + +dropdown popover listview, +combobox popover listview { + margin: 0; +} + +dropdown popover listview > row, +combobox popover listview > row { + padding: 6px; +} + +dropdown popover listview > row:selected, +combobox popover listview > row:selected { + color: #FFFFFF; + background-color: alpha(currentColor, 0.06); +} + +dropdown popover .dropdown-searchbar, +combobox popover .dropdown-searchbar { + padding: 6px; +} + +dropdown.linked button:nth-child(2):dir(ltr), +combobox.linked button:nth-child(2):dir(ltr) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +dropdown.linked button:nth-child(2):dir(rtl), +combobox.linked button:nth-child(2):dir(rtl) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child), +combobox > .linked:not(.vertical) > entry:not(:only-child) { + border-radius: 6px; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child):first-child, +combobox > .linked:not(.vertical) > entry:not(:only-child):first-child { + margin-right: -36px; + padding-right: 36px; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child):last-child, +combobox > .linked:not(.vertical) > entry:not(:only-child):last-child { + margin-left: -36px; + padding-left: 36px; +} + +dropdown > .linked:not(.vertical) > button:not(:only-child), +combobox > .linked:not(.vertical) > button:not(:only-child) { + min-height: 16px; + min-width: 16px; + margin: 6px; + padding: 4px; + border-radius: 6px; +} + +.linked:not(.vertical) > combobox:not(:first-child) > box > button.combo { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.linked:not(.vertical) > combobox:not(:last-child) > box > button.combo { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical > combobox:not(:first-child) > box > button.combo { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.linked.vertical > combobox:not(:last-child) > box > button.combo { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +button.combo:only-child { + border-radius: 6px; + font-weight: normal; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.7); + outline: 0 solid transparent; + outline-offset: 2px; +} + +button.combo:only-child:focus { + color: #FFFFFF; + outline: 2px solid rgba(255, 255, 255, 0.04); + outline-offset: -2px; +} + +button.combo:only-child:hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +button.combo:only-child:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +button.combo:only-child:checked { + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + +button.combo:only-child:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + outline-color: transparent; +} + +/************ + * Toolbars * + ************/ +.toolbar { + padding: 6px; + background-color: #303446; + border-spacing: 6px; +} + +.osd .toolbar { + background-color: transparent; +} + +.app-notification, .toolbar.osd { + transition: box-shadow 200ms ease-out; + padding: 6px; + border-radius: 12px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15), 0 3px 3px 0 rgba(0, 0, 0, 0.18), 0 3px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); + background-color: #414559; + color: #FFFFFF; +} + +.app-notification:backdrop, .toolbar.osd:backdrop { + box-shadow: 0 4px 3px -3px rgba(0, 0, 0, 0.2), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); +} + +.left.app-notification, .right.app-notification, .top.app-notification, .bottom.app-notification, .toolbar.osd.left, .toolbar.osd.right, .toolbar.osd.top, .toolbar.osd.bottom { + border-radius: 0; +} + +.bottom.app-notification, .toolbar.osd.bottom { + box-shadow: none; + background-color: transparent; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.2) 50%, rgba(0, 0, 0, 0.4)); +} + +.toolbar.horizontal > separator { + margin: 2px; +} + +.toolbar.vertical > separator { + margin: 2px; +} + +.toolbar entry, +.toolbar spinbutton, +.toolbar splitbutton, +.toolbar separator:not(.sidebar), +.toolbar button, +.toolbar menubutton, +.toolbar scalebutton { + margin-top: 0; + margin-bottom: 0; +} + +.toolbar menubutton > button, +.toolbar splitbutton > button, +.toolbar splitbutton > menubutton, +.toolbar scalebutton > button { + margin-top: 0; + margin-bottom: 0; +} + +.toolbar switch { + margin-top: 4px; + margin-bottom: 4px; +} + +.toolbar spinbutton entry, +.toolbar spinbutton button { + margin: 0; +} + +.toolbar popover.menu separator:not(.sidebar) { + margin-top: 6px; + margin-bottom: 6px; +} + +searchbar > revealer > box { + padding: 6px; + border-spacing: 6px; + border-style: solid; + border-width: 0 0 1px; + border-color: rgba(255, 255, 255, 0.12); + background-color: #303446; + background-clip: border-box; + box-shadow: none; +} + +searchbar > revealer > box entry, searchbar > revealer > box button, searchbar > revealer > box menubutton { + margin: 0; +} + +/*************** + * Header bars * + ***************/ +headerbar button:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.7); + border: none; +} + +headerbar button:hover:not(.suggested-action):not(.destructive-action), headerbar button:active:not(.suggested-action):not(.destructive-action), headerbar button:checked:not(.suggested-action):not(.destructive-action) { + color: #FFFFFF; +} + +headerbar button:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.32); +} + +headerbar button:checked:disabled:not(.suggested-action):not(.destructive-action) { + background-color: transparent; + color: rgba(255, 255, 255, 0.5); +} + +headerbar button:backdrop:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.5); +} + +headerbar button:backdrop:focus:not(.suggested-action):not(.destructive-action), headerbar button:backdrop:hover:not(.suggested-action):not(.destructive-action), headerbar button:backdrop:active:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.7); +} + +headerbar button:backdrop:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.32); +} + +headerbar button:backdrop:checked:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.7); +} + +headerbar button:backdrop:checked:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.32); +} + +headerbar entry { + background-color: rgba(255, 255, 255, 0.04); + color: #FFFFFF; +} + +headerbar entry:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); +} + +headerbar entry image { + color: rgba(255, 255, 255, 0.7); +} + +headerbar entry image:hover, headerbar entry image:active { + color: #FFFFFF; +} + +headerbar entry image:disabled { + color: rgba(255, 255, 255, 0.5); +} + +headerbar { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), color 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 -1px rgba(255, 255, 255, 0.12); + background-color: #232634; + color: #FFFFFF; + min-height: 48px; + padding: 0; + margin: 0; +} + +headerbar:disabled { + color: rgba(255, 255, 255, 0.5); +} + +headerbar:backdrop { + background-color: #303446; + color: rgba(255, 255, 255, 0.7); +} + +headerbar:backdrop:disabled { + color: rgba(255, 255, 255, 0.32); +} + +headerbar.flat, headerbar.flat:backdrop { + background: none; + box-shadow: none; + transition: none; +} + +headerbar .title { + padding: 0 12px; + font-weight: bold; +} + +headerbar .subtitle { + padding: 0 12px; + font-size: smaller; +} + +headerbar .subtitle, +headerbar .dim-label, +headerbar row.expander image.expander-row-arrow, +row.expander headerbar image.expander-row-arrow, +headerbar row label.subtitle, +row headerbar label.subtitle { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(255, 255, 255, 0.7); +} + +headerbar .subtitle:backdrop, +headerbar .dim-label:backdrop, +headerbar row.expander image.expander-row-arrow:backdrop, +row.expander headerbar image.expander-row-arrow:backdrop, +headerbar row label.subtitle:backdrop, +row headerbar label.subtitle:backdrop { + color: rgba(255, 255, 255, 0.5); +} + +headerbar .titlebar { + background-color: transparent; + box-shadow: none; +} + +headerbar headerbar + separator { + background-color: rgba(255, 255, 255, 0.12); +} + +headerbar > windowhandle > box { + padding: 0 6px; +} + +headerbar > windowhandle > box, +headerbar > windowhandle > box > box.start, +headerbar > windowhandle > box > box.end { + border-spacing: 6px; +} + +headerbar entry, +headerbar spinbutton, +headerbar button, +headerbar menubutton, +headerbar stackswitcher, +headerbar separator:not(.sidebar) { + margin-top: 6px; + margin-bottom: 6px; +} + +headerbar menubutton > button, +headerbar spinbutton > button, +headerbar splitbutton > button, +headerbar splitbutton > menubutton, +headerbar .linked > menubutton, +headerbar entry > menubutton { + margin-top: 0; + margin-bottom: 0; +} + +headerbar button.suggested-action:disabled, +headerbar button.destructive-action:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + opacity: 1; +} + +headerbar .linked:not(.vertical) > entry:not(:only-child) { + border-radius: 6px; +} + +headerbar .entry-tag { + margin-top: 5px; + margin-bottom: 5px; +} + +headerbar popover.background button.suggested-action:disabled, +headerbar popover.background button.destructive-action:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); +} + +headerbar popover.background entry, +headerbar popover.background spinbutton, +headerbar popover.background button, +headerbar popover.background menubutton, +headerbar popover.background stackswitcher { + margin-top: 0; + margin-bottom: 0; +} + +headerbar separator:not(.sidebar) { + background-color: rgba(255, 255, 255, 0.12); +} + +headerbar switch { + margin-top: 12px; + margin-bottom: 12px; +} + +headerbar.selection-mode { + transition: background-color 0.1ms 225ms, color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); +} + +headerbar.selection-mode:backdrop { + color: rgba(0, 0, 0, 0.6); +} + +headerbar.selection-mode .subtitle:link { + color: rgba(0, 0, 0, 0.87); +} + +headerbar.selection-mode .selection-menu { + padding-left: 16px; + padding-right: 16px; +} + +headerbar.selection-mode .selection-menu .arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +headerbar.default-decoration { + min-height: 36px; + padding: 0; + margin: 0; + box-shadow: none; + border: none; + outline: none; + background-image: image(#232634); +} + +headerbar.default-decoration:backdrop { + background-image: image(#303446); +} + +headerbar.default-decoration windowcontrols button, +headerbar.default-decoration windowcontrols menubutton { + min-width: 16px; + min-height: 16px; + margin: 0; + padding: 0; +} + +headerbar.default-decoration windowcontrols menubutton button { + min-height: 20px; + min-width: 20px; + margin: 0; + padding: 4px; +} + +.solid-csd headerbar:dir(rtl), .solid-csd headerbar:dir(ltr) { + border-radius: 0; + box-shadow: none; +} + +window.devel headerbar { + background: #232634 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, linear-gradient(to right, transparent 65%, rgba(238, 190, 190, 0.1)), linear-gradient(to top, #292d3d 3px, #2d3143); +} + +window.devel headerbar:backdrop { + background: #232634 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, image(#232634); + /* background-color would flash */ +} + +/************ + * Pathbars * + ************/ + +pathbar > button { + padding-left: 6px; + padding-right: 6px; + border-radius: 6px; + background-color: alpha(currentColor, 0.08); + border: none; + box-shadow: none; +} + + +pathbar > button:disabled { + background-color: alpha(currentColor, 0.05); +} + + +pathbar > button:checked { + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + + +pathbar > button:checked:hover { + background-color: alpha(currentColor, 0.16); + color: #FFFFFF; +} + + +pathbar > button label, +pathbar > button image { + margin-left: 3px; + margin-right: 3px; +} + + +pathbar > button.slider-button { + padding-left: 4px; + padding-right: 4px; +} + +.pathbar { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.7); + border: none; + border-radius: 6px; + padding: 2px; +} + +headerbar .pathbar { + margin-top: 6px; + margin-bottom: 6px; + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.7); +} + +.pathbar > button { + margin-top: 0; + margin-bottom: 0; + min-height: 20px; + border-radius: 4px; + border: none; + box-shadow: none; +} + +.pathbar > button:last-child { + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + +/************** + * Tree Views * + **************/ +columnview.view, +treeview.view { + border-left-color: #494c5c; + border-top-color: #494c5c; +} + +columnview.view:hover, columnview.view:selected, +treeview.view:hover, +treeview.view:selected { + border-radius: 0; +} + +columnview.view:focus, +treeview.view:focus { + box-shadow: none; + outline: none; +} + +columnview.view.separator, +treeview.view.separator { + min-height: 5px; + color: rgba(255, 255, 255, 0.12); +} + +columnview.view:drop(active), +treeview.view:drop(active) { + box-shadow: none; +} + +columnview.view:drop(active).after, +treeview.view:drop(active).after { + border-top-style: none; +} + +columnview.view:drop(active).before, +treeview.view:drop(active).before { + border-bottom-style: none; +} + +columnview.view > dndtarget:drop(active), +treeview.view > dndtarget:drop(active) { + border-style: solid none; + border-width: 1px; + border-color: alpha(currentColor, 0.06); +} + +columnview.view > dndtarget:drop(active).after, +treeview.view > dndtarget:drop(active).after { + border-top-style: none; +} + +columnview.view > dndtarget:drop(active).before, +treeview.view > dndtarget:drop(active).before { + border-bottom-style: none; +} + +columnview.view.expander, +treeview.view.expander { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); + color: rgba(255, 255, 255, 0.7); +} + +columnview.view.expander:dir(rtl), +treeview.view.expander:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); +} + +columnview.view.expander:hover, +treeview.view.expander:hover { + color: #FFFFFF; +} + +columnview.view.expander:selected, +treeview.view.expander:selected { + color: #FFFFFF; +} + +columnview.view.expander:selected:hover, +treeview.view.expander:selected:hover { + color: #FFFFFF; +} + +columnview.view.expander:checked, +treeview.view.expander:checked { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +columnview.view.expander:disabled, +treeview.view.expander:disabled { + color: rgba(255, 255, 255, 0.32); +} + +columnview.view.progressbar, +treeview.view.progressbar { + border-bottom: 6px solid #eebebe; + box-shadow: none; + background-color: transparent; + background-image: none; +} + +columnview.view.progressbar:selected:hover, +treeview.view.progressbar:selected:hover { + box-shadow: none; +} + +columnview.view.trough, +treeview.view.trough { + border-bottom: 6px solid rgba(255, 255, 255, 0.12); + box-shadow: none; + background-color: transparent; + background-image: none; +} + +columnview.view.trough:selected:hover, +treeview.view.trough:selected:hover { + box-shadow: none; +} + +columnview.view > header > button, +treeview.view > header > button { + padding: 2px 6px; + border-style: none solid solid none; + border-width: 1px; + border-color: rgba(255, 255, 255, 0.12); + border-radius: 0; + background-clip: border-box; +} + +columnview.view > header > button:not(:focus):not(:hover):not(:active), +treeview.view > header > button:not(:focus):not(:hover):not(:active) { + color: rgba(255, 255, 255, 0.7); +} + +columnview.view > header > button, columnview.view > header > button:disabled, +treeview.view > header > button, +treeview.view > header > button:disabled { + background-color: #303446; +} + +columnview.view > header > button:last-child, +treeview.view > header > button:last-child { + border-right-style: none; +} + +columnview.view button.dnd, +columnview.view header.button.dnd, +treeview.view button.dnd, +treeview.view header.button.dnd { + padding: 2px 6px; + border-style: none solid solid; + border-width: 1px; + border-color: rgba(255, 255, 255, 0.12); + border-radius: 0; + box-shadow: none; + background-color: #303446; + background-clip: border-box; + color: #eebebe; +} + +columnview.view acceleditor > label, +treeview.view acceleditor > label { + background-color: #eebebe; +} + +stack.view treeview.view { + min-height: 36px; +} + +/********* + * Menus * + *********/ +menubar { + padding: 0; + background-color: #232634; + color: #FFFFFF; +} + +menubar:backdrop { + background-color: #303446; + color: rgba(255, 255, 255, 0.7); +} + +.csd menubar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +menubar > item { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 20px; + padding: 4px 8px; + color: rgba(255, 255, 255, 0.7); +} + +menubar > item:selected { + transition: none; + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + +menubar > item:disabled { + color: rgba(255, 255, 255, 0.32); +} + +menubar > item label:disabled { + color: inherit; +} + +menubar > item popover.menu popover.menu { + margin-left: 9px; +} + +menubar > item popover.menu.background popover.menu.background > contents { + margin: 0; + border-radius: 12px; +} + +/********************** + * Popover Base Menus * + **********************/ +popover.menu box.inline-buttons { + color: #FFFFFF; + padding: 0 6px; +} + +popover.menu box.inline-buttons button.image-button.model { + min-height: 28px; + min-width: 28px; + padding: 0; + border: none; + outline: none; + transition: none; +} + +popover.menu box.inline-buttons button.image-button.model:selected { + background: image(alpha(currentColor, 0.06)); +} + +popover.menu box.circular-buttons { + padding: 6px; +} + +popover.menu box.circular-buttons button.circular.image-button.model { + padding: 6px; +} + +popover.menu box.circular-buttons button.circular.image-button.model:focus { + background-color: alpha(currentColor, 0.06); +} + +popover.menu arrow.left, +popover.menu radio.left, +popover.menu check.left { + margin-left: 0; + margin-right: 0; +} + +popover.menu arrow.right, +popover.menu radio.right, +popover.menu check.right { + margin-left: 0; + margin-right: 0; +} + +popover.menu label.title { + font-weight: bold; + padding: 4px 26px; +} + +/************ + * Popovers * + ************/ +popover.background { + font: initial; +} + +popover.background, popover.background:backdrop { + background-color: transparent; +} + +popover > arrow, +popover > contents { + transition: box-shadow 200ms ease-out; + padding: 6px; + background-color: #414559; + border-radius: 12px; + color: #FFFFFF; + border: 1px solid rgba(255, 255, 255, 0.1); + background-clip: border-box; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.75), 0 2px 3px -1px rgba(0, 0, 0, 0.05), 0 4px 6px 0 rgba(0, 0, 0, 0.06), 0 1px 10px 0 rgba(0, 0, 0, 0.05); +} + +popover > contents > list, +popover > contents > .view, +popover > contents > toolbar { + border-style: none; + box-shadow: none; + background-color: transparent; +} + +popover > contents separator { + background-color: rgba(255, 255, 255, 0.12); + margin: 3px 0; +} + +popover > contents list separator { + margin: 0; +} + +popover > contents list > row { + border-radius: 6px; +} + +popover > contents stack > box { + padding: 0; +} + +popover > contents > box > button { + margin: 0; +} + +popover .view:not(:selected), +popover toolbar { + background-color: #414559; +} + +popover.menu button, +popover button.model { + min-height: 32px; + padding: 0 8px; +} + +popover modelbutton { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 22px; + min-width: 56px; + padding: 3px 9px; + color: #FFFFFF; + font: initial; + border-radius: 6px; +} + +popover modelbutton:focus:not(:hover) { + transition: none; + box-shadow: none; + outline: none; +} + +popover modelbutton:disabled { + color: rgba(255, 255, 255, 0.5); +} + +popover modelbutton accelerator { + color: rgba(255, 255, 255, 0.5); + margin-left: 30px; +} + +popover modelbutton accelerator:disabled { + color: rgba(255, 255, 255, 0.12); +} + +popover modelbutton arrow.left { + -gtk-icon-source: -gtk-icontheme("go-previous-symbolic"); +} + +popover modelbutton arrow.right { + -gtk-icon-source: -gtk-icontheme("go-next-symbolic"); +} + +.osd popover, popover.touch-selection, popover.magnifier { + background-color: transparent; +} + +magnifier { + background-color: #303446; +} + +/************* + * Notebooks * + *************/ +tabbar tab, tabbar tabbox > tabboxchild > tab, notebook > header > tabs > tab { + min-height: 24px; + min-width: 24px; + padding: 3px 6px; + border: none; + background-clip: padding-box; + font-weight: 500; + border-radius: 6px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1); + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + background-color: transparent; + outline: 0 solid transparent; + outline-offset: 2px; + color: rgba(255, 255, 255, 0.7); +} + +tabbar tab:hover:not(:checked):not(:selected), notebook > header > tabs > tab:hover:not(:checked):not(:selected) { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + box-shadow: none; +} + +tabbar tab:disabled, notebook > header > tabs > tab:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +tabbar tab:active, notebook > header > tabs > tab:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + box-shadow: none; +} + +tabbar tab:checked:not(:active), notebook > header > tabs > tab:checked:not(:active), tabbar tab:selected:not(:active), notebook > header > tabs > tab:selected:not(:active) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, background-color 0ms; + background-color: rgba(255, 255, 255, 0.15); + color: #FFFFFF; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +tabbar tab:checked:not(:active):disabled, notebook > header > tabs > tab:checked:not(:active):disabled, tabbar tab:selected:not(:active):disabled, notebook > header > tabs > tab:selected:not(:active):disabled { + color: rgba(255, 255, 255, 0.5); +} + +frame > paned > notebook > header, notebook.frame > header { + background-color: rgba(255, 255, 255, 0.04); +} + +notebook, notebook.frame { + background-color: #303446; + border-radius: 12px; +} + +notebook.frame frame > border { + border: none; + border-radius: 6px; +} + +notebook.frame frame > list row.activatable { + border-radius: 6px; +} + +notebook > header { + border: none; + background-color: rgba(255, 255, 255, 0.04); + margin: 3px; + border-radius: 9px; +} + +notebook > header.top > tabs > arrow { + border-top-style: none; +} + +notebook > header.bottom > tabs > arrow { + border-bottom-style: none; +} + +notebook > header.top > tabs > arrow, notebook > header.bottom > tabs > arrow { + padding-left: 4px; + padding-right: 4px; +} + +notebook > header.top > tabs > arrow.down, notebook > header.bottom > tabs > arrow.down { + margin-left: 0; + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +notebook > header.top > tabs > arrow.up, notebook > header.bottom > tabs > arrow.up { + margin-right: 0; + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +notebook > header.left > tabs > arrow { + border-left-style: none; +} + +notebook > header.right > tabs > arrow { + border-right-style: none; +} + +notebook > header.left > tabs > arrow, notebook > header.right > tabs > arrow { + padding-top: 4px; + padding-bottom: 4px; +} + +notebook > header.left > tabs > arrow.down, notebook > header.right > tabs > arrow.down { + margin-top: 0; + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +notebook > header.left > tabs > arrow.up, notebook > header.right > tabs > arrow.up { + margin-bottom: 0; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +notebook > header > tabs > arrow { + min-height: 16px; + min-width: 16px; + border-radius: 6px; +} + +notebook > header > tabs > tab { + margin: 3px; +} + +notebook > header > tabs > tab > box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: -6px -12px; + padding: 6px 12px; +} + +notebook > header > tabs > tab > box:drop(active) { + background-color: rgba(255, 255, 255, 0.12); + color: #FFFFFF; +} + +notebook > header > tabs > tab button.flat:last-child { + margin-left: 6px; + margin-right: -3px; +} + +notebook > header > tabs > tab button.flat:first-child { + margin-left: -3px; + margin-right: 6px; +} + +notebook > header > tabs > tab button.close-button { + min-width: 24px; + min-height: 24px; +} + +notebook > header.top > tabs, notebook > header.bottom > tabs { + padding-left: 0; + padding-right: 0; +} + +notebook > header.top > tabs:not(:only-child):first-child, notebook > header.bottom > tabs:not(:only-child):first-child { + margin-left: 0; +} + +notebook > header.top > tabs:not(:only-child):last-child, notebook > header.bottom > tabs:not(:only-child):last-child { + margin-right: 0; +} + +notebook > header.top > tabs > tab:not(:last-child), notebook > header.bottom > tabs > tab:not(:last-child) { + margin-right: 0; +} + +notebook > header.top > tabs tab.reorderable-page, notebook > header.bottom > tabs tab.reorderable-page { + border-style: solid; +} + +notebook > header.left > tabs, notebook > header.right > tabs { + padding-top: 0; + padding-bottom: 0; +} + +notebook > header.left > tabs:not(:only-child):first-child, notebook > header.right > tabs:not(:only-child):first-child { + margin-top: 0; +} + +notebook > header.left > tabs:not(:only-child):last-child, notebook > header.right > tabs:not(:only-child):last-child { + margin-bottom: 0; +} + +notebook > header.left > tabs > tab:not(:last-child), notebook > header.right > tabs > tab:not(:last-child) { + margin-bottom: 0; +} + +notebook > header.left > tabs tab.reorderable-page, notebook > header.right > tabs tab.reorderable-page { + border-style: solid; +} + +notebook > header > menubutton > button.image-button { + padding: 3px; + min-width: 24px; + min-height: 24px; + margin: 0 3px; +} + +notebook > stack:not(:only-child) { + background-color: transparent; + border-radius: 6px; +} + +tabbar > revealer > box { + box-shadow: none; +} + +tabbar .box { + min-height: 36px; + border-bottom: none; + background: none; +} + +tabbar scrolledwindow.pinned undershoot { + border: 0 solid rgba(255, 255, 255, 0.12); +} + +tabbar scrolledwindow.pinned:dir(rtl) undershoot.left { + border-left-width: 1px; +} + +tabbar scrolledwindow.pinned:dir(ltr) undershoot.right { + border-right-width: 1px; +} + +tabbar scrolledwindow.pinned tabbox > background:dir(ltr) { + box-shadow: inset -1px 0 rgba(255, 255, 255, 0.12); +} + +tabbar scrolledwindow.pinned tabbox > background:dir(rtl) { + box-shadow: inset 1px 0 rgba(255, 255, 255, 0.12); +} + +tabbar undershoot { + transition: background 150ms ease-in-out; +} + +tabbar undershoot.left { + background: linear-gradient(to right, #303446, rgba(0, 0, 0, 0) 20px); +} + +tabbar undershoot.right { + background: linear-gradient(to left, #303446, rgba(0, 0, 0, 0) 20px); +} + +tabbar .needs-attention-left undershoot.left { + background: linear-gradient(to right, alpha(#eebebe, 0.5), alpha(#eebebe, 0.3) 1px, alpha(#eebebe, 0) 20px); +} + +tabbar .needs-attention-right undershoot.right { + background: linear-gradient(to left, alpha(#eebebe, 0.5), alpha(#eebebe, 0.3) 1px, alpha(#eebebe, 0) 20px); +} + +tabbar tabbox { + background-color: rgba(255, 255, 255, 0.04); + background-image: none; + padding: 0; + margin: 0; + border-radius: 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +tabbar tabbox > background { + background: none; +} + +tabbar tabbox > separator { + margin: 9px 0; + min-width: 1px; + transition: opacity 150ms ease-in-out; +} + +tabbar tabbox > separator.hidden { + opacity: 0; +} + +tabbar tabbox > tabboxchild { + margin: 0 -3px; + padding: 0; +} + +tabbar tabbox > tabboxchild > tab { + margin: 3px; +} + +tabbar tab.needs-attention { + background-image: radial-gradient(ellipse at bottom, rgba(255, 255, 255, 0.8), alpha(#eebebe, 0.4) 10%, alpha(#eebebe, 0) 30%); +} + +tabbar tab.needs-attention:hover { + background-image: image(alpha(currentColor, 0.03)), radial-gradient(ellipse at bottom, rgba(255, 255, 255, 0.8), alpha(#eebebe, 0.4) 10%, alpha(#eebebe, 0) 30%); +} + +tabbar .start-action, +tabbar .end-action { + background-color: rgba(255, 255, 255, 0.04); + background-clip: padding-box; + border-color: rgba(255, 255, 255, 0.12); + border-style: solid; + transition: background 150ms ease-in-out; +} + +tabbar .start-action button, +tabbar .end-action button { + border: none; + border-radius: 0; +} + +tabbar .start-action:dir(ltr), +tabbar .end-action:dir(rtl) { + border-right-width: 1px; +} + +tabbar .start-action:dir(rtl), +tabbar .end-action:dir(ltr) { + border-left-width: 1px; +} + +tabbar:not(.inline) scrolledwindow.pinned undershoot { + border-color: rgba(255, 255, 255, 0.12); +} + +tabbar:not(.inline) undershoot.left { + background: linear-gradient(to right, #232634, rgba(0, 0, 0, 0) 20px); +} + +tabbar:not(.inline) undershoot.right { + background: linear-gradient(to left, #232634, rgba(0, 0, 0, 0) 20px); +} + +tabbar:not(.inline) .needs-attention-left undershoot.left { + background: linear-gradient(to right, alpha(#eebebe, 0.5), alpha(#eebebe, 0.3) 1px, alpha(#eebebe, 0) 20px); +} + +tabbar:not(.inline) .needs-attention-right undershoot.right { + background: linear-gradient(to left, alpha(#eebebe, 0.5), alpha(#eebebe, 0.3) 1px, alpha(#eebebe, 0) 20px); +} + +tabbar:not(.inline) tabbox > background { + background-color: #232634; +} + +tabbar:not(.inline) .start-action, +tabbar:not(.inline) .end-action { + background-color: alpha(#232634, 0.6); + border-color: rgba(255, 255, 255, 0.12); +} + +tabbar:not(.inline):backdrop .box { + background-color: #303446; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +dnd tab { + min-height: 24px; + background-color: #232634; + color: #FFFFFF; + box-shadow: 0 1px 5px 1px rgba(0, 0, 0, 0.09), 0 2px 14px 3px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.05); + outline: 1px solid rgba(0, 0, 0, 0.75); + outline-offset: -1px; + margin: 24px; +} + +dnd tab.needs-attention { + background-image: radial-gradient(ellipse at bottom, rgba(255, 255, 255, 0.8), alpha(#eebebe, 0.4) 10%, alpha(#eebebe, 0) 30%); +} + +tabbar tab, +dnd tab { + padding: 6px; +} + +tabbar tab button.image-button, +dnd tab button.image-button { + padding: 0; + margin: 0; + min-width: 24px; + min-height: 24px; + border-radius: 9999px; +} + +tabbar tab button.image-button.tab-close-button, +dnd tab button.image-button.tab-close-button { + margin-right: -3px; +} + +tabview:drop(active), +tabbox:drop(active) { + box-shadow: none; +} + +/************** + * Scrollbars * + **************/ +scrollbar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #303446; + box-shadow: none; + outline: none; +} + +scrollbar.top { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +scrollbar.bottom { + border-top: 1px solid rgba(255, 255, 255, 0.12); +} + +scrollbar.left { + border-right: 1px solid rgba(255, 255, 255, 0.12); +} + +scrollbar.right { + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +scrollbar > range > trough { + border: none; + background: none; + padding: 0; + outline: none; +} + +scrollbar > range > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 8px; + min-height: 8px; + border: 4px solid transparent; + border-radius: 9999px; + background-clip: padding-box; + background-color: rgba(255, 255, 255, 0.5); + box-shadow: none; + outline: none; +} + +scrollbar > range > trough > slider:hover { + background-color: rgba(255, 255, 255, 0.7); +} + +scrollbar > range > trough > slider:active { + background-color: #FFFFFF; +} + +scrollbar > range > trough > slider:disabled { + background-color: rgba(255, 255, 255, 0.32); +} + +scrollbar > range.fine-tune > trough > slider { + min-width: 4px; + min-height: 4px; +} + +scrollbar > range.fine-tune.horizontal > trough > slider { + margin: 2px 0; +} + +scrollbar > range.fine-tune.vertical > trough > slider { + margin: 0 2px; +} + +scrollbar.overlay-indicator:not(.fine-tune) > range > trough > slider { + transition-property: background-color, min-height, min-width; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { + border-color: transparent; + background-color: transparent; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) > range > trough > slider { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid rgba(48, 52, 70, 0.3); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid rgba(48, 52, 70, 0.3); + border-radius: 9999px; + background-color: rgba(255, 255, 255, 0.5); + background-clip: padding-box; + -gtk-icon-source: none; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button:disabled { + background-color: rgba(255, 255, 255, 0.32); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal > range > trough > slider { + min-width: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal button { + min-width: 8px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical > range > trough > slider { + min-height: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical button { + min-height: 8px; +} + +scrollbar.overlay-indicator.dragging, scrollbar.overlay-indicator.hovering { + background-color: rgba(65, 69, 89, 0.9); +} + +scrollbar.horizontal > range > trough > slider { + min-width: 24px; +} + +scrollbar.vertical > range > trough > slider { + min-height: 24px; +} + +scrollbar button { + min-width: 16px; + min-height: 16px; + padding: 0; + border-radius: 0; +} + +scrollbar.vertical button.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +scrollbar.vertical button.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +scrollbar.horizontal button.down { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +scrollbar.horizontal button.up { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +/********** + * Switch * + **********/ +switch { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 6px 0; + padding: 0; + border: none; + border-radius: 9999px; + background-color: rgba(255, 255, 255, 0.5); + background-clip: border-box; + font-size: 0; + color: transparent; +} + +switch:checked { + background-color: #eebebe; +} + +switch:disabled { + opacity: 0.5; +} + +switch image { + margin: -8px; +} + +switch > slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 18px; + min-height: 18px; + margin: 3px; + border-radius: 9999px; + outline: none; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.05), 0 2px 3px -1px rgba(0, 0, 0, 0.06), 0 1px 4px 0 rgba(0, 0, 0, 0.05); + background-color: white; + border: none; +} + +switch:focus slider, switch:hover slider, switch:focus:hover slider { + box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.12); +} + +/************************* + * Check and Radio items * + *************************/ +.view.content-view.check:not(list), +.content-view .tile check:not(list) { + min-height: 40px; + min-width: 40px; + margin: 0; + padding: 0; + box-shadow: none; + background-color: transparent; + background-image: none; +} + +.view.content-view.check:not(list):hover, .view.content-view.check:not(list):active, +.content-view .tile check:not(list):hover, +.content-view .tile check:not(list):active { + box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.12); +} + +.view.content-view.check:not(list), +.content-view .tile check:not(list) { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-unchecked-dark.png"), url("assets/selectionmode-checkbox-unchecked-dark@2.png")); +} + +.view.content-view.check:not(list):checked, +.content-view .tile check:not(list):checked { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-checked-dark.png"), url("assets/selectionmode-checkbox-checked-dark@2.png")); +} + +checkbutton, +radiobutton { + outline: none; + border-spacing: 3px; +} + +check, +radio { + min-height: 20px; + min-width: 20px; + margin: 3px; + padding: 0; + border-radius: 9999px; + border: none; + color: transparent; + background-color: rgba(255, 255, 255, 0.12); + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 150ms cubic-bezier(0, 0, 0.2, 1); +} + +check:hover, +radio:hover { + box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.04); + background-color: rgba(255, 255, 255, 0.15); +} + +check:active, +radio:active { + box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.12); + background-color: rgba(255, 255, 255, 0.2); +} + +check:disabled, +radio:disabled { + background-color: rgba(255, 255, 255, 0.04); +} + +check:checked, check:indeterminate, +radio:checked, +radio:indeterminate { + color: rgba(0, 0, 0, 0.87); + background-color: #eebebe; +} + +check:checked:hover, check:indeterminate:hover, +radio:checked:hover, +radio:indeterminate:hover { + box-shadow: 0 0 0 6px rgba(238, 190, 190, 0.15); + background-color: #f9e6e6; +} + +check:checked:active, check:indeterminate:active, +radio:checked:active, +radio:indeterminate:active { + box-shadow: 0 0 0 6px rgba(238, 190, 190, 0.2); + background-color: #eebebe; +} + +check:checked:disabled, check:indeterminate:disabled, +radio:checked:disabled, +radio:indeterminate:disabled { + color: rgba(0, 0, 0, 0.6); + background-color: rgba(238, 190, 190, 0.35); +} + +popover modelbutton.flat check, popover modelbutton.flat check:focus, popover modelbutton.flat check:hover, popover modelbutton.flat check:focus:hover, popover modelbutton.flat check:active, popover modelbutton.flat check:disabled, popover modelbutton.flat radio, popover modelbutton.flat radio:focus, popover modelbutton.flat radio:hover, popover modelbutton.flat radio:focus:hover, popover modelbutton.flat radio:active, popover modelbutton.flat radio:disabled { + transition: none; + box-shadow: none; + background-image: none; +} + +popover modelbutton.flat check.left:dir(rtl), popover modelbutton.flat radio.left:dir(rtl) { + margin-left: -3px; + margin-right: 6px; +} + +popover modelbutton.flat check.right:dir(ltr), popover modelbutton.flat radio.right:dir(ltr) { + margin-left: 6px; + margin-right: -3px; +} + +popover.menu check, popover.menu radio { + transition: none; + margin: 0; + padding: 0; +} + +popover.menu check:dir(ltr), popover.menu radio:dir(ltr) { + margin-right: 6px; + margin-left: -3px; +} + +popover.menu check:dir(rtl), popover.menu radio:dir(rtl) { + margin-left: 6px; + margin-right: -3px; +} + +popover.menu check, popover.menu check:hover, popover.menu check:disabled, popover.menu check:checked:hover, popover.menu check:indeterminate:hover, popover.menu radio, popover.menu radio:hover, popover.menu radio:disabled, popover.menu radio:checked:hover, popover.menu radio:indeterminate:hover { + box-shadow: none; +} + + +check { + -gtk-icon-size: 20px; +} + + +check:checked { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/checkbox-checked-symbolic.svg")), -gtk-recolor(url("assets/scalable/checkbox-checked-symbolic@2.svg"))); +} + + +check:indeterminate { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/checkbox-mixed-symbolic.svg")), -gtk-recolor(url("assets/scalable/checkbox-mixed-symbolic@2.svg"))); +} + + +radio { + -gtk-icon-size: 20px; +} + + +radio:checked { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/radio-checked-symbolic.svg")), -gtk-recolor(url("assets/scalable/radio-checked-symbolic@2.svg"))); +} + + +radio:indeterminate { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/radio-mixed-symbolic.svg")), -gtk-recolor(url("assets/scalable/radio-mixed-symbolic@2.svg"))); +} + + +popover.menu check { + min-height: 16px; + min-width: 16px; + -gtk-icon-size: 16px; +} + + +popover.menu check:checked { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/small-checkbox-checked-symbolic.svg")), -gtk-recolor(url("assets/scalable/small-checkbox-checked-symbolic@2.svg"))); +} + + +popover.menu check:indeterminate { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/small-checkbox-mixed-symbolic.svg")), -gtk-recolor(url("assets/scalable/small-checkbox-mixed-symbolic@2.svg"))); +} + + +popover.menu radio { + min-height: 16px; + min-width: 16px; + -gtk-icon-size: 16px; +} + + +popover.menu radio:checked { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/small-radio-checked-symbolic.svg")), -gtk-recolor(url("assets/scalable/small-radio-checked-symbolic@2.svg"))); +} + + +popover.menu radio:indeterminate { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/small-radio-mixed-symbolic.svg")), -gtk-recolor(url("assets/scalable/small-radio-mixed-symbolic@2.svg"))); +} + +check:not(:checked):active { + -gtk-icon-transform: rotate(90deg); +} + +treeview.view radio, treeview.view check, +columnview.view radio, +columnview.view check { + padding: 0; + margin: 0; + transition: none; +} + +treeview.view radio, treeview.view radio:hover, treeview.view radio:disabled, treeview.view radio:checked:hover, treeview.view radio:indeterminate:hover, treeview.view check, treeview.view check:hover, treeview.view check:disabled, treeview.view check:checked:hover, treeview.view check:indeterminate:hover, +columnview.view radio, +columnview.view radio:hover, +columnview.view radio:disabled, +columnview.view radio:checked:hover, +columnview.view radio:indeterminate:hover, +columnview.view check, +columnview.view check:hover, +columnview.view check:disabled, +columnview.view check:checked:hover, +columnview.view check:indeterminate:hover { + box-shadow: none; +} + +treeview.view:hover check, treeview.view:hover radio, treeview.view:selected check, treeview.view:selected radio, treeview.view:focus check, treeview.view:focus radio, +columnview.view:hover check, +columnview.view:hover radio, +columnview.view:selected check, +columnview.view:selected radio, +columnview.view:focus check, +columnview.view:focus radio { + box-shadow: none; +} + +treeview.view:hover check:checked, treeview.view:hover radio:checked, treeview.view:selected check:checked, treeview.view:selected radio:checked, treeview.view:focus check:checked, treeview.view:focus radio:checked, +columnview.view:hover check:checked, +columnview.view:hover radio:checked, +columnview.view:selected check:checked, +columnview.view:selected radio:checked, +columnview.view:focus check:checked, +columnview.view:focus radio:checked { + color: rgba(0, 0, 0, 0.87); + background-color: #eebebe; +} + +/************ + * GtkScale * + ************/ +scale { + min-height: 2px; + min-width: 2px; +} + +scale.horizontal { + padding: 17px 12px; +} + +scale.vertical { + padding: 12px 17px; +} + +scale > trough { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-color: rgba(255, 255, 255, 0.3); +} + +scale > trough:disabled { + background-color: rgba(255, 255, 255, 0.12); +} + +scale > trough > highlight { + transition: background-image 75ms cubic-bezier(0, 0, 0.2, 1); + background-image: image(#eebebe); +} + +scale > trough > highlight:disabled { + background-color: #303446; + background-image: image(rgba(255, 255, 255, 0.32)); +} + +scale > trough > fill { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(255, 255, 255, 0.3); +} + +scale > trough > fill:disabled { + background-color: transparent; +} + +scale > trough > slider { + min-height: 18px; + min-width: 18px; + margin: -8px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 9999px; + color: #eebebe; + background-color: #303446; + box-shadow: inset 0 0 0 2px #eebebe; +} + +scale > trough > slider:hover { + box-shadow: inset 0 0 0 2px #eebebe, 0 0 0 8px rgba(255, 255, 255, 0.12); +} + +scale > trough > slider:active { + box-shadow: inset 0 0 0 4px #eebebe, 0 0 0 8px rgba(255, 255, 255, 0.12); +} + +scale > trough > slider:disabled { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.32); +} + +scale.fine-tune.horizontal { + min-height: 4px; + padding-top: 16px; + padding-bottom: 16px; +} + +scale.fine-tune.vertical { + min-width: 4px; + padding-left: 16px; + padding-right: 16px; +} + +scale.fine-tune > trough > slider { + margin: -7px; +} + +scale > marks, +scale > value { + color: rgba(255, 255, 255, 0.7); +} + +scale indicator { + background-color: rgba(255, 255, 255, 0.3); + color: transparent; +} + +scale.marks-before:not(.marks-after) > trough > slider, scale.marks-after:not(.marks-before) > trough > slider { + transform: rotate(0); +} + +scale.horizontal > marks.top { + margin-bottom: 7px; + margin-top: -15px; +} + +scale.horizontal.fine-tune > marks.top { + margin-bottom: 6px; + margin-top: -14px; +} + +scale.horizontal > marks.bottom { + margin-top: 7px; + margin-bottom: -15px; +} + +scale.horizontal.fine-tune > marks.bottom { + margin-top: 6px; + margin-bottom: -14px; +} + +scale.vertical > marks.top { + margin-right: 7px; + margin-left: -15px; +} + +scale.vertical.fine-tune > marks.top { + margin-right: 6px; + margin-left: -14px; +} + +scale.vertical > marks.bottom { + margin-left: 7px; + margin-right: -15px; +} + +scale.vertical.fine-tune > marks.bottom { + margin-left: 6px; + margin-right: -14px; +} + +scale.horizontal indicator { + min-height: 8px; + min-width: 1px; +} + +scale.vertical indicator { + min-height: 1px; + min-width: 8px; +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider, scale.horizontal.marks-before:not(.marks-after) > trough > slider:hover, scale.horizontal.marks-before:not(.marks-after) > trough > slider:active, scale.horizontal.marks-before:not(.marks-after) > trough > slider:disabled { + box-shadow: none; +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-disabled-dark.png"), url("assets/scale-horz-marks-before-slider-disabled-dark@2.png")); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider, scale.horizontal.marks-after:not(.marks-before) > trough > slider:hover, scale.horizontal.marks-after:not(.marks-before) > trough > slider:active, scale.horizontal.marks-after:not(.marks-before) > trough > slider:disabled { + box-shadow: none; +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-disabled-dark.png"), url("assets/scale-horz-marks-after-slider-disabled-dark@2.png")); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider, scale.vertical.marks-before:not(.marks-after) > trough > slider:hover, scale.vertical.marks-before:not(.marks-after) > trough > slider:active, scale.vertical.marks-before:not(.marks-after) > trough > slider:disabled { + box-shadow: none; +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-disabled-dark.png"), url("assets/scale-vert-marks-before-slider-disabled-dark@2.png")); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider, scale.vertical.marks-after:not(.marks-before) > trough > slider:hover, scale.vertical.marks-after:not(.marks-before) > trough > slider:active, scale.vertical.marks-after:not(.marks-before) > trough > slider:disabled { + box-shadow: none; +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-disabled-dark.png"), url("assets/scale-vert-marks-after-slider-disabled-dark@2.png")); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")); +} + +scale.color { + min-height: 0; + min-width: 0; +} + +scale.color.horizontal { + padding: 0 0 12px 0; +} + +scale.color.horizontal > trough > slider:dir(ltr), scale.color.horizontal > trough > slider:dir(rtl) { + margin-bottom: -13.5px; + margin-top: 11.5px; +} + +scale.color.vertical:dir(ltr) { + padding: 0 0 0 12px; +} + +scale.color.vertical:dir(ltr) slider { + margin-left: -13.5px; + margin-right: 11.5px; +} + +scale.color.vertical:dir(rtl) { + padding: 0 12px 0 0; +} + +scale.color.vertical:dir(rtl) > trough > slider { + margin-right: -13.5px; + margin-left: 11.5px; +} + +/***************** + * Progress bars * + *****************/ +progressbar { + color: rgba(255, 255, 255, 0.7); + font-size: smaller; +} + +progressbar.horizontal trough, +progressbar.horizontal progress { + min-height: 6px; +} + +progressbar.vertical trough, +progressbar.vertical progress { + min-width: 6px; +} + +progressbar trough { + border-radius: 6px; + background-color: rgba(255, 255, 255, 0.12); +} + +progressbar progress { + border-radius: 6px; + background-color: #eebebe; +} + +progressbar.osd { + min-width: 6px; + min-height: 6px; + background-color: transparent; + box-shadow: none; + margin: 0; + padding: 0; +} + +progressbar.osd trough { + background-color: transparent; +} + +progressbar.osd progress { + background-color: #eebebe; +} + +progressbar trough.empty progress { + all: unset; +} + +/************* + * Level Bar * + *************/ +levelbar.horizontal block { + min-height: 6px; +} + +levelbar.horizontal.discrete block { + min-width: 36px; +} + +levelbar.horizontal.discrete block:not(:last-child) { + margin-right: 2px; +} + +levelbar.vertical block { + min-width: 6px; +} + +levelbar.vertical.discrete block { + min-height: 36px; +} + +levelbar.vertical.discrete block:not(:last-child) { + margin-bottom: 2px; +} + +levelbar trough { + border-radius: 6px; +} + +levelbar block.low { + background-color: #FBC02D; +} + +levelbar block.high, levelbar block:not(.empty) { + background-color: #eebebe; +} + +levelbar block.full { + background-color: #66BB6A; +} + +levelbar block.empty { + background-color: rgba(255, 255, 255, 0.12); +} + +/**************** + * Print dialog * +*****************/ +window.dialog.print drawing { + color: #FFFFFF; + background: none; + border: none; + padding: 0; +} + +window.dialog.print drawing paper { + padding: 0; + border: 1px solid rgba(255, 255, 255, 0.12); + background-color: #303446; + color: #FFFFFF; +} + +window.dialog.print .dialog-action-box { + margin: 12px; +} + +/********** + * Frames * + **********/ +frame, +.frame { + border: 1px solid rgba(255, 255, 255, 0.12); +} + +frame > list, +.frame > list { + border: none; +} + +frame.view, +.frame.view { + border-radius: 6px; +} + +frame.flat, +.frame.flat { + border-style: none; +} + +frame { + border-radius: 6px; +} + +frame > label { + margin: 4px; +} + +frame.flat > border, statusbar frame > border { + border: none; +} + +actionbar > revealer > box { + padding: 6px; + border-spacing: 6px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.12); + background-color: #303446; + background-clip: border-box; + border: none; +} + +actionbar > revealer > box button, actionbar > revealer > box entry, +actionbar > revealer > box menubutton, actionbar > revealer > box menubutton > button, +actionbar > revealer > box splitbutton, actionbar > revealer > box splitbutton > button, +actionbar > revealer > box spinbutton { + margin: 0; +} + +statusbar { + padding: 6px 18px; +} + +scrolledwindow viewport.frame { + border: none; +} + +stack scrolledwindow.frame viewport.frame list { + border: none; +} + +overshoot.top { + background-image: radial-gradient(farthest-side at top, alpha(currentColor, 0.12) 85%, alpha(currentColor, 0)), radial-gradient(farthest-side at top, alpha(currentColor, 0.05), alpha(currentColor, 0)); + background-size: 100% 3%, 100% 50%; + background-repeat: no-repeat; + background-position: top; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.bottom { + background-image: radial-gradient(farthest-side at bottom, alpha(currentColor, 0.12) 85%, alpha(currentColor, 0)), radial-gradient(farthest-side at bottom, alpha(currentColor, 0.05), alpha(currentColor, 0)); + background-size: 100% 3%, 100% 50%; + background-repeat: no-repeat; + background-position: bottom; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.left { + background-image: radial-gradient(farthest-side at left, alpha(currentColor, 0.12) 85%, alpha(currentColor, 0)), radial-gradient(farthest-side at left, alpha(currentColor, 0.05), alpha(currentColor, 0)); + background-size: 3% 100%, 50% 100%; + background-repeat: no-repeat; + background-position: left; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.right { + background-image: radial-gradient(farthest-side at right, alpha(currentColor, 0.12) 85%, alpha(currentColor, 0)), radial-gradient(farthest-side at right, alpha(currentColor, 0.05), alpha(currentColor, 0)); + background-size: 3% 100%, 50% 100%; + background-repeat: no-repeat; + background-position: right; + background-color: transparent; + border: none; + box-shadow: none; +} + +scrolledwindow.undershoot-top > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-bottom > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-start:dir(ltr) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-start:dir(rtl) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-end:dir(ltr) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-end:dir(rtl) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow > junction { + border: none; + background-color: #303446; +} + +separator { + min-width: 1px; + min-height: 1px; + background-color: rgba(255, 255, 255, 0.12); +} + +stacksidebar + separator.vertical, +stacksidebar separator.horizontal, button.font separator, button.file separator, separator.spacer { + min-width: 0; + min-height: 0; + background-color: transparent; + background-image: none; +} + +/********* + * Lists * + *********/ +list.content, +list.boxed-list { + border-radius: 7px; + box-shadow: none; + border: 1px solid rgba(255, 255, 255, 0.12); +} + +listview, +list { + border-color: rgba(255, 255, 255, 0.12); + background-color: #303446; + background-clip: padding-box; +} + +listview > row, +list > row { + padding: 6px; + background-clip: padding-box; +} + +listview > row.expander, +list > row.expander { + padding: 0px; +} + +listview > row.expander .row-header, +list > row.expander .row-header { + padding: 2px; +} + +listview.horizontal row.separator:not(:last-child), listview.separators.horizontal > row:not(.separator):not(:last-child), +list.horizontal row.separator:not(:last-child), +list.separators.horizontal > row:not(.separator):not(:last-child) { + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +listview:not(.horizontal) row.separator:not(:last-child), listview.separators:not(.horizontal) > row:not(.separator):not(:last-child), +list:not(.horizontal) row.separator:not(:last-child), +list.separators:not(.horizontal) > row:not(.separator):not(:last-child) { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +list.frame { + border-radius: 6px; +} + +listview.view { + color: #FFFFFF; + background-color: transparent; +} + +popover.menu listview.view { + padding: 0; + border-radius: 6px; +} + +popover.menu listview.view > row { + margin-left: 0; + margin-right: 0; + border-radius: 6px; +} + +row { + color: rgba(255, 255, 255, 0.7); + background-clip: padding-box; +} + +row label.subtitle { + font-size: smaller; +} + +row > box.header { + margin-left: 12px; + margin-right: 12px; + min-height: 48px; +} + +row > box.header > .icon:disabled { + filter: opacity(0.35); +} + +row > box.header > box.title { + margin-top: 6px; + margin-bottom: 6px; + border-spacing: 3px; +} + +.nautilus-window .nautilus-grid-view child.activatable, columnview.view > header > button, +treeview.view > header > button, row.activatable { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), font-weight 0; + outline: none; + box-shadow: none; + background-color: transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + outline: none; +} + +.nautilus-window .nautilus-grid-view child.activatable:focus, columnview.view > header > button:focus, +treeview.view > header > button:focus, row.activatable:focus { + color: #FFFFFF; + background-color: transparent; + box-shadow: none; + outline: none; +} + +.nautilus-window .nautilus-grid-view child.activatable:hover, columnview.view > header > button:hover, +treeview.view > header > button:hover, .nautilus-window .nautilus-grid-view child.has-open-popup.activatable, columnview.view > header > button.has-open-popup, +treeview.view > header > button.has-open-popup, row.activatable:hover, row.activatable.has-open-popup { + color: #FFFFFF; + background-color: alpha(currentColor, 0.05); + box-shadow: none; +} + +.nautilus-window .nautilus-grid-view child.activatable:active, columnview.view > header > button:active, +treeview.view > header > button:active, row.activatable:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, font-weight 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.05) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.05); + color: #FFFFFF; + box-shadow: none; +} + +.nautilus-window .nautilus-grid-view child.activatable:selected, columnview.view > header > button:selected, +treeview.view > header > button:selected, row.activatable:selected { + background-color: alpha(currentColor, 0.06); +} + +.nautilus-window .nautilus-grid-view child.activatable:selected:hover, columnview.view > header > button:selected:hover, +treeview.view > header > button:selected:hover, row.activatable:selected:hover { + background-color: alpha(currentColor, 0.08); +} + +button row.activatable:focus, button row.activatable:hover, button row.activatable:active { + box-shadow: none; + background: none; +} + +button:checked row.activatable { + color: rgba(0, 0, 0, 0.87); +} + +row:selected { + background-color: alpha(currentColor, 0.06); + color: inherit; + box-shadow: none; +} + +row:selected:hover { + background-color: alpha(currentColor, 0.08); +} + +row:selected:focus, row:selected:focus-visible:focus-within { + outline: none; + background-color: alpha(currentColor, 0.08); +} + +row:selected:focus:hover, row:selected:focus-visible:focus-within:hover { + background-color: alpha(currentColor, 0.16); +} + +row:selected image, +row:selected label { + color: #FFFFFF; +} + +row:selected button image, +row:selected button label { + color: inherit; +} + +row:selected:disabled image, +row:selected:disabled label { + color: rgba(255, 255, 255, 0.5); +} + +.rich-list { + /* rich lists usually containing other widgets than just labels/text */ +} + +.rich-list > row { + padding: 9px 12px; + min-height: 32px; + /* should be tall even when only containing a label */ +} + +.rich-list > row:last-child { + border-bottom: none; +} + +.rich-list > row > box { + border-spacing: 12px; +} + +row label.subtitle { + font-size: smaller; +} + +row > box.header { + margin-left: 12px; + margin-right: 12px; + border-spacing: 6px; + min-height: 50px; +} + +row > box.header > .icon:disabled { + filter: opacity(0.45); +} + +row > box.header > box.title { + margin-top: 6px; + margin-bottom: 6px; + border-spacing: 3px; + padding: 0; +} + +row > box.header > box.title, +row > box.header > box.title > .title, +row > box.header > box.title > .subtitle { + padding: 0; + font-weight: inherit; +} + +row > box.header > .prefixes, +row > box.header > .suffixes { + border-spacing: 6px; +} + +row > box.header > .icon:dir(ltr), +row > box.header > .prefixes:dir(ltr) { + margin-right: 6px; +} + +row > box.header > .icon:dir(rtl), +row > box.header > .prefixes:dir(rtl) { + margin-left: 6px; +} + +row.entry:not(:selected).activatable.focused:hover, row.entry:not(:selected).activatable.focused:active { + background-color: transparent; +} + +row.entry .edit-icon, row.entry .indicator { + min-width: 24px; + min-height: 24px; + padding: 5px; +} + +row.entry .edit-icon:disabled { + opacity: 0.5; +} + +row.entry .indicator { + opacity: 0.65; +} + +row.entry.monospace { + font-family: inherit; +} + +row.entry.monospace text { + font-family: monospace; +} + +row.entry.error text > selection:focus-within { + background-color: alpha(#F44336, 0.2); +} + +row.entry.error text > cursor-handle > contents { + background-color: currentColor; +} + +row.entry.warning text > selection:focus-within { + background-color: alpha(#FBC02D, 0.2); +} + +row.entry.warning text > cursor-handle > contents { + background-color: currentColor; +} + +row.entry.success text > selection:focus-within { + background-color: alpha(#66BB6A, 0.2); +} + +row.entry.success text > cursor-handle > contents { + background-color: currentColor; +} + +row.combo image.dropdown-arrow:disabled { + filter: opacity(0.45); +} + +row.combo listview.inline { + background: none; + border: none; + box-shadow: none; + color: inherit; +} + +row.combo listview.inline, row.combo listview.inline:disabled { + background: none; + color: inherit; +} + +row.combo popover > contents { + min-width: 120px; +} + +list.content > row, list.content > row.expander row.header, +list.boxed-list > row, +list.boxed-list > row.expander row.header, row.expander list.nested > row { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +list.content > row:not(:selected).activatable:hover, list.content > row.expander row.header:not(:selected).activatable:hover, +list.boxed-list > row:not(:selected).activatable:hover, +list.boxed-list > row.expander row.header:not(:selected).activatable:hover, row.expander list.nested > row:not(:selected).activatable:hover { + background-color: alpha(currentColor, 0.08); +} + +list.content > row:not(:selected).activatable:active, list.content > row.expander row.header:not(:selected).activatable:active, +list.boxed-list > row:not(:selected).activatable:active, +list.boxed-list > row.expander row.header:not(:selected).activatable:active, row.expander list.nested > row:not(:selected).activatable:active { + background-color: alpha(currentColor, 0.12); +} + +list.content > row:not(:selected).activatable.has-open-popup, list.content > row.expander row.header:not(:selected).activatable.has-open-popup, +list.boxed-list > row:not(:selected).activatable.has-open-popup, +list.boxed-list > row.expander row.header:not(:selected).activatable.has-open-popup, row.expander list.nested > row:not(:selected).activatable.has-open-popup { + background-color: alpha(currentColor, 0.03); +} + +row.expander { + background: none; + padding: 0px; +} + +row.expander > box > list { + background: none; + color: inherit; +} + +row.expander list.nested { + color: inherit; +} + +row.expander image.expander-row-arrow { + transition: -gtk-icon-transform 200ms cubic-bezier(0, 0, 0.2, 1); +} + +row.expander image.expander-row-arrow:dir(ltr) { + margin-left: 6px; +} + +row.expander image.expander-row-arrow:dir(rtl) { + margin-right: 6px; +} + +row.expander image.expander-row-arrow:dir(ltr) { + -gtk-icon-transform: rotate(0.5turn); +} + +row.expander image.expander-row-arrow:dir(rtl) { + -gtk-icon-transform: rotate(-0.5turn); +} + +row.expander image.expander-row-arrow:disabled { + filter: opacity(0.45); +} + +row.expander:checked image.expander-row-arrow { + -gtk-icon-transform: rotate(0turn); + opacity: 1; +} + +row.expander:checked image.expander-row-arrow:not(:disabled) { + color: #eebebe; +} + +.osd row.expander:checked image.expander-row-arrow:not(:disabled) { + color: inherit; +} + +list.content > row.expander, +list.boxed-list > row.expander { + border: none; +} + +list.content > row:first-child, list.content > row:first-child.expander row.header, +list.boxed-list > row:first-child, +list.boxed-list > row:first-child.expander row.header { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +list.content > row:last-child, list.content > row:last-child.expander:not(:checked), list.content > row:last-child.expander:not(:checked) row.header, list.content > row:last-child.expander:checked list.nested, list.content > row:last-child.expander:checked list.nested > row:last-child, +list.boxed-list > row:last-child, +list.boxed-list > row:last-child.expander:not(:checked), +list.boxed-list > row:last-child.expander:not(:checked) row.header, +list.boxed-list > row:last-child.expander:checked list.nested, +list.boxed-list > row:last-child.expander:checked list.nested > row:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-bottom-width: 0; +} + +columnview > listview > row { + padding: 0; +} + +columnview > listview > row > cell { + padding: 8px 6px; +} + +columnview > listview > row > cell:not(:first-child) { + border-left: 1px solid transparent; +} + +columnview.column-separators > listview > row > cell { + border-left-color: rgba(255, 255, 255, 0.12); +} + +columnview.data-table > listview > row > cell { + padding-top: 2px; + padding-bottom: 2px; +} + +treeexpander { + border-spacing: 6px; +} + +columnview row:not(:selected) cell editablelabel:not(.editing):focus-within { + outline: 2px solid alpha(currentColor, 0.06); +} + +columnview row:not(:selected) cell editablelabel.editing:focus-within { + outline: 2px solid #eebebe; +} + +columnview row:not(:selected) cell editablelabel.editing text selection { + color: rgba(0, 0, 0, 0.87); + background-color: #eebebe; +} + +/********************* + * App Notifications * + *********************/ +.app-notification { + margin: 6px; + border-spacing: 0; + padding: 0; + border: none; + background-image: none; +} + +.app-notification button.text-button:not(:disabled) { + color: #eebebe; +} + +.app-notification > box > label { + margin-left: 9px; +} + +.app-notification.frame, +.app-notification border { + border: none; +} + +/************* + * Expanders * + *************/ +expander { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 16px; + min-height: 16px; + color: rgba(255, 255, 255, 0.7); + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +expander:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); +} + +expander:hover, expander:active { + color: #FFFFFF; +} + +expander:checked { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +expander:disabled { + color: rgba(255, 255, 255, 0.32); +} + +expander-widget > box > title { + border-radius: 6px; +} + +expander-widget > box > title:hover > expander { + color: rgba(255, 255, 255, 0.7); +} + +.navigation-sidebar:not(decoration):not(window):drop(active):focus, .navigation-sidebar:not(decoration):not(window):drop(active), +placessidebar:not(decoration):not(window):drop(active):focus, +placessidebar:not(decoration):not(window):drop(active), +stackswitcher:not(decoration):not(window):drop(active):focus, +stackswitcher:not(decoration):not(window):drop(active), +expander-widget:not(decoration):not(window):drop(active):focus, +expander-widget:not(decoration):not(window):drop(active) { + box-shadow: none; +} + +/************ + * Calendar * + ************/ +calendar { + padding: 0; + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 6px; + color: #FFFFFF; +} + +calendar:disabled { + color: rgba(255, 255, 255, 0.5); +} + +calendar:selected { + border-radius: 6px; +} + +calendar > header { + padding: 3px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +calendar > header > button { + min-height: 24px; +} + +calendar > grid { + margin: 3px; +} + +calendar > grid > label { + border-radius: 6px; + margin: 0; +} + +calendar > grid > label.today:selected { + box-shadow: none; +} + +calendar > grid > label:focus { + outline-style: none; +} + +calendar > grid > label.day-number { + padding: 6px; +} + +calendar > grid > label.day-number.other-month { + color: alpha(currentColor, 0.3); +} + +/*********** + * Dialogs * + ***********/ +window.messagedialog .response-area > box > button, window.dialog.message .dialog-action-area > button { + border-radius: 0; + min-height: 28px; + padding: 6px 12px; + margin: 0; + border: none; +} + +window.messagedialog .response-area > box > button:first-child, window.dialog.message .dialog-action-area > button:first-child { + border-radius: 0 0 0 12px; +} + +window.messagedialog .response-area > box > button:last-child, window.dialog.message .dialog-action-area > button:last-child { + border-radius: 0 0 12px 0; +} + +window.messagedialog .response-area > box > button:only-child, window.dialog.message .dialog-action-area > button:only-child { + border-radius: 0 0 12px 12px; +} + +window.dialog.message.background { + background-color: #414559; +} + +window.dialog.message box.dialog-vbox.vertical { + margin-top: 6px; + border-spacing: 24px; +} + +window.dialog.message box.dialog-vbox.vertical > box.vertical { + margin-bottom: 6px; +} + +window.dialog.message box.dialog-vbox.vertical > box > box > box > label.title { + font-weight: 800; + font-size: 15pt; +} + +window.dialog.message .titlebar { + min-height: 24px; + border-style: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.1); + background-color: #414559; + color: #FFFFFF; +} + +window.dialog.message .titlebar:backdrop { + background-color: #414559; + color: rgba(255, 255, 255, 0.7); +} + +window.dialog.message .dialog-action-area { + border-top: 1px solid rgba(255, 255, 255, 0.12); + margin: 0; + border-spacing: 0; +} + +window.dialog.message .dialog-action-area > button { + border: none; +} + +window.dialog.message .dialog-action-area > button:not(:last-child) { + border-right: 1px solid rgba(255, 255, 255, 0.12); +} + +window.dialog.message .dialog-action-area > button.suggested-action:not(:disabled) { + color: #eebebe; +} + +window.dialog.message .dialog-action-area > button.destructive-action:not(:disabled) { + color: #F44336; +} + +window.aboutdialog.background.csd scrolledwindow.frame, window.aboutdialog.background.csd scrolledwindow.frame > viewport.view, window.aboutdialog.background.csd scrolledwindow.frame > textview.view, window.aboutdialog.background.csd scrolledwindow.frame > textview.view > text { + border-radius: 6px; +} + +/******************** + * AdwMessageDialog * + ********************/ +window.messagedialog { + background-color: #414559; + color: #FFFFFF; +} + +window.messagedialog .message-area { + padding: 24px 30px; + border-spacing: 10px; +} + +window.messagedialog .response-area > box > button.suggested { + color: #eebebe; +} + +window.messagedialog .response-area > box > button.destructive { + color: #F44336; +} + +window.messagedialog.csd:not(.solid-csd) { + border-radius: 12px; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.horizontal > button { + margin: 0; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.horizontal > button:first-child { + margin-left: 0; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.horizontal > button:last-child { + margin-right: 0; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.vertical > button { + margin-top: 0; + margin-bottom: 0; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.vertical > button:last-child { + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; + margin-bottom: 0; +} + +filechooser .dialog-action-box { + border-top: 1px solid rgba(255, 255, 255, 0.12); +} + +filechooser #pathbarbox { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); + background-color: #303446; +} + +filechooser stack.view frame > border { + border: none; +} + +filechooserbutton > button > box { + border-spacing: 6px; +} + +filechooserbutton:drop(active) { + box-shadow: none; + border-color: transparent; +} + +/*********** + * Sidebar * + ***********/ +.sidebar { + border-style: none; + background-color: #232634; +} + +.sidebar:not(separator):dir(ltr), .sidebar:not(separator).left, .sidebar:not(separator).left:dir(rtl) { + border-right: 1px solid rgba(255, 255, 255, 0.12); + border-left-style: none; +} + +.sidebar:not(separator):dir(rtl), .sidebar:not(separator).right { + border-left: 1px solid rgba(255, 255, 255, 0.12); + border-right-style: none; +} + +.sidebar listview.view, +.sidebar list { + background-color: transparent; + color: inherit; +} + +paned .sidebar.left, paned .sidebar.right, paned .sidebar.left:dir(rtl), paned .sidebar:dir(rtl), paned .sidebar:dir(ltr), paned .sidebar { + border-style: none; +} + +leaflet.unfolded > box > stacksidebar.sidebar { + border: none; +} + +stacksidebar list { + padding: 6px; + background-color: #232634; +} + +stacksidebar row { + min-height: 24px; + padding: 6px; + border-radius: 6px; +} + +stacksidebar row:selected { + font-weight: 500; +} + +stacksidebar row + row { + margin-top: 4px; +} + +stacksidebar row > label { + padding-left: 6px; + padding-right: 6px; + color: inherit; +} + +separator.sidebar { + background-color: rgba(255, 255, 255, 0.12); + border-right: none; +} + +separator.sidebar.selection-mode, .selection-mode separator.sidebar { + background-color: rgba(255, 255, 255, 0.12); +} + +/********************** + * Navigation Sidebar * + **********************/ +.navigation-sidebar { + padding: 4.5px 0; + border-right: none; +} + +.navigation-sidebar, .navigation-sidebar.view, .navigation-sidebar.view:disabled { + background-color: transparent; + color: inherit; +} + +.navigation-sidebar.background, .navigation-sidebar.background:disabled { + background-color: #232634; + color: rgba(255, 255, 255, 0.7); +} + +.navigation-sidebar > separator { + margin: 4.5px 0; +} + +.navigation-sidebar > row { + min-height: 24px; + padding: 6px; + border-radius: 6px; + margin: 1.5px 6px; +} + +/**************** + * File chooser * + ****************/ +row image.sidebar-icon { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(255, 255, 255, 0.7); +} + +row image.sidebar-icon:disabled { + color: rgba(255, 255, 255, 0.32); +} + +placessidebar > viewport.frame { + border-style: none; +} + +placessidebar list > separator { + margin: 3px 0; +} + +placessidebar row:selected { + font-weight: 500; +} + +placessidebar row image.sidebar-icon:dir(ltr) { + padding-right: 8px; +} + +placessidebar row image.sidebar-icon:dir(rtl) { + padding-left: 8px; +} + +placessidebar row label.sidebar-label { + color: inherit; +} + +placessidebar row label.sidebar-label:dir(ltr) { + padding-right: 2px; +} + +placessidebar row label.sidebar-label:dir(rtl) { + padding-left: 2px; +} + +placessidebar row.sidebar-placeholder-row { + background-color: alpha(currentColor, 0.08); +} + +placessidebar row.sidebar-new-bookmark-row { + color: #eebebe; +} + +placessidebar row.sidebar-new-bookmark-row image.sidebar-icon { + color: #eebebe; +} + +placessidebar row:drop(active) { + background-color: alpha(currentColor, 0.08); +} + +placesview .server-list-button > image { + transition: 200ms cubic-bezier(0, 0, 0.2, 1); + -gtk-icon-transform: rotate(0turn); +} + +placesview .server-list-button:checked > image { + transition: 200ms cubic-bezier(0, 0, 0.2, 1); + -gtk-icon-transform: rotate(-0.5turn); +} + +placesview > actionbar > revealer > box > label { + border-spacing: 6px; +} + +/********* + * Paned * + *********/ +paned > separator { + min-width: 1px; + min-height: 1px; + -gtk-icon-source: none; + border-style: none; + background-color: transparent; + background-image: image(#494c5c); + background-size: 1px 1px; + background-clip: content-box; + box-shadow: none; +} + +paned > separator.wide { + min-width: 6px; + min-height: 6px; + background-color: #303446; + background-image: image(#494c5c), image(#494c5c); + background-size: 1px 1px, 1px 1px; +} + +paned.horizontal > separator { + background-repeat: repeat-y; +} + +paned.horizontal > separator:dir(ltr) { + margin: 0 -8px 0 0; + padding: 0 8px 0 0; + background-position: left; +} + +paned.horizontal > separator:dir(rtl) { + margin: 0 0 0 -8px; + padding: 0 0 0 8px; + background-position: right; +} + +paned.horizontal > separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-y, repeat-y; + background-position: left, right; +} + +paned.vertical > separator { + margin: 0 0 -8px 0; + padding: 0 0 8px 0; + background-repeat: repeat-x; + background-position: top; +} + +paned.vertical > separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-x, repeat-x; + background-position: bottom, top; +} + +/************ + * GtkVideo * + ************/ +video { + background: black; + border-radius: 6px; +} + +video image.osd { + min-width: 64px; + min-height: 64px; + border-radius: 9999px; + border: none; +} + +/************** + * GtkInfoBar * + **************/ +infobar > revealer > box { + padding: 6px; + border-spacing: 12px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); + box-shadow: none; +} + +infobar.info > revealer > box, infobar.info:hover > revealer > box, infobar.info:backdrop > revealer > box { + background-color: #303446; + color: #FFFFFF; +} + +infobar.info > revealer > box button.text-button:not(:disabled):not(.suggested-action):not(.destructive-action), infobar.info:hover > revealer > box button.text-button:not(:disabled):not(.suggested-action):not(.destructive-action), infobar.info:backdrop > revealer > box button.text-button:not(:disabled):not(.suggested-action):not(.destructive-action) { + color: #eebebe; +} + +infobar.action > revealer > box, infobar.action:backdrop > revealer > box, infobar.question > revealer > box, infobar.question:backdrop > revealer > box { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); +} + +infobar.action > revealer > box button, infobar.action > revealer > box button:hover, infobar.action > revealer > box button:focus, infobar.action > revealer > box button:active, infobar.action > revealer > box button:checked, infobar.action > revealer > box button.text-button:not(:disabled), infobar.action:backdrop > revealer > box button, infobar.action:backdrop > revealer > box button:hover, infobar.action:backdrop > revealer > box button:focus, infobar.action:backdrop > revealer > box button:active, infobar.action:backdrop > revealer > box button:checked, infobar.action:backdrop > revealer > box button.text-button:not(:disabled), infobar.question > revealer > box button, infobar.question > revealer > box button:hover, infobar.question > revealer > box button:focus, infobar.question > revealer > box button:active, infobar.question > revealer > box button:checked, infobar.question > revealer > box button.text-button:not(:disabled), infobar.question:backdrop > revealer > box button, infobar.question:backdrop > revealer > box button:hover, infobar.question:backdrop > revealer > box button:focus, infobar.question:backdrop > revealer > box button:active, infobar.question:backdrop > revealer > box button:checked, infobar.question:backdrop > revealer > box button.text-button:not(:disabled) { + color: rgba(0, 0, 0, 0.87); +} + +infobar.action > revealer > box *:link, infobar.action:backdrop > revealer > box *:link, infobar.question > revealer > box *:link, infobar.question:backdrop > revealer > box *:link { + color: rgba(0, 0, 0, 0.87); +} + +infobar.action:hover > revealer > box, infobar.question:hover > revealer > box { + background-color: #e9aaaa; +} + +infobar.warning > revealer > box, infobar.warning:backdrop > revealer > box { + background-color: #FBC02D; + color: rgba(0, 0, 0, 0.87); +} + +infobar.warning > revealer > box button, infobar.warning > revealer > box button:hover, infobar.warning > revealer > box button:focus, infobar.warning > revealer > box button:active, infobar.warning > revealer > box button:checked, infobar.warning > revealer > box button.text-button:not(:disabled), infobar.warning:backdrop > revealer > box button, infobar.warning:backdrop > revealer > box button:hover, infobar.warning:backdrop > revealer > box button:focus, infobar.warning:backdrop > revealer > box button:active, infobar.warning:backdrop > revealer > box button:checked, infobar.warning:backdrop > revealer > box button.text-button:not(:disabled) { + color: rgba(0, 0, 0, 0.87); +} + +infobar.warning > revealer > box *:link, infobar.warning:backdrop > revealer > box *:link { + color: rgba(0, 0, 0, 0.87); +} + +infobar.warning:hover > revealer > box { + background-color: #fbb814; +} + +infobar.error > revealer > box, infobar.error:backdrop > revealer > box { + background-color: #F44336; + color: #FFFFFF; +} + +infobar.error > revealer > box button, infobar.error > revealer > box button:hover, infobar.error > revealer > box button:focus, infobar.error > revealer > box button:active, infobar.error > revealer > box button:checked, infobar.error > revealer > box button.text-button:not(:disabled), infobar.error:backdrop > revealer > box button, infobar.error:backdrop > revealer > box button:hover, infobar.error:backdrop > revealer > box button:focus, infobar.error:backdrop > revealer > box button:active, infobar.error:backdrop > revealer > box button:checked, infobar.error:backdrop > revealer > box button.text-button:not(:disabled) { + color: #FFFFFF; +} + +infobar.error > revealer > box *:link, infobar.error:backdrop > revealer > box *:link { + color: #FFFFFF; +} + +infobar.error:hover > revealer > box { + background-color: #f32c1e; +} + +/************ + * Tooltips * + ************/ +tooltip { + padding: 6px 12px; + box-shadow: none; + border: none; +} + +tooltip.background { + background-color: rgba(29, 31, 43, 0.9); + color: #FFFFFF; + box-shadow: 0 2px 3px -1px rgba(0, 0, 0, 0.05), 0 4px 6px 0 rgba(0, 0, 0, 0.06), 0 1px 10px 0 rgba(0, 0, 0, 0.05); + border-radius: 6px; + margin: 2px 6px 8px 6px; +} + +tooltip > box { + border-spacing: 6px; +} + +/***************** + * Color Chooser * + *****************/ +colorswatch.top { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +colorswatch.top overlay { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +colorswatch.bottom { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.bottom overlay { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.left, colorswatch:first-child:not(.top) { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +colorswatch.left overlay, colorswatch:first-child:not(.top) overlay { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +colorswatch.right, colorswatch:last-child:not(.bottom) { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.right overlay, colorswatch:last-child:not(.bottom) overlay { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.dark { + color: #FFFFFF; +} + +colorswatch.light { + color: rgba(0, 0, 0, 0.87); +} + +colorchooser colorswatch:hover { + transition: box-shadow 200ms ease-out; + box-shadow: 0 0 0 2px #eebebe; +} + +colorswatch#add-color-button { + border-radius: 6px 0 0 6px; + color: #FFFFFF; +} + +colorswatch#add-color-button:only-child { + border-radius: 6px; +} + +colorswatch#add-color-button overlay { + background-color: rgba(255, 255, 255, 0.04); +} + +colorswatch#add-color-button overlay:hover { + background-color: rgba(255, 255, 255, 0.12); + box-shadow: none; +} + +colorswatch#add-color-button overlay:active { + background-color: rgba(255, 255, 255, 0.3); +} + +colorswatch:disabled { + opacity: 0.5; +} + +colorswatch:disabled overlay { + box-shadow: none; +} + +colorswatch#editor-color-sample { + border-radius: 6px; +} + +colorswatch#editor-color-sample overlay { + border-radius: 6px; +} + +colorswatch#editor-color-sample overlay:hover { + box-shadow: 0 2px 3px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -1px rgba(0, 0, 0, 0.17); +} + +colorchooser .popover.osd { + transition: box-shadow 200ms ease-out; + border-radius: 6px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15), 0 3px 3px 0 rgba(0, 0, 0, 0.18), 0 3px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); + background-color: #414559; +} + +colorchooser .popover.osd:backdrop { + box-shadow: 0 4px 3px -3px rgba(0, 0, 0, 0.2), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); +} + +/******** + * Misc * + ********/ +.content-view { + background-color: #303446; +} + +/********************** + * Window Decorations * + **********************/ +window { + border: none; +} + +window.csd { + border-radius: 12px; + outline-offset: -1px; + outline: 1px solid rgba(255, 255, 255, 0.1); + margin: 0; + transition: none; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 15px 16px 2px rgba(0, 0, 0, 0.14), 0 6px 18px 5px rgba(0, 0, 0, 0.12), 0 0 36px transparent, 0 0 0 1px rgba(0, 0, 0, 0.75); +} + +window.csd:backdrop { + transition: box-shadow 200ms ease-out; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15), 0 3px 3px 0 rgba(0, 0, 0, 0.18), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 0 36px transparent, 0 0 0 1px rgba(0, 0, 0, 0.75); +} + +window.csd.maximized, window.csd.fullscreen, window.csd.tiled, window.csd.tiled-top, window.csd.tiled-right, window.csd.tiled-bottom, window.csd.tiled-left { + border-radius: 0; + transition: none; +} + +window.csd.maximized, window.csd.fullscreen { + box-shadow: none; + outline: none; +} + +window.solid-csd { + margin: 0; + padding: 2px; + border-radius: 0; + background-color: #232634; + border: 1px solid #494c5c; +} + +window.solid-csd:backdrop { + background-color: #303446; +} + +window.ssd { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.12); +} + +windowcontrols > button:not(.suggested-action):not(.destructive-action) { + min-height: 16px; + min-width: 16px; + padding: 10px 0; + margin-left: 4px; + margin-right: 4px; +} + +windowcontrols > button.minimize:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:not(.suggested-action):not(.destructive-action) { + color: transparent; + background: none; +} + +windowcontrols > button.minimize:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.minimize:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:active:not(.suggested-action):not(.destructive-action) { + box-shadow: none; +} + +windowcontrols > button.minimize:active:not(.suggested-action):not(.destructive-action) > image, windowcontrols > button.maximize:active:not(.suggested-action):not(.destructive-action) > image, windowcontrols > button.close:active:not(.suggested-action):not(.destructive-action) > image { + box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.25); +} + +windowcontrols > button.minimize:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.minimize:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:active:not(.suggested-action):not(.destructive-action) { + color: rgba(0, 0, 0, 0.5); +} + +windowcontrols > button.minimize:backdrop:not(.suggested-action):not(.destructive-action) > image, windowcontrols > button.maximize:backdrop:not(.suggested-action):not(.destructive-action) > image, windowcontrols > button.close:backdrop:not(.suggested-action):not(.destructive-action) > image { + background-color: rgba(255, 255, 255, 0.3); +} + +windowcontrols > button.minimize:backdrop:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.minimize:backdrop:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:backdrop:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:backdrop:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:backdrop:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:backdrop:active:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.5); +} + +windowcontrols > button.minimize:not(.suggested-action):not(.destructive-action) > image { + background-color: #e5c890; +} + +windowcontrols > button.minimize:active:not(.suggested-action):not(.destructive-action) > image { + background-color: #ecd6ac; +} + +windowcontrols > button.maximize:not(.suggested-action):not(.destructive-action) > image { + background-color: #a6d189; +} + +windowcontrols > button.maximize:active:not(.suggested-action):not(.destructive-action) > image { + background-color: #bcdda7; +} + +windowcontrols > button.close:not(.suggested-action):not(.destructive-action) > image { + background-color: #e78284; +} + +windowcontrols > button.close:active:not(.suggested-action):not(.destructive-action) > image { + background-color: #eda1a3; +} + +windowcontrols { + border-spacing: 6px; +} + +windowcontrols:not(.empty).start:dir(ltr), windowcontrols:not(.empty).end:dir(rtl) { + margin-right: 6px; + margin-left: 6px; +} + +windowcontrols:not(.empty).start:dir(rtl), windowcontrols:not(.empty).end:dir(ltr) { + margin-left: 6px; + margin-right: 6px; +} + +windowcontrols > button:not(.suggested-action):not(.destructive-action) > image { + border-radius: 100%; + padding: 0; +} + +.view:selected, iconview:selected, gridview > child:selected, columnview.view:selected, +treeview.view:selected, calendar:selected, calendar > grid > label.day-number:selected { + background-color: alpha(currentColor, 0.06); +} + +flowbox > flowboxchild:selected, calendar > grid > label.today { + color: #eebebe; + background-color: rgba(238, 190, 190, 0.2); +} + +textview text selection:focus, textview text selection, label > selection, +entry > text > selection, spinbutton > text > selection, +entry headerbar popover.background entry > text > selection, +headerbar popover.background entry entry > text > selection, calendar > grid > label.today:selected { + color: rgba(0, 0, 0, 0.87); + background-color: #eebebe; +} + +/********************** + * Touch Copy & Paste * + **********************/ +cursor-handle { + color: #eebebe; + -gtk-icon-source: -gtk-recolor(url("assets/scalable/cursor-handle-symbolic.svg")); +} + +cursor-handle.insertion-cursor:dir(ltr), cursor-handle.insertion-cursor:dir(rtl) { + padding-top: 6px; +} + +shortcuts-section { + margin: 20px; +} + +.shortcuts-search-results { + margin: 20px; + border-spacing: 24px; +} + +shortcut { + border-spacing: 6px; +} + +shortcut > .keycap { + min-width: 12px; + min-height: 26px; + margin-top: 2px; + padding-bottom: 2px; + padding-left: 8px; + padding-right: 8px; + border: solid 1px rgba(255, 255, 255, 0.12); + border-radius: 7px; + box-shadow: inset 0 -2px rgba(255, 255, 255, 0.12); + background-color: #414559; + color: #FFFFFF; + font-size: smaller; +} + +:not(decoration):not(window):drop(active) { + caret-color: #eebebe; +} + +stackswitcher { + min-height: 0; + padding: 3px; + margin: 6px 0; + border-radius: 9px; + background-color: rgba(255, 255, 255, 0.04); + border: none; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action) { + margin: 0 0; + background-color: transparent; + border-radius: 6px; + padding: 3px 10px; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 100px; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action):focus:not(:hover):not(:checked) { + box-shadow: none; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action):hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action):active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action):checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, background-color 0ms; + background-color: rgba(255, 255, 255, 0.15); + color: #FFFFFF; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +stackswitcher button.text-button { + min-width: 100px; +} + +stackswitcher button.circular, +stackswitcher button.text-button.circular { + min-width: 36px; + min-height: 36px; + padding: 0; +} + +/************* + * App Icons * + *************/ +.lowres-icon { + -gtk-icon-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.icon-dropshadow { + -gtk-icon-shadow: 0 1px 12px rgba(0, 0, 0, 0.05), 0 1px 6px rgba(0, 0, 0, 0.1); +} + +/********* + * Emoji * + *********/ +popover.emoji-picker { + padding: 0; +} + +popover.emoji-picker > contents { + padding: 0; +} + +.emoji-searchbar { + padding: 6px; + border-spacing: 6px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); + background: none; +} + +.emoji-searchbar entry text { + background: none; + box-shadow: none; +} + +.emoji-toolbar { + padding: 0; + border-spacing: 3px; + border-top: 1px solid rgba(255, 255, 255, 0.12); + background: none; +} + +button.emoji-section { + margin: 0; + padding: 6px; + border-radius: 6px; +} + +button.emoji-section:checked { + color: #eebebe; +} + +popover.emoji-picker emoji { + font-size: x-large; + padding: 6px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 6px; +} + +popover.emoji-picker emoji:focus, popover.emoji-picker emoji:hover { + background: alpha(currentColor, 0.08); +} + +emoji-completion-row { + min-height: 28px; + padding: 0 12px; +} + +emoji-completion-row > box { + border-spacing: 6px; + padding: 2px 6px; +} + +emoji-completion-row:focus, emoji-completion-row:hover, +emoji-completion-row emoji:hover, emoji-completion-row emoji:focus { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +popover.entry-completion > contents { + padding: 0; +} + +.nautilus-window placesview label { + color: rgba(255, 255, 255, 0.7); +} + +.nautilus-window .floating-bar { + min-height: 32px; + padding: 0; + margin: 6px; + border-style: none; + border-radius: 6px; + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.05), 0 2px 3px -1px rgba(0, 0, 0, 0.06), 0 1px 4px 0 rgba(0, 0, 0, 0.05); +} + +.nautilus-window .floating-bar button { + margin: 4px; + color: rgba(0, 0, 0, 0.87); +} + +#NautilusQueryEditor > menubutton > button.image-button { + min-width: 24px; + min-height: 24px; +} + +#NautilusQueryEditor > text, #NautilusQueryEditor > box, #NautilusQueryEditor > menubutton > button.image-button { + margin: 6px 0; +} + +#NautilusQueryEditorTag { + background-color: rgba(255, 255, 255, 0.12); +} + +#NautilusQueryEditorTag > button.image-button { + margin: 0; + padding: 0; +} + +#NautilusPathBar { + background-color: rgba(255, 255, 255, 0.04); + border-radius: 6px; + margin: 6px 0; +} + +#NautilusPathButton { + margin: 0 3px; + border-radius: 6px; +} + +#NautilusPathButton.current-dir { + color: #FFFFFF; +} + +#NautilusPathButton.current-dir:hover, #NautilusPathButton.current-dir:active { + background: none; + box-shadow: none; +} + +#NautilusPathButton:first-child { + margin-left: 0; +} + +#NautilusViewCell clamp box { + margin: 0; + border-spacing: 0; +} + +window.dialog > box > stack > box > box > notebook.frame { + border-width: 0 0 0 1px; + border-radius: 0; +} + +.display-container.card { + border-radius: 0; + box-shadow: none; + border-width: 0 0 1px 0; +} + +.display-container .history-view { + background-color: #303446; +} + +.display-container #displayitem { + padding: 0 12px 8px 0; + font-size: 1.4em; + border-top: 1px solid rgba(255, 255, 255, 0.12); +} + +.math-buttons button { + font-size: 1.1em; + padding: 2px 6px; +} + +.math-buttons button.text-button { + padding-left: 16px; + padding-right: 16px; +} + +leaflet button.number-button { + background-color: rgba(255, 255, 255, 0.1); +} + +leaflet button.number-button:hover { + background-color: rgba(255, 255, 255, 0.2); +} + +leaflet button.number-button:active { + background-color: rgba(255, 255, 255, 0.3); +} + +label.primary-label, label.month-name, label.secondary-label { + font-size: 16pt; + font-weight: bold; + padding: 12px; +} + +label.primary-label, label.month-name { + color: #eebebe; +} + +label.secondary-label { + color: rgba(255, 255, 255, 0.5); +} + +calendar-view { + font-size: 10pt; +} + +calendar-view:selected { + color: #eebebe; + font-weight: bold; +} + +calendar-view.header, +label.header { + font-size: 10pt; + font-weight: bold; + color: rgba(255, 255, 255, 0.5); +} + +calendar-view.current, +weekgrid.current { + background-color: alpha(#eebebe, 0.3); +} + +popover.events { + background-color: #303446; + padding: 0; +} + +popover.events box { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +popover.events list { + background-color: #303446; + border-radius: 6px; +} + +popover.events scrolledwindow { + border-width: 0; +} + +popover.events button { + border-radius: 6px; + border-top-left-radius: 0; + border-top-right-radius: 0; + border-style: solid none none; + box-shadow: none; +} + +event { + margin: 1px; + font-size: 0.9rem; +} + +event widget.content { + margin: 4px; +} + +event.timed, event:not(.slanted):not(.slanted-start):not(.slanted-end) { + border-radius: 6px; +} + +event.timed widget.edge { + border-radius: 3px; + min-width: 5px; +} + +event.slanted-start, event.slanted-end:dir(rtl) { + padding-left: 16px; + border-radius: 0 3px 3px 0; +} + +event.slanted-end, event.slanted-start:dir(rtl) { + padding-right: 16px; + border-radius: 3px 0 0 3px; +} + +event:not(.timed).color-dark { + color: white; + outline-color: rgba(0, 0, 0, 0.3); +} + +event.timed, event:not(.timed).color-light { + color: alpha(black, 0.75); + outline-color: rgba(255, 255, 255, 0.5); +} + +popover.event-popover, +popover.event-popover > contents { + padding: 0; +} + +.search-viewport { + background-color: #303446; +} + +.calendar-list { + background-color: transparent; +} + +.calendar-list > list { + border-radius: 4px; +} + +.calendar-color-image { + -gtk-icon-filter: none; +} + +image.calendar-color-image, +button:active:not(:backdrop) .calendar-color-image, +button:checked:not(:backdrop) .calendar-color-image, +.calendars-list .calendar-color-image:not(:backdrop):not(:disabled), +.calendar-list .calendar-color-image:not(:backdrop):not(:disabled), +.sources-button:not(:backdrop):not(:disabled) .calendar-color-image { + -gtk-icon-shadow: 0 1px alpha(black, 0.1); +} + +datechooser navigator { + margin-right: 6px; + margin-left: 6px; + margin-bottom: 6px; +} + +datechooser navigator label { + font-weight: bold; +} + +datechooser navigator button.toggle, datechooser navigator button.image-button { + min-height: 36px; + min-width: 36px; + padding: 0; +} + +datechooser .weeknum, datechooser .weekday { + color: rgba(255, 255, 255, 0.5); + font-size: smaller; +} + +datechooser button.day { + font-size: 10pt; + font-weight: normal; + margin: 3px; + padding: 0; + min-height: 36px; + min-width: 36px; + transition: none; +} + +datechooser button.day dot { + background-color: #FFFFFF; + border-radius: 50%; + min-height: 3px; + min-width: 3px; +} + +datechooser button.day:selected, datechooser button.day.today:selected { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); + font-weight: bold; +} + +datechooser button.day:selected dot, datechooser button.day.today:selected dot { + background-color: rgba(0, 0, 0, 0.87); +} + +datechooser button.day.today { + color: #eebebe; +} + +datechooser button.day.today dot { + background-color: #eebebe; +} + +datechooser button.day.other-month:not(:hover), datechooser button.day.other-month:backdrop { + color: alpha(currentColor, 0.1); +} + +datechooser button.day.other-month:not(:hover) dot, datechooser button.day.other-month:backdrop dot { + background-color: alpha(currentColor, 0.1); +} + +datechooser button.day.other-month:hover:not(:backdrop) { + color: rgba(255, 255, 255, 0.5); +} + +datechooser button.day.other-month:hover:not(:backdrop) dot { + background-color: rgba(255, 255, 255, 0.5); +} + +.week-header { + padding: 0; +} + +.week-header > box:first-child { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +.week-header .week-number { + font-size: 16pt; + font-weight: bold; + padding: 12px 12px 18px 12px; + color: rgba(255, 255, 255, 0.3); +} + +.week-header.week-temperature { + font-size: 10pt; + font-weight: bold; + color: rgba(255, 255, 255, 0.5); +} + +.week-header.lines { + color: rgba(255, 255, 255, 0.12); +} + +weekhourbar > label { + font-size: 10pt; + padding: 4px 6px; +} + +.week-view .lines { + color: rgba(255, 255, 255, 0.12); +} + +weekgrid > widget.now-strip { + background-color: alpha(#eebebe, 0.8); + margin: 0 0 0 1px; + min-height: 3px; +} + +weekgrid:selected, weekgrid.dnd, +.week-header:selected, +.week-header.dnd { + background-color: alpha(#eebebe, 0.25); +} + +monthcell { + border: solid 1px rgba(255, 255, 255, 0.12); + border-width: 1px 0 0 1px; + background-color: transparent; + transition: background-color 200ms; +} + +monthcell:hover:not(.out-of-month):not(.today) { + background-color: #232634; + transition: background-color 200ms; + color: #FFFFFF; +} + +monthcell:selected { + background-color: alpha(#eebebe, 0.1); +} + +monthcell:selected:hover { + background-color: alpha(#eebebe, 0.2); +} + +monthcell:selected label.day-label { + font-weight: bold; +} + +monthcell:nth-child(7n + 1) { + border-left-width: 0; +} + +monthcell.today { + background-color: alpha(#eebebe, 0.2); +} + +monthcell.today:hover { + background-color: alpha(#eebebe, 0.3); + color: #eebebe; +} + +monthcell.today:selected { + background-color: alpha(#eebebe, 0.25); +} + +monthcell.today:selected:hover { + background-color: alpha(#eebebe, 0.35); +} + +monthcell label { + color: #FFFFFF; + font-size: 0.9rem; +} + +monthcell label.day-label { + font-size: 1rem; +} + +monthcell.out-of-month { + background-color: rgba(255, 255, 255, 0.04); +} + +monthcell.out-of-month label { + color: rgba(255, 255, 255, 0.7); +} + +monthcell button { + padding: 0 6px; + border-radius: 0; + border-bottom: none; + border-right: none; +} + +monthpopover > box { + margin: 0; + padding: 0; + background-color: transparent; +} + +.notes-section box > textview { + border-radius: 6px; + padding: 6px; +} + +.notes-section box > textview > text { + background: none; +} + +agenda-view list > row { + padding: 2px 12px; +} + +agenda-view list > label { + padding: 6px 12px; +} + +agenda-view > scrolledwindow > viewport > list.background { + background-color: transparent; +} + +label.no-events { + font-style: italic; +} + +searchbutton > popover > arrow { + background: none; + border: none; +} + +datechooser { + padding: 6px; +} + +datechooser .current-week { + background: alpha(#232634, 0.7); + color: #FFFFFF; + border-radius: 6px; +} + +menubutton.sources-button { + margin-top: 0; + margin-bottom: 0; + border-radius: 0; + border-top-style: none; + border-bottom-style: none; +} + +menubutton.sources-button:hover:not(:backdrop) { + background-image: none; + text-shadow: none; +} + +menubutton.sources-button > button { + border-radius: 0; +} + +menubutton.sources-button > button .title { + font-size: 10pt; + font-weight: normal; + padding: 0 6px; +} + +menubutton.sources-button > button .subtitle { + font-size: 8pt; + padding: 0 6px; +} + +menubutton.sources-button > button .calendar-color-image { + -gtk-icon-size: 12px; +} + +menubutton stack > box { + border-spacing: 6px; +} + +.topbar headerbar menubutton.sources-button > button { + border-radius: 0 0 6px 6px; +} + +.contacts-contact-list list.navigation-sidebar { + background: none; +} + +.details-page { + margin: 24px 0px; +} + +.installed-overlay-box { + font-size: smaller; + background-color: #eebebe; + border-radius: 0; + color: rgba(0, 0, 0, 0.87); + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); +} + +screenshot-carousel box.frame { + border-width: 1px 0; + border-radius: 0; +} + +screenshot-carousel button, +.featured-carousel button { + margin: 12px; +} + +.screenshot-image-main .image1, +.screenshot-image-main .image2 { + margin-top: 6px; + margin-bottom: 12px; + margin-left: 6px; + margin-right: 6px; +} + +.app-tile-label { + font-size: 105%; +} + +.review-textbox { + padding: 6px; +} + +.origin-rounded-box { + background-color: rgba(255, 255, 255, 0.12); + border-radius: 9999px; + padding: 4px; +} + +.origin-beta { + color: #FBC02D; +} + +.origin-button > button { + padding: 3px 9px; +} + +.card flowboxchild.card { + border: none; + box-shadow: none; + padding: 0; + background: none; +} + +button.card.category-tile { + padding: 21px; + border: none; + border-radius: 6px; + min-width: 140px; + font-weight: 900; + font-size: larger; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.05), 0 2px 3px -1px rgba(0, 0, 0, 0.06), 0 1px 4px 0 rgba(0, 0, 0, 0.05); +} + +button.card.category-tile.category-tile-iconless { + padding: 9px 15px; + min-width: 130px; + font-size: 105%; + font-weight: normal; + box-shadow: none; +} + +button.card.category-tile.category-create { + background: linear-gradient(180deg, #ce8cd7 0%, #2861c6 100%); + color: white; +} + +button.card.category-tile.category-create:hover { + background: linear-gradient(180deg, shade(#ce8cd7, 1.07) 0%, shade(#2861c6, 1.1) 100%); + color: white; +} + +button.card.category-tile.category-create:active { + background: linear-gradient(180deg, shade(#ce8cd7, 0.95) 0%, shade(#2861c6, 0.95) 100%); + color: white; +} + +button.card.category-tile.category-develop { + background: #5e5c64; + color: white; +} + +button.card.category-tile.category-develop:hover { + background: shade(#5e5c64, 1.2); + color: white; +} + +button.card.category-tile.category-develop:active { + background-color: shade(#5e5c64, 0.95); + color: white; +} + +button.card.category-tile.category-learn { + background: linear-gradient(180deg, #2ec27e 30%, #27a66c 100%); + color: white; +} + +button.card.category-tile.category-learn:hover { + background: linear-gradient(180deg, shade(#2ec27e, 1.06) 30%, shade(#27a66c, 1.06) 100%); + color: white; +} + +button.card.category-tile.category-learn:active { + background: linear-gradient(180deg, shade(#2ec27e, 0.95) 30%, shade(#27a66c, 0.95) 100%); + color: white; +} + +button.card.category-tile.category-play { + background: linear-gradient(75deg, #f9e2a7 0%, #eb5ec3 50%, #6d53e0 100%); + color: #393484; +} + +button.card.category-tile.category-play:hover { + background: linear-gradient(75deg, shade(#f9e2a7, 1.07) 0%, shade(#eb5ec3, 1.07) 50%, shade(#6d53e0, 1.07) 100%); + color: #393484; +} + +button.card.category-tile.category-play:active { + background: linear-gradient(75deg, shade(#f9e2a7, 0.97) 0%, shade(#eb5ec3, 0.95) 50%, shade(#6d53e0, 1.07) 100%); + color: #393484; +} + +button.card.category-tile.category-socialize { + background: linear-gradient(90deg, #ef4e9b 0%, #f77466 100%); + color: rgba(255, 255, 255, 0.7); +} + +button.card.category-tile.category-socialize:hover { + background: linear-gradient(90deg, shade(#ef4e9b, 1.08) 0%, shade(#f77466, 1.08) 100%); +} + +button.card.category-tile.category-socialize:active { + background: linear-gradient(90deg, shade(#ef4e9b, 0.95) 0%, shade(#f77466, 0.95) 100%); +} + +button.card.category-tile.category-work { + padding: 1px; + /* FIXME: work around https://gitlab.gnome.org/GNOME/gtk/-/issues/4324 */ + color: #1c71d8; + background-color: #fdf8d7; + background-image: linear-gradient(rgba(255, 255, 255, 0.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px); + background-size: 10px 10px, 10px 10px; + background-position: -1px -4px, center -1px; +} + +button.card.category-tile.category-work:hover { + color: #1c71d8; + background-color: #fefcef; + background-image: linear-gradient(rgba(255, 255, 255, 0.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px); +} + +button.card.category-tile.category-work:active { + color: #1c71d8; + background-color: #fcf4bf; + background-image: linear-gradient(rgba(255, 255, 255, 0.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px); +} + +clamp.medium .category-tile:not(.category-tile-iconless), +clamp.large .category-tile:not(.category-tile-iconless) { + font-size: larger; +} + +.featured-tile { + padding: 0; + box-shadow: none; + color: #FFFFFF; +} + +.featured-tile label.title-1 { + margin-top: 6px; + margin-bottom: 6px; +} + +.featured-tile.narrow label.title-1 { + font-size: 16pt; +} + +.application-details-infobar, .application-details-infobar.info { + background-color: rgba(255, 255, 255, 0.04); + color: #FFFFFF; + border: 1px solid rgba(255, 255, 255, 0.12); +} + +.application-details-infobar.warning { + background-color: #FBC02D; + color: rgba(0, 0, 0, 0.87); + border: 1px solid rgba(0, 0, 0, 0.12); +} + +@keyframes install-progress-unknown-move { + 0% { + background-position: 0%; + } + 50% { + background-position: 100%; + } + 100% { + background-position: 0%; + } +} + +.application-details-description .button { + padding-left: 24px; + padding-right: 24px; +} + +.install-progress { + background-image: linear-gradient(to top, #eebebe 2px, alpha(#eebebe, 0) 2px); + background-repeat: no-repeat; + background-position: 0 bottom; + background-size: 0; + transition: none; +} + +.install-progress:dir(rtl) { + background-position: 100% bottom; +} + +.review-row > * { + margin: 12px; +} + +.review-row button { + font-size: smaller; +} + +.review-row .vote-buttons button { + margin-right: -1px; +} + +.review-row .vote-buttons button:not(:first-child) { + border-image: linear-gradient(to top, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.12)) 0 0 0 1/5px 0 5px 1px; +} + +.review-row .vote-buttons button:hover, +.review-row .vote-buttons button:active, +.review-row .vote-buttons button:hover + button, +.review-row .vote-buttons button:active + button { + border-image: none; +} + +review-bar { + color: rgba(255, 255, 255, 0.5); + background-image: none; + background-color: rgba(255, 255, 255, 0.3); +} + +.review-histogram star-image { + color: rgba(255, 255, 255, 0.5); +} + +.version-arrow-label { + font-size: x-small; +} + +.overview-more-button { + font-size: smaller; + padding: 0 16px; +} + +.app-row-origin-text { + font-size: smaller; +} + +.app-listbox-header { + padding: 6px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +.image-list { + background-color: transparent; +} + +box.star { + background-color: transparent; + background-image: none; +} + +button.star { + outline-offset: 0; + background-color: transparent; + background-image: none; + border-image: none; + border-radius: 0; + border-width: 0; + padding: 0; + box-shadow: none; + outline-offset: -1px; +} + +star-image { + color: #FFD600; +} + +.dimmer-label { + opacity: 0.25; +} + +.update-failed-details { + font-family: Monospace; + font-size: smaller; + padding: 16px; +} + +.upgrade-banner { + padding: 0px; + border-radius: 6px; + border: none; +} + +.upgrade-banner-background { + background: linear-gradient(to bottom, #66BB6A, #5b9bf8); + color: white; +} + +.upgrade-buttons #button_upgrades_install { + padding-left: 16px; + padding-right: 16px; +} + +scrolledwindow.list-page > viewport > clamp > box { + margin: 24px 12px; + border-spacing: 24px; +} + +.update-preferences preferencesgroup > box > box { + margin-top: 18px; +} + +.section > label:not(:first-child) { + margin-top: 6px; +} + +.section > box:not(:first-child) { + margin-top: 12px; +} + +clamp.status-page { + margin: 36px 12px; +} + +clamp.status-page .iconbox { + min-height: 128px; + min-width: 128px; +} + +clamp.status-page .icon { + color: rgba(255, 255, 255, 0.5); + min-height: 32px; + min-width: 32px; +} + +clamp.status-page .icon:not(:last-child) { + margin-bottom: 36px; +} + +clamp.status-page .title:not(:last-child) { + margin-bottom: 12px; +} + +app-context-bar .context-tile { + border: 1px solid rgba(255, 255, 255, 0.12); + background-color: transparent; + border-radius: 0; + padding: 24px 12px 21px 12px; + outline-offset: 5px; + transition-property: outline, outline-offset, background-image; + border-bottom: none; + border-right: none; +} + +app-context-bar .context-tile:hover { + background-image: none; + background-color: alpha(currentColor, 0.08); +} + +app-context-bar .context-tile.keyboard-activating, app-context-bar .context-tile:active { + background-color: alpha(currentColor, 0.12); +} + +app-context-bar .context-tile:focus:focus-visible { + outline-offset: -1px; +} + +app-context-bar.horizontal box:first-child .context-tile:first-child, app-context-bar.vertical .context-tile:first-child { + border-left: none; +} + +app-context-bar.horizontal .context-tile, app-context-bar.vertical box:first-child .context-tile { + border-top: none; +} + +app-context-bar > box:not(:first-child) > button.flat { + border-radius: 0; +} + +app-context-bar > box:not(:first-child) > button.flat:last-child { + border-radius: 0 6px 6px 0; +} + +app-context-bar > box:first-child > button.flat { + border-radius: 0; +} + +app-context-bar > box:first-child > button.flat:first-child { + border-radius: 6px 0 0 6px; +} + +app-context-bar > box > button.flat { + border-left-color: rgba(255, 255, 255, 0.12); +} + +carousel.card { + border: none; + background-color: rgba(255, 255, 255, 0.04); +} + +.context-tile-lozenge { + min-height: 28px; + min-width: 28px; + padding: 6px; + font-size: 18px; + font-weight: bold; + border-radius: 9999px; +} + +.context-tile-lozenge.large { + font-size: 24px; + padding: 16px; + min-width: 24px; + /* 60px minus the left and right padding */ + min-height: 24px; + /* 60px minus the top and bottom padding */ +} + +.context-tile-lozenge.wide-image image { + margin-top: -28px; + margin-bottom: -28px; +} + +.context-tile-lozenge image { + -gtk-icon-style: symbolic; +} + +.context-tile-lozenge.grey { + color: #FFFFFF; + background-color: rgba(255, 255, 255, 0.12); +} + +.context-tile-lozenge.green, .context-tile-lozenge.details-rating-0 { + color: #419345; + background-color: rgba(102, 187, 106, 0.15); +} + +.context-tile-lozenge.blue, .context-tile-lozenge.details-rating-5 { + color: #5b9bf8; + background-color: rgba(91, 155, 248, 0.15); +} + +.context-tile-lozenge.yellow, .context-tile-lozenge.details-rating-12 { + color: #d79b04; + background-color: rgba(251, 192, 45, 0.15); +} + +.context-tile-lozenge.details-rating-15 { + color: #FF8A65; + background-color: rgba(255, 138, 101, 0.15); +} + +.context-tile-lozenge.red, .context-tile-lozenge.details-rating-18 { + color: #d2190b; + background-color: rgba(244, 67, 54, 0.15); +} + +.eol-red { + font-weight: bold; + color: #F44336; +} + +window.narrow .app-title { + font-size: 16pt; +} + +window.narrow .app-developer { + font-size: small; +} + +.install-progress-label { + font-size: smaller; + font-feature-settings: "tnum"; +} + +scrolledwindow.fake-adw-status-page > viewport > box { + margin: 36px 12px; +} + +scrolledwindow.fake-adw-status-page > viewport > box > clamp:not(:last-child) > box { + margin-bottom: 36px; +} + +scrolledwindow.fake-adw-status-page > viewport > box > clamp > box > .icon:not(:last-child) { + margin-bottom: 36px; +} + +scrolledwindow.fake-adw-status-page > viewport > box > clamp > box > .title:not(:last-child) { + margin-bottom: 12px; +} + +statuspage.icon-dropshadow image.icon { + -gtk-icon-shadow: 0 1px 12px rgba(0, 0, 0, 0.05), 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); +} + +window.info scrollbar.vertical { + margin-top: 48px; + background: none; + box-shadow: none; +} + +window.info scrollbar.vertical trough { + margin-top: 0; +} + +row.app > box.header { + margin-left: 12px; + margin-right: 12px; +} + +row.app > box.header { + border-spacing: 12px; +} + +row.app > box.header > image { + margin-top: 12px; + margin-bottom: 12px; +} + +row.app label.warning { + color: #F44336; +} + +@keyframes pre-delay { + from { + opacity: 0; + } + to { + opacity: 0; + } +} + +@keyframes fade-in { + from { + filter: opacity(0%); + } +} + +/* Give a fade-in animation to spinners. */ +spinner.fade-in:checked { + animation: pre-delay 0.5s linear 1, fade-in 1s linear 1, spin 1s linear infinite; + animation-delay: 0s, 0.5s, 0.5s; +} + +window > contents > leaflet > box > stack.background { + background-color: transparent; + background-image: linear-gradient(to bottom, transparent, transparent 48px, #303446 48px, #303446); +} + +@define-color weather_temp_chart_fill_color rgba(251, 192, 45, 0.5); +@define-color weather_temp_chart_stroke_color #f0ad05; +@define-color weather_thermometer_warm_color #FBC02D; +@define-color weather_thermometer_cold_color #5b9bf8; +#places-label { + font-weight: bold; +} + +#temperature-label { + font-size: 32pt; + font-weight: 900; + margin-left: 9px; +} + +#conditions-grid *:backdrop { + color: rgba(255, 255, 255, 0.7); +} + +.content-view.cell { + font-weight: bold; +} + +#locationEntry { + margin: 6px; +} + +.weather-popover { + margin-top: 6px; +} + +.forecast-card { + transition: border-radius 100ms ease-out; + border-radius: 6px; +} + +.forecast-card separator { + background-color: rgba(255, 255, 255, 0.12); +} + +#daily-forecast-box > separator:last-child { + background-color: transparent; + min-width: 0; +} + +#conditions-grid, +#attributionGrid { + margin-left: 18px; + margin-right: 18px; +} + +#weather-page .small .forecast-card { + margin-left: 0; + margin-right: 0; + border-radius: 0; + border-width: 1px 0; +} + +.forecast-temperature-label { + font-weight: bold; + color: #ae7b03; +} + +WeatherThermometer { + margin-bottom: 12px; +} + +WeatherThermometer > label.high { + font-weight: bold; + color: #FBC02D; +} + +WeatherThermometer > label.low { + font-weight: bold; + color: #5b9bf8; +} + +.forecast-button { + margin: 0 12px; +} + +.forecast-graphic { + margin: 18px; +} + +button.osd.circular { + border-radius: 9999px; + min-width: 24px; + min-height: 24px; +} + +button.osd.circular > image { + padding: 0; +} + +scrolledwindow.inline list, +scrolledwindow.inline listview { + background: none; + color: inherit; +} + +scrolledwindow.inline undershoot.top { + box-shadow: inset 0 1px rgba(255, 255, 255, 0.12); +} + +.search-view { + background-color: #3c84f7; + color: #FFFFFF; +} + +.search-view menubutton button:focus:focus-visible { + outline-color: rgba(255, 255, 255, 0.3); +} + +image.circular { + min-width: 36px; + min-height: 36px; + padding: 0; + border-radius: 9999px; +} + +.large-button { + padding: 6px; +} + +.alarm-time { + font-size: 2.5em; + font-weight: 300; +} + +.clocks-ampm-toggle-button, +.clocks-secondary-standalone-label { + font-size: 18pt; +} + +.clocks-standalone-label, +.clocks-ringing-label { + font-size: 6em; + font-weight: 300; +} + +.clocks-ringing-title { + font-size: 1.5em; + font-weight: bold; +} + +.clocks-alarm-setup-time { + font-size: 32pt; +} + +.clocks-timer-label, +.clocks-spinbutton { + font-size: 48pt; +} + +.timer-panel .timer-header { + font-size: 20pt; + font-weight: 300; +} + +.timer-countdown { + font-size: 40pt; + font-weight: 300; +} + +/* Stopwatch Panel */ +.lap-time { + font-weight: bold; +} + +.stopped-stopwatch label, +.running-stopwatch label, +.paused-stopwatch label { + font-size: 70px; + font-weight: lighter; +} + +.stopped-stopwatch .seconds-label { + font-weight: 300; +} + +.running-stopwatch .seconds-label, +.running-stopwatch .miliseconds-label { + color: #eebebe; +} + +.stopped-stopwatch .miliseconds-label, +.running-stopwatch .miliseconds-label, +.paused-stopwatch .miliseconds-label { + font-size: 50px; +} + +.running-stopwatch .seconds-label, +.paused-stopwatch .seconds-label { + font-weight: 300; +} + +.clock-location { + font-weight: bolder; +} + +.hidden { + opacity: 0; +} + +.clock-time { + font-size: 2em; + padding: 0.2em 0.5em; + border-radius: 1em; +} + +.none .clock-time { + background: alpha(currentColor, 0.2); +} + +.night .clock-time { + color: #3c84f7; + background-color: alpha(#5b9bf8, 0.25); +} + +.naut .clock-time, +.astro .clock-time { + color: #FF7043; + background-color: alpha(#FF8A65, 0.25); +} + +.civil .clock-time, +.day .clock-time { + color: #FFD600; + background: alpha(#FBC02D, 0.25); +} + +headerbar splitbutton notification button { + margin: 0; + min-height: 24px; + min-width: 24px; + padding: 0; +} + +popover.background.global-search > arrow, popover.background.global-search > contents { + padding: 0; +} + +panelframeswitcher { + padding: 3px; +} + +.frameheader.header { + min-height: 24px; + background-color: #232634; +} + +.frameheader.header > button { + border: none; + margin: 0; + padding: 3px; +} + +.frameheader.header tabbar.inline > revealer > box { + min-height: 24px; +} + +.frameheader.header tabbar.inline > revealer > box .start-action { + padding: 0; + border: none; +} + +.frameheader.header tabbar.inline > revealer > box .end-action { + padding: 0; + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +.frameheader.header tabbar.inline > revealer > box tabbox { + border: none; + background: none; +} + +panelstatusbar > menubutton > button, +panelstatusbar > paneltogglebutton button { + border-radius: 0; +} + +.style-variant { + padding: 0 12px; +} + +.style-variant button.toggle { + padding: 0; +} + +.style-variant button.toggle, .style-variant button.toggle:hover, .style-variant button.toggle:focus, .style-variant button.toggle:active, .style-variant button.toggle:checked { + background: none; + outline: none; + border: none; + box-shadow: none; +} + +.style-variant button.toggle > stylevariantpreview > .wallpaper { + border-radius: 6px; + outline-color: transparent; + outline-width: 3px; + outline-offset: 3px; + outline-style: solid; + box-shadow: none; +} + +.style-variant button.toggle:hover > stylevariantpreview > .wallpaper { + outline-color: rgba(255, 255, 255, 0.04); +} + +.style-variant button.toggle:active > stylevariantpreview > .wallpaper { + outline-color: rgba(255, 255, 255, 0.3); +} + +.style-variant button.toggle:checked > stylevariantpreview > .wallpaper { + outline-color: #eebebe; +} + +playlistview scrollbar.overlay-indicator.dragging, playlistview scrollbar.overlay-indicator.hovering { + background-color: transparent; +} + +playlistview queuerow picture.cover, +playlistview queuerow image.card { + border: none; +} + +window.dialog > .dialog-vbox > box > scrolledwindow > viewport > widget > list.boxed-list { + border: none; + border-radius: 0; +} + +window.dialog > .dialog-vbox > box > scrolledwindow > viewport > widget > list.boxed-list > row:first-child, window.dialog > .dialog-vbox > box > scrolledwindow > viewport > widget > list.boxed-list > row:last-child { + border-radius: 0; +} + +avatar { + border-radius: 9999px; + font-weight: bold; +} + +avatar.color1 { + background-image: linear-gradient(#83b6ec, #337fdc); + color: #cfe1f5; +} + +avatar.color2 { + background-image: linear-gradient(#7ad9f1, #0f9ac8); + color: #caeaf2; +} + +avatar.color3 { + background-image: linear-gradient(#8de6b1, #29ae74); + color: #cef8d8; +} + +avatar.color4 { + background-image: linear-gradient(#b5e98a, #6ab85b); + color: #e6f9d7; +} + +avatar.color5 { + background-image: linear-gradient(#f8e359, #d29d09); + color: #f9f4e1; +} + +avatar.color6 { + background-image: linear-gradient(#ffcb62, #d68400); + color: #ffead1; +} + +avatar.color7 { + background-image: linear-gradient(#ffa95a, #ed5b00); + color: #ffe5c5; +} + +avatar.color8 { + background-image: linear-gradient(#f78773, #e62d42); + color: #f8d2ce; +} + +avatar.color9 { + background-image: linear-gradient(#e973ab, #e33b6a); + color: #fac7de; +} + +avatar.color10 { + background-image: linear-gradient(#cb78d4, #9945b5); + color: #e7c2e8; +} + +avatar.color11 { + background-image: linear-gradient(#9e91e8, #7a59ca); + color: #d5d2f5; +} + +avatar.color12 { + background-image: linear-gradient(#e3cf9c, #b08952); + color: #f2eade; +} + +avatar.color13 { + background-image: linear-gradient(#be916d, #785336); + color: #e5d6ca; +} + +avatar.color14 { + background-image: linear-gradient(#c0bfbc, #6e6d71); + color: #d8d7d3; +} + +avatar.contrasted { + color: white; +} + +avatar.image { + background: none; +} + +.card { + border-radius: 6px; + border: 1px solid rgba(255, 255, 255, 0.12); + background-clip: border-box; + color: rgba(255, 255, 255, 0.7); + box-shadow: none; + outline: none; + background-color: #303446; + color: #FFFFFF; +} + +.card.activatable { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.card.activatable:hover { + background-image: none; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +.card.activatable:active { + background-image: none; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +toast { + margin: 12px; + margin-bottom: 24px; + border-radius: 9999px; + border-spacing: 6px; + padding: 6px; + box-shadow: 0 2px 3px -1px rgba(0, 0, 0, 0.1), 0 4px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 10px 0 rgba(0, 0, 0, 0.1), inset 0 1px rgba(255, 255, 255, 0.1); + background-color: #303446; + color: #FFFFFF; + border: none; +} + +toast:dir(ltr) { + padding-left: 12px; +} + +toast:dir(rtl) { + padding-right: 12px; +} + +toast > label { + margin: 0 6px; +} + +viewswitcher { + margin: 0; + border-spacing: 3px; +} + +viewswitcher.wide { + margin-top: 6px; + margin-bottom: 6px; +} + +viewswitcher.wide button.toggle { + margin: 0; +} + +viewswitcher.narrow button.toggle { + border-radius: 0; + margin: 0; +} + +viewswitcher.narrow button.toggle:focus-within, viewswitcher.narrow button.toggle:focus { + box-shadow: none; +} + +viewswitcher button.toggle { + font-weight: bold; + padding: 0; +} + +viewswitcher button.toggle > stack > box.narrow { + font-size: 0.75rem; + padding-top: 6px; + padding-bottom: 4px; + border-spacing: 4px; +} + +viewswitcher button.toggle > stack > box.narrow > stack > label { + padding-left: 6px; + padding-right: 6px; +} + +viewswitcher button.toggle > stack > box.wide { + padding: 2px 12px; + border-spacing: 6px; +} + +viewswitcherbar actionbar > revealer > box { + padding: 0; +} + +viewswitchertitle { + margin-top: 0; + margin-bottom: 0; +} + +viewswitchertitle viewswitcher { + margin-left: 12px; + margin-right: 12px; +} + +viewswitchertitle viewswitcher.narrow { + margin-top: 0; + margin-bottom: 0; +} + +viewswitchertitle viewswitcher.narrow button.toggle > stack > box.narrow { + padding-top: 0; + padding-bottom: 0; + border-spacing: 0; +} + +viewswitchertitle viewswitcher.wide { + margin-top: 6px; + margin-bottom: 6px; +} + +viewswitchertitle windowtitle { + margin-top: 0; + margin-bottom: 0; +} + +.top-bar headerbar viewswitchertitle viewswitcher.narrow button.toggle { + border-radius: 0 0 6px 6px; +} + +indicatorbin > indicator, indicatorbin > mask { + min-width: 6px; + min-height: 6px; + border-radius: 9999px; +} + +indicatorbin > indicator { + margin: 1px; + background-color: alpha(currentColor, 0.4); +} + +indicatorbin > indicator > label { + font-size: 0.6rem; + font-weight: bold; + padding: 1px 4px; + color: white; +} + +indicatorbin > mask { + padding: 1px; + background: black; +} + +indicatorbin.needs-attention > indicator { + background-color: #eebebe; +} + +indicatorbin.needs-attention > indicator > label { + color: rgba(0, 0, 0, 0.87); +} + +preferencespage > scrolledwindow > viewport > clamp > box { + margin: 24px 12px; + border-spacing: 24px; +} + +preferencesgroup > box, preferencesgroup > box .labels { + border-spacing: 6px; +} + +preferencesgroup > box > box.header:not(.single-line) { + margin-bottom: 6px; +} + +preferencesgroup > box > box.single-line { + min-height: 34px; +} + +preferencesgroup > box button.background-preview-button.toggle { + padding: 0; + background: none; + box-shadow: none; + outline-color: transparent; + outline-width: 3px; + outline-offset: 3px; + outline-style: solid; +} + +preferencesgroup > box button.background-preview-button.toggle, preferencesgroup > box button.background-preview-button.toggle > background-preview { + border-radius: 6px; +} + +preferencesgroup > box button.background-preview-button.toggle:hover { + outline-color: rgba(255, 255, 255, 0.04); +} + +preferencesgroup > box button.background-preview-button.toggle:active { + outline-color: rgba(255, 255, 255, 0.3); +} + +preferencesgroup > box button.background-preview-button.toggle:checked { + outline-color: #eebebe; +} + +preferencesgroup > box .cutout-button { + background-color: #232634; +} + +window.about .main-page > viewport > clamp > box { + margin: 12px; + border-spacing: 6px; +} + +window.about .main-page > viewport > clamp > box > box { + margin-top: 18px; + border-spacing: 18px; + margin-bottom: 6px; +} + +window.about .main-page .app-version { + padding: 3px 18px; + color: #eebebe; + border-radius: 6px; + margin-top: 3px; +} + +window.about .subpage > viewport > clamp > box { + margin: 18px 12px; + border-spacing: 18px; +} + +window.about .subpage > clamp > textview { + background: none; + color: inherit; +} + +statuspage > scrolledwindow > viewport > box { + margin: 36px 12px; + border-spacing: 36px; +} + +statuspage > scrolledwindow > viewport > box > clamp > box { + border-spacing: 12px; +} + +statuspage > scrolledwindow > viewport > box > clamp > box > .icon { + -gtk-icon-size: 128px; + color: alpha(currentColor, 0.55); +} + +statuspage > scrolledwindow > viewport > box > clamp > box > .icon:disabled { + opacity: 0.35; +} + +statuspage > scrolledwindow > viewport > box > clamp > box > .icon:not(:last-child) { + margin-bottom: 24px; +} + +statuspage.compact > scrolledwindow > viewport > box { + margin: 24px 12px; + border-spacing: 24px; +} + +statuspage.compact > scrolledwindow > viewport > box > clamp > box > .icon { + -gtk-icon-size: 96px; +} + +statuspage.compact > scrolledwindow > viewport > box > clamp > box > .icon:not(:last-child) { + margin-bottom: 12px; +} + +statuspage.compact > scrolledwindow > viewport > box > clamp > box > .title { + font-size: 18pt; +} + +flap > dimming, +leaflet > dimming, +navigation-view > dimming, +overlay-split-view > dimming { + background: none; +} + +flap > border, +leaflet > border, +navigation-view > border, +overlay-split-view > border { + background: none; +} + +flap > shadow, +leaflet > shadow, +navigation-view > shadow, +overlay-split-view > shadow { + min-width: 56px; + min-height: 56px; +} + +flap > shadow.left, +leaflet > shadow.left, +navigation-view > shadow.left, +overlay-split-view > shadow.left { + background-image: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +flap > shadow.right, +leaflet > shadow.right, +navigation-view > shadow.right, +overlay-split-view > shadow.right { + background-image: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +flap > shadow.up, +leaflet > shadow.up, +navigation-view > shadow.up, +overlay-split-view > shadow.up { + background-image: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +flap > shadow.down, +leaflet > shadow.down, +navigation-view > shadow.down, +overlay-split-view > shadow.down { + background-image: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.unfolded stacksidebar.sidebar { + border: none; +} + +.sidebar-pane { + background-color: #232634; + color: #FFFFFF; +} + +.sidebar-pane:backdrop { + background-color: #303446; + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.sidebar-pane .navigation-sidebar, +.sidebar-pane headerbar, +.sidebar-pane searchbar > revealer > box { + background-color: transparent; + box-shadow: none; + border: none; +} + +.sidebar-pane toolbarview.undershoot-top scrolledwindow > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane toolbarview.undershoot-bottom scrolledwindow > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-top > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-bottom > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-start:dir(ltr) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-start:dir(rtl) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-end:dir(ltr) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-end:dir(rtl) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane flap > dimming, +.sidebar-pane leaflet > dimming, +.sidebar-pane navigation-view > dimming, +.sidebar-pane overlay-split-view > dimming { + background: none; +} + +.sidebar-pane flap > border, +.sidebar-pane leaflet > border, +.sidebar-pane navigation-view > border, +.sidebar-pane overlay-split-view > border { + background: none; +} + +.sidebar-pane flap > shadow, +.sidebar-pane leaflet > shadow, +.sidebar-pane navigation-view > shadow, +.sidebar-pane overlay-split-view > shadow { + min-width: 56px; + min-height: 56px; +} + +.sidebar-pane flap > shadow.left, +.sidebar-pane leaflet > shadow.left, +.sidebar-pane navigation-view > shadow.left, +.sidebar-pane overlay-split-view > shadow.left { + background-image: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.sidebar-pane flap > shadow.right, +.sidebar-pane leaflet > shadow.right, +.sidebar-pane navigation-view > shadow.right, +.sidebar-pane overlay-split-view > shadow.right { + background-image: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.sidebar-pane flap > shadow.up, +.sidebar-pane leaflet > shadow.up, +.sidebar-pane navigation-view > shadow.up, +.sidebar-pane overlay-split-view > shadow.up { + background-image: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.sidebar-pane flap > shadow.down, +.sidebar-pane leaflet > shadow.down, +.sidebar-pane navigation-view > shadow.down, +.sidebar-pane overlay-split-view > shadow.down { + background-image: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.sidebar-pane banner > revealer > widget { + background-color: gtkmix(#eebebe, #232634, 30%); + color: #FFFFFF; +} + +.sidebar-pane banner > revealer > widget:backdrop { + background-color: gtkmix(#eebebe, #232634, 30%); +} + +.sidebar-pane:dir(ltr), .sidebar-pane.end:dir(rtl) { + border-top-left-radius: 12px; +} + +.sidebar-pane:dir(ltr), .sidebar-pane:dir(ltr) banner > revealer > widget, .sidebar-pane.end:dir(rtl), .sidebar-pane.end:dir(rtl) banner > revealer > widget { + box-shadow: none; + border-right: 1px solid rgba(255, 255, 255, 0.12); +} + +.sidebar-pane:dir(rtl), .sidebar-pane.end:dir(ltr) { + border-top-right-radius: 12px; +} + +.sidebar-pane:dir(rtl), .sidebar-pane:dir(rtl) banner > revealer > widget, .sidebar-pane.end:dir(ltr), .sidebar-pane.end:dir(ltr) banner > revealer > widget { + box-shadow: none; + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +window.maxmized .sidebar-pane:dir(ltr), window.maxmized .sidebar-pane.end:dir(rtl) { + border-top-left-radius: 0; +} + +window.maxmized .sidebar-pane:dir(rtl), window.maxmized .sidebar-pane.end:dir(rtl) { + border-top-right-radius: 0; +} + +/* Middle pane in three-pane setups */ +.content-pane .sidebar-pane, +.sidebar-pane .content-pane { + background-color: #303446; + color: #FFFFFF; +} + +.content-pane .sidebar-pane:backdrop, +.sidebar-pane .content-pane:backdrop { + background-color: #303446; + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.content-pane .sidebar-pane toolbarview.undershoot-top scrolledwindow > undershoot.top, +.sidebar-pane .content-pane toolbarview.undershoot-top scrolledwindow > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane toolbarview.undershoot-bottom scrolledwindow > undershoot.bottom, +.sidebar-pane .content-pane toolbarview.undershoot-bottom scrolledwindow > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-top > undershoot.top, +.sidebar-pane .content-pane scrolledwindow.undershoot-top > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-bottom > undershoot.bottom, +.sidebar-pane .content-pane scrolledwindow.undershoot-bottom > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-start:dir(ltr) > undershoot.left, +.sidebar-pane .content-pane scrolledwindow.undershoot-start:dir(ltr) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-start:dir(rtl) > undershoot.right, +.sidebar-pane .content-pane scrolledwindow.undershoot-start:dir(rtl) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-end:dir(ltr) > undershoot.right, +.sidebar-pane .content-pane scrolledwindow.undershoot-end:dir(ltr) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-end:dir(rtl) > undershoot.left, +.sidebar-pane .content-pane scrolledwindow.undershoot-end:dir(rtl) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane flap > dimming, +.content-pane .sidebar-pane leaflet > dimming, +.content-pane .sidebar-pane navigation-view > dimming, +.content-pane .sidebar-pane overlay-split-view > dimming, +.sidebar-pane .content-pane flap > dimming, +.sidebar-pane .content-pane leaflet > dimming, +.sidebar-pane .content-pane navigation-view > dimming, +.sidebar-pane .content-pane overlay-split-view > dimming { + background: none; +} + +.content-pane .sidebar-pane flap > border, +.content-pane .sidebar-pane leaflet > border, +.content-pane .sidebar-pane navigation-view > border, +.content-pane .sidebar-pane overlay-split-view > border, +.sidebar-pane .content-pane flap > border, +.sidebar-pane .content-pane leaflet > border, +.sidebar-pane .content-pane navigation-view > border, +.sidebar-pane .content-pane overlay-split-view > border { + background: none; +} + +.content-pane .sidebar-pane flap > shadow, +.content-pane .sidebar-pane leaflet > shadow, +.content-pane .sidebar-pane navigation-view > shadow, +.content-pane .sidebar-pane overlay-split-view > shadow, +.sidebar-pane .content-pane flap > shadow, +.sidebar-pane .content-pane leaflet > shadow, +.sidebar-pane .content-pane navigation-view > shadow, +.sidebar-pane .content-pane overlay-split-view > shadow { + min-width: 56px; + min-height: 56px; +} + +.content-pane .sidebar-pane flap > shadow.left, +.content-pane .sidebar-pane leaflet > shadow.left, +.content-pane .sidebar-pane navigation-view > shadow.left, +.content-pane .sidebar-pane overlay-split-view > shadow.left, +.sidebar-pane .content-pane flap > shadow.left, +.sidebar-pane .content-pane leaflet > shadow.left, +.sidebar-pane .content-pane navigation-view > shadow.left, +.sidebar-pane .content-pane overlay-split-view > shadow.left { + background-image: linear-gradient(to right, alpha(rgba(255, 255, 255, 0.12), 0.7), alpha(rgba(255, 255, 255, 0.12), 0.14) 40px, alpha(rgba(255, 255, 255, 0.12), 0) 56px), linear-gradient(to right, alpha(rgba(255, 255, 255, 0.12), 0.4), alpha(rgba(255, 255, 255, 0.12), 0.14) 7px, alpha(rgba(255, 255, 255, 0.12), 0) 24px); +} + +.content-pane .sidebar-pane flap > shadow.right, +.content-pane .sidebar-pane leaflet > shadow.right, +.content-pane .sidebar-pane navigation-view > shadow.right, +.content-pane .sidebar-pane overlay-split-view > shadow.right, +.sidebar-pane .content-pane flap > shadow.right, +.sidebar-pane .content-pane leaflet > shadow.right, +.sidebar-pane .content-pane navigation-view > shadow.right, +.sidebar-pane .content-pane overlay-split-view > shadow.right { + background-image: linear-gradient(to left, alpha(rgba(255, 255, 255, 0.12), 0.7), alpha(rgba(255, 255, 255, 0.12), 0.14) 40px, alpha(rgba(255, 255, 255, 0.12), 0) 56px), linear-gradient(to left, alpha(rgba(255, 255, 255, 0.12), 0.4), alpha(rgba(255, 255, 255, 0.12), 0.14) 7px, alpha(rgba(255, 255, 255, 0.12), 0) 24px); +} + +.content-pane .sidebar-pane flap > shadow.up, +.content-pane .sidebar-pane leaflet > shadow.up, +.content-pane .sidebar-pane navigation-view > shadow.up, +.content-pane .sidebar-pane overlay-split-view > shadow.up, +.sidebar-pane .content-pane flap > shadow.up, +.sidebar-pane .content-pane leaflet > shadow.up, +.sidebar-pane .content-pane navigation-view > shadow.up, +.sidebar-pane .content-pane overlay-split-view > shadow.up { + background-image: linear-gradient(to bottom, alpha(rgba(255, 255, 255, 0.12), 0.7), alpha(rgba(255, 255, 255, 0.12), 0.14) 40px, alpha(rgba(255, 255, 255, 0.12), 0) 56px), linear-gradient(to bottom, alpha(rgba(255, 255, 255, 0.12), 0.4), alpha(rgba(255, 255, 255, 0.12), 0.14) 7px, alpha(rgba(255, 255, 255, 0.12), 0) 24px); +} + +.content-pane .sidebar-pane flap > shadow.down, +.content-pane .sidebar-pane leaflet > shadow.down, +.content-pane .sidebar-pane navigation-view > shadow.down, +.content-pane .sidebar-pane overlay-split-view > shadow.down, +.sidebar-pane .content-pane flap > shadow.down, +.sidebar-pane .content-pane leaflet > shadow.down, +.sidebar-pane .content-pane navigation-view > shadow.down, +.sidebar-pane .content-pane overlay-split-view > shadow.down { + background-image: linear-gradient(to top, alpha(rgba(255, 255, 255, 0.12), 0.7), alpha(rgba(255, 255, 255, 0.12), 0.14) 40px, alpha(rgba(255, 255, 255, 0.12), 0) 56px), linear-gradient(to top, alpha(rgba(255, 255, 255, 0.12), 0.4), alpha(rgba(255, 255, 255, 0.12), 0.14) 7px, alpha(rgba(255, 255, 255, 0.12), 0) 24px); +} + +.content-pane .sidebar-pane banner > revealer > widget, +.sidebar-pane .content-pane banner > revealer > widget { + background-color: gtkmix(#eebebe, #303446, 30%); + color: #FFFFFF; +} + +.content-pane .sidebar-pane banner > revealer > widget:backdrop, +.sidebar-pane .content-pane banner > revealer > widget:backdrop { + background-color: gtkmix(#eebebe, #303446, 30%); +} + +.content-pane .sidebar-pane:dir(ltr), .content-pane .sidebar-pane.end:dir(rtl), +.sidebar-pane .content-pane:dir(ltr), +.sidebar-pane .content-pane.end:dir(rtl) { + border-top-left-radius: 12px; +} + +.content-pane .sidebar-pane:dir(ltr), .content-pane .sidebar-pane:dir(ltr) banner > revealer > widget, .content-pane .sidebar-pane.end:dir(rtl), .content-pane .sidebar-pane.end:dir(rtl) banner > revealer > widget, +.sidebar-pane .content-pane:dir(ltr), +.sidebar-pane .content-pane:dir(ltr) banner > revealer > widget, +.sidebar-pane .content-pane.end:dir(rtl), +.sidebar-pane .content-pane.end:dir(rtl) banner > revealer > widget { + box-shadow: none; + border-right: 1px solid rgba(255, 255, 255, 0.12); +} + +.content-pane .sidebar-pane:dir(rtl), .content-pane .sidebar-pane.end:dir(ltr), +.sidebar-pane .content-pane:dir(rtl), +.sidebar-pane .content-pane.end:dir(ltr) { + border-top-right-radius: 12px; +} + +.content-pane .sidebar-pane:dir(rtl), .content-pane .sidebar-pane:dir(rtl) banner > revealer > widget, .content-pane .sidebar-pane.end:dir(ltr), .content-pane .sidebar-pane.end:dir(ltr) banner > revealer > widget, +.sidebar-pane .content-pane:dir(rtl), +.sidebar-pane .content-pane:dir(rtl) banner > revealer > widget, +.sidebar-pane .content-pane.end:dir(ltr), +.sidebar-pane .content-pane.end:dir(ltr) banner > revealer > widget { + box-shadow: none; + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +window.maxmized .content-pane .sidebar-pane:dir(ltr), window.maxmized .content-pane .sidebar-pane.end:dir(rtl), window.maxmized .sidebar-pane .content-pane:dir(ltr), window.maxmized .sidebar-pane .content-pane.end:dir(rtl) { + border-top-left-radius: 0; +} + +window.maxmized .content-pane .sidebar-pane:dir(rtl), window.maxmized .content-pane .sidebar-pane.end:dir(rtl), window.maxmized .sidebar-pane .content-pane:dir(rtl), window.maxmized .sidebar-pane .content-pane.end:dir(rtl) { + border-top-right-radius: 0; +} + +.sidebar-pane .sidebar-pane { + background-color: transparent; + color: inherit; +} + +.top-bar headerbar, .top-bar headerbar:backdrop { + background-color: transparent; + box-shadow: none; +} + +.top-bar .collapse-spacing { + padding: 0; +} + +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +/* +widget text/foreground color */ +@define-color theme_fg_color #FFFFFF; +/* +text color for entries, views and content in general */ +@define-color theme_text_color #FFFFFF; +/* +widget base background color */ +@define-color theme_bg_color #303446; +/* +text widgets and the like base background color */ +@define-color theme_base_color #303446; +/* +base background color of selections */ +@define-color theme_selected_bg_color #eebebe; +/* +text/foreground color of selections */ +@define-color theme_selected_fg_color rgba(0, 0, 0, 0.87); +/* +base background color of insensitive widgets */ +@define-color insensitive_bg_color #303446; +/* +text foreground color of insensitive widgets */ +@define-color insensitive_fg_color rgba(255, 255, 255, 0.5); +/* +insensitive text widgets and the like base background color */ +@define-color insensitive_base_color #232634; +/* +widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color #FFFFFF; +/* +text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color #FFFFFF; +/* +widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color #303446; +/* +text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #303446; +/* +base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color #eebebe; +/* +text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color rgba(0, 0, 0, 0.87); +/* +insensitive color on backdrop windows */ +@define-color unfocused_insensitive_color rgba(255, 255, 255, 0.5); +/* +widgets main borders color */ +@define-color borders rgba(255, 255, 255, 0.12); +/* +widgets main borders color on backdrop windows */ +@define-color unfocused_borders rgba(255, 255, 255, 0.12); +/* +these are pretty self explicative */ +@define-color warning_color #FBC02D; +@define-color error_color #F44336; +@define-color success_color #66BB6A; +/* +these colors are exported for the window manager and shouldn't be used in applications, +read if you used those and something break with a version upgrade you're on your own... */ +@define-color wm_title #FFFFFF; +@define-color wm_unfocused_title rgba(255, 255, 255, 0.7); +@define-color wm_highlight rgba(255, 255, 255, 0.1); +@define-color wm_border #0a0a0e; +@define-color wm_bg #232634; +@define-color wm_unfocused_bg #303446; +@define-color wm_button_icon white; +@define-color wm_button_close_hover_bg #e78284; +@define-color wm_button_close_active_bg #dd4f51; +@define-color wm_button_max_hover_bg #a6d189; +@define-color wm_button_max_active_bg #85c05d; +@define-color wm_button_min_hover_bg #e5c890; +@define-color wm_button_min_active_bg #d9af5e; +/* +FIXME this is really an API */ +@define-color content_view_bg #303446; +@define-color placeholder_text_color #c1c2c8; +/* Very contrasty background for text views (@theme_text_color foreground) */ +@define-color text_view_bg #303446; +@define-color budgie_tasklist_indicator_color rgba(255, 255, 255, 0.3); +@define-color budgie_tasklist_indicator_color_active #eebebe; +@define-color budgie_tasklist_indicator_color_active_window #91787f; +@define-color budgie_tasklist_indicator_color_attention #FBC02D; +@define-color STRAWBERRY_100 #FF9262; +@define-color STRAWBERRY_300 #FF793E; +@define-color STRAWBERRY_500 #F15D22; +@define-color STRAWBERRY_700 #CF3B00; +@define-color STRAWBERRY_900 #AC1800; +@define-color ORANGE_100 #FFDB91; +@define-color ORANGE_300 #FFCA40; +@define-color ORANGE_500 #FAA41A; +@define-color ORANGE_700 #DE8800; +@define-color ORANGE_900 #C26C00; +@define-color BANANA_100 #FFFFA8; +@define-color BANANA_300 #FFFA7D; +@define-color BANANA_500 #FFCE51; +@define-color BANANA_700 #D1A023; +@define-color BANANA_900 #A27100; +@define-color LIME_100 #A2F3BE; +@define-color LIME_300 #8ADBA6; +@define-color LIME_500 #73C48F; +@define-color LIME_700 #479863; +@define-color LIME_900 #1C6D38; +@define-color BLUEBERRY_100 #94A6FF; +@define-color BLUEBERRY_300 #6A7CE0; +@define-color BLUEBERRY_500 #3F51B5; +@define-color BLUEBERRY_700 #213397; +@define-color BLUEBERRY_900 #031579; +@define-color GRAPE_100 #D25DE6; +@define-color GRAPE_300 #B84ACB; +@define-color GRAPE_500 #9C27B0; +@define-color GRAPE_700 #830E97; +@define-color GRAPE_900 #6A007E; +@define-color COCOA_100 #9F9792; +@define-color COCOA_300 #7B736E; +@define-color COCOA_500 #574F4A; +@define-color COCOA_700 #463E39; +@define-color COCOA_900 #342C27; +@define-color SILVER_100 #EEE; +@define-color SILVER_300 #CCC; +@define-color SILVER_500 #AAA; +@define-color SILVER_700 #888; +@define-color SILVER_900 #666; +@define-color SLATE_100 #888; +@define-color SLATE_300 #666; +@define-color SLATE_500 #444; +@define-color SLATE_700 #222; +@define-color SLATE_900 #111; +@define-color BLACK_100 #474341; +@define-color BLACK_300 #403C3A; +@define-color BLACK_500 #393634; +@define-color BLACK_700 #33302F; +@define-color BLACK_900 #2B2928; +@define-color blue_1 #99c1f1; +@define-color blue_2 #62a0ea; +@define-color blue_3 #3584e4; +@define-color blue_4 #1c71d8; +@define-color blue_5 #1a5fb4; +@define-color green_1 #8ff0a4; +@define-color green_2 #57e389; +@define-color green_3 #33d17a; +@define-color green_4 #2ec27e; +@define-color green_5 #26a269; +@define-color yellow_1 #f9f06b; +@define-color yellow_2 #f8e45c; +@define-color yellow_3 #f6d32d; +@define-color yellow_4 #f5c211; +@define-color yellow_5 #e5a50a; +@define-color orange_1 #ffbe6f; +@define-color orange_2 #ffa348; +@define-color orange_3 #ff7800; +@define-color orange_4 #e66100; +@define-color orange_5 #c64600; +@define-color red_1 #f66151; +@define-color red_2 #ed333b; +@define-color red_3 #e01b24; +@define-color red_4 #c01c28; +@define-color red_5 #a51d2d; +@define-color purple_1 #dc8add; +@define-color purple_2 #c061cb; +@define-color purple_3 #9141ac; +@define-color purple_4 #813d9c; +@define-color purple_5 #613583; +@define-color brown_1 #cdab8f; +@define-color brown_2 #b5835a; +@define-color brown_3 #986a44; +@define-color brown_4 #865e3c; +@define-color brown_5 #63452c; +@define-color light_1 #ffffff; +@define-color light_2 #f6f5f4; +@define-color light_3 #deddda; +@define-color light_4 #c0bfbc; +@define-color light_5 #9a9996; +@define-color dark_1 #77767b; +@define-color dark_2 #5e5c64; +@define-color dark_3 #3d3846; +@define-color dark_4 #241f31; +@define-color dark_5 #000000; +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +@define-color accent_bg_color #eebebe; +@define-color accent_fg_color rgba(0, 0, 0, 0.87); +@define-color accent_color #eebebe; +@define-color destructive_bg_color #F44336; +@define-color destructive_fg_color #FFFFFF; +@define-color destructive_color #F44336; +@define-color success_bg_color #66BB6A; +@define-color success_fg_color #FFFFFF; +@define-color success_color #66BB6A; +@define-color warning_bg_color #FBC02D; +@define-color warning_fg_color rgba(0, 0, 0, 0.87); +@define-color warning_color #FBC02D; +@define-color error_bg_color #F44336; +@define-color error_fg_color #FFFFFF; +@define-color error_color #F44336; +@define-color window_bg_color #303446; +@define-color window_fg_color #FFFFFF; +@define-color view_bg_color #303446; +@define-color view_fg_color #FFFFFF; +@define-color headerbar_bg_color #232634; +@define-color headerbar_fg_color #FFFFFF; +@define-color headerbar_border_color rgba(255, 255, 255, 0.12); +@define-color headerbar_backdrop_color #303446; +@define-color headerbar_shade_color rgba(255, 255, 255, 0.12); +@define-color card_bg_color #303446; +@define-color card_fg_color #FFFFFF; +@define-color card_shade_color rgba(255, 255, 255, 0.12); +@define-color dialog_bg_color #232634; +@define-color dialog_fg_color #FFFFFF; +@define-color popover_bg_color #303446; +@define-color popover_fg_color #FFFFFF; +@define-color shade_color rgba(255, 255, 255, 0.12); +@define-color scrollbar_outline_color rgba(255, 255, 255, 0.12); diff --git a/home-manager/general/themes/Catppuccin/gtk.css b/home-manager/general/themes/Catppuccin/gtk.css new file mode 100644 index 0000000..c933a2f --- /dev/null +++ b/home-manager/general/themes/Catppuccin/gtk.css @@ -0,0 +1,8024 @@ +@keyframes ripple { + to { + background-size: 1000% 1000%; + } +} + +@keyframes ripple-on-slider { + to { + background-size: auto, 1000% 1000%; + } +} + +@keyframes ripple-on-headerbar { + from { + background-image: radial-gradient(circle, #eebebe 0%, transparent 0%); + } + to { + background-image: radial-gradient(circle, #eebebe 100%, transparent 100%); + } +} + +/*************** + * Base States * + ***************/ +.background { + background-color: #303446; + color: #FFFFFF; +} + +#desktopwindow.background { + background-color: transparent; +} + +dnd { + color: #FFFFFF; +} + +.normal-icons { + -gtk-icon-size: 16px; +} + +.large-icons { + -gtk-icon-size: 32px; +} + +.aboutdialog .large-icons { + -gtk-icon-size: 128px; +} + +spinner:disabled, +arrow:disabled, +scrollbar:disabled, +check:disabled, +radio:disabled, +treeview.expander:disabled { + -gtk-icon-filter: opacity(0.5); +} + +iconview, .view { + background-color: #303446; + color: #FFFFFF; +} + +iconview:disabled, .view:disabled { + color: rgba(255, 255, 255, 0.5); +} + +iconview:selected, .view:selected { + color: #FFFFFF; +} + +textview text { + background-color: #303446; +} + +textview border { + background-color: #232634; + color: rgba(255, 255, 255, 0.7); +} + +iconview:hover, iconview:selected { + border-radius: 3px; +} + +rubberband, .content-view rubberband, .content-view columnview.view > rubberband, +.content-view treeview.view > rubberband, .content-view .rubberband, columnview.view > rubberband, .content-view columnview.view > .rubberband, +treeview.view > rubberband, +.content-view treeview.view > .rubberband, gridview > rubberband, flowbox > rubberband { + border: 1px solid #eebebe; + background-color: rgba(238, 190, 190, 0.3); +} + +flowbox > flowboxchild { + padding: 4px; + border-radius: 6px; +} + +.content-view .tile:selected { + background-color: transparent; +} + +gridview > child { + padding: 3px; +} + +gridview > child:selected { + outline-color: alpha(currentColor, 0.06); +} + +gridview > child box { + border-spacing: 8px; + margin: 12px; +} + +coverflow cover { + color: #FFFFFF; + background-color: #303446; + border: 1px solid black; +} + +label.separator { + color: rgba(255, 255, 255, 0.7); +} + +label:disabled { + opacity: 1; + color: rgba(255, 255, 255, 0.5); +} + +headerbar label:disabled, tab label:disabled, button label:disabled { + color: inherit; + opacity: 1; +} + +label.osd { + border-radius: 6px; + background-color: rgba(29, 31, 43, 0.9); + color: #FFFFFF; +} + +.dim-label, row.expander image.expander-row-arrow, row label.subtitle { + color: rgba(255, 255, 255, 0.7); + opacity: 1; +} + +.accent { + color: #eebebe; +} + +.success { + color: #66BB6A; +} + +.warning { + color: #FBC02D; +} + +.error { + color: #F44336; +} + +.large-title { + font-weight: 300; + font-size: 24pt; +} + +.title-1 { + font-weight: 800; + font-size: 20pt; +} + +.title-2 { + font-weight: 800; + font-size: 15pt; +} + +.title-3 { + font-weight: 700; + font-size: 15pt; +} + +.title-4 { + font-weight: 700; + font-size: 13pt; +} + +.heading { + font-weight: 700; + font-size: 11pt; +} + +.body { + font-weight: 400; + font-size: 11pt; +} + +.caption { + font-weight: 400; + font-size: 9pt; +} + +.caption-heading { + font-weight: 700; + font-size: 9pt; +} + +window.assistant .sidebar { + padding: 4px 0; +} + +window.assistant .sidebar label { + min-height: 36px; + padding: 0 12px; + color: rgba(255, 255, 255, 0.5); + font-weight: 500; +} + +window.assistant .sidebar label.highlight { + color: #FFFFFF; +} + +.osd .scale-popup > arrow, +.osd .scale-popup > contents, .osd popover > arrow, +.osd popover > contents, popover.touch-selection > arrow, +popover.touch-selection > contents, popover.magnifier > arrow, +popover.magnifier > contents, .osd { + color: #FFFFFF; + background-color: #303446; + background-clip: padding-box; + border-radius: 6px; + border: none; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15), 0 3px 3px 0 rgba(0, 0, 0, 0.18), 0 3px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); +} + +.osd { + padding: 6px; + margin: 6px; +} + +.osd.circular { + border-radius: 9999px; +} + +/********************* + * Spinner Animation * + *********************/ +@keyframes spin { + to { + transform: rotate(1turn); + } +} + +spinner { + background: none; + opacity: 0; + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); +} + +spinner:checked { + opacity: 1; + animation: spin 1s linear infinite; +} + +spinner:checked:disabled { + opacity: 0.5; +} + +/**************** + * Text Entries * + ****************/ + +entry headerbar popover.background entry, +headerbar popover.background entry entry, +entry { + min-height: 36px; + padding: 0 8px; + border-spacing: 6px; + border-radius: 6px; + caret-color: currentColor; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.7); + outline: 0 solid transparent; + outline-offset: 2px; +} + + +entry headerbar popover.background entry:focus-within, +headerbar popover.background entry entry:focus-within, +entry:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(255, 255, 255, 0.08); + box-shadow: inset 0 0 0 2px transparent; + color: #FFFFFF; + outline: 2px solid #eebebe; + outline-offset: -2px; +} + + +entry headerbar popover.background entry:drop(active), +headerbar popover.background entry entry:drop(active), +entry headerbar popover.background entry:hover:not(:focus-within), +headerbar popover.background entry entry:hover:not(:focus-within), +entry:drop(active), +entry:hover:not(:focus-within) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; + outline-offset: 2px; +} + + +entry headerbar popover.background entry:disabled, +headerbar popover.background entry entry:disabled, +entry:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.5); + outline: none; +} + + +entry headerbar popover.background entry.flat:focus-within, +headerbar popover.background entry entry.flat:focus-within, +entry headerbar popover.background entry.flat:disabled, +headerbar popover.background entry entry.flat:disabled, +entry headerbar popover.background entry.flat:hover, +headerbar popover.background entry entry.flat:hover, +entry headerbar popover.background entry.flat, +headerbar popover.background entry entry.flat, +entry.flat:focus-within, +entry.flat:disabled, +entry.flat:hover, +entry.flat { + min-height: 0; + padding: 2px; + background-color: transparent; + box-shadow: none; + border-radius: 0; + outline: none; +} + + +entry headerbar popover.background entry image, +headerbar popover.background entry entry image, +entry image { + color: rgba(255, 255, 255, 0.7); +} + + +entry headerbar popover.background entry image:hover, +headerbar popover.background entry entry image:hover, +entry headerbar popover.background entry image:active, +headerbar popover.background entry entry image:active, +entry image:hover, +entry image:active { + color: #FFFFFF; +} + + +entry headerbar popover.background entry image:disabled, +headerbar popover.background entry entry image:disabled, +entry image:disabled { + color: rgba(255, 255, 255, 0.5); +} + + +entry headerbar popover.background entry image.left, +headerbar popover.background entry entry image.left, +entry image.left { + margin: 0 6px 0 2px; +} + + +entry headerbar popover.background entry image.right, +headerbar popover.background entry entry image.right, +entry image.right { + margin: 0 2px 0 6px; +} + + +entry headerbar popover.background entry undershoot.left > undershoot.left, +headerbar popover.background entry entry undershoot.left > undershoot.left, +entry undershoot.left > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + + +entry headerbar popover.background entry undershoot.right > undershoot.right, +headerbar popover.background entry entry undershoot.right > undershoot.right, +entry undershoot.right > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + + +entry headerbar popover.background entry.error, +headerbar popover.background entry entry.error, +entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(244, 67, 54, 0.1); + color: rgba(244, 67, 54, 0.75); + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.error:focus-within, +headerbar popover.background entry entry.error:focus-within, +entry.error:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(244, 67, 54, 0.1); + box-shadow: inset 0 0 0 2px transparent; + color: #F44336; + outline: 2px solid #F44336; + outline-offset: -2px; + outline: none; +} + + +entry headerbar popover.background entry.error:drop(active), +headerbar popover.background entry entry.error:drop(active), +entry headerbar popover.background entry.error:hover:not(:focus-within), +headerbar popover.background entry entry.error:hover:not(:focus-within), +entry.error:drop(active), +entry.error:hover:not(:focus-within) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #F44336; + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.error:disabled, +headerbar popover.background entry entry.error:disabled, +entry.error:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(244, 67, 54, 0.1); + color: rgba(244, 67, 54, 0.35); + outline: none; + outline: none; +} + + +entry headerbar popover.background entry.error > text > selection, +headerbar popover.background entry entry.error > text > selection, +entry.error > text > selection { + background-color: rgba(244, 67, 54, 0.25); + color: #F44336; +} + + +entry headerbar popover.background entry.error image, +headerbar popover.background entry entry.error image, +entry.error image { + color: rgba(244, 67, 54, 0.75); +} + + +entry headerbar popover.background entry.error image:hover, +headerbar popover.background entry entry.error image:hover, +entry headerbar popover.background entry.error image:active, +headerbar popover.background entry entry.error image:active, +entry.error image:hover, +entry.error image:active { + color: #F44336; +} + + +entry headerbar popover.background entry.error image:disabled, +headerbar popover.background entry entry.error image:disabled, +entry.error image:disabled { + color: rgba(244, 67, 54, 0.35); +} + + +entry headerbar popover.background entry.warning, +headerbar popover.background entry entry.warning, +entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(251, 192, 45, 0.1); + color: rgba(251, 192, 45, 0.75); + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.warning:focus-within, +headerbar popover.background entry entry.warning:focus-within, +entry.warning:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(251, 192, 45, 0.1); + box-shadow: inset 0 0 0 2px transparent; + color: #FBC02D; + outline: 2px solid #FBC02D; + outline-offset: -2px; + outline: none; +} + + +entry headerbar popover.background entry.warning:drop(active), +headerbar popover.background entry entry.warning:drop(active), +entry headerbar popover.background entry.warning:hover:not(:focus-within), +headerbar popover.background entry entry.warning:hover:not(:focus-within), +entry.warning:drop(active), +entry.warning:hover:not(:focus-within) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #FBC02D; + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.warning:disabled, +headerbar popover.background entry entry.warning:disabled, +entry.warning:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(251, 192, 45, 0.1); + color: rgba(251, 192, 45, 0.35); + outline: none; + outline: none; +} + + +entry headerbar popover.background entry.warning > text > selection, +headerbar popover.background entry entry.warning > text > selection, +entry.warning > text > selection { + background-color: rgba(251, 192, 45, 0.25); + color: #FBC02D; +} + + +entry headerbar popover.background entry.warning image, +headerbar popover.background entry entry.warning image, +entry.warning image { + color: rgba(251, 192, 45, 0.75); +} + + +entry headerbar popover.background entry.warning image:hover, +headerbar popover.background entry entry.warning image:hover, +entry headerbar popover.background entry.warning image:active, +headerbar popover.background entry entry.warning image:active, +entry.warning image:hover, +entry.warning image:active { + color: #FBC02D; +} + + +entry headerbar popover.background entry.warning image:disabled, +headerbar popover.background entry entry.warning image:disabled, +entry.warning image:disabled { + color: rgba(251, 192, 45, 0.35); +} + + +entry headerbar popover.background entry.success, +headerbar popover.background entry entry.success, +entry.success { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(102, 187, 106, 0.1); + color: rgba(102, 187, 106, 0.75); + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.success:focus-within, +headerbar popover.background entry entry.success:focus-within, +entry.success:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(102, 187, 106, 0.1); + box-shadow: inset 0 0 0 2px transparent; + color: #66BB6A; + outline: 2px solid #66BB6A; + outline-offset: -2px; + outline: none; +} + + +entry headerbar popover.background entry.success:drop(active), +headerbar popover.background entry entry.success:drop(active), +entry headerbar popover.background entry.success:hover:not(:focus-within), +headerbar popover.background entry entry.success:hover:not(:focus-within), +entry.success:drop(active), +entry.success:hover:not(:focus-within) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #66BB6A; + outline: 0 solid transparent; + outline-offset: 2px; + outline: none; +} + + +entry headerbar popover.background entry.success:disabled, +headerbar popover.background entry entry.success:disabled, +entry.success:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(102, 187, 106, 0.1); + color: rgba(102, 187, 106, 0.35); + outline: none; + outline: none; +} + + +entry headerbar popover.background entry.success > text > selection, +headerbar popover.background entry entry.success > text > selection, +entry.success > text > selection { + background-color: rgba(102, 187, 106, 0.25); + color: #66BB6A; +} + + +entry headerbar popover.background entry.success image, +headerbar popover.background entry entry.success image, +entry.success image { + color: rgba(102, 187, 106, 0.75); +} + + +entry headerbar popover.background entry.success image:hover, +headerbar popover.background entry entry.success image:hover, +entry headerbar popover.background entry.success image:active, +headerbar popover.background entry entry.success image:active, +entry.success image:hover, +entry.success image:active { + color: #66BB6A; +} + + +entry headerbar popover.background entry.success image:disabled, +headerbar popover.background entry entry.success image:disabled, +entry.success image:disabled { + color: rgba(102, 187, 106, 0.35); +} + + +entry > progress, +entry progress > trough > progress { + margin: 0 -4px; + border-bottom: 2px solid #eebebe; + background-color: transparent; +} + + +entry button.image-button { + min-height: 24px; + min-width: 24px; + padding: 0; +} + +treeview entry.flat, treeview entry { + background-color: #303446; +} + +treeview entry.flat, treeview entry.flat:focus-within, treeview entry, treeview entry:focus-within { + border-image: none; + box-shadow: none; +} + +.entry-tag { + margin: 2px; + border-radius: 9999px; + box-shadow: none; + background-color: rgba(255, 255, 255, 0.12); + color: #FFFFFF; +} + +.entry-tag:hover { + background-image: image(alpha(currentColor, 0.08)); +} + +:dir(ltr) .entry-tag { + margin-left: 4px; + margin-right: 0; + padding-left: 12px; + padding-right: 8px; +} + +:dir(rtl) .entry-tag { + margin-left: 0; + margin-right: 4px; + padding-left: 8px; + padding-right: 12px; +} + +.entry-tag.button { + box-shadow: none; + background-color: transparent; +} + +.entry-tag.button:not(:hover):not(:active) { + color: rgba(255, 255, 255, 0.7); +} + +editablelabel > stack > text { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.7); + outline: 0 solid transparent; + outline-offset: 2px; +} + +/*********** + * Buttons * + ***********/ +@keyframes needs-attention { + from { + background-image: radial-gradient(farthest-side, #eebebe 0%, rgba(238, 190, 190, 0) 0%); + } + to { + background-image: radial-gradient(farthest-side, #eebebe 95%, rgba(238, 190, 190, 0)); + } +} + +infobar.warning > revealer > box button, infobar.warning:backdrop > revealer > box button, popover.touch-selection button, popover.magnifier button, headerbar.selection-mode button:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.7); +} + +infobar.warning > revealer > box button:focus, popover.touch-selection button:focus, popover.magnifier button:focus, headerbar.selection-mode button:focus:not(.suggested-action):not(.destructive-action), infobar.warning > revealer > box button:hover, popover.touch-selection button:hover, popover.magnifier button:hover, headerbar.selection-mode button:hover:not(.suggested-action):not(.destructive-action), infobar.warning > revealer > box button:active, popover.touch-selection button:active, popover.magnifier button:active, headerbar.selection-mode button:active:not(.suggested-action):not(.destructive-action), infobar.warning > revealer > box button:checked, popover.touch-selection button:checked, popover.magnifier button:checked, headerbar.selection-mode button:checked:not(.suggested-action):not(.destructive-action) { + color: #FFFFFF; +} + +infobar.warning > revealer > box button:disabled, popover.touch-selection button:disabled, popover.magnifier button:disabled, headerbar.selection-mode button:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.32); +} + +infobar.warning > revealer > box button:checked:disabled, popover.touch-selection button:checked:disabled, popover.magnifier button:checked:disabled, headerbar.selection-mode button:checked:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.5); +} + +headerbar popover.background button:not(.suggested-action):not(.destructive-action):not(.flat), button { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(255, 255, 255, 0.08); + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + outline: 0 solid transparent; + outline-offset: 2px; + color: #FFFFFF; +} + +headerbar popover.background button:focus:not(.suggested-action):not(.destructive-action):not(.flat), button:focus { + outline: 2px solid rgba(238, 190, 190, 0.35); + outline-offset: 0; +} + +headerbar popover.background button:hover:not(.suggested-action):not(.destructive-action):not(.flat), button:hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; + -gtk-icon-filter: brightness(1.2); +} + +headerbar popover.background button.keyboard-activating:not(.suggested-action):not(.destructive-action):not(.flat), button.keyboard-activating, headerbar popover.background button:active:not(.suggested-action):not(.destructive-action):not(.flat), button:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +headerbar popover.background button:disabled:not(.suggested-action):not(.destructive-action):not(.flat), button:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + outline-color: transparent; +} + +headerbar popover.background button:checked:not(.suggested-action):not(.destructive-action):not(.flat), button:checked { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); +} + +headerbar popover.background button:checked:hover:not(.suggested-action):not(.destructive-action):not(.flat), button:checked:hover { + outline-color: transparent; + background-color: #f3d2d2; + color: rgba(0, 0, 0, 0.87); +} + +headerbar popover.background button:checked:disabled:not(.suggested-action):not(.destructive-action):not(.flat), button:checked:disabled { + outline-color: transparent; + background-color: rgba(238, 190, 190, 0.35); + color: rgba(0, 0, 0, 0.38); +} + +placessidebar row button.sidebar-button, calendar > header > button, scrollbar button, notebook > header > tabs > arrow, popover modelbutton, spinbutton > button, splitbutton.flat > button, +splitbutton.flat > menubutton > button { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1); + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + background-color: transparent; + outline: 0 solid transparent; + outline-offset: 2px; + color: rgba(255, 255, 255, 0.7); +} + +placessidebar row button.sidebar-button:focus:not(:hover):not(:active), calendar > header > button:focus:not(:hover):not(:active), scrollbar button:focus:not(:hover):not(:active), notebook > header > tabs > arrow:focus:not(:hover):not(:active), popover modelbutton:focus:not(:hover):not(:active), spinbutton > button:focus:not(:hover):not(:active), splitbutton.flat > button:focus:not(:hover):not(:active), +splitbutton.flat > menubutton > button:focus:not(:hover):not(:active) { + color: #FFFFFF; + outline: 2px solid rgba(255, 255, 255, 0.04); + outline-offset: -2px; +} + +placessidebar row button.sidebar-button:hover, calendar > header > button:hover, scrollbar button:hover, notebook > header > tabs > arrow:hover, popover modelbutton:hover, spinbutton > button:hover, splitbutton.flat > button:hover, +splitbutton.flat > menubutton > button:hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +placessidebar row button.sidebar-button:active, calendar > header > button:active, scrollbar button:active, notebook > header > tabs > arrow:active, popover modelbutton:active, spinbutton > button:active, splitbutton.flat > button:active, +splitbutton.flat > menubutton > button:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +placessidebar row button.sidebar-button:disabled, calendar > header > button:disabled, scrollbar button:disabled, notebook > header > tabs > arrow:disabled, popover modelbutton:disabled, spinbutton > button:disabled, splitbutton.flat > button:disabled, +splitbutton.flat > menubutton > button:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +filechooser #pathbarbox > stack > box > button, window.messagedialog .response-area > box > button, window.dialog.message .dialog-action-area > button, .app-notification button, headerbar button:not(.suggested-action):not(.destructive-action), .toolbar button, dropdown > .linked:not(.vertical) > button:not(:only-child), +combobox > .linked:not(.vertical) > button:not(:only-child), splitbutton.suggested-action > button, splitbutton.suggested-action > menubutton > button, splitbutton.destructive-action > button, splitbutton.destructive-action > menubutton > button, splitbutton.opaque > button, splitbutton.opaque > menubutton > button, menubutton.suggested-action > button, menubutton.destructive-action > button, menubutton.opaque > button, menubutton.flat > button, button.flat { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1); + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + background-color: transparent; + outline: 0 solid transparent; + outline-offset: 2px; + color: rgba(255, 255, 255, 0.7); +} + +filechooser #pathbarbox > stack > box > button:focus:not(:hover):not(:active), window.messagedialog .response-area > box > button:focus:not(:hover):not(:active), window.dialog.message .dialog-action-area > button:focus:not(:hover):not(:active), .app-notification button:focus:not(:hover):not(:active), headerbar button:focus:not(:hover):not(:active):not(.suggested-action):not(.destructive-action), .toolbar button:focus:not(:hover):not(:active), dropdown > .linked:not(.vertical) > button:focus:not(:hover):not(:active):not(:only-child), +combobox > .linked:not(.vertical) > button:focus:not(:hover):not(:active):not(:only-child), splitbutton.suggested-action > button:focus:not(:hover):not(:active), splitbutton.suggested-action > menubutton > button:focus:not(:hover):not(:active), splitbutton.destructive-action > button:focus:not(:hover):not(:active), splitbutton.destructive-action > menubutton > button:focus:not(:hover):not(:active), splitbutton.opaque > button:focus:not(:hover):not(:active), splitbutton.opaque > menubutton > button:focus:not(:hover):not(:active), menubutton.suggested-action > button:focus:not(:hover):not(:active), menubutton.destructive-action > button:focus:not(:hover):not(:active), menubutton.opaque > button:focus:not(:hover):not(:active), menubutton.flat > button:focus:not(:hover):not(:active), button.flat:focus:not(:hover):not(:active) { + color: #FFFFFF; + outline: 2px solid rgba(255, 255, 255, 0.04); + outline-offset: -2px; +} + +filechooser #pathbarbox > stack > box > button:hover, window.messagedialog .response-area > box > button:hover, window.dialog.message .dialog-action-area > button:hover, .app-notification button:hover, headerbar button:hover:not(.suggested-action):not(.destructive-action), .toolbar button:hover, dropdown > .linked:not(.vertical) > button:hover:not(:only-child), +combobox > .linked:not(.vertical) > button:hover:not(:only-child), splitbutton.suggested-action > button:hover, splitbutton.suggested-action > menubutton > button:hover, splitbutton.destructive-action > button:hover, splitbutton.destructive-action > menubutton > button:hover, splitbutton.opaque > button:hover, splitbutton.opaque > menubutton > button:hover, menubutton.suggested-action > button:hover, menubutton.destructive-action > button:hover, menubutton.opaque > button:hover, menubutton.flat > button:hover, button.flat:hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +filechooser #pathbarbox > stack > box > button:active, window.messagedialog .response-area > box > button:active, window.dialog.message .dialog-action-area > button:active, .app-notification button:active, headerbar button:active:not(.suggested-action):not(.destructive-action), .toolbar button:active, dropdown > .linked:not(.vertical) > button:active:not(:only-child), +combobox > .linked:not(.vertical) > button:active:not(:only-child), splitbutton.suggested-action > button:active, splitbutton.suggested-action > menubutton > button:active, splitbutton.destructive-action > button:active, splitbutton.destructive-action > menubutton > button:active, splitbutton.opaque > button:active, splitbutton.opaque > menubutton > button:active, menubutton.suggested-action > button:active, menubutton.destructive-action > button:active, menubutton.opaque > button:active, menubutton.flat > button:active, button.flat:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +filechooser #pathbarbox > stack > box > button:disabled, window.messagedialog .response-area > box > button:disabled, window.dialog.message .dialog-action-area > button:disabled, .app-notification button:disabled, headerbar button:disabled:not(.suggested-action):not(.destructive-action), .toolbar button:disabled, dropdown > .linked:not(.vertical) > button:disabled:not(:only-child), +combobox > .linked:not(.vertical) > button:disabled:not(:only-child), splitbutton.suggested-action > button:disabled, splitbutton.suggested-action > menubutton > button:disabled, splitbutton.destructive-action > button:disabled, splitbutton.destructive-action > menubutton > button:disabled, splitbutton.opaque > button:disabled, splitbutton.opaque > menubutton > button:disabled, menubutton.suggested-action > button:disabled, menubutton.destructive-action > button:disabled, menubutton.opaque > button:disabled, menubutton.flat > button:disabled, button.flat:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +filechooser #pathbarbox > stack > box > button:checked, window.messagedialog .response-area > box > button:checked, window.dialog.message .dialog-action-area > button:checked, .app-notification button:checked, headerbar button:checked:not(.suggested-action):not(.destructive-action), .toolbar button:checked, dropdown > .linked:not(.vertical) > button:checked:not(:only-child), +combobox > .linked:not(.vertical) > button:checked:not(:only-child), splitbutton.suggested-action > button:checked, splitbutton.suggested-action > menubutton > button:checked, splitbutton.destructive-action > button:checked, splitbutton.destructive-action > menubutton > button:checked, splitbutton.opaque > button:checked, splitbutton.opaque > menubutton > button:checked, menubutton.suggested-action > button:checked, menubutton.destructive-action > button:checked, menubutton.opaque > button:checked, menubutton.flat > button:checked, button.flat:checked { + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + +filechooser #pathbarbox > stack > box > button:checked:disabled, window.messagedialog .response-area > box > button:checked:disabled, window.dialog.message .dialog-action-area > button:checked:disabled, .app-notification button:checked:disabled, headerbar button:checked:disabled:not(.suggested-action):not(.destructive-action), .toolbar button:checked:disabled, dropdown > .linked:not(.vertical) > button:checked:disabled:not(:only-child), +combobox > .linked:not(.vertical) > button:checked:disabled:not(:only-child), splitbutton.suggested-action > button:checked:disabled, splitbutton.suggested-action > menubutton > button:checked:disabled, splitbutton.destructive-action > button:checked:disabled, splitbutton.destructive-action > menubutton > button:checked:disabled, splitbutton.opaque > button:checked:disabled, splitbutton.opaque > menubutton > button:checked:disabled, menubutton.suggested-action > button:checked:disabled, menubutton.destructive-action > button:checked:disabled, menubutton.opaque > button:checked:disabled, menubutton.flat > button:checked:disabled, button.flat:checked:disabled { + background-color: alpha(currentColor, 0.1); + color: rgba(255, 255, 255, 0.5); +} + +button.opaque { + box-shadow: none; +} + +.osd button.opaque:focus:focus-visible { + outline-color: rgba(255, 255, 255, 0.15); +} + +button.opaque:hover { + background-image: image(alpha(currentColor, 0.1)); +} + +button.keyboard-activating.opaque, button.opaque:active { + background-image: image(rgba(0, 0, 0, 0.2)); +} + +button.opaque:checked { + background-image: image(rgba(0, 0, 0, 0.15)); +} + +button.opaque:checked:hover { + background-image: image(rgba(0, 0, 0, 0.05)); +} + +button.opaque:checked.keyboard-activating, button.opaque:checked:active { + background-image: image(rgba(0, 0, 0, 0.3)); +} + +.nautilus-window .floating-bar button, placessidebar row button.sidebar-button, notebook > header > tabs > tab button.flat, popover.menu box.circular-buttons button.circular.image-button.model, spinbutton > button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 9999px; +} + +button { + min-height: 24px; + min-width: 16px; + padding: 6px 10px; + border-radius: 6px; + font-weight: 500; +} + +button:drop(active) { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +button separator { + margin: 4px 1px; +} + +button.opaque { + background-color: #595d6b; + color: #FFFFFF; +} + +button.text-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; +} + +button.image-button { + min-width: 24px; + padding: 6px; +} + +button.text-button.image-button, button.image-text-button { + min-width: 24px; + padding: 6px; + border-radius: 6px; +} + +button.text-button.image-button > box, +button.text-button.image-button > box > box, button.image-text-button > box, +button.image-text-button > box > box { + border-spacing: 4px; +} + +button.text-button.image-button > box > label, +button.text-button.image-button > box > box > label, button.image-text-button > box > label, +button.image-text-button > box > box > label { + padding-left: 2px; + padding-right: 2px; +} + +button.text-button.image-button label:first-child, button.image-text-button label:first-child { + margin-left: 10px; +} + +button.text-button.image-button label:last-child, button.image-text-button label:last-child { + margin-right: 10px; +} + +button.text-button.image-button.flat label:first-child, button.image-text-button.flat label:first-child { + margin-left: 6px; +} + +button.text-button.image-button.flat label:last-child, button.image-text-button.flat label:last-child { + margin-right: 6px; +} + +button.text-button.image-button image:not(:only-child), button.image-text-button image:not(:only-child) { + margin: 0 4px; +} + +button.arrow-button { + padding-left: 9px; + padding-right: 9px; +} + +button.arrow-button > box { + border-spacing: 4px; +} + +button.arrow-button.text-button { + padding-left: 16px; + padding-right: 16px; +} + +button.arrow-button.text-button > box { + border-spacing: 6px; +} + +menubutton.pill > button, button.pill { + padding: 9px 30px; + border-radius: 9999px; +} + +button.card { + background-color: rgba(255, 255, 255, 0.04); + background-clip: padding-box; + font-weight: inherit; + border: 1px solid rgba(255, 255, 255, 0.12); + background-clip: border-box; +} + +button.card:hover { + background-image: none; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +button.card.keyboard-activating, button.card:active { + background-image: none; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +button.card:checked { + background-image: none; + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); + border-color: #eebebe; +} + +button.card:checked:hover { + background-image: none; + outline-color: transparent; + background-color: #f3d2d2; + color: rgba(0, 0, 0, 0.87); +} + +button.card:checked:disabled { + outline-color: transparent; + background-color: rgba(238, 190, 190, 0.35); + color: rgba(0, 0, 0, 0.38); +} + +button.card:checked.keyboard-activating, button.card:checked:active { + background-image: none; +} + +button.card:checked.has-open-popup { + background-image: none; +} + +button.card:drop(active) { + color: #FF7043; + box-shadow: inset 0 0 0 1px #FF7043; +} + +.linked:not(.vertical) > button:focus, .linked.vertical > button:focus { + box-shadow: none; + outline: none; +} + +.linked:not(.vertical) > button.flat:not(:only-child), .linked.vertical > button.flat:not(:only-child) { + background-color: alpha(currentColor, 0.05); +} + +.linked:not(.vertical) > button.flat:focus, .linked.vertical > button.flat:focus { + box-shadow: none; + outline: none; +} + +.linked:not(.vertical) > menubutton > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +button.osd { + min-width: 24px; + min-width: 24px; + padding: 6px; + box-shadow: none; + background-color: rgba(0, 0, 0, 0.35); + color: white; +} + +button.osd > image { + padding: 0; +} + +button.osd.remove-button { + padding: 0; +} + +button.osd:focus { + outline-color: transparent; +} + +button.osd:hover { + background-color: rgba(0, 0, 0, 0.45); + color: white; +} + +button.osd:active { + background-color: rgba(0, 0, 0, 0.65); + color: white; +} + +button.osd:disabled { + background-color: rgba(0, 0, 0, 0.15); + color: rgba(255, 255, 255, 0.35); +} + +button.suggested-action { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); + box-shadow: none; +} + +button.suggested-action:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + outline-color: transparent; +} + +button.suggested-action:hover { + box-shadow: inset 0 0 0 9999px transparent, 0 2px 2.4px -1px rgba(238, 190, 190, 0.2), 0 4px 3px 0 rgba(238, 190, 190, 0.14), 0 1px 6px 0 rgba(238, 190, 190, 0.12); +} + +button.suggested-action:checked { + background-color: rgba(179, 143, 143, 0.961); +} + +button.suggested-action:checked:hover { + box-shadow: inset 0 0 0 9999px transparent, 0 3px 3px -3px rgba(238, 190, 190, 0.3), 0 2px 3px -1px rgba(238, 190, 190, 0.24), 0 2px 5px 0 rgba(238, 190, 190, 0.12); +} + +button.suggested-action:focus { + box-shadow: 0 0 0 2px rgba(238, 190, 190, 0.35); +} + +button.suggested-action.flat { + background-color: transparent; + color: #eebebe; +} + +button.suggested-action.flat:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +button.suggested-action.flat:checked { + background-color: rgba(238, 190, 190, 0.3); +} + +button.destructive-action { + background-color: #F44336; + color: #FFFFFF; + box-shadow: none; +} + +button.destructive-action:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + outline-color: transparent; +} + +button.destructive-action:hover { + box-shadow: inset 0 0 0 9999px transparent, 0 2px 2.4px -1px rgba(244, 67, 54, 0.2), 0 4px 3px 0 rgba(244, 67, 54, 0.14), 0 1px 6px 0 rgba(244, 67, 54, 0.12); +} + +button.destructive-action:checked { + background-color: #f77b72; +} + +button.destructive-action:checked:hover { + box-shadow: inset 0 0 0 9999px transparent, 0 3px 3px -3px rgba(244, 67, 54, 0.3), 0 2px 3px -1px rgba(244, 67, 54, 0.24), 0 2px 5px 0 rgba(244, 67, 54, 0.12); +} + +button.destructive-action:focus { + box-shadow: 0 0 0 2px rgba(244, 67, 54, 0.35); +} + +button.destructive-action.flat { + background-color: transparent; + color: #F44336; +} + +button.destructive-action.flat:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +button.destructive-action.flat:checked { + background-color: rgba(244, 67, 54, 0.3); +} + +stackswitcher > button > label { + margin: 0 -6px; + padding: 0 6px; +} + +stackswitcher > button > image { + margin: -3px -6px; + padding: 3px 6px; +} + +stackswitcher > button.needs-attention:checked > label, +stackswitcher > button.needs-attention:checked > image { + animation: none; + background-image: none; +} + +button.font > box, button.file > box { + border-spacing: 6px; +} + +button.font > box > box > label, button.file > box > box > label { + font-weight: bold; +} + +windowcontrols > button:not(.suggested-action):not(.destructive-action), filechooser #pathbarbox > stack > box > button, menubutton.circular > button, button.close, button.circular { + border-radius: 9999px; +} + +windowcontrols > button:not(.suggested-action):not(.destructive-action) label, filechooser #pathbarbox > stack > box > button label, menubutton.circular > button label, button.close label, button.circular label { + padding: 0; +} + +menubutton.osd { + background: none; + color: inherit; +} + +menubutton.suggested-action { + background-color: #eebebe; + color: white; +} + +menubutton.destructive-action { + background-color: #F44336; + color: white; +} + +menubutton.opaque { + background-color: #595d6b; + color: #FFFFFF; +} + +menubutton.suggested-action, menubutton.destructive-action, menubutton.opaque { + border-radius: 6px; +} + +menubutton.suggested-action.circular, menubutton.suggested-action.pill, menubutton.destructive-action.circular, menubutton.destructive-action.pill, menubutton.opaque.circular, menubutton.opaque.pill { + border-radius: 9999px; +} + +menubutton.suggested-action > button, menubutton.suggested-action > button:checked, menubutton.destructive-action > button, menubutton.destructive-action > button:checked, menubutton.opaque > button, menubutton.opaque > button:checked { + background-color: transparent; + color: inherit; +} + +menubutton.image-button > button { + min-width: 24px; + padding-left: 6px; + padding-right: 6px; +} + +menubutton arrow { + min-height: 16px; + min-width: 16px; +} + +menubutton arrow.none { + -gtk-icon-source: -gtk-icontheme("open-menu-symbolic"); +} + +menubutton arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +menubutton arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +menubutton arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +menubutton arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +splitbutton { + border-radius: 6px; +} + +splitbutton, splitbutton > separator { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + transition-property: background; +} + +splitbutton > separator { + margin-top: 6px; + margin-bottom: 6px; + background: none; +} + +splitbutton > menubutton > button { + padding: 6px 10px; +} + +splitbutton.image-button > button { + min-width: 24px; + padding-left: 6px; + padding-right: 6px; +} + +splitbutton.text-button.image-button > button, splitbutton.image-text-button > button { + padding-left: 9px; + padding-right: 9px; +} + +splitbutton.text-button.image-button > button > box, splitbutton.image-text-button > button > box { + border-spacing: 6px; +} + +splitbutton > button:dir(ltr), +splitbutton > menubutton > button:dir(rtl) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: -1px; +} + +splitbutton > button:dir(rtl), +splitbutton > menubutton > button:dir(ltr) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: -1px; +} + +splitbutton.flat > separator { + background: rgba(255, 255, 255, 0.12); +} + +splitbutton.flat:hover, splitbutton.flat:active, splitbutton.flat:checked { + background: alpha(currentColor, 0.07); +} + +splitbutton.flat:hover > separator, splitbutton.flat:active > separator, splitbutton.flat:checked > separator { + background: none; +} + +splitbutton.flat:focus-within:focus-visible > separator { + background: none; +} + +splitbutton.flat > button, +splitbutton.flat > menubutton > button { + border-radius: 6px; +} + +splitbutton.suggested-action { + background-color: #eebebe; + color: white; +} + +splitbutton.destructive-action { + background-color: #F44336; + color: white; +} + +splitbutton.opaque { + background-color: #595d6b; + color: #FFFFFF; +} + +splitbutton.suggested-action > button, splitbutton.suggested-action > button:checked, splitbutton.suggested-action > menubutton > button, splitbutton.suggested-action > menubutton > button:checked, splitbutton.destructive-action > button, splitbutton.destructive-action > button:checked, splitbutton.destructive-action > menubutton > button, splitbutton.destructive-action > menubutton > button:checked, splitbutton.opaque > button, splitbutton.opaque > button:checked, splitbutton.opaque > menubutton > button, splitbutton.opaque > menubutton > button:checked { + color: inherit; + background-color: transparent; +} + +splitbutton.suggested-action > menubutton > button:dir(ltr), splitbutton.destructive-action > menubutton > button:dir(ltr), splitbutton.opaque > menubutton > button:dir(ltr) { + box-shadow: inset 1px 0 rgba(255, 255, 255, 0.12); +} + +splitbutton.suggested-action > menubutton > button:dir(rtl), splitbutton.destructive-action > menubutton > button:dir(rtl), splitbutton.opaque > menubutton > button:dir(rtl) { + box-shadow: inset -1px 0 rgba(255, 255, 255, 0.12); +} + +splitbutton > menubutton > button > arrow.none { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +buttoncontent { + border-spacing: 6px; +} + +buttoncontent > label { + font-weight: bold; +} + +buttoncontent > label:dir(ltr) { + padding-right: 2px; +} + +buttoncontent > label:dir(rtl) { + padding-left: 2px; +} + +.arrow-button > box > buttoncontent > label:dir(ltr), splitbutton > button > buttoncontent > label:dir(ltr) { + padding-right: 0; +} + +.arrow-button > box > buttoncontent > label:dir(rtl), splitbutton > button > buttoncontent > label:dir(rtl) { + padding-left: 0; +} + +stacksidebar row.needs-attention > label, stackswitcher > button.needs-attention > label, +stackswitcher > button.needs-attention > image { + animation: needs-attention 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-repeat: no-repeat; + background-position: right 3px; + background-size: 6px 6px; +} + +stacksidebar row.needs-attention > label:dir(rtl), stackswitcher > button.needs-attention > label:dir(rtl), +stackswitcher > button.needs-attention > image:dir(rtl) { + background-position: left 3px; +} + +.linked:not(.vertical) > entry, .linked:not(.vertical) > button, .linked:not(.vertical) > button.image-button { + border-radius: 0; +} + +.linked:not(.vertical) > entry:first-child, .linked:not(.vertical) > button:first-child { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.linked:not(.vertical) > entry:last-child, .linked:not(.vertical) > button:last-child { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.linked:not(.vertical) > entry:only-child, .linked:not(.vertical) > button:only-child { + border-radius: 6px; +} + +.linked.vertical > entry, .linked.vertical > button, .linked.vertical > button.image-button { + border-radius: 0; +} + +.linked.vertical > entry:first-child, .linked.vertical > button:first-child { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +.linked.vertical > entry:last-child, .linked.vertical > button:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +.linked.vertical > entry:only-child, .linked.vertical > button:only-child { + border-radius: 6px; +} + +button.color { + min-height: 24px; + min-width: 24px; + padding: 6px; +} + + +list > row button.image-button:not(.flat) { + background-color: transparent; + box-shadow: none; + border: none; +} + + +list > row button.image-button:not(.flat):hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + + +list > row button.image-button:not(.flat):active, +list > row button.image-button:not(.flat):checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + + +list > row button.image-button:not(.flat).suggested-action { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); +} + + +list > row button.image-button:not(.flat).destructive-action { + background-color: #F44336; + color: #FFFFFF; +} + +/********* + * Links * + *********/ +link { + color: #3c84f7; +} + +link:visited { + color: #BA68C8; +} + +button.link:link, button.link:link:focus, button.link:link:hover, button.link:link:active { + color: #3c84f7; +} + +button.link:visited, button.link:visited:focus, button.link:visited:hover, button.link:visited:active { + color: #BA68C8; +} + +button.link > label { + text-decoration-line: underline; +} + +/***************** + * GtkSpinButton * + *****************/ +spinbutton { + border-radius: 6px; + padding: 0; + border-spacing: 0; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.7); + outline: 0 solid transparent; + outline-offset: 2px; +} + +spinbutton:focus-within { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(255, 255, 255, 0.08); + box-shadow: inset 0 0 0 2px transparent; + color: #FFFFFF; + outline: 2px solid #eebebe; + outline-offset: -2px; +} + +spinbutton:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.5); + outline: none; +} + +spinbutton > text { + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; + margin: 0; +} + +spinbutton > button { + border: none; +} + +spinbutton > button:focus:not(:hover):not(:active):not(:disabled) { + box-shadow: none; +} + +spinbutton:not(.vertical) > text { + min-width: 32px; + padding-left: 12px; +} + +spinbutton:not(.vertical) > button { + padding: 0; + margin: 6px; +} + +spinbutton:not(.vertical) > button.up:dir(ltr), spinbutton:not(.vertical) > button.down:dir(rtl) { + margin-left: 3px; +} + +spinbutton:not(.vertical) > button.up:dir(rtl), spinbutton:not(.vertical) > button.down:dir(ltr) { + margin-right: 3px; +} + +cell.activatable spinbutton:not(.vertical) { + margin: 3px 0; +} + +cell.activatable spinbutton:not(.vertical) > button { + margin: 0; + padding: 0; + min-height: 24px; + border-radius: 0; +} + +cell.activatable spinbutton:not(.vertical) > button:last-child { + border-radius: 0 6px 6px 0; +} + +cell.activatable spinbutton:not(.vertical) > button.up:dir(ltr), cell.activatable spinbutton:not(.vertical) > button.down:dir(rtl) { + margin-left: 0; +} + +cell.activatable spinbutton:not(.vertical) > button.up:dir(rtl), cell.activatable spinbutton:not(.vertical) > button.down:dir(ltr) { + margin-right: 0; +} + +spinbutton.vertical > text { + min-height: 36px; + min-width: 42px; + padding: 0; +} + +spinbutton.vertical > button { + padding: 0; + margin: 6px 9px; +} + +/************** + * ComboBoxes * + **************/ +dropdown > button > box { + border-spacing: 6px; +} + +dropdown arrow, +combobox arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + min-height: 16px; + min-width: 16px; +} + +dropdown > popover.menu > contents modelbutton, +combobox > popover.menu > contents modelbutton { + padding-left: 9px; + padding-right: 9px; +} + +dropdown button.combo cellview:dir(ltr), +combobox button.combo cellview:dir(ltr) { + margin-left: -2px; +} + +dropdown button.combo cellview:dir(rtl), +combobox button.combo cellview:dir(rtl) { + margin-right: -2px; +} + +dropdown popover, +combobox popover { + margin-top: 4px; + padding: 0; +} + +dropdown popover listview, +combobox popover listview { + margin: 0; +} + +dropdown popover listview > row, +combobox popover listview > row { + padding: 6px; +} + +dropdown popover listview > row:selected, +combobox popover listview > row:selected { + color: #FFFFFF; + background-color: alpha(currentColor, 0.06); +} + +dropdown popover .dropdown-searchbar, +combobox popover .dropdown-searchbar { + padding: 6px; +} + +dropdown.linked button:nth-child(2):dir(ltr), +combobox.linked button:nth-child(2):dir(ltr) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +dropdown.linked button:nth-child(2):dir(rtl), +combobox.linked button:nth-child(2):dir(rtl) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child), +combobox > .linked:not(.vertical) > entry:not(:only-child) { + border-radius: 6px; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child):first-child, +combobox > .linked:not(.vertical) > entry:not(:only-child):first-child { + margin-right: -36px; + padding-right: 36px; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child):last-child, +combobox > .linked:not(.vertical) > entry:not(:only-child):last-child { + margin-left: -36px; + padding-left: 36px; +} + +dropdown > .linked:not(.vertical) > button:not(:only-child), +combobox > .linked:not(.vertical) > button:not(:only-child) { + min-height: 16px; + min-width: 16px; + margin: 6px; + padding: 4px; + border-radius: 6px; +} + +.linked:not(.vertical) > combobox:not(:first-child) > box > button.combo { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.linked:not(.vertical) > combobox:not(:last-child) > box > button.combo { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical > combobox:not(:first-child) > box > button.combo { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.linked.vertical > combobox:not(:last-child) > box > button.combo { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +button.combo:only-child { + border-radius: 6px; + font-weight: normal; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1), box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.7); + outline: 0 solid transparent; + outline-offset: 2px; +} + +button.combo:only-child:focus { + color: #FFFFFF; + outline: 2px solid rgba(255, 255, 255, 0.04); + outline-offset: -2px; +} + +button.combo:only-child:hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +button.combo:only-child:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +button.combo:only-child:checked { + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + +button.combo:only-child:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + outline-color: transparent; +} + +/************ + * Toolbars * + ************/ +.toolbar { + padding: 6px; + background-color: #303446; + border-spacing: 6px; +} + +.osd .toolbar { + background-color: transparent; +} + +.app-notification, .toolbar.osd { + transition: box-shadow 200ms ease-out; + padding: 6px; + border-radius: 12px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15), 0 3px 3px 0 rgba(0, 0, 0, 0.18), 0 3px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); + background-color: #414559; + color: #FFFFFF; +} + +.app-notification:backdrop, .toolbar.osd:backdrop { + box-shadow: 0 4px 3px -3px rgba(0, 0, 0, 0.2), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); +} + +.left.app-notification, .right.app-notification, .top.app-notification, .bottom.app-notification, .toolbar.osd.left, .toolbar.osd.right, .toolbar.osd.top, .toolbar.osd.bottom { + border-radius: 0; +} + +.bottom.app-notification, .toolbar.osd.bottom { + box-shadow: none; + background-color: transparent; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.2) 50%, rgba(0, 0, 0, 0.4)); +} + +.toolbar.horizontal > separator { + margin: 2px; +} + +.toolbar.vertical > separator { + margin: 2px; +} + +.toolbar entry, +.toolbar spinbutton, +.toolbar splitbutton, +.toolbar separator:not(.sidebar), +.toolbar button, +.toolbar menubutton, +.toolbar scalebutton { + margin-top: 0; + margin-bottom: 0; +} + +.toolbar menubutton > button, +.toolbar splitbutton > button, +.toolbar splitbutton > menubutton, +.toolbar scalebutton > button { + margin-top: 0; + margin-bottom: 0; +} + +.toolbar switch { + margin-top: 4px; + margin-bottom: 4px; +} + +.toolbar spinbutton entry, +.toolbar spinbutton button { + margin: 0; +} + +.toolbar popover.menu separator:not(.sidebar) { + margin-top: 6px; + margin-bottom: 6px; +} + +searchbar > revealer > box { + padding: 6px; + border-spacing: 6px; + border-style: solid; + border-width: 0 0 1px; + border-color: rgba(255, 255, 255, 0.12); + background-color: #303446; + background-clip: border-box; + box-shadow: none; +} + +searchbar > revealer > box entry, searchbar > revealer > box button, searchbar > revealer > box menubutton { + margin: 0; +} + +/*************** + * Header bars * + ***************/ +headerbar button:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.7); + border: none; +} + +headerbar button:hover:not(.suggested-action):not(.destructive-action), headerbar button:active:not(.suggested-action):not(.destructive-action), headerbar button:checked:not(.suggested-action):not(.destructive-action) { + color: #FFFFFF; +} + +headerbar button:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.32); +} + +headerbar button:checked:disabled:not(.suggested-action):not(.destructive-action) { + background-color: transparent; + color: rgba(255, 255, 255, 0.5); +} + +headerbar button:backdrop:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.5); +} + +headerbar button:backdrop:focus:not(.suggested-action):not(.destructive-action), headerbar button:backdrop:hover:not(.suggested-action):not(.destructive-action), headerbar button:backdrop:active:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.7); +} + +headerbar button:backdrop:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.32); +} + +headerbar button:backdrop:checked:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.7); +} + +headerbar button:backdrop:checked:disabled:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.32); +} + +headerbar entry { + background-color: rgba(255, 255, 255, 0.04); + color: #FFFFFF; +} + +headerbar entry:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); +} + +headerbar entry image { + color: rgba(255, 255, 255, 0.7); +} + +headerbar entry image:hover, headerbar entry image:active { + color: #FFFFFF; +} + +headerbar entry image:disabled { + color: rgba(255, 255, 255, 0.5); +} + +headerbar { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), color 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 -1px rgba(255, 255, 255, 0.12); + background-color: #232634; + color: #FFFFFF; + min-height: 48px; + padding: 0; + margin: 0; +} + +headerbar:disabled { + color: rgba(255, 255, 255, 0.5); +} + +headerbar:backdrop { + background-color: #303446; + color: rgba(255, 255, 255, 0.7); +} + +headerbar:backdrop:disabled { + color: rgba(255, 255, 255, 0.32); +} + +headerbar.flat, headerbar.flat:backdrop { + background: none; + box-shadow: none; + transition: none; +} + +headerbar .title { + padding: 0 12px; + font-weight: bold; +} + +headerbar .subtitle { + padding: 0 12px; + font-size: smaller; +} + +headerbar .subtitle, +headerbar .dim-label, +headerbar row.expander image.expander-row-arrow, +row.expander headerbar image.expander-row-arrow, +headerbar row label.subtitle, +row headerbar label.subtitle { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(255, 255, 255, 0.7); +} + +headerbar .subtitle:backdrop, +headerbar .dim-label:backdrop, +headerbar row.expander image.expander-row-arrow:backdrop, +row.expander headerbar image.expander-row-arrow:backdrop, +headerbar row label.subtitle:backdrop, +row headerbar label.subtitle:backdrop { + color: rgba(255, 255, 255, 0.5); +} + +headerbar .titlebar { + background-color: transparent; + box-shadow: none; +} + +headerbar headerbar + separator { + background-color: rgba(255, 255, 255, 0.12); +} + +headerbar > windowhandle > box { + padding: 0 6px; +} + +headerbar > windowhandle > box, +headerbar > windowhandle > box > box.start, +headerbar > windowhandle > box > box.end { + border-spacing: 6px; +} + +headerbar entry, +headerbar spinbutton, +headerbar button, +headerbar menubutton, +headerbar stackswitcher, +headerbar separator:not(.sidebar) { + margin-top: 6px; + margin-bottom: 6px; +} + +headerbar menubutton > button, +headerbar spinbutton > button, +headerbar splitbutton > button, +headerbar splitbutton > menubutton, +headerbar .linked > menubutton, +headerbar entry > menubutton { + margin-top: 0; + margin-bottom: 0; +} + +headerbar button.suggested-action:disabled, +headerbar button.destructive-action:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); + opacity: 1; +} + +headerbar .linked:not(.vertical) > entry:not(:only-child) { + border-radius: 6px; +} + +headerbar .entry-tag { + margin-top: 5px; + margin-bottom: 5px; +} + +headerbar popover.background button.suggested-action:disabled, +headerbar popover.background button.destructive-action:disabled { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.5); +} + +headerbar popover.background entry, +headerbar popover.background spinbutton, +headerbar popover.background button, +headerbar popover.background menubutton, +headerbar popover.background stackswitcher { + margin-top: 0; + margin-bottom: 0; +} + +headerbar separator:not(.sidebar) { + background-color: rgba(255, 255, 255, 0.12); +} + +headerbar switch { + margin-top: 12px; + margin-bottom: 12px; +} + +headerbar.selection-mode { + transition: background-color 0.1ms 225ms, color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); +} + +headerbar.selection-mode:backdrop { + color: rgba(0, 0, 0, 0.6); +} + +headerbar.selection-mode .subtitle:link { + color: rgba(0, 0, 0, 0.87); +} + +headerbar.selection-mode .selection-menu { + padding-left: 16px; + padding-right: 16px; +} + +headerbar.selection-mode .selection-menu .arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +headerbar.default-decoration { + min-height: 36px; + padding: 0; + margin: 0; + box-shadow: none; + border: none; + outline: none; + background-image: image(#232634); +} + +headerbar.default-decoration:backdrop { + background-image: image(#303446); +} + +headerbar.default-decoration windowcontrols button, +headerbar.default-decoration windowcontrols menubutton { + min-width: 16px; + min-height: 16px; + margin: 0; + padding: 0; +} + +headerbar.default-decoration windowcontrols menubutton button { + min-height: 20px; + min-width: 20px; + margin: 0; + padding: 4px; +} + +.solid-csd headerbar:dir(rtl), .solid-csd headerbar:dir(ltr) { + border-radius: 0; + box-shadow: none; +} + +window.devel headerbar { + background: #232634 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, linear-gradient(to right, transparent 65%, rgba(238, 190, 190, 0.1)), linear-gradient(to top, #292d3d 3px, #2d3143); +} + +window.devel headerbar:backdrop { + background: #232634 cross-fade(10% -gtk-icontheme("system-run-symbolic"), image(transparent)) 90% 0/256px 256px no-repeat, image(#232634); + /* background-color would flash */ +} + +/************ + * Pathbars * + ************/ + +pathbar > button { + padding-left: 6px; + padding-right: 6px; + border-radius: 6px; + background-color: alpha(currentColor, 0.08); + border: none; + box-shadow: none; +} + + +pathbar > button:disabled { + background-color: alpha(currentColor, 0.05); +} + + +pathbar > button:checked { + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + + +pathbar > button:checked:hover { + background-color: alpha(currentColor, 0.16); + color: #FFFFFF; +} + + +pathbar > button label, +pathbar > button image { + margin-left: 3px; + margin-right: 3px; +} + + +pathbar > button.slider-button { + padding-left: 4px; + padding-right: 4px; +} + +.pathbar { + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.7); + border: none; + border-radius: 6px; + padding: 2px; +} + +headerbar .pathbar { + margin-top: 6px; + margin-bottom: 6px; + background-color: rgba(255, 255, 255, 0.04); + color: rgba(255, 255, 255, 0.7); +} + +.pathbar > button { + margin-top: 0; + margin-bottom: 0; + min-height: 20px; + border-radius: 4px; + border: none; + box-shadow: none; +} + +.pathbar > button:last-child { + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + +/************** + * Tree Views * + **************/ +columnview.view, +treeview.view { + border-left-color: #494c5c; + border-top-color: #494c5c; +} + +columnview.view:hover, columnview.view:selected, +treeview.view:hover, +treeview.view:selected { + border-radius: 0; +} + +columnview.view:focus, +treeview.view:focus { + box-shadow: none; + outline: none; +} + +columnview.view.separator, +treeview.view.separator { + min-height: 5px; + color: rgba(255, 255, 255, 0.12); +} + +columnview.view:drop(active), +treeview.view:drop(active) { + box-shadow: none; +} + +columnview.view:drop(active).after, +treeview.view:drop(active).after { + border-top-style: none; +} + +columnview.view:drop(active).before, +treeview.view:drop(active).before { + border-bottom-style: none; +} + +columnview.view > dndtarget:drop(active), +treeview.view > dndtarget:drop(active) { + border-style: solid none; + border-width: 1px; + border-color: alpha(currentColor, 0.06); +} + +columnview.view > dndtarget:drop(active).after, +treeview.view > dndtarget:drop(active).after { + border-top-style: none; +} + +columnview.view > dndtarget:drop(active).before, +treeview.view > dndtarget:drop(active).before { + border-bottom-style: none; +} + +columnview.view.expander, +treeview.view.expander { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); + color: rgba(255, 255, 255, 0.7); +} + +columnview.view.expander:dir(rtl), +treeview.view.expander:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); +} + +columnview.view.expander:hover, +treeview.view.expander:hover { + color: #FFFFFF; +} + +columnview.view.expander:selected, +treeview.view.expander:selected { + color: #FFFFFF; +} + +columnview.view.expander:selected:hover, +treeview.view.expander:selected:hover { + color: #FFFFFF; +} + +columnview.view.expander:checked, +treeview.view.expander:checked { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +columnview.view.expander:disabled, +treeview.view.expander:disabled { + color: rgba(255, 255, 255, 0.32); +} + +columnview.view.progressbar, +treeview.view.progressbar { + border-bottom: 6px solid #eebebe; + box-shadow: none; + background-color: transparent; + background-image: none; +} + +columnview.view.progressbar:selected:hover, +treeview.view.progressbar:selected:hover { + box-shadow: none; +} + +columnview.view.trough, +treeview.view.trough { + border-bottom: 6px solid rgba(255, 255, 255, 0.12); + box-shadow: none; + background-color: transparent; + background-image: none; +} + +columnview.view.trough:selected:hover, +treeview.view.trough:selected:hover { + box-shadow: none; +} + +columnview.view > header > button, +treeview.view > header > button { + padding: 2px 6px; + border-style: none solid solid none; + border-width: 1px; + border-color: rgba(255, 255, 255, 0.12); + border-radius: 0; + background-clip: border-box; +} + +columnview.view > header > button:not(:focus):not(:hover):not(:active), +treeview.view > header > button:not(:focus):not(:hover):not(:active) { + color: rgba(255, 255, 255, 0.7); +} + +columnview.view > header > button, columnview.view > header > button:disabled, +treeview.view > header > button, +treeview.view > header > button:disabled { + background-color: #303446; +} + +columnview.view > header > button:last-child, +treeview.view > header > button:last-child { + border-right-style: none; +} + +columnview.view button.dnd, +columnview.view header.button.dnd, +treeview.view button.dnd, +treeview.view header.button.dnd { + padding: 2px 6px; + border-style: none solid solid; + border-width: 1px; + border-color: rgba(255, 255, 255, 0.12); + border-radius: 0; + box-shadow: none; + background-color: #303446; + background-clip: border-box; + color: #eebebe; +} + +columnview.view acceleditor > label, +treeview.view acceleditor > label { + background-color: #eebebe; +} + +stack.view treeview.view { + min-height: 36px; +} + +/********* + * Menus * + *********/ +menubar { + padding: 0; + background-color: #232634; + color: #FFFFFF; +} + +menubar:backdrop { + background-color: #303446; + color: rgba(255, 255, 255, 0.7); +} + +.csd menubar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +menubar > item { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 20px; + padding: 4px 8px; + color: rgba(255, 255, 255, 0.7); +} + +menubar > item:selected { + transition: none; + background-color: alpha(currentColor, 0.1); + color: #FFFFFF; +} + +menubar > item:disabled { + color: rgba(255, 255, 255, 0.32); +} + +menubar > item label:disabled { + color: inherit; +} + +menubar > item popover.menu popover.menu { + margin-left: 9px; +} + +menubar > item popover.menu.background popover.menu.background > contents { + margin: 0; + border-radius: 12px; +} + +/********************** + * Popover Base Menus * + **********************/ +popover.menu box.inline-buttons { + color: #FFFFFF; + padding: 0 6px; +} + +popover.menu box.inline-buttons button.image-button.model { + min-height: 28px; + min-width: 28px; + padding: 0; + border: none; + outline: none; + transition: none; +} + +popover.menu box.inline-buttons button.image-button.model:selected { + background: image(alpha(currentColor, 0.06)); +} + +popover.menu box.circular-buttons { + padding: 6px; +} + +popover.menu box.circular-buttons button.circular.image-button.model { + padding: 6px; +} + +popover.menu box.circular-buttons button.circular.image-button.model:focus { + background-color: alpha(currentColor, 0.06); +} + +popover.menu arrow.left, +popover.menu radio.left, +popover.menu check.left { + margin-left: 0; + margin-right: 0; +} + +popover.menu arrow.right, +popover.menu radio.right, +popover.menu check.right { + margin-left: 0; + margin-right: 0; +} + +popover.menu label.title { + font-weight: bold; + padding: 4px 26px; +} + +/************ + * Popovers * + ************/ +popover.background { + font: initial; +} + +popover.background, popover.background:backdrop { + background-color: transparent; +} + +popover > arrow, +popover > contents { + transition: box-shadow 200ms ease-out; + padding: 6px; + background-color: #414559; + border-radius: 12px; + color: #FFFFFF; + border: 1px solid rgba(255, 255, 255, 0.1); + background-clip: border-box; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.75), 0 2px 3px -1px rgba(0, 0, 0, 0.05), 0 4px 6px 0 rgba(0, 0, 0, 0.06), 0 1px 10px 0 rgba(0, 0, 0, 0.05); +} + +popover > contents > list, +popover > contents > .view, +popover > contents > toolbar { + border-style: none; + box-shadow: none; + background-color: transparent; +} + +popover > contents separator { + background-color: rgba(255, 255, 255, 0.12); + margin: 3px 0; +} + +popover > contents list separator { + margin: 0; +} + +popover > contents list > row { + border-radius: 6px; +} + +popover > contents stack > box { + padding: 0; +} + +popover > contents > box > button { + margin: 0; +} + +popover .view:not(:selected), +popover toolbar { + background-color: #414559; +} + +popover.menu button, +popover button.model { + min-height: 32px; + padding: 0 8px; +} + +popover modelbutton { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 22px; + min-width: 56px; + padding: 3px 9px; + color: #FFFFFF; + font: initial; + border-radius: 6px; +} + +popover modelbutton:focus:not(:hover) { + transition: none; + box-shadow: none; + outline: none; +} + +popover modelbutton:disabled { + color: rgba(255, 255, 255, 0.5); +} + +popover modelbutton accelerator { + color: rgba(255, 255, 255, 0.5); + margin-left: 30px; +} + +popover modelbutton accelerator:disabled { + color: rgba(255, 255, 255, 0.12); +} + +popover modelbutton arrow.left { + -gtk-icon-source: -gtk-icontheme("go-previous-symbolic"); +} + +popover modelbutton arrow.right { + -gtk-icon-source: -gtk-icontheme("go-next-symbolic"); +} + +.osd popover, popover.touch-selection, popover.magnifier { + background-color: transparent; +} + +magnifier { + background-color: #303446; +} + +/************* + * Notebooks * + *************/ +tabbar tab, tabbar tabbox > tabboxchild > tab, notebook > header > tabs > tab { + min-height: 24px; + min-width: 24px; + padding: 3px 6px; + border: none; + background-clip: padding-box; + font-weight: 500; + border-radius: 6px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), outline 300ms cubic-bezier(0, 0, 0.2, 1); + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + background-color: transparent; + outline: 0 solid transparent; + outline-offset: 2px; + color: rgba(255, 255, 255, 0.7); +} + +tabbar tab:hover:not(:checked):not(:selected), notebook > header > tabs > tab:hover:not(:checked):not(:selected) { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + box-shadow: none; +} + +tabbar tab:disabled, notebook > header > tabs > tab:disabled { + color: rgba(255, 255, 255, 0.32); + background-color: transparent; +} + +tabbar tab:active, notebook > header > tabs > tab:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + box-shadow: none; +} + +tabbar tab:checked:not(:active), notebook > header > tabs > tab:checked:not(:active), tabbar tab:selected:not(:active), notebook > header > tabs > tab:selected:not(:active) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, background-color 0ms; + background-color: rgba(255, 255, 255, 0.15); + color: #FFFFFF; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +tabbar tab:checked:not(:active):disabled, notebook > header > tabs > tab:checked:not(:active):disabled, tabbar tab:selected:not(:active):disabled, notebook > header > tabs > tab:selected:not(:active):disabled { + color: rgba(255, 255, 255, 0.5); +} + +frame > paned > notebook > header, notebook.frame > header { + background-color: rgba(255, 255, 255, 0.04); +} + +notebook, notebook.frame { + background-color: #303446; + border-radius: 12px; +} + +notebook.frame frame > border { + border: none; + border-radius: 6px; +} + +notebook.frame frame > list row.activatable { + border-radius: 6px; +} + +notebook > header { + border: none; + background-color: rgba(255, 255, 255, 0.04); + margin: 3px; + border-radius: 9px; +} + +notebook > header.top > tabs > arrow { + border-top-style: none; +} + +notebook > header.bottom > tabs > arrow { + border-bottom-style: none; +} + +notebook > header.top > tabs > arrow, notebook > header.bottom > tabs > arrow { + padding-left: 4px; + padding-right: 4px; +} + +notebook > header.top > tabs > arrow.down, notebook > header.bottom > tabs > arrow.down { + margin-left: 0; + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +notebook > header.top > tabs > arrow.up, notebook > header.bottom > tabs > arrow.up { + margin-right: 0; + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +notebook > header.left > tabs > arrow { + border-left-style: none; +} + +notebook > header.right > tabs > arrow { + border-right-style: none; +} + +notebook > header.left > tabs > arrow, notebook > header.right > tabs > arrow { + padding-top: 4px; + padding-bottom: 4px; +} + +notebook > header.left > tabs > arrow.down, notebook > header.right > tabs > arrow.down { + margin-top: 0; + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +notebook > header.left > tabs > arrow.up, notebook > header.right > tabs > arrow.up { + margin-bottom: 0; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +notebook > header > tabs > arrow { + min-height: 16px; + min-width: 16px; + border-radius: 6px; +} + +notebook > header > tabs > tab { + margin: 3px; +} + +notebook > header > tabs > tab > box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: -6px -12px; + padding: 6px 12px; +} + +notebook > header > tabs > tab > box:drop(active) { + background-color: rgba(255, 255, 255, 0.12); + color: #FFFFFF; +} + +notebook > header > tabs > tab button.flat:last-child { + margin-left: 6px; + margin-right: -3px; +} + +notebook > header > tabs > tab button.flat:first-child { + margin-left: -3px; + margin-right: 6px; +} + +notebook > header > tabs > tab button.close-button { + min-width: 24px; + min-height: 24px; +} + +notebook > header.top > tabs, notebook > header.bottom > tabs { + padding-left: 0; + padding-right: 0; +} + +notebook > header.top > tabs:not(:only-child):first-child, notebook > header.bottom > tabs:not(:only-child):first-child { + margin-left: 0; +} + +notebook > header.top > tabs:not(:only-child):last-child, notebook > header.bottom > tabs:not(:only-child):last-child { + margin-right: 0; +} + +notebook > header.top > tabs > tab:not(:last-child), notebook > header.bottom > tabs > tab:not(:last-child) { + margin-right: 0; +} + +notebook > header.top > tabs tab.reorderable-page, notebook > header.bottom > tabs tab.reorderable-page { + border-style: solid; +} + +notebook > header.left > tabs, notebook > header.right > tabs { + padding-top: 0; + padding-bottom: 0; +} + +notebook > header.left > tabs:not(:only-child):first-child, notebook > header.right > tabs:not(:only-child):first-child { + margin-top: 0; +} + +notebook > header.left > tabs:not(:only-child):last-child, notebook > header.right > tabs:not(:only-child):last-child { + margin-bottom: 0; +} + +notebook > header.left > tabs > tab:not(:last-child), notebook > header.right > tabs > tab:not(:last-child) { + margin-bottom: 0; +} + +notebook > header.left > tabs tab.reorderable-page, notebook > header.right > tabs tab.reorderable-page { + border-style: solid; +} + +notebook > header > menubutton > button.image-button { + padding: 3px; + min-width: 24px; + min-height: 24px; + margin: 0 3px; +} + +notebook > stack:not(:only-child) { + background-color: transparent; + border-radius: 6px; +} + +tabbar > revealer > box { + box-shadow: none; +} + +tabbar .box { + min-height: 36px; + border-bottom: none; + background: none; +} + +tabbar scrolledwindow.pinned undershoot { + border: 0 solid rgba(255, 255, 255, 0.12); +} + +tabbar scrolledwindow.pinned:dir(rtl) undershoot.left { + border-left-width: 1px; +} + +tabbar scrolledwindow.pinned:dir(ltr) undershoot.right { + border-right-width: 1px; +} + +tabbar scrolledwindow.pinned tabbox > background:dir(ltr) { + box-shadow: inset -1px 0 rgba(255, 255, 255, 0.12); +} + +tabbar scrolledwindow.pinned tabbox > background:dir(rtl) { + box-shadow: inset 1px 0 rgba(255, 255, 255, 0.12); +} + +tabbar undershoot { + transition: background 150ms ease-in-out; +} + +tabbar undershoot.left { + background: linear-gradient(to right, #303446, rgba(0, 0, 0, 0) 20px); +} + +tabbar undershoot.right { + background: linear-gradient(to left, #303446, rgba(0, 0, 0, 0) 20px); +} + +tabbar .needs-attention-left undershoot.left { + background: linear-gradient(to right, alpha(#eebebe, 0.5), alpha(#eebebe, 0.3) 1px, alpha(#eebebe, 0) 20px); +} + +tabbar .needs-attention-right undershoot.right { + background: linear-gradient(to left, alpha(#eebebe, 0.5), alpha(#eebebe, 0.3) 1px, alpha(#eebebe, 0) 20px); +} + +tabbar tabbox { + background-color: rgba(255, 255, 255, 0.04); + background-image: none; + padding: 0; + margin: 0; + border-radius: 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +tabbar tabbox > background { + background: none; +} + +tabbar tabbox > separator { + margin: 9px 0; + min-width: 1px; + transition: opacity 150ms ease-in-out; +} + +tabbar tabbox > separator.hidden { + opacity: 0; +} + +tabbar tabbox > tabboxchild { + margin: 0 -3px; + padding: 0; +} + +tabbar tabbox > tabboxchild > tab { + margin: 3px; +} + +tabbar tab.needs-attention { + background-image: radial-gradient(ellipse at bottom, rgba(255, 255, 255, 0.8), alpha(#eebebe, 0.4) 10%, alpha(#eebebe, 0) 30%); +} + +tabbar tab.needs-attention:hover { + background-image: image(alpha(currentColor, 0.03)), radial-gradient(ellipse at bottom, rgba(255, 255, 255, 0.8), alpha(#eebebe, 0.4) 10%, alpha(#eebebe, 0) 30%); +} + +tabbar .start-action, +tabbar .end-action { + background-color: rgba(255, 255, 255, 0.04); + background-clip: padding-box; + border-color: rgba(255, 255, 255, 0.12); + border-style: solid; + transition: background 150ms ease-in-out; +} + +tabbar .start-action button, +tabbar .end-action button { + border: none; + border-radius: 0; +} + +tabbar .start-action:dir(ltr), +tabbar .end-action:dir(rtl) { + border-right-width: 1px; +} + +tabbar .start-action:dir(rtl), +tabbar .end-action:dir(ltr) { + border-left-width: 1px; +} + +tabbar:not(.inline) scrolledwindow.pinned undershoot { + border-color: rgba(255, 255, 255, 0.12); +} + +tabbar:not(.inline) undershoot.left { + background: linear-gradient(to right, #232634, rgba(0, 0, 0, 0) 20px); +} + +tabbar:not(.inline) undershoot.right { + background: linear-gradient(to left, #232634, rgba(0, 0, 0, 0) 20px); +} + +tabbar:not(.inline) .needs-attention-left undershoot.left { + background: linear-gradient(to right, alpha(#eebebe, 0.5), alpha(#eebebe, 0.3) 1px, alpha(#eebebe, 0) 20px); +} + +tabbar:not(.inline) .needs-attention-right undershoot.right { + background: linear-gradient(to left, alpha(#eebebe, 0.5), alpha(#eebebe, 0.3) 1px, alpha(#eebebe, 0) 20px); +} + +tabbar:not(.inline) tabbox > background { + background-color: #232634; +} + +tabbar:not(.inline) .start-action, +tabbar:not(.inline) .end-action { + background-color: alpha(#232634, 0.6); + border-color: rgba(255, 255, 255, 0.12); +} + +tabbar:not(.inline):backdrop .box { + background-color: #303446; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +dnd tab { + min-height: 24px; + background-color: #232634; + color: #FFFFFF; + box-shadow: 0 1px 5px 1px rgba(0, 0, 0, 0.09), 0 2px 14px 3px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.05); + outline: 1px solid rgba(0, 0, 0, 0.75); + outline-offset: -1px; + margin: 24px; +} + +dnd tab.needs-attention { + background-image: radial-gradient(ellipse at bottom, rgba(255, 255, 255, 0.8), alpha(#eebebe, 0.4) 10%, alpha(#eebebe, 0) 30%); +} + +tabbar tab, +dnd tab { + padding: 6px; +} + +tabbar tab button.image-button, +dnd tab button.image-button { + padding: 0; + margin: 0; + min-width: 24px; + min-height: 24px; + border-radius: 9999px; +} + +tabbar tab button.image-button.tab-close-button, +dnd tab button.image-button.tab-close-button { + margin-right: -3px; +} + +tabview:drop(active), +tabbox:drop(active) { + box-shadow: none; +} + +/************** + * Scrollbars * + **************/ +scrollbar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #303446; + box-shadow: none; + outline: none; +} + +scrollbar.top { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +scrollbar.bottom { + border-top: 1px solid rgba(255, 255, 255, 0.12); +} + +scrollbar.left { + border-right: 1px solid rgba(255, 255, 255, 0.12); +} + +scrollbar.right { + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +scrollbar > range > trough { + border: none; + background: none; + padding: 0; + outline: none; +} + +scrollbar > range > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 8px; + min-height: 8px; + border: 4px solid transparent; + border-radius: 9999px; + background-clip: padding-box; + background-color: rgba(255, 255, 255, 0.5); + box-shadow: none; + outline: none; +} + +scrollbar > range > trough > slider:hover { + background-color: rgba(255, 255, 255, 0.7); +} + +scrollbar > range > trough > slider:active { + background-color: #FFFFFF; +} + +scrollbar > range > trough > slider:disabled { + background-color: rgba(255, 255, 255, 0.32); +} + +scrollbar > range.fine-tune > trough > slider { + min-width: 4px; + min-height: 4px; +} + +scrollbar > range.fine-tune.horizontal > trough > slider { + margin: 2px 0; +} + +scrollbar > range.fine-tune.vertical > trough > slider { + margin: 0 2px; +} + +scrollbar.overlay-indicator:not(.fine-tune) > range > trough > slider { + transition-property: background-color, min-height, min-width; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { + border-color: transparent; + background-color: transparent; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) > range > trough > slider { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid rgba(48, 52, 70, 0.3); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid rgba(48, 52, 70, 0.3); + border-radius: 9999px; + background-color: rgba(255, 255, 255, 0.5); + background-clip: padding-box; + -gtk-icon-source: none; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button:disabled { + background-color: rgba(255, 255, 255, 0.32); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal > range > trough > slider { + min-width: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal button { + min-width: 8px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical > range > trough > slider { + min-height: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical button { + min-height: 8px; +} + +scrollbar.overlay-indicator.dragging, scrollbar.overlay-indicator.hovering { + background-color: rgba(65, 69, 89, 0.9); +} + +scrollbar.horizontal > range > trough > slider { + min-width: 24px; +} + +scrollbar.vertical > range > trough > slider { + min-height: 24px; +} + +scrollbar button { + min-width: 16px; + min-height: 16px; + padding: 0; + border-radius: 0; +} + +scrollbar.vertical button.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +scrollbar.vertical button.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +scrollbar.horizontal button.down { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +scrollbar.horizontal button.up { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +/********** + * Switch * + **********/ +switch { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 6px 0; + padding: 0; + border: none; + border-radius: 9999px; + background-color: rgba(255, 255, 255, 0.5); + background-clip: border-box; + font-size: 0; + color: transparent; +} + +switch:checked { + background-color: #eebebe; +} + +switch:disabled { + opacity: 0.5; +} + +switch image { + margin: -8px; +} + +switch > slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 18px; + min-height: 18px; + margin: 3px; + border-radius: 9999px; + outline: none; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.05), 0 2px 3px -1px rgba(0, 0, 0, 0.06), 0 1px 4px 0 rgba(0, 0, 0, 0.05); + background-color: white; + border: none; +} + +switch:focus slider, switch:hover slider, switch:focus:hover slider { + box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.12); +} + +/************************* + * Check and Radio items * + *************************/ +.view.content-view.check:not(list), +.content-view .tile check:not(list) { + min-height: 40px; + min-width: 40px; + margin: 0; + padding: 0; + box-shadow: none; + background-color: transparent; + background-image: none; +} + +.view.content-view.check:not(list):hover, .view.content-view.check:not(list):active, +.content-view .tile check:not(list):hover, +.content-view .tile check:not(list):active { + box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.12); +} + +.view.content-view.check:not(list), +.content-view .tile check:not(list) { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-unchecked-dark.png"), url("assets/selectionmode-checkbox-unchecked-dark@2.png")); +} + +.view.content-view.check:not(list):checked, +.content-view .tile check:not(list):checked { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-checked-dark.png"), url("assets/selectionmode-checkbox-checked-dark@2.png")); +} + +checkbutton, +radiobutton { + outline: none; + border-spacing: 3px; +} + +check, +radio { + min-height: 20px; + min-width: 20px; + margin: 3px; + padding: 0; + border-radius: 9999px; + border: none; + color: transparent; + background-color: rgba(255, 255, 255, 0.12); + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 150ms cubic-bezier(0, 0, 0.2, 1); +} + +check:hover, +radio:hover { + box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.04); + background-color: rgba(255, 255, 255, 0.15); +} + +check:active, +radio:active { + box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.12); + background-color: rgba(255, 255, 255, 0.2); +} + +check:disabled, +radio:disabled { + background-color: rgba(255, 255, 255, 0.04); +} + +check:checked, check:indeterminate, +radio:checked, +radio:indeterminate { + color: rgba(0, 0, 0, 0.87); + background-color: #eebebe; +} + +check:checked:hover, check:indeterminate:hover, +radio:checked:hover, +radio:indeterminate:hover { + box-shadow: 0 0 0 6px rgba(238, 190, 190, 0.15); + background-color: #f9e6e6; +} + +check:checked:active, check:indeterminate:active, +radio:checked:active, +radio:indeterminate:active { + box-shadow: 0 0 0 6px rgba(238, 190, 190, 0.2); + background-color: #eebebe; +} + +check:checked:disabled, check:indeterminate:disabled, +radio:checked:disabled, +radio:indeterminate:disabled { + color: rgba(0, 0, 0, 0.6); + background-color: rgba(238, 190, 190, 0.35); +} + +popover modelbutton.flat check, popover modelbutton.flat check:focus, popover modelbutton.flat check:hover, popover modelbutton.flat check:focus:hover, popover modelbutton.flat check:active, popover modelbutton.flat check:disabled, popover modelbutton.flat radio, popover modelbutton.flat radio:focus, popover modelbutton.flat radio:hover, popover modelbutton.flat radio:focus:hover, popover modelbutton.flat radio:active, popover modelbutton.flat radio:disabled { + transition: none; + box-shadow: none; + background-image: none; +} + +popover modelbutton.flat check.left:dir(rtl), popover modelbutton.flat radio.left:dir(rtl) { + margin-left: -3px; + margin-right: 6px; +} + +popover modelbutton.flat check.right:dir(ltr), popover modelbutton.flat radio.right:dir(ltr) { + margin-left: 6px; + margin-right: -3px; +} + +popover.menu check, popover.menu radio { + transition: none; + margin: 0; + padding: 0; +} + +popover.menu check:dir(ltr), popover.menu radio:dir(ltr) { + margin-right: 6px; + margin-left: -3px; +} + +popover.menu check:dir(rtl), popover.menu radio:dir(rtl) { + margin-left: 6px; + margin-right: -3px; +} + +popover.menu check, popover.menu check:hover, popover.menu check:disabled, popover.menu check:checked:hover, popover.menu check:indeterminate:hover, popover.menu radio, popover.menu radio:hover, popover.menu radio:disabled, popover.menu radio:checked:hover, popover.menu radio:indeterminate:hover { + box-shadow: none; +} + + +check { + -gtk-icon-size: 20px; +} + + +check:checked { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/checkbox-checked-symbolic.svg")), -gtk-recolor(url("assets/scalable/checkbox-checked-symbolic@2.svg"))); +} + + +check:indeterminate { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/checkbox-mixed-symbolic.svg")), -gtk-recolor(url("assets/scalable/checkbox-mixed-symbolic@2.svg"))); +} + + +radio { + -gtk-icon-size: 20px; +} + + +radio:checked { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/radio-checked-symbolic.svg")), -gtk-recolor(url("assets/scalable/radio-checked-symbolic@2.svg"))); +} + + +radio:indeterminate { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/radio-mixed-symbolic.svg")), -gtk-recolor(url("assets/scalable/radio-mixed-symbolic@2.svg"))); +} + + +popover.menu check { + min-height: 16px; + min-width: 16px; + -gtk-icon-size: 16px; +} + + +popover.menu check:checked { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/small-checkbox-checked-symbolic.svg")), -gtk-recolor(url("assets/scalable/small-checkbox-checked-symbolic@2.svg"))); +} + + +popover.menu check:indeterminate { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/small-checkbox-mixed-symbolic.svg")), -gtk-recolor(url("assets/scalable/small-checkbox-mixed-symbolic@2.svg"))); +} + + +popover.menu radio { + min-height: 16px; + min-width: 16px; + -gtk-icon-size: 16px; +} + + +popover.menu radio:checked { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/small-radio-checked-symbolic.svg")), -gtk-recolor(url("assets/scalable/small-radio-checked-symbolic@2.svg"))); +} + + +popover.menu radio:indeterminate { + -gtk-icon-source: -gtk-scaled(-gtk-recolor(url("assets/scalable/small-radio-mixed-symbolic.svg")), -gtk-recolor(url("assets/scalable/small-radio-mixed-symbolic@2.svg"))); +} + +check:not(:checked):active { + -gtk-icon-transform: rotate(90deg); +} + +treeview.view radio, treeview.view check, +columnview.view radio, +columnview.view check { + padding: 0; + margin: 0; + transition: none; +} + +treeview.view radio, treeview.view radio:hover, treeview.view radio:disabled, treeview.view radio:checked:hover, treeview.view radio:indeterminate:hover, treeview.view check, treeview.view check:hover, treeview.view check:disabled, treeview.view check:checked:hover, treeview.view check:indeterminate:hover, +columnview.view radio, +columnview.view radio:hover, +columnview.view radio:disabled, +columnview.view radio:checked:hover, +columnview.view radio:indeterminate:hover, +columnview.view check, +columnview.view check:hover, +columnview.view check:disabled, +columnview.view check:checked:hover, +columnview.view check:indeterminate:hover { + box-shadow: none; +} + +treeview.view:hover check, treeview.view:hover radio, treeview.view:selected check, treeview.view:selected radio, treeview.view:focus check, treeview.view:focus radio, +columnview.view:hover check, +columnview.view:hover radio, +columnview.view:selected check, +columnview.view:selected radio, +columnview.view:focus check, +columnview.view:focus radio { + box-shadow: none; +} + +treeview.view:hover check:checked, treeview.view:hover radio:checked, treeview.view:selected check:checked, treeview.view:selected radio:checked, treeview.view:focus check:checked, treeview.view:focus radio:checked, +columnview.view:hover check:checked, +columnview.view:hover radio:checked, +columnview.view:selected check:checked, +columnview.view:selected radio:checked, +columnview.view:focus check:checked, +columnview.view:focus radio:checked { + color: rgba(0, 0, 0, 0.87); + background-color: #eebebe; +} + +/************ + * GtkScale * + ************/ +scale { + min-height: 2px; + min-width: 2px; +} + +scale.horizontal { + padding: 17px 12px; +} + +scale.vertical { + padding: 12px 17px; +} + +scale > trough { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-color: rgba(255, 255, 255, 0.3); +} + +scale > trough:disabled { + background-color: rgba(255, 255, 255, 0.12); +} + +scale > trough > highlight { + transition: background-image 75ms cubic-bezier(0, 0, 0.2, 1); + background-image: image(#eebebe); +} + +scale > trough > highlight:disabled { + background-color: #303446; + background-image: image(rgba(255, 255, 255, 0.32)); +} + +scale > trough > fill { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(255, 255, 255, 0.3); +} + +scale > trough > fill:disabled { + background-color: transparent; +} + +scale > trough > slider { + min-height: 18px; + min-width: 18px; + margin: -8px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 9999px; + color: #eebebe; + background-color: #303446; + box-shadow: inset 0 0 0 2px #eebebe; +} + +scale > trough > slider:hover { + box-shadow: inset 0 0 0 2px #eebebe, 0 0 0 8px rgba(255, 255, 255, 0.12); +} + +scale > trough > slider:active { + box-shadow: inset 0 0 0 4px #eebebe, 0 0 0 8px rgba(255, 255, 255, 0.12); +} + +scale > trough > slider:disabled { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.32); +} + +scale.fine-tune.horizontal { + min-height: 4px; + padding-top: 16px; + padding-bottom: 16px; +} + +scale.fine-tune.vertical { + min-width: 4px; + padding-left: 16px; + padding-right: 16px; +} + +scale.fine-tune > trough > slider { + margin: -7px; +} + +scale > marks, +scale > value { + color: rgba(255, 255, 255, 0.7); +} + +scale indicator { + background-color: rgba(255, 255, 255, 0.3); + color: transparent; +} + +scale.marks-before:not(.marks-after) > trough > slider, scale.marks-after:not(.marks-before) > trough > slider { + transform: rotate(0); +} + +scale.horizontal > marks.top { + margin-bottom: 7px; + margin-top: -15px; +} + +scale.horizontal.fine-tune > marks.top { + margin-bottom: 6px; + margin-top: -14px; +} + +scale.horizontal > marks.bottom { + margin-top: 7px; + margin-bottom: -15px; +} + +scale.horizontal.fine-tune > marks.bottom { + margin-top: 6px; + margin-bottom: -14px; +} + +scale.vertical > marks.top { + margin-right: 7px; + margin-left: -15px; +} + +scale.vertical.fine-tune > marks.top { + margin-right: 6px; + margin-left: -14px; +} + +scale.vertical > marks.bottom { + margin-left: 7px; + margin-right: -15px; +} + +scale.vertical.fine-tune > marks.bottom { + margin-left: 6px; + margin-right: -14px; +} + +scale.horizontal indicator { + min-height: 8px; + min-width: 1px; +} + +scale.vertical indicator { + min-height: 1px; + min-width: 8px; +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider, scale.horizontal.marks-before:not(.marks-after) > trough > slider:hover, scale.horizontal.marks-before:not(.marks-after) > trough > slider:active, scale.horizontal.marks-before:not(.marks-after) > trough > slider:disabled { + box-shadow: none; +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-disabled-dark.png"), url("assets/scale-horz-marks-before-slider-disabled-dark@2.png")); +} + +scale.horizontal.marks-before:not(.marks-after) > trough > slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider, scale.horizontal.marks-after:not(.marks-before) > trough > slider:hover, scale.horizontal.marks-after:not(.marks-before) > trough > slider:active, scale.horizontal.marks-after:not(.marks-before) > trough > slider:disabled { + box-shadow: none; +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-disabled-dark.png"), url("assets/scale-horz-marks-after-slider-disabled-dark@2.png")); +} + +scale.horizontal.marks-after:not(.marks-before) > trough > slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider, scale.vertical.marks-before:not(.marks-after) > trough > slider:hover, scale.vertical.marks-before:not(.marks-after) > trough > slider:active, scale.vertical.marks-before:not(.marks-after) > trough > slider:disabled { + box-shadow: none; +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-disabled-dark.png"), url("assets/scale-vert-marks-before-slider-disabled-dark@2.png")); +} + +scale.vertical.marks-before:not(.marks-after) > trough > slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider, scale.vertical.marks-after:not(.marks-before) > trough > slider:hover, scale.vertical.marks-after:not(.marks-before) > trough > slider:active, scale.vertical.marks-after:not(.marks-before) > trough > slider:disabled { + box-shadow: none; +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-disabled-dark.png"), url("assets/scale-vert-marks-after-slider-disabled-dark@2.png")); +} + +scale.vertical.marks-after:not(.marks-before) > trough > slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")); +} + +scale.color { + min-height: 0; + min-width: 0; +} + +scale.color.horizontal { + padding: 0 0 12px 0; +} + +scale.color.horizontal > trough > slider:dir(ltr), scale.color.horizontal > trough > slider:dir(rtl) { + margin-bottom: -13.5px; + margin-top: 11.5px; +} + +scale.color.vertical:dir(ltr) { + padding: 0 0 0 12px; +} + +scale.color.vertical:dir(ltr) slider { + margin-left: -13.5px; + margin-right: 11.5px; +} + +scale.color.vertical:dir(rtl) { + padding: 0 12px 0 0; +} + +scale.color.vertical:dir(rtl) > trough > slider { + margin-right: -13.5px; + margin-left: 11.5px; +} + +/***************** + * Progress bars * + *****************/ +progressbar { + color: rgba(255, 255, 255, 0.7); + font-size: smaller; +} + +progressbar.horizontal trough, +progressbar.horizontal progress { + min-height: 6px; +} + +progressbar.vertical trough, +progressbar.vertical progress { + min-width: 6px; +} + +progressbar trough { + border-radius: 6px; + background-color: rgba(255, 255, 255, 0.12); +} + +progressbar progress { + border-radius: 6px; + background-color: #eebebe; +} + +progressbar.osd { + min-width: 6px; + min-height: 6px; + background-color: transparent; + box-shadow: none; + margin: 0; + padding: 0; +} + +progressbar.osd trough { + background-color: transparent; +} + +progressbar.osd progress { + background-color: #eebebe; +} + +progressbar trough.empty progress { + all: unset; +} + +/************* + * Level Bar * + *************/ +levelbar.horizontal block { + min-height: 6px; +} + +levelbar.horizontal.discrete block { + min-width: 36px; +} + +levelbar.horizontal.discrete block:not(:last-child) { + margin-right: 2px; +} + +levelbar.vertical block { + min-width: 6px; +} + +levelbar.vertical.discrete block { + min-height: 36px; +} + +levelbar.vertical.discrete block:not(:last-child) { + margin-bottom: 2px; +} + +levelbar trough { + border-radius: 6px; +} + +levelbar block.low { + background-color: #FBC02D; +} + +levelbar block.high, levelbar block:not(.empty) { + background-color: #eebebe; +} + +levelbar block.full { + background-color: #66BB6A; +} + +levelbar block.empty { + background-color: rgba(255, 255, 255, 0.12); +} + +/**************** + * Print dialog * +*****************/ +window.dialog.print drawing { + color: #FFFFFF; + background: none; + border: none; + padding: 0; +} + +window.dialog.print drawing paper { + padding: 0; + border: 1px solid rgba(255, 255, 255, 0.12); + background-color: #303446; + color: #FFFFFF; +} + +window.dialog.print .dialog-action-box { + margin: 12px; +} + +/********** + * Frames * + **********/ +frame, +.frame { + border: 1px solid rgba(255, 255, 255, 0.12); +} + +frame > list, +.frame > list { + border: none; +} + +frame.view, +.frame.view { + border-radius: 6px; +} + +frame.flat, +.frame.flat { + border-style: none; +} + +frame { + border-radius: 6px; +} + +frame > label { + margin: 4px; +} + +frame.flat > border, statusbar frame > border { + border: none; +} + +actionbar > revealer > box { + padding: 6px; + border-spacing: 6px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.12); + background-color: #303446; + background-clip: border-box; + border: none; +} + +actionbar > revealer > box button, actionbar > revealer > box entry, +actionbar > revealer > box menubutton, actionbar > revealer > box menubutton > button, +actionbar > revealer > box splitbutton, actionbar > revealer > box splitbutton > button, +actionbar > revealer > box spinbutton { + margin: 0; +} + +statusbar { + padding: 6px 18px; +} + +scrolledwindow viewport.frame { + border: none; +} + +stack scrolledwindow.frame viewport.frame list { + border: none; +} + +overshoot.top { + background-image: radial-gradient(farthest-side at top, alpha(currentColor, 0.12) 85%, alpha(currentColor, 0)), radial-gradient(farthest-side at top, alpha(currentColor, 0.05), alpha(currentColor, 0)); + background-size: 100% 3%, 100% 50%; + background-repeat: no-repeat; + background-position: top; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.bottom { + background-image: radial-gradient(farthest-side at bottom, alpha(currentColor, 0.12) 85%, alpha(currentColor, 0)), radial-gradient(farthest-side at bottom, alpha(currentColor, 0.05), alpha(currentColor, 0)); + background-size: 100% 3%, 100% 50%; + background-repeat: no-repeat; + background-position: bottom; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.left { + background-image: radial-gradient(farthest-side at left, alpha(currentColor, 0.12) 85%, alpha(currentColor, 0)), radial-gradient(farthest-side at left, alpha(currentColor, 0.05), alpha(currentColor, 0)); + background-size: 3% 100%, 50% 100%; + background-repeat: no-repeat; + background-position: left; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.right { + background-image: radial-gradient(farthest-side at right, alpha(currentColor, 0.12) 85%, alpha(currentColor, 0)), radial-gradient(farthest-side at right, alpha(currentColor, 0.05), alpha(currentColor, 0)); + background-size: 3% 100%, 50% 100%; + background-repeat: no-repeat; + background-position: right; + background-color: transparent; + border: none; + box-shadow: none; +} + +scrolledwindow.undershoot-top > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-bottom > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-start:dir(ltr) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-start:dir(rtl) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-end:dir(ltr) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow.undershoot-end:dir(rtl) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +scrolledwindow > junction { + border: none; + background-color: #303446; +} + +separator { + min-width: 1px; + min-height: 1px; + background-color: rgba(255, 255, 255, 0.12); +} + +stacksidebar + separator.vertical, +stacksidebar separator.horizontal, button.font separator, button.file separator, separator.spacer { + min-width: 0; + min-height: 0; + background-color: transparent; + background-image: none; +} + +/********* + * Lists * + *********/ +list.content, +list.boxed-list { + border-radius: 7px; + box-shadow: none; + border: 1px solid rgba(255, 255, 255, 0.12); +} + +listview, +list { + border-color: rgba(255, 255, 255, 0.12); + background-color: #303446; + background-clip: padding-box; +} + +listview > row, +list > row { + padding: 6px; + background-clip: padding-box; +} + +listview > row.expander, +list > row.expander { + padding: 0px; +} + +listview > row.expander .row-header, +list > row.expander .row-header { + padding: 2px; +} + +listview.horizontal row.separator:not(:last-child), listview.separators.horizontal > row:not(.separator):not(:last-child), +list.horizontal row.separator:not(:last-child), +list.separators.horizontal > row:not(.separator):not(:last-child) { + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +listview:not(.horizontal) row.separator:not(:last-child), listview.separators:not(.horizontal) > row:not(.separator):not(:last-child), +list:not(.horizontal) row.separator:not(:last-child), +list.separators:not(.horizontal) > row:not(.separator):not(:last-child) { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +list.frame { + border-radius: 6px; +} + +listview.view { + color: #FFFFFF; + background-color: transparent; +} + +popover.menu listview.view { + padding: 0; + border-radius: 6px; +} + +popover.menu listview.view > row { + margin-left: 0; + margin-right: 0; + border-radius: 6px; +} + +row { + color: rgba(255, 255, 255, 0.7); + background-clip: padding-box; +} + +row label.subtitle { + font-size: smaller; +} + +row > box.header { + margin-left: 12px; + margin-right: 12px; + min-height: 48px; +} + +row > box.header > .icon:disabled { + filter: opacity(0.35); +} + +row > box.header > box.title { + margin-top: 6px; + margin-bottom: 6px; + border-spacing: 3px; +} + +.nautilus-window .nautilus-grid-view child.activatable, columnview.view > header > button, +treeview.view > header > button, row.activatable { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1), font-weight 0; + outline: none; + box-shadow: none; + background-color: transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + outline: none; +} + +.nautilus-window .nautilus-grid-view child.activatable:focus, columnview.view > header > button:focus, +treeview.view > header > button:focus, row.activatable:focus { + color: #FFFFFF; + background-color: transparent; + box-shadow: none; + outline: none; +} + +.nautilus-window .nautilus-grid-view child.activatable:hover, columnview.view > header > button:hover, +treeview.view > header > button:hover, .nautilus-window .nautilus-grid-view child.has-open-popup.activatable, columnview.view > header > button.has-open-popup, +treeview.view > header > button.has-open-popup, row.activatable:hover, row.activatable.has-open-popup { + color: #FFFFFF; + background-color: alpha(currentColor, 0.05); + box-shadow: none; +} + +.nautilus-window .nautilus-grid-view child.activatable:active, columnview.view > header > button:active, +treeview.view > header > button:active, row.activatable:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, font-weight 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.05) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.05); + color: #FFFFFF; + box-shadow: none; +} + +.nautilus-window .nautilus-grid-view child.activatable:selected, columnview.view > header > button:selected, +treeview.view > header > button:selected, row.activatable:selected { + background-color: alpha(currentColor, 0.06); +} + +.nautilus-window .nautilus-grid-view child.activatable:selected:hover, columnview.view > header > button:selected:hover, +treeview.view > header > button:selected:hover, row.activatable:selected:hover { + background-color: alpha(currentColor, 0.08); +} + +button row.activatable:focus, button row.activatable:hover, button row.activatable:active { + box-shadow: none; + background: none; +} + +button:checked row.activatable { + color: rgba(0, 0, 0, 0.87); +} + +row:selected { + background-color: alpha(currentColor, 0.06); + color: inherit; + box-shadow: none; +} + +row:selected:hover { + background-color: alpha(currentColor, 0.08); +} + +row:selected:focus, row:selected:focus-visible:focus-within { + outline: none; + background-color: alpha(currentColor, 0.08); +} + +row:selected:focus:hover, row:selected:focus-visible:focus-within:hover { + background-color: alpha(currentColor, 0.16); +} + +row:selected image, +row:selected label { + color: #FFFFFF; +} + +row:selected button image, +row:selected button label { + color: inherit; +} + +row:selected:disabled image, +row:selected:disabled label { + color: rgba(255, 255, 255, 0.5); +} + +.rich-list { + /* rich lists usually containing other widgets than just labels/text */ +} + +.rich-list > row { + padding: 9px 12px; + min-height: 32px; + /* should be tall even when only containing a label */ +} + +.rich-list > row:last-child { + border-bottom: none; +} + +.rich-list > row > box { + border-spacing: 12px; +} + +row label.subtitle { + font-size: smaller; +} + +row > box.header { + margin-left: 12px; + margin-right: 12px; + border-spacing: 6px; + min-height: 50px; +} + +row > box.header > .icon:disabled { + filter: opacity(0.45); +} + +row > box.header > box.title { + margin-top: 6px; + margin-bottom: 6px; + border-spacing: 3px; + padding: 0; +} + +row > box.header > box.title, +row > box.header > box.title > .title, +row > box.header > box.title > .subtitle { + padding: 0; + font-weight: inherit; +} + +row > box.header > .prefixes, +row > box.header > .suffixes { + border-spacing: 6px; +} + +row > box.header > .icon:dir(ltr), +row > box.header > .prefixes:dir(ltr) { + margin-right: 6px; +} + +row > box.header > .icon:dir(rtl), +row > box.header > .prefixes:dir(rtl) { + margin-left: 6px; +} + +row.entry:not(:selected).activatable.focused:hover, row.entry:not(:selected).activatable.focused:active { + background-color: transparent; +} + +row.entry .edit-icon, row.entry .indicator { + min-width: 24px; + min-height: 24px; + padding: 5px; +} + +row.entry .edit-icon:disabled { + opacity: 0.5; +} + +row.entry .indicator { + opacity: 0.65; +} + +row.entry.monospace { + font-family: inherit; +} + +row.entry.monospace text { + font-family: monospace; +} + +row.entry.error text > selection:focus-within { + background-color: alpha(#F44336, 0.2); +} + +row.entry.error text > cursor-handle > contents { + background-color: currentColor; +} + +row.entry.warning text > selection:focus-within { + background-color: alpha(#FBC02D, 0.2); +} + +row.entry.warning text > cursor-handle > contents { + background-color: currentColor; +} + +row.entry.success text > selection:focus-within { + background-color: alpha(#66BB6A, 0.2); +} + +row.entry.success text > cursor-handle > contents { + background-color: currentColor; +} + +row.combo image.dropdown-arrow:disabled { + filter: opacity(0.45); +} + +row.combo listview.inline { + background: none; + border: none; + box-shadow: none; + color: inherit; +} + +row.combo listview.inline, row.combo listview.inline:disabled { + background: none; + color: inherit; +} + +row.combo popover > contents { + min-width: 120px; +} + +list.content > row, list.content > row.expander row.header, +list.boxed-list > row, +list.boxed-list > row.expander row.header, row.expander list.nested > row { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +list.content > row:not(:selected).activatable:hover, list.content > row.expander row.header:not(:selected).activatable:hover, +list.boxed-list > row:not(:selected).activatable:hover, +list.boxed-list > row.expander row.header:not(:selected).activatable:hover, row.expander list.nested > row:not(:selected).activatable:hover { + background-color: alpha(currentColor, 0.08); +} + +list.content > row:not(:selected).activatable:active, list.content > row.expander row.header:not(:selected).activatable:active, +list.boxed-list > row:not(:selected).activatable:active, +list.boxed-list > row.expander row.header:not(:selected).activatable:active, row.expander list.nested > row:not(:selected).activatable:active { + background-color: alpha(currentColor, 0.12); +} + +list.content > row:not(:selected).activatable.has-open-popup, list.content > row.expander row.header:not(:selected).activatable.has-open-popup, +list.boxed-list > row:not(:selected).activatable.has-open-popup, +list.boxed-list > row.expander row.header:not(:selected).activatable.has-open-popup, row.expander list.nested > row:not(:selected).activatable.has-open-popup { + background-color: alpha(currentColor, 0.03); +} + +row.expander { + background: none; + padding: 0px; +} + +row.expander > box > list { + background: none; + color: inherit; +} + +row.expander list.nested { + color: inherit; +} + +row.expander image.expander-row-arrow { + transition: -gtk-icon-transform 200ms cubic-bezier(0, 0, 0.2, 1); +} + +row.expander image.expander-row-arrow:dir(ltr) { + margin-left: 6px; +} + +row.expander image.expander-row-arrow:dir(rtl) { + margin-right: 6px; +} + +row.expander image.expander-row-arrow:dir(ltr) { + -gtk-icon-transform: rotate(0.5turn); +} + +row.expander image.expander-row-arrow:dir(rtl) { + -gtk-icon-transform: rotate(-0.5turn); +} + +row.expander image.expander-row-arrow:disabled { + filter: opacity(0.45); +} + +row.expander:checked image.expander-row-arrow { + -gtk-icon-transform: rotate(0turn); + opacity: 1; +} + +row.expander:checked image.expander-row-arrow:not(:disabled) { + color: #eebebe; +} + +.osd row.expander:checked image.expander-row-arrow:not(:disabled) { + color: inherit; +} + +list.content > row.expander, +list.boxed-list > row.expander { + border: none; +} + +list.content > row:first-child, list.content > row:first-child.expander row.header, +list.boxed-list > row:first-child, +list.boxed-list > row:first-child.expander row.header { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +list.content > row:last-child, list.content > row:last-child.expander:not(:checked), list.content > row:last-child.expander:not(:checked) row.header, list.content > row:last-child.expander:checked list.nested, list.content > row:last-child.expander:checked list.nested > row:last-child, +list.boxed-list > row:last-child, +list.boxed-list > row:last-child.expander:not(:checked), +list.boxed-list > row:last-child.expander:not(:checked) row.header, +list.boxed-list > row:last-child.expander:checked list.nested, +list.boxed-list > row:last-child.expander:checked list.nested > row:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-bottom-width: 0; +} + +columnview > listview > row { + padding: 0; +} + +columnview > listview > row > cell { + padding: 8px 6px; +} + +columnview > listview > row > cell:not(:first-child) { + border-left: 1px solid transparent; +} + +columnview.column-separators > listview > row > cell { + border-left-color: rgba(255, 255, 255, 0.12); +} + +columnview.data-table > listview > row > cell { + padding-top: 2px; + padding-bottom: 2px; +} + +treeexpander { + border-spacing: 6px; +} + +columnview row:not(:selected) cell editablelabel:not(.editing):focus-within { + outline: 2px solid alpha(currentColor, 0.06); +} + +columnview row:not(:selected) cell editablelabel.editing:focus-within { + outline: 2px solid #eebebe; +} + +columnview row:not(:selected) cell editablelabel.editing text selection { + color: rgba(0, 0, 0, 0.87); + background-color: #eebebe; +} + +/********************* + * App Notifications * + *********************/ +.app-notification { + margin: 6px; + border-spacing: 0; + padding: 0; + border: none; + background-image: none; +} + +.app-notification button.text-button:not(:disabled) { + color: #eebebe; +} + +.app-notification > box > label { + margin-left: 9px; +} + +.app-notification.frame, +.app-notification border { + border: none; +} + +/************* + * Expanders * + *************/ +expander { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 16px; + min-height: 16px; + color: rgba(255, 255, 255, 0.7); + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +expander:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); +} + +expander:hover, expander:active { + color: #FFFFFF; +} + +expander:checked { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +expander:disabled { + color: rgba(255, 255, 255, 0.32); +} + +expander-widget > box > title { + border-radius: 6px; +} + +expander-widget > box > title:hover > expander { + color: rgba(255, 255, 255, 0.7); +} + +.navigation-sidebar:not(decoration):not(window):drop(active):focus, .navigation-sidebar:not(decoration):not(window):drop(active), +placessidebar:not(decoration):not(window):drop(active):focus, +placessidebar:not(decoration):not(window):drop(active), +stackswitcher:not(decoration):not(window):drop(active):focus, +stackswitcher:not(decoration):not(window):drop(active), +expander-widget:not(decoration):not(window):drop(active):focus, +expander-widget:not(decoration):not(window):drop(active) { + box-shadow: none; +} + +/************ + * Calendar * + ************/ +calendar { + padding: 0; + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 6px; + color: #FFFFFF; +} + +calendar:disabled { + color: rgba(255, 255, 255, 0.5); +} + +calendar:selected { + border-radius: 6px; +} + +calendar > header { + padding: 3px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +calendar > header > button { + min-height: 24px; +} + +calendar > grid { + margin: 3px; +} + +calendar > grid > label { + border-radius: 6px; + margin: 0; +} + +calendar > grid > label.today:selected { + box-shadow: none; +} + +calendar > grid > label:focus { + outline-style: none; +} + +calendar > grid > label.day-number { + padding: 6px; +} + +calendar > grid > label.day-number.other-month { + color: alpha(currentColor, 0.3); +} + +/*********** + * Dialogs * + ***********/ +window.messagedialog .response-area > box > button, window.dialog.message .dialog-action-area > button { + border-radius: 0; + min-height: 28px; + padding: 6px 12px; + margin: 0; + border: none; +} + +window.messagedialog .response-area > box > button:first-child, window.dialog.message .dialog-action-area > button:first-child { + border-radius: 0 0 0 12px; +} + +window.messagedialog .response-area > box > button:last-child, window.dialog.message .dialog-action-area > button:last-child { + border-radius: 0 0 12px 0; +} + +window.messagedialog .response-area > box > button:only-child, window.dialog.message .dialog-action-area > button:only-child { + border-radius: 0 0 12px 12px; +} + +window.dialog.message.background { + background-color: #414559; +} + +window.dialog.message box.dialog-vbox.vertical { + margin-top: 6px; + border-spacing: 24px; +} + +window.dialog.message box.dialog-vbox.vertical > box.vertical { + margin-bottom: 6px; +} + +window.dialog.message box.dialog-vbox.vertical > box > box > box > label.title { + font-weight: 800; + font-size: 15pt; +} + +window.dialog.message .titlebar { + min-height: 24px; + border-style: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.1); + background-color: #414559; + color: #FFFFFF; +} + +window.dialog.message .titlebar:backdrop { + background-color: #414559; + color: rgba(255, 255, 255, 0.7); +} + +window.dialog.message .dialog-action-area { + border-top: 1px solid rgba(255, 255, 255, 0.12); + margin: 0; + border-spacing: 0; +} + +window.dialog.message .dialog-action-area > button { + border: none; +} + +window.dialog.message .dialog-action-area > button:not(:last-child) { + border-right: 1px solid rgba(255, 255, 255, 0.12); +} + +window.dialog.message .dialog-action-area > button.suggested-action:not(:disabled) { + color: #eebebe; +} + +window.dialog.message .dialog-action-area > button.destructive-action:not(:disabled) { + color: #F44336; +} + +window.aboutdialog.background.csd scrolledwindow.frame, window.aboutdialog.background.csd scrolledwindow.frame > viewport.view, window.aboutdialog.background.csd scrolledwindow.frame > textview.view, window.aboutdialog.background.csd scrolledwindow.frame > textview.view > text { + border-radius: 6px; +} + +/******************** + * AdwMessageDialog * + ********************/ +window.messagedialog { + background-color: #414559; + color: #FFFFFF; +} + +window.messagedialog .message-area { + padding: 24px 30px; + border-spacing: 10px; +} + +window.messagedialog .response-area > box > button.suggested { + color: #eebebe; +} + +window.messagedialog .response-area > box > button.destructive { + color: #F44336; +} + +window.messagedialog.csd:not(.solid-csd) { + border-radius: 12px; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.horizontal > button { + margin: 0; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.horizontal > button:first-child { + margin-left: 0; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.horizontal > button:last-child { + margin-right: 0; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.vertical > button { + margin-top: 0; + margin-bottom: 0; +} + +window.messagedialog.csd:not(.solid-csd) .response-area > box.vertical > button:last-child { + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; + margin-bottom: 0; +} + +filechooser .dialog-action-box { + border-top: 1px solid rgba(255, 255, 255, 0.12); +} + +filechooser #pathbarbox { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); + background-color: #303446; +} + +filechooser stack.view frame > border { + border: none; +} + +filechooserbutton > button > box { + border-spacing: 6px; +} + +filechooserbutton:drop(active) { + box-shadow: none; + border-color: transparent; +} + +/*********** + * Sidebar * + ***********/ +.sidebar { + border-style: none; + background-color: #232634; +} + +.sidebar:not(separator):dir(ltr), .sidebar:not(separator).left, .sidebar:not(separator).left:dir(rtl) { + border-right: 1px solid rgba(255, 255, 255, 0.12); + border-left-style: none; +} + +.sidebar:not(separator):dir(rtl), .sidebar:not(separator).right { + border-left: 1px solid rgba(255, 255, 255, 0.12); + border-right-style: none; +} + +.sidebar listview.view, +.sidebar list { + background-color: transparent; + color: inherit; +} + +paned .sidebar.left, paned .sidebar.right, paned .sidebar.left:dir(rtl), paned .sidebar:dir(rtl), paned .sidebar:dir(ltr), paned .sidebar { + border-style: none; +} + +leaflet.unfolded > box > stacksidebar.sidebar { + border: none; +} + +stacksidebar list { + padding: 6px; + background-color: #232634; +} + +stacksidebar row { + min-height: 24px; + padding: 6px; + border-radius: 6px; +} + +stacksidebar row:selected { + font-weight: 500; +} + +stacksidebar row + row { + margin-top: 4px; +} + +stacksidebar row > label { + padding-left: 6px; + padding-right: 6px; + color: inherit; +} + +separator.sidebar { + background-color: rgba(255, 255, 255, 0.12); + border-right: none; +} + +separator.sidebar.selection-mode, .selection-mode separator.sidebar { + background-color: rgba(255, 255, 255, 0.12); +} + +/********************** + * Navigation Sidebar * + **********************/ +.navigation-sidebar { + padding: 4.5px 0; + border-right: none; +} + +.navigation-sidebar, .navigation-sidebar.view, .navigation-sidebar.view:disabled { + background-color: transparent; + color: inherit; +} + +.navigation-sidebar.background, .navigation-sidebar.background:disabled { + background-color: #232634; + color: rgba(255, 255, 255, 0.7); +} + +.navigation-sidebar > separator { + margin: 4.5px 0; +} + +.navigation-sidebar > row { + min-height: 24px; + padding: 6px; + border-radius: 6px; + margin: 1.5px 6px; +} + +/**************** + * File chooser * + ****************/ +row image.sidebar-icon { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(255, 255, 255, 0.7); +} + +row image.sidebar-icon:disabled { + color: rgba(255, 255, 255, 0.32); +} + +placessidebar > viewport.frame { + border-style: none; +} + +placessidebar list > separator { + margin: 3px 0; +} + +placessidebar row:selected { + font-weight: 500; +} + +placessidebar row image.sidebar-icon:dir(ltr) { + padding-right: 8px; +} + +placessidebar row image.sidebar-icon:dir(rtl) { + padding-left: 8px; +} + +placessidebar row label.sidebar-label { + color: inherit; +} + +placessidebar row label.sidebar-label:dir(ltr) { + padding-right: 2px; +} + +placessidebar row label.sidebar-label:dir(rtl) { + padding-left: 2px; +} + +placessidebar row.sidebar-placeholder-row { + background-color: alpha(currentColor, 0.08); +} + +placessidebar row.sidebar-new-bookmark-row { + color: #eebebe; +} + +placessidebar row.sidebar-new-bookmark-row image.sidebar-icon { + color: #eebebe; +} + +placessidebar row:drop(active) { + background-color: alpha(currentColor, 0.08); +} + +placesview .server-list-button > image { + transition: 200ms cubic-bezier(0, 0, 0.2, 1); + -gtk-icon-transform: rotate(0turn); +} + +placesview .server-list-button:checked > image { + transition: 200ms cubic-bezier(0, 0, 0.2, 1); + -gtk-icon-transform: rotate(-0.5turn); +} + +placesview > actionbar > revealer > box > label { + border-spacing: 6px; +} + +/********* + * Paned * + *********/ +paned > separator { + min-width: 1px; + min-height: 1px; + -gtk-icon-source: none; + border-style: none; + background-color: transparent; + background-image: image(#494c5c); + background-size: 1px 1px; + background-clip: content-box; + box-shadow: none; +} + +paned > separator.wide { + min-width: 6px; + min-height: 6px; + background-color: #303446; + background-image: image(#494c5c), image(#494c5c); + background-size: 1px 1px, 1px 1px; +} + +paned.horizontal > separator { + background-repeat: repeat-y; +} + +paned.horizontal > separator:dir(ltr) { + margin: 0 -8px 0 0; + padding: 0 8px 0 0; + background-position: left; +} + +paned.horizontal > separator:dir(rtl) { + margin: 0 0 0 -8px; + padding: 0 0 0 8px; + background-position: right; +} + +paned.horizontal > separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-y, repeat-y; + background-position: left, right; +} + +paned.vertical > separator { + margin: 0 0 -8px 0; + padding: 0 0 8px 0; + background-repeat: repeat-x; + background-position: top; +} + +paned.vertical > separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-x, repeat-x; + background-position: bottom, top; +} + +/************ + * GtkVideo * + ************/ +video { + background: black; + border-radius: 6px; +} + +video image.osd { + min-width: 64px; + min-height: 64px; + border-radius: 9999px; + border: none; +} + +/************** + * GtkInfoBar * + **************/ +infobar > revealer > box { + padding: 6px; + border-spacing: 12px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); + box-shadow: none; +} + +infobar.info > revealer > box, infobar.info:hover > revealer > box, infobar.info:backdrop > revealer > box { + background-color: #303446; + color: #FFFFFF; +} + +infobar.info > revealer > box button.text-button:not(:disabled):not(.suggested-action):not(.destructive-action), infobar.info:hover > revealer > box button.text-button:not(:disabled):not(.suggested-action):not(.destructive-action), infobar.info:backdrop > revealer > box button.text-button:not(:disabled):not(.suggested-action):not(.destructive-action) { + color: #eebebe; +} + +infobar.action > revealer > box, infobar.action:backdrop > revealer > box, infobar.question > revealer > box, infobar.question:backdrop > revealer > box { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); +} + +infobar.action > revealer > box button, infobar.action > revealer > box button:hover, infobar.action > revealer > box button:focus, infobar.action > revealer > box button:active, infobar.action > revealer > box button:checked, infobar.action > revealer > box button.text-button:not(:disabled), infobar.action:backdrop > revealer > box button, infobar.action:backdrop > revealer > box button:hover, infobar.action:backdrop > revealer > box button:focus, infobar.action:backdrop > revealer > box button:active, infobar.action:backdrop > revealer > box button:checked, infobar.action:backdrop > revealer > box button.text-button:not(:disabled), infobar.question > revealer > box button, infobar.question > revealer > box button:hover, infobar.question > revealer > box button:focus, infobar.question > revealer > box button:active, infobar.question > revealer > box button:checked, infobar.question > revealer > box button.text-button:not(:disabled), infobar.question:backdrop > revealer > box button, infobar.question:backdrop > revealer > box button:hover, infobar.question:backdrop > revealer > box button:focus, infobar.question:backdrop > revealer > box button:active, infobar.question:backdrop > revealer > box button:checked, infobar.question:backdrop > revealer > box button.text-button:not(:disabled) { + color: rgba(0, 0, 0, 0.87); +} + +infobar.action > revealer > box *:link, infobar.action:backdrop > revealer > box *:link, infobar.question > revealer > box *:link, infobar.question:backdrop > revealer > box *:link { + color: rgba(0, 0, 0, 0.87); +} + +infobar.action:hover > revealer > box, infobar.question:hover > revealer > box { + background-color: #e9aaaa; +} + +infobar.warning > revealer > box, infobar.warning:backdrop > revealer > box { + background-color: #FBC02D; + color: rgba(0, 0, 0, 0.87); +} + +infobar.warning > revealer > box button, infobar.warning > revealer > box button:hover, infobar.warning > revealer > box button:focus, infobar.warning > revealer > box button:active, infobar.warning > revealer > box button:checked, infobar.warning > revealer > box button.text-button:not(:disabled), infobar.warning:backdrop > revealer > box button, infobar.warning:backdrop > revealer > box button:hover, infobar.warning:backdrop > revealer > box button:focus, infobar.warning:backdrop > revealer > box button:active, infobar.warning:backdrop > revealer > box button:checked, infobar.warning:backdrop > revealer > box button.text-button:not(:disabled) { + color: rgba(0, 0, 0, 0.87); +} + +infobar.warning > revealer > box *:link, infobar.warning:backdrop > revealer > box *:link { + color: rgba(0, 0, 0, 0.87); +} + +infobar.warning:hover > revealer > box { + background-color: #fbb814; +} + +infobar.error > revealer > box, infobar.error:backdrop > revealer > box { + background-color: #F44336; + color: #FFFFFF; +} + +infobar.error > revealer > box button, infobar.error > revealer > box button:hover, infobar.error > revealer > box button:focus, infobar.error > revealer > box button:active, infobar.error > revealer > box button:checked, infobar.error > revealer > box button.text-button:not(:disabled), infobar.error:backdrop > revealer > box button, infobar.error:backdrop > revealer > box button:hover, infobar.error:backdrop > revealer > box button:focus, infobar.error:backdrop > revealer > box button:active, infobar.error:backdrop > revealer > box button:checked, infobar.error:backdrop > revealer > box button.text-button:not(:disabled) { + color: #FFFFFF; +} + +infobar.error > revealer > box *:link, infobar.error:backdrop > revealer > box *:link { + color: #FFFFFF; +} + +infobar.error:hover > revealer > box { + background-color: #f32c1e; +} + +/************ + * Tooltips * + ************/ +tooltip { + padding: 6px 12px; + box-shadow: none; + border: none; +} + +tooltip.background { + background-color: rgba(29, 31, 43, 0.9); + color: #FFFFFF; + box-shadow: 0 2px 3px -1px rgba(0, 0, 0, 0.05), 0 4px 6px 0 rgba(0, 0, 0, 0.06), 0 1px 10px 0 rgba(0, 0, 0, 0.05); + border-radius: 6px; + margin: 2px 6px 8px 6px; +} + +tooltip > box { + border-spacing: 6px; +} + +/***************** + * Color Chooser * + *****************/ +colorswatch.top { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +colorswatch.top overlay { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +colorswatch.bottom { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.bottom overlay { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.left, colorswatch:first-child:not(.top) { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +colorswatch.left overlay, colorswatch:first-child:not(.top) overlay { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +colorswatch.right, colorswatch:last-child:not(.bottom) { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.right overlay, colorswatch:last-child:not(.bottom) overlay { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.dark { + color: #FFFFFF; +} + +colorswatch.light { + color: rgba(0, 0, 0, 0.87); +} + +colorchooser colorswatch:hover { + transition: box-shadow 200ms ease-out; + box-shadow: 0 0 0 2px #eebebe; +} + +colorswatch#add-color-button { + border-radius: 6px 0 0 6px; + color: #FFFFFF; +} + +colorswatch#add-color-button:only-child { + border-radius: 6px; +} + +colorswatch#add-color-button overlay { + background-color: rgba(255, 255, 255, 0.04); +} + +colorswatch#add-color-button overlay:hover { + background-color: rgba(255, 255, 255, 0.12); + box-shadow: none; +} + +colorswatch#add-color-button overlay:active { + background-color: rgba(255, 255, 255, 0.3); +} + +colorswatch:disabled { + opacity: 0.5; +} + +colorswatch:disabled overlay { + box-shadow: none; +} + +colorswatch#editor-color-sample { + border-radius: 6px; +} + +colorswatch#editor-color-sample overlay { + border-radius: 6px; +} + +colorswatch#editor-color-sample overlay:hover { + box-shadow: 0 2px 3px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -1px rgba(0, 0, 0, 0.17); +} + +colorchooser .popover.osd { + transition: box-shadow 200ms ease-out; + border-radius: 6px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15), 0 3px 3px 0 rgba(0, 0, 0, 0.18), 0 3px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); + background-color: #414559; +} + +colorchooser .popover.osd:backdrop { + box-shadow: 0 4px 3px -3px rgba(0, 0, 0, 0.2), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.1); +} + +/******** + * Misc * + ********/ +.content-view { + background-color: #303446; +} + +/********************** + * Window Decorations * + **********************/ +window { + border: none; +} + +window.csd { + border-radius: 12px; + outline-offset: -1px; + outline: 1px solid rgba(255, 255, 255, 0.1); + margin: 0; + transition: none; + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 15px 16px 2px rgba(0, 0, 0, 0.14), 0 6px 18px 5px rgba(0, 0, 0, 0.12), 0 0 36px transparent, 0 0 0 1px rgba(0, 0, 0, 0.75); +} + +window.csd:backdrop { + transition: box-shadow 200ms ease-out; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15), 0 3px 3px 0 rgba(0, 0, 0, 0.18), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 0 36px transparent, 0 0 0 1px rgba(0, 0, 0, 0.75); +} + +window.csd.maximized, window.csd.fullscreen, window.csd.tiled, window.csd.tiled-top, window.csd.tiled-right, window.csd.tiled-bottom, window.csd.tiled-left { + border-radius: 0; + transition: none; +} + +window.csd.maximized, window.csd.fullscreen { + box-shadow: none; + outline: none; +} + +window.solid-csd { + margin: 0; + padding: 2px; + border-radius: 0; + background-color: #232634; + border: 1px solid #494c5c; +} + +window.solid-csd:backdrop { + background-color: #303446; +} + +window.ssd { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.12); +} + +windowcontrols > button:not(.suggested-action):not(.destructive-action) { + min-height: 16px; + min-width: 16px; + padding: 10px 0; + margin-left: 4px; + margin-right: 4px; +} + +windowcontrols > button.minimize:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:not(.suggested-action):not(.destructive-action) { + color: transparent; + background: none; +} + +windowcontrols > button.minimize:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.minimize:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:active:not(.suggested-action):not(.destructive-action) { + box-shadow: none; +} + +windowcontrols > button.minimize:active:not(.suggested-action):not(.destructive-action) > image, windowcontrols > button.maximize:active:not(.suggested-action):not(.destructive-action) > image, windowcontrols > button.close:active:not(.suggested-action):not(.destructive-action) > image { + box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.25); +} + +windowcontrols > button.minimize:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.minimize:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:active:not(.suggested-action):not(.destructive-action) { + color: rgba(0, 0, 0, 0.5); +} + +windowcontrols > button.minimize:backdrop:not(.suggested-action):not(.destructive-action) > image, windowcontrols > button.maximize:backdrop:not(.suggested-action):not(.destructive-action) > image, windowcontrols > button.close:backdrop:not(.suggested-action):not(.destructive-action) > image { + background-color: rgba(255, 255, 255, 0.3); +} + +windowcontrols > button.minimize:backdrop:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.minimize:backdrop:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:backdrop:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.maximize:backdrop:active:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:backdrop:hover:not(.suggested-action):not(.destructive-action), windowcontrols > button.close:backdrop:active:not(.suggested-action):not(.destructive-action) { + color: rgba(255, 255, 255, 0.5); +} + +windowcontrols > button.minimize:not(.suggested-action):not(.destructive-action) > image { + background-color: #e5c890; +} + +windowcontrols > button.minimize:active:not(.suggested-action):not(.destructive-action) > image { + background-color: #ecd6ac; +} + +windowcontrols > button.maximize:not(.suggested-action):not(.destructive-action) > image { + background-color: #a6d189; +} + +windowcontrols > button.maximize:active:not(.suggested-action):not(.destructive-action) > image { + background-color: #bcdda7; +} + +windowcontrols > button.close:not(.suggested-action):not(.destructive-action) > image { + background-color: #e78284; +} + +windowcontrols > button.close:active:not(.suggested-action):not(.destructive-action) > image { + background-color: #eda1a3; +} + +windowcontrols { + border-spacing: 6px; +} + +windowcontrols:not(.empty).start:dir(ltr), windowcontrols:not(.empty).end:dir(rtl) { + margin-right: 6px; + margin-left: 6px; +} + +windowcontrols:not(.empty).start:dir(rtl), windowcontrols:not(.empty).end:dir(ltr) { + margin-left: 6px; + margin-right: 6px; +} + +windowcontrols > button:not(.suggested-action):not(.destructive-action) > image { + border-radius: 100%; + padding: 0; +} + +.view:selected, iconview:selected, gridview > child:selected, columnview.view:selected, +treeview.view:selected, calendar:selected, calendar > grid > label.day-number:selected { + background-color: alpha(currentColor, 0.06); +} + +flowbox > flowboxchild:selected, calendar > grid > label.today { + color: #eebebe; + background-color: rgba(238, 190, 190, 0.2); +} + +textview text selection:focus, textview text selection, label > selection, +entry > text > selection, spinbutton > text > selection, +entry headerbar popover.background entry > text > selection, +headerbar popover.background entry entry > text > selection, calendar > grid > label.today:selected { + color: rgba(0, 0, 0, 0.87); + background-color: #eebebe; +} + +/********************** + * Touch Copy & Paste * + **********************/ +cursor-handle { + color: #eebebe; + -gtk-icon-source: -gtk-recolor(url("assets/scalable/cursor-handle-symbolic.svg")); +} + +cursor-handle.insertion-cursor:dir(ltr), cursor-handle.insertion-cursor:dir(rtl) { + padding-top: 6px; +} + +shortcuts-section { + margin: 20px; +} + +.shortcuts-search-results { + margin: 20px; + border-spacing: 24px; +} + +shortcut { + border-spacing: 6px; +} + +shortcut > .keycap { + min-width: 12px; + min-height: 26px; + margin-top: 2px; + padding-bottom: 2px; + padding-left: 8px; + padding-right: 8px; + border: solid 1px rgba(255, 255, 255, 0.12); + border-radius: 7px; + box-shadow: inset 0 -2px rgba(255, 255, 255, 0.12); + background-color: #414559; + color: #FFFFFF; + font-size: smaller; +} + +:not(decoration):not(window):drop(active) { + caret-color: #eebebe; +} + +stackswitcher { + min-height: 0; + padding: 3px; + margin: 6px 0; + border-radius: 9px; + background-color: rgba(255, 255, 255, 0.04); + border: none; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action) { + margin: 0 0; + background-color: transparent; + border-radius: 6px; + padding: 3px 10px; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 100px; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action):focus:not(:hover):not(:checked) { + box-shadow: none; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action):hover { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action):active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +stackswitcher.linked:not(.vertical) > button:not(.suggested-action):not(.destructive-action):checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, background-color 0ms; + background-color: rgba(255, 255, 255, 0.15); + color: #FFFFFF; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +stackswitcher button.text-button { + min-width: 100px; +} + +stackswitcher button.circular, +stackswitcher button.text-button.circular { + min-width: 36px; + min-height: 36px; + padding: 0; +} + +/************* + * App Icons * + *************/ +.lowres-icon { + -gtk-icon-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.icon-dropshadow { + -gtk-icon-shadow: 0 1px 12px rgba(0, 0, 0, 0.05), 0 1px 6px rgba(0, 0, 0, 0.1); +} + +/********* + * Emoji * + *********/ +popover.emoji-picker { + padding: 0; +} + +popover.emoji-picker > contents { + padding: 0; +} + +.emoji-searchbar { + padding: 6px; + border-spacing: 6px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); + background: none; +} + +.emoji-searchbar entry text { + background: none; + box-shadow: none; +} + +.emoji-toolbar { + padding: 0; + border-spacing: 3px; + border-top: 1px solid rgba(255, 255, 255, 0.12); + background: none; +} + +button.emoji-section { + margin: 0; + padding: 6px; + border-radius: 6px; +} + +button.emoji-section:checked { + color: #eebebe; +} + +popover.emoji-picker emoji { + font-size: x-large; + padding: 6px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 6px; +} + +popover.emoji-picker emoji:focus, popover.emoji-picker emoji:hover { + background: alpha(currentColor, 0.08); +} + +emoji-completion-row { + min-height: 28px; + padding: 0 12px; +} + +emoji-completion-row > box { + border-spacing: 6px; + padding: 2px 6px; +} + +emoji-completion-row:focus, emoji-completion-row:hover, +emoji-completion-row emoji:hover, emoji-completion-row emoji:focus { + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; +} + +popover.entry-completion > contents { + padding: 0; +} + +.nautilus-window placesview label { + color: rgba(255, 255, 255, 0.7); +} + +.nautilus-window .floating-bar { + min-height: 32px; + padding: 0; + margin: 6px; + border-style: none; + border-radius: 6px; + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.05), 0 2px 3px -1px rgba(0, 0, 0, 0.06), 0 1px 4px 0 rgba(0, 0, 0, 0.05); +} + +.nautilus-window .floating-bar button { + margin: 4px; + color: rgba(0, 0, 0, 0.87); +} + +#NautilusQueryEditor > menubutton > button.image-button { + min-width: 24px; + min-height: 24px; +} + +#NautilusQueryEditor > text, #NautilusQueryEditor > box, #NautilusQueryEditor > menubutton > button.image-button { + margin: 6px 0; +} + +#NautilusQueryEditorTag { + background-color: rgba(255, 255, 255, 0.12); +} + +#NautilusQueryEditorTag > button.image-button { + margin: 0; + padding: 0; +} + +#NautilusPathBar { + background-color: rgba(255, 255, 255, 0.04); + border-radius: 6px; + margin: 6px 0; +} + +#NautilusPathButton { + margin: 0 3px; + border-radius: 6px; +} + +#NautilusPathButton.current-dir { + color: #FFFFFF; +} + +#NautilusPathButton.current-dir:hover, #NautilusPathButton.current-dir:active { + background: none; + box-shadow: none; +} + +#NautilusPathButton:first-child { + margin-left: 0; +} + +#NautilusViewCell clamp box { + margin: 0; + border-spacing: 0; +} + +window.dialog > box > stack > box > box > notebook.frame { + border-width: 0 0 0 1px; + border-radius: 0; +} + +.display-container.card { + border-radius: 0; + box-shadow: none; + border-width: 0 0 1px 0; +} + +.display-container .history-view { + background-color: #303446; +} + +.display-container #displayitem { + padding: 0 12px 8px 0; + font-size: 1.4em; + border-top: 1px solid rgba(255, 255, 255, 0.12); +} + +.math-buttons button { + font-size: 1.1em; + padding: 2px 6px; +} + +.math-buttons button.text-button { + padding-left: 16px; + padding-right: 16px; +} + +leaflet button.number-button { + background-color: rgba(255, 255, 255, 0.1); +} + +leaflet button.number-button:hover { + background-color: rgba(255, 255, 255, 0.2); +} + +leaflet button.number-button:active { + background-color: rgba(255, 255, 255, 0.3); +} + +label.primary-label, label.month-name, label.secondary-label { + font-size: 16pt; + font-weight: bold; + padding: 12px; +} + +label.primary-label, label.month-name { + color: #eebebe; +} + +label.secondary-label { + color: rgba(255, 255, 255, 0.5); +} + +calendar-view { + font-size: 10pt; +} + +calendar-view:selected { + color: #eebebe; + font-weight: bold; +} + +calendar-view.header, +label.header { + font-size: 10pt; + font-weight: bold; + color: rgba(255, 255, 255, 0.5); +} + +calendar-view.current, +weekgrid.current { + background-color: alpha(#eebebe, 0.3); +} + +popover.events { + background-color: #303446; + padding: 0; +} + +popover.events box { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +popover.events list { + background-color: #303446; + border-radius: 6px; +} + +popover.events scrolledwindow { + border-width: 0; +} + +popover.events button { + border-radius: 6px; + border-top-left-radius: 0; + border-top-right-radius: 0; + border-style: solid none none; + box-shadow: none; +} + +event { + margin: 1px; + font-size: 0.9rem; +} + +event widget.content { + margin: 4px; +} + +event.timed, event:not(.slanted):not(.slanted-start):not(.slanted-end) { + border-radius: 6px; +} + +event.timed widget.edge { + border-radius: 3px; + min-width: 5px; +} + +event.slanted-start, event.slanted-end:dir(rtl) { + padding-left: 16px; + border-radius: 0 3px 3px 0; +} + +event.slanted-end, event.slanted-start:dir(rtl) { + padding-right: 16px; + border-radius: 3px 0 0 3px; +} + +event:not(.timed).color-dark { + color: white; + outline-color: rgba(0, 0, 0, 0.3); +} + +event.timed, event:not(.timed).color-light { + color: alpha(black, 0.75); + outline-color: rgba(255, 255, 255, 0.5); +} + +popover.event-popover, +popover.event-popover > contents { + padding: 0; +} + +.search-viewport { + background-color: #303446; +} + +.calendar-list { + background-color: transparent; +} + +.calendar-list > list { + border-radius: 4px; +} + +.calendar-color-image { + -gtk-icon-filter: none; +} + +image.calendar-color-image, +button:active:not(:backdrop) .calendar-color-image, +button:checked:not(:backdrop) .calendar-color-image, +.calendars-list .calendar-color-image:not(:backdrop):not(:disabled), +.calendar-list .calendar-color-image:not(:backdrop):not(:disabled), +.sources-button:not(:backdrop):not(:disabled) .calendar-color-image { + -gtk-icon-shadow: 0 1px alpha(black, 0.1); +} + +datechooser navigator { + margin-right: 6px; + margin-left: 6px; + margin-bottom: 6px; +} + +datechooser navigator label { + font-weight: bold; +} + +datechooser navigator button.toggle, datechooser navigator button.image-button { + min-height: 36px; + min-width: 36px; + padding: 0; +} + +datechooser .weeknum, datechooser .weekday { + color: rgba(255, 255, 255, 0.5); + font-size: smaller; +} + +datechooser button.day { + font-size: 10pt; + font-weight: normal; + margin: 3px; + padding: 0; + min-height: 36px; + min-width: 36px; + transition: none; +} + +datechooser button.day dot { + background-color: #FFFFFF; + border-radius: 50%; + min-height: 3px; + min-width: 3px; +} + +datechooser button.day:selected, datechooser button.day.today:selected { + background-color: #eebebe; + color: rgba(0, 0, 0, 0.87); + font-weight: bold; +} + +datechooser button.day:selected dot, datechooser button.day.today:selected dot { + background-color: rgba(0, 0, 0, 0.87); +} + +datechooser button.day.today { + color: #eebebe; +} + +datechooser button.day.today dot { + background-color: #eebebe; +} + +datechooser button.day.other-month:not(:hover), datechooser button.day.other-month:backdrop { + color: alpha(currentColor, 0.1); +} + +datechooser button.day.other-month:not(:hover) dot, datechooser button.day.other-month:backdrop dot { + background-color: alpha(currentColor, 0.1); +} + +datechooser button.day.other-month:hover:not(:backdrop) { + color: rgba(255, 255, 255, 0.5); +} + +datechooser button.day.other-month:hover:not(:backdrop) dot { + background-color: rgba(255, 255, 255, 0.5); +} + +.week-header { + padding: 0; +} + +.week-header > box:first-child { + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +.week-header .week-number { + font-size: 16pt; + font-weight: bold; + padding: 12px 12px 18px 12px; + color: rgba(255, 255, 255, 0.3); +} + +.week-header.week-temperature { + font-size: 10pt; + font-weight: bold; + color: rgba(255, 255, 255, 0.5); +} + +.week-header.lines { + color: rgba(255, 255, 255, 0.12); +} + +weekhourbar > label { + font-size: 10pt; + padding: 4px 6px; +} + +.week-view .lines { + color: rgba(255, 255, 255, 0.12); +} + +weekgrid > widget.now-strip { + background-color: alpha(#eebebe, 0.8); + margin: 0 0 0 1px; + min-height: 3px; +} + +weekgrid:selected, weekgrid.dnd, +.week-header:selected, +.week-header.dnd { + background-color: alpha(#eebebe, 0.25); +} + +monthcell { + border: solid 1px rgba(255, 255, 255, 0.12); + border-width: 1px 0 0 1px; + background-color: transparent; + transition: background-color 200ms; +} + +monthcell:hover:not(.out-of-month):not(.today) { + background-color: #232634; + transition: background-color 200ms; + color: #FFFFFF; +} + +monthcell:selected { + background-color: alpha(#eebebe, 0.1); +} + +monthcell:selected:hover { + background-color: alpha(#eebebe, 0.2); +} + +monthcell:selected label.day-label { + font-weight: bold; +} + +monthcell:nth-child(7n + 1) { + border-left-width: 0; +} + +monthcell.today { + background-color: alpha(#eebebe, 0.2); +} + +monthcell.today:hover { + background-color: alpha(#eebebe, 0.3); + color: #eebebe; +} + +monthcell.today:selected { + background-color: alpha(#eebebe, 0.25); +} + +monthcell.today:selected:hover { + background-color: alpha(#eebebe, 0.35); +} + +monthcell label { + color: #FFFFFF; + font-size: 0.9rem; +} + +monthcell label.day-label { + font-size: 1rem; +} + +monthcell.out-of-month { + background-color: rgba(255, 255, 255, 0.04); +} + +monthcell.out-of-month label { + color: rgba(255, 255, 255, 0.7); +} + +monthcell button { + padding: 0 6px; + border-radius: 0; + border-bottom: none; + border-right: none; +} + +monthpopover > box { + margin: 0; + padding: 0; + background-color: transparent; +} + +.notes-section box > textview { + border-radius: 6px; + padding: 6px; +} + +.notes-section box > textview > text { + background: none; +} + +agenda-view list > row { + padding: 2px 12px; +} + +agenda-view list > label { + padding: 6px 12px; +} + +agenda-view > scrolledwindow > viewport > list.background { + background-color: transparent; +} + +label.no-events { + font-style: italic; +} + +searchbutton > popover > arrow { + background: none; + border: none; +} + +datechooser { + padding: 6px; +} + +datechooser .current-week { + background: alpha(#232634, 0.7); + color: #FFFFFF; + border-radius: 6px; +} + +menubutton.sources-button { + margin-top: 0; + margin-bottom: 0; + border-radius: 0; + border-top-style: none; + border-bottom-style: none; +} + +menubutton.sources-button:hover:not(:backdrop) { + background-image: none; + text-shadow: none; +} + +menubutton.sources-button > button { + border-radius: 0; +} + +menubutton.sources-button > button .title { + font-size: 10pt; + font-weight: normal; + padding: 0 6px; +} + +menubutton.sources-button > button .subtitle { + font-size: 8pt; + padding: 0 6px; +} + +menubutton.sources-button > button .calendar-color-image { + -gtk-icon-size: 12px; +} + +menubutton stack > box { + border-spacing: 6px; +} + +.topbar headerbar menubutton.sources-button > button { + border-radius: 0 0 6px 6px; +} + +.contacts-contact-list list.navigation-sidebar { + background: none; +} + +.details-page { + margin: 24px 0px; +} + +.installed-overlay-box { + font-size: smaller; + background-color: #eebebe; + border-radius: 0; + color: rgba(0, 0, 0, 0.87); + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); +} + +screenshot-carousel box.frame { + border-width: 1px 0; + border-radius: 0; +} + +screenshot-carousel button, +.featured-carousel button { + margin: 12px; +} + +.screenshot-image-main .image1, +.screenshot-image-main .image2 { + margin-top: 6px; + margin-bottom: 12px; + margin-left: 6px; + margin-right: 6px; +} + +.app-tile-label { + font-size: 105%; +} + +.review-textbox { + padding: 6px; +} + +.origin-rounded-box { + background-color: rgba(255, 255, 255, 0.12); + border-radius: 9999px; + padding: 4px; +} + +.origin-beta { + color: #FBC02D; +} + +.origin-button > button { + padding: 3px 9px; +} + +.card flowboxchild.card { + border: none; + box-shadow: none; + padding: 0; + background: none; +} + +button.card.category-tile { + padding: 21px; + border: none; + border-radius: 6px; + min-width: 140px; + font-weight: 900; + font-size: larger; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.05), 0 2px 3px -1px rgba(0, 0, 0, 0.06), 0 1px 4px 0 rgba(0, 0, 0, 0.05); +} + +button.card.category-tile.category-tile-iconless { + padding: 9px 15px; + min-width: 130px; + font-size: 105%; + font-weight: normal; + box-shadow: none; +} + +button.card.category-tile.category-create { + background: linear-gradient(180deg, #ce8cd7 0%, #2861c6 100%); + color: white; +} + +button.card.category-tile.category-create:hover { + background: linear-gradient(180deg, shade(#ce8cd7, 1.07) 0%, shade(#2861c6, 1.1) 100%); + color: white; +} + +button.card.category-tile.category-create:active { + background: linear-gradient(180deg, shade(#ce8cd7, 0.95) 0%, shade(#2861c6, 0.95) 100%); + color: white; +} + +button.card.category-tile.category-develop { + background: #5e5c64; + color: white; +} + +button.card.category-tile.category-develop:hover { + background: shade(#5e5c64, 1.2); + color: white; +} + +button.card.category-tile.category-develop:active { + background-color: shade(#5e5c64, 0.95); + color: white; +} + +button.card.category-tile.category-learn { + background: linear-gradient(180deg, #2ec27e 30%, #27a66c 100%); + color: white; +} + +button.card.category-tile.category-learn:hover { + background: linear-gradient(180deg, shade(#2ec27e, 1.06) 30%, shade(#27a66c, 1.06) 100%); + color: white; +} + +button.card.category-tile.category-learn:active { + background: linear-gradient(180deg, shade(#2ec27e, 0.95) 30%, shade(#27a66c, 0.95) 100%); + color: white; +} + +button.card.category-tile.category-play { + background: linear-gradient(75deg, #f9e2a7 0%, #eb5ec3 50%, #6d53e0 100%); + color: #393484; +} + +button.card.category-tile.category-play:hover { + background: linear-gradient(75deg, shade(#f9e2a7, 1.07) 0%, shade(#eb5ec3, 1.07) 50%, shade(#6d53e0, 1.07) 100%); + color: #393484; +} + +button.card.category-tile.category-play:active { + background: linear-gradient(75deg, shade(#f9e2a7, 0.97) 0%, shade(#eb5ec3, 0.95) 50%, shade(#6d53e0, 1.07) 100%); + color: #393484; +} + +button.card.category-tile.category-socialize { + background: linear-gradient(90deg, #ef4e9b 0%, #f77466 100%); + color: rgba(255, 255, 255, 0.7); +} + +button.card.category-tile.category-socialize:hover { + background: linear-gradient(90deg, shade(#ef4e9b, 1.08) 0%, shade(#f77466, 1.08) 100%); +} + +button.card.category-tile.category-socialize:active { + background: linear-gradient(90deg, shade(#ef4e9b, 0.95) 0%, shade(#f77466, 0.95) 100%); +} + +button.card.category-tile.category-work { + padding: 1px; + /* FIXME: work around https://gitlab.gnome.org/GNOME/gtk/-/issues/4324 */ + color: #1c71d8; + background-color: #fdf8d7; + background-image: linear-gradient(rgba(255, 255, 255, 0.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px); + background-size: 10px 10px, 10px 10px; + background-position: -1px -4px, center -1px; +} + +button.card.category-tile.category-work:hover { + color: #1c71d8; + background-color: #fefcef; + background-image: linear-gradient(rgba(255, 255, 255, 0.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px); +} + +button.card.category-tile.category-work:active { + color: #1c71d8; + background-color: #fcf4bf; + background-image: linear-gradient(rgba(255, 255, 255, 0.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px); +} + +clamp.medium .category-tile:not(.category-tile-iconless), +clamp.large .category-tile:not(.category-tile-iconless) { + font-size: larger; +} + +.featured-tile { + padding: 0; + box-shadow: none; + color: #FFFFFF; +} + +.featured-tile label.title-1 { + margin-top: 6px; + margin-bottom: 6px; +} + +.featured-tile.narrow label.title-1 { + font-size: 16pt; +} + +.application-details-infobar, .application-details-infobar.info { + background-color: rgba(255, 255, 255, 0.04); + color: #FFFFFF; + border: 1px solid rgba(255, 255, 255, 0.12); +} + +.application-details-infobar.warning { + background-color: #FBC02D; + color: rgba(0, 0, 0, 0.87); + border: 1px solid rgba(0, 0, 0, 0.12); +} + +@keyframes install-progress-unknown-move { + 0% { + background-position: 0%; + } + 50% { + background-position: 100%; + } + 100% { + background-position: 0%; + } +} + +.application-details-description .button { + padding-left: 24px; + padding-right: 24px; +} + +.install-progress { + background-image: linear-gradient(to top, #eebebe 2px, alpha(#eebebe, 0) 2px); + background-repeat: no-repeat; + background-position: 0 bottom; + background-size: 0; + transition: none; +} + +.install-progress:dir(rtl) { + background-position: 100% bottom; +} + +.review-row > * { + margin: 12px; +} + +.review-row button { + font-size: smaller; +} + +.review-row .vote-buttons button { + margin-right: -1px; +} + +.review-row .vote-buttons button:not(:first-child) { + border-image: linear-gradient(to top, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.12)) 0 0 0 1/5px 0 5px 1px; +} + +.review-row .vote-buttons button:hover, +.review-row .vote-buttons button:active, +.review-row .vote-buttons button:hover + button, +.review-row .vote-buttons button:active + button { + border-image: none; +} + +review-bar { + color: rgba(255, 255, 255, 0.5); + background-image: none; + background-color: rgba(255, 255, 255, 0.3); +} + +.review-histogram star-image { + color: rgba(255, 255, 255, 0.5); +} + +.version-arrow-label { + font-size: x-small; +} + +.overview-more-button { + font-size: smaller; + padding: 0 16px; +} + +.app-row-origin-text { + font-size: smaller; +} + +.app-listbox-header { + padding: 6px; + border-bottom: 1px solid rgba(255, 255, 255, 0.12); +} + +.image-list { + background-color: transparent; +} + +box.star { + background-color: transparent; + background-image: none; +} + +button.star { + outline-offset: 0; + background-color: transparent; + background-image: none; + border-image: none; + border-radius: 0; + border-width: 0; + padding: 0; + box-shadow: none; + outline-offset: -1px; +} + +star-image { + color: #FFD600; +} + +.dimmer-label { + opacity: 0.25; +} + +.update-failed-details { + font-family: Monospace; + font-size: smaller; + padding: 16px; +} + +.upgrade-banner { + padding: 0px; + border-radius: 6px; + border: none; +} + +.upgrade-banner-background { + background: linear-gradient(to bottom, #66BB6A, #5b9bf8); + color: white; +} + +.upgrade-buttons #button_upgrades_install { + padding-left: 16px; + padding-right: 16px; +} + +scrolledwindow.list-page > viewport > clamp > box { + margin: 24px 12px; + border-spacing: 24px; +} + +.update-preferences preferencesgroup > box > box { + margin-top: 18px; +} + +.section > label:not(:first-child) { + margin-top: 6px; +} + +.section > box:not(:first-child) { + margin-top: 12px; +} + +clamp.status-page { + margin: 36px 12px; +} + +clamp.status-page .iconbox { + min-height: 128px; + min-width: 128px; +} + +clamp.status-page .icon { + color: rgba(255, 255, 255, 0.5); + min-height: 32px; + min-width: 32px; +} + +clamp.status-page .icon:not(:last-child) { + margin-bottom: 36px; +} + +clamp.status-page .title:not(:last-child) { + margin-bottom: 12px; +} + +app-context-bar .context-tile { + border: 1px solid rgba(255, 255, 255, 0.12); + background-color: transparent; + border-radius: 0; + padding: 24px 12px 21px 12px; + outline-offset: 5px; + transition-property: outline, outline-offset, background-image; + border-bottom: none; + border-right: none; +} + +app-context-bar .context-tile:hover { + background-image: none; + background-color: alpha(currentColor, 0.08); +} + +app-context-bar .context-tile.keyboard-activating, app-context-bar .context-tile:active { + background-color: alpha(currentColor, 0.12); +} + +app-context-bar .context-tile:focus:focus-visible { + outline-offset: -1px; +} + +app-context-bar.horizontal box:first-child .context-tile:first-child, app-context-bar.vertical .context-tile:first-child { + border-left: none; +} + +app-context-bar.horizontal .context-tile, app-context-bar.vertical box:first-child .context-tile { + border-top: none; +} + +app-context-bar > box:not(:first-child) > button.flat { + border-radius: 0; +} + +app-context-bar > box:not(:first-child) > button.flat:last-child { + border-radius: 0 6px 6px 0; +} + +app-context-bar > box:first-child > button.flat { + border-radius: 0; +} + +app-context-bar > box:first-child > button.flat:first-child { + border-radius: 6px 0 0 6px; +} + +app-context-bar > box > button.flat { + border-left-color: rgba(255, 255, 255, 0.12); +} + +carousel.card { + border: none; + background-color: rgba(255, 255, 255, 0.04); +} + +.context-tile-lozenge { + min-height: 28px; + min-width: 28px; + padding: 6px; + font-size: 18px; + font-weight: bold; + border-radius: 9999px; +} + +.context-tile-lozenge.large { + font-size: 24px; + padding: 16px; + min-width: 24px; + /* 60px minus the left and right padding */ + min-height: 24px; + /* 60px minus the top and bottom padding */ +} + +.context-tile-lozenge.wide-image image { + margin-top: -28px; + margin-bottom: -28px; +} + +.context-tile-lozenge image { + -gtk-icon-style: symbolic; +} + +.context-tile-lozenge.grey { + color: #FFFFFF; + background-color: rgba(255, 255, 255, 0.12); +} + +.context-tile-lozenge.green, .context-tile-lozenge.details-rating-0 { + color: #419345; + background-color: rgba(102, 187, 106, 0.15); +} + +.context-tile-lozenge.blue, .context-tile-lozenge.details-rating-5 { + color: #5b9bf8; + background-color: rgba(91, 155, 248, 0.15); +} + +.context-tile-lozenge.yellow, .context-tile-lozenge.details-rating-12 { + color: #d79b04; + background-color: rgba(251, 192, 45, 0.15); +} + +.context-tile-lozenge.details-rating-15 { + color: #FF8A65; + background-color: rgba(255, 138, 101, 0.15); +} + +.context-tile-lozenge.red, .context-tile-lozenge.details-rating-18 { + color: #d2190b; + background-color: rgba(244, 67, 54, 0.15); +} + +.eol-red { + font-weight: bold; + color: #F44336; +} + +window.narrow .app-title { + font-size: 16pt; +} + +window.narrow .app-developer { + font-size: small; +} + +.install-progress-label { + font-size: smaller; + font-feature-settings: "tnum"; +} + +scrolledwindow.fake-adw-status-page > viewport > box { + margin: 36px 12px; +} + +scrolledwindow.fake-adw-status-page > viewport > box > clamp:not(:last-child) > box { + margin-bottom: 36px; +} + +scrolledwindow.fake-adw-status-page > viewport > box > clamp > box > .icon:not(:last-child) { + margin-bottom: 36px; +} + +scrolledwindow.fake-adw-status-page > viewport > box > clamp > box > .title:not(:last-child) { + margin-bottom: 12px; +} + +statuspage.icon-dropshadow image.icon { + -gtk-icon-shadow: 0 1px 12px rgba(0, 0, 0, 0.05), 0 -1px rgba(0, 0, 0, 0.05), 1px 0 rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.3), -1px 0 rgba(0, 0, 0, 0.1); +} + +window.info scrollbar.vertical { + margin-top: 48px; + background: none; + box-shadow: none; +} + +window.info scrollbar.vertical trough { + margin-top: 0; +} + +row.app > box.header { + margin-left: 12px; + margin-right: 12px; +} + +row.app > box.header { + border-spacing: 12px; +} + +row.app > box.header > image { + margin-top: 12px; + margin-bottom: 12px; +} + +row.app label.warning { + color: #F44336; +} + +@keyframes pre-delay { + from { + opacity: 0; + } + to { + opacity: 0; + } +} + +@keyframes fade-in { + from { + filter: opacity(0%); + } +} + +/* Give a fade-in animation to spinners. */ +spinner.fade-in:checked { + animation: pre-delay 0.5s linear 1, fade-in 1s linear 1, spin 1s linear infinite; + animation-delay: 0s, 0.5s, 0.5s; +} + +window > contents > leaflet > box > stack.background { + background-color: transparent; + background-image: linear-gradient(to bottom, transparent, transparent 48px, #303446 48px, #303446); +} + +@define-color weather_temp_chart_fill_color rgba(251, 192, 45, 0.5); +@define-color weather_temp_chart_stroke_color #f0ad05; +@define-color weather_thermometer_warm_color #FBC02D; +@define-color weather_thermometer_cold_color #5b9bf8; +#places-label { + font-weight: bold; +} + +#temperature-label { + font-size: 32pt; + font-weight: 900; + margin-left: 9px; +} + +#conditions-grid *:backdrop { + color: rgba(255, 255, 255, 0.7); +} + +.content-view.cell { + font-weight: bold; +} + +#locationEntry { + margin: 6px; +} + +.weather-popover { + margin-top: 6px; +} + +.forecast-card { + transition: border-radius 100ms ease-out; + border-radius: 6px; +} + +.forecast-card separator { + background-color: rgba(255, 255, 255, 0.12); +} + +#daily-forecast-box > separator:last-child { + background-color: transparent; + min-width: 0; +} + +#conditions-grid, +#attributionGrid { + margin-left: 18px; + margin-right: 18px; +} + +#weather-page .small .forecast-card { + margin-left: 0; + margin-right: 0; + border-radius: 0; + border-width: 1px 0; +} + +.forecast-temperature-label { + font-weight: bold; + color: #ae7b03; +} + +WeatherThermometer { + margin-bottom: 12px; +} + +WeatherThermometer > label.high { + font-weight: bold; + color: #FBC02D; +} + +WeatherThermometer > label.low { + font-weight: bold; + color: #5b9bf8; +} + +.forecast-button { + margin: 0 12px; +} + +.forecast-graphic { + margin: 18px; +} + +button.osd.circular { + border-radius: 9999px; + min-width: 24px; + min-height: 24px; +} + +button.osd.circular > image { + padding: 0; +} + +scrolledwindow.inline list, +scrolledwindow.inline listview { + background: none; + color: inherit; +} + +scrolledwindow.inline undershoot.top { + box-shadow: inset 0 1px rgba(255, 255, 255, 0.12); +} + +.search-view { + background-color: #3c84f7; + color: #FFFFFF; +} + +.search-view menubutton button:focus:focus-visible { + outline-color: rgba(255, 255, 255, 0.3); +} + +image.circular { + min-width: 36px; + min-height: 36px; + padding: 0; + border-radius: 9999px; +} + +.large-button { + padding: 6px; +} + +.alarm-time { + font-size: 2.5em; + font-weight: 300; +} + +.clocks-ampm-toggle-button, +.clocks-secondary-standalone-label { + font-size: 18pt; +} + +.clocks-standalone-label, +.clocks-ringing-label { + font-size: 6em; + font-weight: 300; +} + +.clocks-ringing-title { + font-size: 1.5em; + font-weight: bold; +} + +.clocks-alarm-setup-time { + font-size: 32pt; +} + +.clocks-timer-label, +.clocks-spinbutton { + font-size: 48pt; +} + +.timer-panel .timer-header { + font-size: 20pt; + font-weight: 300; +} + +.timer-countdown { + font-size: 40pt; + font-weight: 300; +} + +/* Stopwatch Panel */ +.lap-time { + font-weight: bold; +} + +.stopped-stopwatch label, +.running-stopwatch label, +.paused-stopwatch label { + font-size: 70px; + font-weight: lighter; +} + +.stopped-stopwatch .seconds-label { + font-weight: 300; +} + +.running-stopwatch .seconds-label, +.running-stopwatch .miliseconds-label { + color: #eebebe; +} + +.stopped-stopwatch .miliseconds-label, +.running-stopwatch .miliseconds-label, +.paused-stopwatch .miliseconds-label { + font-size: 50px; +} + +.running-stopwatch .seconds-label, +.paused-stopwatch .seconds-label { + font-weight: 300; +} + +.clock-location { + font-weight: bolder; +} + +.hidden { + opacity: 0; +} + +.clock-time { + font-size: 2em; + padding: 0.2em 0.5em; + border-radius: 1em; +} + +.none .clock-time { + background: alpha(currentColor, 0.2); +} + +.night .clock-time { + color: #3c84f7; + background-color: alpha(#5b9bf8, 0.25); +} + +.naut .clock-time, +.astro .clock-time { + color: #FF7043; + background-color: alpha(#FF8A65, 0.25); +} + +.civil .clock-time, +.day .clock-time { + color: #FFD600; + background: alpha(#FBC02D, 0.25); +} + +headerbar splitbutton notification button { + margin: 0; + min-height: 24px; + min-width: 24px; + padding: 0; +} + +popover.background.global-search > arrow, popover.background.global-search > contents { + padding: 0; +} + +panelframeswitcher { + padding: 3px; +} + +.frameheader.header { + min-height: 24px; + background-color: #232634; +} + +.frameheader.header > button { + border: none; + margin: 0; + padding: 3px; +} + +.frameheader.header tabbar.inline > revealer > box { + min-height: 24px; +} + +.frameheader.header tabbar.inline > revealer > box .start-action { + padding: 0; + border: none; +} + +.frameheader.header tabbar.inline > revealer > box .end-action { + padding: 0; + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +.frameheader.header tabbar.inline > revealer > box tabbox { + border: none; + background: none; +} + +panelstatusbar > menubutton > button, +panelstatusbar > paneltogglebutton button { + border-radius: 0; +} + +.style-variant { + padding: 0 12px; +} + +.style-variant button.toggle { + padding: 0; +} + +.style-variant button.toggle, .style-variant button.toggle:hover, .style-variant button.toggle:focus, .style-variant button.toggle:active, .style-variant button.toggle:checked { + background: none; + outline: none; + border: none; + box-shadow: none; +} + +.style-variant button.toggle > stylevariantpreview > .wallpaper { + border-radius: 6px; + outline-color: transparent; + outline-width: 3px; + outline-offset: 3px; + outline-style: solid; + box-shadow: none; +} + +.style-variant button.toggle:hover > stylevariantpreview > .wallpaper { + outline-color: rgba(255, 255, 255, 0.04); +} + +.style-variant button.toggle:active > stylevariantpreview > .wallpaper { + outline-color: rgba(255, 255, 255, 0.3); +} + +.style-variant button.toggle:checked > stylevariantpreview > .wallpaper { + outline-color: #eebebe; +} + +playlistview scrollbar.overlay-indicator.dragging, playlistview scrollbar.overlay-indicator.hovering { + background-color: transparent; +} + +playlistview queuerow picture.cover, +playlistview queuerow image.card { + border: none; +} + +window.dialog > .dialog-vbox > box > scrolledwindow > viewport > widget > list.boxed-list { + border: none; + border-radius: 0; +} + +window.dialog > .dialog-vbox > box > scrolledwindow > viewport > widget > list.boxed-list > row:first-child, window.dialog > .dialog-vbox > box > scrolledwindow > viewport > widget > list.boxed-list > row:last-child { + border-radius: 0; +} + +avatar { + border-radius: 9999px; + font-weight: bold; +} + +avatar.color1 { + background-image: linear-gradient(#83b6ec, #337fdc); + color: #cfe1f5; +} + +avatar.color2 { + background-image: linear-gradient(#7ad9f1, #0f9ac8); + color: #caeaf2; +} + +avatar.color3 { + background-image: linear-gradient(#8de6b1, #29ae74); + color: #cef8d8; +} + +avatar.color4 { + background-image: linear-gradient(#b5e98a, #6ab85b); + color: #e6f9d7; +} + +avatar.color5 { + background-image: linear-gradient(#f8e359, #d29d09); + color: #f9f4e1; +} + +avatar.color6 { + background-image: linear-gradient(#ffcb62, #d68400); + color: #ffead1; +} + +avatar.color7 { + background-image: linear-gradient(#ffa95a, #ed5b00); + color: #ffe5c5; +} + +avatar.color8 { + background-image: linear-gradient(#f78773, #e62d42); + color: #f8d2ce; +} + +avatar.color9 { + background-image: linear-gradient(#e973ab, #e33b6a); + color: #fac7de; +} + +avatar.color10 { + background-image: linear-gradient(#cb78d4, #9945b5); + color: #e7c2e8; +} + +avatar.color11 { + background-image: linear-gradient(#9e91e8, #7a59ca); + color: #d5d2f5; +} + +avatar.color12 { + background-image: linear-gradient(#e3cf9c, #b08952); + color: #f2eade; +} + +avatar.color13 { + background-image: linear-gradient(#be916d, #785336); + color: #e5d6ca; +} + +avatar.color14 { + background-image: linear-gradient(#c0bfbc, #6e6d71); + color: #d8d7d3; +} + +avatar.contrasted { + color: white; +} + +avatar.image { + background: none; +} + +.card { + border-radius: 6px; + border: 1px solid rgba(255, 255, 255, 0.12); + background-clip: border-box; + color: rgba(255, 255, 255, 0.7); + box-shadow: none; + outline: none; + background-color: #303446; + color: #FFFFFF; +} + +.card.activatable { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.card.activatable:hover { + background-image: none; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +.card.activatable:active { + background-image: none; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: radial-gradient(circle, alpha(currentColor, 0.08) 10%, transparent 0%); + background-size: 0% 0%; + background-color: alpha(currentColor, 0.08); + color: #FFFFFF; + outline: 0 solid transparent; +} + +toast { + margin: 12px; + margin-bottom: 24px; + border-radius: 9999px; + border-spacing: 6px; + padding: 6px; + box-shadow: 0 2px 3px -1px rgba(0, 0, 0, 0.1), 0 4px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 10px 0 rgba(0, 0, 0, 0.1), inset 0 1px rgba(255, 255, 255, 0.1); + background-color: #303446; + color: #FFFFFF; + border: none; +} + +toast:dir(ltr) { + padding-left: 12px; +} + +toast:dir(rtl) { + padding-right: 12px; +} + +toast > label { + margin: 0 6px; +} + +viewswitcher { + margin: 0; + border-spacing: 3px; +} + +viewswitcher.wide { + margin-top: 6px; + margin-bottom: 6px; +} + +viewswitcher.wide button.toggle { + margin: 0; +} + +viewswitcher.narrow button.toggle { + border-radius: 0; + margin: 0; +} + +viewswitcher.narrow button.toggle:focus-within, viewswitcher.narrow button.toggle:focus { + box-shadow: none; +} + +viewswitcher button.toggle { + font-weight: bold; + padding: 0; +} + +viewswitcher button.toggle > stack > box.narrow { + font-size: 0.75rem; + padding-top: 6px; + padding-bottom: 4px; + border-spacing: 4px; +} + +viewswitcher button.toggle > stack > box.narrow > stack > label { + padding-left: 6px; + padding-right: 6px; +} + +viewswitcher button.toggle > stack > box.wide { + padding: 2px 12px; + border-spacing: 6px; +} + +viewswitcherbar actionbar > revealer > box { + padding: 0; +} + +viewswitchertitle { + margin-top: 0; + margin-bottom: 0; +} + +viewswitchertitle viewswitcher { + margin-left: 12px; + margin-right: 12px; +} + +viewswitchertitle viewswitcher.narrow { + margin-top: 0; + margin-bottom: 0; +} + +viewswitchertitle viewswitcher.narrow button.toggle > stack > box.narrow { + padding-top: 0; + padding-bottom: 0; + border-spacing: 0; +} + +viewswitchertitle viewswitcher.wide { + margin-top: 6px; + margin-bottom: 6px; +} + +viewswitchertitle windowtitle { + margin-top: 0; + margin-bottom: 0; +} + +.top-bar headerbar viewswitchertitle viewswitcher.narrow button.toggle { + border-radius: 0 0 6px 6px; +} + +indicatorbin > indicator, indicatorbin > mask { + min-width: 6px; + min-height: 6px; + border-radius: 9999px; +} + +indicatorbin > indicator { + margin: 1px; + background-color: alpha(currentColor, 0.4); +} + +indicatorbin > indicator > label { + font-size: 0.6rem; + font-weight: bold; + padding: 1px 4px; + color: white; +} + +indicatorbin > mask { + padding: 1px; + background: black; +} + +indicatorbin.needs-attention > indicator { + background-color: #eebebe; +} + +indicatorbin.needs-attention > indicator > label { + color: rgba(0, 0, 0, 0.87); +} + +preferencespage > scrolledwindow > viewport > clamp > box { + margin: 24px 12px; + border-spacing: 24px; +} + +preferencesgroup > box, preferencesgroup > box .labels { + border-spacing: 6px; +} + +preferencesgroup > box > box.header:not(.single-line) { + margin-bottom: 6px; +} + +preferencesgroup > box > box.single-line { + min-height: 34px; +} + +preferencesgroup > box button.background-preview-button.toggle { + padding: 0; + background: none; + box-shadow: none; + outline-color: transparent; + outline-width: 3px; + outline-offset: 3px; + outline-style: solid; +} + +preferencesgroup > box button.background-preview-button.toggle, preferencesgroup > box button.background-preview-button.toggle > background-preview { + border-radius: 6px; +} + +preferencesgroup > box button.background-preview-button.toggle:hover { + outline-color: rgba(255, 255, 255, 0.04); +} + +preferencesgroup > box button.background-preview-button.toggle:active { + outline-color: rgba(255, 255, 255, 0.3); +} + +preferencesgroup > box button.background-preview-button.toggle:checked { + outline-color: #eebebe; +} + +preferencesgroup > box .cutout-button { + background-color: #232634; +} + +window.about .main-page > viewport > clamp > box { + margin: 12px; + border-spacing: 6px; +} + +window.about .main-page > viewport > clamp > box > box { + margin-top: 18px; + border-spacing: 18px; + margin-bottom: 6px; +} + +window.about .main-page .app-version { + padding: 3px 18px; + color: #eebebe; + border-radius: 6px; + margin-top: 3px; +} + +window.about .subpage > viewport > clamp > box { + margin: 18px 12px; + border-spacing: 18px; +} + +window.about .subpage > clamp > textview { + background: none; + color: inherit; +} + +statuspage > scrolledwindow > viewport > box { + margin: 36px 12px; + border-spacing: 36px; +} + +statuspage > scrolledwindow > viewport > box > clamp > box { + border-spacing: 12px; +} + +statuspage > scrolledwindow > viewport > box > clamp > box > .icon { + -gtk-icon-size: 128px; + color: alpha(currentColor, 0.55); +} + +statuspage > scrolledwindow > viewport > box > clamp > box > .icon:disabled { + opacity: 0.35; +} + +statuspage > scrolledwindow > viewport > box > clamp > box > .icon:not(:last-child) { + margin-bottom: 24px; +} + +statuspage.compact > scrolledwindow > viewport > box { + margin: 24px 12px; + border-spacing: 24px; +} + +statuspage.compact > scrolledwindow > viewport > box > clamp > box > .icon { + -gtk-icon-size: 96px; +} + +statuspage.compact > scrolledwindow > viewport > box > clamp > box > .icon:not(:last-child) { + margin-bottom: 12px; +} + +statuspage.compact > scrolledwindow > viewport > box > clamp > box > .title { + font-size: 18pt; +} + +flap > dimming, +leaflet > dimming, +navigation-view > dimming, +overlay-split-view > dimming { + background: none; +} + +flap > border, +leaflet > border, +navigation-view > border, +overlay-split-view > border { + background: none; +} + +flap > shadow, +leaflet > shadow, +navigation-view > shadow, +overlay-split-view > shadow { + min-width: 56px; + min-height: 56px; +} + +flap > shadow.left, +leaflet > shadow.left, +navigation-view > shadow.left, +overlay-split-view > shadow.left { + background-image: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +flap > shadow.right, +leaflet > shadow.right, +navigation-view > shadow.right, +overlay-split-view > shadow.right { + background-image: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +flap > shadow.up, +leaflet > shadow.up, +navigation-view > shadow.up, +overlay-split-view > shadow.up { + background-image: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +flap > shadow.down, +leaflet > shadow.down, +navigation-view > shadow.down, +overlay-split-view > shadow.down { + background-image: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.unfolded stacksidebar.sidebar { + border: none; +} + +.sidebar-pane { + background-color: #232634; + color: #FFFFFF; +} + +.sidebar-pane:backdrop { + background-color: #303446; + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.sidebar-pane .navigation-sidebar, +.sidebar-pane headerbar, +.sidebar-pane searchbar > revealer > box { + background-color: transparent; + box-shadow: none; + border: none; +} + +.sidebar-pane toolbarview.undershoot-top scrolledwindow > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane toolbarview.undershoot-bottom scrolledwindow > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-top > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-bottom > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-start:dir(ltr) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-start:dir(rtl) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-end:dir(ltr) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane scrolledwindow.undershoot-end:dir(rtl) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.sidebar-pane flap > dimming, +.sidebar-pane leaflet > dimming, +.sidebar-pane navigation-view > dimming, +.sidebar-pane overlay-split-view > dimming { + background: none; +} + +.sidebar-pane flap > border, +.sidebar-pane leaflet > border, +.sidebar-pane navigation-view > border, +.sidebar-pane overlay-split-view > border { + background: none; +} + +.sidebar-pane flap > shadow, +.sidebar-pane leaflet > shadow, +.sidebar-pane navigation-view > shadow, +.sidebar-pane overlay-split-view > shadow { + min-width: 56px; + min-height: 56px; +} + +.sidebar-pane flap > shadow.left, +.sidebar-pane leaflet > shadow.left, +.sidebar-pane navigation-view > shadow.left, +.sidebar-pane overlay-split-view > shadow.left { + background-image: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.sidebar-pane flap > shadow.right, +.sidebar-pane leaflet > shadow.right, +.sidebar-pane navigation-view > shadow.right, +.sidebar-pane overlay-split-view > shadow.right { + background-image: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.sidebar-pane flap > shadow.up, +.sidebar-pane leaflet > shadow.up, +.sidebar-pane navigation-view > shadow.up, +.sidebar-pane overlay-split-view > shadow.up { + background-image: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.sidebar-pane flap > shadow.down, +.sidebar-pane leaflet > shadow.down, +.sidebar-pane navigation-view > shadow.down, +.sidebar-pane overlay-split-view > shadow.down { + background-image: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.7), alpha(rgba(0, 0, 0, 0.2), 0.14) 40px, alpha(rgba(0, 0, 0, 0.2), 0) 56px), linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.4), alpha(rgba(0, 0, 0, 0.2), 0.14) 7px, alpha(rgba(0, 0, 0, 0.2), 0) 24px); +} + +.sidebar-pane banner > revealer > widget { + background-color: gtkmix(#eebebe, #232634, 30%); + color: #FFFFFF; +} + +.sidebar-pane banner > revealer > widget:backdrop { + background-color: gtkmix(#eebebe, #232634, 30%); +} + +.sidebar-pane:dir(ltr), .sidebar-pane.end:dir(rtl) { + border-top-left-radius: 12px; +} + +.sidebar-pane:dir(ltr), .sidebar-pane:dir(ltr) banner > revealer > widget, .sidebar-pane.end:dir(rtl), .sidebar-pane.end:dir(rtl) banner > revealer > widget { + box-shadow: none; + border-right: 1px solid rgba(255, 255, 255, 0.12); +} + +.sidebar-pane:dir(rtl), .sidebar-pane.end:dir(ltr) { + border-top-right-radius: 12px; +} + +.sidebar-pane:dir(rtl), .sidebar-pane:dir(rtl) banner > revealer > widget, .sidebar-pane.end:dir(ltr), .sidebar-pane.end:dir(ltr) banner > revealer > widget { + box-shadow: none; + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +window.maxmized .sidebar-pane:dir(ltr), window.maxmized .sidebar-pane.end:dir(rtl) { + border-top-left-radius: 0; +} + +window.maxmized .sidebar-pane:dir(rtl), window.maxmized .sidebar-pane.end:dir(rtl) { + border-top-right-radius: 0; +} + +/* Middle pane in three-pane setups */ +.content-pane .sidebar-pane, +.sidebar-pane .content-pane { + background-color: #303446; + color: #FFFFFF; +} + +.content-pane .sidebar-pane:backdrop, +.sidebar-pane .content-pane:backdrop { + background-color: #303446; + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.content-pane .sidebar-pane toolbarview.undershoot-top scrolledwindow > undershoot.top, +.sidebar-pane .content-pane toolbarview.undershoot-top scrolledwindow > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane toolbarview.undershoot-bottom scrolledwindow > undershoot.bottom, +.sidebar-pane .content-pane toolbarview.undershoot-bottom scrolledwindow > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-top > undershoot.top, +.sidebar-pane .content-pane scrolledwindow.undershoot-top > undershoot.top { + box-shadow: none; + background: linear-gradient(to bottom, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-bottom > undershoot.bottom, +.sidebar-pane .content-pane scrolledwindow.undershoot-bottom > undershoot.bottom { + box-shadow: none; + background: linear-gradient(to top, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-start:dir(ltr) > undershoot.left, +.sidebar-pane .content-pane scrolledwindow.undershoot-start:dir(ltr) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-start:dir(rtl) > undershoot.right, +.sidebar-pane .content-pane scrolledwindow.undershoot-start:dir(rtl) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-end:dir(ltr) > undershoot.right, +.sidebar-pane .content-pane scrolledwindow.undershoot-end:dir(ltr) > undershoot.right { + box-shadow: none; + background: linear-gradient(to left, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane scrolledwindow.undershoot-end:dir(rtl) > undershoot.left, +.sidebar-pane .content-pane scrolledwindow.undershoot-end:dir(rtl) > undershoot.left { + box-shadow: none; + background: linear-gradient(to right, alpha(rgba(0, 0, 0, 0.2), 0.75), transparent 4px); +} + +.content-pane .sidebar-pane flap > dimming, +.content-pane .sidebar-pane leaflet > dimming, +.content-pane .sidebar-pane navigation-view > dimming, +.content-pane .sidebar-pane overlay-split-view > dimming, +.sidebar-pane .content-pane flap > dimming, +.sidebar-pane .content-pane leaflet > dimming, +.sidebar-pane .content-pane navigation-view > dimming, +.sidebar-pane .content-pane overlay-split-view > dimming { + background: none; +} + +.content-pane .sidebar-pane flap > border, +.content-pane .sidebar-pane leaflet > border, +.content-pane .sidebar-pane navigation-view > border, +.content-pane .sidebar-pane overlay-split-view > border, +.sidebar-pane .content-pane flap > border, +.sidebar-pane .content-pane leaflet > border, +.sidebar-pane .content-pane navigation-view > border, +.sidebar-pane .content-pane overlay-split-view > border { + background: none; +} + +.content-pane .sidebar-pane flap > shadow, +.content-pane .sidebar-pane leaflet > shadow, +.content-pane .sidebar-pane navigation-view > shadow, +.content-pane .sidebar-pane overlay-split-view > shadow, +.sidebar-pane .content-pane flap > shadow, +.sidebar-pane .content-pane leaflet > shadow, +.sidebar-pane .content-pane navigation-view > shadow, +.sidebar-pane .content-pane overlay-split-view > shadow { + min-width: 56px; + min-height: 56px; +} + +.content-pane .sidebar-pane flap > shadow.left, +.content-pane .sidebar-pane leaflet > shadow.left, +.content-pane .sidebar-pane navigation-view > shadow.left, +.content-pane .sidebar-pane overlay-split-view > shadow.left, +.sidebar-pane .content-pane flap > shadow.left, +.sidebar-pane .content-pane leaflet > shadow.left, +.sidebar-pane .content-pane navigation-view > shadow.left, +.sidebar-pane .content-pane overlay-split-view > shadow.left { + background-image: linear-gradient(to right, alpha(rgba(255, 255, 255, 0.12), 0.7), alpha(rgba(255, 255, 255, 0.12), 0.14) 40px, alpha(rgba(255, 255, 255, 0.12), 0) 56px), linear-gradient(to right, alpha(rgba(255, 255, 255, 0.12), 0.4), alpha(rgba(255, 255, 255, 0.12), 0.14) 7px, alpha(rgba(255, 255, 255, 0.12), 0) 24px); +} + +.content-pane .sidebar-pane flap > shadow.right, +.content-pane .sidebar-pane leaflet > shadow.right, +.content-pane .sidebar-pane navigation-view > shadow.right, +.content-pane .sidebar-pane overlay-split-view > shadow.right, +.sidebar-pane .content-pane flap > shadow.right, +.sidebar-pane .content-pane leaflet > shadow.right, +.sidebar-pane .content-pane navigation-view > shadow.right, +.sidebar-pane .content-pane overlay-split-view > shadow.right { + background-image: linear-gradient(to left, alpha(rgba(255, 255, 255, 0.12), 0.7), alpha(rgba(255, 255, 255, 0.12), 0.14) 40px, alpha(rgba(255, 255, 255, 0.12), 0) 56px), linear-gradient(to left, alpha(rgba(255, 255, 255, 0.12), 0.4), alpha(rgba(255, 255, 255, 0.12), 0.14) 7px, alpha(rgba(255, 255, 255, 0.12), 0) 24px); +} + +.content-pane .sidebar-pane flap > shadow.up, +.content-pane .sidebar-pane leaflet > shadow.up, +.content-pane .sidebar-pane navigation-view > shadow.up, +.content-pane .sidebar-pane overlay-split-view > shadow.up, +.sidebar-pane .content-pane flap > shadow.up, +.sidebar-pane .content-pane leaflet > shadow.up, +.sidebar-pane .content-pane navigation-view > shadow.up, +.sidebar-pane .content-pane overlay-split-view > shadow.up { + background-image: linear-gradient(to bottom, alpha(rgba(255, 255, 255, 0.12), 0.7), alpha(rgba(255, 255, 255, 0.12), 0.14) 40px, alpha(rgba(255, 255, 255, 0.12), 0) 56px), linear-gradient(to bottom, alpha(rgba(255, 255, 255, 0.12), 0.4), alpha(rgba(255, 255, 255, 0.12), 0.14) 7px, alpha(rgba(255, 255, 255, 0.12), 0) 24px); +} + +.content-pane .sidebar-pane flap > shadow.down, +.content-pane .sidebar-pane leaflet > shadow.down, +.content-pane .sidebar-pane navigation-view > shadow.down, +.content-pane .sidebar-pane overlay-split-view > shadow.down, +.sidebar-pane .content-pane flap > shadow.down, +.sidebar-pane .content-pane leaflet > shadow.down, +.sidebar-pane .content-pane navigation-view > shadow.down, +.sidebar-pane .content-pane overlay-split-view > shadow.down { + background-image: linear-gradient(to top, alpha(rgba(255, 255, 255, 0.12), 0.7), alpha(rgba(255, 255, 255, 0.12), 0.14) 40px, alpha(rgba(255, 255, 255, 0.12), 0) 56px), linear-gradient(to top, alpha(rgba(255, 255, 255, 0.12), 0.4), alpha(rgba(255, 255, 255, 0.12), 0.14) 7px, alpha(rgba(255, 255, 255, 0.12), 0) 24px); +} + +.content-pane .sidebar-pane banner > revealer > widget, +.sidebar-pane .content-pane banner > revealer > widget { + background-color: gtkmix(#eebebe, #303446, 30%); + color: #FFFFFF; +} + +.content-pane .sidebar-pane banner > revealer > widget:backdrop, +.sidebar-pane .content-pane banner > revealer > widget:backdrop { + background-color: gtkmix(#eebebe, #303446, 30%); +} + +.content-pane .sidebar-pane:dir(ltr), .content-pane .sidebar-pane.end:dir(rtl), +.sidebar-pane .content-pane:dir(ltr), +.sidebar-pane .content-pane.end:dir(rtl) { + border-top-left-radius: 12px; +} + +.content-pane .sidebar-pane:dir(ltr), .content-pane .sidebar-pane:dir(ltr) banner > revealer > widget, .content-pane .sidebar-pane.end:dir(rtl), .content-pane .sidebar-pane.end:dir(rtl) banner > revealer > widget, +.sidebar-pane .content-pane:dir(ltr), +.sidebar-pane .content-pane:dir(ltr) banner > revealer > widget, +.sidebar-pane .content-pane.end:dir(rtl), +.sidebar-pane .content-pane.end:dir(rtl) banner > revealer > widget { + box-shadow: none; + border-right: 1px solid rgba(255, 255, 255, 0.12); +} + +.content-pane .sidebar-pane:dir(rtl), .content-pane .sidebar-pane.end:dir(ltr), +.sidebar-pane .content-pane:dir(rtl), +.sidebar-pane .content-pane.end:dir(ltr) { + border-top-right-radius: 12px; +} + +.content-pane .sidebar-pane:dir(rtl), .content-pane .sidebar-pane:dir(rtl) banner > revealer > widget, .content-pane .sidebar-pane.end:dir(ltr), .content-pane .sidebar-pane.end:dir(ltr) banner > revealer > widget, +.sidebar-pane .content-pane:dir(rtl), +.sidebar-pane .content-pane:dir(rtl) banner > revealer > widget, +.sidebar-pane .content-pane.end:dir(ltr), +.sidebar-pane .content-pane.end:dir(ltr) banner > revealer > widget { + box-shadow: none; + border-left: 1px solid rgba(255, 255, 255, 0.12); +} + +window.maxmized .content-pane .sidebar-pane:dir(ltr), window.maxmized .content-pane .sidebar-pane.end:dir(rtl), window.maxmized .sidebar-pane .content-pane:dir(ltr), window.maxmized .sidebar-pane .content-pane.end:dir(rtl) { + border-top-left-radius: 0; +} + +window.maxmized .content-pane .sidebar-pane:dir(rtl), window.maxmized .content-pane .sidebar-pane.end:dir(rtl), window.maxmized .sidebar-pane .content-pane:dir(rtl), window.maxmized .sidebar-pane .content-pane.end:dir(rtl) { + border-top-right-radius: 0; +} + +.sidebar-pane .sidebar-pane { + background-color: transparent; + color: inherit; +} + +.top-bar headerbar, .top-bar headerbar:backdrop { + background-color: transparent; + box-shadow: none; +} + +.top-bar .collapse-spacing { + padding: 0; +} + +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +/* +widget text/foreground color */ +@define-color theme_fg_color #FFFFFF; +/* +text color for entries, views and content in general */ +@define-color theme_text_color #FFFFFF; +/* +widget base background color */ +@define-color theme_bg_color #303446; +/* +text widgets and the like base background color */ +@define-color theme_base_color #303446; +/* +base background color of selections */ +@define-color theme_selected_bg_color #eebebe; +/* +text/foreground color of selections */ +@define-color theme_selected_fg_color rgba(0, 0, 0, 0.87); +/* +base background color of insensitive widgets */ +@define-color insensitive_bg_color #303446; +/* +text foreground color of insensitive widgets */ +@define-color insensitive_fg_color rgba(255, 255, 255, 0.5); +/* +insensitive text widgets and the like base background color */ +@define-color insensitive_base_color #232634; +/* +widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color #FFFFFF; +/* +text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color #FFFFFF; +/* +widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color #303446; +/* +text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #303446; +/* +base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color #eebebe; +/* +text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color rgba(0, 0, 0, 0.87); +/* +insensitive color on backdrop windows */ +@define-color unfocused_insensitive_color rgba(255, 255, 255, 0.5); +/* +widgets main borders color */ +@define-color borders rgba(255, 255, 255, 0.12); +/* +widgets main borders color on backdrop windows */ +@define-color unfocused_borders rgba(255, 255, 255, 0.12); +/* +these are pretty self explicative */ +@define-color warning_color #FBC02D; +@define-color error_color #F44336; +@define-color success_color #66BB6A; +/* +these colors are exported for the window manager and shouldn't be used in applications, +read if you used those and something break with a version upgrade you're on your own... */ +@define-color wm_title #FFFFFF; +@define-color wm_unfocused_title rgba(255, 255, 255, 0.7); +@define-color wm_highlight rgba(255, 255, 255, 0.1); +@define-color wm_border #0a0a0e; +@define-color wm_bg #232634; +@define-color wm_unfocused_bg #303446; +@define-color wm_button_icon white; +@define-color wm_button_close_hover_bg #e78284; +@define-color wm_button_close_active_bg #dd4f51; +@define-color wm_button_max_hover_bg #a6d189; +@define-color wm_button_max_active_bg #85c05d; +@define-color wm_button_min_hover_bg #e5c890; +@define-color wm_button_min_active_bg #d9af5e; +/* +FIXME this is really an API */ +@define-color content_view_bg #303446; +@define-color placeholder_text_color #c1c2c8; +/* Very contrasty background for text views (@theme_text_color foreground) */ +@define-color text_view_bg #303446; +@define-color budgie_tasklist_indicator_color rgba(255, 255, 255, 0.3); +@define-color budgie_tasklist_indicator_color_active #eebebe; +@define-color budgie_tasklist_indicator_color_active_window #91787f; +@define-color budgie_tasklist_indicator_color_attention #FBC02D; +@define-color STRAWBERRY_100 #FF9262; +@define-color STRAWBERRY_300 #FF793E; +@define-color STRAWBERRY_500 #F15D22; +@define-color STRAWBERRY_700 #CF3B00; +@define-color STRAWBERRY_900 #AC1800; +@define-color ORANGE_100 #FFDB91; +@define-color ORANGE_300 #FFCA40; +@define-color ORANGE_500 #FAA41A; +@define-color ORANGE_700 #DE8800; +@define-color ORANGE_900 #C26C00; +@define-color BANANA_100 #FFFFA8; +@define-color BANANA_300 #FFFA7D; +@define-color BANANA_500 #FFCE51; +@define-color BANANA_700 #D1A023; +@define-color BANANA_900 #A27100; +@define-color LIME_100 #A2F3BE; +@define-color LIME_300 #8ADBA6; +@define-color LIME_500 #73C48F; +@define-color LIME_700 #479863; +@define-color LIME_900 #1C6D38; +@define-color BLUEBERRY_100 #94A6FF; +@define-color BLUEBERRY_300 #6A7CE0; +@define-color BLUEBERRY_500 #3F51B5; +@define-color BLUEBERRY_700 #213397; +@define-color BLUEBERRY_900 #031579; +@define-color GRAPE_100 #D25DE6; +@define-color GRAPE_300 #B84ACB; +@define-color GRAPE_500 #9C27B0; +@define-color GRAPE_700 #830E97; +@define-color GRAPE_900 #6A007E; +@define-color COCOA_100 #9F9792; +@define-color COCOA_300 #7B736E; +@define-color COCOA_500 #574F4A; +@define-color COCOA_700 #463E39; +@define-color COCOA_900 #342C27; +@define-color SILVER_100 #EEE; +@define-color SILVER_300 #CCC; +@define-color SILVER_500 #AAA; +@define-color SILVER_700 #888; +@define-color SILVER_900 #666; +@define-color SLATE_100 #888; +@define-color SLATE_300 #666; +@define-color SLATE_500 #444; +@define-color SLATE_700 #222; +@define-color SLATE_900 #111; +@define-color BLACK_100 #474341; +@define-color BLACK_300 #403C3A; +@define-color BLACK_500 #393634; +@define-color BLACK_700 #33302F; +@define-color BLACK_900 #2B2928; +@define-color blue_1 #99c1f1; +@define-color blue_2 #62a0ea; +@define-color blue_3 #3584e4; +@define-color blue_4 #1c71d8; +@define-color blue_5 #1a5fb4; +@define-color green_1 #8ff0a4; +@define-color green_2 #57e389; +@define-color green_3 #33d17a; +@define-color green_4 #2ec27e; +@define-color green_5 #26a269; +@define-color yellow_1 #f9f06b; +@define-color yellow_2 #f8e45c; +@define-color yellow_3 #f6d32d; +@define-color yellow_4 #f5c211; +@define-color yellow_5 #e5a50a; +@define-color orange_1 #ffbe6f; +@define-color orange_2 #ffa348; +@define-color orange_3 #ff7800; +@define-color orange_4 #e66100; +@define-color orange_5 #c64600; +@define-color red_1 #f66151; +@define-color red_2 #ed333b; +@define-color red_3 #e01b24; +@define-color red_4 #c01c28; +@define-color red_5 #a51d2d; +@define-color purple_1 #dc8add; +@define-color purple_2 #c061cb; +@define-color purple_3 #9141ac; +@define-color purple_4 #813d9c; +@define-color purple_5 #613583; +@define-color brown_1 #cdab8f; +@define-color brown_2 #b5835a; +@define-color brown_3 #986a44; +@define-color brown_4 #865e3c; +@define-color brown_5 #63452c; +@define-color light_1 #ffffff; +@define-color light_2 #f6f5f4; +@define-color light_3 #deddda; +@define-color light_4 #c0bfbc; +@define-color light_5 #9a9996; +@define-color dark_1 #77767b; +@define-color dark_2 #5e5c64; +@define-color dark_3 #3d3846; +@define-color dark_4 #241f31; +@define-color dark_5 #000000; +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +@define-color accent_bg_color #eebebe; +@define-color accent_fg_color rgba(0, 0, 0, 0.87); +@define-color accent_color #eebebe; +@define-color destructive_bg_color #F44336; +@define-color destructive_fg_color #FFFFFF; +@define-color destructive_color #F44336; +@define-color success_bg_color #66BB6A; +@define-color success_fg_color #FFFFFF; +@define-color success_color #66BB6A; +@define-color warning_bg_color #FBC02D; +@define-color warning_fg_color rgba(0, 0, 0, 0.87); +@define-color warning_color #FBC02D; +@define-color error_bg_color #F44336; +@define-color error_fg_color #FFFFFF; +@define-color error_color #F44336; +@define-color window_bg_color #303446; +@define-color window_fg_color #FFFFFF; +@define-color view_bg_color #303446; +@define-color view_fg_color #FFFFFF; +@define-color headerbar_bg_color #232634; +@define-color headerbar_fg_color #FFFFFF; +@define-color headerbar_border_color rgba(255, 255, 255, 0.12); +@define-color headerbar_backdrop_color #303446; +@define-color headerbar_shade_color rgba(255, 255, 255, 0.12); +@define-color card_bg_color #303446; +@define-color card_fg_color #FFFFFF; +@define-color card_shade_color rgba(255, 255, 255, 0.12); +@define-color dialog_bg_color #232634; +@define-color dialog_fg_color #FFFFFF; +@define-color popover_bg_color #303446; +@define-color popover_fg_color #FFFFFF; +@define-color shade_color rgba(255, 255, 255, 0.12); +@define-color scrollbar_outline_color rgba(255, 255, 255, 0.12); diff --git a/home-manager/general/themes/default.nix b/home-manager/general/themes/default.nix new file mode 100644 index 0000000..5a1b7f4 --- /dev/null +++ b/home-manager/general/themes/default.nix @@ -0,0 +1,42 @@ +{ pkgs, ... }: + +let + themePackage = pkgs.catppuccin-gtk.override { + accents = [ "flamingo" ]; + size = "compact"; + tweaks = [ "rimless" ]; + variant = "macchiato"; + }; +in +{ + gtk = { + enable = true; + theme = { + package = themePackage; + name = "Catppuccin-Macchiato-Compact-Flamingo-Dark"; + }; + cursorTheme = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Ice"; + }; + iconTheme = { + package = pkgs.rose-pine-icon-theme; + name = "oomox-rose-pine-moon"; + }; + gtk4.extraCss = builtins.readFile ./Catppuccin/gtk.css; + }; + xdg.configFile = { + "gtk-4.0/assets" = { + source = ./Catppuccin/assets; + target = "gtk-4.0/assets"; + }; + "gtk-4.0/gtk-dark" = { + source = ./Catppuccin/gtk-dark.css; + target = "gtk-4.0/gtk-dark.css"; + }; + }; + qt = { + enable = true; + platformTheme = "gtk"; + }; +} |
